What are Red Flags of Fraud ?
Frauds can be detected, a particularly effective and inexpensive way
is to identify fraudsters by scrutinizing personnel behaviour for
peculiarities typical of fraudsters.
checklist of behavioural red flags of fraud based on data collected,
16 different behavioural red flags exhibited by fraudsters. An
examination of frequencies indicates that strong ambition, extended
working hours, social aloofness, dissatisfaction with current job and
living standard disproportionate to current means are the most
frequently displayed behavioural red flags of fraud.
It is important to understand that behavioural red flags of fraud are
not stereotypes, nor are they hard and fast rules.
Crowe (2011) found CEO involvement in 89 per cent of corporate frauds
and prepared a list of CEO- related red flags: bully attitude, ego and
autocratic style of operation.
McFadden (2016) contended that many behavioural red flags, such as
insomnia, relationship problems, troubled relationships with co-workers
and drug abuse, suggest an employee’s participation in workplace fraud.
lying, lack of cooperation during audits, cleverness and arrogance may
indicate an attempt to conceal fraud (McFadden, 2016).
living beyond means, financial difficulties, close associations with
vendors, unwillingness to share duties, unscrupulous behaviour and
recent divorce/family problems are the most commonly displayed
behavioural red flags of fraud (ACFE, 2012, 2014, 2016).
KPMG (2014) suggests that gambling and living beyond means are the
most frequently displayed red flags of fraud
Conclusion
Analysis of the articulations of the respondents helped identify as
many as 16 different behavioural red flags of fraud exhibited by fraud
perpetrators before the detection of the fraud. Of these 16 behavioural
red flags, strong ambition, extended working hours, social aloofness,
dissatisfaction with current job and living standard disproportionate to
current means are the most frequently displayed red flags. The less
frequently exhibited behavioural red flags are rude and autocratic
behaviour, personal problems, justifying unethical/dishonest behaviour,
employment-related problems, interpersonal collusion, refusing
promotions/postings/leave, close relations with clients/customers,
substance abuse, territorial behaviour, history of legal problems and
sexual harassment.

