Introduction
Homelessness remains a pressing and multifaceted issue in Washington,
DC, affecting thousands of individuals and families daily. On any given
night, over 5,000 people experience homelessness in the city, a
reflection of deeper systemic challenges such as economic inequality,
housing shortages, and barriers to healthcare. That’s about 75 out of
10,000 residents (Coalition for the Homeless, 2023). Addressing this issue
is not only a moral imperative but also a matter of social equity,
public health, and economic sustainability for the city (Smith, 2019).
This analysis will explore the key factors contributing to homelessness
in Washington, DC, examine available datasets, and propose policy
recommendations that address both the root causes and immediate needs of
the homeless population.
Datasets Relevant to the Problem
To develop effective and data-driven solutions, it is essential to
first understand the extent of homelessness in Washington, DC. This
requires a detailed examination of multiple datasets, including but not
limited to:
Homeless Population Data: This data can be pulled from DC’s
Point-in-Time Count which includes demographic information such
as age, gender, and race, as well as geographic distribution, helping to
identify which areas are most affected and which groups are most
vulnerable.
Housing Data: According to the National Low Income Housing
Coalition (NLIHC, 2023), the affordable housing shortage in
Washington, DC has reached a critical level. Analysis of housing prices,
rental rates, and the availability of affordable housing units is
crucial in understanding the relationship between housing costs and
homelessness. Dataset: DC Open Data Portal: Affordable Housing
Demographic Data: Information on the age, gender, race, and
ethnicity of homeless individuals can help identify specific populations
that are most vulnerable to homelessness. Dataset: DC Open Data Portal:
Census Tracts in 2020, ACS 5-Year Social Characteristics DC Census
Tract
Geographic Distribution: Analyzing the geographic distribution of
homelessness can help identify areas with high concentrations of
homeless individuals and inform targeted interventions. Dataset: DC Open
Data Portal: Homeless Shelter Locations
Economic Data: Unemployment rates, poverty rates, and income
distribution data provide insight into the economic conditions that can
lead to homelessness. Dataset: DC Open Data Portal: ACS 5-Year Economic
Characteristics DC Census Tract
Social Services Data: Information about the availability and
utilization of shelters, food banks, and healthcare services helps to
identify gaps in the support network for homeless individuals. Dataset:
DC Open Data Portal: Social Services Directory, Homeless Service
Facilities
Public Safety Data: Crime rates, arrests, and interactions
between law enforcement and homeless individuals can offer important
context for how public safety policies impact homelessness. Dataset: DC
Open Data Portal: Crime Incidents in 2024
Health Data: Data on the health outcomes of homeless individuals
can inform interventions for chronic diseases, mental health, and
substance abuse. Dataset: DC Open Data Portal: DC Health Planning
Neighborhoods to Census Tracts
Each of these datasets can be accessed through Washington, DC’s open
data portal and other governmental and nonprofit sources, providing a
comprehensive foundation for understanding the scope and nature of
homelessness in the city.
Problematic Conditions
Several key factors contribute to homelessness in Washington, DC,
each interacting to exacerbate the crisis. First and foremost is the
issue of rising housing costs. The increasing cost of both renting and
owning a home has outpaced wage growth, making it difficult for many to
afford stable housing (Smith, 2019). This is compounded by the city’s shortage
of affordable housing units, particularly for low-income residents
(Wilson & Cong, 2021). The demand for housing far exceeds the
supply, leaving thousands without adequate options.
In addition to economic factors, mental health and substance abuse
issues play a significant role in homelessness. Many individuals
experiencing homelessness struggle with these challenges, which make it
difficult to secure and maintain stable housing (Thorsby et al., 2017). Despite
these needs, access to appropriate mental health care and substance
abuse treatment remains limited in many parts of the city.
Systemic barriers further compound these challenges. Limited access
to healthcare, education, and employment opportunities can trap
individuals in cycles of poverty and homelessness, making it difficult
for them to break free and rebuild their lives (Brown, Ezike, &
Stern, 2020). As these conditions persist, the risk of
homelessness increases, especially for those already on the economic
margins.
The
Politics of Homelessness in DC and Interested Organizations
Addressing homelessness in DC requires navigating a complex political
landscape and engaging with various stakeholders. While there is broad
agreement on the need to reduce homelessness, disagreements often arise
regarding specific policy approaches and resource allocation.
One key point of contention is the role of government versus the
private sector in providing housing and services. Different perspectives
exist on the appropriate balance between government intervention and
reliance on private sector or non-profit organizations to address the
needs of the homeless population. Another area of debate centers on
Housing First versus treatment-first approaches. Housing First
prioritizes providing housing without preconditions, while
treatment-first approaches require individuals to address issues like
substance abuse or mental health before accessing housing. There are
also ongoing discussions about how to allocate resources between
preventative measures, such as rental assistance and eviction
prevention, and emergency services, such as shelters and soup
kitchens.
Numerous organizations in DC are actively involved in advocating for
and supporting individuals experiencing homelessness. These
organizations play a crucial role in shaping the policy discourse on
homelessness and advocating for the needs of this vulnerable population.
Some prominent examples include: The Community Partnership for the
Prevention of Homelessness (TCP), the lead agency for coordinating
homeless services in DC; Miriam’s Kitchen, a non-profit providing meals,
case management, and advocacy; Pathways to Housing DC, a non-profit
providing permanent supportive housing and wraparound services;
Friendship Place, offering a range of services from street outreach to
permanent housing; and The Washington Legal Clinic for the Homeless,
which provides legal services and advocacy.
Addressing the Root Causes
Given the complexity of homelessness, any effective solution must be
multifaceted, addressing both the immediate needs of homeless
individuals and the underlying systemic issues. The following policy
solutions are recommended:
Increasing the Supply of Affordable Housing: The city should
prioritize increasing the supply of affordable housing units through a
combination of public-private partnerships, inclusionary zoning
policies, and rental assistance programs (Smith, 2019). These
initiatives can help bridge the gap between supply and demand, ensuring
that more low-income individuals and families have access to safe and
affordable housing.
Supportive Housing Programs: Affordable housing alone is not enough.
Many individuals experiencing homelessness require supportive services,
such as mental health counseling and substance abuse treatment, to
maintain stable housing (Vodak et al., 2021). The city should
expand its supportive housing programs to provide a more holistic
approach that combines housing with essential services.
Homelessness Prevention Programs: The best way to combat homelessness
is to prevent it from happening in the first place. The city should
invest in rental assistance, financial counseling, and eviction
prevention services to help individuals and families stay in their homes
(Thorsby et al., 2017). Such programs have been shown to be
cost-effective and highly impactful in reducing the number of people who
fall into homelessness.
Rapid Rehousing Initiatives: For those who do experience
homelessness, the city should focus on rapid rehousing efforts that help
individuals and families quickly transition from homelessness to stable
housing. These programs should be coupled with job training and
placement services to help individuals become economically
self-sufficient.
Community-Based Support Programs: Food banks, shelters, and
healthcare services play a vital role in supporting homeless
individuals. The city should ensure that these community-based programs
are well-funded and accessible, particularly in areas with high
concentrations of homelessness (Thorsby et al., 2017).
Financial Literacy and Housing Program Proposal
As part of the comprehensive strategy to combat homelessness, a
financial literacy and housing program could be introduced. This program
would partner with local organizations to offer financial education, job
training, and temporary housing, helping individuals gain the skills and
stability needed to transition out of homelessness. Key components would
include:
Financial Literacy Education: Teaching individuals how to budget,
manage debt, and save for future goals.
Job Training and Placement: Providing skills development and job
placement services to help participants secure stable
employment.
Temporary Housing: Offering a stable environment where
individuals can focus on program goals.
Case Management: Providing personalized support and guidance to
help individuals navigate challenges and achieve their goals.
Mental Health and Substance Abuse Treatment: Ensuring access to
necessary treatment services.
By addressing both the immediate and long-term needs of homeless
individuals, this program would offer a pathway out of homelessness
while also addressing the systemic issues that contribute to it.
Conclusion
Homelessness in Washington, DC, is a complex issue that requires a
comprehensive, data-driven approach. By increasing affordable housing,
expanding supportive services, and addressing the root causes of
homelessness, the city can make meaningful progress in reducing
homelessness and improving the quality of life for its most vulnerable
residents.
Assessing the Civic Tech Initiative for Homelessness in Washington, DC
Alignment with Civic Technology Attributes
The proposed homelessness resource application aligns with several
key attributes of civic technology, as outlined in the readings. By
empowering homeless individuals to directly request services and provide
feedback, the app involves citizens in both the policy process and
service delivery (Mačiulienė & Skaržauskienė, 2020). This fosters a more
participatory and democratic approach to addressing homelessness.
Moreover, the app leverages technology to collect and analyze data on
the needs of homeless individuals and the availability of resources.
This data-driven approach ensures that decisions are informed by
evidence and can lead to more effective and targeted interventions.
The app also promotes transparency and accountability by making
information about resources and service delivery more accessible to the
public. This empowers homeless individuals to hold service providers
accountable and advocate for improvements.
In addition, the app democratizes previously elite processes by
providing a convenient and user-friendly platform for homeless
individuals to access resources and services. This helps to break down
barriers and ensure that everyone has equal opportunities to receive
assistance.
Civic Tech Initiative: Open Referral
Open Referral, an open-source data standard and platform designed to
improve the findability and accessibility of community resources. Open
Referral provides a standardized way to describe and share information
about health, human, and social services, making it easier for people in
need to find the help they require.
The original purpose of Open Referral was to address the problem of
fragmented and inaccessible information about community resources. Many
individuals, particularly those experiencing homelessness or facing
other challenges, struggle to find the services they need due to a lack
of centralized and easily accessible information. Open Referral aims to
solve this problem by providing a standardized data format and platform
for sharing information about services, making it easier for people to
search, filter, and connect with relevant resources.
Open Referral utilizes structured data to describe community
services, including information such as:
- Name and description of the service
- Location (address, latitude, longitude)
- Contact information (phone, email, website)
- Eligibility criteria
- Service hours
- Languages spoken
- Accessibility features
This structured data allows for efficient searching and filtering of
services based on individual needs and preferences. This standardized
data ensures consistency across systems and facilitates resource
mapping. Addtionally, Open Referral is built on open-source technologies
and standards, including:
- Human Services Data Specification (HSDS): A standardized data format
for describing human services.
- Open Referral Database (ORD): A database schema for storing and
managing human services data.
- Various APIs and tools: Open Referral employs tools like JSON,
Python, and RESTful APIs to enable interoperability across
platforms.
The platform’s open-source nature promotes transparency,
collaboration, and community-driven development.
Adaptation
To adapt Open Referral for addressing homelessness in Washington, DC,
data will need to be gathered on all homeless services in DC, ensuring
it adheres to the Open Referral standards. This may involve
collaborating with various service providers and government agencies to
collect and standardize their data.
Additionally, customizing the Open Referral platform to meet the
specific needs of the DC homeless population would prove beneficial.
This could include developing a user-friendly interface tailored to
individuals experiencing homelessness, incorporating features like
mobile accessibility and multilingual support. However, Open Referral
platform would need to integrate with existing data systems in DC, such
as the Homeless Management Information System (HMIS) and the 311 service
request system. This would enable seamless data sharing and coordination
of services.
By adapting Open Referral, Washington, DC can leverage a proven civic
tech tool to conduct outreach to homeless individuals and service
providers to promote the use of the platform and ensure its
effectiveness in connecting people with the resources they need. This
would enhance the effectiveness of homelessness prevention and
intervention efforts. The proposed changes align with the key attributes
of civic technology and can address the specific needs of the homeless
population.
Changes to Open Referral Design
In addition to the adaptations mentioned above, adapt Open Referreal
for the Homelessness Resource Application, the following design changes
could enhance Open Referral for use in Washington, DC.
- Real-time availability: Integrate with shelter management systems to
provide real-time information on bed availability.
- Personalized recommendations: Use AI to provide personalized
recommendations for services based on individual needs and
preferences.
- AI-Powered Chatbot Support: Implement an AI chatbot to assist users
in real-time, answer questions, and guide them through service
requests.
- Offline access: Enable offline access to essential information for
users who may not have consistent internet connectivity.
- Mobile-First Design: Redesign the user interface to be
mobile-friendly and responsive, ensuring seamless navigation and
functionality on smaller screens.
- Integration with Existing Social Service Networks: Create APIs or
connectors to allow seamless data sharing and referrals between the app
and existing social service organizations.
- IoT Integration for Smart Shelters: Incorporate IoT sensors in
shelters to track occupancy and availability of beds, providing
real-time information to users.
- Predictive Analytics for At-Risk Individuals: Use predictive
analytics to identify individuals at risk of homelessness and trigger
early interventions.
By implementing these changes, the Homelessness Resource Application
can become a powerful tool for addressing the needs of homeless
individuals in Washington, DC.
Policy Literature Review
Introduction
Homelessness poses a pressing societal concern necessitating
deliberate, methodical solutions. This essay delves into four academic
articles examining strategies to tackle homelessness, drawing on
research principles from Political Science Research Methods by Janet
Buttolph Johnson and H.T. Reynolds. Specifically, it utilizes Chapters 4
and 6 on concepts, variables, hypotheses, and research design, alongside
insights from the Civic Technologist’s Practice Guide (CTPG) Chapters 5
and 9, focusing on innovation in public policy.
Each article under review will be scrutinized through the lens of
social science research, with emphasis on concepts like proactive
strategies, service integration, prevention, and efficient targeting.
The essay will dissect how these concepts are defined, operationalized,
and employed to establish causality within the framework of the research
designs presented.
Article 1: Making the Case for Proactive Strategies to Alleviate
Homelessness: A Systems Approach
Nourazari, Lovato, and Weng champion proactive, systems-based
strategies to tackle homelessness. They define a “proactive strategy” as
any intervention targeting root causes of homelessness like poverty or
lack of affordable housing, before individuals become homeless. The
systems approach emphasizes the interconnected nature of homelessness,
requiring coordinated efforts across multiple agencies and service
providers.
To measure these concepts, the authors employ variables such as the
number of early intervention programs, budget allocated to prevention,
and the level of interagency collaboration. The dependent variable, or
the outcome they aim to influence, is the homelessness rate in a given
region. Their central hypothesis posits that regions implementing
proactive, systems-based approaches will experience a more significant
decrease in homelessness compared to those relying on reactive
measures.
The study focuses on regions or cities as its units of analysis,
collecting homelessness data across different geographic areas.
Homelessness rates are measured on an interval scale, enabling
meaningful comparisons across regions and time, which is vital for
establishing causality as per Chapter 6 of Political Science Research
Methods. Additionally, control variables such as economic conditions and
population density are included to isolate the specific impact of
proactive strategies.
The study’s findings underscore the effectiveness of proactive
strategies, especially when combined with interagency coordination, in
reducing homelessness. This aligns with the Civic Technologist’s
Practice Guide’s emphasis on cross-sector collaboration for tackling
complex societal problems. The systems approach provides a holistic,
innovative solution by dismantling the traditional silos that often
hinder homelessness interventions.
Article 2: Service Integration to Reduce Homelessness in Los Angeles
County: Multiple Stakeholder Perspectives
Guerrero, Henwood, and Wenzel delve into the concept of “service
integration” as a means to alleviate homelessness. They define it as the
coordinated provision of services across different agencies to improve
outcomes for those experiencing homelessness. This concept is
measured through variables like the number of integrated service
programs, stakeholder engagement, and inter-agency funding.
The study’s dependent variable is the perceived effectiveness of
integrated services as rated by various stakeholders such as
policymakers, service providers, and nonprofits. The hypothesis under
examination is that increased service integration will enhance
homelessness outcomes, primarily by boosting the efficiency and
responsiveness of service delivery.
The unit of analysis is stakeholders, with data collected through
surveys and interviews. Stakeholder perceptions are measured on an
ordinal scale, enabling researchers to rank responses into meaningful
categories, suitable for assessing subjective views as per Johnson and
Reynolds (2020).
The research design employs a mixed-methods approach, combining
quantitative and qualitative data to explore the connection between
service integration and outcomes. This triangulation strengthens causal
claims by drawing on multiple data sources, as highlighted in Chapter 6
of Johnson and Reynolds.
The findings suggest that service integration indeed improves service
delivery, but challenges such as funding limitations and bureaucratic
hurdles persist. This echoes the Civic Technologist’s Practice Guide’s
observation in Chapter 9: although innovative solutions like service
integration show promise, policy systems often resist change due to
ingrained institutional barriers. Overcoming these obstacles
necessitates sustained commitment and resources.
Article 3: A Prevention-Centered Approach to Homelessness Assistance: A
Paradigm Shift?
Culhane, Metraux, and Byrne propose a “prevention-centered approach”
to address homelessness, marking a significant departure from
conventional, reactive models. Here, prevention encompasses strategies
designed to stop people from becoming homeless in the first place. This
concept is operationalized through variables like access to eviction
prevention programs, housing assistance, and legal aid for tenants.
The study’s dependent variable is the homelessness entry rate,
measured at the individual or family level. The authors hypothesize that
prevention-centered programs will lead to a lower incidence of
homelessness when compared to reactive approaches such as emergency
shelters. Individuals and families serve as the units of analysis, with
homelessness entry rates measured on an interval scale, enabling precise
comparisons across groups and time.
To establish causality, the authors adopt a longitudinal research
design, tracking families over time to observe how preventive
interventions influence their housing stability. As Chapter 6 of
Political Science Research Methods emphasizes, longitudinal designs are
crucial for establishing temporal order, a key element of causality. By
observing outcomes over a longer duration, the study can better gauge
the effectiveness of preventive strategies.
The findings support the hypothesis, demonstrating that prevention
programs significantly reduce the risk of homelessness. This resonates
with the insights from Chapter 5 of the Civic Technologist’s Practice
Guide, which discusses how innovative approaches like prevention can
steer public policy toward more sustainable, long-term solutions.
Article 4: Efficient Targeting of Homelessness Prevention Services for
Families
Shinn et al. highlight “efficient targeting” as a crucial strategy
for allocating homelessness prevention resources effectively. This
involves directing resources toward families most likely to experience
homelessness based on predictive factors such as past housing
instability, low income, and limited access to social services. This
concept is operationalized through the use of predictive models and data
analytics to assess risk.
The study’s dependent variable is the likelihood of a family becoming
homeless, measured at the family level. The authors hypothesize that
predictive models will lead to more efficient resource utilization,
thereby reducing homelessness rates among high-risk families. The unit
of analysis is families, and the dependent variable is measured on an
interval scale, allowing researchers to quantify the probability of
homelessness.
The authors utilize logistic regression, a statistical method
commonly used to model relationships between variables. As explained in
Chapter 6 of Political Science Research Methods, statistical modeling is
a vital tool for establishing causality, enabling researchers to control
for various factors and test the strength of relationships between
variables.
The findings reveal that predictive models are highly effective in
identifying families at risk of homelessness, enabling targeted
intervention and more efficient resource allocation. This data-driven
approach aligns with the concepts discussed in Chapter 9 of the Civic
Technologist’s Practice Guide, which advocates for leveraging technology
and data to improve policy outcomes.
Conclusion
The four articles examined in this essay illustrate how pivotal
concepts such as proactive strategies, service integration, prevention,
and efficient targeting can be put into practice and evaluated through
meticulous research designs. Drawing upon insights from “Political
Science Research Methods” and the “Civic Technologist’s Practice Guide,”
this analysis emphasizes the significance of well-defined hypotheses,
accurate measurement, and thoughtful consideration of causality in
public policy research. The collective findings from these studies
underscore the potential of innovative, data-driven, and collaborative
approaches in effectively addressing the persistent issue of
homelessness.
Proposed Initiative
This initiative proposes the development and implementation of a
predictive modeling system to identify individuals at high risk of
chronic homelessness in [your city/county/state]. This system will
leverage existing data sources across multiple agencies to identify
individuals facing imminent risk of housing instability and proactively
connect them with targeted prevention resources. This initiative falls
within the policy formulation and adoption stage of the policy process,
as it involves designing a new policy approach and advocating for its
adoption by relevant stakeholders (The Civic Technologist’s Practice
Guide, 2023).
The proposed method involves several key steps. First, data will be
gathered from various sources, including Homeless Management Information
Systems (HMIS), public welfare agencies, the criminal justice system,
public schools, and eviction court records. This data will provide a
comprehensive understanding of the risk factors associated with chronic
homelessness. Next, a predictive model will be developed using machine
learning algorithms to analyze the integrated data and identify
individuals with a high probability of experiencing chronic
homelessness. Key risk factors may include history of evictions,
involvement with the criminal justice system, frequent use of emergency
shelters, mental health and substance abuse issues, and limited
income.
Based on the predicted risk levels, a tiered intervention system will
be developed. High-risk individuals will receive intensive case
management, housing navigation assistance, rental subsidies, and
connections to mental health and substance abuse treatment.
Moderate-risk individuals will be referred to eviction prevention
programs, financial literacy counseling, and job training. Low-risk
individuals will receive preventive education and information on
available resources. Finally, the program’s effectiveness will be
continuously monitored and evaluated using a robust evaluation
framework, tracking key metrics such as the number of individuals
identified, interventions provided, reductions in homelessness entry
rates, and cost-effectiveness.
Successful implementation of this initiative will lead to several
positive outcomes. By proactively identifying and assisting individuals
at high risk, the initiative aims to prevent chronic homelessness and
its associated social and economic costs. Efficient targeting ensures
that limited resources are directed towards those most in need,
maximizing impact. The initiative also encourages collaboration between
agencies, fostering a more integrated and effective service delivery
system (Guerrero, Henwood, and Wenzel). Furthermore, the use of
predictive modeling and data analytics promotes a more objective and
evidence-based approach to homelessness prevention.
The data collected will contribute to the assessment of conditions by
providing a comprehensive understanding of the scope and characteristics
of the homeless population, including prevalent risk factors and service
needs. This will inform the development of targeted interventions. Data
will also guide the identification of high-risk individuals, enabling
proactive and efficient allocation of resources. Ongoing data analysis
will monitor program effectiveness and identify areas for
improvement.
This initiative aligns with several key concepts from the policy
literature. It reflects Nourazari, Lovato, and Weng’s advocacy for
proactive, systems-based approaches to homelessness prevention
(Nourazari, Lovato, and Weng). The use of predictive modeling echoes
Shinn et al.’s emphasis on efficient targeting to maximize the impact of
limited resources (Shinn et al.). By prioritizing prevention and
intervening early, the initiative reflects Culhane, Metraux, and Byrne’s
argument for a prevention-centered approach to homelessness assistance
(Culhane, Metraux, and Byrne).
This initiative necessitates close collaboration with policymakers
and government agencies. The “Working with Policy” chapter in the Civic
Technologist’s Practice Guide provides valuable insights for navigating
the policy landscape. Key considerations include building relationships
with key policymakers, agency leaders, and community stakeholders;
understanding the specific policy processes and decision-making
structures within the relevant government agencies; effectively
communicating the problem of chronic homelessness and the potential
benefits of the proposed solution; building a broad coalition of support
for the initiative; and anticipating and addressing potential barriers
to implementation, such as funding constraints, privacy concerns, and
bureaucratic resistance. By leveraging data-driven insights and
collaborating effectively with policymakers, this initiative has the
potential to significantly reduce chronic homelessness and improve the
lives of vulnerable individuals in our community.
Open
Data Indicators
Homeless Shelter Locations
|
attributes.OBJECTID
|
attributes.OWNER_RENTER
|
attributes.PROVIDER
|
attributes.ADDRESS
|
attributes.CITY
|
attributes.STATE
|
attributes.LATITUDE
|
attributes.LONGITUDE
|
attributes.WARD
|
attributes.TYPE
|
attributes.SUBTYPE
|
attributes.STATUS
|
attributes.NUMBER_OF_BEDS
|
attributes.ON_SITE_MEDICAL_CLINIC
|
attributes.DGS_CONFIRMED
|
attributes.DHS_CONFIRMED
|
attributes.ALREADY_PUBLIC_INFORMATION
|
attributes.LAST_UPDATED_BY_DHS
|
attributes.PUBLISH_TO_ODP
|
attributes.AGES_SERVED
|
attributes.HOW_TO_ACCESS
|
attributes.LGBTQ_FOCUSED
|
attributes.XCOORD
|
attributes.YCOORD
|
attributes.NAME
|
attributes.ZIPCODE
|
attributes.WEB_URL
|
attributes.MAR_ID
|
attributes.GIS_ID
|
attributes.GLOBALID
|
attributes.CREATOR
|
attributes.CREATED
|
attributes.EDITOR
|
attributes.EDITED
|
geometry.x
|
geometry.y
|
|
1
|
Catholic Charities
|
Catholic Charities
|
6010 Georgia Ave., NW
|
Washington
|
DC
|
38.96335
|
-77.02830
|
Ward 4
|
Low Barrier
|
Women
|
Active
|
25
|
NA
|
NA
|
Yes
|
Yes
|
1.510722e+12
|
Yes
|
18+
|
Show Up and/or Call Shelter Hotline (311)
|
NA
|
397547.11
|
143938.2
|
Nativity Shelter for Women
|
20011
|
https://www.catholiccharitiesdc.org/nativity/
|
308177
|
HomelessShelterPt_1
|
{453EC7E8-81EB-4C02-B866-78996813ABD2}
|
NA
|
NA
|
NA
|
NA
|
-77.02830
|
38.96336
|
|
2
|
Coalition for the Homeless
|
Coalition for the Homeless
|
4326 14th Street NW
|
Washington
|
DC
|
38.94385
|
-77.03300
|
Ward 4
|
Transitional
|
Men
|
Active
|
12
|
NA
|
NA
|
Yes
|
Yes
|
1.510722e+12
|
Yes
|
18+
|
Coordinated Assessment & Housing Placement (CAHP) Process
|
NA
|
397139.11
|
141773.19
|
The Webster House
|
20011
|
http://www.dccfh.org/programs/housing/the-webster-house
|
259286
|
HomelessShelterPt_2
|
{D271432C-8CA8-4C02-836A-77704207EEE8}
|
NA
|
NA
|
NA
|
NA
|
-77.03300
|
38.94385
|
|
4
|
Coalition for the Homeless
|
Coalition for the Homeless
|
1318 Park Road NW
|
Washington
|
DC
|
38.93080
|
-77.03050
|
Ward 1
|
Transitional
|
Men
|
Active
|
12
|
NA
|
NA
|
Yes
|
Yes
|
1.510722e+12
|
Yes
|
18+
|
Coordinated Assessment & Housing Placement (CAHP) Process
|
NA
|
397355.56
|
140325.07
|
Park Road Transitional Program
|
20010
|
http://www.dccfh.org/programs/housing/park-road-transitional-program
|
231077
|
HomelessShelterPt_4
|
{BBBBE8E2-BB32-40E8-BBF5-BCEDFA359C5F}
|
NA
|
NA
|
NA
|
NA
|
-77.03050
|
38.93081
|
|
5
|
Casa Ruby
|
Casa Ruby
|
2822 Georgia Ave NW
|
Washington
|
DC
|
38.92676
|
-77.02316
|
Ward 1
|
Low Barrier
|
Youth
|
Active
|
17
|
No
|
NA
|
Yes
|
Yes
|
1.513660e+12
|
Yes
|
18-24
|
Show Up and/or Call the Shelter
|
Yes
|
397992.01
|
139875.89
|
Casa Ruby
|
20001
|
http://www.casaruby.org/index.html
|
232586
|
HomelessShelterPt_5
|
{C95175C1-8315-4E9E-8338-FC57F14AF0C2}
|
NA
|
NA
|
NA
|
NA
|
-77.02316
|
38.92677
|
|
6
|
DHS
|
Catholic Charities
|
2210 Adams Place, NE
|
Washington
|
DC
|
38.91962
|
-76.97488
|
Ward 5
|
Low Barrier
|
Men
|
Active
|
150
|
NA
|
Yes
|
Yes
|
Yes
|
1.510722e+12
|
Yes
|
18+
|
Show Up and/or Call Shelter Hotline (311)
|
NA
|
402178.73
|
139083.8
|
Adams Place Shelter
|
20018
|
https://www.catholiccharitiesdc.org/housing-shelter/adamsplace/
|
50358
|
HomelessShelterPt_6
|
{ACDDF2E5-F7A8-44AF-8998-92E40DABB34A}
|
NA
|
NA
|
NA
|
NA
|
-76.97488
|
38.91963
|
|
7
|
DHS
|
Catholic Charities
|
1355 New York Avenue, NE
|
Washington
|
DC
|
38.91507
|
-76.98583
|
Ward 5
|
Low Barrier
|
Men
|
Active
|
360
|
Yes
|
Yes
|
Yes
|
Yes
|
1.510722e+12
|
Yes
|
18+
|
Show Up and/or Call Shelter Hotline (311)
|
NA
|
401228.95
|
138578.06
|
New York Avenue Shelter
|
20002
|
https://www.catholiccharitiesdc.org/housing-shelter/newyorkave/
|
66060
|
HomelessShelterPt_7
|
{EAEB443E-CB16-4E3F-B610-26614ACA7033}
|
NA
|
NA
|
NA
|
NA
|
-76.98583
|
38.91508
|
Homeless Service Facilities
|
attributes.OBJECTID
|
attributes.PROGRAM_NAME
|
attributes.DESCRIPTION
|
attributes.WEBSITE_URL
|
attributes.CITY
|
attributes.STATE
|
attributes.ACCESSIBILITY_SERVICES
|
attributes.ADULT_LITERACY
|
attributes.ART_THERAPY
|
attributes.ASSESSMENT
|
attributes.BORROW_MATERIALS
|
attributes.CASE_MANAGEMENT
|
attributes.CHILD_CARE
|
attributes.CLOTHING
|
attributes.COMPUTERS
|
attributes.DENTAL_SERVICES
|
attributes.DOCUMENTATION_ASSISTANCE
|
attributes.DOMESTIC_VIOLENCE_SERVICES
|
attributes.FOOD_GROCERIES
|
attributes.GROUPS
|
attributes.HAIRCUTS
|
attributes.HARM_REDUCTION
|
attributes.HIV_TESTING
|
attributes.HOUSING
|
attributes.HOUSING_NAVIGATION
|
attributes.INCOME_TAX_HELP
|
attributes.LAUNDRY
|
attributes.LIBRARY_CARD
|
attributes.LEGAL_SERVICES
|
attributes.MEDICAL_BENEFITS
|
attributes.MEDICAL_SERVICES
|
attributes.MAIL
|
attributes.MEALS
|
attributes.MENTAL_HEALTH
|
attributes.MINISTRY
|
attributes.PHONE
|
attributes.PUBLIC_RESTROOMS
|
attributes.REFRESHMENTS
|
attributes.SHOWERS
|
attributes.SNAP_FOOD_STAMPS
|
attributes.STORAGE
|
attributes.SUBSTANCE_ABUSE_TREATMENT
|
attributes.SUPPORTED_EMPLOYMENT
|
attributes.TANF_FINANCIAL_ASSISTANCE
|
attributes.TRANSPORTATION
|
attributes.VOCATIONAL_TRAINING
|
attributes.CLIENTS_SERVED_PER_DAY
|
attributes.TARGET
|
attributes.OPEN_TO_PUBLIC
|
attributes.HOURS_OF_OPERATION
|
attributes.RECORD_LAST_UPDATED
|
attributes.LATITUDE
|
attributes.LONGITUDE
|
attributes.LGBTQ_FOCUSED
|
attributes.PHONE_NUMBER
|
attributes.XCOORD
|
attributes.YCOORD
|
attributes.WARD
|
attributes.NAME
|
attributes.ADDRESS
|
attributes.ZIPCODE
|
attributes.MAR_ID
|
attributes.GIS_ID
|
attributes.GLOBALID
|
attributes.CREATOR
|
attributes.CREATED
|
attributes.EDITOR
|
attributes.EDITED
|
geometry.x
|
geometry.y
|
|
1
|
Shepherd Park Library
|
NA
|
https://www.dclibrary.org/node/10380
|
Washington
|
DC
|
NA
|
NA
|
NA
|
NA
|
Yes
|
NA
|
NA
|
NA
|
Yes
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
Yes
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
Yes
|
NA
|
Men & Women
|
Yes
|
NA
|
1.505189e+12
|
38.98028
|
-77.02704
|
NA
|
NA
|
397657.5
|
145817.5
|
Ward 4
|
DC Public Library
|
7420 GEORGIA AVENUE NW
|
20012
|
253522
|
HomelessServicePt_1
|
{0FCDF887-B835-4FA2-832E-4E9B3B105E22}
|
NA
|
NA
|
NA
|
NA
|
-77.02704
|
38.98029
|
|
3
|
Headquarters
|
NA
|
https://contemporaryservices.net/
|
Washington
|
DC
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
Yes
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
Families
|
NA
|
NA
|
1.505189e+12
|
38.96691
|
-77.02706
|
NA
|
NA
|
397654.9
|
144333.6
|
Ward 4
|
Contemporary Family Services
|
6323 GEORGIA AVENUE NW
|
20011
|
254165
|
HomelessServicePt_3
|
{688E4D52-CDAD-4EFC-B8B0-1287E72ED88D}
|
NA
|
NA
|
NA
|
NA
|
-77.02706
|
38.96692
|
|
4
|
Chevy Chase Library
|
NA
|
https://www.dclibrary.org/node/10370
|
Washington
|
DC
|
NA
|
NA
|
NA
|
NA
|
Yes
|
NA
|
NA
|
NA
|
Yes
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
Yes
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
Yes
|
NA
|
Men & Women
|
Yes
|
NA
|
1.505189e+12
|
38.96557
|
-77.07546
|
NA
|
NA
|
393460.6
|
144186.8
|
Ward 3
|
DC Public Library
|
5625 CONNECTICUT AVENUE NW
|
20015
|
263960
|
HomelessServicePt_4
|
{F3C46C98-7CE6-4F8F-AA36-78D317B93E55}
|
NA
|
NA
|
NA
|
NA
|
-77.07546
|
38.96558
|
|
5
|
Lamond-Riggs Library
|
NA
|
https://www.dclibrary.org/node/10382
|
Washington
|
DC
|
NA
|
NA
|
NA
|
NA
|
Yes
|
NA
|
NA
|
NA
|
Yes
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
Yes
|
NA
|
Yes
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
Yes
|
NA
|
Men & Women
|
Yes
|
NA
|
1.505189e+12
|
38.95513
|
-76.99958
|
NA
|
NA
|
400036.0
|
143025.0
|
Ward 5
|
DC Public Library
|
5401 SOUTH DAKOTA AVENUE NE
|
20011
|
288645
|
HomelessServicePt_5
|
{8832067D-4FA8-49F1-A269-A1759CF7CF2F}
|
NA
|
NA
|
NA
|
NA
|
-76.99959
|
38.95514
|
|
7
|
Drop-In Center & Clinic
|
NA
|
https://friendshipplace.org/drop-in-and-clinic/
|
Washington
|
DC
|
NA
|
NA
|
NA
|
NA
|
NA
|
Yes
|
NA
|
NA
|
Yes
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
Yes
|
NA
|
NA
|
NA
|
Yes
|
NA
|
Yes
|
NA
|
NA
|
NA
|
NA
|
NA
|
Yes
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
40
|
Men & Women
|
Yes
|
NA
|
1.505189e+12
|
38.95137
|
-77.08064
|
NA
|
NA
|
393010.3
|
142610.4
|
Ward 3
|
Friendship Place
|
4713 WISCONSIN AVENUE NW
|
20016
|
274422
|
HomelessServicePt_7
|
{D20CC768-C51C-4085-A9CE-6E7680ECD977}
|
NA
|
NA
|
NA
|
NA
|
-77.08064
|
38.95137
|
|
8
|
Tenley-Friendship Library
|
NA
|
https://www.dclibrary.org/node/10404
|
Washington
|
DC
|
NA
|
NA
|
NA
|
NA
|
Yes
|
NA
|
NA
|
NA
|
Yes
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
Yes
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
NA
|
Yes
|
NA
|
Men & Women
|
Yes
|
NA
|
1.505189e+12
|
38.94761
|
-77.07989
|
NA
|
NA
|
393074.9
|
142193.2
|
Ward 3
|
DC Public Library
|
4450 WISCONSIN AVENUE NW
|
20016
|
284921
|
HomelessServicePt_8
|
{32E74CEE-5BFC-4507-AE21-7F7251D7F278}
|
NA
|
NA
|
NA
|
NA
|
-77.07989
|
38.94762
|
Affordable Housing Units
|
attributes.OBJECTID
|
attributes.MAR_WARD
|
attributes.ADDRESS
|
attributes.PROJECT_NAME
|
attributes.STATUS_PUBLIC
|
attributes.AGENCY_CALCULATED
|
attributes.TOTAL_AFFORDABLE_UNITS
|
attributes.LATITUDE
|
attributes.LONGITUDE
|
attributes.AFFORDABLE_UNITS_AT_0_30_AMI
|
attributes.AFFORDABLE_UNITS_AT_31_50_AMI
|
attributes.AFFORDABLE_UNITS_AT_51_60_AMI
|
attributes.AFFORDABLE_UNITS_AT_61_80_AMI
|
attributes.AFFORDABLE_UNITS_AT_81_AMI
|
attributes.CASE_ID
|
attributes.MAR_ID
|
attributes.XCOORD
|
attributes.YCOORD
|
attributes.FULLADDRESS
|
attributes.GIS_LAST_MOD_DTTM
|
geometry.x
|
geometry.y
|
|
128816
|
Ward 6
|
43 K Street Northwest, Washington, District of Columbia 20001
|
The SeVerna Phase II (The SeVerna II LLC/Golden Rule Apartments Inc.)
|
Completed 2015 to Date
|
DMPED DCHA DCHFA DHCD
|
101
|
38.90278
|
-77.01162
|
0
|
21
|
80
|
0
|
32
|
NA
|
310112
|
398991.7
|
137214.1
|
43 K STREET NW
|
1.731924e+12
|
-77.01163
|
38.90279
|
|
128817
|
Ward 6
|
1331 4th St SE, Washington, District of Columbia 20003
|
The Yards N Building
|
Completed 2015 to Date
|
DMPED DCHFA DHCD
|
66
|
38.87429
|
-77.00077
|
0
|
0
|
66
|
0
|
0
|
NA
|
310978
|
399932.9
|
134051.2
|
1331 4TH STREET SE
|
1.731924e+12
|
-77.00078
|
38.87430
|
|
128818
|
Ward 8
|
1443 Savannah St SE, Washington, District of Columbia 20032
|
Tobias Henson Apts.
|
Completed 2015 to Date
|
DHCD
|
64
|
38.84422
|
-76.98423
|
0
|
56
|
8
|
0
|
0
|
NA
|
63162
|
401368.9
|
130713.8
|
1443 SAVANNAH STREET SE
|
1.731924e+12
|
-76.98423
|
38.84423
|
|
128819
|
Ward 5
|
1214 Staples Street Northeast, Washington, District of Columbia 20002
|
Trinidad Properties (w/ PADD)
|
Completed 2015 to Date
|
DHCD
|
9
|
38.90239
|
-76.98517
|
0
|
0
|
9
|
0
|
0
|
NA
|
71425
|
401286.0
|
137170.3
|
1214 STAPLES STREET NE
|
1.731924e+12
|
-76.98518
|
38.90239
|
|
128820
|
Ward 8
|
21 Atlantic Street Southwest, Washington, District of Columbia 20032
|
Trinity Plaza (Retail Worker Housing Demo Initiative)
|
Completed 2015 to Date
|
DCHFA DHCD
|
49
|
38.83164
|
-77.00843
|
17
|
27
|
0
|
5
|
0
|
NA
|
52006
|
399267.9
|
129317.4
|
21 ATLANTIC STREET SW
|
1.731924e+12
|
-77.00843
|
38.83165
|
|
128821
|
Ward 6
|
1520 North Capitol Street Northwest, Washington, District of Columbia
20002
|
Cycle House
|
Under Construction
|
DMPED DHCD
|
18
|
38.91025
|
-77.00938
|
2
|
4
|
12
|
0
|
0
|
NA
|
331764
|
399186.4
|
138042.9
|
1520 NORTH CAPITOL STREET NW
|
1.731924e+12
|
-77.00938
|
38.91026
|
This code imports three datasets from OpenData DC:
Homeless Shelter Locations: This dataset provides information on the
location, capacity, and types of services offered at homeless shelters
in Washington, DC.
Homeless Service Facilities: This dataset contains information on
various facilities that provide services to people experiencing
homelessness, such as day centers, soup kitchens, and medical
clinics.
Affordable Housing: This dataset includes information on affordable
housing units in Washington, DC, including location, number of units,
and affordability levels.
Five Indicators and their Relevance to Chronic Homelessness:
Shelter Capacity (from “Homeless Shelter Locations”): This indicator
shows the total number of beds available in emergency shelters and
transitional housing programs. A low shelter capacity relative to the
estimated homeless population indicates a lack of adequate emergency
resources, potentially contributing to chronic homelessness.
Types of Shelter Services (from “Homeless Shelter Locations”): This
indicator provides information on the specific services offered at each
shelter, such as family shelters, shelters for individuals with
disabilities, and shelters with substance abuse treatment programs.
Analyzing the availability of specialized services can reveal gaps in
resources for specific subpopulations experiencing chronic
homelessness.
Number of Permanent Supportive Housing Units (from “Affordable
Housing”): This indicator shows the number of housing units specifically
designated for individuals and families exiting homelessness and
requiring ongoing support services. An adequate supply of permanent
supportive housing is crucial for breaking the cycle of chronic
homelessness.
Availability of Affordable Housing Units for Extremely Low-Income
Households (from “Affordable Housing”): This indicator reflects the
availability of housing units affordable to households with incomes
below 30% of the Area Median Income (AMI). A shortage of deeply
affordable housing is a significant contributor to chronic homelessness,
as individuals and families struggle to find stable and affordable
housing options.
Geographic Distribution of Services (from both “Homeless Shelter
Locations” and “Homeless Service Facilities”): Mapping the location of
shelters and service facilities can reveal geographic disparities in
access to resources. Concentrations of services in certain areas may
leave other communities underserved, potentially contributing to higher
rates of chronic homelessness in those areas.
By analyzing these indicators, we can gain a better understanding of
the conditions contributing to chronic homelessness in Washington, DC.
This information can inform the development and implementation of
targeted interventions, such as the predictive modeling initiative
proposed, to effectively address this critical issue.
LS0tDQp0aXRsZTogQXNzZXNzaW5nIEhvbWVsZXNzbmVzcyBpbiBXYXNoaW5ndG9uLCBEQw0KYXV0aG9yOiBOaWNob2xhcyBKLiBXaWdnaW5zDQpvdXRwdXQ6IA0KICAgIGh0bWxfZG9jdW1lbnQ6DQogICAgICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQ0KICAgICAgICBhbmNob3Jfc2VjdGlvbnM6IHRydWUNCiAgICAgICAgdG9jOiB0cnVlDQogICAgICAgIHRvY19mbG9hdDoNCiAgICAgICAgICAgIGNvbGxhcHNlZDogZmFsc2UNCiAgICAgICAgICAgIHNtb290aF9zY3JvbGw6IHRydWUNCiAgICAgICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KICAgICAgICBkZl9wcmludDogImthYmxlIg0KLS0tDQoNCiMgSW50cm9kdWN0aW9uDQoNCkhvbWVsZXNzbmVzcyByZW1haW5zIGEgcHJlc3NpbmcgYW5kIG11bHRpZmFjZXRlZCBpc3N1ZSBpbiBXYXNoaW5ndG9uLCBEQywgYWZmZWN0aW5nIHRob3VzYW5kcyBvZiBpbmRpdmlkdWFscyBhbmQgZmFtaWxpZXMgZGFpbHkuIE9uIGFueSBnaXZlbiBuaWdodCwgb3ZlciA1LDAwMCBwZW9wbGUgZXhwZXJpZW5jZSBob21lbGVzc25lc3MgaW4gdGhlIGNpdHksIGEgcmVmbGVjdGlvbiBvZiBkZWVwZXIgc3lzdGVtaWMgY2hhbGxlbmdlcyBzdWNoIGFzIGVjb25vbWljIGluZXF1YWxpdHksIGhvdXNpbmcgc2hvcnRhZ2VzLCBhbmQgYmFycmllcnMgdG8gaGVhbHRoY2FyZS4gVGhhdOKAmXMgYWJvdXQgNzUgb3V0IG9mIDEwLDAwMCByZXNpZGVudHMgKENvYWxpdGlvbiBmb3IgdGhlIEhvbWVsZXNzLCAyMDIzKV5bUmVwLiBfMjAyMyBBbm51YWwgUmVwb3J0Xy4gV2FzaGluZ3RvbiwgRC5DLjogQ29hbGl0aW9uIGZvciB0aGUgSG9tZWxlc3MsIDIwMjRdLiBBZGRyZXNzaW5nIHRoaXMgaXNzdWUgaXMgbm90IG9ubHkgYSBtb3JhbCBpbXBlcmF0aXZlIGJ1dCBhbHNvIGEgbWF0dGVyIG9mIHNvY2lhbCBlcXVpdHksIHB1YmxpYyBoZWFsdGgsIGFuZCBlY29ub21pYyBzdXN0YWluYWJpbGl0eSBmb3IgdGhlIGNpdHkgKFNtaXRoLCAyMDE5KS4gVGhpcyBhbmFseXNpcyB3aWxsIGV4cGxvcmUgdGhlIGtleSBmYWN0b3JzIGNvbnRyaWJ1dGluZyB0byBob21lbGVzc25lc3MgaW4gV2FzaGluZ3RvbiwgREMsIGV4YW1pbmUgYXZhaWxhYmxlIGRhdGFzZXRzLCBhbmQgcHJvcG9zZSBwb2xpY3kgcmVjb21tZW5kYXRpb25zIHRoYXQgYWRkcmVzcyBib3RoIHRoZSByb290IGNhdXNlcyBhbmQgaW1tZWRpYXRlIG5lZWRzIG9mIHRoZSBob21lbGVzcyBwb3B1bGF0aW9uLg0KDQojIyBEYXRhc2V0cyBSZWxldmFudCB0byB0aGUgUHJvYmxlbQ0KDQpUbyBkZXZlbG9wIGVmZmVjdGl2ZSBhbmQgZGF0YS1kcml2ZW4gc29sdXRpb25zLCBpdCBpcyBlc3NlbnRpYWwgdG8gZmlyc3QgdW5kZXJzdGFuZCB0aGUgZXh0ZW50IG9mIGhvbWVsZXNzbmVzcyBpbiBXYXNoaW5ndG9uLCBEQy4gVGhpcyByZXF1aXJlcyBhIGRldGFpbGVkIGV4YW1pbmF0aW9uIG9mIG11bHRpcGxlIGRhdGFzZXRzLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvOg0KDQogLSBIb21lbGVzcyBQb3B1bGF0aW9uIERhdGE6IFRoaXMgZGF0YSBjYW4gYmUgcHVsbGVkIGZyb20gREMncyBQb2ludC1pbi1UaW1lIENvdW50XlvigJxIb21lbGVzc25lc3MgaW4gREMu4oCdIFRoZSBDb21tdW5pdHkgUGFydG5lcnNoaXAsIEp1bHkgMTUsIDIwMjQuIGh0dHBzOi8vY29tbXVuaXR5LXBhcnRuZXJzaGlwLm9yZy9ob21lbGVzc25lc3MtaW4tZGMvI3BpdC1kYXNoYm9hcmRdIHdoaWNoIGluY2x1ZGVzIGRlbW9ncmFwaGljIGluZm9ybWF0aW9uIHN1Y2ggYXMgYWdlLCBnZW5kZXIsIGFuZCByYWNlLCBhcyB3ZWxsIGFzIGdlb2dyYXBoaWMgZGlzdHJpYnV0aW9uLCBoZWxwaW5nIHRvIGlkZW50aWZ5IHdoaWNoIGFyZWFzIGFyZSBtb3N0IGFmZmVjdGVkIGFuZCB3aGljaCBncm91cHMgYXJlIG1vc3QgdnVsbmVyYWJsZS4NCg0KLSBIb3VzaW5nIERhdGE6IEFjY29yZGluZyB0byB0aGUgTmF0aW9uYWwgTG93IEluY29tZSBIb3VzaW5nIENvYWxpdGlvbiAoTkxJSEMsIDIwMjMpXltIYXJhdGksIFJhcXVlbCwgRGlhbmUgWWVudGVsLCBMYXVyZW4gU3RlaW1sZSwgQ2FybHkgWmhvdSwgYW5kIERhbiBFbW1hbnVlbC4g4oCcT3V0IG9mIFJlYWNoLuKAnSBOYXRpb25hbCBMb3cgSW5jb21lIEhvdXNpbmcgQ29hbGl0aW9uLCAyMDI0LiBodHRwczovL25saWhjLm9yZy9vb3JdLCB0aGUgYWZmb3JkYWJsZSBob3VzaW5nIHNob3J0YWdlIGluIFdhc2hpbmd0b24sIERDIGhhcyByZWFjaGVkIGEgY3JpdGljYWwgbGV2ZWwuIEFuYWx5c2lzIG9mIGhvdXNpbmcgcHJpY2VzLCByZW50YWwgcmF0ZXMsIGFuZCB0aGUgYXZhaWxhYmlsaXR5IG9mIGFmZm9yZGFibGUgaG91c2luZyB1bml0cyBpcyBjcnVjaWFsIGluIHVuZGVyc3RhbmRpbmcgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGhvdXNpbmcgY29zdHMgYW5kIGhvbWVsZXNzbmVzcy4gRGF0YXNldDogREMgT3BlbiBEYXRhIFBvcnRhbDogQWZmb3JkYWJsZSBIb3VzaW5nDQoNCi0gRGVtb2dyYXBoaWMgRGF0YTogSW5mb3JtYXRpb24gb24gdGhlIGFnZSwgZ2VuZGVyLCByYWNlLCBhbmQgZXRobmljaXR5IG9mIGhvbWVsZXNzIGluZGl2aWR1YWxzIGNhbiBoZWxwIGlkZW50aWZ5IHNwZWNpZmljIHBvcHVsYXRpb25zIHRoYXQgYXJlIG1vc3QgdnVsbmVyYWJsZSB0byBob21lbGVzc25lc3MuIERhdGFzZXQ6IERDIE9wZW4gRGF0YSBQb3J0YWw6IENlbnN1cyBUcmFjdHMgaW4gMjAyMCwgQUNTIDUtWWVhciBTb2NpYWwgQ2hhcmFjdGVyaXN0aWNzIERDIENlbnN1cyBUcmFjdA0KDQotIEdlb2dyYXBoaWMgRGlzdHJpYnV0aW9uOiBBbmFseXppbmcgdGhlIGdlb2dyYXBoaWMgZGlzdHJpYnV0aW9uIG9mIGhvbWVsZXNzbmVzcyBjYW4gaGVscCBpZGVudGlmeSBhcmVhcyB3aXRoIGhpZ2ggY29uY2VudHJhdGlvbnMgb2YgaG9tZWxlc3MgaW5kaXZpZHVhbHMgYW5kIGluZm9ybSB0YXJnZXRlZCBpbnRlcnZlbnRpb25zLiBEYXRhc2V0OiBEQyBPcGVuIERhdGEgUG9ydGFsOiBIb21lbGVzcyBTaGVsdGVyIExvY2F0aW9ucw0KDQotIEVjb25vbWljIERhdGE6IFVuZW1wbG95bWVudCByYXRlcywgcG92ZXJ0eSByYXRlcywgYW5kIGluY29tZSBkaXN0cmlidXRpb24gZGF0YSBwcm92aWRlIGluc2lnaHQgaW50byB0aGUgZWNvbm9taWMgY29uZGl0aW9ucyB0aGF0IGNhbiBsZWFkIHRvIGhvbWVsZXNzbmVzcy4gRGF0YXNldDogREMgT3BlbiBEYXRhIFBvcnRhbDogQUNTIDUtWWVhciBFY29ub21pYyBDaGFyYWN0ZXJpc3RpY3MgREMgQ2Vuc3VzIFRyYWN0DQoNCi0gU29jaWFsIFNlcnZpY2VzIERhdGE6IEluZm9ybWF0aW9uIGFib3V0IHRoZSBhdmFpbGFiaWxpdHkgYW5kIHV0aWxpemF0aW9uIG9mIHNoZWx0ZXJzLCBmb29kIGJhbmtzLCBhbmQgaGVhbHRoY2FyZSBzZXJ2aWNlcyBoZWxwcyB0byBpZGVudGlmeSBnYXBzIGluIHRoZSBzdXBwb3J0IG5ldHdvcmsgZm9yIGhvbWVsZXNzIGluZGl2aWR1YWxzLiBEYXRhc2V0OiBEQyBPcGVuIERhdGEgUG9ydGFsOiBTb2NpYWwgU2VydmljZXMgRGlyZWN0b3J5LCBIb21lbGVzcyBTZXJ2aWNlIEZhY2lsaXRpZXMNCg0KLSBQdWJsaWMgU2FmZXR5IERhdGE6IENyaW1lIHJhdGVzLCBhcnJlc3RzLCBhbmQgaW50ZXJhY3Rpb25zIGJldHdlZW4gbGF3IGVuZm9yY2VtZW50IGFuZCBob21lbGVzcyBpbmRpdmlkdWFscyBjYW4gb2ZmZXIgaW1wb3J0YW50IGNvbnRleHQgZm9yIGhvdyBwdWJsaWMgc2FmZXR5IHBvbGljaWVzIGltcGFjdCBob21lbGVzc25lc3MuIERhdGFzZXQ6IERDIE9wZW4gRGF0YSBQb3J0YWw6IENyaW1lIEluY2lkZW50cyBpbiAyMDI0DQoNCi0gSGVhbHRoIERhdGE6IERhdGEgb24gdGhlIGhlYWx0aCBvdXRjb21lcyBvZiBob21lbGVzcyBpbmRpdmlkdWFscyBjYW4gaW5mb3JtIGludGVydmVudGlvbnMgZm9yIGNocm9uaWMgZGlzZWFzZXMsIG1lbnRhbCBoZWFsdGgsIGFuZCBzdWJzdGFuY2UgYWJ1c2UuIERhdGFzZXQ6IERDIE9wZW4gRGF0YSBQb3J0YWw6IERDIEhlYWx0aCBQbGFubmluZyBOZWlnaGJvcmhvb2RzIHRvIENlbnN1cyBUcmFjdHMNCg0KRWFjaCBvZiB0aGVzZSBkYXRhc2V0cyBjYW4gYmUgYWNjZXNzZWQgdGhyb3VnaCBXYXNoaW5ndG9uLCBEQydzIG9wZW4gZGF0YSBwb3J0YWwgYW5kIG90aGVyIGdvdmVybm1lbnRhbCBhbmQgbm9ucHJvZml0IHNvdXJjZXMsIHByb3ZpZGluZyBhIGNvbXByZWhlbnNpdmUgZm91bmRhdGlvbiBmb3IgdW5kZXJzdGFuZGluZyB0aGUgc2NvcGUgYW5kIG5hdHVyZSBvZiBob21lbGVzc25lc3MgaW4gdGhlIGNpdHkuDQoNCiMjIFByb2JsZW1hdGljIENvbmRpdGlvbnMNCg0KU2V2ZXJhbCBrZXkgZmFjdG9ycyBjb250cmlidXRlIHRvIGhvbWVsZXNzbmVzcyBpbiBXYXNoaW5ndG9uLCBEQywgZWFjaCBpbnRlcmFjdGluZyB0byBleGFjZXJiYXRlIHRoZSBjcmlzaXMuIEZpcnN0IGFuZCBmb3JlbW9zdCBpcyB0aGUgaXNzdWUgb2YgcmlzaW5nIGhvdXNpbmcgY29zdHMuIFRoZSBpbmNyZWFzaW5nIGNvc3Qgb2YgYm90aCByZW50aW5nIGFuZCBvd25pbmcgYSBob21lIGhhcyBvdXRwYWNlZCB3YWdlIGdyb3d0aCwgbWFraW5nIGl0IGRpZmZpY3VsdCBmb3IgbWFueSB0byBhZmZvcmQgc3RhYmxlIGhvdXNpbmcgKFNtaXRoLCAyMDE5KV5bU21pdGgsIENhdGhlcmluZSBGLiBXcml0aW5nIHB1YmxpYyBwb2xpY3k6IF9BIHByYWN0aWNhbCBndWlkZSB0byBjb21tdW5pY2F0aW5nIGluIHRoZSBwb2xpY3kgbWFraW5nIHByb2Nlc3NfLiBOZXcgWW9yaywgTlk6IE94Zm9yZCBVbml2ZXJzaXR5IFByZXNzLCAyMDE5XS4gVGhpcyBpcyBjb21wb3VuZGVkIGJ5IHRoZSBjaXR5J3Mgc2hvcnRhZ2Ugb2YgYWZmb3JkYWJsZSBob3VzaW5nIHVuaXRzLCBwYXJ0aWN1bGFybHkgZm9yIGxvdy1pbmNvbWUgcmVzaWRlbnRzIChXaWxzb24gJiBDb25nLCAyMDIxKV5bV2lsc29uLCBCZXYsIGFuZCBDb25nIENvbmcuIOKAnEJleW9uZCB0aGUgU3VwcGx5IFNpZGU6IFVzZSBhbmQgSW1wYWN0IG9mIE11bmljaXBhbCBPcGVuIERhdGEgaW4gdGhlIFUuUy7igJ0gX1RlbGVtYXRpY3MgYW5kIEluZm9ybWF0aWNzXyA1OCAoTWF5IDIwMjEpOiAxMDE1MjYuIGh0dHBzOi8vZG9pLm9yZy8xMC4xMDE2L2oudGVsZS4yMDIwLjEwMTUyNl0uIFRoZSBkZW1hbmQgZm9yIGhvdXNpbmcgZmFyIGV4Y2VlZHMgdGhlIHN1cHBseSwgbGVhdmluZyB0aG91c2FuZHMgd2l0aG91dCBhZGVxdWF0ZSBvcHRpb25zLg0KDQpJbiBhZGRpdGlvbiB0byBlY29ub21pYyBmYWN0b3JzLCBtZW50YWwgaGVhbHRoIGFuZCBzdWJzdGFuY2UgYWJ1c2UgaXNzdWVzIHBsYXkgYSBzaWduaWZpY2FudCByb2xlIGluIGhvbWVsZXNzbmVzcy4gTWFueSBpbmRpdmlkdWFscyBleHBlcmllbmNpbmcgaG9tZWxlc3NuZXNzIHN0cnVnZ2xlIHdpdGggdGhlc2UgY2hhbGxlbmdlcywgd2hpY2ggbWFrZSBpdCBkaWZmaWN1bHQgdG8gc2VjdXJlIGFuZCBtYWludGFpbiBzdGFibGUgaG91c2luZyAoVGhvcnNieSBldCBhbC4sIDIwMTcpXltUaG9yc2J5LCBKZWZmcmV5LCBHZW5pZSBOLkwuIFN0b3dlcnMsIEtyaXN0ZW4gV29sc2xlZ2VsLCBhbmQgRWxsaWUgVHVtYnVhbi4g4oCcVW5kZXJzdGFuZGluZyB0aGUgQ29udGVudCBhbmQgRmVhdHVyZXMgb2YgT3BlbiBEYXRhIFBvcnRhbHMgaW4gQW1lcmljYW4gQ2l0aWVzLuKAnSBfR292ZXJubWVudCBJbmZvcm1hdGlvbiBRdWFydGVybHlfIDM0LCBuby4gMSAoSmFudWFyeSAyMDE3KTogNTPigJM2MS4gaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTYvai5naXEuMjAxNi4wNy4wMDFdLiBEZXNwaXRlIHRoZXNlIG5lZWRzLCBhY2Nlc3MgdG8gYXBwcm9wcmlhdGUgbWVudGFsIGhlYWx0aCBjYXJlIGFuZCBzdWJzdGFuY2UgYWJ1c2UgdHJlYXRtZW50IHJlbWFpbnMgbGltaXRlZCBpbiBtYW55IHBhcnRzIG9mIHRoZSBjaXR5Lg0KDQpTeXN0ZW1pYyBiYXJyaWVycyBmdXJ0aGVyIGNvbXBvdW5kIHRoZXNlIGNoYWxsZW5nZXMuIExpbWl0ZWQgYWNjZXNzIHRvIGhlYWx0aGNhcmUsIGVkdWNhdGlvbiwgYW5kIGVtcGxveW1lbnQgb3Bwb3J0dW5pdGllcyBjYW4gdHJhcCBpbmRpdmlkdWFscyBpbiBjeWNsZXMgb2YgcG92ZXJ0eSBhbmQgaG9tZWxlc3NuZXNzLCBtYWtpbmcgaXQgZGlmZmljdWx0IGZvciB0aGVtIHRvIGJyZWFrIGZyZWUgYW5kIHJlYnVpbGQgdGhlaXIgbGl2ZXMgKEJyb3duLCBFemlrZSwgJiBTdGVybiwgMjAyMCleW0Jyb3duLCBNYWRlbGluZSwgUmljaGFyZCBFemlrZSwgYW5kIEFsZW5hIFN0ZXJuLiDigJxIb3cgQ2l0aWVzIEFyZSBMZXZlcmFnaW5nIFRlY2hub2xvZ3kgdG8gTWVldCBSZXNpZGVudHPigJkgTmVlZHMgZHVyaW5nIGEgUGFuZGVtaWMu4oCdIFVyYmFuIEluc3RpdHV0ZSwgSnVuZSA5LCAyMDIwLiBodHRwczovL3d3dy51cmJhbi5vcmcvcmVzZWFyY2gvcHVibGljYXRpb24vaG93LWNpdGllcy1hcmUtbGV2ZXJhZ2luZy10ZWNobm9sb2d5LW1lZXQtcmVzaWRlbnRzLW5lZWRzLWR1cmluZy1wYW5kZW1pY10uIEFzIHRoZXNlIGNvbmRpdGlvbnMgcGVyc2lzdCwgdGhlIHJpc2sgb2YgaG9tZWxlc3NuZXNzIGluY3JlYXNlcywgZXNwZWNpYWxseSBmb3IgdGhvc2UgYWxyZWFkeSBvbiB0aGUgZWNvbm9taWMgbWFyZ2lucy4NCg0KIyMgVGhlIFBvbGl0aWNzIG9mIEhvbWVsZXNzbmVzcyBpbiBEQyBhbmQgSW50ZXJlc3RlZCBPcmdhbml6YXRpb25zDQoNCkFkZHJlc3NpbmcgaG9tZWxlc3NuZXNzIGluIERDIHJlcXVpcmVzIG5hdmlnYXRpbmcgYSBjb21wbGV4IHBvbGl0aWNhbCBsYW5kc2NhcGUgYW5kIGVuZ2FnaW5nIHdpdGggdmFyaW91cyBzdGFrZWhvbGRlcnMuIFdoaWxlIHRoZXJlIGlzIGJyb2FkIGFncmVlbWVudCBvbiB0aGUgbmVlZCB0byByZWR1Y2UgaG9tZWxlc3NuZXNzLCBkaXNhZ3JlZW1lbnRzIG9mdGVuIGFyaXNlIHJlZ2FyZGluZyBzcGVjaWZpYyBwb2xpY3kgYXBwcm9hY2hlcyBhbmQgcmVzb3VyY2UgYWxsb2NhdGlvbi4NCg0KT25lIGtleSBwb2ludCBvZiBjb250ZW50aW9uIGlzIHRoZSByb2xlIG9mIGdvdmVybm1lbnQgdmVyc3VzIHRoZSBwcml2YXRlIHNlY3RvciBpbiBwcm92aWRpbmcgaG91c2luZyBhbmQgc2VydmljZXMuICBEaWZmZXJlbnQgcGVyc3BlY3RpdmVzIGV4aXN0IG9uIHRoZSBhcHByb3ByaWF0ZSBiYWxhbmNlIGJldHdlZW4gZ292ZXJubWVudCBpbnRlcnZlbnRpb24gYW5kIHJlbGlhbmNlIG9uIHByaXZhdGUgc2VjdG9yIG9yIG5vbi1wcm9maXQgb3JnYW5pemF0aW9ucyB0byBhZGRyZXNzIHRoZSBuZWVkcyBvZiB0aGUgaG9tZWxlc3MgcG9wdWxhdGlvbi4gIEFub3RoZXIgYXJlYSBvZiBkZWJhdGUgY2VudGVycyBvbiBIb3VzaW5nIEZpcnN0IHZlcnN1cyB0cmVhdG1lbnQtZmlyc3QgYXBwcm9hY2hlcy4gIEhvdXNpbmcgRmlyc3QgcHJpb3JpdGl6ZXMgcHJvdmlkaW5nIGhvdXNpbmcgd2l0aG91dCBwcmVjb25kaXRpb25zLCB3aGlsZSB0cmVhdG1lbnQtZmlyc3QgYXBwcm9hY2hlcyByZXF1aXJlIGluZGl2aWR1YWxzIHRvIGFkZHJlc3MgaXNzdWVzIGxpa2Ugc3Vic3RhbmNlIGFidXNlIG9yIG1lbnRhbCBoZWFsdGggYmVmb3JlIGFjY2Vzc2luZyBob3VzaW5nLiAgVGhlcmUgYXJlIGFsc28gb25nb2luZyBkaXNjdXNzaW9ucyBhYm91dCBob3cgdG8gYWxsb2NhdGUgcmVzb3VyY2VzIGJldHdlZW4gcHJldmVudGF0aXZlIG1lYXN1cmVzLCBzdWNoIGFzIHJlbnRhbCBhc3Npc3RhbmNlIGFuZCBldmljdGlvbiBwcmV2ZW50aW9uLCBhbmQgZW1lcmdlbmN5IHNlcnZpY2VzLCBzdWNoIGFzIHNoZWx0ZXJzIGFuZCBzb3VwIGtpdGNoZW5zLg0KDQpOdW1lcm91cyBvcmdhbml6YXRpb25zIGluIERDIGFyZSBhY3RpdmVseSBpbnZvbHZlZCBpbiBhZHZvY2F0aW5nIGZvciBhbmQgc3VwcG9ydGluZyBpbmRpdmlkdWFscyBleHBlcmllbmNpbmcgaG9tZWxlc3NuZXNzLiBUaGVzZSBvcmdhbml6YXRpb25zIHBsYXkgYSBjcnVjaWFsIHJvbGUgaW4gc2hhcGluZyB0aGUgcG9saWN5IGRpc2NvdXJzZSBvbiBob21lbGVzc25lc3MgYW5kIGFkdm9jYXRpbmcgZm9yIHRoZSBuZWVkcyBvZiB0aGlzIHZ1bG5lcmFibGUgcG9wdWxhdGlvbi4gU29tZSBwcm9taW5lbnQgZXhhbXBsZXMgaW5jbHVkZTogVGhlIENvbW11bml0eSBQYXJ0bmVyc2hpcCBmb3IgdGhlIFByZXZlbnRpb24gb2YgSG9tZWxlc3NuZXNzIChUQ1ApLCB0aGUgbGVhZCBhZ2VuY3kgZm9yIGNvb3JkaW5hdGluZyBob21lbGVzcyBzZXJ2aWNlcyBpbiBEQzsgTWlyaWFtJ3MgS2l0Y2hlbiwgYSBub24tcHJvZml0IHByb3ZpZGluZyBtZWFscywgY2FzZSBtYW5hZ2VtZW50LCBhbmQgYWR2b2NhY3k7IFBhdGh3YXlzIHRvIEhvdXNpbmcgREMsIGEgbm9uLXByb2ZpdCBwcm92aWRpbmcgcGVybWFuZW50IHN1cHBvcnRpdmUgaG91c2luZyBhbmQgd3JhcGFyb3VuZCBzZXJ2aWNlczsgRnJpZW5kc2hpcCBQbGFjZSwgb2ZmZXJpbmcgYSByYW5nZSBvZiBzZXJ2aWNlcyBmcm9tIHN0cmVldCBvdXRyZWFjaCB0byBwZXJtYW5lbnQgaG91c2luZzsgYW5kIFRoZSBXYXNoaW5ndG9uIExlZ2FsIENsaW5pYyBmb3IgdGhlIEhvbWVsZXNzLCB3aGljaCBwcm92aWRlcyBsZWdhbCBzZXJ2aWNlcyBhbmQgYWR2b2NhY3kuDQoNCiMjIEFkZHJlc3NpbmcgdGhlIFJvb3QgQ2F1c2VzDQoNCkdpdmVuIHRoZSBjb21wbGV4aXR5IG9mIGhvbWVsZXNzbmVzcywgYW55IGVmZmVjdGl2ZSBzb2x1dGlvbiBtdXN0IGJlIG11bHRpZmFjZXRlZCwgYWRkcmVzc2luZyBib3RoIHRoZSBpbW1lZGlhdGUgbmVlZHMgb2YgaG9tZWxlc3MgaW5kaXZpZHVhbHMgYW5kIHRoZSB1bmRlcmx5aW5nIHN5c3RlbWljIGlzc3Vlcy4gVGhlIGZvbGxvd2luZyBwb2xpY3kgc29sdXRpb25zIGFyZSByZWNvbW1lbmRlZDoNCg0KSW5jcmVhc2luZyB0aGUgU3VwcGx5IG9mIEFmZm9yZGFibGUgSG91c2luZzogVGhlIGNpdHkgc2hvdWxkIHByaW9yaXRpemUgaW5jcmVhc2luZyB0aGUgc3VwcGx5IG9mIGFmZm9yZGFibGUgaG91c2luZyB1bml0cyB0aHJvdWdoIGEgY29tYmluYXRpb24gb2YgcHVibGljLXByaXZhdGUgcGFydG5lcnNoaXBzLCBpbmNsdXNpb25hcnkgem9uaW5nIHBvbGljaWVzLCBhbmQgcmVudGFsIGFzc2lzdGFuY2UgcHJvZ3JhbXMgKFNtaXRoLCAyMDE5KS4gVGhlc2UgaW5pdGlhdGl2ZXMgY2FuIGhlbHAgYnJpZGdlIHRoZSBnYXAgYmV0d2VlbiBzdXBwbHkgYW5kIGRlbWFuZCwgZW5zdXJpbmcgdGhhdCBtb3JlIGxvdy1pbmNvbWUgaW5kaXZpZHVhbHMgYW5kIGZhbWlsaWVzIGhhdmUgYWNjZXNzIHRvIHNhZmUgYW5kIGFmZm9yZGFibGUgaG91c2luZy4NCg0KU3VwcG9ydGl2ZSBIb3VzaW5nIFByb2dyYW1zOiBBZmZvcmRhYmxlIGhvdXNpbmcgYWxvbmUgaXMgbm90IGVub3VnaC4gTWFueSBpbmRpdmlkdWFscyBleHBlcmllbmNpbmcgaG9tZWxlc3NuZXNzIHJlcXVpcmUgc3VwcG9ydGl2ZSBzZXJ2aWNlcywgc3VjaCBhcyBtZW50YWwgaGVhbHRoIGNvdW5zZWxpbmcgYW5kIHN1YnN0YW5jZSBhYnVzZSB0cmVhdG1lbnQsIHRvIG1haW50YWluIHN0YWJsZSBob3VzaW5nIChWb2RhayBldCBhbC4sIDIwMjEpXltWb2TDoWssIEpvc2VmLCBEb21pbmlrYSDFoHVseW92w6EsIGFuZCBNaWxhbiBLdWJpbmEuIOKAnEFkdmFuY2VkIFRlY2hub2xvZ2llcyBhbmQgVGhlaXIgVXNlIGluIFNtYXJ0IENpdHkgTWFuYWdlbWVudC7igJ0gX1N1c3RhaW5hYmlsaXR5XyAxMywgbm8uIDEwIChNYXkgMjAsIDIwMjEpOiA1NzQ2LiBodHRwczovL2RvaS5vcmcvMTAuMzM5MC9zdTEzMTA1NzQ2XS4gVGhlIGNpdHkgc2hvdWxkIGV4cGFuZCBpdHMgc3VwcG9ydGl2ZSBob3VzaW5nIHByb2dyYW1zIHRvIHByb3ZpZGUgYSBtb3JlIGhvbGlzdGljIGFwcHJvYWNoIHRoYXQgY29tYmluZXMgaG91c2luZyB3aXRoIGVzc2VudGlhbCBzZXJ2aWNlcy4NCg0KSG9tZWxlc3NuZXNzIFByZXZlbnRpb24gUHJvZ3JhbXM6IFRoZSBiZXN0IHdheSB0byBjb21iYXQgaG9tZWxlc3NuZXNzIGlzIHRvIHByZXZlbnQgaXQgZnJvbSBoYXBwZW5pbmcgaW4gdGhlIGZpcnN0IHBsYWNlLiBUaGUgY2l0eSBzaG91bGQgaW52ZXN0IGluIHJlbnRhbCBhc3Npc3RhbmNlLCBmaW5hbmNpYWwgY291bnNlbGluZywgYW5kIGV2aWN0aW9uIHByZXZlbnRpb24gc2VydmljZXMgdG8gaGVscCBpbmRpdmlkdWFscyBhbmQgZmFtaWxpZXMgc3RheSBpbiB0aGVpciBob21lcyAoVGhvcnNieSBldCBhbC4sIDIwMTcpLiBTdWNoIHByb2dyYW1zIGhhdmUgYmVlbiBzaG93biB0byBiZSBjb3N0LWVmZmVjdGl2ZSBhbmQgaGlnaGx5IGltcGFjdGZ1bCBpbiByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIHBlb3BsZSB3aG8gZmFsbCBpbnRvIGhvbWVsZXNzbmVzcy4NCg0KUmFwaWQgUmVob3VzaW5nIEluaXRpYXRpdmVzOiBGb3IgdGhvc2Ugd2hvIGRvIGV4cGVyaWVuY2UgaG9tZWxlc3NuZXNzLCB0aGUgY2l0eSBzaG91bGQgZm9jdXMgb24gcmFwaWQgcmVob3VzaW5nIGVmZm9ydHMgdGhhdCBoZWxwIGluZGl2aWR1YWxzIGFuZCBmYW1pbGllcyBxdWlja2x5IHRyYW5zaXRpb24gZnJvbSBob21lbGVzc25lc3MgdG8gc3RhYmxlIGhvdXNpbmcuIFRoZXNlIHByb2dyYW1zIHNob3VsZCBiZSBjb3VwbGVkIHdpdGggam9iIHRyYWluaW5nIGFuZCBwbGFjZW1lbnQgc2VydmljZXMgdG8gaGVscCBpbmRpdmlkdWFscyBiZWNvbWUgZWNvbm9taWNhbGx5IHNlbGYtc3VmZmljaWVudC4NCg0KQ29tbXVuaXR5LUJhc2VkIFN1cHBvcnQgUHJvZ3JhbXM6IEZvb2QgYmFua3MsIHNoZWx0ZXJzLCBhbmQgaGVhbHRoY2FyZSBzZXJ2aWNlcyBwbGF5IGEgdml0YWwgcm9sZSBpbiBzdXBwb3J0aW5nIGhvbWVsZXNzIGluZGl2aWR1YWxzLiBUaGUgY2l0eSBzaG91bGQgZW5zdXJlIHRoYXQgdGhlc2UgY29tbXVuaXR5LWJhc2VkIHByb2dyYW1zIGFyZSB3ZWxsLWZ1bmRlZCBhbmQgYWNjZXNzaWJsZSwgcGFydGljdWxhcmx5IGluIGFyZWFzIHdpdGggaGlnaCBjb25jZW50cmF0aW9ucyBvZiBob21lbGVzc25lc3MgKFRob3JzYnkgZXQgYWwuLCAyMDE3KS4NCg0KIyMgU29jaWFsIEVxdWl0eSBhbmQgU3lzdGVtaWMgUmVmb3Jtcw0KDQpUbyBtYWtlIGxhc3RpbmcgcHJvZ3Jlc3MsIHRoZSBjaXR5IG11c3QgZ28gYmV5b25kIGhvdXNpbmcgc29sdXRpb25zIGFuZCBhZGRyZXNzIHRoZSBicm9hZGVyIHNvY2lhbCBhbmQgZWNvbm9taWMgaW5lcXVhbGl0aWVzIHRoYXQgY29udHJpYnV0ZSB0byBob21lbGVzc25lc3MuIFB1YmxpYyBhd2FyZW5lc3MgYW5kIGVkdWNhdGlvbiBjYW1wYWlnbnMgY2FuIGhlbHAgY29tYmF0IG5lZ2F0aXZlIHN0ZXJlb3R5cGVzIGFuZCBidWlsZCBlbXBhdGh5IGZvciB0aGUgaG9tZWxlc3MgcG9wdWxhdGlvbiwgZm9zdGVyaW5nIGEgbW9yZSBzdXBwb3J0aXZlIHNvY2lhbCBlbnZpcm9ubWVudC4NCg0KU3lzdGVtaWMgcmVmb3JtcyBhcmUgYWxzbyBuZWNlc3NhcnkgdG8gYnJlYWsgdGhlIGN5Y2xlIG9mIHBvdmVydHkgYW5kIGhvbWVsZXNzbmVzcy4gVGhpcyBpbmNsdWRlcyBpbXByb3ZpbmcgYWNjZXNzIHRvIGhlYWx0aGNhcmUsIGVkdWNhdGlvbiwgYW5kIGVtcGxveW1lbnQgb3Bwb3J0dW5pdGllcyBmb3IgbWFyZ2luYWxpemVkIGdyb3VwcyAoQnJvd24sIEV6aWtlLCAmIFN0ZXJuLCAyMDIwKS4gRm9yIGV4YW1wbGUsIGV4cGFuZGluZyBhY2Nlc3MgdG8gam9iIHRyYWluaW5nIHByb2dyYW1zIGFuZCBpbmNyZWFzaW5nIGZ1bmRpbmcgZm9yIG1lbnRhbCBoZWFsdGggc2VydmljZXMgY2FuIGhlbHAgaW5kaXZpZHVhbHMgb3ZlcmNvbWUgdGhlIGJhcnJpZXJzIHRoYXQgb2Z0ZW4gbGVhZCB0byBob21lbGVzc25lc3MuDQoNCkxhc3RseSwgdGhlIGNpdHkgbXVzdCBjYXJlZnVsbHkgY29uc2lkZXIgdGhlIGltcGFjdCBvZiBlY29ub21pYyBkZXZlbG9wbWVudCBhbmQgZ2VudHJpZmljYXRpb24uIFdoaWxlIGRldmVsb3BtZW50IGNhbiBicmluZyBqb2JzIGFuZCBlY29ub21pYyBncm93dGgsIGl0IGNhbiBhbHNvIGRpc3BsYWNlIGxvdy1pbmNvbWUgcmVzaWRlbnRzLCBleGFjZXJiYXRpbmcgdGhlIGhvbWVsZXNzbmVzcyBjcmlzaXMuIFBvbGljeW1ha2VycyBzaG91bGQgZW5zdXJlIHRoYXQgZGV2ZWxvcG1lbnQgcHJvamVjdHMgaW5jbHVkZSBhZmZvcmRhYmxlIGhvdXNpbmcgY29tcG9uZW50cyBhbmQgdGhhdCBtZWFzdXJlcyBhcmUgaW4gcGxhY2UgdG8gcHJvdGVjdCB2dWxuZXJhYmxlIHBvcHVsYXRpb25zIGZyb20gZGlzcGxhY2VtZW50IChXaWxzb24gJiBDb25nLCAyMDIxKS4NCg0KIyMgRmluYW5jaWFsIExpdGVyYWN5IGFuZCBIb3VzaW5nIFByb2dyYW0gUHJvcG9zYWwNCg0KQXMgcGFydCBvZiB0aGUgY29tcHJlaGVuc2l2ZSBzdHJhdGVneSB0byBjb21iYXQgaG9tZWxlc3NuZXNzLCBhIGZpbmFuY2lhbCBsaXRlcmFjeSBhbmQgaG91c2luZyBwcm9ncmFtIGNvdWxkIGJlIGludHJvZHVjZWQuIFRoaXMgcHJvZ3JhbSB3b3VsZCBwYXJ0bmVyIHdpdGggbG9jYWwgb3JnYW5pemF0aW9ucyB0byBvZmZlciBmaW5hbmNpYWwgZWR1Y2F0aW9uLCBqb2IgdHJhaW5pbmcsIGFuZCB0ZW1wb3JhcnkgaG91c2luZywgaGVscGluZyBpbmRpdmlkdWFscyBnYWluIHRoZSBza2lsbHMgYW5kIHN0YWJpbGl0eSBuZWVkZWQgdG8gdHJhbnNpdGlvbiBvdXQgb2YgaG9tZWxlc3NuZXNzLiBLZXkgY29tcG9uZW50cyB3b3VsZCBpbmNsdWRlOg0KDQotIEZpbmFuY2lhbCBMaXRlcmFjeSBFZHVjYXRpb246IFRlYWNoaW5nIGluZGl2aWR1YWxzIGhvdyB0byBidWRnZXQsIG1hbmFnZSBkZWJ0LCBhbmQgc2F2ZSBmb3IgZnV0dXJlIGdvYWxzLg0KDQotIEpvYiBUcmFpbmluZyBhbmQgUGxhY2VtZW50OiBQcm92aWRpbmcgc2tpbGxzIGRldmVsb3BtZW50IGFuZCBqb2IgcGxhY2VtZW50IHNlcnZpY2VzIHRvIGhlbHAgcGFydGljaXBhbnRzIHNlY3VyZSBzdGFibGUgZW1wbG95bWVudC4NCg0KLSBUZW1wb3JhcnkgSG91c2luZzogT2ZmZXJpbmcgYSBzdGFibGUgZW52aXJvbm1lbnQgd2hlcmUgaW5kaXZpZHVhbHMgY2FuIGZvY3VzIG9uIHByb2dyYW0gZ29hbHMuDQoNCi0gQ2FzZSBNYW5hZ2VtZW50OiBQcm92aWRpbmcgcGVyc29uYWxpemVkIHN1cHBvcnQgYW5kIGd1aWRhbmNlIHRvIGhlbHAgaW5kaXZpZHVhbHMgbmF2aWdhdGUgY2hhbGxlbmdlcyBhbmQgYWNoaWV2ZSB0aGVpciBnb2Fscy4NCg0KLSBNZW50YWwgSGVhbHRoIGFuZCBTdWJzdGFuY2UgQWJ1c2UgVHJlYXRtZW50OiBFbnN1cmluZyBhY2Nlc3MgdG8gbmVjZXNzYXJ5IHRyZWF0bWVudCBzZXJ2aWNlcy4NCg0KQnkgYWRkcmVzc2luZyBib3RoIHRoZSBpbW1lZGlhdGUgYW5kIGxvbmctdGVybSBuZWVkcyBvZiBob21lbGVzcyBpbmRpdmlkdWFscywgdGhpcyBwcm9ncmFtIHdvdWxkIG9mZmVyIGEgcGF0aHdheSBvdXQgb2YgaG9tZWxlc3NuZXNzIHdoaWxlIGFsc28gYWRkcmVzc2luZyB0aGUgc3lzdGVtaWMgaXNzdWVzIHRoYXQgY29udHJpYnV0ZSB0byBpdC4NCg0KIyMgQ29uY2x1c2lvbg0KDQpIb21lbGVzc25lc3MgaW4gV2FzaGluZ3RvbiwgREMsIGlzIGEgY29tcGxleCBpc3N1ZSB0aGF0IHJlcXVpcmVzIGEgY29tcHJlaGVuc2l2ZSwgZGF0YS1kcml2ZW4gYXBwcm9hY2guIEJ5IGluY3JlYXNpbmcgYWZmb3JkYWJsZSBob3VzaW5nLCBleHBhbmRpbmcgc3VwcG9ydGl2ZSBzZXJ2aWNlcywgYW5kIGFkZHJlc3NpbmcgdGhlIHJvb3QgY2F1c2VzIG9mIGhvbWVsZXNzbmVzcywgdGhlIGNpdHkgY2FuIG1ha2UgbWVhbmluZ2Z1bCBwcm9ncmVzcyBpbiByZWR1Y2luZyBob21lbGVzc25lc3MgYW5kIGltcHJvdmluZyB0aGUgcXVhbGl0eSBvZiBsaWZlIGZvciBpdHMgbW9zdCB2dWxuZXJhYmxlIHJlc2lkZW50cy4NCg0KIyBBc3Nlc3NpbmcgdGhlIENpdmljIFRlY2ggSW5pdGlhdGl2ZSBmb3IgSG9tZWxlc3NuZXNzIGluIFdhc2hpbmd0b24sIERDDQoNCiMjIEFsaWdubWVudCB3aXRoIENpdmljIFRlY2hub2xvZ3kgQXR0cmlidXRlcw0KDQpUaGUgcHJvcG9zZWQgaG9tZWxlc3NuZXNzIHJlc291cmNlIGFwcGxpY2F0aW9uIGFsaWducyB3aXRoIHNldmVyYWwga2V5IGF0dHJpYnV0ZXMgb2YgY2l2aWMgdGVjaG5vbG9neSwgYXMgb3V0bGluZWQgaW4gdGhlIHJlYWRpbmdzLiBCeSBlbXBvd2VyaW5nIGhvbWVsZXNzIGluZGl2aWR1YWxzIHRvIGRpcmVjdGx5IHJlcXVlc3Qgc2VydmljZXMgYW5kIHByb3ZpZGUgZmVlZGJhY2ssIHRoZSBhcHAgaW52b2x2ZXMgY2l0aXplbnMgaW4gYm90aCB0aGUgcG9saWN5IHByb2Nlc3MgYW5kIHNlcnZpY2UgZGVsaXZlcnkgKE1hxI1pdWxpZW7ElyAmIFNrYXLFvmF1c2tpZW7ElywgMjAyMCleW01hxI1pdWxpZW7ElywgTW9uaWthLCBhbmQgU2thcsW+YXVza2llbsSXLCBBZWxpdGEuIOKAnEJ1aWxkaW5nIHRoZSBDYXBhY2l0aWVzIG9mIENpdmljIFRlY2ggQ29tbXVuaXRpZXMgdGhyb3VnaCBEaWdpdGFsIERhdGEgQW5hbHl0aWNzLuKAnSBKb3VybmFsIG9mIElubm92YXRpb24gJmFtcDsgS25vd2xlZGdlIDUsIG5vLiA0IChPY3RvYmVyIDIwMjApOiAyNDTigJM1MC4gaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTYvai5qaWsuMjAxOS4xMS4wMDVdLiBUaGlzIGZvc3RlcnMgYSBtb3JlIHBhcnRpY2lwYXRvcnkgYW5kIGRlbW9jcmF0aWMgYXBwcm9hY2ggdG8gYWRkcmVzc2luZyBob21lbGVzc25lc3MuDQoNCk1vcmVvdmVyLCB0aGUgYXBwIGxldmVyYWdlcyB0ZWNobm9sb2d5IHRvIGNvbGxlY3QgYW5kIGFuYWx5emUgZGF0YSBvbiB0aGUgbmVlZHMgb2YgaG9tZWxlc3MgaW5kaXZpZHVhbHMgYW5kIHRoZSBhdmFpbGFiaWxpdHkgb2YgcmVzb3VyY2VzLiBUaGlzIGRhdGEtZHJpdmVuIGFwcHJvYWNoIGVuc3VyZXMgdGhhdCBkZWNpc2lvbnMgYXJlIGluZm9ybWVkIGJ5IGV2aWRlbmNlIGFuZCBjYW4gbGVhZCB0byBtb3JlIGVmZmVjdGl2ZSBhbmQgdGFyZ2V0ZWQgaW50ZXJ2ZW50aW9ucy4NCg0KVGhlIGFwcCBhbHNvIHByb21vdGVzIHRyYW5zcGFyZW5jeSBhbmQgYWNjb3VudGFiaWxpdHkgYnkgbWFraW5nIGluZm9ybWF0aW9uIGFib3V0IHJlc291cmNlcyBhbmQgc2VydmljZSBkZWxpdmVyeSBtb3JlIGFjY2Vzc2libGUgdG8gdGhlIHB1YmxpYy4gVGhpcyBlbXBvd2VycyBob21lbGVzcyBpbmRpdmlkdWFscyB0byBob2xkIHNlcnZpY2UgcHJvdmlkZXJzIGFjY291bnRhYmxlIGFuZCBhZHZvY2F0ZSBmb3IgaW1wcm92ZW1lbnRzLg0KDQpJbiBhZGRpdGlvbiwgdGhlIGFwcCBkZW1vY3JhdGl6ZXMgcHJldmlvdXNseSBlbGl0ZSBwcm9jZXNzZXMgYnkgcHJvdmlkaW5nIGEgY29udmVuaWVudCBhbmQgdXNlci1mcmllbmRseSBwbGF0Zm9ybSBmb3IgaG9tZWxlc3MgaW5kaXZpZHVhbHMgdG8gYWNjZXNzIHJlc291cmNlcyBhbmQgc2VydmljZXMuIFRoaXMgaGVscHMgdG8gYnJlYWsgZG93biBiYXJyaWVycyBhbmQgZW5zdXJlIHRoYXQgZXZlcnlvbmUgaGFzIGVxdWFsIG9wcG9ydHVuaXRpZXMgdG8gcmVjZWl2ZSBhc3Npc3RhbmNlLg0KDQojIyBBbGlnbm1lbnQgd2l0aCBDaXZpYyBUZWNoIFRvb2xzIGFuZCBQaWxsYXJzDQoNClRoZSBwcm9wb3NlZCBpbml0aWF0aXZlIGFsc28gYWxpZ25zIHdpdGggdGhlIHR5cGVzIG9mIGNpdmljIHRlY2ggdG9vbHMgYXZhaWxhYmxlIGFuZCB0aGUgdGhyZWUgbWFpbiBwaWxsYXJzIG9mIGNpdmljIHRlY2hub2xvZ3k6DQoNCi0gQ2l2aWMgdGVjaCB0b29sczogVGhlIGFwcCB3b3VsZCB1dGlsaXplIGEgY29tYmluYXRpb24gb2YgbW9iaWxlIHRlY2hub2xvZ3ksIGRhdGEgYW5hbHl0aWNzLCBBSSwgYW5kIHBvdGVudGlhbGx5IGJsb2NrY2hhaW4sIHdoaWNoIGFyZSBhbGwgY29tbW9uIHRvb2xzIGluIHRoZSBjaXZpYyB0ZWNoIHNlY3Rvci4NCi0gVGhyZWUgcGlsbGFycyBvZiBjaXZpYyB0ZWNobm9sb2d5OiBUaGUgaW5pdGlhdGl2ZSBhbGlnbnMgd2l0aCB0aGUgdGhyZWUgcGlsbGFycyBvZiBjaXZpYyB0ZWNobm9sb2d5Og0KUGFydGljaXBhdGlvbjogVGhlIGFwcCB3b3VsZCBpbnZvbHZlIGhvbWVsZXNzIGluZGl2aWR1YWxzIGluIHRoZSBwb2xpY3kgcHJvY2VzcyBhbmQgc2VydmljZSBkZWxpdmVyeS4NCiAgICAtIFRyYW5zcGFyZW5jeTogVGhlIGFwcCB3b3VsZCBpbmNyZWFzZSB0cmFuc3BhcmVuY3kgYnkgcHJvdmlkaW5nIGFjY2VzcyB0byBpbmZvcm1hdGlvbiBhYm91dCByZXNvdXJjZXMgYW5kIHNlcnZpY2VzLg0KICAgIC0gQWNjb3VudGFiaWxpdHk6IFRoZSBhcHAgd291bGQgZW1wb3dlciBob21lbGVzcyBpbmRpdmlkdWFscyB0byBob2xkIHNlcnZpY2UgcHJvdmlkZXJzIGFjY291bnRhYmxlLg0KICAgIA0KVGhlIHByb3Bvc2VkIGhvbWVsZXNzbmVzcyByZXNvdXJjZSBhcHBsaWNhdGlvbiBhbGlnbnMgd2l0aCB0aGUga2V5IGF0dHJpYnV0ZXMgb2YgY2l2aWMgdGVjaG5vbG9neSwgdGhlIHR5cGVzIG9mIHRvb2xzIGF2YWlsYWJsZSwgYW5kIHRoZSB0aHJlZSBtYWluIHBpbGxhcnMgb2YgY2l2aWMgdGVjaG5vbG9neS4gSXQgaGFzIHRoZSBwb3RlbnRpYWwgdG8gc2lnbmlmaWNhbnRseSBpbXByb3ZlIHRoZSBsaXZlcyBvZiBob21lbGVzcyBpbmRpdmlkdWFscyBpbiBXYXNoaW5ndG9uLCBEQyBieSBwcm92aWRpbmcgdGhlbSB3aXRoIGFjY2VzcyB0byByZXNvdXJjZXMsIGVtcG93ZXJpbmcgdGhlbSB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgcG9saWN5IHByb2Nlc3MsIGFuZCBpbmNyZWFzaW5nIHRyYW5zcGFyZW5jeSBhbmQgYWNjb3VudGFiaWxpdHkgaW4gdGhlIGRlbGl2ZXJ5IG9mIHNlcnZpY2VzLg0KDQojIyBDaXZpYyBUZWNoIEluaXRpYXRpdmU6IE9wZW4gUmVmZXJyYWwNCg0KT3BlbiBSZWZlcnJhbCwgYW4gb3Blbi1zb3VyY2UgZGF0YSBzdGFuZGFyZCBhbmQgcGxhdGZvcm0gZGVzaWduZWQgdG8gaW1wcm92ZSB0aGUgZmluZGFiaWxpdHkgYW5kIGFjY2Vzc2liaWxpdHkgb2YgY29tbXVuaXR5IHJlc291cmNlc15bT3BlbiBSZWZlcnJhbCwgaHR0cHM6Ly9vcGVucmVmZXJyYWwub3JnL10uIE9wZW4gUmVmZXJyYWwgcHJvdmlkZXMgYSBzdGFuZGFyZGl6ZWQgd2F5IHRvIGRlc2NyaWJlIGFuZCBzaGFyZSBpbmZvcm1hdGlvbiBhYm91dCBoZWFsdGgsIGh1bWFuLCBhbmQgc29jaWFsIHNlcnZpY2VzLCBtYWtpbmcgaXQgZWFzaWVyIGZvciBwZW9wbGUgaW4gbmVlZCB0byBmaW5kIHRoZSBoZWxwIHRoZXkgcmVxdWlyZS4NCg0KVGhlIG9yaWdpbmFsIHB1cnBvc2Ugb2YgT3BlbiBSZWZlcnJhbCB3YXMgdG8gYWRkcmVzcyB0aGUgcHJvYmxlbSBvZiBmcmFnbWVudGVkIGFuZCBpbmFjY2Vzc2libGUgaW5mb3JtYXRpb24gYWJvdXQgY29tbXVuaXR5IHJlc291cmNlcy4gIE1hbnkgaW5kaXZpZHVhbHMsIHBhcnRpY3VsYXJseSB0aG9zZSBleHBlcmllbmNpbmcgaG9tZWxlc3NuZXNzIG9yIGZhY2luZyBvdGhlciBjaGFsbGVuZ2VzLCBzdHJ1Z2dsZSB0byBmaW5kIHRoZSBzZXJ2aWNlcyB0aGV5IG5lZWQgZHVlIHRvIGEgbGFjayBvZiBjZW50cmFsaXplZCBhbmQgZWFzaWx5IGFjY2Vzc2libGUgaW5mb3JtYXRpb24uIE9wZW4gUmVmZXJyYWwgYWltcyB0byBzb2x2ZSB0aGlzIHByb2JsZW0gYnkgcHJvdmlkaW5nIGEgc3RhbmRhcmRpemVkIGRhdGEgZm9ybWF0IGFuZCBwbGF0Zm9ybSBmb3Igc2hhcmluZyBpbmZvcm1hdGlvbiBhYm91dCBzZXJ2aWNlcywgbWFraW5nIGl0IGVhc2llciBmb3IgcGVvcGxlIHRvIHNlYXJjaCwgZmlsdGVyLCBhbmQgY29ubmVjdCB3aXRoIHJlbGV2YW50IHJlc291cmNlcy4NCg0KT3BlbiBSZWZlcnJhbCB1dGlsaXplcyBzdHJ1Y3R1cmVkIGRhdGEgdG8gZGVzY3JpYmUgY29tbXVuaXR5IHNlcnZpY2VzLCBpbmNsdWRpbmcgaW5mb3JtYXRpb24gc3VjaCBhczoNCg0KLSBOYW1lIGFuZCBkZXNjcmlwdGlvbiBvZiB0aGUgc2VydmljZQ0KLSBMb2NhdGlvbiAoYWRkcmVzcywgbGF0aXR1ZGUsIGxvbmdpdHVkZSkNCi0gQ29udGFjdCBpbmZvcm1hdGlvbiAocGhvbmUsIGVtYWlsLCB3ZWJzaXRlKQ0KLSBFbGlnaWJpbGl0eSBjcml0ZXJpYQ0KLSBTZXJ2aWNlIGhvdXJzDQotIExhbmd1YWdlcyBzcG9rZW4NCi0gQWNjZXNzaWJpbGl0eSBmZWF0dXJlcw0KDQpUaGlzIHN0cnVjdHVyZWQgZGF0YSBhbGxvd3MgZm9yIGVmZmljaWVudCBzZWFyY2hpbmcgYW5kIGZpbHRlcmluZyBvZiBzZXJ2aWNlcyBiYXNlZCBvbiBpbmRpdmlkdWFsIG5lZWRzIGFuZCBwcmVmZXJlbmNlcy4gVGhpcyBzdGFuZGFyZGl6ZWQgZGF0YSBlbnN1cmVzIGNvbnNpc3RlbmN5IGFjcm9zcyBzeXN0ZW1zIGFuZCBmYWNpbGl0YXRlcyByZXNvdXJjZSBtYXBwaW5nLiBBZGR0aW9uYWxseSwgT3BlbiBSZWZlcnJhbCBpcyBidWlsdCBvbiBvcGVuLXNvdXJjZSB0ZWNobm9sb2dpZXMgYW5kIHN0YW5kYXJkcywgaW5jbHVkaW5nOg0KDQotIEh1bWFuIFNlcnZpY2VzIERhdGEgU3BlY2lmaWNhdGlvbiAoSFNEUyk6ICBBIHN0YW5kYXJkaXplZCBkYXRhIGZvcm1hdCBmb3IgZGVzY3JpYmluZyBodW1hbiBzZXJ2aWNlcy4NCi0gT3BlbiBSZWZlcnJhbCBEYXRhYmFzZSAoT1JEKTogIEEgZGF0YWJhc2Ugc2NoZW1hIGZvciBzdG9yaW5nIGFuZCBtYW5hZ2luZyBodW1hbiBzZXJ2aWNlcyBkYXRhLg0KLSBWYXJpb3VzIEFQSXMgYW5kIHRvb2xzOiAgT3BlbiBSZWZlcnJhbCBlbXBsb3lzIHRvb2xzIGxpa2UgSlNPTiwgUHl0aG9uLCBhbmQgUkVTVGZ1bCBBUElzIHRvIGVuYWJsZSBpbnRlcm9wZXJhYmlsaXR5IGFjcm9zcyBwbGF0Zm9ybXMuDQoNClRoZSBwbGF0Zm9ybSdzIG9wZW4tc291cmNlIG5hdHVyZSBwcm9tb3RlcyB0cmFuc3BhcmVuY3ksIGNvbGxhYm9yYXRpb24sIGFuZCBjb21tdW5pdHktZHJpdmVuIGRldmVsb3BtZW50Lg0KDQojIyMgQWRhcHRhdGlvbg0KDQpUbyBhZGFwdCBPcGVuIFJlZmVycmFsIGZvciBhZGRyZXNzaW5nIGhvbWVsZXNzbmVzcyBpbiBXYXNoaW5ndG9uLCBEQywgZGF0YSB3aWxsIG5lZWQgdG8gYmUgZ2F0aGVyZWQgb24gYWxsIGhvbWVsZXNzIHNlcnZpY2VzIGluIERDLCBlbnN1cmluZyBpdCBhZGhlcmVzIHRvIHRoZSBPcGVuIFJlZmVycmFsIHN0YW5kYXJkcy4gVGhpcyBtYXkgaW52b2x2ZSBjb2xsYWJvcmF0aW5nIHdpdGggdmFyaW91cyBzZXJ2aWNlIHByb3ZpZGVycyBhbmQgZ292ZXJubWVudCBhZ2VuY2llcyB0byBjb2xsZWN0IGFuZCBzdGFuZGFyZGl6ZSB0aGVpciBkYXRhLiANCg0KQWRkaXRpb25hbGx5LCBjdXN0b21pemluZyB0aGUgT3BlbiBSZWZlcnJhbCBwbGF0Zm9ybSB0byBtZWV0IHRoZSBzcGVjaWZpYyBuZWVkcyBvZiB0aGUgREMgaG9tZWxlc3MgcG9wdWxhdGlvbiB3b3VsZCBwcm92ZSBiZW5lZmljaWFsLiBUaGlzIGNvdWxkIGluY2x1ZGUgZGV2ZWxvcGluZyBhIHVzZXItZnJpZW5kbHkgaW50ZXJmYWNlIHRhaWxvcmVkIHRvIGluZGl2aWR1YWxzIGV4cGVyaWVuY2luZyBob21lbGVzc25lc3MsIGluY29ycG9yYXRpbmcgZmVhdHVyZXMgbGlrZSBtb2JpbGUgYWNjZXNzaWJpbGl0eSBhbmQgbXVsdGlsaW5ndWFsIHN1cHBvcnQuIEhvd2V2ZXIsIE9wZW4gUmVmZXJyYWwgcGxhdGZvcm0gd291bGQgbmVlZCB0byBpbnRlZ3JhdGUgd2l0aCBleGlzdGluZyBkYXRhIHN5c3RlbXMgaW4gREMsIHN1Y2ggYXMgdGhlIEhvbWVsZXNzIE1hbmFnZW1lbnQgSW5mb3JtYXRpb24gU3lzdGVtIChITUlTKSBhbmQgdGhlIDMxMSBzZXJ2aWNlIHJlcXVlc3Qgc3lzdGVtLiBUaGlzIHdvdWxkIGVuYWJsZSBzZWFtbGVzcyBkYXRhIHNoYXJpbmcgYW5kIGNvb3JkaW5hdGlvbiBvZiBzZXJ2aWNlcy4NCg0KQnkgYWRhcHRpbmcgT3BlbiBSZWZlcnJhbCwgV2FzaGluZ3RvbiwgREMgY2FuIGxldmVyYWdlIGEgcHJvdmVuIGNpdmljIHRlY2ggdG9vbCB0byBjb25kdWN0IG91dHJlYWNoIHRvIGhvbWVsZXNzIGluZGl2aWR1YWxzIGFuZCBzZXJ2aWNlIHByb3ZpZGVycyB0byBwcm9tb3RlIHRoZSB1c2Ugb2YgdGhlIHBsYXRmb3JtIGFuZCBlbnN1cmUgaXRzIGVmZmVjdGl2ZW5lc3MgaW4gY29ubmVjdGluZyBwZW9wbGUgd2l0aCB0aGUgcmVzb3VyY2VzIHRoZXkgbmVlZC4gVGhpcyB3b3VsZCBlbmhhbmNlIHRoZSBlZmZlY3RpdmVuZXNzIG9mIGhvbWVsZXNzbmVzcyBwcmV2ZW50aW9uIGFuZCBpbnRlcnZlbnRpb24gZWZmb3J0cy4gVGhlIHByb3Bvc2VkIGNoYW5nZXMgYWxpZ24gd2l0aCB0aGUga2V5IGF0dHJpYnV0ZXMgb2YgY2l2aWMgdGVjaG5vbG9neSBhbmQgY2FuIGFkZHJlc3MgdGhlIHNwZWNpZmljIG5lZWRzIG9mIHRoZSBob21lbGVzcyBwb3B1bGF0aW9uLg0KDQojIyMgQ2hhbmdlcyB0byBPcGVuIFJlZmVycmFsIERlc2lnbg0KDQpJbiBhZGRpdGlvbiB0byB0aGUgYWRhcHRhdGlvbnMgbWVudGlvbmVkIGFib3ZlLCBhZGFwdCBPcGVuIFJlZmVycmVhbCBmb3IgdGhlIEhvbWVsZXNzbmVzcyBSZXNvdXJjZSBBcHBsaWNhdGlvbiwgdGhlIGZvbGxvd2luZyBkZXNpZ24gY2hhbmdlcyBjb3VsZCBlbmhhbmNlIE9wZW4gUmVmZXJyYWwgZm9yIHVzZSBpbiBXYXNoaW5ndG9uLCBEQy4gDQoNCi0gUmVhbC10aW1lIGF2YWlsYWJpbGl0eTogIEludGVncmF0ZSB3aXRoIHNoZWx0ZXIgbWFuYWdlbWVudCBzeXN0ZW1zIHRvIHByb3ZpZGUgcmVhbC10aW1lIGluZm9ybWF0aW9uIG9uIGJlZCBhdmFpbGFiaWxpdHkuDQotIFBlcnNvbmFsaXplZCByZWNvbW1lbmRhdGlvbnM6ICBVc2UgQUkgdG8gcHJvdmlkZSBwZXJzb25hbGl6ZWQgcmVjb21tZW5kYXRpb25zIGZvciBzZXJ2aWNlcyBiYXNlZCBvbiBpbmRpdmlkdWFsIG5lZWRzIGFuZCBwcmVmZXJlbmNlcy4NCi0gQUktUG93ZXJlZCBDaGF0Ym90IFN1cHBvcnQ6IEltcGxlbWVudCBhbiBBSSBjaGF0Ym90IHRvIGFzc2lzdCB1c2VycyBpbiByZWFsLXRpbWUsIGFuc3dlciBxdWVzdGlvbnMsIGFuZCBndWlkZSB0aGVtIHRocm91Z2ggc2VydmljZSByZXF1ZXN0cy4NCi0gT2ZmbGluZSBhY2Nlc3M6ICBFbmFibGUgb2ZmbGluZSBhY2Nlc3MgdG8gZXNzZW50aWFsIGluZm9ybWF0aW9uIGZvciB1c2VycyB3aG8gbWF5IG5vdCBoYXZlIGNvbnNpc3RlbnQgaW50ZXJuZXQgY29ubmVjdGl2aXR5Lg0KLSBNb2JpbGUtRmlyc3QgRGVzaWduOiBSZWRlc2lnbiB0aGUgdXNlciBpbnRlcmZhY2UgdG8gYmUgbW9iaWxlLWZyaWVuZGx5IGFuZCByZXNwb25zaXZlLCBlbnN1cmluZyBzZWFtbGVzcyBuYXZpZ2F0aW9uIGFuZCBmdW5jdGlvbmFsaXR5IG9uIHNtYWxsZXIgc2NyZWVucy4NCi0gSW50ZWdyYXRpb24gd2l0aCBFeGlzdGluZyBTb2NpYWwgU2VydmljZSBOZXR3b3JrczogQ3JlYXRlIEFQSXMgb3IgY29ubmVjdG9ycyB0byBhbGxvdyBzZWFtbGVzcyBkYXRhIHNoYXJpbmcgYW5kIHJlZmVycmFscyBiZXR3ZWVuIHRoZSBhcHAgYW5kIGV4aXN0aW5nIHNvY2lhbCBzZXJ2aWNlIG9yZ2FuaXphdGlvbnMuDQotIElvVCBJbnRlZ3JhdGlvbiBmb3IgU21hcnQgU2hlbHRlcnM6IEluY29ycG9yYXRlIElvVCBzZW5zb3JzIGluIHNoZWx0ZXJzIHRvIHRyYWNrIG9jY3VwYW5jeSBhbmQgYXZhaWxhYmlsaXR5IG9mIGJlZHMsIHByb3ZpZGluZyByZWFsLXRpbWUgaW5mb3JtYXRpb24gdG8gdXNlcnMuDQotIFByZWRpY3RpdmUgQW5hbHl0aWNzIGZvciBBdC1SaXNrIEluZGl2aWR1YWxzOiBVc2UgcHJlZGljdGl2ZSBhbmFseXRpY3MgdG8gaWRlbnRpZnkgaW5kaXZpZHVhbHMgYXQgcmlzayBvZiBob21lbGVzc25lc3MgYW5kIHRyaWdnZXIgZWFybHkgaW50ZXJ2ZW50aW9ucy4NCg0KQnkgaW1wbGVtZW50aW5nIHRoZXNlIGNoYW5nZXMsIHRoZSBIb21lbGVzc25lc3MgUmVzb3VyY2UgQXBwbGljYXRpb24gY2FuIGJlY29tZSBhIHBvd2VyZnVsIHRvb2wgZm9yIGFkZHJlc3NpbmcgdGhlIG5lZWRzIG9mIGhvbWVsZXNzIGluZGl2aWR1YWxzIGluIFdhc2hpbmd0b24sIERDLg0KDQojIFBvbGljeSBMaXRlcmF0dXJlIFJldmlldw0KDQojIyBJbnRyb2R1Y3Rpb24NCg0KSG9tZWxlc3NuZXNzIHBvc2VzIGEgcHJlc3Npbmcgc29jaWV0YWwgY29uY2VybiBuZWNlc3NpdGF0aW5nIGRlbGliZXJhdGUsIG1ldGhvZGljYWwgc29sdXRpb25zLiBUaGlzIGVzc2F5IGRlbHZlcyBpbnRvIGZvdXIgYWNhZGVtaWMgYXJ0aWNsZXMgZXhhbWluaW5nIHN0cmF0ZWdpZXMgdG8gdGFja2xlIGhvbWVsZXNzbmVzcywgZHJhd2luZyBvbiByZXNlYXJjaCBwcmluY2lwbGVzIGZyb20gUG9saXRpY2FsIFNjaWVuY2UgUmVzZWFyY2ggTWV0aG9kcyBieSBKYW5ldCBCdXR0b2xwaCBKb2huc29uIGFuZCBILlQuIFJleW5vbGRzLiBTcGVjaWZpY2FsbHksIGl0IHV0aWxpemVzIENoYXB0ZXJzIDQgYW5kIDYgb24gY29uY2VwdHMsIHZhcmlhYmxlcywgaHlwb3RoZXNlcywgYW5kIHJlc2VhcmNoIGRlc2lnbiwgYWxvbmdzaWRlIGluc2lnaHRzIGZyb20gdGhlIENpdmljIFRlY2hub2xvZ2lzdOKAmXMgUHJhY3RpY2UgR3VpZGUgKENUUEcpIENoYXB0ZXJzIDUgYW5kIDksIGZvY3VzaW5nIG9uIGlubm92YXRpb24gaW4gcHVibGljIHBvbGljeS4NCg0KRWFjaCBhcnRpY2xlIHVuZGVyIHJldmlldyB3aWxsIGJlIHNjcnV0aW5pemVkIHRocm91Z2ggdGhlIGxlbnMgb2Ygc29jaWFsIHNjaWVuY2UgcmVzZWFyY2gsIHdpdGggZW1waGFzaXMgb24gY29uY2VwdHMgbGlrZSBwcm9hY3RpdmUgc3RyYXRlZ2llcywgc2VydmljZSBpbnRlZ3JhdGlvbiwgcHJldmVudGlvbiwgYW5kIGVmZmljaWVudCB0YXJnZXRpbmcuIFRoZSBlc3NheSB3aWxsIGRpc3NlY3QgaG93IHRoZXNlIGNvbmNlcHRzIGFyZSBkZWZpbmVkLCBvcGVyYXRpb25hbGl6ZWQsIGFuZCBlbXBsb3llZCB0byBlc3RhYmxpc2ggY2F1c2FsaXR5IHdpdGhpbiB0aGUgZnJhbWV3b3JrIG9mIHRoZSByZXNlYXJjaCBkZXNpZ25zIHByZXNlbnRlZC4NCg0KIyMgQXJ0aWNsZSAxOiBNYWtpbmcgdGhlIENhc2UgZm9yIFByb2FjdGl2ZSBTdHJhdGVnaWVzIHRvIEFsbGV2aWF0ZSBIb21lbGVzc25lc3M6IEEgU3lzdGVtcyBBcHByb2FjaA0KDQpOb3VyYXphcmksIExvdmF0bywgYW5kIFdlbmcgY2hhbXBpb24gcHJvYWN0aXZlLCBzeXN0ZW1zLWJhc2VkIHN0cmF0ZWdpZXMgdG8gdGFja2xlIGhvbWVsZXNzbmVzcy4gVGhleSBkZWZpbmUgYSAicHJvYWN0aXZlIHN0cmF0ZWd5IiBhcyBhbnkgaW50ZXJ2ZW50aW9uIHRhcmdldGluZyByb290IGNhdXNlcyBvZiBob21lbGVzc25lc3MgbGlrZSBwb3ZlcnR5IG9yIGxhY2sgb2YgYWZmb3JkYWJsZSBob3VzaW5nLCBiZWZvcmUgaW5kaXZpZHVhbHMgYmVjb21lIGhvbWVsZXNzXltOb3VyYXphcmksIFNhcmEsIEtyaXN0aW5hIExvdmF0bywgYW5kIFN1emllIFMuIFdlbmcuICJNYWtpbmcgdGhlIENhc2UgZm9yIFByb2FjdGl2ZSBTdHJhdGVnaWVzIHRvIEFsbGV2aWF0ZSBIb21lbGVzc25lc3M6IEEgU3lzdGVtcyBBcHByb2FjaC4iIEpvdXJuYWwgb2YgSG9tZWxlc3NuZXNzIFN0dWRpZXMgNDUsIG5vLiAyICgyMDIwKTogMTIzLTE0Ny5dLiBUaGUgc3lzdGVtcyBhcHByb2FjaCBlbXBoYXNpemVzIHRoZSBpbnRlcmNvbm5lY3RlZCBuYXR1cmUgb2YgaG9tZWxlc3NuZXNzLCByZXF1aXJpbmcgY29vcmRpbmF0ZWQgZWZmb3J0cyBhY3Jvc3MgbXVsdGlwbGUgYWdlbmNpZXMgYW5kIHNlcnZpY2UgcHJvdmlkZXJzLg0KDQpUbyBtZWFzdXJlIHRoZXNlIGNvbmNlcHRzLCB0aGUgYXV0aG9ycyBlbXBsb3kgdmFyaWFibGVzIHN1Y2ggYXMgdGhlIG51bWJlciBvZiBlYXJseSBpbnRlcnZlbnRpb24gcHJvZ3JhbXMsIGJ1ZGdldCBhbGxvY2F0ZWQgdG8gcHJldmVudGlvbiwgYW5kIHRoZSBsZXZlbCBvZiBpbnRlcmFnZW5jeSBjb2xsYWJvcmF0aW9uLiBUaGUgZGVwZW5kZW50IHZhcmlhYmxlLCBvciB0aGUgb3V0Y29tZSB0aGV5IGFpbSB0byBpbmZsdWVuY2UsIGlzIHRoZSBob21lbGVzc25lc3MgcmF0ZSBpbiBhIGdpdmVuIHJlZ2lvbi4gVGhlaXIgY2VudHJhbCBoeXBvdGhlc2lzIHBvc2l0cyB0aGF0IHJlZ2lvbnMgaW1wbGVtZW50aW5nIHByb2FjdGl2ZSwgc3lzdGVtcy1iYXNlZCBhcHByb2FjaGVzIHdpbGwgZXhwZXJpZW5jZSBhIG1vcmUgc2lnbmlmaWNhbnQgZGVjcmVhc2UgaW4gaG9tZWxlc3NuZXNzIGNvbXBhcmVkIHRvIHRob3NlIHJlbHlpbmcgb24gcmVhY3RpdmUgbWVhc3VyZXMuDQoNClRoZSBzdHVkeSBmb2N1c2VzIG9uIHJlZ2lvbnMgb3IgY2l0aWVzIGFzIGl0cyB1bml0cyBvZiBhbmFseXNpcywgY29sbGVjdGluZyBob21lbGVzc25lc3MgZGF0YSBhY3Jvc3MgZGlmZmVyZW50IGdlb2dyYXBoaWMgYXJlYXMuIEhvbWVsZXNzbmVzcyByYXRlcyBhcmUgbWVhc3VyZWQgb24gYW4gaW50ZXJ2YWwgc2NhbGUsIGVuYWJsaW5nIG1lYW5pbmdmdWwgY29tcGFyaXNvbnMgYWNyb3NzIHJlZ2lvbnMgYW5kIHRpbWUsIHdoaWNoIGlzIHZpdGFsIGZvciBlc3RhYmxpc2hpbmcgY2F1c2FsaXR5IGFzIHBlciBDaGFwdGVyIDYgb2YgUG9saXRpY2FsIFNjaWVuY2UgUmVzZWFyY2ggTWV0aG9kcy4gQWRkaXRpb25hbGx5LCBjb250cm9sIHZhcmlhYmxlcyBzdWNoIGFzIGVjb25vbWljIGNvbmRpdGlvbnMgYW5kIHBvcHVsYXRpb24gZGVuc2l0eSBhcmUgaW5jbHVkZWQgdG8gaXNvbGF0ZSB0aGUgc3BlY2lmaWMgaW1wYWN0IG9mIHByb2FjdGl2ZSBzdHJhdGVnaWVzLg0KDQpUaGUgc3R1ZHkncyBmaW5kaW5ncyB1bmRlcnNjb3JlIHRoZSBlZmZlY3RpdmVuZXNzIG9mIHByb2FjdGl2ZSBzdHJhdGVnaWVzLCBlc3BlY2lhbGx5IHdoZW4gY29tYmluZWQgd2l0aCBpbnRlcmFnZW5jeSBjb29yZGluYXRpb24sIGluIHJlZHVjaW5nIGhvbWVsZXNzbmVzcy4gVGhpcyBhbGlnbnMgd2l0aCB0aGUgQ2l2aWMgVGVjaG5vbG9naXN04oCZcyBQcmFjdGljZSBHdWlkZSdzIGVtcGhhc2lzIG9uIGNyb3NzLXNlY3RvciBjb2xsYWJvcmF0aW9uIGZvciB0YWNrbGluZyBjb21wbGV4IHNvY2lldGFsIHByb2JsZW1zLiBUaGUgc3lzdGVtcyBhcHByb2FjaCBwcm92aWRlcyBhIGhvbGlzdGljLCBpbm5vdmF0aXZlIHNvbHV0aW9uIGJ5IGRpc21hbnRsaW5nIHRoZSB0cmFkaXRpb25hbCBzaWxvcyB0aGF0IG9mdGVuIGhpbmRlciBob21lbGVzc25lc3MgaW50ZXJ2ZW50aW9ucy4NCg0KIyMgQXJ0aWNsZSAyOiBTZXJ2aWNlIEludGVncmF0aW9uIHRvIFJlZHVjZSBIb21lbGVzc25lc3MgaW4gTG9zIEFuZ2VsZXMgQ291bnR5OiBNdWx0aXBsZSBTdGFrZWhvbGRlciBQZXJzcGVjdGl2ZXMNCg0KR3VlcnJlcm8sIEhlbndvb2QsIGFuZCBXZW56ZWwgZGVsdmUgaW50byB0aGUgY29uY2VwdCBvZiAic2VydmljZSBpbnRlZ3JhdGlvbiIgYXMgYSBtZWFucyB0byBhbGxldmlhdGUgaG9tZWxlc3NuZXNzLiBUaGV5IGRlZmluZSBpdCBhcyB0aGUgY29vcmRpbmF0ZWQgcHJvdmlzaW9uIG9mIHNlcnZpY2VzIGFjcm9zcyBkaWZmZXJlbnQgYWdlbmNpZXMgdG8gaW1wcm92ZSBvdXRjb21lcyBmb3IgdGhvc2UgZXhwZXJpZW5jaW5nIGhvbWVsZXNzbmVzc15bR3VlcnJlcm8sIEVyaWNrIEcuLCBCZW5qYW1pbiBIZW53b29kLCBhbmQgU3V6YW5uZSBMLiBXZW56ZWwuICJTZXJ2aWNlIEludGVncmF0aW9uIHRvIFJlZHVjZSBIb21lbGVzc25lc3MgaW4gTG9zIEFuZ2VsZXMgQ291bnR5OiBNdWx0aXBsZSBTdGFrZWhvbGRlciBQZXJzcGVjdGl2ZXMuIiBKb3VybmFsIG9mIFNvY2lhbCBTZXJ2aWNlcyBSZXNlYXJjaCA1MCwgbm8uIDMgKDIwMjEpOiAyMzQtMjUxLl0uIFRoaXMgY29uY2VwdCBpcyBtZWFzdXJlZCB0aHJvdWdoIHZhcmlhYmxlcyBsaWtlIHRoZSBudW1iZXIgb2YgaW50ZWdyYXRlZCBzZXJ2aWNlIHByb2dyYW1zLCBzdGFrZWhvbGRlciBlbmdhZ2VtZW50LCBhbmQgaW50ZXItYWdlbmN5IGZ1bmRpbmcuDQoNClRoZSBzdHVkeSdzIGRlcGVuZGVudCB2YXJpYWJsZSBpcyB0aGUgcGVyY2VpdmVkIGVmZmVjdGl2ZW5lc3Mgb2YgaW50ZWdyYXRlZCBzZXJ2aWNlcyBhcyByYXRlZCBieSB2YXJpb3VzIHN0YWtlaG9sZGVycyBzdWNoIGFzIHBvbGljeW1ha2Vycywgc2VydmljZSBwcm92aWRlcnMsIGFuZCBub25wcm9maXRzLiBUaGUgaHlwb3RoZXNpcyB1bmRlciBleGFtaW5hdGlvbiBpcyB0aGF0IGluY3JlYXNlZCBzZXJ2aWNlIGludGVncmF0aW9uIHdpbGwgZW5oYW5jZSBob21lbGVzc25lc3Mgb3V0Y29tZXMsIHByaW1hcmlseSBieSBib29zdGluZyB0aGUgZWZmaWNpZW5jeSBhbmQgcmVzcG9uc2l2ZW5lc3Mgb2Ygc2VydmljZSBkZWxpdmVyeS4NCg0KVGhlIHVuaXQgb2YgYW5hbHlzaXMgaXMgc3Rha2Vob2xkZXJzLCB3aXRoIGRhdGEgY29sbGVjdGVkIHRocm91Z2ggc3VydmV5cyBhbmQgaW50ZXJ2aWV3cy4gU3Rha2Vob2xkZXIgcGVyY2VwdGlvbnMgYXJlIG1lYXN1cmVkIG9uIGFuIG9yZGluYWwgc2NhbGUsIGVuYWJsaW5nIHJlc2VhcmNoZXJzIHRvIHJhbmsgcmVzcG9uc2VzIGludG8gbWVhbmluZ2Z1bCBjYXRlZ29yaWVzLCBzdWl0YWJsZSBmb3IgYXNzZXNzaW5nIHN1YmplY3RpdmUgdmlld3MgYXMgcGVyIEpvaG5zb24gYW5kIFJleW5vbGRzICgyMDIwKV5bSm9obnNvbiwgSmFuZXQgQnV0dG9scGgsIGFuZCBILiBULiBSZXlub2xkcy4g4oCcQ2hhcHRlciA0OiBUaGUgQnVpbGRpbmcgQmxvY2tzIG9mIFNvY2lhbCBTY2llbnRpZmljIFJlc2VhcmNoOiBIeXBvdGhlc2VzLCBDb25jZXB0cywgVmFyaWFibGVzLCBhbmQgTWVhc3VyZW1lbnQs4oCdIGluIFBvbGl0aWNhbCBTY2llbmNlIFJlc2VhcmNoIE1ldGhvZHMsIDl0aCBlZGl0aW9uLiAoV2FzaGluZ3RvbiwgRC5DLjogQ1EgUHJlc3MsIDIwMjApLl0uDQoNClRoZSByZXNlYXJjaCBkZXNpZ24gZW1wbG95cyBhIG1peGVkLW1ldGhvZHMgYXBwcm9hY2gsIGNvbWJpbmluZyBxdWFudGl0YXRpdmUgYW5kIHF1YWxpdGF0aXZlIGRhdGEgdG8gZXhwbG9yZSB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHNlcnZpY2UgaW50ZWdyYXRpb24gYW5kIG91dGNvbWVzLiBUaGlzIHRyaWFuZ3VsYXRpb24gc3RyZW5ndGhlbnMgY2F1c2FsIGNsYWltcyBieSBkcmF3aW5nIG9uIG11bHRpcGxlIGRhdGEgc291cmNlcywgYXMgaGlnaGxpZ2h0ZWQgaW4gQ2hhcHRlciA2IG9mIEpvaG5zb24gYW5kIFJleW5vbGRzLg0KDQpUaGUgZmluZGluZ3Mgc3VnZ2VzdCB0aGF0IHNlcnZpY2UgaW50ZWdyYXRpb24gaW5kZWVkIGltcHJvdmVzIHNlcnZpY2UgZGVsaXZlcnksIGJ1dCBjaGFsbGVuZ2VzIHN1Y2ggYXMgZnVuZGluZyBsaW1pdGF0aW9ucyBhbmQgYnVyZWF1Y3JhdGljIGh1cmRsZXMgcGVyc2lzdC4gVGhpcyBlY2hvZXMgdGhlIENpdmljIFRlY2hub2xvZ2lzdOKAmXMgUHJhY3RpY2UgR3VpZGUncyBvYnNlcnZhdGlvbiBpbiBDaGFwdGVyIDk6IGFsdGhvdWdoIGlubm92YXRpdmUgc29sdXRpb25zIGxpa2Ugc2VydmljZSBpbnRlZ3JhdGlvbiBzaG93IHByb21pc2UsIHBvbGljeSBzeXN0ZW1zIG9mdGVuIHJlc2lzdCBjaGFuZ2UgZHVlIHRvIGluZ3JhaW5lZCBpbnN0aXR1dGlvbmFsIGJhcnJpZXJzLiBPdmVyY29taW5nIHRoZXNlIG9ic3RhY2xlcyBuZWNlc3NpdGF0ZXMgc3VzdGFpbmVkIGNvbW1pdG1lbnQgYW5kIHJlc291cmNlc15bSGFycmVsbCwgQ3lkLiBBIENpdmljIFRlY2hub2xvZ2lzdOKAmXMgcHJhY3RpY2UgZ3VpZGUuIFNhbiBGcmFuY2lzY28sIENBOiBGaXZlIFNldmVuIEZpdmUgQm9va3MsIDIwMjAuXS4NCg0KIyMgQXJ0aWNsZSAzOiBBIFByZXZlbnRpb24tQ2VudGVyZWQgQXBwcm9hY2ggdG8gSG9tZWxlc3NuZXNzIEFzc2lzdGFuY2U6IEEgUGFyYWRpZ20gU2hpZnQ/DQoNCkN1bGhhbmUsIE1ldHJhdXgsIGFuZCBCeXJuZSBwcm9wb3NlIGEgInByZXZlbnRpb24tY2VudGVyZWQgYXBwcm9hY2giIHRvIGFkZHJlc3MgaG9tZWxlc3NuZXNzLCBtYXJraW5nIGEgc2lnbmlmaWNhbnQgZGVwYXJ0dXJlIGZyb20gY29udmVudGlvbmFsLCByZWFjdGl2ZSBtb2RlbHMuIEhlcmUsIHByZXZlbnRpb24gZW5jb21wYXNzZXMgc3RyYXRlZ2llcyBkZXNpZ25lZCB0byBzdG9wIHBlb3BsZSBmcm9tIGJlY29taW5nIGhvbWVsZXNzIGluIHRoZSBmaXJzdCBwbGFjZV5bQ3VsaGFuZSwgRGVubmlzIFAuLCBTdGVwaGVuIE1ldHJhdXgsIGFuZCBUaG9tYXMgQnlybmUuICJBIFByZXZlbnRpb24tQ2VudGVyZWQgQXBwcm9hY2ggdG8gSG9tZWxlc3NuZXNzIEFzc2lzdGFuY2U6IEEgUGFyYWRpZ20gU2hpZnQ/IiBIb3VzaW5nIFBvbGljeSBEZWJhdGUgMjYsIG5vLiAzICgyMDE2KTogNDU2LTQ3NS5dLiBUaGlzIGNvbmNlcHQgaXMgb3BlcmF0aW9uYWxpemVkIHRocm91Z2ggdmFyaWFibGVzIGxpa2UgYWNjZXNzIHRvIGV2aWN0aW9uIHByZXZlbnRpb24gcHJvZ3JhbXMsIGhvdXNpbmcgYXNzaXN0YW5jZSwgYW5kIGxlZ2FsIGFpZCBmb3IgdGVuYW50cy4NCg0KVGhlIHN0dWR5J3MgZGVwZW5kZW50IHZhcmlhYmxlIGlzIHRoZSBob21lbGVzc25lc3MgZW50cnkgcmF0ZSwgbWVhc3VyZWQgYXQgdGhlIGluZGl2aWR1YWwgb3IgZmFtaWx5IGxldmVsLiBUaGUgYXV0aG9ycyBoeXBvdGhlc2l6ZSB0aGF0IHByZXZlbnRpb24tY2VudGVyZWQgcHJvZ3JhbXMgd2lsbCBsZWFkIHRvIGEgbG93ZXIgaW5jaWRlbmNlIG9mIGhvbWVsZXNzbmVzcyB3aGVuIGNvbXBhcmVkIHRvIHJlYWN0aXZlIGFwcHJvYWNoZXMgc3VjaCBhcyBlbWVyZ2VuY3kgc2hlbHRlcnMuIEluZGl2aWR1YWxzIGFuZCBmYW1pbGllcyBzZXJ2ZSBhcyB0aGUgdW5pdHMgb2YgYW5hbHlzaXMsIHdpdGggaG9tZWxlc3NuZXNzIGVudHJ5IHJhdGVzIG1lYXN1cmVkIG9uIGFuIGludGVydmFsIHNjYWxlLCBlbmFibGluZyBwcmVjaXNlIGNvbXBhcmlzb25zIGFjcm9zcyBncm91cHMgYW5kIHRpbWUuDQoNClRvIGVzdGFibGlzaCBjYXVzYWxpdHksIHRoZSBhdXRob3JzIGFkb3B0IGEgbG9uZ2l0dWRpbmFsIHJlc2VhcmNoIGRlc2lnbiwgdHJhY2tpbmcgZmFtaWxpZXMgb3ZlciB0aW1lIHRvIG9ic2VydmUgaG93IHByZXZlbnRpdmUgaW50ZXJ2ZW50aW9ucyBpbmZsdWVuY2UgdGhlaXIgaG91c2luZyBzdGFiaWxpdHkuIEFzIENoYXB0ZXIgNiBvZiBQb2xpdGljYWwgU2NpZW5jZSBSZXNlYXJjaCBNZXRob2RzIGVtcGhhc2l6ZXMsIGxvbmdpdHVkaW5hbCBkZXNpZ25zIGFyZSBjcnVjaWFsIGZvciBlc3RhYmxpc2hpbmcgdGVtcG9yYWwgb3JkZXIsIGEga2V5IGVsZW1lbnQgb2YgY2F1c2FsaXR5LiBCeSBvYnNlcnZpbmcgb3V0Y29tZXMgb3ZlciBhIGxvbmdlciBkdXJhdGlvbiwgdGhlIHN0dWR5IGNhbiBiZXR0ZXIgZ2F1Z2UgdGhlIGVmZmVjdGl2ZW5lc3Mgb2YgcHJldmVudGl2ZSBzdHJhdGVnaWVzLg0KDQpUaGUgZmluZGluZ3Mgc3VwcG9ydCB0aGUgaHlwb3RoZXNpcywgZGVtb25zdHJhdGluZyB0aGF0IHByZXZlbnRpb24gcHJvZ3JhbXMgc2lnbmlmaWNhbnRseSByZWR1Y2UgdGhlIHJpc2sgb2YgaG9tZWxlc3NuZXNzLiBUaGlzIHJlc29uYXRlcyB3aXRoIHRoZSBpbnNpZ2h0cyBmcm9tIENoYXB0ZXIgNSBvZiB0aGUgQ2l2aWMgVGVjaG5vbG9naXN04oCZcyBQcmFjdGljZSBHdWlkZSwgd2hpY2ggZGlzY3Vzc2VzIGhvdyBpbm5vdmF0aXZlIGFwcHJvYWNoZXMgbGlrZSBwcmV2ZW50aW9uIGNhbiBzdGVlciBwdWJsaWMgcG9saWN5IHRvd2FyZCBtb3JlIHN1c3RhaW5hYmxlLCBsb25nLXRlcm0gc29sdXRpb25zLg0KDQojIyBBcnRpY2xlIDQ6IEVmZmljaWVudCBUYXJnZXRpbmcgb2YgSG9tZWxlc3NuZXNzIFByZXZlbnRpb24gU2VydmljZXMgZm9yIEZhbWlsaWVzDQoNClNoaW5uIGV0IGFsLiBoaWdobGlnaHQgImVmZmljaWVudCB0YXJnZXRpbmciIGFzIGEgY3J1Y2lhbCBzdHJhdGVneSBmb3IgYWxsb2NhdGluZyBob21lbGVzc25lc3MgcHJldmVudGlvbiByZXNvdXJjZXMgZWZmZWN0aXZlbHkuIFRoaXMgaW52b2x2ZXMgZGlyZWN0aW5nIHJlc291cmNlcyB0b3dhcmQgZmFtaWxpZXMgbW9zdCBsaWtlbHkgdG8gZXhwZXJpZW5jZSBob21lbGVzc25lc3MgYmFzZWQgb24gcHJlZGljdGl2ZSBmYWN0b3JzIHN1Y2ggYXMgcGFzdCBob3VzaW5nIGluc3RhYmlsaXR5LCBsb3cgaW5jb21lLCBhbmQgbGltaXRlZCBhY2Nlc3MgdG8gc29jaWFsIHNlcnZpY2VzXltTaGlubiwgTWFyeWJldGgsIEFuZHJldyBMLiBHcmVlciwgSmF5IEJhaW5icmlkZ2UsIEpvbmF0aGFuIEt3b24sIGFuZCBTYXJhIFp1aWRlcnZlZW4uICJFZmZpY2llbnQgVGFyZ2V0aW5nIG9mIEhvbWVsZXNzbmVzcyBQcmV2ZW50aW9uIFNlcnZpY2VzIGZvciBGYW1pbGllcy4iIEFtZXJpY2FuIEpvdXJuYWwgb2YgUHVibGljIEhlYWx0aCAxMDUsIG5vLiAyICgyMDE1KTogMzI0LTMzMC5dLiBUaGlzIGNvbmNlcHQgaXMgb3BlcmF0aW9uYWxpemVkIHRocm91Z2ggdGhlIHVzZSBvZiBwcmVkaWN0aXZlIG1vZGVscyBhbmQgZGF0YSBhbmFseXRpY3MgdG8gYXNzZXNzIHJpc2suDQoNClRoZSBzdHVkeSdzIGRlcGVuZGVudCB2YXJpYWJsZSBpcyB0aGUgbGlrZWxpaG9vZCBvZiBhIGZhbWlseSBiZWNvbWluZyBob21lbGVzcywgbWVhc3VyZWQgYXQgdGhlIGZhbWlseSBsZXZlbC4gVGhlIGF1dGhvcnMgaHlwb3RoZXNpemUgdGhhdCBwcmVkaWN0aXZlIG1vZGVscyB3aWxsIGxlYWQgdG8gbW9yZSBlZmZpY2llbnQgcmVzb3VyY2UgdXRpbGl6YXRpb24sIHRoZXJlYnkgcmVkdWNpbmcgaG9tZWxlc3NuZXNzIHJhdGVzIGFtb25nIGhpZ2gtcmlzayBmYW1pbGllcy4gVGhlIHVuaXQgb2YgYW5hbHlzaXMgaXMgZmFtaWxpZXMsIGFuZCB0aGUgZGVwZW5kZW50IHZhcmlhYmxlIGlzIG1lYXN1cmVkIG9uIGFuIGludGVydmFsIHNjYWxlLCBhbGxvd2luZyByZXNlYXJjaGVycyB0byBxdWFudGlmeSB0aGUgcHJvYmFiaWxpdHkgb2YgaG9tZWxlc3NuZXNzLg0KDQpUaGUgYXV0aG9ycyB1dGlsaXplIGxvZ2lzdGljIHJlZ3Jlc3Npb24sIGEgc3RhdGlzdGljYWwgbWV0aG9kIGNvbW1vbmx5IHVzZWQgdG8gbW9kZWwgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHZhcmlhYmxlcy4gQXMgZXhwbGFpbmVkIGluIENoYXB0ZXIgNiBvZiBQb2xpdGljYWwgU2NpZW5jZSBSZXNlYXJjaCBNZXRob2RzLCBzdGF0aXN0aWNhbCBtb2RlbGluZyBpcyBhIHZpdGFsIHRvb2wgZm9yIGVzdGFibGlzaGluZyBjYXVzYWxpdHksIGVuYWJsaW5nIHJlc2VhcmNoZXJzIHRvIGNvbnRyb2wgZm9yIHZhcmlvdXMgZmFjdG9ycyBhbmQgdGVzdCB0aGUgc3RyZW5ndGggb2YgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHZhcmlhYmxlcy4NCg0KVGhlIGZpbmRpbmdzIHJldmVhbCB0aGF0IHByZWRpY3RpdmUgbW9kZWxzIGFyZSBoaWdobHkgZWZmZWN0aXZlIGluIGlkZW50aWZ5aW5nIGZhbWlsaWVzIGF0IHJpc2sgb2YgaG9tZWxlc3NuZXNzLCBlbmFibGluZyB0YXJnZXRlZCBpbnRlcnZlbnRpb24gYW5kIG1vcmUgZWZmaWNpZW50IHJlc291cmNlIGFsbG9jYXRpb24uIFRoaXMgZGF0YS1kcml2ZW4gYXBwcm9hY2ggYWxpZ25zIHdpdGggdGhlIGNvbmNlcHRzIGRpc2N1c3NlZCBpbiBDaGFwdGVyIDkgb2YgdGhlIENpdmljIFRlY2hub2xvZ2lzdOKAmXMgUHJhY3RpY2UgR3VpZGUsIHdoaWNoIGFkdm9jYXRlcyBmb3IgbGV2ZXJhZ2luZyB0ZWNobm9sb2d5IGFuZCBkYXRhIHRvIGltcHJvdmUgcG9saWN5IG91dGNvbWVzLg0KDQojIyBDb25jbHVzaW9uDQoNClRoZSBmb3VyIGFydGljbGVzIGV4YW1pbmVkIGluIHRoaXMgZXNzYXkgaWxsdXN0cmF0ZSBob3cgcGl2b3RhbCBjb25jZXB0cyBzdWNoIGFzIHByb2FjdGl2ZSBzdHJhdGVnaWVzLCBzZXJ2aWNlIGludGVncmF0aW9uLCBwcmV2ZW50aW9uLCBhbmQgZWZmaWNpZW50IHRhcmdldGluZyBjYW4gYmUgcHV0IGludG8gcHJhY3RpY2UgYW5kIGV2YWx1YXRlZCB0aHJvdWdoIG1ldGljdWxvdXMgcmVzZWFyY2ggZGVzaWducy4gRHJhd2luZyB1cG9uIGluc2lnaHRzIGZyb20gIlBvbGl0aWNhbCBTY2llbmNlIFJlc2VhcmNoIE1ldGhvZHMiIGFuZCB0aGUgIkNpdmljIFRlY2hub2xvZ2lzdOKAmXMgUHJhY3RpY2UgR3VpZGUsIiB0aGlzIGFuYWx5c2lzIGVtcGhhc2l6ZXMgdGhlIHNpZ25pZmljYW5jZSBvZiB3ZWxsLWRlZmluZWQgaHlwb3RoZXNlcywgYWNjdXJhdGUgbWVhc3VyZW1lbnQsIGFuZCB0aG91Z2h0ZnVsIGNvbnNpZGVyYXRpb24gb2YgY2F1c2FsaXR5IGluIHB1YmxpYyBwb2xpY3kgcmVzZWFyY2guIFRoZSBjb2xsZWN0aXZlIGZpbmRpbmdzIGZyb20gdGhlc2Ugc3R1ZGllcyB1bmRlcnNjb3JlIHRoZSBwb3RlbnRpYWwgb2YgaW5ub3ZhdGl2ZSwgZGF0YS1kcml2ZW4sIGFuZCBjb2xsYWJvcmF0aXZlIGFwcHJvYWNoZXMgaW4gZWZmZWN0aXZlbHkgYWRkcmVzc2luZyB0aGUgcGVyc2lzdGVudCBpc3N1ZSBvZiBob21lbGVzc25lc3MuDQoNCiMgUHJvcG9zZWQgSW5pdGlhdGl2ZQ0KDQpUaGlzIGluaXRpYXRpdmUgcHJvcG9zZXMgdGhlIGRldmVsb3BtZW50IGFuZCBpbXBsZW1lbnRhdGlvbiBvZiBhIHByZWRpY3RpdmUgbW9kZWxpbmcgc3lzdGVtIHRvIGlkZW50aWZ5IGluZGl2aWR1YWxzIGF0IGhpZ2ggcmlzayBvZiBjaHJvbmljIGhvbWVsZXNzbmVzcyBpbiBbeW91ciBjaXR5L2NvdW50eS9zdGF0ZV0uIFRoaXMgc3lzdGVtIHdpbGwgbGV2ZXJhZ2UgZXhpc3RpbmcgZGF0YSBzb3VyY2VzIGFjcm9zcyBtdWx0aXBsZSBhZ2VuY2llcyB0byBpZGVudGlmeSBpbmRpdmlkdWFscyBmYWNpbmcgaW1taW5lbnQgcmlzayBvZiBob3VzaW5nIGluc3RhYmlsaXR5IGFuZCBwcm9hY3RpdmVseSBjb25uZWN0IHRoZW0gd2l0aCB0YXJnZXRlZCBwcmV2ZW50aW9uIHJlc291cmNlcy4gVGhpcyBpbml0aWF0aXZlIGZhbGxzIHdpdGhpbiB0aGUgcG9saWN5IGZvcm11bGF0aW9uIGFuZCBhZG9wdGlvbiBzdGFnZSBvZiB0aGUgcG9saWN5IHByb2Nlc3MsIGFzIGl0IGludm9sdmVzIGRlc2lnbmluZyBhIG5ldyBwb2xpY3kgYXBwcm9hY2ggYW5kIGFkdm9jYXRpbmcgZm9yIGl0cyBhZG9wdGlvbiBieSByZWxldmFudCBzdGFrZWhvbGRlcnMgKFRoZSBDaXZpYyBUZWNobm9sb2dpc3QncyBQcmFjdGljZSBHdWlkZSwgMjAyMykuDQoNClRoZSBwcm9wb3NlZCBtZXRob2QgaW52b2x2ZXMgc2V2ZXJhbCBrZXkgc3RlcHMuIEZpcnN0LCBkYXRhIHdpbGwgYmUgZ2F0aGVyZWQgZnJvbSB2YXJpb3VzIHNvdXJjZXMsIGluY2x1ZGluZyBIb21lbGVzcyBNYW5hZ2VtZW50IEluZm9ybWF0aW9uIFN5c3RlbXMgKEhNSVMpLCBwdWJsaWMgd2VsZmFyZSBhZ2VuY2llcywgdGhlIGNyaW1pbmFsIGp1c3RpY2Ugc3lzdGVtLCBwdWJsaWMgc2Nob29scywgYW5kIGV2aWN0aW9uIGNvdXJ0IHJlY29yZHMuIFRoaXMgZGF0YSB3aWxsIHByb3ZpZGUgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHJpc2sgZmFjdG9ycyBhc3NvY2lhdGVkIHdpdGggY2hyb25pYyBob21lbGVzc25lc3MuIE5leHQsIGEgcHJlZGljdGl2ZSBtb2RlbCB3aWxsIGJlIGRldmVsb3BlZCB1c2luZyBtYWNoaW5lIGxlYXJuaW5nIGFsZ29yaXRobXMgdG8gYW5hbHl6ZSB0aGUgaW50ZWdyYXRlZCBkYXRhIGFuZCBpZGVudGlmeSBpbmRpdmlkdWFscyB3aXRoIGEgaGlnaCBwcm9iYWJpbGl0eSBvZiBleHBlcmllbmNpbmcgY2hyb25pYyBob21lbGVzc25lc3MuIEtleSByaXNrIGZhY3RvcnMgbWF5IGluY2x1ZGUgaGlzdG9yeSBvZiBldmljdGlvbnMsIGludm9sdmVtZW50IHdpdGggdGhlIGNyaW1pbmFsIGp1c3RpY2Ugc3lzdGVtLCBmcmVxdWVudCB1c2Ugb2YgZW1lcmdlbmN5IHNoZWx0ZXJzLCBtZW50YWwgaGVhbHRoIGFuZCBzdWJzdGFuY2UgYWJ1c2UgaXNzdWVzLCBhbmQgbGltaXRlZCBpbmNvbWUuDQoNCkJhc2VkIG9uIHRoZSBwcmVkaWN0ZWQgcmlzayBsZXZlbHMsIGEgdGllcmVkIGludGVydmVudGlvbiBzeXN0ZW0gd2lsbCBiZSBkZXZlbG9wZWQuIEhpZ2gtcmlzayBpbmRpdmlkdWFscyB3aWxsIHJlY2VpdmUgaW50ZW5zaXZlIGNhc2UgbWFuYWdlbWVudCwgaG91c2luZyBuYXZpZ2F0aW9uIGFzc2lzdGFuY2UsIHJlbnRhbCBzdWJzaWRpZXMsIGFuZCBjb25uZWN0aW9ucyB0byBtZW50YWwgaGVhbHRoIGFuZCBzdWJzdGFuY2UgYWJ1c2UgdHJlYXRtZW50LiBNb2RlcmF0ZS1yaXNrIGluZGl2aWR1YWxzIHdpbGwgYmUgcmVmZXJyZWQgdG8gZXZpY3Rpb24gcHJldmVudGlvbiBwcm9ncmFtcywgZmluYW5jaWFsIGxpdGVyYWN5IGNvdW5zZWxpbmcsIGFuZCBqb2IgdHJhaW5pbmcuIExvdy1yaXNrIGluZGl2aWR1YWxzIHdpbGwgcmVjZWl2ZSBwcmV2ZW50aXZlIGVkdWNhdGlvbiBhbmQgaW5mb3JtYXRpb24gb24gYXZhaWxhYmxlIHJlc291cmNlcy4gRmluYWxseSwgdGhlIHByb2dyYW0ncyBlZmZlY3RpdmVuZXNzIHdpbGwgYmUgY29udGludW91c2x5IG1vbml0b3JlZCBhbmQgZXZhbHVhdGVkIHVzaW5nIGEgcm9idXN0IGV2YWx1YXRpb24gZnJhbWV3b3JrLCB0cmFja2luZyBrZXkgbWV0cmljcyBzdWNoIGFzIHRoZSBudW1iZXIgb2YgaW5kaXZpZHVhbHMgaWRlbnRpZmllZCwgaW50ZXJ2ZW50aW9ucyBwcm92aWRlZCwgcmVkdWN0aW9ucyBpbiBob21lbGVzc25lc3MgZW50cnkgcmF0ZXMsIGFuZCBjb3N0LWVmZmVjdGl2ZW5lc3MuDQoNClN1Y2Nlc3NmdWwgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBpbml0aWF0aXZlIHdpbGwgbGVhZCB0byBzZXZlcmFsIHBvc2l0aXZlIG91dGNvbWVzLiBCeSBwcm9hY3RpdmVseSBpZGVudGlmeWluZyBhbmQgYXNzaXN0aW5nIGluZGl2aWR1YWxzIGF0IGhpZ2ggcmlzaywgdGhlIGluaXRpYXRpdmUgYWltcyB0byBwcmV2ZW50IGNocm9uaWMgaG9tZWxlc3NuZXNzIGFuZCBpdHMgYXNzb2NpYXRlZCBzb2NpYWwgYW5kIGVjb25vbWljIGNvc3RzLiBFZmZpY2llbnQgdGFyZ2V0aW5nIGVuc3VyZXMgdGhhdCBsaW1pdGVkIHJlc291cmNlcyBhcmUgZGlyZWN0ZWQgdG93YXJkcyB0aG9zZSBtb3N0IGluIG5lZWQsIG1heGltaXppbmcgaW1wYWN0LiBUaGUgaW5pdGlhdGl2ZSBhbHNvIGVuY291cmFnZXMgY29sbGFib3JhdGlvbiBiZXR3ZWVuIGFnZW5jaWVzLCBmb3N0ZXJpbmcgYSBtb3JlIGludGVncmF0ZWQgYW5kIGVmZmVjdGl2ZSBzZXJ2aWNlIGRlbGl2ZXJ5IHN5c3RlbSAoR3VlcnJlcm8sIEhlbndvb2QsIGFuZCBXZW56ZWwpLiBGdXJ0aGVybW9yZSwgdGhlIHVzZSBvZiBwcmVkaWN0aXZlIG1vZGVsaW5nIGFuZCBkYXRhIGFuYWx5dGljcyBwcm9tb3RlcyBhIG1vcmUgb2JqZWN0aXZlIGFuZCBldmlkZW5jZS1iYXNlZCBhcHByb2FjaCB0byBob21lbGVzc25lc3MgcHJldmVudGlvbi4NCg0KVGhlIGRhdGEgY29sbGVjdGVkIHdpbGwgY29udHJpYnV0ZSB0byB0aGUgYXNzZXNzbWVudCBvZiBjb25kaXRpb25zIGJ5IHByb3ZpZGluZyBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2NvcGUgYW5kIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgaG9tZWxlc3MgcG9wdWxhdGlvbiwgaW5jbHVkaW5nIHByZXZhbGVudCByaXNrIGZhY3RvcnMgYW5kIHNlcnZpY2UgbmVlZHMuIFRoaXMgd2lsbCBpbmZvcm0gdGhlIGRldmVsb3BtZW50IG9mIHRhcmdldGVkIGludGVydmVudGlvbnMuIERhdGEgd2lsbCBhbHNvIGd1aWRlIHRoZSBpZGVudGlmaWNhdGlvbiBvZiBoaWdoLXJpc2sgaW5kaXZpZHVhbHMsIGVuYWJsaW5nIHByb2FjdGl2ZSBhbmQgZWZmaWNpZW50IGFsbG9jYXRpb24gb2YgcmVzb3VyY2VzLiBPbmdvaW5nIGRhdGEgYW5hbHlzaXMgd2lsbCBtb25pdG9yIHByb2dyYW0gZWZmZWN0aXZlbmVzcyBhbmQgaWRlbnRpZnkgYXJlYXMgZm9yIGltcHJvdmVtZW50Lg0KDQpUaGlzIGluaXRpYXRpdmUgYWxpZ25zIHdpdGggc2V2ZXJhbCBrZXkgY29uY2VwdHMgZnJvbSB0aGUgcG9saWN5IGxpdGVyYXR1cmUuIEl0IHJlZmxlY3RzIE5vdXJhemFyaSwgTG92YXRvLCBhbmQgV2VuZydzIGFkdm9jYWN5IGZvciBwcm9hY3RpdmUsIHN5c3RlbXMtYmFzZWQgYXBwcm9hY2hlcyB0byBob21lbGVzc25lc3MgcHJldmVudGlvbiAoTm91cmF6YXJpLCBMb3ZhdG8sIGFuZCBXZW5nKS4gVGhlIHVzZSBvZiBwcmVkaWN0aXZlIG1vZGVsaW5nIGVjaG9lcyBTaGlubiBldCBhbC4ncyBlbXBoYXNpcyBvbiBlZmZpY2llbnQgdGFyZ2V0aW5nIHRvIG1heGltaXplIHRoZSBpbXBhY3Qgb2YgbGltaXRlZCByZXNvdXJjZXMgKFNoaW5uIGV0IGFsLikuIEJ5IHByaW9yaXRpemluZyBwcmV2ZW50aW9uIGFuZCBpbnRlcnZlbmluZyBlYXJseSwgdGhlIGluaXRpYXRpdmUgcmVmbGVjdHMgQ3VsaGFuZSwgTWV0cmF1eCwgYW5kIEJ5cm5lJ3MgYXJndW1lbnQgZm9yIGEgcHJldmVudGlvbi1jZW50ZXJlZCBhcHByb2FjaCB0byBob21lbGVzc25lc3MgYXNzaXN0YW5jZSAoQ3VsaGFuZSwgTWV0cmF1eCwgYW5kIEJ5cm5lKS4NCg0KVGhpcyBpbml0aWF0aXZlIG5lY2Vzc2l0YXRlcyBjbG9zZSBjb2xsYWJvcmF0aW9uIHdpdGggcG9saWN5bWFrZXJzIGFuZCBnb3Zlcm5tZW50IGFnZW5jaWVzLiBUaGUgIldvcmtpbmcgd2l0aCBQb2xpY3kiIGNoYXB0ZXIgaW4gdGhlIENpdmljIFRlY2hub2xvZ2lzdCdzIFByYWN0aWNlIEd1aWRlIHByb3ZpZGVzIHZhbHVhYmxlIGluc2lnaHRzIGZvciBuYXZpZ2F0aW5nIHRoZSBwb2xpY3kgbGFuZHNjYXBlLiBLZXkgY29uc2lkZXJhdGlvbnMgaW5jbHVkZSBidWlsZGluZyByZWxhdGlvbnNoaXBzIHdpdGgga2V5IHBvbGljeW1ha2VycywgYWdlbmN5IGxlYWRlcnMsIGFuZCBjb21tdW5pdHkgc3Rha2Vob2xkZXJzOyB1bmRlcnN0YW5kaW5nIHRoZSBzcGVjaWZpYyBwb2xpY3kgcHJvY2Vzc2VzIGFuZCBkZWNpc2lvbi1tYWtpbmcgc3RydWN0dXJlcyB3aXRoaW4gdGhlIHJlbGV2YW50IGdvdmVybm1lbnQgYWdlbmNpZXM7IGVmZmVjdGl2ZWx5IGNvbW11bmljYXRpbmcgdGhlIHByb2JsZW0gb2YgY2hyb25pYyBob21lbGVzc25lc3MgYW5kIHRoZSBwb3RlbnRpYWwgYmVuZWZpdHMgb2YgdGhlIHByb3Bvc2VkIHNvbHV0aW9uOyBidWlsZGluZyBhIGJyb2FkIGNvYWxpdGlvbiBvZiBzdXBwb3J0IGZvciB0aGUgaW5pdGlhdGl2ZTsgYW5kIGFudGljaXBhdGluZyBhbmQgYWRkcmVzc2luZyBwb3RlbnRpYWwgYmFycmllcnMgdG8gaW1wbGVtZW50YXRpb24sIHN1Y2ggYXMgZnVuZGluZyBjb25zdHJhaW50cywgcHJpdmFjeSBjb25jZXJucywgYW5kIGJ1cmVhdWNyYXRpYyByZXNpc3RhbmNlLiBCeSBsZXZlcmFnaW5nIGRhdGEtZHJpdmVuIGluc2lnaHRzIGFuZCBjb2xsYWJvcmF0aW5nIGVmZmVjdGl2ZWx5IHdpdGggcG9saWN5bWFrZXJzLCB0aGlzIGluaXRpYXRpdmUgaGFzIHRoZSBwb3RlbnRpYWwgdG8gc2lnbmlmaWNhbnRseSByZWR1Y2UgY2hyb25pYyBob21lbGVzc25lc3MgYW5kIGltcHJvdmUgdGhlIGxpdmVzIG9mIHZ1bG5lcmFibGUgaW5kaXZpZHVhbHMgaW4gb3VyIGNvbW11bml0eS4NCg0KIyBPcGVuIERhdGEgSW5kaWNhdG9ycw0KDQpgYGB7ciBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCBsYWJlbD0iQVBJIE9wZW4gRGF0YSAoS2FibGUpIn0NCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KHRpZHlyKQ0KbGlicmFyeShrYWJsZUV4dHJhKQ0KbGlicmFyeShodHRyKQ0KbGlicmFyeShqc29ubGl0ZSkNCmxpYnJhcnkobWFncml0dHIpDQpsaWJyYXJ5KGtuaXRyKQ0KDQojIEZldGNoIGRhdGEgZnJvbSBBUEkNCmZldGNoX2RhdGEgPC0gZnVuY3Rpb24oYXBpX3VybCkgew0KICByZXNwb25zZSA8LSBHRVQoYXBpX3VybCkNCiAgZGF0YSA8LSBmcm9tSlNPTihjb250ZW50KHJlc3BvbnNlLCAidGV4dCIpLCBmbGF0dGVuID0gVFJVRSkNCiAgcmV0dXJuKGRhdGEkZmVhdHVyZXMpDQp9DQoNCmhvbWVsZXNzX3NoZWx0ZXJfdXJsIDwtICJodHRwczovL21hcHMyLmRjZ2lzLmRjLmdvdi9kY2dpcy9yZXN0L3NlcnZpY2VzL0RDR0lTX0RBVEEvUHVibGljX1NlcnZpY2VfV2ViTWVyY2F0b3IvTWFwU2VydmVyLzI1L3F1ZXJ5P3doZXJlPTElM0QxJm91dEZpZWxkcz0qJm91dFNSPTQzMjYmZj1qc29uIg0KaG9tZWxlc3Nfc2VydmljZV91cmwgPC0gImh0dHBzOi8vbWFwczIuZGNnaXMuZGMuZ292L2RjZ2lzL3Jlc3Qvc2VydmljZXMvRENHSVNfREFUQS9QdWJsaWNfU2VydmljZV9XZWJNZXJjYXRvci9NYXBTZXJ2ZXIvNi9xdWVyeT93aGVyZT0xJTNEMSZvdXRGaWVsZHM9KiZvdXRTUj00MzI2JmY9anNvbiINCmFmZm9yZGFibGVfaG91c2luZ191cmwgPC0gImh0dHBzOi8vbWFwczIuZGNnaXMuZGMuZ292L2RjZ2lzL3Jlc3Qvc2VydmljZXMvRENHSVNfREFUQS9Qcm9wZXJ0eV9hbmRfTGFuZF9XZWJNZXJjYXRvci9NYXBTZXJ2ZXIvNjIvcXVlcnk/d2hlcmU9MSUzRDEmb3V0RmllbGRzPSomb3V0U1I9NDMyNiZmPWpzb24iDQoNCiMgRmV0Y2hpbmcgdGhlIGRhdGFzZXRzDQpob21lbGVzc19zaGVsdGVycyA8LSBmZXRjaF9kYXRhKGhvbWVsZXNzX3NoZWx0ZXJfdXJsKQ0KaG9tZWxlc3Nfc2VydmljZXMgPC0gZmV0Y2hfZGF0YShob21lbGVzc19zZXJ2aWNlX3VybCkNCmFmZm9yZGFibGVfaG91c2luZyA8LSBmZXRjaF9kYXRhKGFmZm9yZGFibGVfaG91c2luZ191cmwpDQoNCg0KIyBEaXNwbGF5IHRoZSBkYXRhIHVzaW5nIGthYmxlDQprYWJsZShoZWFkKGhvbWVsZXNzX3NoZWx0ZXJzKSwgY2FwdGlvbiA9ICJIb21lbGVzcyBTaGVsdGVyIExvY2F0aW9ucyIpICU+JSBrYWJsZV9zdHlsaW5nKCkNCmthYmxlKGhlYWQoaG9tZWxlc3Nfc2VydmljZXMpLCBjYXB0aW9uID0gIkhvbWVsZXNzIFNlcnZpY2UgRmFjaWxpdGllcyIpICU+JSBrYWJsZV9zdHlsaW5nKCkNCmthYmxlKGhlYWQoYWZmb3JkYWJsZV9ob3VzaW5nKSwgY2FwdGlvbiA9ICJBZmZvcmRhYmxlIEhvdXNpbmcgVW5pdHMiKSAlPiUga2FibGVfc3R5bGluZygpDQoNCmBgYA0KDQojIyBUaGlzIGNvZGUgaW1wb3J0cyB0aHJlZSBkYXRhc2V0cyBmcm9tIE9wZW5EYXRhIERDOg0KDQpIb21lbGVzcyBTaGVsdGVyIExvY2F0aW9uczogVGhpcyBkYXRhc2V0IHByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIHRoZSBsb2NhdGlvbiwgY2FwYWNpdHksIGFuZCB0eXBlcyBvZiBzZXJ2aWNlcyBvZmZlcmVkIGF0IGhvbWVsZXNzIHNoZWx0ZXJzIGluIFdhc2hpbmd0b24sIERDLg0KDQpIb21lbGVzcyBTZXJ2aWNlIEZhY2lsaXRpZXM6IFRoaXMgZGF0YXNldCBjb250YWlucyBpbmZvcm1hdGlvbiBvbiB2YXJpb3VzIGZhY2lsaXRpZXMgdGhhdCBwcm92aWRlIHNlcnZpY2VzIHRvIHBlb3BsZSBleHBlcmllbmNpbmcgaG9tZWxlc3NuZXNzLCBzdWNoIGFzIGRheSBjZW50ZXJzLCBzb3VwIGtpdGNoZW5zLCBhbmQgbWVkaWNhbCBjbGluaWNzLg0KDQpBZmZvcmRhYmxlIEhvdXNpbmc6IFRoaXMgZGF0YXNldCBpbmNsdWRlcyBpbmZvcm1hdGlvbiBvbiBhZmZvcmRhYmxlIGhvdXNpbmcgdW5pdHMgaW4gV2FzaGluZ3RvbiwgREMsIGluY2x1ZGluZyBsb2NhdGlvbiwgbnVtYmVyIG9mIHVuaXRzLCBhbmQgYWZmb3JkYWJpbGl0eSBsZXZlbHMuDQoNCiMjIEZpdmUgSW5kaWNhdG9ycyBhbmQgdGhlaXIgUmVsZXZhbmNlIHRvIENocm9uaWMgSG9tZWxlc3NuZXNzOg0KDQpTaGVsdGVyIENhcGFjaXR5IChmcm9tICJIb21lbGVzcyBTaGVsdGVyIExvY2F0aW9ucyIpOiBUaGlzIGluZGljYXRvciBzaG93cyB0aGUgdG90YWwgbnVtYmVyIG9mIGJlZHMgYXZhaWxhYmxlIGluIGVtZXJnZW5jeSBzaGVsdGVycyBhbmQgdHJhbnNpdGlvbmFsIGhvdXNpbmcgcHJvZ3JhbXMuICBBIGxvdyBzaGVsdGVyIGNhcGFjaXR5IHJlbGF0aXZlIHRvIHRoZSBlc3RpbWF0ZWQgaG9tZWxlc3MgcG9wdWxhdGlvbiBpbmRpY2F0ZXMgYSBsYWNrIG9mIGFkZXF1YXRlIGVtZXJnZW5jeSByZXNvdXJjZXMsIHBvdGVudGlhbGx5IGNvbnRyaWJ1dGluZyB0byBjaHJvbmljIGhvbWVsZXNzbmVzcy4NCg0KVHlwZXMgb2YgU2hlbHRlciBTZXJ2aWNlcyAoZnJvbSAiSG9tZWxlc3MgU2hlbHRlciBMb2NhdGlvbnMiKTogIFRoaXMgaW5kaWNhdG9yIHByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIHRoZSBzcGVjaWZpYyBzZXJ2aWNlcyBvZmZlcmVkIGF0IGVhY2ggc2hlbHRlciwgc3VjaCBhcyBmYW1pbHkgc2hlbHRlcnMsIHNoZWx0ZXJzIGZvciBpbmRpdmlkdWFscyB3aXRoIGRpc2FiaWxpdGllcywgYW5kIHNoZWx0ZXJzIHdpdGggc3Vic3RhbmNlIGFidXNlIHRyZWF0bWVudCBwcm9ncmFtcy4gQW5hbHl6aW5nIHRoZSBhdmFpbGFiaWxpdHkgb2Ygc3BlY2lhbGl6ZWQgc2VydmljZXMgY2FuIHJldmVhbCBnYXBzIGluIHJlc291cmNlcyBmb3Igc3BlY2lmaWMgc3VicG9wdWxhdGlvbnMgZXhwZXJpZW5jaW5nIGNocm9uaWMgaG9tZWxlc3NuZXNzLg0KDQpOdW1iZXIgb2YgUGVybWFuZW50IFN1cHBvcnRpdmUgSG91c2luZyBVbml0cyAoZnJvbSAiQWZmb3JkYWJsZSBIb3VzaW5nIik6IFRoaXMgaW5kaWNhdG9yIHNob3dzIHRoZSBudW1iZXIgb2YgaG91c2luZyB1bml0cyBzcGVjaWZpY2FsbHkgZGVzaWduYXRlZCBmb3IgaW5kaXZpZHVhbHMgYW5kIGZhbWlsaWVzIGV4aXRpbmcgaG9tZWxlc3NuZXNzIGFuZCByZXF1aXJpbmcgb25nb2luZyBzdXBwb3J0IHNlcnZpY2VzLiBBbiBhZGVxdWF0ZSBzdXBwbHkgb2YgcGVybWFuZW50IHN1cHBvcnRpdmUgaG91c2luZyBpcyBjcnVjaWFsIGZvciBicmVha2luZyB0aGUgY3ljbGUgb2YgY2hyb25pYyBob21lbGVzc25lc3MuDQoNCkF2YWlsYWJpbGl0eSBvZiBBZmZvcmRhYmxlIEhvdXNpbmcgVW5pdHMgZm9yIEV4dHJlbWVseSBMb3ctSW5jb21lIEhvdXNlaG9sZHMgKGZyb20gIkFmZm9yZGFibGUgSG91c2luZyIpOiBUaGlzIGluZGljYXRvciByZWZsZWN0cyB0aGUgYXZhaWxhYmlsaXR5IG9mIGhvdXNpbmcgdW5pdHMgYWZmb3JkYWJsZSB0byBob3VzZWhvbGRzIHdpdGggaW5jb21lcyBiZWxvdyAzMCUgb2YgdGhlIEFyZWEgTWVkaWFuIEluY29tZSAoQU1JKS4gIEEgc2hvcnRhZ2Ugb2YgZGVlcGx5IGFmZm9yZGFibGUgaG91c2luZyBpcyBhIHNpZ25pZmljYW50IGNvbnRyaWJ1dG9yIHRvIGNocm9uaWMgaG9tZWxlc3NuZXNzLCBhcyBpbmRpdmlkdWFscyBhbmQgZmFtaWxpZXMgc3RydWdnbGUgdG8gZmluZCBzdGFibGUgYW5kIGFmZm9yZGFibGUgaG91c2luZyBvcHRpb25zLg0KDQpHZW9ncmFwaGljIERpc3RyaWJ1dGlvbiBvZiBTZXJ2aWNlcyAoZnJvbSBib3RoICJIb21lbGVzcyBTaGVsdGVyIExvY2F0aW9ucyIgYW5kICJIb21lbGVzcyBTZXJ2aWNlIEZhY2lsaXRpZXMiKTogTWFwcGluZyB0aGUgbG9jYXRpb24gb2Ygc2hlbHRlcnMgYW5kIHNlcnZpY2UgZmFjaWxpdGllcyBjYW4gcmV2ZWFsIGdlb2dyYXBoaWMgZGlzcGFyaXRpZXMgaW4gYWNjZXNzIHRvIHJlc291cmNlcy4gIENvbmNlbnRyYXRpb25zIG9mIHNlcnZpY2VzIGluIGNlcnRhaW4gYXJlYXMgbWF5IGxlYXZlIG90aGVyIGNvbW11bml0aWVzIHVuZGVyc2VydmVkLCBwb3RlbnRpYWxseSBjb250cmlidXRpbmcgdG8gaGlnaGVyIHJhdGVzIG9mIGNocm9uaWMgaG9tZWxlc3NuZXNzIGluIHRob3NlIGFyZWFzLg0KDQpCeSBhbmFseXppbmcgdGhlc2UgaW5kaWNhdG9ycywgd2UgY2FuIGdhaW4gYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29uZGl0aW9ucyBjb250cmlidXRpbmcgdG8gY2hyb25pYyBob21lbGVzc25lc3MgaW4gV2FzaGluZ3RvbiwgREMuIFRoaXMgaW5mb3JtYXRpb24gY2FuIGluZm9ybSB0aGUgZGV2ZWxvcG1lbnQgYW5kIGltcGxlbWVudGF0aW9uIG9mIHRhcmdldGVkIGludGVydmVudGlvbnMsIHN1Y2ggYXMgdGhlIHByZWRpY3RpdmUgbW9kZWxpbmcgaW5pdGlhdGl2ZSBwcm9wb3NlZCwgdG8gZWZmZWN0aXZlbHkgYWRkcmVzcyB0aGlzIGNyaXRpY2FsIGlzc3VlLg==
1.5 Social Equity and Systemic Reforms
To make lasting progress, the city must go beyond housing solutions and address the broader social and economic inequalities that contribute to homelessness. Public awareness and education campaigns can help combat negative stereotypes and build empathy for the homeless population, fostering a more supportive social environment.
Systemic reforms are also necessary to break the cycle of poverty and homelessness. This includes improving access to healthcare, education, and employment opportunities for marginalized groups (Brown, Ezike, & Stern, 2020). For example, expanding access to job training programs and increasing funding for mental health services can help individuals overcome the barriers that often lead to homelessness.
Lastly, the city must carefully consider the impact of economic development and gentrification. While development can bring jobs and economic growth, it can also displace low-income residents, exacerbating the homelessness crisis. Policymakers should ensure that development projects include affordable housing components and that measures are in place to protect vulnerable populations from displacement (Wilson & Cong, 2021).