Financial Statement Red Flags
Red flags as a method is viewed as a means for managing audit risk
and detecting fraud or error. Red flags can be used as an early warning
system by both auditors and other stakeholders to assess the risk of
financial statement fraud. The probability of fraud should be evaluated
on a combination of red flags rather than being limited to one or two
indicators.
1. dishonest or unethical management |
2. Frequent changes of legal counsel, auditors or external
board |
3. Management is dominated by one person (or a small group) and no
effective overseeing board or committee |
4. Suspension or delisting from stock exchange |
5. management reputation in the business community is poor |
6. Continuous problems with regulatory agencies. |
7. Internal or external factors raise substantial doubt about the
the entity ability to continue is a concern |
8. Inability to generate cash flows from operations while reporting
earnings and earnings growth |
9. There has been a breakdown in accounting and control systems as
reflected by the late issuing of financial statements or a qualified
audit report |
10. There is a high turnover rate of key top management,
particularly financial executives |
- Note: These 10 most important red flags apply to
Lenders and Investors as well
ranking of least important
- Pressure is exerted on accounting personnel to complete financial
statements in an unusually short period as reflected by approval date of
financial statements.
- Rapid expansion into new product lines.
- Unusually long business cycle.
- Key executives feel undue family, peer, or community pressure to
succeed.
- The entity has a significant investment in an industry or product
line noted for rapid change.
- Key executives with perceived inadequate incomes relative to
industry.
- Limited collateral available.
- Adverse political, social or environmental impact.
- Declining demand for products.
- The entity is heavily dependent on one or a few products, customers
or suppliers.
“dishonest and unethical management” has been identified as
the most important red flag
Conclusion
To manage the risk of fraud, including financial statement fraud, an
entity should address the problem holistically. Measures to prevent,
detect and investigate fraud should be in place. The risk of financial
statement fraud is clearly a responsibility of the board of directors,
or its equivalent in other organisational structures, especially the
non-executive members.
Loan Management Red Flags
Five steps that lenders should take when confronting a problem loan,
including:
- Know the facts about the borrower.
- Identify the company’s and the bank’s problems with the loan.
- Determine possible courses of action.
- Create a proactive, objective-based action plan.
- Establish a program to monitor the firm.
- Find red flags by examining the firm’s financial statements,
observing the company’s internal operations, and understanding the
borrower’s industry.
“Red flags almost always appear before there is a payment
default”
Red flags-indicators that a business might be having problems:
- examining the firm’s financial statements
- observing the company’s internal operations
- understanding the borrower’s industry.
Lenders:
- look for indicators that have the greatest impact on financial
performance, such as cash flow, asset values, or collateral coverage,
and connect the dots between them to get a full financial picture.
V & C Framework
“V” stands for company viability. “C” stands for collateral and asset
values.
( - ) |
( - ) |
distressed sale or a liquidation, foreclosure, or
wind-down scenario |
( - ) |
( + ) |
orderly sale or liquidation |
( + ) |
( - ) |
potential for a turnaround or restructuring. |
( + ) |
( + ) |
likely false alarm, firm is healthy |
General Principles
- Make sure the documentation Is accurate and complete.
- Communicate clearly and effectively with your customer.
- Evaluate a firm’s management to determine if it needs help or should
be replaced.
- Remember that the bank controls the loan, but it doesn’t control the
borrower.
- Get value in return for loan waivers or amendments.
- Avoid putting new money into a lender with a troubled loan.
- Work closely with third parties: other lenders, guarantors, or
equity holders.
Tips for Success
- Stay close to the borrower. Make sure you understand the key issues
and what’s going on. Refuse to be ignorant.
- Don’t let personal relationships cloud your judgment. You need to
stay objective. You need to stay smart. Communicate In a clear and
honest way.
- Minimize bad publicity and be sensitive to lender liability and
Community Reinvestment Act issues.
- Maintain attention to detail while keeping the overall action plan
in view.
- Be vigilant for red flags that indicate borrower troubles.
- Stay up-to-date on industry-wide issues that affect your borrowers,
as well as their internal operational and financial issues.
- Understand the legal issues.
- Make sure your action plan fits the facts and solves your problems
and those of the borrower.
- Show a sense of urgency. Time can work against you, so you need to
move quickly.
- Focus on better loan and collateral control and be mindful of your
risks.
- Always be fair and professional with your customer.
Falsified Financial Statements
A recent trend in the fraud detection at financial statements is the
use of automated processes with potential additional analytical
procedures using multicriteria decision aid analysis, neural networks,
machine learning techniques, data mining methods, support vector
machines or in general, computational intelligence-based methods
(Spathis et al. 2002; Kotsiantis et al. 2006; West and Bhattacharya
2016; Sadasivam et al. 2016; Omar et al. 2017; Jan 2018).
Auditors identified 19 cases that imply falsifications, analysis of
these cases detected 73 manipulations. The highest falsifications:
- Provisions with 24.7%
- Liabilities (long- or short-term) with 20.5%
- Asset Depreciation (13.7%
- Inventories (12.3%)
- Revenues (11.%)
- Expenses (9.6%)
Of the sampled firms, fraud occurred mainly in these sectors:
- constructions (26.0%)
- manufacturing (24.7%)
- commercial (20.5%)
- shipping (16.4%)
- technology (6.9%)
- renewable energy sources (5.5%)
Data Mining Analysis
The study did data mining on texts, removed stopwords and compared:
total assets, shareholders funds, net income, operating revenue, cash
flow (TASSE, SFUND, NETIN, OPREV, CFLOW). All p-values are above 0.245.
FFS is falsified.
- TASSE mean FFS vs Mean non-FFS 1272 : 277
- SFUND mean FFS vs Mean non-FFS 404 : 123
- NETIN mean FFS vs Mean non-FFS -27 : -8.8
- CFLOW mean FFS vs Mean non-FFS 7.7 : -3.8
The graph plots, falsified vs control show nearly double the
vocabulary of the control vocabulary. One explanation is that the
auditors try to describe in many different words and word pairs the
abnormalities they find in falsified financial statements.
Falsified texts largely use single words, such as:
- “evaluation, plan, problems, VAT, taxation, prerequisites,
compliance, long term, loans, should_have, reformed, mistakes, banks,
conciliation, rises, creditors, restructure”, etc.
Fraud Red Flags Evidence
Surveyed 194 experienced, nonprofessional investors to examine the
relations between their perceptions of the frequency of financial
reporting fraud, their use of financial statement information, the
importance they place on conducting their own fraud risk assessments,
and their use of fraud red flags.
Red flags commonly relied upon include SEC investigations, pending
litigation, violations of debt covenants, and high management turnover.
Investors rely less on company size and age, the need for external
financing, and the use of a non-Big 4 auditor.
Prior research identifies three factors that are typically present
when fraud occurs. “fraud triangle,” are incentives, opportunities, and
attitudes.
Investors and red flags
- when individuals perceive increased risk of monetary loss from some
action they invest additional effort in activities to self-insure
against that loss
- investors can choose from various sources of information including
financial data that is provided directly by firm management
- investors who are savvy enough to read financial statements may seek
to assess the likelihood of fraud as part of their financial statement
analyses.
- investors who choose information from secondary sources may do so
because they lack confidence in their own ability to comprehend and
analyze complex accounting information found in a firm’s financial
statements#
With respect to financial statement information, investors rely more
on balance sheet data and less on footnotes to the financial statements.
In relation to other information sources, investors rely more on stock
price, advice from professionals, and company risk. They rely less on
nonfinancial information related to operations, advice from the media,
and advice from nonprofessionals.
Investors rely more on regulators, external auditors, and analysts to
detect and report fraud. Investors rely less on upper management,
low/mid-level employees, the media, and short sellers to uncover
fraud.
…
Reference
Sandhu, Namrata. 2020. Behavioural Red Flags of Fraud: An Ex
Post Assessment of Types and Frequencies. Global Business Review,
21(2) 507-525. DOI: 10.1177/0972150919850410
Koornhof, C. 2000. Red flagging as an indicator of financial
statement fraud: The perspective of investors and lenders.
Department of Accounting and Finance, University of Pretoria. Meditari
Accounting Research, vol.8 2000, 69-93
McLaughlin, Kevin. 2009. Problem Loan Management: Know the
Red Flags and Move Quickly. The RMA Journal, Philadelphia. Vol 91,
issue 10. 66-68.
Kydros, Dimitrios, Pazarskis, Michail & Karakitsiou,
Athanasia. 2022. A frameworkfor identifying the falsified financial
statements using network textual analysis: a general model and the Greek
example. Annals of Operations Research. 316:513-527. https://doi.org/10.1007/s10479-021-04086-0
Brazel, Joseph F., Jones, Keith L., Thayer, Jane & Warne,
Rick C. 2015. Understanding investor perceptions of financial fraud
and their use of red flags: evidence from the field. Rev Account
Stud 20: 1373-1406. DOI 10.1007/s11142-015-9326-y
LS0tCnRpdGxlOiAiUmVkIEZsYWdzIG9mIEZyYXVkIgpvdXRwdXQ6IAogIGh0bWxfbm90ZWJvb2s6IAogICAgdG9jOiB5ZXMKICBodG1sX2RvY3VtZW50OgogICAgY29kZV9mb2xkaW5nOiBzaG93CiAgICB0aGVtZToKICAgICAgYmc6ICIjMjAyMTIzIgogICAgICBmZzogIiNCOEJDQzIiCiAgICAgIHByaW1hcnk6ICIjRUE4MEZDIgogICAgICBzZWNvbmRhcnk6ICIjMDBEQUM2IgogICAgICBiYXNlX2ZvbnQ6CiAgICAgICAgZ29vZ2xlOiBMYXRvCiAgICAgIGhlYWRpbmdfZm9udDoKICAgICAgICBnb29nbGU6IExhdG8KICBwZGZfZG9jdW1lbnQ6IAogICAgdG9jOiB5ZXMKLS0tCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KaWYgKHJlcXVpcmVOYW1lc3BhY2UoInRoZW1hdGljIikpIAogIHRoZW1hdGljOjp0aGVtYXRpY19ybWQoZm9udCA9ICJhdXRvIikKYGBgCgoKIyMgV2hhdCBhcmUgUmVkIEZsYWdzIG9mIEZyYXVkID8KCgpGcmF1ZHMgY2FuIGJlIGRldGVjdGVkLCBhIHBhcnRpY3VsYXJseSBlZmZlY3RpdmUgYW5kCmluZXhwZW5zaXZlIHdheSBpcyB0byBpZGVudGlmeSBmcmF1ZHN0ZXJzIGJ5IHNjcnV0aW5pemluZyBwZXJzb25uZWwgYmVoYXZpb3VyIGZvciBwZWN1bGlhcml0aWVzIHR5cGljYWwgb2YKZnJhdWRzdGVycy4gCgoKY2hlY2tsaXN0IG9mIGJlaGF2aW91cmFsIHJlZCBmbGFncyBvZiBmcmF1ZCBiYXNlZCBvbiBkYXRhIGNvbGxlY3RlZCwgCjE2IGRpZmZlcmVudCBiZWhhdmlvdXJhbCByZWQgZmxhZ3MgZXhoaWJpdGVkIGJ5IGZyYXVkc3RlcnMuIEFuIGV4YW1pbmF0aW9uIG9mCmZyZXF1ZW5jaWVzIGluZGljYXRlcyB0aGF0IHN0cm9uZyBhbWJpdGlvbiwgZXh0ZW5kZWQgd29ya2luZyBob3Vycywgc29jaWFsIGFsb29mbmVzcywgZGlzc2F0aXNmYWN0aW9uIHdpdGgKY3VycmVudCBqb2IgYW5kIGxpdmluZyBzdGFuZGFyZCBkaXNwcm9wb3J0aW9uYXRlIHRvIGN1cnJlbnQgbWVhbnMgYXJlIHRoZSBtb3N0IGZyZXF1ZW50bHkgZGlzcGxheWVkCmJlaGF2aW91cmFsIHJlZCBmbGFncyBvZiBmcmF1ZC4KCkl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoYXQgYmVoYXZpb3VyYWwgcmVkIGZsYWdzIG9mIGZyYXVkIGFyZSBub3Qgc3RlcmVvdHlwZXMsIG5vciBhcmUgdGhleSBoYXJkIGFuZCBmYXN0IHJ1bGVzLgoKCkNyb3dlICgyMDExKSBmb3VuZCBDRU8gaW52b2x2ZW1lbnQgaW4gODkgcGVyIGNlbnQgb2YgY29ycG9yYXRlIGZyYXVkcyBhbmQgcHJlcGFyZWQgYSBsaXN0IG9mIENFTy0KcmVsYXRlZCByZWQgZmxhZ3M6IGJ1bGx5IGF0dGl0dWRlLCBlZ28gYW5kIGF1dG9jcmF0aWMgc3R5bGUgb2Ygb3BlcmF0aW9uLiAKCgpNY0ZhZGRlbiAoMjAxNikgY29udGVuZGVkIHRoYXQgbWFueSBiZWhhdmlvdXJhbCByZWQgZmxhZ3MsIHN1Y2ggYXMgaW5zb21uaWEsIHJlbGF0aW9uc2hpcCBwcm9ibGVtcywgdHJvdWJsZWQKcmVsYXRpb25zaGlwcyB3aXRoIGNvLXdvcmtlcnMgYW5kIGRydWcgYWJ1c2UsIHN1Z2dlc3QgYW4gZW1wbG95ZWXigJlzIHBhcnRpY2lwYXRpb24gaW4gd29ya3BsYWNlIGZyYXVkLiBseWluZywgbGFjayBvZiBjb29wZXJhdGlvbiBkdXJpbmcgYXVkaXRzLCBjbGV2ZXJuZXNzIGFuZCBhcnJvZ2FuY2UgbWF5IGluZGljYXRlIGFuIGF0dGVtcHQgdG8KY29uY2VhbCBmcmF1ZCAoTWNGYWRkZW4sIDIwMTYpLgoKCmxpdmluZyBiZXlvbmQgbWVhbnMsIGZpbmFuY2lhbCBkaWZmaWN1bHRpZXMsIGNsb3NlIGFzc29jaWF0aW9ucyB3aXRoIHZlbmRvcnMsIHVud2lsbGluZ25lc3MgdG8gc2hhcmUgZHV0aWVzLCB1bnNjcnVwdWxvdXMgYmVoYXZpb3VyIGFuZCByZWNlbnQgZGl2b3JjZS9mYW1pbHkgcHJvYmxlbXMgYXJlIHRoZSBtb3N0IGNvbW1vbmx5IGRpc3BsYXllZCBiZWhhdmlvdXJhbCByZWQgZmxhZ3Mgb2YgZnJhdWQgKEFDRkUsIDIwMTIsIDIwMTQsIDIwMTYpLgoKCktQTUcgKDIwMTQpIHN1Z2dlc3RzIHRoYXQgZ2FtYmxpbmcgYW5kIGxpdmluZyBiZXlvbmQgbWVhbnMgYXJlIHRoZSBtb3N0IGZyZXF1ZW50bHkgZGlzcGxheWVkIHJlZCBmbGFncyBvZiBmcmF1ZAoKCgoKIyMjIENvbmNsdXNpb24KCkFuYWx5c2lzIG9mIHRoZSBhcnRpY3VsYXRpb25zIG9mIHRoZSByZXNwb25kZW50cyBoZWxwZWQgaWRlbnRpZnkgYXMgbWFueSBhcyAxNiBkaWZmZXJlbnQgYmVoYXZpb3VyYWwgcmVkIGZsYWdzIG9mIGZyYXVkIGV4aGliaXRlZCBieSBmcmF1ZCBwZXJwZXRyYXRvcnMgYmVmb3JlIHRoZSBkZXRlY3Rpb24gb2YgdGhlIGZyYXVkLiBPZiB0aGVzZSAxNiBiZWhhdmlvdXJhbCByZWQgZmxhZ3MsIHN0cm9uZyBhbWJpdGlvbiwgZXh0ZW5kZWQgd29ya2luZyBob3Vycywgc29jaWFsIGFsb29mbmVzcywgZGlzc2F0aXNmYWN0aW9uIHdpdGggY3VycmVudCBqb2IgYW5kIGxpdmluZyBzdGFuZGFyZCBkaXNwcm9wb3J0aW9uYXRlIHRvIGN1cnJlbnQgbWVhbnMgYXJlIHRoZSBtb3N0IGZyZXF1ZW50bHkgZGlzcGxheWVkIHJlZCBmbGFncy4gVGhlIGxlc3MgZnJlcXVlbnRseSBleGhpYml0ZWQgYmVoYXZpb3VyYWwgcmVkIGZsYWdzIGFyZSBydWRlIGFuZCBhdXRvY3JhdGljIGJlaGF2aW91ciwgcGVyc29uYWwgcHJvYmxlbXMsIGp1c3RpZnlpbmcgdW5ldGhpY2FsL2Rpc2hvbmVzdCBiZWhhdmlvdXIsIGVtcGxveW1lbnQtcmVsYXRlZCBwcm9ibGVtcywgaW50ZXJwZXJzb25hbCBjb2xsdXNpb24sIHJlZnVzaW5nIHByb21vdGlvbnMvcG9zdGluZ3MvbGVhdmUsIGNsb3NlIHJlbGF0aW9ucyB3aXRoIGNsaWVudHMvY3VzdG9tZXJzLCBzdWJzdGFuY2UgYWJ1c2UsIHRlcnJpdG9yaWFsIGJlaGF2aW91ciwgaGlzdG9yeSBvZiBsZWdhbCBwcm9ibGVtcyBhbmQgc2V4dWFsIGhhcmFzc21lbnQuCgpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShwYWxldHRlZXIpCgpkZiA9IHRpYmJsZSgKICBjaGFyID0gYygnc3Ryb25nIGFtYml0aW9uJywnZXh0ZW5kZWQgd29ya2luZyBob3VycycsJ3NvY2lhbCBhbG9vZm5lc3MnLCdkaXNzYXRpc2ZhY3Rpb24gd2l0aCBjdXJyZW50IGpvYicsJ2xpdmluZyBiZXlvbmQgbWVhbnMnLCdydWRlICYgYXV0b2NyYXRpYyBiZWhhdmlvdXInLCdwZXJzb25hbCBwcm9ibGVtcycsJ2Rpc2hvbmVzdCBiZWhhdmlvdXInLCdlbXBsb3ltZW50IHJlbGF0ZWQgcHJvYmxlbXMnLCdpbnRlcnBlcnNvbmFsIGNvbGx1c2lvbicsJ3JlZnVzaW5nIHByb21vdGlvbnMgZXRjJywnY2xvc2UgcmVsYXRpb25zIHdpdGggY2xpZW50cycsJ3N1YnN0YW5jZSBhYnVzZScsJ3Rlcml0b3JpYWwgYmVoYXZpb3VyJywnaGlzdG9yeSBvZiBsZWdhbCBwcm9ibGVtcycsJ3NleHVhbCBoYXJhc3NtZW50JyksCiAgcGVyY2VudGFnZSA9IGMoNDEuNSwgNDEuNSwgMjkuMywgMjkuMywgMjkuMywgMjQuNCwgMjQuNCwgMTkuNSwgMTcuMSwgMTQuNiwgMTIuMiwgOS44LCA3LjMsIDQuOSwgNC45LCAyLjQpCikKCmRmICU+JSAKICBnZ3Bsb3QoIGFlcyh4PSBwZXJjZW50YWdlLCAKICAgICAgICAgICAgICB5PSBmY3RfcmVvcmRlcihmYWN0b3IoY2hhciksIHBlcmNlbnRhZ2UpLAogICAgICAgICAgICAgIGZpbGw9IHBlcmNlbnRhZ2UKICAgICAgICAgICAgICApCiAgICAgICAgICApKwogIGdlb21fY29sKCkrCiAgc2NhbGVfZmlsbF9wYWxldHRlZXJfYyhgImdndGhlbWVzOjpSZWQiYCkrCiAgY29vcmRfY2FydGVzaWFuKGV4cGFuZCA9IEYpKwogIGxhYnMoeT0iIiwgdGl0bGUgPSAiQmVoYXZpb3VyYWwgUmVkIEZsYWdzIG9mIEZyYXVkIiwgY2FwdGlvbiA9ICIoU2FuZGh1LCAyMDE5KSIpKwogIHRoZW1lKHBsb3QuY2FwdGlvbiA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSkpCiAgCgoKCmBgYAoKCgojIyBGaW5hbmNpYWwgU3RhdGVtZW50IFJlZCBGbGFncwoKClJlZCBmbGFncyBhcyBhIG1ldGhvZCBpcyB2aWV3ZWQgYXMgYSBtZWFucyBmb3IgbWFuYWdpbmcgYXVkaXQgcmlzayBhbmQKZGV0ZWN0aW5nIGZyYXVkIG9yIGVycm9yLiBSZWQgZmxhZ3MgY2FuIGJlIHVzZWQgYXMgYW4gZWFybHkgd2FybmluZyBzeXN0ZW0gYnkKYm90aCBhdWRpdG9ycyBhbmQgb3RoZXIgc3Rha2Vob2xkZXJzIHRvIGFzc2VzcyB0aGUgcmlzayBvZiBmaW5hbmNpYWwgc3RhdGVtZW50CmZyYXVkLiBUaGUgcHJvYmFiaWxpdHkgb2YgZnJhdWQgc2hvdWxkIGJlIGV2YWx1YXRlZCBvbiBhIGNvbWJpbmF0aW9uIG9mIHJlZCBmbGFncyAKcmF0aGVyIHRoYW4gYmVpbmcgbGltaXRlZCB0byBvbmUgb3IgdHdvIGluZGljYXRvcnMuIAoKCgp8IFRhYmxlIDEgKGEpIG1vc3QgaW1wb3J0YW50IHJlZCBmbGFncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IDEuIGRpc2hvbmVzdCBvciB1bmV0aGljYWwgbWFuYWdlbWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAyLiBGcmVxdWVudCBjaGFuZ2VzIG9mIGxlZ2FsIGNvdW5zZWwsIGF1ZGl0b3JzIG9yIGV4dGVybmFsIGJvYXJkICB8CnwgMy4gTWFuYWdlbWVudCBpcyBkb21pbmF0ZWQgYnkgb25lIHBlcnNvbiAob3IgYSBzbWFsbCBncm91cCkgYW5kIG5vIGVmZmVjdGl2ZSBvdmVyc2VlaW5nIGJvYXJkIG9yIGNvbW1pdHRlZSB8CnwgNC4gU3VzcGVuc2lvbiBvciBkZWxpc3RpbmcgZnJvbSBzdG9jayBleGNoYW5nZSAgICAgICAgICAgICAgICAgICAgfAp8IDUuIG1hbmFnZW1lbnQgcmVwdXRhdGlvbiBpbiB0aGUgYnVzaW5lc3MgY29tbXVuaXR5IGlzIHBvb3IgICAgICAgIHwKfCA2LiBDb250aW51b3VzIHByb2JsZW1zIHdpdGggcmVndWxhdG9yeSBhZ2VuY2llcy4gICAgICAgICAgICAgICAgICB8CnwgNy4gSW50ZXJuYWwgb3IgZXh0ZXJuYWwgZmFjdG9ycyByYWlzZSBzdWJzdGFudGlhbCBkb3VidCBhYm91dCB0aGUgdGhlIGVudGl0eSBhYmlsaXR5IHRvIGNvbnRpbnVlIGlzIGEgY29uY2VybiB8CnwgOC4gSW5hYmlsaXR5IHRvIGdlbmVyYXRlIGNhc2ggZmxvd3MgZnJvbSBvcGVyYXRpb25zIHdoaWxlIHJlcG9ydGluZyBlYXJuaW5ncyBhbmQgZWFybmluZ3MgZ3Jvd3RoIHwKfCA5LiBUaGVyZSBoYXMgYmVlbiBhIGJyZWFrZG93biBpbiBhY2NvdW50aW5nIGFuZCBjb250cm9sIHN5c3RlbXMgYXMgcmVmbGVjdGVkIGJ5IHRoZSBsYXRlIGlzc3Vpbmcgb2YgZmluYW5jaWFsIHN0YXRlbWVudHMgb3IgYSBxdWFsaWZpZWQgYXVkaXQgcmVwb3J0IHwKfCAxMC4gVGhlcmUgaXMgYSBoaWdoIHR1cm5vdmVyIHJhdGUgb2Yga2V5IHRvcCBtYW5hZ2VtZW50LCBwYXJ0aWN1bGFybHkgZmluYW5jaWFsIGV4ZWN1dGl2ZXMgIHwKCgoqICoqTm90ZSoqOiBUaGVzZSAxMCBtb3N0IGltcG9ydGFudCByZWQgZmxhZ3MgYXBwbHkgdG8gTGVuZGVycyBhbmQgSW52ZXN0b3JzIGFzIHdlbGwKCgojIyMjIHJhbmtpbmcgb2YgbGVhc3QgaW1wb3J0YW50IAoKMS4gUHJlc3N1cmUgaXMgZXhlcnRlZCBvbiBhY2NvdW50aW5nIHBlcnNvbm5lbCB0byBjb21wbGV0ZSBmaW5hbmNpYWwgc3RhdGVtZW50cyBpbiBhbiB1bnVzdWFsbHkgc2hvcnQgcGVyaW9kIGFzIHJlZmxlY3RlZCBieSBhcHByb3ZhbCBkYXRlIG9mIGZpbmFuY2lhbCBzdGF0ZW1lbnRzLgoyLiBSYXBpZCBleHBhbnNpb24gaW50byBuZXcgcHJvZHVjdCBsaW5lcy4KMy4gVW51c3VhbGx5IGxvbmcgYnVzaW5lc3MgY3ljbGUuCjQuIEtleSBleGVjdXRpdmVzIGZlZWwgdW5kdWUgZmFtaWx5LCBwZWVyLCBvciBjb21tdW5pdHkgcHJlc3N1cmUgdG8Kc3VjY2VlZC4KNS4gVGhlIGVudGl0eSBoYXMgYSBzaWduaWZpY2FudCBpbnZlc3RtZW50IGluIGFuIGluZHVzdHJ5IG9yIHByb2R1Y3QKbGluZSBub3RlZCBmb3IgcmFwaWQgY2hhbmdlLgo2LiBLZXkgZXhlY3V0aXZlcyB3aXRoIHBlcmNlaXZlZCBpbmFkZXF1YXRlIGluY29tZXMgcmVsYXRpdmUgdG8KaW5kdXN0cnkuCjcuIExpbWl0ZWQgY29sbGF0ZXJhbCBhdmFpbGFibGUuCjguIEFkdmVyc2UgcG9saXRpY2FsLCBzb2NpYWwgb3IgZW52aXJvbm1lbnRhbCBpbXBhY3QuCjkuIERlY2xpbmluZyBkZW1hbmQgZm9yIHByb2R1Y3RzLgoxMC4gVGhlIGVudGl0eSBpcyBoZWF2aWx5IGRlcGVuZGVudCBvbiBvbmUgb3IgYSBmZXcgcHJvZHVjdHMsIGN1c3RvbWVycyBvciBzdXBwbGllcnMuCgoKCj4gImRpc2hvbmVzdCBhbmQgdW5ldGhpY2FsIG1hbmFnZW1lbnQiIGhhcyBiZWVuIGlkZW50aWZpZWQgYXMgX3RoZV8gbW9zdCBpbXBvcnRhbnQgcmVkIGZsYWcKCgoKIyMjIEV4dHJhIFJlZCBGbGFncyDwn5qpCgotIE1lcmdlciBhbmQgZGUtbWVyZ2VyIG9mIGdyb3VwIGNvbXBhbmllcy4KCi0gU2lnbmlmaWNhbnQgcHJlc2VuY2Ugb2YgZmluYW5jaWFsIGV4ZWN1dGl2ZXMgaW4gdGhlIHRvcCBtYW5hZ2VtZW50IGVjaGVsb24uCgotIEEgY2hhbmdlIGluIGZpbmFuY2lhbCB5ZWFyLWVuZHMgKG1ha2luZyBhY2NvdW50aW5nIHJlc3VsdHMgaW5jb21wYXJhYmxlKS4KCi0gU2l6ZSBvZiB0aGUgYXVkaXRpbmcgZmlybSBpbiByZWxhdGlvbiB0byB0aGUgY2xpZW50LgoKLSBMaW1pdGVkIG1hbmFnZW1lbnQgb3ZlcnNlZWluZyBvZiByZW1vdGUgb3BlcmF0aW9ucy4KCi0gVW5za2lsbGVkLCBpbmV4cGVyaWVuY2VkIGV4ZWN1dGl2ZXMgcHJvbW90ZWQgaW50byBwb3NpdGlvbnMgcHJlbWF0dXJlbHkuCgotIEZyZXF1ZW50IGNvcnBvcmF0ZSByZXN0cnVjdHVyaW5nLgoKLSBTaWduaWZpY2FudCBjaGFuZ2VzIGluIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGluY29tZSwgZmVlcyBhbmQgaW50ZXJlc3QuCgotIEdvb2QgbmV3cyB0aGF0IGlzIHRvbyBnb29kIHRvIGJlIHRydWUuCgotIFdpZGUgZmx1Y3R1YXRpb25zIGluIGZpbmFuY2lhbCByYXRpb3MgZnJvbSB5ZWFyIHRvIHllYXIuCgotIFNoYXJlIG9wdGlvbnMgYmVpbmcgcmUtcHJpY2VkLgoKCiMjIyBDb25jbHVzaW9uCgpUbyBtYW5hZ2UgdGhlIHJpc2sgb2YgZnJhdWQsIGluY2x1ZGluZyBmaW5hbmNpYWwgc3RhdGVtZW50IGZyYXVkLCBhbiBlbnRpdHkgc2hvdWxkIGFkZHJlc3MgdGhlIHByb2JsZW0gaG9saXN0aWNhbGx5LiBNZWFzdXJlcyB0byBwcmV2ZW50LCBkZXRlY3QgYW5kIGludmVzdGlnYXRlIGZyYXVkIHNob3VsZCBiZSBpbiBwbGFjZS4gVGhlIHJpc2sgb2YgZmluYW5jaWFsIHN0YXRlbWVudCBmcmF1ZCBpcyBjbGVhcmx5IGEgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGJvYXJkIG9mIGRpcmVjdG9ycywgb3IgaXRzIGVxdWl2YWxlbnQgaW4gb3RoZXIgb3JnYW5pc2F0aW9uYWwgc3RydWN0dXJlcywgZXNwZWNpYWxseSB0aGUgbm9uLWV4ZWN1dGl2ZSBtZW1iZXJzLiAKCgoKCgoKCgojIyBMb2FuIE1hbmFnZW1lbnQgUmVkIEZsYWdzCgoKRml2ZSBzdGVwcyB0aGF0IGxlbmRlcnMgc2hvdWxkIHRha2Ugd2hlbiBjb25mcm9udGluZyBhIHByb2JsZW0gbG9hbiwgaW5jbHVkaW5nOiAKCjEuIEtub3cgdGhlIGZhY3RzIGFib3V0IHRoZSBib3Jyb3dlci4gCjIuIElkZW50aWZ5IHRoZSBjb21wYW554oCZcyBhbmQgdGhlIGJhbmsncyBwcm9ibGVtcyB3aXRoIHRoZSBsb2FuLiAKMy4gRGV0ZXJtaW5lIHBvc3NpYmxlIGNvdXJzZXMgb2YgYWN0aW9uLiAKNC4gQ3JlYXRlIGEgcHJvYWN0aXZlLCBvYmplY3RpdmUtYmFzZWQgYWN0aW9uIHBsYW4uIAo1LiBFc3RhYmxpc2ggYSBwcm9ncmFtIHRvIG1vbml0b3IgdGhlIGZpcm0uCgoKCi0gRmluZCByZWQgZmxhZ3MgYnkgZXhhbWluaW5nIHRoZSBmaXJtJ3MgZmluYW5jaWFsIHN0YXRlbWVudHMsIG9ic2VydmluZyB0aGUgY29tcGFueSdzIGludGVybmFsIG9wZXJhdGlvbnMsIGFuZCB1bmRlcnN0YW5kaW5nIHRoZSBib3Jyb3dlcidzIGluZHVzdHJ5LgoKCj4gIlJlZCBmbGFncyBhbG1vc3QgYWx3YXlzIGFwcGVhciBiZWZvcmUgdGhlcmUgaXMgYSBwYXltZW50IGRlZmF1bHTigJ0KCgpSZWQgZmxhZ3MtaW5kaWNhdG9ycyB0aGF0IGEgYnVzaW5lc3MgbWlnaHQgYmUgaGF2aW5nIHByb2JsZW1zOgoKLSBleGFtaW5pbmcgdGhlIGZpcm0ncyBmaW5hbmNpYWwgc3RhdGVtZW50cwotIG9ic2VydmluZyB0aGUgY29tcGFueSdzIGludGVybmFsIG9wZXJhdGlvbnMKLSB1bmRlcnN0YW5kaW5nIHRoZSBib3Jyb3dlcidzIGluZHVzdHJ5LgoKCkxlbmRlcnM6CgotIGxvb2sgZm9yIGluZGljYXRvcnMgdGhhdCBoYXZlIHRoZSBncmVhdGVzdCBpbXBhY3Qgb24gZmluYW5jaWFsIHBlcmZvcm1hbmNlLCBzdWNoIGFzIGNhc2ggZmxvdywKYXNzZXQgdmFsdWVzLCBvciBjb2xsYXRlcmFsIGNvdmVyYWdlLCBhbmQgY29ubmVjdCB0aGUgZG90cyBiZXR3ZWVuIHRoZW0gdG8gZ2V0IGEgZnVsbCBmaW5hbmNpYWwgcGljdHVyZS4KCgoKCiMjIyBWICYgQyBGcmFtZXdvcmsgCgoiViIgc3RhbmRzIGZvciBjb21wYW55IHZpYWJpbGl0eS4gIkMiIHN0YW5kcyBmb3IgY29sbGF0ZXJhbCBhbmQgYXNzZXQgdmFsdWVzLgoKfCB2aWFiaWxpdHkgfCBjb2xsYXRlcmFsIHwgbWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDotLS0tLS0tLSB8IDotLS0tLS0tLS0gfCA6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgKCAtICkgICAgIHwgKCAtICkgICAgICB8IGRpc3RyZXNzZWQgc2FsZSBvciBhIGxpcXVpZGF0aW9uLCBmb3JlY2xvc3VyZSwgb3Igd2luZC1kb3duIHNjZW5hcmlvIHwKfCAoIC0gKSAgICAgfCAoICsgKSAgICAgIHwgb3JkZXJseSBzYWxlIG9yIGxpcXVpZGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8ICggKyApICAgICB8ICggLSApICAgICAgfCBwb3RlbnRpYWwgZm9yIGEgdHVybmFyb3VuZCBvciByZXN0cnVjdHVyaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgKCArICkgICAgIHwgKCArICkgICAgICB8IGxpa2VseSBmYWxzZSBhbGFybSwgZmlybSBpcyBoZWFsdGh5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKCgoKIyMjIEdlbmVyYWwgUHJpbmNpcGxlcwoKKiBNYWtlIHN1cmUgdGhlIGRvY3VtZW50YXRpb24gSXMgYWNjdXJhdGUgYW5kIGNvbXBsZXRlLgoqIENvbW11bmljYXRlIGNsZWFybHkgYW5kIGVmZmVjdGl2ZWx5IHdpdGggeW91ciBjdXN0b21lci4KKiBFdmFsdWF0ZSBhIGZpcm0ncyBtYW5hZ2VtZW50IHRvIGRldGVybWluZSBpZiBpdCBuZWVkcyBoZWxwIG9yIHNob3VsZCBiZSByZXBsYWNlZC4KKiBSZW1lbWJlciB0aGF0IHRoZSBiYW5rIGNvbnRyb2xzIHRoZSBsb2FuLCBidXQgaXQgZG9lc24ndCBjb250cm9sIHRoZSBib3Jyb3dlci4KKiBHZXQgdmFsdWUgaW4gcmV0dXJuIGZvciBsb2FuIHdhaXZlcnMgb3IgYW1lbmRtZW50cy4KKiBBdm9pZCBwdXR0aW5nIG5ldyBtb25leSBpbnRvIGEgbGVuZGVyIHdpdGggYSB0cm91YmxlZCBsb2FuLgoqIFdvcmsgY2xvc2VseSB3aXRoIHRoaXJkIHBhcnRpZXM6IG90aGVyIGxlbmRlcnMsIGd1YXJhbnRvcnMsIG9yIGVxdWl0eSBob2xkZXJzLgoKCiMjIyBUaXBzIGZvciBTdWNjZXNzCgoqIFN0YXkgY2xvc2UgdG8gdGhlIGJvcnJvd2VyLiBNYWtlIHN1cmUgeW91IHVuZGVyc3RhbmQgdGhlIGtleSBpc3N1ZXMgYW5kIHdoYXQncyBnb2luZyBvbi4gUmVmdXNlIHRvIGJlIGlnbm9yYW50LgoqIERvbid0IGxldCBwZXJzb25hbCByZWxhdGlvbnNoaXBzIGNsb3VkIHlvdXIganVkZ21lbnQuIFlvdSBuZWVkIHRvIHN0YXkgb2JqZWN0aXZlLiBZb3UgbmVlZCB0byBzdGF5IHNtYXJ0LiBDb21tdW5pY2F0ZSBJbiBhIGNsZWFyIGFuZCBob25lc3Qgd2F5LgoqIE1pbmltaXplIGJhZCBwdWJsaWNpdHkgYW5kIGJlIHNlbnNpdGl2ZSB0byBsZW5kZXIgbGlhYmlsaXR5IGFuZCBDb21tdW5pdHkgUmVpbnZlc3RtZW50IEFjdCBpc3N1ZXMuCiogTWFpbnRhaW4gYXR0ZW50aW9uIHRvIGRldGFpbCB3aGlsZSBrZWVwaW5nIHRoZSBvdmVyYWxsIGFjdGlvbiBwbGFuIGluIHZpZXcuCiogQmUgdmlnaWxhbnQgZm9yIHJlZCBmbGFncyB0aGF0IGluZGljYXRlIGJvcnJvd2VyIHRyb3VibGVzLgoqIFN0YXkgdXAtdG8tZGF0ZSBvbiBpbmR1c3RyeS13aWRlIGlzc3VlcyB0aGF0IGFmZmVjdCB5b3VyIGJvcnJvd2VycywgYXMgd2VsbCBhcyB0aGVpciBpbnRlcm5hbCBvcGVyYXRpb25hbCBhbmQgZmluYW5jaWFsIGlzc3Vlcy4KKiBVbmRlcnN0YW5kIHRoZSBsZWdhbCBpc3N1ZXMuCiogTWFrZSBzdXJlIHlvdXIgYWN0aW9uIHBsYW4gZml0cyB0aGUgZmFjdHMgYW5kIHNvbHZlcyB5b3VyIHByb2JsZW1zIGFuZCB0aG9zZSBvZiB0aGUgYm9ycm93ZXIuCiogU2hvdyBhIHNlbnNlIG9mIHVyZ2VuY3kuIFRpbWUgY2FuIHdvcmsgYWdhaW5zdCB5b3UsIHNvIHlvdSBuZWVkIHRvIG1vdmUgcXVpY2tseS4KKiBGb2N1cyBvbiBiZXR0ZXIgbG9hbiBhbmQgY29sbGF0ZXJhbCBjb250cm9sIGFuZCBiZSBtaW5kZnVsIG9mIHlvdXIgcmlza3MuCiogQWx3YXlzIGJlIGZhaXIgYW5kIHByb2Zlc3Npb25hbCB3aXRoIHlvdXIgY3VzdG9tZXIuCgoKCgojIyBGYWxzaWZpZWQgRmluYW5jaWFsIFN0YXRlbWVudHMKCkEgcmVjZW50IHRyZW5kIGluIHRoZSBmcmF1ZCBkZXRlY3Rpb24gYXQgZmluYW5jaWFsIHN0YXRlbWVudHMgaXMgdGhlIHVzZSBvZiBhdXRvbWF0ZWQgcHJvY2Vzc2VzIHdpdGggcG90ZW50aWFsIGFkZGl0aW9uYWwgYW5hbHl0aWNhbCBwcm9jZWR1cmVzIHVzaW5nIG11bHRpY3JpdGVyaWEgZGVjaXNpb24gYWlkIGFuYWx5c2lzLCBuZXVyYWwgbmV0d29ya3MsIG1hY2hpbmUgbGVhcm5pbmcgdGVjaG5pcXVlcywgZGF0YSBtaW5pbmcgbWV0aG9kcywgc3VwcG9ydCB2ZWN0b3IgbWFjaGluZXMgb3IgaW4gZ2VuZXJhbCwgY29tcHV0YXRpb25hbCBpbnRlbGxpZ2VuY2UtYmFzZWQgbWV0aG9kcyAoU3BhdGhpcyBldCBhbC4gMjAwMjsgS290c2lhbnRpcyBldCBhbC4gMjAwNjsgV2VzdCBhbmQgQmhhdHRhY2hhcnlhIDIwMTY7IFNhZGFzaXZhbSBldCBhbC4gMjAxNjsgT21hciBldCBhbC4gMjAxNzsgSmFuIDIwMTgpLgoKCkF1ZGl0b3JzIGlkZW50aWZpZWQgMTkgY2FzZXMgdGhhdCBpbXBseSBmYWxzaWZpY2F0aW9ucywgYW5hbHlzaXMgb2YgdGhlc2UgY2FzZXMgZGV0ZWN0ZWQgNzMgbWFuaXB1bGF0aW9ucy4gClRoZSBoaWdoZXN0IGZhbHNpZmljYXRpb25zOiAKCi0gUHJvdmlzaW9ucyB3aXRoIDI0LjclCi0gTGlhYmlsaXRpZXMgKGxvbmctIG9yIHNob3J0LXRlcm0pIHdpdGggMjAuNSUKLSBBc3NldCBEZXByZWNpYXRpb24gKDEzLjclCi0gSW52ZW50b3JpZXMgKDEyLjMlKQotIFJldmVudWVzICgxMS4lKQotIEV4cGVuc2VzICg5LjYlKQoKCk9mIHRoZSBzYW1wbGVkIGZpcm1zLCBmcmF1ZCBvY2N1cnJlZCBtYWlubHkgaW4gdGhlc2Ugc2VjdG9yczoKCi0gY29uc3RydWN0aW9ucyAoMjYuMCUpCi0gbWFudWZhY3R1cmluZyAoMjQuNyUpCi0gY29tbWVyY2lhbCAoMjAuNSUpCi0gc2hpcHBpbmcgKDE2LjQlKQotIHRlY2hub2xvZ3kgKDYuOSUpCi0gcmVuZXdhYmxlIGVuZXJneSBzb3VyY2VzICg1LjUlKQoKIyMjIERhdGEgTWluaW5nIEFuYWx5c2lzCgpUaGUgc3R1ZHkgZGlkIGRhdGEgbWluaW5nIG9uIHRleHRzLCByZW1vdmVkIHN0b3B3b3JkcyBhbmQgY29tcGFyZWQ6IHRvdGFsIGFzc2V0cywgIHNoYXJlaG9sZGVycyBmdW5kcywgbmV0IGluY29tZSwgb3BlcmF0aW5nIHJldmVudWUsIGNhc2ggZmxvdyAoVEFTU0UsIFNGVU5ELCBORVRJTiwgT1BSRVYsIENGTE9XKS4gQWxsIHAtdmFsdWVzIGFyZSBhYm92ZSAwLjI0NS4gRkZTIGlzIGZhbHNpZmllZC4KCi0gVEFTU0UgbWVhbiBGRlMgdnMgTWVhbiBub24tRkZTICAgIDEyNzIgOiAyNzcKLSBTRlVORCBtZWFuIEZGUyB2cyBNZWFuIG5vbi1GRlMgICAgNDA0IDogMTIzCi0gTkVUSU4gbWVhbiBGRlMgdnMgTWVhbiBub24tRkZTICAgIC0yNyA6IC04LjgKLSBDRkxPVyBtZWFuIEZGUyB2cyBNZWFuIG5vbi1GRlMgICAgNy43IDogLTMuOAoKVGhlIGdyYXBoIHBsb3RzLCBmYWxzaWZpZWQgdnMgY29udHJvbCBzaG93IG5lYXJseSBkb3VibGUgdGhlIHZvY2FidWxhcnkgb2YgdGhlIGNvbnRyb2wgdm9jYWJ1bGFyeS4gT25lIGV4cGxhbmF0aW9uIGlzIHRoYXQgdGhlIGF1ZGl0b3JzIHRyeSB0byBkZXNjcmliZSBpbiBtYW55IGRpZmZlcmVudCB3b3JkcyBhbmQgd29yZCBwYWlycyB0aGUgYWJub3JtYWxpdGllcyB0aGV5IGZpbmQgaW4gZmFsc2lmaWVkIGZpbmFuY2lhbCBzdGF0ZW1lbnRzLiAKCkZhbHNpZmllZCB0ZXh0cyBsYXJnZWx5IHVzZSBzaW5nbGUgd29yZHMsIHN1Y2ggYXM6IAoKLSDigJxldmFsdWF0aW9uLCBwbGFuLCBwcm9ibGVtcywgVkFULCB0YXhhdGlvbiwgcHJlcmVxdWlzaXRlcywgY29tcGxpYW5jZSwgbG9uZyB0ZXJtLCBsb2Fucywgc2hvdWxkX2hhdmUsIHJlZm9ybWVkLCBtaXN0YWtlcywgYmFua3MsIGNvbmNpbGlhdGlvbiwgcmlzZXMsIGNyZWRpdG9ycywgcmVzdHJ1Y3R1cmXigJ0sIGV0Yy4KCgoKCiMjIEZyYXVkIFJlZCBGbGFncyBFdmlkZW5jZQoKClN1cnZleWVkIDE5NCBleHBlcmllbmNlZCwgbm9ucHJvZmVzc2lvbmFsIGludmVzdG9ycyB0byBleGFtaW5lIHRoZSByZWxhdGlvbnMgYmV0d2VlbiB0aGVpciBwZXJjZXB0aW9ucyBvZiB0aGUgZnJlcXVlbmN5IG9mIGZpbmFuY2lhbCByZXBvcnRpbmcgZnJhdWQsIHRoZWlyIHVzZSBvZiBmaW5hbmNpYWwgc3RhdGVtZW50IGluZm9ybWF0aW9uLCB0aGUgaW1wb3J0YW5jZSB0aGV5IHBsYWNlIG9uIGNvbmR1Y3RpbmcgdGhlaXIgb3duIGZyYXVkIHJpc2sgYXNzZXNzbWVudHMsIGFuZCB0aGVpciB1c2Ugb2YgZnJhdWQgcmVkIGZsYWdzLgoKClJlZCBmbGFncyBjb21tb25seSByZWxpZWQgdXBvbiBpbmNsdWRlIFNFQyBpbnZlc3RpZ2F0aW9ucywgcGVuZGluZyBsaXRpZ2F0aW9uLCB2aW9sYXRpb25zIG9mIGRlYnQgY292ZW5hbnRzLCBhbmQgaGlnaCBtYW5hZ2VtZW50IHR1cm5vdmVyLiBJbnZlc3RvcnMgcmVseSBsZXNzIG9uIGNvbXBhbnkgc2l6ZSBhbmQgYWdlLCB0aGUgbmVlZCBmb3IgZXh0ZXJuYWwgZmluYW5jaW5nLCBhbmQgdGhlIHVzZSBvZiBhIG5vbi1CaWcgNCBhdWRpdG9yLgoKUHJpb3IgcmVzZWFyY2ggaWRlbnRpZmllcyB0aHJlZSBmYWN0b3JzIHRoYXQgYXJlIHR5cGljYWxseSBwcmVzZW50IHdoZW4gZnJhdWQgb2NjdXJzLiAiZnJhdWQgdHJpYW5nbGUsIiBhcmUgaW5jZW50aXZlcywgb3Bwb3J0dW5pdGllcywgYW5kIGF0dGl0dWRlcy4KCiMjIyBJbnZlc3RvcnMgYW5kIHJlZCBmbGFncwoKMS4gd2hlbiBpbmRpdmlkdWFscyBwZXJjZWl2ZSBpbmNyZWFzZWQgcmlzayBvZiBtb25ldGFyeSBsb3NzIGZyb20gc29tZSBhY3Rpb24gdGhleSBpbnZlc3QgYWRkaXRpb25hbCBlZmZvcnQgaW4gYWN0aXZpdGllcyB0byBzZWxmLWluc3VyZSBhZ2FpbnN0IHRoYXQgbG9zcyAKMi4gaW52ZXN0b3JzIGNhbiBjaG9vc2UgZnJvbSB2YXJpb3VzIHNvdXJjZXMgb2YgaW5mb3JtYXRpb24gaW5jbHVkaW5nIGZpbmFuY2lhbCBkYXRhIHRoYXQgaXMgcHJvdmlkZWQgZGlyZWN0bHkgYnkgZmlybSBtYW5hZ2VtZW50CjMuIGludmVzdG9ycyB3aG8gYXJlIHNhdnZ5IGVub3VnaCB0byByZWFkIGZpbmFuY2lhbCBzdGF0ZW1lbnRzIG1heSBzZWVrIHRvIGFzc2VzcyB0aGUgbGlrZWxpaG9vZCBvZiBmcmF1ZCBhcyBwYXJ0IG9mIHRoZWlyIGZpbmFuY2lhbCBzdGF0ZW1lbnQgYW5hbHlzZXMuCjQuIGludmVzdG9ycyB3aG8gY2hvb3NlIGluZm9ybWF0aW9uIGZyb20gc2Vjb25kYXJ5IHNvdXJjZXMgbWF5IGRvIHNvIGJlY2F1c2UgdGhleSBsYWNrIGNvbmZpZGVuY2UgaW4gdGhlaXIgb3duIGFiaWxpdHkgdG8gY29tcHJlaGVuZCBhbmQgYW5hbHl6ZSBjb21wbGV4IGFjY291bnRpbmcgaW5mb3JtYXRpb24gZm91bmQgaW4gYSBmaXJt4oCZcyBmaW5hbmNpYWwgc3RhdGVtZW50cyMKCgpXaXRoIHJlc3BlY3QgdG8gZmluYW5jaWFsIHN0YXRlbWVudCBpbmZvcm1hdGlvbiwgaW52ZXN0b3JzIHJlbHkgbW9yZSBvbiBiYWxhbmNlIHNoZWV0IGRhdGEgYW5kIGxlc3Mgb24gZm9vdG5vdGVzIHRvIHRoZSBmaW5hbmNpYWwgc3RhdGVtZW50cy4gSW4gcmVsYXRpb24gdG8gb3RoZXIgaW5mb3JtYXRpb24gc291cmNlcywgaW52ZXN0b3JzIHJlbHkgbW9yZSBvbiBzdG9jayBwcmljZSwgYWR2aWNlIGZyb20gcHJvZmVzc2lvbmFscywgYW5kIGNvbXBhbnkgcmlzay4gVGhleSByZWx5IGxlc3Mgb24gbm9uZmluYW5jaWFsIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gb3BlcmF0aW9ucywgYWR2aWNlIGZyb20gdGhlIG1lZGlhLCBhbmQgYWR2aWNlIGZyb20gbm9ucHJvZmVzc2lvbmFscy4KCgpJbnZlc3RvcnMgcmVseSBtb3JlIG9uIHJlZ3VsYXRvcnMsIGV4dGVybmFsIGF1ZGl0b3JzLCBhbmQgYW5hbHlzdHMgdG8gZGV0ZWN0IGFuZCByZXBvcnQgZnJhdWQuIEludmVzdG9ycyByZWx5IGxlc3Mgb24gdXBwZXIgbWFuYWdlbWVudCwgbG93L21pZC1sZXZlbCBlbXBsb3llZXMsIHRoZSBtZWRpYSwgYW5kIHNob3J0IHNlbGxlcnMgdG8gdW5jb3ZlciBmcmF1ZC4KCgoKCgouLi4KCgojIFJlZmVyZW5jZQoKLSBTYW5kaHUsIE5hbXJhdGEuIDIwMjAuIF9CZWhhdmlvdXJhbCBSZWQgRmxhZ3Mgb2YgRnJhdWQ6IEFuIEV4IFBvc3QgQXNzZXNzbWVudCBvZiBUeXBlcyBhbmQgRnJlcXVlbmNpZXMuXyBHbG9iYWwgQnVzaW5lc3MgUmV2aWV3LCAyMSgyKSA1MDctNTI1LiBET0k6IDEwLjExNzcvMDk3MjE1MDkxOTg1MDQxMAoKLSBLb29ybmhvZiwgQy4gMjAwMC4gX1JlZCBmbGFnZ2luZyBhcyBhbiBpbmRpY2F0b3Igb2YgZmluYW5jaWFsIHN0YXRlbWVudCBmcmF1ZDogVGhlIHBlcnNwZWN0aXZlIG9mIGludmVzdG9ycyBhbmQgbGVuZGVyc18uIERlcGFydG1lbnQgb2YgQWNjb3VudGluZyBhbmQgRmluYW5jZSwgVW5pdmVyc2l0eSBvZiBQcmV0b3JpYS4gTWVkaXRhcmkgQWNjb3VudGluZyBSZXNlYXJjaCwgdm9sLjggMjAwMCwgNjktOTMKCi0gTWNMYXVnaGxpbiwgS2V2aW4uIDIwMDkuIF9Qcm9ibGVtIExvYW4gTWFuYWdlbWVudDogS25vdyB0aGUgUmVkIEZsYWdzIGFuZCBNb3ZlIFF1aWNrbHlfLiBUaGUgUk1BIEpvdXJuYWwsIFBoaWxhZGVscGhpYS4gVm9sIDkxLCBpc3N1ZSAxMC4gNjYtNjguCgotIEt5ZHJvcywgRGltaXRyaW9zLCBQYXphcnNraXMsIE1pY2hhaWwgJiBLYXJha2l0c2lvdSwgQXRoYW5hc2lhLiAyMDIyLiBfQSBmcmFtZXdvcmtmb3IgaWRlbnRpZnlpbmcgdGhlIGZhbHNpZmllZCBmaW5hbmNpYWwgc3RhdGVtZW50cyB1c2luZyBuZXR3b3JrIHRleHR1YWwgYW5hbHlzaXM6IGEgZ2VuZXJhbCBtb2RlbCBhbmQgdGhlIEdyZWVrIGV4YW1wbGVfLiBBbm5hbHMgb2YgT3BlcmF0aW9ucyBSZXNlYXJjaC4gMzE2OjUxMy01MjcuIGh0dHBzOi8vZG9pLm9yZy8xMC4xMDA3L3MxMDQ3OS0wMjEtMDQwODYtMAoKCi0gQnJhemVsLCBKb3NlcGggRi4sIEpvbmVzLCBLZWl0aCBMLiwgVGhheWVyLCBKYW5lICYgV2FybmUsIFJpY2sgQy4gMjAxNS4gX1VuZGVyc3RhbmRpbmcgaW52ZXN0b3IgcGVyY2VwdGlvbnMgb2YgZmluYW5jaWFsIGZyYXVkIGFuZCB0aGVpciB1c2Ugb2YgcmVkIGZsYWdzOiBldmlkZW5jZSBmcm9tIHRoZSBmaWVsZF8uIFJldiBBY2NvdW50IFN0dWQgMjA6IDEzNzMtMTQwNi4gRE9JIDEwLjEwMDcvczExMTQyLTAxNS05MzI2LXkKCgoKCgoK