<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>161174</bug_id>
          
          <creation_ts>2016-08-24 16:43:52 -0700</creation_ts>
          <short_desc>Land support for tokenization in the new CSS Parser</short_desc>
          <delta_ts>2016-09-22 13:37:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>46591</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1222882</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-08-24 16:43:52 -0700</bug_when>
    <thetext>Land support for tokenization in the new CSS Parser. Bring along as much as is needed to get that going.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222883</commentid>
    <comment_count>1</comment_count>
      <attachid>286909</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-08-24 16:45:35 -0700</bug_when>
    <thetext>Created attachment 286909
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222885</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-24 16:47:58 -0700</bug_when>
    <thetext>Attachment 286909 did not pass style-queue:


ERROR: Source/WebCore/css/CSSMarkup.cpp:94:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebCore/css/CSSMarkup.cpp:101:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebCore/css/CSSMarkup.cpp:118:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/css/parser/CSSPropertyParser.h:26:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/css/parser/CSSParserTokenRange.h:44:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSParserTokenRange.h:45:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSParserTokenRange.h:95:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSParserTokenRange.h:96:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSPropertyParser.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/css/parser/CSSPropertyParser.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/css/parser/CSSPropertyParser.cpp:62:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/css/parser/CSSPropertyParser.cpp:70:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/css/parser/CSSPropertyParser.cpp:93:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebCore/css/parser/CSSPropertyParser.cpp:150:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebCore/css/parser/CSSParserObserver.h:38:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebCore/css/parser/CSSParserFastPaths.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/css/parser/CSSParserFastPaths.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/CMakeLists.txt:1414:  Alphabetical sorting problem. &quot;css/parser/CSSParserFastPaths.cpp&quot; should be before &quot;css/parser/CSSParserValues.cpp&quot;.  [list/order] [5]
ERROR: Source/WebCore/css/parser/CSSTokenizer.h:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/css/parser/CSSTokenizer.cpp:42:  Wrong number of spaces before statement. (expected: 4)  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSTokenizer.cpp:72:  Wrong number of spaces before statement. (expected: 4)  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSTokenizer.cpp:87:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/css/parser/CSSTokenizer.cpp:513:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/css/parser/CSSTokenizer.cpp:631:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/css/parser/CSSTokenizer.cpp:825:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebCore/css/parser/CSSPropertyParserHelpers.h:34:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/css/parser/CSSParserToken.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/css/parser/CSSParserToken.cpp:47:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSParserToken.cpp:49:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSParserToken.cpp:55:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSParserToken.cpp:57:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSParserToken.cpp:65:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSParserToken.cpp:85:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSParserToken.cpp:93:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSParserToken.cpp:103:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSParserToken.cpp:113:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSParserToken.cpp:115:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSParserToken.cpp:131:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSParserToken.cpp:145:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSParserToken.cpp:147:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSParserToken.cpp:149:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSParserToken.cpp:171:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSParserToken.cpp:173:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSParserToken.cpp:189:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSParserToken.cpp:351:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSParserToken.cpp:352:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSParserToken.cpp:355:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSParserToken.cpp:356:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSParserToken.cpp:360:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
Total errors found: 49 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222893</commentid>
    <comment_count>3</comment_count>
      <attachid>286909</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-08-24 17:05:48 -0700</bug_when>
    <thetext>Comment on attachment 286909
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=286909&amp;action=review

&gt; Source/WebCore/ChangeLog:8
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        * CMakeLists.txt:

You should say this comes from Blink, and cite the Blink revision.

&gt; Source/WebCore/css/CSSMarkup.cpp:2
&gt; +/*
&gt; + * Copyright (C) 2003 Lars Knoll (knoll@kde.org)

Not sure if we need to do anything with licenses. Please check.

&gt; Source/WebCore/css/parser/CSSParserObserver.h:46
&gt; +    // TODO(timloh): Unused, should be removed

Remove the &quot;(timloh)&quot; here and elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222925</commentid>
    <comment_count>4</comment_count>
      <attachid>286909</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-08-24 18:24:37 -0700</bug_when>
    <thetext>Comment on attachment 286909
Patch

Attachment 286909 did not pass mac-debug-ews (mac):
Output: http://webkit-queues.webkit.org/results/1936944

New failing tests:
fast/css/selector-text-escape.html
fast/css/parsing-css-nonascii.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222926</commentid>
    <comment_count>5</comment_count>
      <attachid>286926</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-08-24 18:24:40 -0700</bug_when>
    <thetext>Created attachment 286926
Archive of layout-test-results from ews113 for mac-yosemite

The attached test failures were seen while running run-webkit-tests on the mac-debug-ews.
Bot: ews113  Port: mac-yosemite  Platform: Mac OS X 10.10.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223099</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-25 10:01:35 -0700</bug_when>
    <thetext>Normally we don&apos;t keep the TODO, we just use FIXME or nothing at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223145</commentid>
    <comment_count>7</comment_count>
      <attachid>286990</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-08-25 11:34:03 -0700</bug_when>
    <thetext>Created attachment 286990
Patch to fix layout tests and style stuff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223153</commentid>
    <comment_count>8</comment_count>
      <attachid>286992</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-08-25 11:44:34 -0700</bug_when>
    <thetext>Created attachment 286992
Patch to fix layout tests and style stuff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223156</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-25 11:49:22 -0700</bug_when>
    <thetext>Attachment 286992 did not pass style-queue:


ERROR: Source/WebCore/css/parser/CSSPropertyParser.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/css/parser/CSSPropertyParser.cpp:68:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/css/parser/CSSPropertyParser.cpp:70:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/css/parser/CSSTokenizer.h:33:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WebCore/css/parser/CSSParserToken.cpp:349:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 5 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223192</commentid>
    <comment_count>10</comment_count>
      <attachid>286998</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-08-25 13:09:55 -0700</bug_when>
    <thetext>Created attachment 286998
Patch to fix layout tests and style stuff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223226</commentid>
    <comment_count>11</comment_count>
      <attachid>287016</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-08-25 14:21:30 -0700</bug_when>
    <thetext>Created attachment 287016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223233</commentid>
    <comment_count>12</comment_count>
      <attachid>287019</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-08-25 14:30:19 -0700</bug_when>
    <thetext>Created attachment 287019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223270</commentid>
    <comment_count>13</comment_count>
      <attachid>287029</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-08-25 15:10:31 -0700</bug_when>
    <thetext>Created attachment 287029
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223328</commentid>
    <comment_count>14</comment_count>
      <attachid>287046</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-08-25 16:54:51 -0700</bug_when>
    <thetext>Created attachment 287046
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223330</commentid>
    <comment_count>15</comment_count>
      <attachid>287046</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-08-25 16:56:55 -0700</bug_when>
    <thetext>Comment on attachment 287046
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=287046&amp;action=review

&gt; Source/WebCore/css/CSSMarkup.cpp:4
&gt; + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2016 Apple Inc. All rights reserved.

This can be changed to year ranges: 2004-2012, 2016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224069</commentid>
    <comment_count>16</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-08-28 08:48:10 -0700</bug_when>
    <thetext>Landed in r205103.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286909</attachid>
            <date>2016-08-24 16:45:35 -0700</date>
            <delta_ts>2016-08-25 11:34:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>441258</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDk0MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3NCBAQAorMjAxNi0wOC0yNCAgRGF2ZSBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBJbml0aWFsIGxhbmRpbmcgb2YgQ1NT
IFBhcnNlciBUb2tlbml6YXRpb24gKGFuZCBmaWxlcyB0byBzdXBwb3J0IHRoYXQpLiBOb3QgdXNl
ZCB5ZXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjExNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTTWFya3VwLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjppc0NTU1Rva2VuaXplcklkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFs
aXplQ2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUNoYXJhY3RlckFzQ29k
ZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlkZW50aWZpZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6c2VyaWFsaXplU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6
ZVVSSSk6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVGb250RmFtaWx5KToKKyAgICAgICAg
KiBjc3MvQ1NTTWFya3VwLmg6IEFkZGVkLgorICAgICAgICAqIGNzcy9DU1NPTVV0aWxzLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBjc3MvQ1NTT01VdGlscy5oOiBSZW1vdmVkLgorICAgICAgICAq
IGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0
UGF0aHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRo
cy5oOiBBZGRlZC4KKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQ1NTU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6aXNO
YW1lU3RhcnRDb2RlUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6aXNOYW1lQ29kZVBvaW50KToK
KyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlck9ic2VydmVyLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyT2JzZXJ2ZXI6On5DU1NQYXJzZXJPYnNlcnZlcik6CisgICAg
ICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlck9ic2VydmVyV3JhcHBlcjo6c3RhcnRPZmZzZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyOjpwcmV2aW91c1Rva2Vu
U3RhcnRPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVy
OjplbmRPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVy
Ojpza2lwQ29tbWVudHNCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyT2JzZXJ2
ZXJXcmFwcGVyOjp5aWVsZENvbW1lbnRzQmVmb3JlKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NT
U1BhcnNlck9ic2VydmVyV3JhcHBlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlck9ic2VydmVyV3JhcHBlcjo6Q1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlck9ic2VydmVyV3JhcHBlcjo6b2JzZXJ2ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyOjphZGRDb21tZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlck9ic2VydmVyV3JhcHBlcjo6YWRkVG9rZW4pOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyOjpmaW5hbGl6ZUNvbnN0cnVjdGlvbik6
CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Y3NzUHJpbWl0aXZlVmFsdWVVbml0RnJvbVRyaWUpOgorICAgICAgICAoV2Vi
Q29yZTo6c3RyaW5nVG9Vbml0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tl
bjo6Q1NTUGFyc2VyVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OmNv
bnZlcnRUb0RpbWVuc2lvbldpdGhVbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRv
a2VuOjpjb252ZXJ0VG9QZXJjZW50YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRv
a2VuOjpkZWxpbWl0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46Om51bWVy
aWNTaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpudW1lcmljVmFsdWVU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpudW1lcmljVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OnBhcnNlQXNVbnJlc29sdmVkQ1NTUHJv
cGVydHlJRCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6aWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OmZ1bmN0aW9uSWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyVG9rZW46Omhhc1N0cmluZ0JhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyVG9rZW46OmNvcHlXaXRoVXBkYXRlZFN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXJUb2tlbjo6dmFsdWVEYXRhQ2hhclJhd0VxdWFsKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlclRva2VuOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlclRva2VuOjpzZXJpYWxpemUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyVG9r
ZW4uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6b3BlcmF0b3Ih
PSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6dHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyVG9rZW46OmdldEhhc2hUb2tlblR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
VG9rZW46OmdldEJsb2NrVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6
dW5pdFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OnVuaWNvZGVSYW5n
ZVN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjp1bmljb2RlUmFuZ2VF
bmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OmluaXRWYWx1ZUZyb21TdHJp
bmdWaWV3KToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuUmFuZ2UuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuUmFuZ2U6OmVvZlRva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuUmFuZ2U6Om1ha2VTdWJSYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlblJhbmdlOjpjb25zdW1lQmxvY2spOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6Y29uc3VtZUNvbXBvbmVudFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuUmFuZ2U6OnNlcmlhbGl6ZSk6Cisg
ICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlblJhbmdlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlblJhbmdlOjphdEVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXJUb2tlblJhbmdlOjplbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyVG9rZW5SYW5nZTo6cGVlayk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tl
blJhbmdlOjpjb25zdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuUmFuZ2U6
OmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clRva2VuUmFuZ2U6OmNvbnN1bWVXaGl0ZXNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlclRva2VuUmFuZ2U6OmJlZ2luKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5
UGFyc2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpoYXNQcmVmaXgpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3NzUHJvcGVydHlJRCk6CisgICAgICAgIChXZWJDb3JlOjpjc3NQcm9wZXJ0
eU5hbWVJT1NBbGlhc2luZyk6CisgICAgICAgIChXZWJDb3JlOjppc0FwcGxlTGVnYWN5Q3NzVmFs
dWVLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OmNzc1ZhbHVlS2V5d29yZElEKToKKyAgICAg
ICAgKFdlYkNvcmU6OnVucmVzb2x2ZWRDU1NQcm9wZXJ0eUlEKToKKyAgICAgICAgKiBjc3MvcGFy
c2VyL0NTU1Byb3BlcnR5UGFyc2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlQYXJzZXI6OmluUXVpcmtzTW9kZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VySGVscGVycy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3Bl
cnR5UGFyc2VySGVscGVyczo6aWRlbnRNYXRjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
b3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUlkZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1Byb3BlcnR5UGFyc2VySGVscGVyczo6aXNDU1NXaWRlS2V5d29yZCk6CisgICAgICAgICogY3Nz
L3BhcnNlci9DU1NUb2tlbml6ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rv
a2VuaXplcjo6U2NvcGU6OlNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6
U2NvcGU6OnRva2VuUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpTY29w
ZTo6dG9rZW5Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjppc05ld0xpbmUpOgorICAgICAgICAo
V2ViQ29yZTo6dHdvQ2hhcnNBcmVWYWxpZEVzY2FwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXI6OkNTU1Rva2VuaXplcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6
OnJlY29uc3VtZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjp3aGl0ZVNwYWNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Rva2VuaXplcjo6YmxvY2tTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXI6OmJsb2NrRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6bGVm
dFBhcmVudGhlc2lzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6cmlnaHRQYXJl
bnRoZXNpcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmxlZnRCcmFja2V0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6cmlnaHRCcmFja2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6bGVmdEJyYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1Rva2VuaXplcjo6cmlnaHRCcmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6
OnBsdXNPckZ1bGxTdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6YXN0ZXJp
c2spOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpsZXNzVGhhbik6CisgICAgICAg
IChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbW1hKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rv
a2VuaXplcjo6aHlwaGVuTWludXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpz
b2xpZHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29sb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpzZW1pQ29sb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVG9rZW5pemVyOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y2ly
Y3VtZmxleEFjY2VudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmRvbGxhclNp
Z24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjp2ZXJ0aWNhbExpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjp0aWxkZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NUb2tlbml6ZXI6OmNvbW1lcmNpYWxBdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6
ZXI6OnJldmVyc2VTb2xpZHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6YXNj
aWlEaWdpdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmxldHRlclUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpuYW1lU3RhcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9rZW5pemVyOjpzdHJpbmdTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tl
bml6ZXI6OmVuZE9mRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6Om5leHRU
b2tlbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVOdW1iZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb25zdW1lTnVtZXJpY1Rva2VuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZUlkZW50TGlrZVRva2VuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZVN0cmluZ1Rva2VuVW50aWwpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb25zdW1lVW5pY29kZVJhbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmlzTm9uUHJpbnRhYmxlQ29kZVBvaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZVVybFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1Rva2VuaXplcjo6Y29uc3VtZUJhZFVybFJlbW5hbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1Rva2VuaXplcjo6Y29uc3VtZVNpbmdsZVdoaXRlc3BhY2VJZk5leHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVG9rZW5pemVyOjpjb25zdW1lVW50aWxDb21tZW50RW5kRm91bmQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb25zdW1lSWZOZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9r
ZW5pemVyOjpjb25zdW1lRXNjYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6
bmV4dFR3b0NoYXJzQXJlVmFsaWRFc2NhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5p
emVyOjpuZXh0Q2hhcnNBcmVOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVy
OjpuZXh0Q2hhcnNBcmVJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXpl
cjo6cmVnaXN0ZXJTdHJpbmcpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpTY29wZTo6c3RvcmVTdHJp
bmcpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcklucHV0U3RyZWFtOjpDU1NUb2tl
bml6ZXJJbnB1dFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXJJbnB1dFN0
cmVhbTo6YWR2YW5jZVVudGlsTm9uV2hpdGVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXJJbnB1dFN0cmVhbTo6Z2V0RG91YmxlKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NT
U1Rva2VuaXplcklucHV0U3RyZWFtLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9r
ZW5pemVySW5wdXRTdHJlYW06Om5leHRJbnB1dENoYXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
VG9rZW5pemVySW5wdXRTdHJlYW06OnBlZWtXaXRob3V0UmVwbGFjZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVG9rZW5pemVySW5wdXRTdHJlYW06OmFkdmFuY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVG9rZW5pemVySW5wdXRTdHJlYW06OnB1c2hCYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1Rva2VuaXplcklucHV0U3RyZWFtOjpza2lwV2hpbGVQcmVkaWNhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVySW5wdXRTdHJlYW06Omxlbmd0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbTo6b2Zmc2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1Rva2VuaXplcklucHV0U3RyZWFtOjpyYW5nZUF0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9MZW5ndGguaDoKKwogMjAxNi0wOC0yNCAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZWJhc2VsaW5lIGJpbmRpbmdzIHRlc3RzIGFmdGVyIHIyMDQ5MjMu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjA0OTA1KQorKysgU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEzNDEsOSArMTM0MSw5IEBA
IHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3MvQ1NTS2V5ZnJhbWVSdWxlLmNwcAogICAgIGNz
cy9DU1NLZXlmcmFtZXNSdWxlLmNwcAogICAgIGNzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmNw
cAorICAgIGNzcy9DU1NNYXJrdXAuY3BwCiAgICAgY3NzL0NTU01lZGlhUnVsZS5jcHAKICAgICBj
c3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmNwcAotICAgIGNzcy9DU1NPTVV0aWxzLmNwcAogICAgIGNz
cy9DU1NQYWdlUnVsZS5jcHAKICAgICBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCiAgICAgY3Nz
L0NTU1Byb3BlcnR5LmNwcApAQCAtMTQxMSw2ICsxNDExLDE0IEBAIHNldChXZWJDb3JlX1NPVVJD
RVMKIAogICAgIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAogICAgIGNzcy9wYXJzZXIvQ1NTUGFy
c2VyVmFsdWVzLmNwcAorICAgIGNzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcAorICAg
IGNzcy9wYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmNwcAorICAgIGNzcy9wYXJzZXIv
Q1NTUGFyc2VyVG9rZW4uY3BwCisgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlblJhbmdlLmNw
cAorICAgIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisgICAgY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCisgICAgY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIu
Y3BwCisgICAgY3NzL3BhcnNlci9DU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5jcHAKICAgICBjc3Mv
cGFyc2VyL1NWR0NTU1BhcnNlci5jcHAKIAogICAgIGNzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNw
cApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjA0OTA1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzM2LDYgKzMzMzYsMjYg
QEAKIAkJOTQ2RDM3MzAxRDZDQjI5NDAwNzcwODRGIC8qIENTU1BhcnNlclZhbHVlcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzcyQjFENkNC
MjhCMDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmNwcCAqLzsgfTsKIAkJOTQ2RDM3MzExRDZD
QjI5NDAwNzcwODRGIC8qIENTU1BhcnNlclZhbHVlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3MkMxRDZDQjI4QjAwNzcwODRGIC8qIENTU1Bh
cnNlclZhbHVlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTk0NkQzNzMzMUQ2Q0M0MkIwMDc3MDg0RiAvKiBTVkdDU1NQYXJzZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3MzIxRDZDQzM3
MjAwNzcwODRGIC8qIFNWR0NTU1BhcnNlci5jcHAgKi87IH07CisJCTk0NkQzNzM5MUQ2Q0RGQzAw
MDc3MDg0RiAvKiBDU1NUb2tlbml6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3MzQxRDZDREY5ODAwNzcwODRGIC8qIENTU1Rva2VuaXpl
ci5jcHAgKi87IH07CisJCTk0NkQzNzNBMUQ2Q0RGQzAwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzM3
MUQ2Q0RGOTgwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXIuaCAqLzsgfTsKKwkJOTQ2RDM3M0IxRDZD
REZDMDAwNzcwODRGIC8qIENTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzM1MUQ2Q0RGOTgwMDc3MDg0
RiAvKiBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5jcHAgKi87IH07CisJCTk0NkQzNzNDMUQ2Q0RG
QzAwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3MzgxRDZDREY5ODAwNzcwODRGIC8q
IENTU1Rva2VuaXplcklucHV0U3RyZWFtLmggKi87IH07CisJCTk0NkQzNzNGMUQ2Q0UzQzIwMDc3
MDg0RiAvKiBDU1NQYXJzZXJUb2tlbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzczRTFENkNFMzFBMDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9r
ZW4uY3BwICovOyB9OworCQk5NDZEMzc0MDFENkNFM0MyMDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9r
ZW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQz
NzNEMUQ2Q0UzMUEwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlbi5oICovOyB9OworCQk5NDZEMzc0
NDFENkNGN0IyMDA3NzA4NEYgLyogQ1NTUGFyc2VySWRpb21zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzc0MzFENkNGNzg4MDA3NzA4NEYgLyog
Q1NTUGFyc2VySWRpb21zLmggKi87IH07CisJCTk0NkQzNzQ1MUQ2RDAxRDQwMDc3MDg0RiAvKiBD
U1NQcm9wZXJ0eVBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NDZEMzc0MTFENkNGNjMyMDA3NzA4NEYgLyogQ1NTUHJvcGVydHlQYXJzZXIu
Y3BwICovOyB9OworCQk5NDZEMzc0NjFENkQwMUQ0MDA3NzA4NEYgLyogQ1NTUHJvcGVydHlQYXJz
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQz
NzQyMUQ2Q0Y2MzIwMDc3MDg0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlci5oICovOyB9OworCQk5NDZE
Mzc0OTFENkQwNjI4MDA3NzA4NEYgLyogQ1NTTWFya3VwLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzQ3MUQ2RDA2MEMwMDc3MDg0RiAvKiBD
U1NNYXJrdXAuY3BwICovOyB9OworCQk5NDZEMzc0QTFENkQwNjI4MDA3NzA4NEYgLyogQ1NTTWFy
a3VwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZE
Mzc0ODFENkQwNjBDMDA3NzA4NEYgLyogQ1NTTWFya3VwLmggKi87IH07CisJCTk0NkQzNzREMUQ2
RDA4QTYwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzRCMUQ2RDA3RjUwMDc3MDg0RiAv
KiBDU1NQYXJzZXJUb2tlblJhbmdlLmNwcCAqLzsgfTsKKwkJOTQ2RDM3NEUxRDZEMDhBQTAwNzcw
ODRGIC8qIENTU1BhcnNlclRva2VuUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzRDMUQ2RDA3RjUwMDc3MDg0RiAvKiBDU1NQYXJzZXJU
b2tlblJhbmdlLmggKi87IH07CisJCTk0OUM3NzAwMUQ2RTFEOTgwMEMwREU0RiAvKiBDU1NQYXJz
ZXJGYXN0UGF0aHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTQ5Qzc2RkUxRDZFMUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRocy5jcHAg
Ki87IH07CisJCTk0OUM3NzAxMUQ2RTFEOTgwMEMwREU0RiAvKiBDU1NQYXJzZXJGYXN0UGF0aHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0OUM3NkZG
MUQ2RTFEOEMwMEMwREU0RiAvKiBDU1NQYXJzZXJGYXN0UGF0aHMuaCAqLzsgfTsKKwkJOTQ5Qzc3
MDQxRDZFMzlFQTAwQzBERTRGIC8qIENTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDlDNzcwMjFENkUzOTM1
MDBDMERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcCAqLzsgfTsKKwkJOTQ5Qzc3
MDUxRDZFMzlFQTAwQzBERTRGIC8qIENTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5Qzc3MDMxRDZFMzkzNTAw
QzBERTRGIC8qIENTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oICovOyB9OworCQk5NDlDNzcwODFE
NkU0OTg3MDBDMERFNEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0OUM3NzA2MUQ2RTQ4RUQwMEMw
REU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3BwICovOyB9OworCQk5NDlDNzcwOTFE
NkU0OTg3MDBDMERFNEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDlDNzcwNzFENkU0OEVEMDBDMERF
NEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmggKi87IH07CisJCTk0OUM3NzBCMUQ2RTQ5
RUQwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5Qzc3MEExRDZFNDlDMzAwQzBERTRGIC8qIENTU1Bh
cnNlck9ic2VydmVyLmggKi87IH07CiAJCTk2QUJBNDIzMTRCQ0I4MEUwMEQ1NjIwNCAvKiBHcmFw
aGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NkFCQTQyMjE0QkNCODBFMDBENTYyMDQgLyogR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0xDb21tb24uY3BwICovOyB9OwogCQk5NzAzRTFCRjE1REM0RTM3MDAxRjI0
QzggLyogSlNWb2lkQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTdFOUVDOEIxNURDNDkyRjAwNEYyRTcxIC8qIEpTVm9pZENhbGxiYWNr
LmNwcCAqLzsgfTsKIAkJOTcwNTk5NzcxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNr
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MDU5
OTczMTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAgKi87IH07CkBAIC02MzE1
LDggKzYzMzUsNiBAQAogCQlGNUUwQzY1QzE2NDNDNDJDMDBENkNCNjkgLyogQmFzZUNob29zZXJP
bmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY1RTBDNjVBMTY0M0M0MkMwMEQ2Q0I2OSAvKiBCYXNlQ2hvb3Nlck9u
bHlEYXRlQW5kVGltZUlucHV0VHlwZS5oICovOyB9OwogCQlGOTE2QzQ4RDBEQjUxMEY4MDA3NkNE
ODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjkxNkM0OEIwREI1MTBGODAwNzZDRDgzIC8q
IEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcCAqLzsgfTsKIAkJRjkxNkM0OEUwREI1
MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOTE2QzQ4QzBEQjUxMEY4MDA3
NkNEODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCAqLzsgfTsKLQkJRjk4RkZG
NDQxMUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjk4RkZGNDIxMUEyNjc2MjAwRjU0OEU4IC8qIENT
U09NVXRpbHMuY3BwICovOyB9OwotCQlGOThGRkY0NTExQTI2NzYyMDBGNTQ4RTggLyogQ1NTT01V
dGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjk4
RkZGNDMxMUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMuaCAqLzsgfTsKIAkJRjlGMEVEN0Ew
REI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjlGMEVENzcwREI1MENBMjAw
RDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICovOyB9OwogCQlGQTY1NEE2
QjExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVG9rZW5FbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBNjU0QTY5MTEwOEFCRUQwMDI2MTVF
MCAvKiBNYXRoTUxUb2tlbkVsZW1lbnQuY3BwICovOyB9OwogCQlGQTY1NEE2QjExMDhBQkVEMDAy
NjE2RjEgLyogTWF0aE1MT3BlcmF0b3JFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBNjU0QTY5MTEwOEFCRUQwMDI2MTZGMSAvKiBNYXRo
TUxPcGVyYXRvckVsZW1lbnQuY3BwICovOyB9OwpAQCAtMTA0NDYsNiArMTA0NjQsMjYgQEAKIAkJ
OTQ2RDM3MkIxRDZDQjI4QjAwNzcwODRGIC8qIENTU1BhcnNlclZhbHVlcy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDU1NQYXJzZXJWYWx1ZXMuY3BwOyBwYXRoID0g
cGFyc2VyL0NTU1BhcnNlclZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk0NkQzNzJDMUQ2Q0IyOEIwMDc3MDg0RiAvKiBDU1NQYXJzZXJWYWx1ZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ1NTUGFyc2VyVmFsdWVzLmg7IHBhdGggPSBwYXJzZXIv
Q1NTUGFyc2VyVmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk0NkQzNzMy
MUQ2Q0MzNzIwMDc3MDg0RiAvKiBTVkdDU1NQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gU1ZHQ1NTUGFyc2VyLmNwcDsgcGF0aCA9IHBhcnNlci9TVkdDU1NQ
YXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzczNDFENkNERjk4
MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IENTU1Rva2VuaXplci5jcHA7IHBhdGggPSBwYXJzZXIvQ1NTVG9rZW5pemVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ2RDM3MzUxRDZDREY5ODAwNzcwODRG
IC8qIENTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IENTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcDsgcGF0aCA9IHBhcnNlci9D
U1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTk0NkQzNzM3MUQ2Q0RGOTgwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQ1NTVG9rZW5pemVyLmg7IHBhdGggPSBwYXJzZXIvQ1NTVG9r
ZW5pemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NkQzNzM4MUQ2Q0RGOTgw
MDc3MDg0RiAvKiBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5oOyBwYXRoID0gcGFyc2VyL0NT
U1Rva2VuaXplcklucHV0U3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0
NkQzNzNEMUQ2Q0UzMUEwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQYXJzZXJUb2tlbi5oOyBwYXRoID0gcGFyc2VyL0NTU1Bh
cnNlclRva2VuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NkQzNzNFMUQ2Q0Uz
MUEwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBDU1NQYXJzZXJUb2tlbi5jcHA7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2Vy
VG9rZW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzc0MTFENkNGNjMy
MDA3NzA4NEYgLyogQ1NTUHJvcGVydHlQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gQ1NTUHJvcGVydHlQYXJzZXIuY3BwOyBwYXRoID0gcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ2RDM3NDIx
RDZDRjYzMjAwNzcwODRGIC8qIENTU1Byb3BlcnR5UGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IENTU1Byb3BlcnR5UGFyc2VyLmg7IHBhdGggPSBwYXJzZXIvQ1NTUHJv
cGVydHlQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ2RDM3NDMxRDZD
Rjc4ODAwNzcwODRGIC8qIENTU1BhcnNlcklkaW9tcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBDU1NQYXJzZXJJZGlvbXMuaDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJJZGlv
bXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ2RDM3NDcxRDZEMDYwQzAwNzcw
ODRGIC8qIENTU01hcmt1cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDU1NNYXJrdXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzc0ODFE
NkQwNjBDMDA3NzA4NEYgLyogQ1NTTWFya3VwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENTU01hcmt1cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzc0
QjFENkQwN0Y1MDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW5SYW5nZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDU1NQYXJzZXJUb2tlblJhbmdlLmNwcDsgcGF0aCA9
IHBhcnNlci9DU1NQYXJzZXJUb2tlblJhbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTQ2RDM3NEMxRDZEMDdGNTAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuUmFuZ2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ1NTUGFyc2VyVG9rZW5SYW5nZS5oOyBw
YXRoID0gcGFyc2VyL0NTU1BhcnNlclRva2VuUmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTQ5Qzc2RkUxRDZFMUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRocy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDU1NQYXJzZXJGYXN0UGF0
aHMuY3BwOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTk0OUM3NkZGMUQ2RTFEOEMwMEMwREU0RiAvKiBDU1NQYXJzZXJG
YXN0UGF0aHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ1NTUGFyc2VyRmFz
dFBhdGhzLmg7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTk0OUM3NzAyMUQ2RTM5MzUwMEMwREU0RiAvKiBDU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQcm9wZXJ0eVBh
cnNlckhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDlDNzcwMzFE
NkUzOTM1MDBDMERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oOyBwYXRoID0g
cGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5NDlDNzcwNjFENkU0OEVEMDBDMERFNEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFw
cGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1BhcnNlck9i
c2VydmVyV3JhcHBlci5jcHA7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ5Qzc3MDcxRDZFNDhFRDAwQzBE
RTRGIC8qIENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaDsgcGF0aCA9IHBhcnNlci9DU1NQ
YXJzZXJPYnNlcnZlcldyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ5
Qzc3MEExRDZFNDlDMzAwQzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENTU1BhcnNlck9ic2VydmVyLmg7IHBhdGggPSBwYXJzZXIv
Q1NTUGFyc2VyT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTUwQzRD
MDJCRUQ4OTM2RjgxOEUyRjk5IC8qIEpTU1ZHR3JhcGhpY3NFbGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NWR0dyYXBoaWNzRWxlbWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5NkFCQTQyMjE0QkNCODBFMDBENTYyMDQgLyogR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0xDb21tb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5NzA1OTk3MzEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2su
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9saWN5Q2FsbGJhY2su
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM4ODcsOCArMTM5MjUsNiBAQAog
CQlGODIxNjI5OTAyOUY0RkI1MDEwMDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5m
cmFtZXdvcms7IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUY5MTZDNDhCMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hN
TEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGOTE2QzQ4QzBEQjUxMEY4MDA3NkNEODMgLyogSlNYTUxIdHRw
UmVxdWVzdFByb2dyZXNzRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUY5OEZGRjQyMTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU09NVXRpbHMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlGOThGRkY0MzExQTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGls
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NPTVV0aWxzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY5RjBFRDc3MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxI
dHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGOUYwRUQ3ODBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVz
c0V2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gWE1MSHR0cFJlcXVlc3RQcm9ncmVz
c0V2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkE2NTRBNjMxMTA4QUJC
NzAwMjYxNUUwIC8qIG1hdGhtbC5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IG1hdGht
bC5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODA2MiwxMiArMTgwOTgsMzAg
QEAKIAkJOTQ2RDM3MjcxRDZDQjIyNTAwNzcwODRGIC8qIHBhcnNlciAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJOTQ2RDM3MzIxRDZDQzM3MjAwNzcwODRG
IC8qIFNWR0NTU1BhcnNlci5jcHAgKi8sCiAJCQkJOTQ2RDM3MjgxRDZDQjI4QjAwNzcwODRGIC8q
IENTU1BhcnNlci5jcHAgKi8sCiAJCQkJOTQ2RDM3MjkxRDZDQjI4QjAwNzcwODRGIC8qIENTU1Bh
cnNlci5oICovLAorCQkJCTk0NkQzNzQzMUQ2Q0Y3ODgwMDc3MDg0RiAvKiBDU1NQYXJzZXJJZGlv
bXMuaCAqLywKKwkJCQk5NDlDNzZGRTFENkUxRDhDMDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBh
dGhzLmNwcCAqLywKKwkJCQk5NDlDNzZGRjFENkUxRDhDMDBDMERFNEYgLyogQ1NTUGFyc2VyRmFz
dFBhdGhzLmggKi8sCiAJCQkJOTQ2RDM3MkExRDZDQjI4QjAwNzcwODRGIC8qIENTU1BhcnNlck1v
ZGUuaCAqLywKKwkJCQk5NDlDNzcwQTFENkU0OUMzMDBDMERFNEYgLyogQ1NTUGFyc2VyT2JzZXJ2
ZXIuaCAqLywKKwkJCQk5NDlDNzcwNjFENkU0OEVEMDBDMERFNEYgLyogQ1NTUGFyc2VyT2JzZXJ2
ZXJXcmFwcGVyLmNwcCAqLywKKwkJCQk5NDlDNzcwNzFENkU0OEVEMDBDMERFNEYgLyogQ1NTUGFy
c2VyT2JzZXJ2ZXJXcmFwcGVyLmggKi8sCisJCQkJOTQ2RDM3M0UxRDZDRTMxQTAwNzcwODRGIC8q
IENTU1BhcnNlclRva2VuLmNwcCAqLywKKwkJCQk5NDZEMzczRDFENkNFMzFBMDA3NzA4NEYgLyog
Q1NTUGFyc2VyVG9rZW4uaCAqLywKKwkJCQk5NDZEMzc0QjFENkQwN0Y1MDA3NzA4NEYgLyogQ1NT
UGFyc2VyVG9rZW5SYW5nZS5jcHAgKi8sCisJCQkJOTQ2RDM3NEMxRDZEMDdGNTAwNzcwODRGIC8q
IENTU1BhcnNlclRva2VuUmFuZ2UuaCAqLywKIAkJCQk5NDZEMzcyQjFENkNCMjhCMDA3NzA4NEYg
LyogQ1NTUGFyc2VyVmFsdWVzLmNwcCAqLywKIAkJCQk5NDZEMzcyQzFENkNCMjhCMDA3NzA4NEYg
LyogQ1NTUGFyc2VyVmFsdWVzLmggKi8sCisJCQkJOTQ2RDM3NDExRDZDRjYzMjAwNzcwODRGIC8q
IENTU1Byb3BlcnR5UGFyc2VyLmNwcCAqLywKKwkJCQk5NDZEMzc0MjFENkNGNjMyMDA3NzA4NEYg
LyogQ1NTUHJvcGVydHlQYXJzZXIuaCAqLywKKwkJCQk5NDlDNzcwMjFENkUzOTM1MDBDMERFNEYg
LyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcCAqLywKKwkJCQk5NDlDNzcwMzFENkUzOTM1
MDBDMERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmggKi8sCisJCQkJOTQ2RDM3MzQx
RDZDREY5ODAwNzcwODRGIC8qIENTU1Rva2VuaXplci5jcHAgKi8sCisJCQkJOTQ2RDM3MzcxRDZD
REY5ODAwNzcwODRGIC8qIENTU1Rva2VuaXplci5oICovLAorCQkJCTk0NkQzNzM1MUQ2Q0RGOTgw
MDc3MDg0RiAvKiBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5jcHAgKi8sCisJCQkJOTQ2RDM3Mzgx
RDZDREY5ODAwNzcwODRGIC8qIENTU1Rva2VuaXplcklucHV0U3RyZWFtLmggKi8sCisJCQkJOTQ2
RDM3MzIxRDZDQzM3MjAwNzcwODRGIC8qIFNWR0NTU1BhcnNlci5jcHAgKi8sCiAJCQkpOwogCQkJ
bmFtZSA9IHBhcnNlcjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yMjIyOSwxMyAr
MjIyODMsMTMgQEAKIAkJCQkzMTZGRTA5MjBFNkNDRDdGMDBCRjYwODggLyogQ1NTS2V5ZnJhbWVz
UnVsZS5pZGwgKi8sCiAJCQkJQkM3NzJFMTUxMzMxNjJDMjAwMUVDOUNFIC8qIENTU0xpbmVCb3hD
b250YWluVmFsdWUuY3BwICovLAogCQkJCUJDNzcyRTEyMTMzMTYyMEMwMDFFQzlDRSAvKiBDU1NM
aW5lQm94Q29udGFpblZhbHVlLmggKi8sCisJCQkJOTQ2RDM3NDcxRDZEMDYwQzAwNzcwODRGIC8q
IENTU01hcmt1cC5jcHAgKi8sCisJCQkJOTQ2RDM3NDgxRDZEMDYwQzAwNzcwODRGIC8qIENTU01h
cmt1cC5oICovLAogCQkJCUE4MEU2Q0QyMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NNZWRpYVJ1bGUu
Y3BwICovLAogCQkJCUE4MEU2Q0Q5MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NNZWRpYVJ1bGUuaCAq
LywKIAkJCQk4NUM1NkNBMjBBQTg5QzEwMDBEOTU3NTUgLyogQ1NTTWVkaWFSdWxlLmlkbCAqLywK
IAkJCQkzMTRCRTNBMjFCMzBGNkQxMDAxNDE5ODIgLyogQ1NTTmFtZWRJbWFnZVZhbHVlLmNwcCAq
LywKIAkJCQkzMTRCRTNBMDFCMzBGNkI3MDAxNDE5ODIgLyogQ1NTTmFtZWRJbWFnZVZhbHVlLmgg
Ki8sCi0JCQkJRjk4RkZGNDIxMUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMuY3BwICovLAot
CQkJCUY5OEZGRjQzMTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmggKi8sCiAJCQkJQTgw
RTZDQ0IwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1BhZ2VSdWxlLmNwcCAqLywKIAkJCQlBODBFNkNE
NjBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUGFnZVJ1bGUuaCAqLywKIAkJCQk4NUM1NkNBNjBBQTg5
RDVGMDBEOTU3NTUgLyogQ1NTUGFnZVJ1bGUuaWRsICovLApAQCAtMjM5OTUsNyArMjQwNDksNiBA
QAogCQkJCUJDNzcyRTEzMTMzMTYyMEMwMDFFQzlDRSAvKiBDU1NMaW5lQm94Q29udGFpblZhbHVl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkQwMzBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTTWVk
aWFSdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTRCRTNBMTFCMzBGNkI3MDAxNDE5ODIgLyog
Q1NTTmFtZWRJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLywKLQkJCQlGOThGRkY0NTExQTI2NzYy
MDBGNTQ4RTggLyogQ1NTT01VdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMDAwQTE5
ODlDQTAwN0ZCOEM1IC8qIENTU1BhZ2VSdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdCMzg2
MzEyMjg4M0U5MDBCODFGRjggLyogQ1NTUHJlbG9hZFNjYW5uZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4MEU2Q0U2MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQcmltaXRpdmVWYWx1ZS5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yNDQ0Niw2ICsyNDQ5OSw3IEBACiAJCQkJOTc3QjM4NjcxMjI4ODNFOTAw
QjgxRkY4IC8qIEhUTUxEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlE
RTgwOTlFNjQ5MjAwNTZFNTgxIC8qIGh0bWxlZGl0aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
M0YxOThFNjA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTk0NkQzNzRBMUQ2RDA2MjgwMDc3MDg0RiAvKiBDU1NNYXJrdXAuaCBpbiBIZWFkZXJzICov
LAogCQkJCUExN0M4MTIzMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCBp
biBIZWFkZXJzICovLAogCQkJCTk3N0IzNzI0MTIyODcyMTcwMEI4MUZGOCAvKiBIVE1MRWxlbWVu
dFN0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNTYyREI2MDE3RDNDRDYzMDAxMEFGOTYgLyog
SFRNTEVsZW1lbnRUeXBlSGVscGVycy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDUxMCw2ICsyNDU2
NCw3IEBACiAJCQkJQTQzQkY1OTkxMTQ5MjkwQTAwQzY0M0NBIC8qIEhUTUxQcm9ncmVzc0VsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0ZGN0EzMEExNTY5NzgwMDBBNDIzNCAvKiBIVE1M
UXVvdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEQyMjNGRTE2QjUyRTRFMDAxNTcy
ODggLyogSFRNTFJlc291cmNlUHJlbG9hZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZEMzc0
RTFENkQwOEFBMDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTg3MURDMjUwQTE1MjA1NzAwQjEyQTY4IC8qIEhUTUxTY3JpcHRFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQk5NzdCMzg3NTEyMjg4M0U5MDBCODFGRjggLyogSFRNTFNjcmlwdFJ1
bm5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3QjM4NzYxMjI4ODNFOTAwQjgxRkY4IC8qIEhU
TUxTY3JpcHRSdW5uZXJIb3N0LmggaW4gSGVhZGVycyAqLywKQEAgLTI1MDIwLDYgKzI1MDc1LDcg
QEAKIAkJCQlGREExNUVCMjEyQjAzRUUxMDAzQTU4M0EgLyogSlNQYW5uZXJOb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4QTlBNTg3NTExRTg0QzgxMDA4QUNGRDEgLyogSlNQZXJmb3JtYW5jZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0IzOEZENTIxQ0NGOTM5NDAwNTkyQTNGIC8qIEpTUGVyZm9y
bWFuY2VFbnRyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTQ5Qzc3MEIxRDZFNDlFRDAwQzBERTRG
IC8qIENTU1BhcnNlck9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTlBNTg3MTExRTg0
QzM2MDA4QUNGRDEgLyogSlNQZXJmb3JtYW5jZU5hdmlnYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCUNCMzhGRDVCMUNEMjMyNUIwMDU5MkEzRiAvKiBKU1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1p
bmcuaCBpbiBIZWFkZXJzICovLAogCQkJCThBOUE1ODg4MTFFODRGMzcwMDhBQ0ZEMSAvKiBKU1Bl
cmZvcm1hbmNlVGltaW5nLmggaW4gSGVhZGVycyAqLywKQEAgLTI1MTMyLDYgKzI1MTg4LDcgQEAK
IAkJCQlCMkZBM0Q3RjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdGRUZ1bmNHRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEODEwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVGdW5j
UkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDgzMEFCNzVBNkYwMDBFNUFDNCAv
KiBKU1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTQ2RDM3
NDYxRDZEMDFENDAwNzcwODRGIC8qIENTU1Byb3BlcnR5UGFyc2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMkZBM0Q4NTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdGRUltYWdlRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEODcwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRkVNZXJn
ZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRDg5MEFCNzVBNkYwMDBFNUFDNCAv
KiBKU1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTM0MCw2ICsy
NTM5Nyw3IEBACiAJCQkJMkQ5MDY2MDcwQkUxNDFENDAwOTU2OTk4IC8qIExheW91dFN0YXRlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxNDFEQzA0ODE2NDgzNDhGMDAzNzFFNUEgLyogTGF5b3V0VW5p
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRDM0IxRkEwRjBFNDE2MTAwOTY5M0Y2IC8qIExlZ2Fj
eVRpbGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTQ5Qzc3MDUxRDZFMzlFQTAwQzBERTRG
IC8qIENTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRCNjVB
NTgxMzJGQThFNzAwNzBFN0JFIC8qIExlZ2FjeVRpbGVHcmlkLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFNDI0QTM5RTEzMzBERjAxMDBDRjZEQzkgLyogTGVnYWN5VGlsZUdyaWRUaWxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFNEI2NUE1QzEzMkZBQ0IwMDA3MEU3QkUgLyogTGVnYWN5VGlsZUxheWVy
LmggaW4gSGVhZGVycyAqLywKQEAgLTI1NTkwLDYgKzI1NjQ4LDcgQEAKIAkJCQk5OEVCMUY5NTEz
MTNGRTA1MDBEMEUxRUEgLyogTm90SW1wbGVtZW50ZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
NTY5RDBCMEQ3RTJCODIwMDdDMzk4MyAvKiBOUF9qc29iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUE5MjdGRDIxNDE2QTE1QjAwM0E4M0M4IC8qIG5wYXBpLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk5NDlDNzcwMTFENkUxRDk4MDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTIxOUIzQjBEQ0E4N0FCMDA0MEUzQTAgLyogbnBmdW5jdGlvbnMuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBOTI3RkQzMTQxNkExNUIwMDNBODNDOCAvKiBucHJ1bnRpbWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDBGMEQ3RTJCODIwMDdDMzk4MyAvKiBucHJ1bnRp
bWVfaW1wbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTYzMSw2ICsyNTY5MCw3IEBACiAJCQkJRTE2
OTgyNTUxMTM0NjI5RDAwODk0MTE1IC8qIE9iakNSdW50aW1lT2JqZWN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk3RTVEN0E3NzE2MUQzRjhGMDA4OTZDMzQgLyogT0VTRWxlbWVudEluZGV4VWludC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTAwMTc3NDExMkUwMzQ3ODAwNjQ4NDYyIC8qIE9FU1N0YW5k
YXJkRGVyaXZhdGl2ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTk0NkQzNzNDMUQ2Q0RGQzAwMDc3
MDg0RiAvKiBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVC
RjBFNDkxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzE0NkZFNkUxODQ0MjBBODAwMUE5MzdDIC8qIE9FU1RleHR1cmVGbG9hdExpbmVhci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTMxQzRFNEYxNkUwMkFCNDAwMkY3OTU3IC8qIE9FU1RleHR1
cmVIYWxmRmxvYXQuaCBpbiBIZWFkZXJzICovLApAQCAtMjU5MzcsNiArMjU5OTcsNyBAQAogCQkJ
CUExMEJCNTg1MTQ4NEUzQTcwMEIyRTg3QSAvKiBSZW5kZXJTVkdSZWN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MzY3MDhDRDEyRDlDQTRCMDAwNDQyMzQgLyogUmVuZGVyU1ZHUmVzb3VyY2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTQzNjcwOENGMTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTk0NkQzNzQ0MUQ2Q0Y3QjIwMDc3
MDg0RiAvKiBDU1NQYXJzZXJJZGlvbXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzNjcwOEQxMTJE
OUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDM2NzA4RDMxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR1Jlc291cmNlRmls
dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzY3MDhENTEyRDlDQTRCMDAwNDQyMzQgLyogUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaCBpbiBIZWFkZXJzICovLApAQCAtMjYxODQs
NiArMjYyNDUsNyBAQAogCQkJCTMxNzQxQUFEMTY2MzY2MDkwMDhBNUI3RSAvKiBTaW11bGF0ZWRD
bGlja09wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMDBEN0E1MTRBM0Y2MTkwMDczNDAx
MSAvKiBTaW5jUmVzYW1wbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTMyN0Q2MDExQTMzQTJC
MDA0RjlENjUgLyogU2lua0RvY3VtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZEMzc0MDFE
NkNFM0MyMDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5
RTkxMUNEMEVGODZENDcwMDlEMENBRiAvKiBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTUwRjlGMTEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjUzMkVBNDFCQTkyODU3MDAzOEE4MjcgLyogU2xv
dEFzc2lnbm1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjY2MDYsNiArMjY2NjgsNyBAQAogCQkJ
CUIyQzNEQTQ1MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0RmxhZ3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTkzMzA5RTE4MDk5RTY0OTIwMDU2RTU4MSAvKiBUZXh0R3JhbnVsYXJpdHkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJENEY5NkY2MUExRUNDMjQwMDk4QkY4OCAvKiBUZXh0SW5kaWNhdG9yLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk5NDlDNzcwOTFENkU0OTg3MDBDMERFNEYgLyogQ1NTUGFyc2Vy
T2JzZXJ2ZXJXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDRGOTZGNzFBMUVDQzI0MDA5
OEJGODggLyogVGV4dEluZGljYXRvcldpbmRvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNE
REExMjUxRjEyRDAwM0VGMjY5IC8qIFRleHRJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNFQ0FERkNFMTUzNzc5MUQwMEUzNzA2OCAvKiBUZXh0SW5zZXJ0aW9uQmFzZUNvbW1hbmQuaCBp
biBIZWFkZXJzICovLApAQCAtMjY5NjQsNiArMjcwMjcsNyBAQAogCQkJCUJDREZENDhFMEUzMDUy
OTAwMDlEMTBBRCAvKiBYTUxIdHRwUmVxdWVzdFVwbG9hZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTgzM0M4MEQwQTJDRjI1NjAwRDU3NjY0IC8qIFhNTE5hbWVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMTVBMzZENzExMDQ1NzIwMDBCN0I2MzkgLyogWE1MTlNOYW1lcy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTQ2RDM3M0ExRDZDREZDMDAwNzcwODRGIC8qIENTU1Rva2VuaXplci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFDRTUzRUIwQThEMThFNzAwMjI5NDdEIC8qIFhNTFNlcmlhbGl6ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTU5MDVBREMwMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmll
d2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI3RkM2OTBBOEI5MkVDMDBEOUQzN0IgLyogWFBh
dGhFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtMjczMjAsNiArMjczODQsNyBAQAogCQkJ
CTM3RjU3QUNEMUE1MDcyRDcwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250
YWluZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdGNTdBQ0UxQTUwNzJEQTAwODc2Rjk4IC8q
IEFjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOTFDOUZCRTFC
NjU4NkRFMDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRyZWUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJOTQ2RDM3NDUxRDZEMDFENDAwNzcwODRGIC8qIENTU1Byb3BlcnR5UGFyc2VyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE5MUM5RkMyMUI2NTlBNjcwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5
VHJlZUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjVEMzFERkExMUNGNjEwQjAwOUYyMkI0
IC8qIEFjdGl2ZURPTUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDRDBCQTA0MUI4
Rjc5QzkwMDVDRUJCRSAvKiBBY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTI3NjYyLDcgKzI3NzI3LDYgQEAKIAkJCQlCQzc3MkUxNjEzMzE2MkMyMDAxRUM5
Q0UgLyogQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBF
NkNGQzBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTTWVkaWFSdWxlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTMxNEJFM0EzMUIzMEY2RDEwMDE0MTk4MiAvKiBDU1NOYW1lZEltYWdlVmFsdWUuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJRjk4RkZGNDQxMUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgwRTZDRjUwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1Bh
Z2VSdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0IzODYyMTIyODgzRTkwMEI4MUZGOCAv
KiBDU1NQcmVsb2FkU2Nhbm5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBFNkQwNTBBMTk4
OUNBMDA3RkI4QzUgLyogQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
ODAzMSw2ICsyODA5NSw3IEBACiAJCQkJRkQzMTYwOUExMkIwMjZGNzAwQzFBMzU5IC8qIEhSVEZE
YXRhYmFzZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjA5QzEyQjAyNkY3MDBD
MUEzNTkgLyogSFJURkVsZXZhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjA5RTEy
QjAyNkY3MDBDMUEzNTkgLyogSFJURktlcm5lbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NDZE
Mzc0OTFENkQwNjI4MDA3NzA4NEYgLyogQ1NTTWFya3VwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUZEMzE2MEEwMTJCMDI2RjcwMEMxQTM1OSAvKiBIUlRGUGFubmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDOTdFMjNCMTA5MTQ0OTUwMDEwRDM2MSAvKiBIVE1MQWxsQ29sbGVjdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBOENGRjdBNDBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTEFuY2hv
ckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODkxNyw2ICsyODk4Miw3IEBACiAJCQkJ
MDcwNzU2OTQxNDIyNjY4RDAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTA3MDc1NkREMTQyMzlCNEUwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwN0UxMTcwNzE0ODlFQkVCMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tD
dWVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTQ5Qzc3MDgxRDZFNDk4NzAwQzBERTRG
IC8qIENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzA3
NTZERjE0MjM5QjRFMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTA3RTExNkIxMTQ4OUM5QTEwMEVDNUFDRSAvKiBKU1RleHRUcmFja0N1c3RvbS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwN0I1QTJEQjE0NjQzMjBBMDBBODFFQ0UgLyogSlNUZXh0
VHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg5MzQsNiArMjkwMDAsNyBAQAogCQkJ
CUE4NjYyOUQwMDlEQTJCNDgwMDk2MzNBNSAvKiBKU1VJRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQUFBNEZBRDMxNzVENUNCMzAwNzQzODczIC8qIEpTVUlSZXF1ZXN0RXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0M3M0ZCMTExOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNlck1lc3Nh
Z2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0NkQzNzM5MUQ2Q0RGQzAwMDc3MDg0
RiAvKiBDU1NUb2tlbml6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M3M0ZCMEMxOTFFRjVB
ODAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QzczRkIxOTE5MUVGODA4MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRs
ZXJzTmFtZXNwYWNlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE1Qzc3MDk0MTAwRDND
QTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTA0
OSw2ICsyOTExNiw3IEBACiAJCQkJRTRFMzlBRkQxMzMwRUZDNjAwM0FCMjc0IC8qIExlZ2FjeVRp
bGVMYXllclBvb2wubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTJERDhGNDBEOTFFNkFGMDAwRjg5
RUUgLyogTGVnYWN5V2ViQXJjaGl2ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUIyNDE3QjBE
OTMxRjNGMDBFODNGNUMgLyogTGVnYWN5V2ViQXJjaGl2ZU1hYy5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTk0NkQzNzREMUQ2RDA4QTYwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJhbmdlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDRTY1QkVBMEVBQ0RGMTYwMDdFNDUzMyAvKiBMZW5ndGguY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFOTVGMUIxQ0Q1NDBEMDAwRDJGNDVBIC8qIExlbmd0aEJv
eC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNTVGNDk3QTE1MUI4ODgwMDBCQjY3REIgLyogTGVu
Z3RoRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkzNDIsNiArMjk0MTAsNyBAQAog
CQkJCUNEN0QzMzQzMUM3QTEyM0YwMDA0MTI5MyAvKiBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGREY0NUE3MUJEMUM2RkQwMEU0RkE4QyAvKiBQbGF0Zm9y
bUNBQW5pbWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5NTg3ODIxMTJBNTdEREYwMDcy
MzhBQyAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW0gaW4gU291cmNlcyAqLywKKwkJCQk5
NDZEMzczRjFENkNFM0MyMDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW4uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEYxMzE2NDAxNkVEMENERTAwMzVDQzA0IC8qIFBsYXRmb3JtQ0FGaWx0ZXJzQ29j
b2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDcwQkExNTE4MDc0Rjg2MDAwMTkwOEEgLyogUGxh
dGZvcm1DQUxheWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5NTg3ODIyMTJBNTdEREYwMDcy
MzhBQyAvKiBQbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLApAQCAtMzAxOTks
NiArMzAyNjgsNyBAQAogCQkJCUU0NTM5MDQ5MEVBRkQ2MzcwMDM2OTVDOCAvKiBXZWJDb3JlU3lz
dGVtSW50ZXJmYWNlSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE0ODMyQzgxODdGNjczRjAw
REE2M0E2IC8qIFdlYkNvcmVUaHJlYWQubW0gaW4gU291cmNlcyAqLywKIAkJCQlBMTQ4MzJDQjE4
N0Y2N0I0MDBEQTYzQTYgLyogV2ViQ29yZVRocmVhZFJ1bi5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk5NDZEMzczQjFENkNERkMwMDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTE0ODMyQ0UxODdGNjgzNDAwREE2M0E2IC8qIFdlYkNvcmVU
aHJlYWRTeXN0ZW1JbnRlcmZhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwOTlEMDgxN0I5
NjhBMTAwRkY4NEI5IC8qIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzN0Y4MThGRTBENjU3NjA2MDA1RTFGMDUgLyogV2ViQ29yZVVSTFJlc3BvbnNl
Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zMDI4NCw2ICszMDM1NCw3IEBACiAJCQkJQ0Q4MjAzMEQx
Mzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkzRkJDNEFGMzE4OTg4MTU2MDA0NkVFMzggLyogV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MjEzMUU1
QjFDNEYxNTc2MDAzM0Y4MDIgLyogV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJOTQ5Qzc3MDAxRDZFMUQ5ODAwQzBERTRGIC8qIENTU1BhcnNlckZh
c3RQYXRocy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MkQ1QTFBOTFDNTc0OEE5MDBERTM0QTMg
LyogV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0gaW4gU291cmNlcyAqLywK
IAkJCQlGMTIxNzFGNTE2QThDRUQyMDAwMDUzQ0EgLyogV2ViVlRURWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1RDIxQTgwMjEzRUNFNURGMDBCQjcwNjQgLyogV2ViVlRUUGFyc2VyLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMzAzNDIsNiArMzA0MTMsNyBAQAogCQkJCTFBQjdGQzcwMEE4
QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QTc2MjlENTBBMDc0MjUxMDA5ODlGNUIgLyogWFBhdGhHcmFtbWFyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUUxRUMyOTlGMEJCMDRDNkIwMEVBMTg3QiAvKiBYUGF0aE5vZGVTZXQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJOTQ5Qzc3MDQxRDZFMzlFQTAwQzBERTRGIC8qIENTU1Byb3BlcnR5UGFy
c2VySGVscGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3RkM3NTBBOEI5MkVDMDBEOUQz
N0IgLyogWFBhdGhOU1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjdGQzc4MEE4
QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3
RkM3QTBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhQYXRoLmNwcCBpbiBTb3VyY2VzICovLApJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL0NTU01hcmt1cC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL0NTU01hcmt1cC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU01hcmt1cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqIENv
cHlyaWdodCAoQykgMjAwNSBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gKGtkZUBjYXJld29sZi5jb20p
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA3IE5pY2hvbGFzIFNoYW5rcyA8d2Via2l0QG5pY2tzaGFua3MuY29tPgorICog
Q29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0
dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBT
eXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkNTU01hcmt1cC5oIgorCisjaW5jbHVkZSAiQ1NTUGFyc2Vy
SWRpb21zLmgiCisjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4K
K3N0YXRpYyBpbmxpbmUgYm9vbCBpc0NTU1Rva2VuaXplcklkZW50aWZpZXIoY29uc3QgQ2hhcmFj
dGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGNvbnN0IENoYXJh
Y3RlclR5cGUqIGVuZCA9IGNoYXJhY3RlcnMgKyBsZW5ndGg7CisKKyAgICAvLyAtPworICAgIGlm
IChjaGFyYWN0ZXJzICE9IGVuZCAmJiBjaGFyYWN0ZXJzWzBdID09ICctJykKKyAgICAgICAgKytj
aGFyYWN0ZXJzOworCisgICAgLy8ge25tc3RhcnR9CisgICAgaWYgKGNoYXJhY3RlcnMgPT0gZW5k
IHx8ICFpc05hbWVTdGFydENvZGVQb2ludChjaGFyYWN0ZXJzWzBdKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICsrY2hhcmFjdGVyczsKKworICAgIC8vIHtubWNoYXJ9KgorICAgIGZvciAo
OyBjaGFyYWN0ZXJzICE9IGVuZDsgKytjaGFyYWN0ZXJzKSB7CisgICAgICAgIGlmICghaXNOYW1l
Q29kZVBvaW50KGNoYXJhY3RlcnNbMF0pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIHJldHVybiB0cnVlOworfQorCisvLyAiaWRlbnQiIGZyb20gdGhlIENTUyB0b2tl
bml6ZXIsIG1pbnVzIGJhY2tzbGFzaC1lc2NhcGUgc2VxdWVuY2VzCitzdGF0aWMgYm9vbCBpc0NT
U1Rva2VuaXplcklkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOworCisgICAgaWYgKCFsZW5ndGgpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVy
biBpc0NTU1Rva2VuaXplcklkZW50aWZpZXIoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7
CisgICAgcmV0dXJuIGlzQ1NTVG9rZW5pemVySWRlbnRpZmllcihzdHJpbmcuY2hhcmFjdGVyczE2
KCksIGxlbmd0aCk7Cit9CisKK3N0YXRpYyB2b2lkIHNlcmlhbGl6ZUNoYXJhY3RlcihVQ2hhcjMy
IGMsIFN0cmluZ0J1aWxkZXImIGFwcGVuZFRvKQoreworICAgIGFwcGVuZFRvLmFwcGVuZCgnXFwn
KTsKKyAgICBhcHBlbmRUby5hcHBlbmQoYyk7Cit9CisKK3N0YXRpYyB2b2lkIHNlcmlhbGl6ZUNo
YXJhY3RlckFzQ29kZVBvaW50KFVDaGFyMzIgYywgU3RyaW5nQnVpbGRlciYgYXBwZW5kVG8pCit7
CisgICAgYXBwZW5kVG8uYXBwZW5kKCdcXCcpOworICAgIGFwcGVuZFVuc2lnbmVkQXNIZXgoYywg
YXBwZW5kVG8sIExvd2VyY2FzZSk7CisgICAgYXBwZW5kVG8uYXBwZW5kKCcgJyk7Cit9CisKK3Zv
aWQgc2VyaWFsaXplSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFN0cmluZ0J1
aWxkZXImIGFwcGVuZFRvLCBib29sIHNraXBTdGFydENoZWNrcykKK3sKKyAgICBib29sIGlzRmly
c3QgPSAhc2tpcFN0YXJ0Q2hlY2tzOworICAgIGJvb2wgaXNTZWNvbmQgPSBmYWxzZTsKKyAgICBi
b29sIGlzRmlyc3RDaGFySHlwaGVuID0gZmFsc2U7CisgICAgdW5zaWduZWQgaW5kZXggPSAwOwor
ICAgIHdoaWxlIChpbmRleCA8IGlkZW50aWZpZXIubGVuZ3RoKCkpIHsKKyAgICAgICAgVUNoYXIz
MiBjID0gaWRlbnRpZmllci5jaGFyYWN0ZXJTdGFydGluZ0F0KGluZGV4KTsKKyAgICAgICAgaWYg
KGMgPT0gMCkgeworICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGxvbmUgc3Vycm9nYXRlIHdoaWNo
IGNoYXJhY3RlclN0YXJ0aW5nQXQgZG9lcyBub3QgcmV0dXJuLgorICAgICAgICAgICAgYyA9IGlk
ZW50aWZpZXJbaW5kZXhdOworICAgICAgICB9CisKKyAgICAgICAgaW5kZXggKz0gVTE2X0xFTkdU
SChjKTsKKworICAgICAgICBpZiAoYyA9PSAwKQorICAgICAgICAgICAgYXBwZW5kVG8uYXBwZW5k
KDB4ZmZmZCk7CisgICAgICAgIGVsc2UgaWYgKGMgPD0gMHgxZiB8fCBjID09IDB4N2YgfHwgKDB4
MzAgPD0gYyAmJiBjIDw9IDB4MzkgJiYgKGlzRmlyc3QgfHwgKGlzU2Vjb25kICYmIGlzRmlyc3RD
aGFySHlwaGVuKSkpKQorICAgICAgICAgICAgc2VyaWFsaXplQ2hhcmFjdGVyQXNDb2RlUG9pbnQo
YywgYXBwZW5kVG8pOworICAgICAgICBlbHNlIGlmIChjID09IDB4MmQgJiYgaXNGaXJzdCAmJiBp
bmRleCA9PSBpZGVudGlmaWVyLmxlbmd0aCgpKQorICAgICAgICAgICAgc2VyaWFsaXplQ2hhcmFj
dGVyKGMsIGFwcGVuZFRvKTsKKyAgICAgICAgZWxzZSBpZiAoMHg4MCA8PSBjIHx8IGMgPT0gMHgy
ZCB8fCBjID09IDB4NWYgfHwgKDB4MzAgPD0gYyAmJiBjIDw9IDB4MzkpIHx8ICgweDQxIDw9IGMg
JiYgYyA8PSAweDVhKSB8fCAoMHg2MSA8PSBjICYmIGMgPD0gMHg3YSkpCisgICAgICAgICAgICBh
cHBlbmRUby5hcHBlbmQoYyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNlcmlhbGl6ZUNo
YXJhY3RlcihjLCBhcHBlbmRUbyk7CisKKyAgICAgICAgaWYgKGlzRmlyc3QpIHsKKyAgICAgICAg
ICAgIGlzRmlyc3QgPSBmYWxzZTsKKyAgICAgICAgICAgIGlzU2Vjb25kID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGlzRmlyc3RDaGFySHlwaGVuID0gKGMgPT0gMHgyZCk7CisgICAgICAgIH0gZWxzZSBp
ZiAoaXNTZWNvbmQpIHsKKyAgICAgICAgICAgIGlzU2Vjb25kID0gZmFsc2U7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3ZvaWQgc2VyaWFsaXplU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBT
dHJpbmdCdWlsZGVyJiBhcHBlbmRUbykKK3sKKyAgICBhcHBlbmRUby5hcHBlbmQoJ1wiJyk7CisK
KyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgd2hpbGUgKGluZGV4IDwgc3RyaW5nLmxlbmd0
aCgpKSB7CisgICAgICAgIFVDaGFyMzIgYyA9IHN0cmluZy5jaGFyYWN0ZXJTdGFydGluZ0F0KGlu
ZGV4KTsKKyAgICAgICAgaW5kZXggKz0gVTE2X0xFTkdUSChjKTsKKworICAgICAgICBpZiAoYyA8
PSAweDFmIHx8IGMgPT0gMHg3ZikKKyAgICAgICAgICAgIHNlcmlhbGl6ZUNoYXJhY3RlckFzQ29k
ZVBvaW50KGMsIGFwcGVuZFRvKTsKKyAgICAgICAgZWxzZSBpZiAoYyA9PSAweDIyIHx8IGMgPT0g
MHg1YykKKyAgICAgICAgICAgIHNlcmlhbGl6ZUNoYXJhY3RlcihjLCBhcHBlbmRUbyk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGFwcGVuZFRvLmFwcGVuZChjKTsKKyAgICB9CisKKyAgICBh
cHBlbmRUby5hcHBlbmQoJ1wiJyk7Cit9CisKK1N0cmluZyBzZXJpYWxpemVTdHJpbmcoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIHNlcmlh
bGl6ZVN0cmluZyhzdHJpbmcsIGJ1aWxkZXIpOworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5n
KCk7Cit9CisKK1N0cmluZyBzZXJpYWxpemVVUkkoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7Cisg
ICAgcmV0dXJuICJ1cmwoIiArIHNlcmlhbGl6ZVN0cmluZyhzdHJpbmcpICsgIikiOworfQorCitT
dHJpbmcgc2VyaWFsaXplRm9udEZhbWlseShjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBy
ZXR1cm4gaXNDU1NUb2tlbml6ZXJJZGVudGlmaWVyKHN0cmluZykgPyBzdHJpbmcgOiBzZXJpYWxp
emVTdHJpbmcoc3RyaW5nKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL0NTU01hcmt1cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NNYXJrdXAuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
TWFya3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwMyBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQu
b3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5IC0gMjAxMCAgVG9yY2ggTW9iaWxlIChCZWlqaW5n
KSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIENTU01hcmt1cF9oCisjZGVm
aW5lIENTU01hcmt1cF9oCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworLy8g
SGVscGVyIGZ1bmN0aW9ucyBmb3IgY29udmVydGluZyBmcm9tIENTU1ZhbHVlcyB0byB0ZXh0Lgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIENvbW1vbiBzZXJpYWxpemluZyBtZXRob2RzLiBT
ZWU6IGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzc29tLyNjb21tb24tc2VyaWFsaXppbmctaWRp
b21zCit2b2lkIHNlcmlhbGl6ZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBT
dHJpbmdCdWlsZGVyJiBhcHBlbmRUbywgYm9vbCBza2lwU3RhcnRDaGVja3MgPSBmYWxzZSk7Cit2
b2lkIHNlcmlhbGl6ZVN0cmluZyhjb25zdCBTdHJpbmcmLCBTdHJpbmdCdWlsZGVyJiBhcHBlbmRU
byk7CitTdHJpbmcgc2VyaWFsaXplU3RyaW5nKGNvbnN0IFN0cmluZyYpOworU3RyaW5nIHNlcmlh
bGl6ZVVSSShjb25zdCBTdHJpbmcmKTsKK1N0cmluZyBzZXJpYWxpemVGb250RmFtaWx5KGNvbnN0
IFN0cmluZyYpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NNYXJr
dXBfaApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU09NVXRpbHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NPTVV0aWxzLmNwcAkocmV2aXNpb24gMjA0OTA1KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0NTU09NVXRpbHMuY3BwCShub25leGlzdGVudCkKQEAgLTEs
MTAwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ1NTT01VdGlscy5oIgot
Ci0jaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIHNlcmlhbGl6ZUNoYXJhY3Rl
cihVQ2hhcjMyIGMsIFN0cmluZ0J1aWxkZXImIGFwcGVuZFRvKQotewotICAgIGFwcGVuZFRvLmFw
cGVuZCgnXFwnKTsKLSAgICBhcHBlbmRUby5hcHBlbmQoYyk7Ci19Ci0KLXZvaWQgc2VyaWFsaXpl
Q2hhcmFjdGVyQXNDb2RlUG9pbnQoVUNoYXIzMiBjLCBTdHJpbmdCdWlsZGVyJiBhcHBlbmRUbykK
LXsKLSAgICBhcHBlbmRUby5hcHBlbmQoJ1xcJyk7Ci0gICAgYXBwZW5kVW5zaWduZWRBc0hleChj
LCBhcHBlbmRUbywgTG93ZXJjYXNlKTsKLSAgICBhcHBlbmRUby5hcHBlbmQoJyAnKTsKLX0KLQot
dm9pZCBzZXJpYWxpemVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgU3RyaW5n
QnVpbGRlciYgYXBwZW5kVG8pCi17Ci0gICAgYm9vbCBpc0ZpcnN0ID0gdHJ1ZTsKLSAgICBib29s
IGlzU2Vjb25kID0gZmFsc2U7Ci0gICAgYm9vbCBpc0ZpcnN0Q2hhckh5cGhlbiA9IGZhbHNlOwot
ICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKLSAgICB3aGlsZSAoaW5kZXggPCBpZGVudGlmaWVyLmxl
bmd0aCgpKSB7Ci0gICAgICAgIFVDaGFyMzIgYyA9IGlkZW50aWZpZXIuY2hhcmFjdGVyU3RhcnRp
bmdBdChpbmRleCk7Ci0gICAgICAgIGluZGV4ICs9IFUxNl9MRU5HVEgoYyk7Ci0KLSAgICAgICAg
aWYgKGMgPD0gMHgxZiB8fCAoMHgzMCA8PSBjICYmIGMgPD0gMHgzOSAmJiAoaXNGaXJzdCB8fCAo
aXNTZWNvbmQgJiYgaXNGaXJzdENoYXJIeXBoZW4pKSkpCi0gICAgICAgICAgICBzZXJpYWxpemVD
aGFyYWN0ZXJBc0NvZGVQb2ludChjLCBhcHBlbmRUbyk7Ci0gICAgICAgIGVsc2UgaWYgKGMgPT0g
MHgyZCAmJiBpc1NlY29uZCAmJiBpc0ZpcnN0Q2hhckh5cGhlbikKLSAgICAgICAgICAgIHNlcmlh
bGl6ZUNoYXJhY3RlcihjLCBhcHBlbmRUbyk7Ci0gICAgICAgIGVsc2UgaWYgKDB4ODAgPD0gYyB8
fCBjID09IDB4MmQgfHwgYyA9PSAweDVmIHx8ICgweDMwIDw9IGMgJiYgYyA8PSAweDM5KSB8fCAo
MHg0MSA8PSBjICYmIGMgPD0gMHg1YSkgfHwgKDB4NjEgPD0gYyAmJiBjIDw9IDB4N2EpKQotICAg
ICAgICAgICAgYXBwZW5kVG8uYXBwZW5kKGMpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBz
ZXJpYWxpemVDaGFyYWN0ZXIoYywgYXBwZW5kVG8pOwotCi0gICAgICAgIGlmIChpc0ZpcnN0KSB7
Ci0gICAgICAgICAgICBpc0ZpcnN0ID0gZmFsc2U7Ci0gICAgICAgICAgICBpc1NlY29uZCA9IHRy
dWU7Ci0gICAgICAgICAgICBpc0ZpcnN0Q2hhckh5cGhlbiA9IChjID09IDB4MmQpOwotICAgICAg
ICB9IGVsc2UgaWYgKGlzU2Vjb25kKSB7Ci0gICAgICAgICAgICBpc1NlY29uZCA9IGZhbHNlOwot
ICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIHNlcmlhbGl6ZVN0cmluZyhjb25zdCBTdHJpbmcm
IHN0cmluZywgU3RyaW5nQnVpbGRlciYgYXBwZW5kVG8pCi17Ci0gICAgYXBwZW5kVG8uYXBwZW5k
KCdcIicpOwotCi0gICAgdW5zaWduZWQgaW5kZXggPSAwOwotICAgIHdoaWxlIChpbmRleCA8IHN0
cmluZy5sZW5ndGgoKSkgewotICAgICAgICBVQ2hhcjMyIGMgPSBzdHJpbmcuY2hhcmFjdGVyU3Rh
cnRpbmdBdChpbmRleCk7Ci0gICAgICAgIGluZGV4ICs9IFUxNl9MRU5HVEgoYyk7Ci0gICAgICAg
IGlmIChjIDw9IDB4MWYpCi0gICAgICAgICAgICBzZXJpYWxpemVDaGFyYWN0ZXJBc0NvZGVQb2lu
dChjLCBhcHBlbmRUbyk7Ci0gICAgICAgIGVsc2UgaWYgKGMgPT0gMHgyMiB8fCBjID09IDB4NWMp
Ci0gICAgICAgICAgICBzZXJpYWxpemVDaGFyYWN0ZXIoYywgYXBwZW5kVG8pOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBhcHBlbmRUby5hcHBlbmQoYyk7Ci0gICAgfQotCi0gICAgYXBwZW5k
VG8uYXBwZW5kKCdcIicpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTT01VdGlscy5jcHAKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpE
ZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTT01VdGlscy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NPTVV0aWxzLmgJKHJldmlzaW9u
IDIwNDkwNSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NPTVV0aWxzLmgJKG5vbmV4aXN0ZW50
KQpAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx1bmljb2RlL3VtYWNo
aW5lLmg+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotLy8gVXRpbGl0aWVzIGZvciBDU1NP
TSBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3NvbS8KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci0vLyBDb21tb24gc2VyaWFsaXppbmcgbWV0aG9kcy4gU2VlOiBodHRwOi8vZGV2LnczLm9yZy9j
c3N3Zy9jc3NvbS8jY29tbW9uLXNlcmlhbGl6aW5nLWlkaW9tcwotdm9pZCBzZXJpYWxpemVDaGFy
YWN0ZXIoVUNoYXIzMiwgU3RyaW5nQnVpbGRlciYpOwotdm9pZCBzZXJpYWxpemVDaGFyYWN0ZXJB
c0NvZGVQb2ludChVQ2hhcjMyLCBTdHJpbmdCdWlsZGVyJik7Ci12b2lkIHNlcmlhbGl6ZUlkZW50
aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBTdHJpbmdCdWlsZGVyJik7Ci12b2lkIHNl
cmlhbGl6ZVN0cmluZyhjb25zdCBTdHJpbmcmLCBTdHJpbmdCdWlsZGVyJik7Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NPTVV0aWxzLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAg
IyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDIwNDkwNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogCi0jaW5jbHVkZSAi
Q1NTT01VdGlscy5oIgorI2luY2x1ZGUgIkNTU01hcmt1cC5oIgogI2luY2x1ZGUgIkNTU1NlbGVj
dG9yTGlzdC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIlNlbGVjdG9yUHNl
dWRvVHlwZU1hcC5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJG
YXN0UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VyRmFzdFBhdGhzLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MTE3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoK
Ky8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8v
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
Ky8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNTU1BhcnNlckZhc3RQYXRocy5oIgorCisj
aW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNob3J0aGFuZC5oIgorLy8gI2luY2x1ZGUgIkNTU0NvbG9y
VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NGdW5jdGlvblZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTSW5o
ZXJpdGVkVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NJbml0aWFsVmFsdWUuaCIKKyNpbmNsdWRlICJD
U1NQcmltaXRpdmVWYWx1ZS5oIgorLy8gI2luY2x1ZGUgIlN0eWxlQ29sb3IuaCIKKyNpbmNsdWRl
ICJDU1NQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNlci5oIgorI2lu
Y2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLyogRklYTUUtTkVXUEFSU0VSOiBUdXJu
IG9mZiBmb3Igbm93LgorIAorc3RhdGljIGlubGluZSBib29sIGlzU2ltcGxlTGVuZ3RoUHJvcGVy
dHlJRChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQsIGJvb2wmIGFjY2VwdHNOZWdhdGl2ZU51bWJl
cnMpCit7CisgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZv
bnRTaXplOgorICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkQ29sdW1uR2FwOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlHcmlkUm93R2FwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlIZWlnaHQ6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5IZWlnaHQ6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eU1pbldpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nQm90
dG9tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nTGVmdDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5UGFkZGluZ1JpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nVG9wOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRMb2dpY2FsV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdExvZ2ljYWxIZWlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxX
aWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbEhlaWdodDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0FmdGVyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRQYWRkaW5nQmVmb3JlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nRW5k
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nU3RhcnQ6CisgIC8vICBjYXNlIENT
U1Byb3BlcnR5U2hhcGVNYXJnaW46CisgICAgY2FzZSBDU1NQcm9wZXJ0eVI6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVJ4OgorICAgIGNhc2UgQ1NTUHJvcGVydHlSeToKKyAgICAgICAgYWNjZXB0c05l
Z2F0aXZlTnVtYmVycyA9IGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5Qm90dG9tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDeDoKKyAgICBjYXNlIENTU1By
b3BlcnR5Q3k6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxlZnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eU1hcmdpbkJvdHRvbToKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luTGVmdDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5TWFyZ2luUmlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpblRvcDoK
KyAvLyAgIGNhc2UgQ1NTUHJvcGVydHlNb3Rpb25PZmZzZXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVJpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUb3A6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hcmdpbkFmdGVyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmU6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVuZDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luU3RhcnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVg6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVk6CisgICAgICAgIGFjY2VwdHNOZWdhdGl2ZU51bWJlcnMgPSB0cnVlOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBpbmxp
bmUgYm9vbCBwYXJzZVNpbXBsZUxlbmd0aChjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJz
LCB1bnNpZ25lZCBsZW5ndGgsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMmIHVuaXQsIGRv
dWJsZSYgbnVtYmVyKQoreworICAgIGlmIChsZW5ndGggPiAyICYmIChjaGFyYWN0ZXJzW2xlbmd0
aCAtIDJdIHwgMHgyMCkgPT0gJ3AnICYmIChjaGFyYWN0ZXJzW2xlbmd0aCAtIDFdIHwgMHgyMCkg
PT0gJ3gnKSB7CisgICAgICAgIGxlbmd0aCAtPSAyOworICAgICAgICB1bml0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1BYOworICAgIH0gZWxzZSBpZiAobGVuZ3RoID4gMSAm
JiBjaGFyYWN0ZXJzW2xlbmd0aCAtIDFdID09ICclJykgeworICAgICAgICBsZW5ndGggLT0gMTsK
KyAgICAgICAgdW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19QRVJDRU5U
QUdFOworICAgIH0KKworICAgIC8vIFdlIHJlbHkgb24gY2hhcmFjdGVyc1RvRG91YmxlIGZvciB2
YWxpZGF0aW9uIGFzIHdlbGwuIFRoZSBmdW5jdGlvbgorICAgIC8vIHdpbGwgc2V0ICJvayIgdG8g
ImZhbHNlIiBpZiB0aGUgZW50aXJlIHBhc3NlZC1pbiBjaGFyYWN0ZXIgcmFuZ2UgZG9lcworICAg
IC8vIG5vdCByZXByZXNlbnQgYSBkb3VibGUuCisgICAgYm9vbCBvazsKKyAgICBudW1iZXIgPSBj
aGFyYWN0ZXJzVG9Eb3VibGUoY2hhcmFjdGVycywgbGVuZ3RoLCAmb2spOworICAgIGlmICghb2sp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBudW1iZXIgPSBjbGFtcFRvPGRvdWJsZT4obnVt
YmVyLCAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpLCBzdGQ6Om51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6bWF4KCkpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgQ1NTVmFs
dWUqIHBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkLCBjb25z
dCBTdHJpbmcmIHN0cmluZywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIEFT
U0VSVCghc3RyaW5nLmlzRW1wdHkoKSk7CisgICAgYm9vbCBhY2NlcHRzTmVnYXRpdmVOdW1iZXJz
ID0gZmFsc2U7CisKKyAgICAvLyBJbiBAdmlld3BvcnQsIHdpZHRoIGFuZCBoZWlnaHQgYXJlIHNo
b3J0aGFuZHMsIG5vdCBzaW1wbGUgbGVuZ3RoIHZhbHVlcy4KKyAgICBpZiAoaXNDU1NWaWV3cG9y
dFBhcnNpbmdFbmFibGVkRm9yTW9kZShjc3NQYXJzZXJNb2RlKSB8fCAhaXNTaW1wbGVMZW5ndGhQ
cm9wZXJ0eUlEKHByb3BlcnR5SWQsIGFjY2VwdHNOZWdhdGl2ZU51bWJlcnMpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsK
KyAgICBkb3VibGUgbnVtYmVyOworICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgdW5p
dCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6Ok51bWJlcjsKKworICAgIGlmIChzdHJp
bmcuaXM4Qml0KCkpIHsKKyAgICAgICAgaWYgKCFwYXJzZVNpbXBsZUxlbmd0aChzdHJpbmcuY2hh
cmFjdGVyczgoKSwgbGVuZ3RoLCB1bml0LCBudW1iZXIpKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFwYXJzZVNpbXBsZUxlbmd0aChzdHJp
bmcuY2hhcmFjdGVyczE2KCksIGxlbmd0aCwgdW5pdCwgbnVtYmVyKSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKworICAgIGlmICh1bml0ID09IENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZXM6Ok51bWJlcikgeworICAgICAgICBpZiAoY3NzUGFyc2VyTW9kZSA9PSBTVkdB
dHRyaWJ1dGVNb2RlKQorICAgICAgICAgICAgdW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZXM6OlVzZXJVbml0czsKKyAgICAgICAgZWxzZSBpZiAoIW51bWJlcikKKyAgICAgICAgICAg
IHVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpQaXhlbHM7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGlmIChudW1iZXIg
PCAwICYmICFhY2NlcHRzTmVnYXRpdmVOdW1iZXJzKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG51bWJlciwgdW5pdCk7Cit9
CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0NvbG9yUHJvcGVydHlJRChDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5SWQpCit7CisgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3I6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJMZWZ0Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3I6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlGaWxs
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9vZENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlM
aWdodGluZ0NvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3I6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVN0b3BDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlckNvbG9yOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyRW5kQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0Q29s
b3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVtblJ1bGVDb2xvcjoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRleHRGaWxsQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xv
cjoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25Db2xvcjoKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30K
KworLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgd2hpY2ggZm9ybSBhIHZhbGlk
IGRvdWJsZQorLy8gYW5kIGFyZSB0ZXJtaW5hdGVkIGJ5IHRoZSBnaXZlbiB0ZXJtaW5hdG9yIGNo
YXJhY3RlcgordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgaW50IGNo
ZWNrRm9yVmFsaWREb3VibGUoY29uc3QgQ2hhcmFjdGVyVHlwZSogc3RyaW5nLCBjb25zdCBDaGFy
YWN0ZXJUeXBlKiBlbmQsIGNvbnN0IGNoYXIgdGVybWluYXRvcikKK3sKKyAgICBpbnQgbGVuZ3Ro
ID0gZW5kIC0gc3RyaW5nOworICAgIGlmIChsZW5ndGggPCAxKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIGJvb2wgZGVjaW1hbE1hcmtTZWVuID0gZmFsc2U7CisgICAgaW50IHByb2Nlc3NlZExl
bmd0aCA9IDA7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAg
ICAgIGlmIChzdHJpbmdbaV0gPT0gdGVybWluYXRvcikgeworICAgICAgICAgICAgcHJvY2Vzc2Vk
TGVuZ3RoID0gaTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmICgh
aXNBU0NJSURpZ2l0KHN0cmluZ1tpXSkpIHsKKyAgICAgICAgICAgIGlmICghZGVjaW1hbE1hcmtT
ZWVuICYmIHN0cmluZ1tpXSA9PSAnLicpCisgICAgICAgICAgICAgICAgZGVjaW1hbE1hcmtTZWVu
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGlmIChkZWNpbWFsTWFya1NlZW4gJiYgcHJvY2Vzc2VkTGVu
Z3RoID09IDEpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIHByb2Nlc3NlZExlbmd0
aDsKK30KKworLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgY29uc3VtZWQgZm9y
IHBhcnNpbmcgYSB2YWxpZCBkb3VibGUKKy8vIHRlcm1pbmF0ZWQgYnkgdGhlIGdpdmVuIHRlcm1p
bmF0b3IgY2hhcmFjdGVyCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRp
YyBpbnQgcGFyc2VEb3VibGUoY29uc3QgQ2hhcmFjdGVyVHlwZSogc3RyaW5nLCBjb25zdCBDaGFy
YWN0ZXJUeXBlKiBlbmQsIGNvbnN0IGNoYXIgdGVybWluYXRvciwgZG91YmxlJiB2YWx1ZSkKK3sK
KyAgICBpbnQgbGVuZ3RoID0gY2hlY2tGb3JWYWxpZERvdWJsZShzdHJpbmcsIGVuZCwgdGVybWlu
YXRvcik7CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiAwOworCisgICAgaW50IHBv
c2l0aW9uID0gMDsKKyAgICBkb3VibGUgbG9jYWxWYWx1ZSA9IDA7CisKKyAgICAvLyBUaGUgY29u
c3VtZWQgY2hhcmFjdGVycyBoZXJlIGFyZSBndWFyYW50ZWVkIHRvIGJlCisgICAgLy8gQVNDSUkg
ZGlnaXRzIHdpdGggb3Igd2l0aG91dCBhIGRlY2ltYWwgbWFyaworICAgIGZvciAoOyBwb3NpdGlv
biA8IGxlbmd0aDsgKytwb3NpdGlvbikgeworICAgICAgICBpZiAoc3RyaW5nW3Bvc2l0aW9uXSA9
PSAnLicpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgbG9jYWxWYWx1ZSA9IGxvY2FsVmFs
dWUgKiAxMCArIHN0cmluZ1twb3NpdGlvbl0gLSAnMCc7CisgICAgfQorCisgICAgaWYgKCsrcG9z
aXRpb24gPT0gbGVuZ3RoKSB7CisgICAgICAgIHZhbHVlID0gbG9jYWxWYWx1ZTsKKyAgICAgICAg
cmV0dXJuIGxlbmd0aDsKKyAgICB9CisKKyAgICBkb3VibGUgZnJhY3Rpb24gPSAwOworICAgIGRv
dWJsZSBzY2FsZSA9IDE7CisKKyAgICBjb25zdCBkb3VibGUgbWF4U2NhbGUgPSAxMDAwMDAwOwor
ICAgIHdoaWxlIChwb3NpdGlvbiA8IGxlbmd0aCAmJiBzY2FsZSA8IG1heFNjYWxlKSB7CisgICAg
ICAgIGZyYWN0aW9uID0gZnJhY3Rpb24gKiAxMCArIHN0cmluZ1twb3NpdGlvbisrXSAtICcwJzsK
KyAgICAgICAgc2NhbGUgKj0gMTA7CisgICAgfQorCisgICAgdmFsdWUgPSBsb2NhbFZhbHVlICsg
ZnJhY3Rpb24gLyBzY2FsZTsKKyAgICByZXR1cm4gbGVuZ3RoOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBib29sIHBhcnNlQ29sb3JJbnRPclBlcmNlbnRh
Z2UoY29uc3QgQ2hhcmFjdGVyVHlwZSomIHN0cmluZywgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5k
LCBjb25zdCBjaGFyIHRlcm1pbmF0b3IsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMmIGV4
cGVjdCwgaW50JiB2YWx1ZSkKK3sKKyAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBjdXJyZW50ID0g
c3RyaW5nOworICAgIGRvdWJsZSBsb2NhbFZhbHVlID0gMDsKKyAgICBib29sIG5lZ2F0aXZlID0g
ZmFsc2U7CisgICAgd2hpbGUgKGN1cnJlbnQgIT0gZW5kICYmIGlzSFRNTFNwYWNlPENoYXJhY3Rl
clR5cGU+KCpjdXJyZW50KSkKKyAgICAgICAgY3VycmVudCsrOworICAgIGlmIChjdXJyZW50ICE9
IGVuZCAmJiAqY3VycmVudCA9PSAnLScpIHsKKyAgICAgICAgbmVnYXRpdmUgPSB0cnVlOworICAg
ICAgICBjdXJyZW50Kys7CisgICAgfQorICAgIGlmIChjdXJyZW50ID09IGVuZCB8fCAhaXNBU0NJ
SURpZ2l0KCpjdXJyZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHdoaWxlIChjdXJy
ZW50ICE9IGVuZCAmJiBpc0FTQ0lJRGlnaXQoKmN1cnJlbnQpKSB7CisgICAgICAgIGRvdWJsZSBu
ZXdWYWx1ZSA9IGxvY2FsVmFsdWUgKiAxMCArICpjdXJyZW50KysgLSAnMCc7CisgICAgICAgIGlm
IChuZXdWYWx1ZSA+PSAyNTUpIHsKKyAgICAgICAgICAgIC8vIENsYW1wIHZhbHVlcyBhdCAyNTUu
CisgICAgICAgICAgICBsb2NhbFZhbHVlID0gMjU1OworICAgICAgICAgICAgd2hpbGUgKGN1cnJl
bnQgIT0gZW5kICYmIGlzQVNDSUlEaWdpdCgqY3VycmVudCkpCisgICAgICAgICAgICAgICAgKytj
dXJyZW50OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgbG9jYWxWYWx1
ZSA9IG5ld1ZhbHVlOworICAgIH0KKworICAgIGlmIChjdXJyZW50ID09IGVuZCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKGV4cGVjdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGVzOjpOdW1iZXIgJiYgKCpjdXJyZW50ID09ICcuJyB8fCAqY3VycmVudCA9PSAnJScpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoKmN1cnJlbnQgPT0gJy4nKSB7CisgICAg
ICAgIC8vIFdlIGFscmVhZHkgcGFyc2VkIHRoZSBpbnRlZ3JhbCBwYXJ0LCB0cnkgdG8gcGFyc2UK
KyAgICAgICAgLy8gdGhlIGZyYWN0aW9uIHBhcnQgb2YgdGhlIHBlcmNlbnRhZ2UgdmFsdWUuCisg
ICAgICAgIGRvdWJsZSBwZXJjZW50YWdlID0gMDsKKyAgICAgICAgaW50IG51bUNoYXJhY3RlcnNQ
YXJzZWQgPSBwYXJzZURvdWJsZShjdXJyZW50LCBlbmQsICclJywgcGVyY2VudGFnZSk7CisgICAg
ICAgIGlmICghbnVtQ2hhcmFjdGVyc1BhcnNlZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgY3VycmVudCArPSBudW1DaGFyYWN0ZXJzUGFyc2VkOworICAgICAgICBpZiAoKmN1
cnJlbnQgIT0gJyUnKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBsb2NhbFZh
bHVlICs9IHBlcmNlbnRhZ2U7CisgICAgfQorCisgICAgaWYgKGV4cGVjdCA9PSBDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGVzOjpQZXJjZW50YWdlICYmICpjdXJyZW50ICE9ICclJykKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCpjdXJyZW50ID09ICclJykgeworICAgICAgICBl
eHBlY3QgPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpQZXJjZW50YWdlOworICAgICAg
ICBsb2NhbFZhbHVlID0gbG9jYWxWYWx1ZSAvIDEwMC4wICogMjU2LjA7CisgICAgICAgIC8vIENs
YW1wIHZhbHVlcyBhdCAyNTUgZm9yIHBlcmNlbnRhZ2VzIG92ZXIgMTAwJQorICAgICAgICBpZiAo
bG9jYWxWYWx1ZSA+IDI1NSkKKyAgICAgICAgICAgIGxvY2FsVmFsdWUgPSAyNTU7CisgICAgICAg
IGN1cnJlbnQrKzsKKyAgICB9IGVsc2UgeworICAgICAgICBleHBlY3QgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6VW5pdFR5cGVzOjpOdW1iZXI7CisgICAgfQorCisgICAgd2hpbGUgKGN1cnJlbnQgIT0g
ZW5kICYmIGlzSFRNTFNwYWNlPENoYXJhY3RlclR5cGU+KCpjdXJyZW50KSkKKyAgICAgICAgY3Vy
cmVudCsrOworICAgIGlmIChjdXJyZW50ID09IGVuZCB8fCAqY3VycmVudCsrICE9IHRlcm1pbmF0
b3IpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBDbGFtcCBuZWdhdGl2ZSB2YWx1ZXMg
YXQgemVyby4KKyAgICB2YWx1ZSA9IG5lZ2F0aXZlID8gMCA6IHN0YXRpY19jYXN0PGludD4obG9j
YWxWYWx1ZSk7CisgICAgc3RyaW5nID0gY3VycmVudDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgaW5saW5lIGJvb2wgaXNU
ZW50aEFscGhhKGNvbnN0IENoYXJhY3RlclR5cGUqIHN0cmluZywgY29uc3QgaW50IGxlbmd0aCkK
K3sKKyAgICAvLyAiMC5YIgorICAgIGlmIChsZW5ndGggPT0gMyAmJiBzdHJpbmdbMF0gPT0gJzAn
ICYmIHN0cmluZ1sxXSA9PSAnLicgJiYgaXNBU0NJSURpZ2l0KHN0cmluZ1syXSkpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgLy8gIi5YIgorICAgIGlmIChsZW5ndGggPT0gMiAmJiBzdHJp
bmdbMF0gPT0gJy4nICYmIGlzQVNDSUlEaWdpdChzdHJpbmdbMV0pKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+CitzdGF0aWMgaW5saW5lIGJvb2wgcGFyc2VBbHBoYVZhbHVlKGNvbnN0IENoYXJh
Y3RlclR5cGUqJiBzdHJpbmcsIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCwgY29uc3QgY2hhciB0
ZXJtaW5hdG9yLCBpbnQmIHZhbHVlKQoreworICAgIHdoaWxlIChzdHJpbmcgIT0gZW5kICYmIGlz
SFRNTFNwYWNlPENoYXJhY3RlclR5cGU+KCpzdHJpbmcpKQorICAgICAgICBzdHJpbmcrKzsKKwor
ICAgIGJvb2wgbmVnYXRpdmUgPSBmYWxzZTsKKworICAgIGlmIChzdHJpbmcgIT0gZW5kICYmICpz
dHJpbmcgPT0gJy0nKSB7CisgICAgICAgIG5lZ2F0aXZlID0gdHJ1ZTsKKyAgICAgICAgc3RyaW5n
Kys7CisgICAgfQorCisgICAgdmFsdWUgPSAwOworCisgICAgaW50IGxlbmd0aCA9IGVuZCAtIHN0
cmluZzsKKyAgICBpZiAobGVuZ3RoIDwgMikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKHN0cmluZ1tsZW5ndGggLSAxXSAhPSB0ZXJtaW5hdG9yIHx8ICFpc0FTQ0lJRGlnaXQoc3Ry
aW5nW2xlbmd0aCAtIDJdKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHN0cmlu
Z1swXSAhPSAnMCcgJiYgc3RyaW5nWzBdICE9ICcxJyAmJiBzdHJpbmdbMF0gIT0gJy4nKSB7Cisg
ICAgICAgIGlmIChjaGVja0ZvclZhbGlkRG91YmxlKHN0cmluZywgZW5kLCB0ZXJtaW5hdG9yKSkg
eworICAgICAgICAgICAgdmFsdWUgPSBuZWdhdGl2ZSA/IDAgOiAyNTU7CisgICAgICAgICAgICBz
dHJpbmcgPSBlbmQ7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGxlbmd0aCA9PSAyICYmIHN0cmluZ1sw
XSAhPSAnLicpIHsKKyAgICAgICAgdmFsdWUgPSAhbmVnYXRpdmUgJiYgc3RyaW5nWzBdID09ICcx
JyA/IDI1NSA6IDA7CisgICAgICAgIHN0cmluZyA9IGVuZDsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgaWYgKGlzVGVudGhBbHBoYShzdHJpbmcsIGxlbmd0aCAtIDEpKSB7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBpbnQgdGVudGhBbHBoYVZhbHVlc1tdID0geyAwLCAyNSwgNTEs
IDc2LCAxMDIsIDEyNywgMTUzLCAxNzksIDIwNCwgMjMwIH07CisgICAgICAgIHZhbHVlID0gbmVn
YXRpdmUgPyAwIDogdGVudGhBbHBoYVZhbHVlc1tzdHJpbmdbbGVuZ3RoIC0gMl0gLSAnMCddOwor
ICAgICAgICBzdHJpbmcgPSBlbmQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IGRvdWJsZSBhbHBoYSA9IDA7CisgICAgaWYgKCFwYXJzZURvdWJsZShzdHJpbmcsIGVuZCwgdGVy
bWluYXRvciwgYWxwaGEpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdmFsdWUgPSBuZWdh
dGl2ZSA/IDAgOiBzdGF0aWNfY2FzdDxpbnQ+KGFscGhhICogbmV4dGFmdGVyKDI1Ni4wLCAwLjAp
KTsKKyAgICBzdHJpbmcgPSBlbmQ7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGlubGluZSBib29sIG1pZ2h0QmVSR0JBKGNv
bnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBp
ZiAobGVuZ3RoIDwgNSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBjaGFyYWN0
ZXJzWzRdID09ICcoJworICAgICAgICAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKGNoYXJh
Y3RlcnNbMF0sICdyJykKKyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChjaGFy
YWN0ZXJzWzFdLCAnZycpCisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoY2hh
cmFjdGVyc1syXSwgJ2InKQorICAgICAgICAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKGNo
YXJhY3RlcnNbM10sICdhJyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
Pgorc3RhdGljIGlubGluZSBib29sIG1pZ2h0QmVSR0IoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlmIChsZW5ndGggPCA0KQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGNoYXJhY3RlcnNbM10gPT0gJygnCisgICAgICAg
ICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoY2hhcmFjdGVyc1swXSwgJ3InKQorICAgICAg
ICAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKGNoYXJhY3RlcnNbMV0sICdnJykKKyAgICAg
ICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChjaGFyYWN0ZXJzWzJdLCAnYicpOworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBib29sIGZhc3RQYXJz
ZUNvbG9ySW50ZXJuYWwoUkdCQTMyJiByZ2IsIGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBxdWlya3NNb2RlKQoreworICAgIENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZXMgZXhwZWN0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6
VW5rbm93bjsKKworICAgIGlmIChsZW5ndGggPj0gNCAmJiBjaGFyYWN0ZXJzWzBdID09ICcjJykK
KyAgICAgICAgcmV0dXJuIENvbG9yOjpwYXJzZUhleENvbG9yKGNoYXJhY3RlcnMgKyAxLCBsZW5n
dGggLSAxLCByZ2IpOworCisgICAgaWYgKHF1aXJrc01vZGUgJiYgKGxlbmd0aCA9PSAzIHx8IGxl
bmd0aCA9PSA2KSkgeworICAgICAgICBpZiAoQ29sb3I6OnBhcnNlSGV4Q29sb3IoY2hhcmFjdGVy
cywgbGVuZ3RoLCByZ2IpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
Ly8gVHJ5IHJnYmEoKSBzeW50YXguCisgICAgaWYgKG1pZ2h0QmVSR0JBKGNoYXJhY3RlcnMsIGxl
bmd0aCkpIHsKKyAgICAgICAgY29uc3QgQ2hhcmFjdGVyVHlwZSogY3VycmVudCA9IGNoYXJhY3Rl
cnMgKyA1OworICAgICAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBlbmQgPSBjaGFyYWN0ZXJzICsg
bGVuZ3RoOworICAgICAgICBpbnQgcmVkOworICAgICAgICBpbnQgZ3JlZW47CisgICAgICAgIGlu
dCBibHVlOworICAgICAgICBpbnQgYWxwaGE7CisKKyAgICAgICAgaWYgKCFwYXJzZUNvbG9ySW50
T3JQZXJjZW50YWdlKGN1cnJlbnQsIGVuZCwgJywnLCBleHBlY3QsIHJlZCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShj
dXJyZW50LCBlbmQsICcsJywgZXhwZWN0LCBncmVlbikpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGlmICghcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjdXJyZW50LCBlbmQs
ICcsJywgZXhwZWN0LCBibHVlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
aWYgKCFwYXJzZUFscGhhVmFsdWUoY3VycmVudCwgZW5kLCAnKScsIGFscGhhKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGN1cnJlbnQgIT0gZW5kKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZ2IgPSBtYWtlUkdCQShyZWQsIGdyZWVuLCBibHVl
LCBhbHBoYSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIFRyeSByZ2Io
KSBzeW50YXguCisgICAgaWYgKG1pZ2h0QmVSR0IoY2hhcmFjdGVycywgbGVuZ3RoKSkgeworICAg
ICAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBjdXJyZW50ID0gY2hhcmFjdGVycyArIDQ7CisgICAg
ICAgIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCA9IGNoYXJhY3RlcnMgKyBsZW5ndGg7CisgICAg
ICAgIGludCByZWQ7CisgICAgICAgIGludCBncmVlbjsKKyAgICAgICAgaW50IGJsdWU7CisgICAg
ICAgIGlmICghcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjdXJyZW50LCBlbmQsICcsJywgZXhw
ZWN0LCByZWQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIXBhcnNl
Q29sb3JJbnRPclBlcmNlbnRhZ2UoY3VycmVudCwgZW5kLCAnLCcsIGV4cGVjdCwgZ3JlZW4pKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIXBhcnNlQ29sb3JJbnRPclBl
cmNlbnRhZ2UoY3VycmVudCwgZW5kLCAnKScsIGV4cGVjdCwgYmx1ZSkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChjdXJyZW50ICE9IGVuZCkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgcmdiID0gbWFrZVJHQihyZWQsIGdyZWVuLCBibHVlKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitDU1NW
YWx1ZSogQ1NTUGFyc2VyRmFzdFBhdGhzOjpwYXJzZUNvbG9yKGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBDU1NQYXJzZXJNb2RlIHBhcnNlck1vZGUpCit7CisgICAgQVNTRVJUKCFzdHJpbmcuaXNFbXB0
eSgpKTsKKyAgICBDU1NWYWx1ZUlEIHZhbHVlSUQgPSBjc3NWYWx1ZUtleXdvcmRJRChzdHJpbmcp
OworICAgIGlmIChTdHlsZUNvbG9yOjppc0NvbG9yS2V5d29yZCh2YWx1ZUlEKSkgeworICAgICAg
ICBpZiAoIWlzVmFsdWVBbGxvd2VkSW5Nb2RlKHZhbHVlSUQsIHBhcnNlck1vZGUpKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlSWRlbnRpZmllcih2YWx1ZUlEKTsKKyAgICB9CisKKyAgICBSR0JBMzIgY29sb3I7Cisg
ICAgYm9vbCBxdWlya3NNb2RlID0gaXNRdWlya3NNb2RlQmVoYXZpb3IocGFyc2VyTW9kZSk7CisK
KyAgICAvLyBGYXN0IHBhdGggZm9yIGhleCBjb2xvcnMgYW5kIHJnYigpL3JnYmEoKSBjb2xvcnMK
KyAgICBib29sIHBhcnNlUmVzdWx0OworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAg
IHBhcnNlUmVzdWx0ID0gZmFzdFBhcnNlQ29sb3JJbnRlcm5hbChjb2xvciwgc3RyaW5nLmNoYXJh
Y3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSwgcXVpcmtzTW9kZSk7CisgICAgZWxzZQorICAgICAg
ICBwYXJzZVJlc3VsdCA9IGZhc3RQYXJzZUNvbG9ySW50ZXJuYWwoY29sb3IsIHN0cmluZy5jaGFy
YWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCBxdWlya3NNb2RlKTsKKyAgICBpZiAoIXBhcnNl
UmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gQ1NTQ29sb3JWYWx1
ZTo6Y3JlYXRlKGNvbG9yKTsKK30KKworYm9vbCBDU1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFsaWRL
ZXl3b3JkUHJvcGVydHlBbmRWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQsIENTU1ZhbHVl
SUQgdmFsdWVJRCwgQ1NTUGFyc2VyTW9kZSBwYXJzZXJNb2RlKQoreworICAgIGlmICh2YWx1ZUlE
ID09IENTU1ZhbHVlSW52YWxpZCB8fCAhaXNWYWx1ZUFsbG93ZWRJbk1vZGUodmFsdWVJRCwgcGFy
c2VyTW9kZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAocHJvcGVydHlJ
ZCkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlBbGlnbm1lbnRCYXNlbGluZToKKyAgICAgICAgLy8g
YXV0byB8IGJhc2VsaW5lIHwgYmVmb3JlLWVkZ2UgfCB0ZXh0LWJlZm9yZS1lZGdlIHwgbWlkZGxl
IHwKKyAgICAgICAgLy8gY2VudHJhbCB8IGFmdGVyLWVkZ2UgfCB0ZXh0LWFmdGVyLWVkZ2UgfCBp
ZGVvZ3JhcGhpYyB8IGFscGhhYmV0aWMgfAorICAgICAgICAvLyBoYW5naW5nIHwgbWF0aGVtYXRp
Y2FsCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlQWxwaGFiZXRpYyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQmFzZWxpbmUKKyAgICAg
ICAgICAgIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVNaWRkbGUgfHwgKHZhbHVlSUQgPj0gQ1NTVmFs
dWVCZWZvcmVFZGdlICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVNYXRoZW1hdGljYWwpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlBbGw6CisgICAgICAgIHJldHVybiBmYWxzZTsgLy8gT25seSBhY2NlcHRz
IGNzcy13aWRlIGtleXdvcmRzCisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRY
OiAvLyByZXBlYXQgfCBuby1yZXBlYXQKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFJl
cGVhdFk6IC8vIHJlcGVhdCB8IG5vLXJlcGVhdAorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBD
U1NWYWx1ZVJlcGVhdCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9SZXBlYXQ7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlOiAvLyBjb2xsYXBzZSB8IHNlcGFyYXRlCisgICAgICAg
IHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQ29sbGFwc2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZVNlcGFyYXRlOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZTogLy8gPGJvcmRl
ci1zdHlsZT4KKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZTogLy8gRGVmaW5l
ZCBhczogbm9uZSB8IGhpZGRlbiB8IGRvdHRlZCB8IGRhc2hlZCB8CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbVN0eWxlOiAvLyBzb2xpZCB8IGRvdWJsZSB8IGdyb292ZSB8IHJpZGdl
IHwgaW5zZXQgfCBvdXRzZXQKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyRW5kU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0
U3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVtblJ1bGVTdHlsZToKKyAgICAgICAgcmV0
dXJuIHZhbHVlSUQgPj0gQ1NTVmFsdWVOb25lICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVEb3VibGU7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJveFNpemluZzoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQg
PT0gQ1NTVmFsdWVCb3JkZXJCb3ggfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbnRlbnRCb3g7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJ1ZmZlcmVkUmVuZGVyaW5nOgorICAgICAgICByZXR1cm4gdmFs
dWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUR5bmFtaWMgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZVN0YXRpYzsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q2FwdGlvblNpZGU6
IC8vIHRvcCB8IGJvdHRvbSB8IGxlZnQgfCByaWdodAorICAgICAgICByZXR1cm4gdmFsdWVJRCA9
PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVUb3AgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJvdHRvbTsKKyAgICBjYXNlIENTU1By
b3BlcnR5Q2xlYXI6IC8vIG5vbmUgfCBsZWZ0IHwgcmlnaHQgfCBib3RoCisgICAgICAgIHJldHVy
biB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTGVmdCB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlUmlnaHQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJvdGg7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUNsaXBSdWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlGaWxsUnVsZToK
KyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb256ZXJvIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVFdmVub2RkOworICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvckludGVycG9sYXRpb246
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnM6CisgICAgICAg
IHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU1JH
QiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTGluZWFyUkdCOworICAgIGNhc2UgQ1NTUHJvcGVydHlD
b2xvclJlbmRlcmluZzoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVPcHRpbWl6ZVNwZWVkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVP
cHRpbWl6ZVF1YWxpdHk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eURpcmVjdGlvbjogLy8gbHRyIHwg
cnRsCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTHRyIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVSdGw7CisgICAgY2FzZSBDU1NQcm9wZXJ0eURpc3BsYXk6CisgICAgICAgIC8vIGlu
bGluZSB8IGJsb2NrIHwgbGlzdC1pdGVtIHwgaW5saW5lLWJsb2NrIHwgdGFibGUgfAorICAgICAg
ICAvLyBpbmxpbmUtdGFibGUgfCB0YWJsZS1yb3ctZ3JvdXAgfCB0YWJsZS1oZWFkZXItZ3JvdXAg
fCB0YWJsZS1mb290ZXItZ3JvdXAgfCB0YWJsZS1yb3cgfAorICAgICAgICAvLyB0YWJsZS1jb2x1
bW4tZ3JvdXAgfCB0YWJsZS1jb2x1bW4gfCB0YWJsZS1jZWxsIHwgdGFibGUtY2FwdGlvbiB8IC13
ZWJraXQtYm94IHwgLXdlYmtpdC1pbmxpbmUtYm94IHwgbm9uZQorICAgICAgICAvLyBmbGV4IHwg
aW5saW5lLWZsZXggfCAtd2Via2l0LWZsZXggfCAtd2Via2l0LWlubGluZS1mbGV4IHwgZ3JpZCB8
IGlubGluZS1ncmlkCisgICAgICAgIHJldHVybiAodmFsdWVJRCA+PSBDU1NWYWx1ZUlubGluZSAm
JiB2YWx1ZUlEIDw9IENTU1ZhbHVlSW5saW5lRmxleCkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdl
YmtpdEZsZXggfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdlYmtpdElubGluZUZsZXggfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZU5vbmUKKyAgICAgICAgICAgIHx8IChSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojpjc3NHcmlkTGF5b3V0RW5hYmxlZCgpICYmICh2YWx1ZUlEID09IENTU1ZhbHVlR3JpZCB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlSW5saW5lR3JpZCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlEb21p
bmFudEJhc2VsaW5lOgorICAgICAgICAvLyBhdXRvIHwgdXNlLXNjcmlwdCB8IG5vLWNoYW5nZSB8
IHJlc2V0LXNpemUgfCBpZGVvZ3JhcGhpYyB8CisgICAgICAgIC8vIGFscGhhYmV0aWMgfCBoYW5n
aW5nIHwgbWF0aGVtYXRpY2FsIHwgY2VudHJhbCB8IG1pZGRsZSB8CisgICAgICAgIC8vIHRleHQt
YWZ0ZXItZWRnZSB8IHRleHQtYmVmb3JlLWVkZ2UKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0g
Q1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBbHBoYWJldGljIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVNaWRkbGUKKyAgICAgICAgICAgIHx8ICh2YWx1ZUlEID49IENTU1ZhbHVlVXNl
U2NyaXB0ICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVSZXNldFNpemUpCisgICAgICAgICAgICB8fCAo
dmFsdWVJRCA+PSBDU1NWYWx1ZUNlbnRyYWwgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZU1hdGhlbWF0
aWNhbCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUVtcHR5Q2VsbHM6IC8vIHNob3cgfCBoaWRlCisg
ICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlU2hvdyB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlSGlkZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5RmxvYXQ6IC8vIGxlZnQgfCByaWdodCB8IG5v
bmUKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVMZWZ0IHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVSaWdodCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZTsKKyAgICBjYXNlIENTU1By
b3BlcnR5Rm9udFN0eWxlOiAvLyBub3JtYWwgfCBpdGFsaWMgfCBvYmxpcXVlCisgICAgICAgIHJl
dHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVJdGFs
aWMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU9ibGlxdWU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZv
bnRTdHJldGNoOiAvLyBub3JtYWwgfCB1bHRyYS1jb25kZW5zZWQgfCBleHRyYS1jb25kZW5zZWQg
fCBjb25kZW5zZWQgfCBzZW1pLWNvbmRlbnNlZCB8IHNlbWktZXhwYW5kZWQgfCBleHBhbmRlZCB8
IGV4dHJhLWV4cGFuZGVkIHwgdWx0cmEtZXhwYW5kZWQKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQg
PT0gQ1NTVmFsdWVOb3JtYWwgfHwgKHZhbHVlSUQgPj0gQ1NTVmFsdWVVbHRyYUNvbmRlbnNlZCAm
JiB2YWx1ZUlEIDw9IENTU1ZhbHVlVWx0cmFFeHBhbmRlZCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUltYWdlUmVuZGVyaW5nOiAvLyBhdXRvIHwgb3B0aW1pemVDb250cmFzdCB8IHBpeGVsYXRlZAor
ICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZVdlYmtpdE9wdGltaXplQ29udHJhc3QgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVBpeGVsYXRl
ZDsKKyAgICBjYXNlIENTU1Byb3BlcnR5SXNvbGF0aW9uOiAvLyBhdXRvIHwgaXNvbGF0ZQorICAg
ICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUlzb2xhdGU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uOiAvLyBpbnNp
ZGUgfCBvdXRzaWRlCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlSW5zaWRlIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVPdXRzaWRlOworICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5
bGVUeXBlOgorICAgICAgICAvLyBTZWUgc2VjdGlvbiBDU1NfUFJPUF9MSVNUX1NUWUxFX1RZUEUg
b2YgZmlsZSBDU1NWYWx1ZUtleXdvcmRzLmluCisgICAgICAgIC8vIGZvciB0aGUgbGlzdCBvZiBz
dXBwb3J0ZWQgbGlzdC1zdHlsZS10eXBlcy4KKyAgICAgICAgcmV0dXJuICh2YWx1ZUlEID49IENT
U1ZhbHVlRGlzYyAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlS2F0YWthbmFJcm9oYSkgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZU5vbmU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1hc2tUeXBlOgorICAgICAg
ICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUx1bWluYW5jZSB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlQWxwaGE7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9iamVjdEZpdDoKKyAgICAgICAgcmV0dXJu
IHZhbHVlSUQgPT0gQ1NTVmFsdWVGaWxsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDb250YWluIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVDb3ZlciB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlU2NhbGVEb3duOworICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5l
U3R5bGU6IC8vICg8Ym9yZGVyLXN0eWxlPiBleGNlcHQgaGlkZGVuKSB8IGF1dG8KKyAgICAgICAg
cmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25l
IHx8ICh2YWx1ZUlEID49IENTU1ZhbHVlSW5zZXQgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZURvdWJs
ZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93QW5jaG9yOgorICAgICAgICByZXR1cm4g
dmFsdWVJRCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG87CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93V3Jh
cDogLy8gbm9ybWFsIHwgYnJlYWstd29yZAorICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkV3JhcDoK
KyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUJyZWFrV29yZDsKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dYOiAvLyB2aXNp
YmxlIHwgaGlkZGVuIHwgc2Nyb2xsIHwgYXV0byB8IG92ZXJsYXkKKyAgICAgICAgcmV0dXJuIHZh
bHVlSUQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVIaWRkZW4gfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZVNjcm9sbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlT3ZlcmxheTsKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dZ
OiAvLyB2aXNpYmxlIHwgaGlkZGVuIHwgc2Nyb2xsIHwgYXV0byB8IG92ZXJsYXkgfCAtd2Via2l0
LXBhZ2VkLXggfCAtd2Via2l0LXBhZ2VkLXkKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NT
VmFsdWVWaXNpYmxlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVIaWRkZW4gfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZVNjcm9sbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlT3ZlcmxheSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0UGFnZWRYIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVXZWJraXRQYWdlZFk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJyZWFrQWZ0
ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJyZWFrQmVmb3JlOgorICAgICAgICByZXR1cm4gdmFs
dWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVBdm9pZFBhZ2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVBhZ2UgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVSZWN0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVmVyc28gfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUF2b2lkQ29sdW1uIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2x1bW47Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJyZWFrSW5zaWRlOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9
PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVBdm9pZFBhZ2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkQ29sdW1uOworICAg
IGNhc2UgQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzOgorICAgICAgICAvLyBub25lIHwgdmlzaWJs
ZVBhaW50ZWQgfCB2aXNpYmxlRmlsbCB8IHZpc2libGVTdHJva2UgfCB2aXNpYmxlIHwKKyAgICAg
ICAgLy8gcGFpbnRlZCB8IGZpbGwgfCBzdHJva2UgfCBhdXRvIHwgYWxsIHwgYm91bmRpbmctYm94
CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlVmlzaWJsZSB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQWxsIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVBdXRvIHx8ICh2YWx1ZUlEID49IENTU1ZhbHVlVmlzaWJsZVBhaW50ZWQgJiYgdmFsdWVJ
RCA8PSBDU1NWYWx1ZUJvdW5kaW5nQm94KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5UG9zaXRpb246
IC8vIHN0YXRpYyB8IHJlbGF0aXZlIHwgYWJzb2x1dGUgfCBmaXhlZCB8IHN0aWNreQorICAgICAg
ICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVN0YXRpYyB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
UmVsYXRpdmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUFic29sdXRlIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVGaXhlZCB8fCAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzU3RpY2t5UG9zaXRpb25F
bmFibGVkKCkgJiYgdmFsdWVJRCA9PSBDU1NWYWx1ZVN0aWNreSk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVJlc2l6ZTogLy8gbm9uZSB8IGJvdGggfCBob3Jpem9udGFsIHwgdmVydGljYWwgfCBhdXRv
CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlQm90aCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlSG9yaXpvbnRhbCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlVmVydGljYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG87CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVNjcm9sbEJlaGF2aW9yOiAvLyBhdXRvIHwgc21vb3RoCisgICAgICAgIEFTU0VS
VChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NvbVNtb290aFNjcm9sbEVuYWJsZWQoKSk7Cisg
ICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlU21vb3RoOworICAgIGNhc2UgQ1NTUHJvcGVydHlTaGFwZVJlbmRlcmluZzoKKyAgICAgICAg
cmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVPcHRp
bWl6ZVNwZWVkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDcmlzcEVkZ2VzIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVHZW9tZXRyaWNQcmVjaXNpb247CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNwZWFrOiAv
LyBub25lIHwgbm9ybWFsIHwgc3BlbGwtb3V0IHwgZGlnaXRzIHwgbGl0ZXJhbC1wdW5jdHVhdGlv
biB8IG5vLXB1bmN0dWF0aW9uCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTm9u
ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTcGVs
bE91dCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRGlnaXRzIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVM
aXRlcmFsUHVuY3R1YXRpb24gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vUHVuY3R1YXRpb247Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZUxpbmVqb2luOgorICAgICAgICByZXR1cm4gdmFsdWVJ
RCA9PSBDU1NWYWx1ZU1pdGVyIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSb3VuZCB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlQmV2ZWw7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZUxpbmVjYXA6Cisg
ICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQnV0dCB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlUm91bmQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNxdWFyZTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5VGFibGVMYXlvdXQ6IC8vIGF1dG8gfCBmaXhlZAorICAgICAgICByZXR1cm4gdmFsdWVJRCA9
PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUZpeGVkOworICAgIGNhc2UgQ1NT
UHJvcGVydHlUZXh0QWxpZ246CisgICAgICAgIHJldHVybiAodmFsdWVJRCA+PSBDU1NWYWx1ZVdl
YmtpdEF1dG8gJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZUludGVybmFsQ2VudGVyKSB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlU3RhcnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVuZDsKKyAgICBjYXNlIENT
U1Byb3BlcnR5VGV4dEFsaWduTGFzdDoKKyAgICAgICAgLy8gYXV0byB8IHN0YXJ0IHwgZW5kIHwg
bGVmdCB8IHJpZ2h0IHwgY2VudGVyIHwganVzdGlmeQorICAgICAgICByZXR1cm4gKHZhbHVlSUQg
Pj0gQ1NTVmFsdWVMZWZ0ICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVKdXN0aWZ5KSB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlU3RhcnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVuZCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlQXV0bzsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEFuY2hvcjoKKyAgICAgICAg
cmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTWlk
ZGxlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFbmQ7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRD
b21iaW5lVXByaWdodDoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVBbGw7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0
aW9uU3R5bGU6CisgICAgICAgIC8vIHNvbGlkIHwgZG91YmxlIHwgZG90dGVkIHwgZGFzaGVkIHwg
d2F2eQorICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzM1RleHREZWNv
cmF0aW9uc0VuYWJsZWQoKSk7CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlU29s
aWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURvdWJsZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRG90
dGVkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEYXNoZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdh
dnk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRKdXN0aWZ5OgorICAgICAgICAvLyBhdXRvIHwg
bm9uZSB8IGludGVyLXdvcmQgfCBkaXN0cmlidXRlCisgICAgICAgIEFTU0VSVChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpjc3MzVGV4dEVuYWJsZWQoKSk7CisgICAgICAgIHJldHVybiB2YWx1ZUlE
ID09IENTU1ZhbHVlSW50ZXJXb3JkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEaXN0cmlidXRlIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lOworICAg
IGNhc2UgQ1NTUHJvcGVydHlUZXh0T3JpZW50YXRpb246IC8vIG1peGVkIHwgdXByaWdodCB8IHNp
ZGV3YXlzIHwgc2lkZXdheXMtcmlnaHQKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFs
dWVNaXhlZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVXByaWdodCB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlU2lkZXdheXMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNpZGV3YXlzUmlnaHQ7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRPcmllbnRhdGlvbjoKKyAgICAgICAgcmV0dXJuIHZhbHVl
SUQgPT0gQ1NTVmFsdWVTaWRld2F5cyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2lkZXdheXNSaWdo
dCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVmVydGljYWxSaWdodCB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlVXByaWdodDsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJmbG93OiAvLyBjbGlwIHwg
ZWxsaXBzaXMKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVDbGlwIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVFbGxpcHNpczsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFJlbmRlcmlu
ZzogLy8gYXV0byB8IG9wdGltaXplU3BlZWQgfCBvcHRpbWl6ZUxlZ2liaWxpdHkgfCBnZW9tZXRy
aWNQcmVjaXNpb24KKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVPcHRpbWl6ZVNwZWVkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVPcHRp
bWl6ZUxlZ2liaWxpdHkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUdlb21ldHJpY1ByZWNpc2lvbjsK
KyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybTogLy8gY2FwaXRhbGl6ZSB8IHVwcGVy
Y2FzZSB8IGxvd2VyY2FzZSB8IG5vbmUKKyAgICAgICAgcmV0dXJuICh2YWx1ZUlEID49IENTU1Zh
bHVlQ2FwaXRhbGl6ZSAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlTG93ZXJjYXNlKSB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlTm9uZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5VW5pY29kZUJpZGk6CisgICAg
ICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVFbWJlZAorICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJpZGlPdmVycmlkZSB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0SXNvbGF0ZQorICAgICAgICAgICAgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZVdlYmtpdElzb2xhdGVPdmVycmlkZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
V2Via2l0UGxhaW50ZXh0CisgICAgICAgICAgICB8fCB2YWx1ZUlEID09IENTU1ZhbHVlSXNvbGF0
ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlSXNvbGF0ZU92ZXJyaWRlIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVQbGFpbnRleHQ7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVZlY3RvckVmZmVjdDoKKyAgICAg
ICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVO
b25TY2FsaW5nU3Ryb2tlOworICAgIGNhc2UgQ1NTUHJvcGVydHlWaXNpYmlsaXR5OiAvLyB2aXNp
YmxlIHwgaGlkZGVuIHwgY29sbGFwc2UKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFs
dWVWaXNpYmxlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVIaWRkZW4gfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZUNvbGxhcHNlOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBSZWdpb246CisgICAg
ICAgIHJldHVybiB2YWx1ZUlEID49IENTU1ZhbHVlRHJhZyAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVl
Tm9EcmFnOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlOgorICAgICAgICBy
ZXR1cm4gKHZhbHVlSUQgPj0gQ1NTVmFsdWVDaGVja2JveCAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVl
VGV4dGFyZWEpIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlCYWNrZmFjZVZpc2liaWxpdHk6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVl
VmlzaWJsZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlSGlkZGVuOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlNaXhCbGVuZE1vZGU6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFs
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVNdWx0aXBseSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2Ny
ZWVuIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVPdmVybGF5CisgICAgICAgICAgICB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlRGFya2VuIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVMaWdodGVuIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVDb2xvckRvZGdlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2xvckJ1cm4K
KyAgICAgICAgICAgIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVIYXJkTGlnaHQgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZVNvZnRMaWdodCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRGlmZmVyZW5jZSB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlRXhjbHVzaW9uCisgICAgICAgICAgICB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlSHVlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTYXR1cmF0aW9uIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVDb2xvciB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTHVtaW5vc2l0eTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ246CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENT
U1ZhbHVlU3RyZXRjaCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3RhcnQgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUVuZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ2VudGVyIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVCYXNlbGluZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RGVjb3JhdGlvbkJy
ZWFrOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUNsb25lIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVTbGljZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9u
OgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlUmV2ZXJzZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94TGluZXM6Cisg
ICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlU2luZ2xlIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVNdWx0aXBsZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94T3JpZW50OgorICAg
ICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUhvcml6b250YWwgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZVZlcnRpY2FsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVJbmxpbmVBeGlzIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVCbG9ja0F4aXM7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFBh
Y2s6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlU3RhcnQgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUVuZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ2VudGVyIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVKdXN0aWZ5OworICAgIGNhc2UgQ1NTUHJvcGVydHlDb2x1bW5GaWxsOgorICAgICAg
ICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJh
bGFuY2U7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFsaWduQ29udGVudDoKKyAgICAgICAgLy8gRklY
TUU6IFBlciBDU1MgYWxpZ25tZW50LCB0aGlzIHByb3BlcnR5IHNob3VsZCBhY2NlcHQgYW4gb3B0
aW9uYWwgPG92ZXJmbG93LXBvc2l0aW9uPi4gV2Ugc2hvdWxkIHNoYXJlIHRoaXMgcGFyc2luZyBj
b2RlIHdpdGggJ2p1c3RpZnktc2VsZicuCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1Zh
bHVlRmxleFN0YXJ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVGbGV4RW5kIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVDZW50ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNwYWNlQmV0d2VlbiB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlU3BhY2VBcm91bmQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVN0cmV0Y2g7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFsaWduSXRlbXM6CisgICAgICAgIC8vIEZJWE1FOiBQZXIg
Q1NTIGFsaWdubWVudCwgdGhpcyBwcm9wZXJ0eSBzaG91bGQgYWNjZXB0IHRoZSBzYW1lIGFyZ3Vt
ZW50cyBhcyAnanVzdGlmeS1zZWxmJyBzbyB3ZSBzaG91bGQgc2hhcmUgaXRzIHBhcnNpbmcgY29k
ZS4KKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVGbGV4U3RhcnQgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUZsZXhFbmQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNlbnRlciB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlQmFzZWxpbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVN0cmV0Y2g7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUFsaWduU2VsZjoKKyAgICAgICAgLy8gRklYTUU6IFBlciBDU1Mg
YWxpZ25tZW50LCB0aGlzIHByb3BlcnR5IHNob3VsZCBhY2NlcHQgdGhlIHNhbWUgYXJndW1lbnRz
IGFzICdqdXN0aWZ5LXNlbGYnIHNvIHdlIHNob3VsZCBzaGFyZSBpdHMgcGFyc2luZyBjb2RlLgor
ICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZUZsZXhTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRmxleEVuZCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlQ2VudGVyIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCYXNlbGluZSB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlU3RyZXRjaDsKKyAgICBjYXNlIENTU1Byb3BlcnR5RmxleERpcmVjdGlvbjoK
KyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVSb3cgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZVJvd1JldmVyc2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbHVtbiB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlQ29sdW1uUmV2ZXJzZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5RmxleFdyYXA6Cisg
ICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTm93cmFwIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVXcmFwIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXcmFwUmV2ZXJzZTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5SHlwaGVuczoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRv
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVNYW51YWw7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUp1c3RpZnlDb250ZW50OgorICAgICAgICAvLyBGSVhNRTog
UGVyIENTUyBhbGlnbm1lbnQsIHRoaXMgcHJvcGVydHkgc2hvdWxkIGFjY2VwdCBhbiBvcHRpb25h
bCA8b3ZlcmZsb3ctcG9zaXRpb24+LiBXZSBzaG91bGQgc2hhcmUgdGhpcyBwYXJzaW5nIGNvZGUg
d2l0aCAnanVzdGlmeS1zZWxmJy4KKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVG
bGV4U3RhcnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUZsZXhFbmQgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZUNlbnRlciB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3BhY2VCZXR3ZWVuIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVTcGFjZUFyb3VuZDsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEtlcm5pbmc6
CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lOworICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRGb250U21vb3RoaW5nOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NW
YWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUFudGlhbGlhc2VkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdWJwaXhlbEFudGlhbGlhc2VkOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWs6IC8vIGF1dG8gfCBsb29zZSB8IG5v
cm1hbCB8IHN0cmljdCB8IGFmdGVyLXdoaXRlLXNwYWNlCisgICAgICAgIHJldHVybiB2YWx1ZUlE
ID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTG9vc2UgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3RyaWN0IHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVBZnRlcldoaXRlU3BhY2U7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
cmdpbkFmdGVyQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9y
ZUNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBz
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2U6CisgICAgICAg
IHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQ29sbGFwc2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZVNlcGFyYXRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEaXNjYXJkOworICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRQcmludENvbG9yQWRqdXN0OgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBD
U1NWYWx1ZUV4YWN0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFY29ub215OworICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRSdGxPcmRlcmluZzoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NT
VmFsdWVMb2dpY2FsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVWaXN1YWw7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbjoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NT
VmFsdWVCZWZvcmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUFmdGVyOworICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUZXh0Q29tYmluZToKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFs
dWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVIb3Jpem9udGFsOworICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbjoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQg
PT0gQ1NTVmFsdWVPdmVyIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVVbmRlcjsKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0VGV4dFNlY3VyaXR5OiAvLyBkaXNjIHwgY2lyY2xlIHwgc3F1YXJlIHwg
bm9uZQorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZURpc2MgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUNpcmNsZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3F1YXJlIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVOb25lOworICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2Zvcm1TdHlsZToKKyAg
ICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVGbGF0IHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVQcmVzZXJ2ZTNkOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZzogLy8gYXV0
byB8IG5vbmUgfCBlbGVtZW50CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0
byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRWxlbWVu
dDsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeTogLy8gcmVhZC1vbmx5IHwg
cmVhZC13cml0ZQorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVJlYWRPbmx5IHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVSZWFkV3JpdGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJlYWRX
cml0ZVBsYWludGV4dE9ubHk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVVzZXJTZWxlY3Q6IC8vIGF1
dG8gfCBub25lIHwgdGV4dCB8IGFsbAorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1
ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVRl
eHQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUFsbDsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
V3JpdGluZ01vZGU6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID49IENTU1ZhbHVlSG9yaXpvbnRh
bFRiICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVWZXJ0aWNhbExyOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlXcml0aW5nTW9kZToKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVIb3Jpem9u
dGFsVGIKKyAgICAgICAgICAgIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVWZXJ0aWNhbFJsIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVWZXJ0aWNhbExyCisgICAgICAgICAgICB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlTHJUYiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmxUYiB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlVGJSbAorICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUxyIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVSbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVGI7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdoaXRlU3BhY2U6IC8vIG5vcm1hbCB8IHByZSB8IG5vd3JhcAorICAgICAgICByZXR1cm4g
dmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUHJlIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVQcmVXcmFwIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVQcmVMaW5lIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3dyYXA7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRCcmVh
azogLy8gbm9ybWFsIHwgYnJlYWstYWxsIHwga2VlcC1hbGwgfCBicmVhay13b3JkICh0aGlzIGlz
IGEgY3VzdG9tIGV4dGVuc2lvbikKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVO
b3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJyZWFrQWxsIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVLZWVwQWxsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCcmVha1dvcmQ7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVNjcm9sbFNuYXBUeXBlOiAvLyBub25lIHwgbWFuZGF0b3J5IHwgcHJveGltaXR5Cisg
ICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NTY3JvbGxTbmFwUG9pbnRz
RW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVNYW5kYXRvcnkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVByb3hpbWl0
eTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KK30KKworYm9vbCBDU1NQYXJzZXJGYXN0UGF0aHM6OmlzS2V5
d29yZFByb3BlcnR5SUQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkKQoreworICAgIHN3aXRjaCAo
cHJvcGVydHlJZCkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlBbGlnbm1lbnRCYXNlbGluZToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5QWxsOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNaXhCbGVuZE1vZGU6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUlzb2xhdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFj
a2dyb3VuZFJlcGVhdFg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZToK
KyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyVG9wU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJveFNpemluZzoKKyAgICBj
YXNlIENTU1Byb3BlcnR5QnVmZmVyZWRSZW5kZXJpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNh
cHRpb25TaWRlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDbGVhcjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Q2xpcFJ1bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbjoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Q29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczoKKyAgICBjYXNlIENT
U1Byb3BlcnR5Q29sb3JSZW5kZXJpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eURpcmVjdGlvbjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5RGlzcGxheToKKyAgICBjYXNlIENTU1Byb3BlcnR5RG9taW5h
bnRCYXNlbGluZToKKyAgICBjYXNlIENTU1Byb3BlcnR5RW1wdHlDZWxsczoKKyAgICBjYXNlIENT
U1Byb3BlcnR5RmlsbFJ1bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsb2F0OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlGb250U3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHJldGNoOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlIeXBoZW5zOgorICAgIGNhc2UgQ1NTUHJvcGVydHlJbWFnZVJl
bmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb246CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1hc2tUeXBl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlPYmplY3RGaXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91
dGxpbmVTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dBbmNob3I6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eU92ZXJmbG93V3JhcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dY
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1k6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJy
ZWFrQWZ0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJyZWFrQmVmb3JlOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlCcmVha0luc2lkZToKKyAgICBjYXNlIENTU1Byb3BlcnR5UG9pbnRlckV2ZW50czoK
KyAgICBjYXNlIENTU1Byb3BlcnR5UG9zaXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVJlc2l6
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xsQmVoYXZpb3I6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVNoYXBlUmVuZGVyaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlTcGVhazoKKyAgICBjYXNl
IENTU1Byb3BlcnR5U3Ryb2tlTGluZWNhcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlTGlu
ZWpvaW46CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0OgorICAgIGNhc2UgQ1NTUHJv
cGVydHlUZXh0QWxpZ246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRBbGlnbkxhc3Q6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVRleHRBbmNob3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRDb21i
aW5lVXByaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25TdHlsZToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5VGV4dEp1c3RpZnk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRP
cmllbnRhdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dE9yaWVudGF0aW9uOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmZsb3c6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRl
eHRSZW5kZXJpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm06CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpOgorICAgIGNhc2UgQ1NTUHJvcGVydHlWZWN0b3JFZmZl
Y3Q6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVZpc2liaWxpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEFwcFJlZ2lvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZToK
KyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2ZhY2VWaXNpYmlsaXR5OgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJCZWZvcmVTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5
bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGU6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3hEZWNvcmF0aW9uQnJlYWs6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveERpcmVjdGlv
bjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94TGluZXM6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJveE9yaWVudDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UGFjazoK
KyAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1uRmlsbDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29s
dW1uUnVsZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlGbGV4RGlyZWN0aW9uOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlGbGV4V3JhcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEtlcm5pbmc6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmc6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdExpbmVCcmVhazoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
QWZ0ZXJDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29s
bGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0UHJpbnRDb2xvckFkanVzdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0UnRsT3JkZXJpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dENvbWJpbmU6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0U2VjdXJpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zZm9ybVN0eWxlOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VXNlck1vZGlmeToKKyAgICBjYXNlIENTU1Byb3BlcnR5VXNlclNlbGVjdDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0V3JpdGluZ01vZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdoaXRl
U3BhY2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRCcmVhazoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V29yZFdyYXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdyaXRpbmdNb2RlOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlTY3JvbGxTbmFwVHlwZToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUp1c3RpZnlDb250ZW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlBbGlnbkNv
bnRlbnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFsaWduSXRlbXM6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUFsaWduU2VsZjoKKyAgICAgICAgcmV0dXJuICFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpj
c3NHcmlkTGF5b3V0RW5hYmxlZCgpOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogcGFyc2VLZXl3b3JkVmFsdWUoQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHN0cmluZywgQ1NTUGFyc2VyTW9kZSBw
YXJzZXJNb2RlKQoreworICAgIEFTU0VSVCghc3RyaW5nLmlzRW1wdHkoKSk7CisKKyAgICBpZiAo
IUNTU1BhcnNlckZhc3RQYXRoczo6aXNLZXl3b3JkUHJvcGVydHlJRChwcm9wZXJ0eUlkKSkgewor
ICAgICAgICAvLyBBbGwgcHJvcGVydGllcyBhY2NlcHQgdGhlIHZhbHVlcyBvZiAiaW5pdGlhbCIg
YW5kICJpbmhlcml0Ii4KKyAgICAgICAgaWYgKCFlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHN0cmlu
ZywgImluaXRpYWwiKSAmJiAhZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJpbmhlcml0
IikpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAvLyBQYXJzZSBpbml0
aWFsL2luaGVyaXQgc2hvcnRoYW5kcyB1c2luZyB0aGUgQ1NTUHJvcGVydHlQYXJzZXIuCisgICAg
ICAgIGlmIChzaG9ydGhhbmRGb3JQcm9wZXJ0eShwcm9wZXJ0eUlkKS5sZW5ndGgoKSkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIC8vIERlc2NyaXB0b3JzIGRvIG5vdCBz
dXBwb3J0IGNzcyB3aWRlIGtleXdvcmRzLgorICAgICAgICBpZiAoQ1NTUHJvcGVydHlNZXRhZGF0
YTo6aXNEZXNjcmlwdG9yT25seShwcm9wZXJ0eUlkKSkKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKworICAgIENTU1ZhbHVlSUQgdmFsdWVJRCA9IGNzc1ZhbHVlS2V5d29yZElE
KHN0cmluZyk7CisKKyAgICBpZiAoIXZhbHVlSUQpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVJbmhlcml0KQorICAgICAgICByZXR1cm4gQ1NT
SW5oZXJpdGVkVmFsdWU6OmNyZWF0ZSgpOworICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlSW5p
dGlhbCkKKyAgICAgICAgcmV0dXJuIENTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlKCk7CisgICAgaWYg
KENTU1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKHByb3Bl
cnR5SWQsIHZhbHVlSUQsIHBhcnNlck1vZGUpKQorICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIodmFsdWVJRCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KK3N0YXRpYyBib29sIHBhcnNlVHJhbnNm
b3JtVHJhbnNsYXRlQXJndW1lbnRzKENoYXJUeXBlKiYgcG9zLCBDaGFyVHlwZSogZW5kLCB1bnNp
Z25lZCBleHBlY3RlZENvdW50LCBDU1NGdW5jdGlvblZhbHVlKiB0cmFuc2Zvcm1WYWx1ZSkKK3sK
KyAgICB3aGlsZSAoZXhwZWN0ZWRDb3VudCkgeworICAgICAgICBzaXplX3QgZGVsaW1pdGVyID0g
V1RGOjpmaW5kKHBvcywgZW5kIC0gcG9zLCBleHBlY3RlZENvdW50ID09IDEgPyAnKScgOiAnLCcp
OworICAgICAgICBpZiAoZGVsaW1pdGVyID09IGtOb3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgdW5zaWduZWQgYXJndW1lbnRMZW5ndGggPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oZGVsaW1pdGVyKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBl
cyB1bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6TnVtYmVyOworICAgICAgICBk
b3VibGUgbnVtYmVyOworICAgICAgICBpZiAoIXBhcnNlU2ltcGxlTGVuZ3RoKHBvcywgYXJndW1l
bnRMZW5ndGgsIHVuaXQsIG51bWJlcikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGlmICh1bml0ICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OlBpeGVscyAmJiAo
bnVtYmVyIHx8IHVuaXQgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6TnVtYmVyKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVu
ZCgqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShudW1iZXIsIENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZXM6OlBpeGVscykpOworICAgICAgICBwb3MgKz0gYXJndW1lbnRMZW5ndGggKyAxOwor
ICAgICAgICAtLWV4cGVjdGVkQ291bnQ7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CitzdGF0aWMgYm9vbCBwYXJzZVRyYW5zZm9ybU51
bWJlckFyZ3VtZW50cyhDaGFyVHlwZSomIHBvcywgQ2hhclR5cGUqIGVuZCwgdW5zaWduZWQgZXhw
ZWN0ZWRDb3VudCwgQ1NTRnVuY3Rpb25WYWx1ZSogdHJhbnNmb3JtVmFsdWUpCit7CisgICAgd2hp
bGUgKGV4cGVjdGVkQ291bnQpIHsKKyAgICAgICAgc2l6ZV90IGRlbGltaXRlciA9IFdURjo6Zmlu
ZChwb3MsIGVuZCAtIHBvcywgZXhwZWN0ZWRDb3VudCA9PSAxID8gJyknIDogJywnKTsKKyAgICAg
ICAgaWYgKGRlbGltaXRlciA9PSBrTm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50TGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGRlbGltaXRlcik7CisgICAgICAgIGJvb2wgb2s7CisgICAgICAgIGRvdWJsZSBudW1iZXIgPSBj
aGFyYWN0ZXJzVG9Eb3VibGUocG9zLCBhcmd1bWVudExlbmd0aCwgJm9rKTsKKyAgICAgICAgaWYg
KCFvaykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgdHJhbnNmb3JtVmFsdWUt
PmFwcGVuZCgqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShudW1iZXIsIENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZXM6Ok51bWJlcikpOworICAgICAgICBwb3MgKz0gYXJndW1lbnRMZW5ndGgg
KyAxOworICAgICAgICAtLWV4cGVjdGVkQ291bnQ7CisgICAgfQorICAgIHJldHVybiB0cnVlOwor
fQorCitzdGF0aWMgY29uc3QgaW50IGtTaG9ydGVzdFZhbGlkVHJhbnNmb3JtU3RyaW5nTGVuZ3Ro
ID0gMTI7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KK3N0YXRpYyBDU1NGdW5jdGlv
blZhbHVlKiBwYXJzZVNpbXBsZVRyYW5zZm9ybVZhbHVlKENoYXJUeXBlKiYgcG9zLCBDaGFyVHlw
ZSogZW5kKQoreworICAgIGlmIChlbmQgLSBwb3MgPCBrU2hvcnRlc3RWYWxpZFRyYW5zZm9ybVN0
cmluZ0xlbmd0aCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBjb25zdCBib29sIGlz
VHJhbnNsYXRlID0gdG9BU0NJSUxvd2VyKHBvc1swXSkgPT0gJ3QnCisgICAgICAgICYmIHRvQVND
SUlMb3dlcihwb3NbMV0pID09ICdyJworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzJdKSA9
PSAnYScKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1szXSkgPT0gJ24nCisgICAgICAgICYm
IHRvQVNDSUlMb3dlcihwb3NbNF0pID09ICdzJworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9z
WzVdKSA9PSAnbCcKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1s2XSkgPT0gJ2EnCisgICAg
ICAgICYmIHRvQVNDSUlMb3dlcihwb3NbN10pID09ICd0JworICAgICAgICAmJiB0b0FTQ0lJTG93
ZXIocG9zWzhdKSA9PSAnZSc7CisKKyAgICBpZiAoaXNUcmFuc2xhdGUpIHsKKyAgICAgICAgQ1NT
VmFsdWVJRCB0cmFuc2Zvcm1UeXBlOworICAgICAgICB1bnNpZ25lZCBleHBlY3RlZEFyZ3VtZW50
Q291bnQgPSAxOworICAgICAgICB1bnNpZ25lZCBhcmd1bWVudFN0YXJ0ID0gMTE7CisgICAgICAg
IENoYXJUeXBlIGM5ID0gdG9BU0NJSUxvd2VyKHBvc1s5XSk7CisgICAgICAgIGlmIChjOSA9PSAn
eCcgJiYgcG9zWzEwXSA9PSAnKCcpIHsKKyAgICAgICAgICAgIHRyYW5zZm9ybVR5cGUgPSBDU1NW
YWx1ZVRyYW5zbGF0ZVg7CisgICAgICAgIH0gZWxzZSBpZiAoYzkgPT0gJ3knICYmIHBvc1sxMF0g
PT0gJygnKSB7CisgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlID0gQ1NTVmFsdWVUcmFuc2xhdGVZ
OworICAgICAgICB9IGVsc2UgaWYgKGM5ID09ICd6JyAmJiBwb3NbMTBdID09ICcoJykgeworICAg
ICAgICAgICAgdHJhbnNmb3JtVHlwZSA9IENTU1ZhbHVlVHJhbnNsYXRlWjsKKyAgICAgICAgfSBl
bHNlIGlmIChjOSA9PSAnKCcpIHsKKyAgICAgICAgICAgIHRyYW5zZm9ybVR5cGUgPSBDU1NWYWx1
ZVRyYW5zbGF0ZTsKKyAgICAgICAgICAgIGV4cGVjdGVkQXJndW1lbnRDb3VudCA9IDI7CisgICAg
ICAgICAgICBhcmd1bWVudFN0YXJ0ID0gMTA7CisgICAgICAgIH0gZWxzZSBpZiAoYzkgPT0gJzMn
ICYmIHRvQVNDSUlMb3dlcihwb3NbMTBdKSA9PSAnZCcgJiYgcG9zWzExXSA9PSAnKCcpIHsKKyAg
ICAgICAgICAgIHRyYW5zZm9ybVR5cGUgPSBDU1NWYWx1ZVRyYW5zbGF0ZTNkOworICAgICAgICAg
ICAgZXhwZWN0ZWRBcmd1bWVudENvdW50ID0gMzsKKyAgICAgICAgICAgIGFyZ3VtZW50U3RhcnQg
PSAxMjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICB9CisgICAgICAgIHBvcyArPSBhcmd1bWVudFN0YXJ0OworICAgICAgICBDU1NGdW5jdGlv
blZhbHVlKiB0cmFuc2Zvcm1WYWx1ZSA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZSh0cmFuc2Zv
cm1UeXBlKTsKKyAgICAgICAgaWYgKCFwYXJzZVRyYW5zZm9ybVRyYW5zbGF0ZUFyZ3VtZW50cyhw
b3MsIGVuZCwgZXhwZWN0ZWRBcmd1bWVudENvdW50LCB0cmFuc2Zvcm1WYWx1ZSkpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHRyYW5zZm9ybVZhbHVlOworICAg
IH0KKworICAgIGNvbnN0IGJvb2wgaXNNYXRyaXgzZCA9IHRvQVNDSUlMb3dlcihwb3NbMF0pID09
ICdtJworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzFdKSA9PSAnYScKKyAgICAgICAgJiYg
dG9BU0NJSUxvd2VyKHBvc1syXSkgPT0gJ3QnCisgICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3Nb
M10pID09ICdyJworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzRdKSA9PSAnaScKKyAgICAg
ICAgJiYgdG9BU0NJSUxvd2VyKHBvc1s1XSkgPT0gJ3gnCisgICAgICAgICYmIHBvc1s2XSA9PSAn
MycKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1s3XSkgPT0gJ2QnCisgICAgICAgICYmIHBv
c1s4XSA9PSAnKCc7CisKKyAgICBpZiAoaXNNYXRyaXgzZCkgeworICAgICAgICBwb3MgKz0gOTsK
KyAgICAgICAgQ1NTRnVuY3Rpb25WYWx1ZSogdHJhbnNmb3JtVmFsdWUgPSBDU1NGdW5jdGlvblZh
bHVlOjpjcmVhdGUoQ1NTVmFsdWVNYXRyaXgzZCk7CisgICAgICAgIGlmICghcGFyc2VUcmFuc2Zv
cm1OdW1iZXJBcmd1bWVudHMocG9zLCBlbmQsIDE2LCB0cmFuc2Zvcm1WYWx1ZSkpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHRyYW5zZm9ybVZhbHVlOworICAg
IH0KKworICAgIGNvbnN0IGJvb2wgaXNTY2FsZTNkID0gdG9BU0NJSUxvd2VyKHBvc1swXSkgPT0g
J3MnCisgICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3NbMV0pID09ICdjJworICAgICAgICAmJiB0
b0FTQ0lJTG93ZXIocG9zWzJdKSA9PSAnYScKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1sz
XSkgPT0gJ2wnCisgICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3NbNF0pID09ICdlJworICAgICAg
ICAmJiBwb3NbNV0gPT0gJzMnCisgICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3NbNl0pID09ICdk
JworICAgICAgICAmJiBwb3NbN10gPT0gJygnOworCisgICAgaWYgKGlzU2NhbGUzZCkgeworICAg
ICAgICBwb3MgKz0gODsKKyAgICAgICAgQ1NTRnVuY3Rpb25WYWx1ZSogdHJhbnNmb3JtVmFsdWUg
PSBDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUoQ1NTVmFsdWVTY2FsZTNkKTsKKyAgICAgICAgaWYg
KCFwYXJzZVRyYW5zZm9ybU51bWJlckFyZ3VtZW50cyhwb3MsIGVuZCwgMywgdHJhbnNmb3JtVmFs
dWUpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiB0cmFuc2Zv
cm1WYWx1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIENoYXJUeXBlPgorc3RhdGljIGJvb2wgdHJhbnNmb3JtQ2FuTGlrZWx5VXNlRmFzdFBh
dGgoY29uc3QgQ2hhclR5cGUqIGNoYXJzLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgLy8gVmVy
eSBmYXN0IHNjYW4gdGhhdCBhdHRlbXB0cyB0byByZWplY3QgbW9zdCB0cmFuc2Zvcm1zIHRoYXQg
Y291bGRuJ3QKKyAgICAvLyB0YWtlIHRoZSBmYXN0IHBhdGguIFRoaXMgYXZvaWRzIGRvaW5nIHRo
ZSBtYWxsb2MgYW5kIHN0cmluZy0+ZG91YmxlCisgICAgLy8gY29udmVyc2lvbnMgaW4gcGFyc2VT
aW1wbGVUcmFuc2Zvcm1WYWx1ZSBvbmx5IHRvIGRpc2NhcmQgdGhlbSB3aGVuIHdlCisgICAgLy8g
cnVuIGludG8gYSB0cmFuc2Zvcm0gY29tcG9uZW50IHdlIGRvbid0IHVuZGVyc3RhbmQuCisgICAg
dW5zaWduZWQgaSA9IDA7CisgICAgd2hpbGUgKGkgPCBsZW5ndGgpIHsKKyAgICAgICAgaWYgKGlz
Q1NTU3BhY2UoY2hhcnNbaV0pKSB7CisgICAgICAgICAgICArK2k7CisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAobGVuZ3RoIC0gaSA8IGtTaG9ydGVzdFZhbGlk
VHJhbnNmb3JtU3RyaW5nTGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihjaGFyc1tpXSkpIHsKKyAgICAgICAgY2FzZSAndCc6Cisg
ICAgICAgICAgICAvLyB0cmFuc2xhdGUsIHRyYW5zbGF0ZVgsIHRyYW5zbGF0ZVksIHRyYW5zbGF0
ZVosIHRyYW5zbGF0ZTNkLgorICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihjaGFyc1tpICsg
OF0pICE9ICdlJykKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBp
ICs9IDk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnbSc6CisgICAgICAgICAg
ICAvLyBtYXRyaXgzZC4KKyAgICAgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoY2hhcnNbaSArIDdd
KSAhPSAnZCcpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaSAr
PSA4OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ3MnOgorICAgICAgICAgICAg
Ly8gc2NhbGUzZC4KKyAgICAgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoY2hhcnNbaSArIDZdKSAh
PSAnZCcpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaSArPSA3
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAvLyBB
bGwgb3RoZXIgdGhpbmdzLCBleC4gcm90YXRlLgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgICAgIHNpemVfdCBhcmd1bWVudHNFbmQgPSBXVEY6OmZpbmQoY2hhcnMs
IGxlbmd0aCwgJyknLCBpKTsKKyAgICAgICAgaWYgKGFyZ3VtZW50c0VuZCA9PSBrTm90Rm91bmQp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIC8vIEFkdmFuY2UgdG8gdGhlIGVu
ZCBvZiB0aGUgYXJndW1lbnRzLgorICAgICAgICBpID0gYXJndW1lbnRzRW5kICsgMTsKKyAgICB9
CisgICAgcmV0dXJuIGkgPT0gbGVuZ3RoOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5
cGU+CitzdGF0aWMgQ1NTVmFsdWVMaXN0KiBwYXJzZVNpbXBsZVRyYW5zZm9ybUxpc3QoY29uc3Qg
Q2hhclR5cGUqIGNoYXJzLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgaWYgKCF0cmFuc2Zvcm1D
YW5MaWtlbHlVc2VGYXN0UGF0aChjaGFycywgbGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgY29uc3QgQ2hhclR5cGUqJiBwb3MgPSBjaGFyczsKKyAgICBjb25zdCBDaGFyVHlw
ZSogZW5kID0gY2hhcnMgKyBsZW5ndGg7CisgICAgQ1NTVmFsdWVMaXN0KiB0cmFuc2Zvcm1MaXN0
ID0gbnVsbHB0cjsKKyAgICB3aGlsZSAocG9zIDwgZW5kKSB7CisgICAgICAgIHdoaWxlIChwb3Mg
PCBlbmQgJiYgaXNDU1NTcGFjZSgqcG9zKSkKKyAgICAgICAgICAgICsrcG9zOworICAgICAgICBp
ZiAocG9zID49IGVuZCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBDU1NGdW5jdGlvblZh
bHVlKiB0cmFuc2Zvcm1WYWx1ZSA9IHBhcnNlU2ltcGxlVHJhbnNmb3JtVmFsdWUocG9zLCBlbmQp
OworICAgICAgICBpZiAoIXRyYW5zZm9ybVZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIGlmICghdHJhbnNmb3JtTGlzdCkKKyAgICAgICAgICAgIHRyYW5zZm9ybUxp
c3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgIHRyYW5z
Zm9ybUxpc3QtPmFwcGVuZCgqdHJhbnNmb3JtVmFsdWUpOworICAgIH0KKyAgICByZXR1cm4gdHJh
bnNmb3JtTGlzdDsKK30KKworc3RhdGljIENTU1ZhbHVlKiBwYXJzZVNpbXBsZVRyYW5zZm9ybShD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIEFT
U0VSVCghc3RyaW5nLmlzRW1wdHkoKSk7CisKKyAgICBpZiAocHJvcGVydHlJRCAhPSBDU1NQcm9w
ZXJ0eVRyYW5zZm9ybSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKHN0cmluZy5p
czhCaXQoKSkKKyAgICAgICAgcmV0dXJuIHBhcnNlU2ltcGxlVHJhbnNmb3JtTGlzdChzdHJpbmcu
Y2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAgICByZXR1cm4gcGFyc2VTaW1wbGVU
cmFuc2Zvcm1MaXN0KHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpKTsKK30K
KworQ1NTVmFsdWUqIENTU1BhcnNlckZhc3RQYXRoczo6bWF5YmVQYXJzZVZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIENTU1BhcnNlck1vZGUgcGFy
c2VyTW9kZSkKK3sKKyAgICBpZiAoQ1NTVmFsdWUqIGxlbmd0aCA9IHBhcnNlU2ltcGxlTGVuZ3Ro
VmFsdWUocHJvcGVydHlJRCwgc3RyaW5nLCBwYXJzZXJNb2RlKSkKKyAgICAgICAgcmV0dXJuIGxl
bmd0aDsKKyAgICBpZiAoaXNDb2xvclByb3BlcnR5SUQocHJvcGVydHlJRCkpCisgICAgICAgIHJl
dHVybiBwYXJzZUNvbG9yKHN0cmluZywgcGFyc2VyTW9kZSk7CisgICAgaWYgKENTU1ZhbHVlKiBr
ZXl3b3JkID0gcGFyc2VLZXl3b3JkVmFsdWUocHJvcGVydHlJRCwgc3RyaW5nLCBwYXJzZXJNb2Rl
KSkKKyAgICAgICAgcmV0dXJuIGtleXdvcmQ7CisgICAgaWYgKENTU1ZhbHVlKiB0cmFuc2Zvcm0g
PSBwYXJzZVNpbXBsZVRyYW5zZm9ybShwcm9wZXJ0eUlELCBzdHJpbmcpKQorICAgICAgICByZXR1
cm4gdHJhbnNmb3JtOworICAgIHJldHVybiBudWxscHRyOworfQorCisgICAgICovCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNl
ckZhc3RQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VyRmFzdFBhdGhzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBA
CisvLyBDb3B5cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
Ky8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
Ky8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmbmRl
ZiBDU1NQYXJzZXJGYXN0UGF0aHNfaAorI2RlZmluZSBDU1NQYXJzZXJGYXN0UGF0aHNfaAorCisj
aW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIK
KyNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTVmFsdWU7CisKK2NsYXNz
IENTU1BhcnNlckZhc3RQYXRocyB7CitwdWJsaWM6CisgICAgLy8gUGFyc2VzIHNpbXBsZSB2YWx1
ZXMgbGlrZSAnMTBweCcgb3IgJ2dyZWVuJywgYnV0IG1ha2VzIG5vIGd1YXJhbnRlZXMKKyAgICAv
LyBhYm91dCBoYW5kbGluZyBhbnkgcHJvcGVydHkgY29tcGxldGVseS4KKyAgICBzdGF0aWMgQ1NT
VmFsdWUqIG1heWJlUGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmLCBDU1NQ
YXJzZXJNb2RlKTsKKworICAgIC8vIFByb3BlcnRpZXMgaGFuZGxlZCBoZXJlIHNob3VsZG4ndCBi
ZSBleHBsaWNpdGx5IGhhbmRsZWQgaW4gQ1NTUHJvcGVydHlQYXJzZXIKKyAgICBzdGF0aWMgYm9v
bCBpc0tleXdvcmRQcm9wZXJ0eUlEKENTU1Byb3BlcnR5SUQpOworICAgIHN0YXRpYyBib29sIGlz
VmFsaWRLZXl3b3JkUHJvcGVydHlBbmRWYWx1ZShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZUlELCBD
U1NQYXJzZXJNb2RlKTsKKworICAgIHN0YXRpYyBDU1NWYWx1ZSogcGFyc2VDb2xvcihjb25zdCBT
dHJpbmcmLCBDU1NQYXJzZXJNb2RlKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIENTU1BhcnNlckZhc3RQYXRoc19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBDU1NQYXJzZXJJZGlvbXNfaAorI2RlZmluZSBDU1NQYXJzZXJJZGlvbXNf
aAorCisjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CisvLyBTcGFjZSBjaGFyYWN0ZXJzIGFzIGRlZmluZWQgYnkgdGhlIENTUyBzcGVjaWZpY2F0aW9u
LgorLy8gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1zeW50YXgvI3doaXRlc3BhY2UKK2lubGlu
ZSBib29sIGlzQ1NTU3BhY2UoVUNoYXIgYykKK3sKKyAgICByZXR1cm4gYyA9PSAnICcgfHwgYyA9
PSAnXHQnIHx8IGMgPT0gJ1xuJzsKK30KKworLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nz
LXN5bnRheC8jbmFtZS1zdGFydC1jb2RlLXBvaW50Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KK2Jvb2wgaXNOYW1lU3RhcnRDb2RlUG9pbnQoQ2hhcmFjdGVyVHlwZSBjKQorewor
ICAgIHJldHVybiBpc0FTQ0lJQWxwaGEoYykgfHwgYyA9PSAnXycgfHwgIWlzQVNDSUkoYyk7Cit9
CisKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1zeW50YXgvI25hbWUtY29kZS1wb2lu
dAordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIGlzTmFtZUNvZGVQb2lu
dChDaGFyYWN0ZXJUeXBlIGMpCit7CisgICAgcmV0dXJuIGlzTmFtZVN0YXJ0Q29kZVBvaW50KGMp
IHx8IGlzQVNDSUlEaWdpdChjKSB8fCBjID09ICctJzsKK30KKworfQorCisjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlck9ic2VydmVyLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDMgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAq
IENvcHlyaWdodCAoQykgMjAwOSAtIDIwMTAgIFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0
ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBDU1NQYXJzZXJPYnNlcnZlcl9oCisjZGVm
aW5lIENTU1BhcnNlck9ic2VydmVyX2gKKworI2luY2x1ZGUgIkNTU1Byb3BlcnR5U291cmNlRGF0
YS5oIgorI2luY2x1ZGUgIlN0eWxlUnVsZS5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDU1NQYXJzZXJUb2tlbjsKK2NsYXNzIENTU1Bh
cnNlclRva2VuUmFuZ2U7CisKKy8vIFRoaXMgaXMgb25seSBmb3IgdGhlIGluc3BlY3RvciBhbmQg
c2hvdWxkbid0IGJlIHVzZWQgZWxzZXdoZXJlLgorY2xhc3MgQ1NTUGFyc2VyT2JzZXJ2ZXIgewor
cHVibGljOgorICAgIHZpcnR1YWwgfkNTU1BhcnNlck9ic2VydmVyKCkge307CisgICAgdmlydHVh
bCB2b2lkIHN0YXJ0UnVsZUhlYWRlcihTdHlsZVJ1bGU6OlR5cGUsIHVuc2lnbmVkIG9mZnNldCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRSdWxlSGVhZGVyKHVuc2lnbmVkIG9mZnNldCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBvYnNlcnZlU2VsZWN0b3IodW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFydFJ1bGVCb2R5
KHVuc2lnbmVkIG9mZnNldCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRSdWxlQm9keSh1bnNp
Z25lZCBvZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb2JzZXJ2ZVByb3BlcnR5KHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIGJvb2wgaXNJbXBvcnRhbnQsIGJv
b2wgaXNQYXJzZWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb2JzZXJ2ZUNvbW1lbnQodW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkgPSAwOworICAgIC8vIFRPRE8odGlt
bG9oKTogVW51c2VkLCBzaG91bGQgYmUgcmVtb3ZlZAorICAgIHZpcnR1YWwgdm9pZCBzdGFydE1l
ZGlhUXVlcnlFeHAodW5zaWduZWQgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVuZE1l
ZGlhUXVlcnlFeHAodW5zaWduZWQgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0
TWVkaWFRdWVyeSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kTWVkaWFRdWVyeSgpID0gMDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENTU1BhcnNlck9ic2Vy
dmVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXJX
cmFwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Bh
cnNlck9ic2VydmVyV3JhcHBlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNzEgQEAKKy8vIENvcHlyaWdodCAyMDE1IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
Ly8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyT2JzZXJ2ZXJX
cmFwcGVyLmgiCisKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJhbmdlLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKwordW5zaWduZWQgQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyOjpzdGFydE9m
ZnNldChjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4gbV90
b2tlbk9mZnNldHNbcmFuZ2UuYmVnaW4oKSAtIG1fZmlyc3RQYXJzZXJUb2tlbl07Cit9CisKK3Vu
c2lnbmVkIENTU1BhcnNlck9ic2VydmVyV3JhcHBlcjo6cHJldmlvdXNUb2tlblN0YXJ0T2Zmc2V0
KGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5iZWdp
bigpID09IG1fZmlyc3RQYXJzZXJUb2tlbikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IG1fdG9rZW5PZmZzZXRzW3JhbmdlLmJlZ2luKCkgLSBtX2ZpcnN0UGFyc2VyVG9rZW4gLSAxXTsK
K30KKwordW5zaWduZWQgQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyOjplbmRPZmZzZXQoY29uc3Qg
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgcmV0dXJuIG1fdG9rZW5PZmZzZXRz
W3JhbmdlLmVuZCgpIC0gbV9maXJzdFBhcnNlclRva2VuXTsKK30KKwordm9pZCBDU1NQYXJzZXJP
YnNlcnZlcldyYXBwZXI6OnNraXBDb21tZW50c0JlZm9yZShjb25zdCBDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgYm9vbCBsZWF2ZURpcmVjdGx5QmVmb3JlKQoreworICAgIHVuc2lnbmVkIHN0
YXJ0SW5kZXggPSByYW5nZS5iZWdpbigpIC0gbV9maXJzdFBhcnNlclRva2VuOworICAgIGlmICgh
bGVhdmVEaXJlY3RseUJlZm9yZSkKKyAgICAgICAgc3RhcnRJbmRleCsrOworICAgIHdoaWxlICht
X2NvbW1lbnRJdGVyYXRvciA8IG1fY29tbWVudE9mZnNldHMuZW5kKCkgJiYgbV9jb21tZW50SXRl
cmF0b3ItPnRva2Vuc0JlZm9yZSA8IHN0YXJ0SW5kZXgpCisgICAgICAgIG1fY29tbWVudEl0ZXJh
dG9yKys7Cit9CisKK3ZvaWQgQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyOjp5aWVsZENvbW1lbnRz
QmVmb3JlKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIHVuc2lnbmVk
IHN0YXJ0SW5kZXggPSByYW5nZS5iZWdpbigpIC0gbV9maXJzdFBhcnNlclRva2VuOworICAgIHdo
aWxlIChtX2NvbW1lbnRJdGVyYXRvciA8IG1fY29tbWVudE9mZnNldHMuZW5kKCkgJiYgbV9jb21t
ZW50SXRlcmF0b3ItPnRva2Vuc0JlZm9yZSA8PSBzdGFydEluZGV4KSB7CisgICAgICAgIG1fb2Jz
ZXJ2ZXIub2JzZXJ2ZUNvbW1lbnQobV9jb21tZW50SXRlcmF0b3ItPnN0YXJ0T2Zmc2V0LCBtX2Nv
bW1lbnRJdGVyYXRvci0+ZW5kT2Zmc2V0KTsKKyAgICAgICAgbV9jb21tZW50SXRlcmF0b3IrKzsK
KyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlck9ic2VydmVyV3Jh
cHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzkgQEAKKy8vIENvcHlyaWdodCAyMDE1
IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgor
Ly8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZuZGVmIENTU1BhcnNlck9ic2VydmVy
V3JhcHBlcl9oCisjZGVmaW5lIENTU1BhcnNlck9ic2VydmVyV3JhcHBlcl9oCisKKyNpbmNsdWRl
ICJDU1NQYXJzZXJPYnNlcnZlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENT
U1BhcnNlck9ic2VydmVyV3JhcHBlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQ1NTUGFyc2Vy
T2JzZXJ2ZXJXcmFwcGVyKENTU1BhcnNlck9ic2VydmVyJiBvYnNlcnZlcikKKyAgICAgICAgOiBt
X29ic2VydmVyKG9ic2VydmVyKQorICAgIHsgfQorCisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQo
Y29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworICAgIHVuc2lnbmVkIHByZXZpb3VzVG9rZW5T
dGFydE9mZnNldChjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJik7CisgICAgdW5zaWduZWQgZW5k
T2Zmc2V0KGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmKTsgLy8gSW5jbHVkZXMgdHJhaWxpbmcg
Y29tbWVudHMKKworICAgIHZvaWQgc2tpcENvbW1lbnRzQmVmb3JlKGNvbnN0IENTU1BhcnNlclRv
a2VuUmFuZ2UmLCBib29sIGxlYXZlRGlyZWN0bHlCZWZvcmUpOworICAgIHZvaWQgeWllbGRDb21t
ZW50c0JlZm9yZShjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJik7CisKKyAgICBDU1NQYXJzZXJP
YnNlcnZlciYgb2JzZXJ2ZXIoKSB7IHJldHVybiBtX29ic2VydmVyOyB9CisgICAgdm9pZCBhZGRD
b21tZW50KHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVk
IHRva2Vuc0JlZm9yZSkKKyAgICB7CisgICAgICAgIENvbW1lbnRQb3NpdGlvbiBwb3NpdGlvbiA9
IHtzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCB0b2tlbnNCZWZvcmV9OworICAgICAgICBtX2NvbW1l
bnRPZmZzZXRzLmFwcGVuZChwb3NpdGlvbik7CisgICAgfQorICAgIHZvaWQgYWRkVG9rZW4odW5z
aWduZWQgc3RhcnRPZmZzZXQpIHsgbV90b2tlbk9mZnNldHMuYXBwZW5kKHN0YXJ0T2Zmc2V0KTsg
fQorICAgIHZvaWQgZmluYWxpemVDb25zdHJ1Y3Rpb24oQ1NTUGFyc2VyVG9rZW4qIGZpcnN0UGFy
c2VyVG9rZW4pCisgICAgeworICAgICAgICBtX2ZpcnN0UGFyc2VyVG9rZW4gPSBmaXJzdFBhcnNl
clRva2VuOworICAgICAgICBtX2NvbW1lbnRJdGVyYXRvciA9IG1fY29tbWVudE9mZnNldHMuYmVn
aW4oKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ1NTUGFyc2VyT2JzZXJ2ZXImIG1fb2JzZXJ2
ZXI7CisgICAgVmVjdG9yPHVuc2lnbmVkPiBtX3Rva2VuT2Zmc2V0czsKKyAgICBDU1NQYXJzZXJU
b2tlbiogbV9maXJzdFBhcnNlclRva2VuOworCisgICAgc3RydWN0IENvbW1lbnRQb3NpdGlvbiB7
CisgICAgICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0OworICAgICAgICB1bnNpZ25lZCBlbmRPZmZz
ZXQ7CisgICAgICAgIHVuc2lnbmVkIHRva2Vuc0JlZm9yZTsKKyAgICB9OworCisgICAgVmVjdG9y
PENvbW1lbnRQb3NpdGlvbj4gbV9jb21tZW50T2Zmc2V0czsKKyAgICBWZWN0b3I8Q29tbWVudFBv
c2l0aW9uPjo6aXRlcmF0b3IgbV9jb21tZW50SXRlcmF0b3I7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXJfaApJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw0ODEgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJv
bWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NT
UGFyc2VyVG9rZW4uaCIKKworI2luY2x1ZGUgIkNTU01hcmt1cC5oIgorI2luY2x1ZGUgIkNTU1By
aW1pdGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlQYXJzZXIuaCIKKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNp
bmNsdWRlIDxsaW1pdHMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgorQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyBjc3NQcmlt
aXRpdmVWYWx1ZVVuaXRGcm9tVHJpZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgpCit7CisgICAgQVNTRVJUKGRhdGEpOworICAgIEFTU0VSVChsZW5ndGgpOworICAg
IHN3aXRjaCAobGVuZ3RoKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIHN3aXRjaCAo
dG9BU0NJSUxvd2VyKGRhdGFbMF0pKSB7CisgICAgICAgICAgICAgICAgY2FzZSAncyc6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1Nf
UzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6Cisg
ICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzBdKSkgeworICAgICAgICAgICAg
ICAgIGNhc2UgJ2MnOgorICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihk
YXRhWzFdKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaCc6CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNT
U19DSFM7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtJzoKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0NN
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgJ2UnOgorICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHRvQVND
SUlMb3dlcihkYXRhWzFdKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbSc6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZXM6OkNTU19FTVM7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd4JzoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBl
czo6Q1NTX0VYUzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICdmJzoKKyAgICAgICAgICAgICAgICAgICAgaWYg
KHRvQVNDSUlMb3dlcihkYXRhWzFdKSA9PSAncicpCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0ZSOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICdoJzoKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzFdKSA9PSAneicpCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0haOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICdpJzoKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzFdKSA9PSAnbicpCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NT
X0lOOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICdt
JzoKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ20nOgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfTU07CisgICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlICdzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX01TOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgJ3AnOgorICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRh
WzFdKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYyc6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19Q
QzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3QnOgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUFQ7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1BYOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgJ3YnOgorICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihk
YXRhWzFdKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaCc6CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNT
U19WSDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3cnOgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfVlc7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAzOgorICAgICAgICAg
ICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVswXSkpIHsKKyAgICAgICAgICAgICAgICBjYXNl
ICdkJzoKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2UnOgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsyXSkgPT0gJ2cnKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6
Q1NTX0RFRzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgJ3AnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0
b0FTQ0lJTG93ZXIoZGF0YVsyXSkgPT0gJ2knKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0RQSTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICdrJzoKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzFdKSA9PSAnaCcgJiYgdG9BU0NJ
SUxvd2VyKGRhdGFbMl0pID09ICd6JykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfS0haOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICdyJzoKKyAgICAgICAgICAgICAgICAgICAg
c3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgJ2EnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIo
ZGF0YVsyXSkgPT0gJ2QnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1JBRDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2UnOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsyXSkgPT0gJ20n
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlczo6Q1NTX1JFTVM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA0OgorICAgICAg
ICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVswXSkpIHsKKyAgICAgICAgICAgICAgICBj
YXNlICdkJzoKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVsx
XSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3AnOgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGRhdGFbMl0pKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2MnOgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzNdKSA9PSAnbScpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZXM6OkNTU19EUENNOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3AnOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzNdKSA9
PSAneCcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19EUFBYOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgJ2cnOgor
ICAgICAgICAgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGRhdGFbMV0pID09ICdyJyAmJiB0
b0FTQ0lJTG93ZXIoZGF0YVsyXSkgPT0gJ2EnICYmIHRvQVNDSUlMb3dlcihkYXRhWzNdKSA9PSAn
ZCcpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlczo6Q1NTX0dSQUQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgJ3QnOgorICAgICAgICAgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGRh
dGFbMV0pID09ICd1JyAmJiB0b0FTQ0lJTG93ZXIoZGF0YVsyXSkgPT0gJ3InICYmIHRvQVNDSUlM
b3dlcihkYXRhWzNdKSA9PSAnbicpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1RVUk47CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgJ3YnOgorICAgICAgICAgICAgICAgICAgICBz
d2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSAnbSc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93
ZXIoZGF0YVsyXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYSc6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGRh
dGFbM10pID09ICd4JykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1ZNQVg7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSAnaSc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAodG9BU0NJSUxvd2VyKGRhdGFbM10pID09ICduJykKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NT
X1ZNSU47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA1OgorICAgICAg
ICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVswXSkpIHsKKyAgICAgICAgICAgICAgICBj
YXNlICdfJzoKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzFdKSA9
PSAnXycgJiYgdG9BU0NJSUxvd2VyKGRhdGFbMl0pID09ICdxJyAmJiB0b0FTQ0lJTG93ZXIoZGF0
YVszXSkgPT0gJ2UnICYmIHRvQVNDSUlMb3dlcihkYXRhWzRdKSA9PSAnbScpCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0VN
UzsgLy8gRklYTUUtTkVXUEFSU0VSOiBOZWVkIHF1aXJreSBlbXMuCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfVU5LTk9XTjsKK30KKwor
c3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgc3RyaW5nVG9Vbml0VHlwZShTdHJp
bmdWaWV3IHN0cmluZ1ZpZXcpCit7CisgICAgaWYgKHN0cmluZ1ZpZXcuaXM4Qml0KCkpCisgICAg
ICAgIHJldHVybiBjc3NQcmltaXRpdmVWYWx1ZVVuaXRGcm9tVHJpZShzdHJpbmdWaWV3LmNoYXJh
Y3RlcnM4KCksIHN0cmluZ1ZpZXcubGVuZ3RoKCkpOworICAgIHJldHVybiBjc3NQcmltaXRpdmVW
YWx1ZVVuaXRGcm9tVHJpZShzdHJpbmdWaWV3LmNoYXJhY3RlcnMxNigpLCBzdHJpbmdWaWV3Lmxl
bmd0aCgpKTsKK30KKworQ1NTUGFyc2VyVG9rZW46OkNTU1BhcnNlclRva2VuKENTU1BhcnNlclRv
a2VuVHlwZSB0eXBlLCBCbG9ja1R5cGUgYmxvY2tUeXBlKQorICAgIDogbV90eXBlKHR5cGUpCisg
ICAgLCBtX2Jsb2NrVHlwZShibG9ja1R5cGUpCit7Cit9CisKKy8vIEp1c3QgYSBoZWxwZXIgdXNl
ZCBmb3IgRGVsaW1pdGVyIHRva2Vucy4KK0NTU1BhcnNlclRva2VuOjpDU1NQYXJzZXJUb2tlbihD
U1NQYXJzZXJUb2tlblR5cGUgdHlwZSwgVUNoYXIgYykKKyAgICA6IG1fdHlwZSh0eXBlKQorICAg
ICwgbV9ibG9ja1R5cGUoTm90QmxvY2spCisgICAgLCBtX2RlbGltaXRlcihjKQoreworICAgIEFT
U0VSVChtX3R5cGUgPT0gRGVsaW1pdGVyVG9rZW4pOworfQorCitDU1NQYXJzZXJUb2tlbjo6Q1NT
UGFyc2VyVG9rZW4oQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIFN0cmluZ1ZpZXcgdmFsdWUsIEJs
b2NrVHlwZSBibG9ja1R5cGUpCisgICAgOiBtX3R5cGUodHlwZSkKKyAgICAsIG1fYmxvY2tUeXBl
KGJsb2NrVHlwZSkKK3sKKyAgICBpbml0VmFsdWVGcm9tU3RyaW5nVmlldyh2YWx1ZSk7CisgICAg
bV9pZCA9IC0xOworfQorCitDU1NQYXJzZXJUb2tlbjo6Q1NTUGFyc2VyVG9rZW4oQ1NTUGFyc2Vy
VG9rZW5UeXBlIHR5cGUsIGRvdWJsZSBudW1lcmljVmFsdWUsIE51bWVyaWNWYWx1ZVR5cGUgbnVt
ZXJpY1ZhbHVlVHlwZSwgTnVtZXJpY1NpZ24gc2lnbikKKyAgICA6IG1fdHlwZSh0eXBlKQorICAg
ICwgbV9ibG9ja1R5cGUoTm90QmxvY2spCisgICAgLCBtX251bWVyaWNWYWx1ZVR5cGUobnVtZXJp
Y1ZhbHVlVHlwZSkKKyAgICAsIG1fbnVtZXJpY1NpZ24oc2lnbikKKyAgICAsIG1fdW5pdChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX05VTUJF
UikpCit7CisgICAgQVNTRVJUKHR5cGUgPT0gTnVtYmVyVG9rZW4pOworICAgIG1fbnVtZXJpY1Zh
bHVlID0gY2xhbXBUbzxkb3VibGU+KG51bWVyaWNWYWx1ZSwgLXN0ZDo6bnVtZXJpY19saW1pdHM8
ZmxvYXQ+OjptYXgoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpKTsKK30KKwor
Q1NTUGFyc2VyVG9rZW46OkNTU1BhcnNlclRva2VuKENTU1BhcnNlclRva2VuVHlwZSB0eXBlLCBV
Q2hhcjMyIHN0YXJ0LCBVQ2hhcjMyIGVuZCkKKyAgICA6IG1fdHlwZShVbmljb2RlUmFuZ2VUb2tl
bikKKyAgICAsIG1fYmxvY2tUeXBlKE5vdEJsb2NrKQoreworICAgIEFTU0VSVF9VTlVTRUQodHlw
ZSwgdHlwZSA9PSBVbmljb2RlUmFuZ2VUb2tlbik7CisgICAgbV91bmljb2RlUmFuZ2Uuc3RhcnQg
PSBzdGFydDsKKyAgICBtX3VuaWNvZGVSYW5nZS5lbmQgPSBlbmQ7Cit9CisKK0NTU1BhcnNlclRv
a2VuOjpDU1NQYXJzZXJUb2tlbihIYXNoVG9rZW5UeXBlIHR5cGUsIFN0cmluZ1ZpZXcgdmFsdWUp
CisgICAgOiBtX3R5cGUoSGFzaFRva2VuKQorICAgICwgbV9ibG9ja1R5cGUoTm90QmxvY2spCisg
ICAgLCBtX2hhc2hUb2tlblR5cGUodHlwZSkKK3sKKyAgICBpbml0VmFsdWVGcm9tU3RyaW5nVmll
dyh2YWx1ZSk7Cit9CisKK3ZvaWQgQ1NTUGFyc2VyVG9rZW46OmNvbnZlcnRUb0RpbWVuc2lvbldp
dGhVbml0KFN0cmluZ1ZpZXcgdW5pdCkKK3sKKyAgICBBU1NFUlQobV90eXBlID09IE51bWJlclRv
a2VuKTsKKyAgICBtX3R5cGUgPSBEaW1lbnNpb25Ub2tlbjsKKyAgICBpbml0VmFsdWVGcm9tU3Ry
aW5nVmlldyh1bml0KTsKKyAgICBtX3VuaXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RyaW5n
VG9Vbml0VHlwZSh1bml0KSk7Cit9CisKK3ZvaWQgQ1NTUGFyc2VyVG9rZW46OmNvbnZlcnRUb1Bl
cmNlbnRhZ2UoKQoreworICAgIEFTU0VSVChtX3R5cGUgPT0gTnVtYmVyVG9rZW4pOworICAgIG1f
dHlwZSA9IFBlcmNlbnRhZ2VUb2tlbjsKKyAgICBtX3VuaXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1BFUkNFTlRBR0UpOworfQorCitV
Q2hhciBDU1NQYXJzZXJUb2tlbjo6ZGVsaW1pdGVyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90
eXBlID09IERlbGltaXRlclRva2VuKTsKKyAgICByZXR1cm4gbV9kZWxpbWl0ZXI7Cit9CisKK051
bWVyaWNTaWduIENTU1BhcnNlclRva2VuOjpudW1lcmljU2lnbigpIGNvbnN0Cit7CisgICAgLy8g
VGhpcyBpcyB2YWxpZCBmb3IgRGltZW5zaW9uVG9rZW4gYW5kIFBlcmNlbnRhZ2VUb2tlbiwgYnV0
IG9ubHkgdXNlZAorICAgIC8vIGluIDxhbitiPiBwYXJzaW5nIG9uIE51bWJlclRva2Vucy4KKyAg
ICBBU1NFUlQobV90eXBlID09IE51bWJlclRva2VuKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
TnVtZXJpY1NpZ24+KG1fbnVtZXJpY1NpZ24pOworfQorCitOdW1lcmljVmFsdWVUeXBlIENTU1Bh
cnNlclRva2VuOjpudW1lcmljVmFsdWVUeXBlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBl
ID09IE51bWJlclRva2VuIHx8IG1fdHlwZSA9PSBQZXJjZW50YWdlVG9rZW4gfHwgbV90eXBlID09
IERpbWVuc2lvblRva2VuKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TnVtZXJpY1ZhbHVlVHlw
ZT4obV9udW1lcmljVmFsdWVUeXBlKTsKK30KKworZG91YmxlIENTU1BhcnNlclRva2VuOjpudW1l
cmljVmFsdWUoKSBjb25zdAoreworICAgIEFTU0VSVChtX3R5cGUgPT0gTnVtYmVyVG9rZW4gfHwg
bV90eXBlID09IFBlcmNlbnRhZ2VUb2tlbiB8fCBtX3R5cGUgPT0gRGltZW5zaW9uVG9rZW4pOwor
ICAgIHJldHVybiBtX251bWVyaWNWYWx1ZTsKK30KKworQ1NTUHJvcGVydHlJRCBDU1NQYXJzZXJU
b2tlbjo6cGFyc2VBc1VucmVzb2x2ZWRDU1NQcm9wZXJ0eUlEKCkgY29uc3QKK3sKKyAgICBBU1NF
UlQobV90eXBlID09IElkZW50VG9rZW4pOworICAgIHJldHVybiB1bnJlc29sdmVkQ1NTUHJvcGVy
dHlJRCh2YWx1ZSgpKTsKK30KKworQ1NTVmFsdWVJRCBDU1NQYXJzZXJUb2tlbjo6aWQoKSBjb25z
dAoreworICAgIGlmIChtX3R5cGUgIT0gSWRlbnRUb2tlbikKKyAgICAgICAgcmV0dXJuIENTU1Zh
bHVlSW52YWxpZDsKKyAgICBpZiAobV9pZCA8IDApCisgICAgICAgIG1faWQgPSBjc3NWYWx1ZUtl
eXdvcmRJRCh2YWx1ZSgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJRD4obV9p
ZCk7Cit9CisKK0NTU1ZhbHVlSUQgQ1NTUGFyc2VyVG9rZW46OmZ1bmN0aW9uSWQoKSBjb25zdAor
eworICAgIGlmIChtX3R5cGUgIT0gRnVuY3Rpb25Ub2tlbikKKyAgICAgICAgcmV0dXJuIENTU1Zh
bHVlSW52YWxpZDsKKyAgICBpZiAobV9pZCA8IDApCisgICAgICAgIG1faWQgPSBjc3NWYWx1ZUtl
eXdvcmRJRCh2YWx1ZSgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJRD4obV9p
ZCk7Cit9CisKK2Jvb2wgQ1NTUGFyc2VyVG9rZW46Omhhc1N0cmluZ0JhY2tpbmcoKSBjb25zdAor
eworICAgIENTU1BhcnNlclRva2VuVHlwZSB0b2tlblR5cGUgPSB0eXBlKCk7CisgICAgcmV0dXJu
IHRva2VuVHlwZSA9PSBJZGVudFRva2VuCisgICAgICAgIHx8IHRva2VuVHlwZSA9PSBGdW5jdGlv
blRva2VuCisgICAgICAgIHx8IHRva2VuVHlwZSA9PSBBdEtleXdvcmRUb2tlbgorICAgICAgICB8
fCB0b2tlblR5cGUgPT0gSGFzaFRva2VuCisgICAgICAgIHx8IHRva2VuVHlwZSA9PSBVcmxUb2tl
bgorICAgICAgICB8fCB0b2tlblR5cGUgPT0gRGltZW5zaW9uVG9rZW4KKyAgICAgICAgfHwgdG9r
ZW5UeXBlID09IFN0cmluZ1Rva2VuOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NQYXJzZXJUb2tl
bjo6Y29weVdpdGhVcGRhdGVkU3RyaW5nKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZykgY29uc3QK
K3sKKyAgICBDU1NQYXJzZXJUb2tlbiBjb3B5KCp0aGlzKTsKKyAgICBjb3B5LmluaXRWYWx1ZUZy
b21TdHJpbmdWaWV3KHN0cmluZyk7CisgICAgcmV0dXJuIGNvcHk7Cit9CisKK2Jvb2wgQ1NTUGFy
c2VyVG9rZW46OnZhbHVlRGF0YUNoYXJSYXdFcXVhbChjb25zdCBDU1NQYXJzZXJUb2tlbiYgb3Ro
ZXIpIGNvbnN0Cit7CisgICAgaWYgKG1fdmFsdWVMZW5ndGggIT0gb3RoZXIubV92YWx1ZUxlbmd0
aCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fdmFsdWVEYXRhQ2hhclJhdyA9
PSBvdGhlci5tX3ZhbHVlRGF0YUNoYXJSYXcgJiYgbV92YWx1ZUlzOEJpdCA9PSBvdGhlci5tX3Zh
bHVlSXM4Qml0KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChtX3ZhbHVlSXM4Qml0
KSB7CisgICAgICAgIHJldHVybiBvdGhlci5tX3ZhbHVlSXM4Qml0ID8KKyAgICAgICAgICAgIGVx
dWFsKHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4obV92YWx1ZURhdGFDaGFyUmF3KSwgc3RhdGlj
X2Nhc3Q8Y29uc3QgTENoYXIqPihvdGhlci5tX3ZhbHVlRGF0YUNoYXJSYXcpLCBtX3ZhbHVlTGVu
Z3RoKSA6CisgICAgICAgICAgICBlcXVhbChzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KG1fdmFs
dWVEYXRhQ2hhclJhdyksIHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4ob3RoZXIubV92YWx1ZURh
dGFDaGFyUmF3KSwgbV92YWx1ZUxlbmd0aCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJu
IG90aGVyLm1fdmFsdWVJczhCaXQgPworICAgICAgICAgICAgZXF1YWwoc3RhdGljX2Nhc3Q8Y29u
c3QgVUNoYXIqPihtX3ZhbHVlRGF0YUNoYXJSYXcpLCBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+
KG90aGVyLm1fdmFsdWVEYXRhQ2hhclJhdyksIG1fdmFsdWVMZW5ndGgpIDoKKyAgICAgICAgICAg
IGVxdWFsKHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4obV92YWx1ZURhdGFDaGFyUmF3KSwgc3Rh
dGljX2Nhc3Q8Y29uc3QgVUNoYXIqPihvdGhlci5tX3ZhbHVlRGF0YUNoYXJSYXcpLCBtX3ZhbHVl
TGVuZ3RoKTsKKyAgICB9Cit9CisKK2Jvb2wgQ1NTUGFyc2VyVG9rZW46Om9wZXJhdG9yPT0oY29u
c3QgQ1NTUGFyc2VyVG9rZW4mIG90aGVyKSBjb25zdAoreworICAgIGlmIChtX3R5cGUgIT0gb3Ro
ZXIubV90eXBlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgc3dpdGNoIChtX3R5cGUpIHsK
KyAgICBjYXNlIERlbGltaXRlclRva2VuOgorICAgICAgICByZXR1cm4gZGVsaW1pdGVyKCkgPT0g
b3RoZXIuZGVsaW1pdGVyKCk7CisgICAgY2FzZSBIYXNoVG9rZW46CisgICAgICAgIGlmIChtX2hh
c2hUb2tlblR5cGUgIT0gb3RoZXIubV9oYXNoVG9rZW5UeXBlKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIElkZW50VG9rZW46CisgICAg
Y2FzZSBGdW5jdGlvblRva2VuOgorICAgIGNhc2UgU3RyaW5nVG9rZW46CisgICAgY2FzZSBVcmxU
b2tlbjoKKyAgICAgICAgcmV0dXJuIHZhbHVlRGF0YUNoYXJSYXdFcXVhbChvdGhlcik7CisgICAg
Y2FzZSBEaW1lbnNpb25Ub2tlbjoKKyAgICAgICAgaWYgKCF2YWx1ZURhdGFDaGFyUmF3RXF1YWwo
b3RoZXIpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBGQUxMVEhST1VHSDsK
KyAgICBjYXNlIE51bWJlclRva2VuOgorICAgIGNhc2UgUGVyY2VudGFnZVRva2VuOgorICAgICAg
ICByZXR1cm4gbV9udW1lcmljU2lnbiA9PSBvdGhlci5tX251bWVyaWNTaWduICYmIG1fbnVtZXJp
Y1ZhbHVlID09IG90aGVyLm1fbnVtZXJpY1ZhbHVlICYmIG1fbnVtZXJpY1ZhbHVlVHlwZSA9PSBv
dGhlci5tX251bWVyaWNWYWx1ZVR5cGU7CisgICAgY2FzZSBVbmljb2RlUmFuZ2VUb2tlbjoKKyAg
ICAgICAgcmV0dXJuIG1fdW5pY29kZVJhbmdlLnN0YXJ0ID09IG90aGVyLm1fdW5pY29kZVJhbmdl
LnN0YXJ0ICYmIG1fdW5pY29kZVJhbmdlLmVuZCA9PSBvdGhlci5tX3VuaWNvZGVSYW5nZS5lbmQ7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfQorCit2b2lkIENT
U1BhcnNlclRva2VuOjpzZXJpYWxpemUoU3RyaW5nQnVpbGRlciYgYnVpbGRlcikgY29uc3QKK3sK
KyAgICAvLyBUaGlzIGlzIGN1cnJlbnRseSBvbmx5IHVzZWQgZm9yIEBzdXBwb3J0cyBDU1NPTS4g
VG8ga2VlcCBvdXIgaW1wbGVtZW50YXRpb24KKyAgICAvLyBzaW1wbGUgd2UgaGFuZGxlIHNvbWUg
b2YgdGhlIGVkZ2UgY2FzZXMgaW5jb3JyZWN0bHkgKHNlZSBjb21tZW50cyBiZWxvdykuCisgICAg
c3dpdGNoICh0eXBlKCkpIHsKKyAgICBjYXNlIElkZW50VG9rZW46CisgICAgICAgIHNlcmlhbGl6
ZUlkZW50aWZpZXIodmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVyKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBGdW5jdGlvblRva2VuOgorICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKHZh
bHVlKCkudG9TdHJpbmcoKSwgYnVpbGRlcik7CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVu
ZCgnKCcpOworICAgIGNhc2UgQXRLZXl3b3JkVG9rZW46CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCdAJyk7CisgICAgICAgIHNlcmlhbGl6ZUlkZW50aWZpZXIodmFsdWUoKS50b1N0cmluZygpLCBi
dWlsZGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIYXNoVG9rZW46CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCcjJyk7CisgICAgICAgIHNlcmlhbGl6ZUlkZW50aWZpZXIodmFsdWUoKS50
b1N0cmluZygpLCBidWlsZGVyLCAoZ2V0SGFzaFRva2VuVHlwZSgpID09IEhhc2hUb2tlblVucmVz
dHJpY3RlZCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFVybFRva2VuOgorICAgICAgICBi
dWlsZGVyLmFwcGVuZCgidXJsKCIpOworICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKHZhbHVl
KCkudG9TdHJpbmcoKSwgYnVpbGRlcik7CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgn
KScpOworICAgIGNhc2UgRGVsaW1pdGVyVG9rZW46CisgICAgICAgIGlmIChkZWxpbWl0ZXIoKSA9
PSAnXFwnKQorICAgICAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCJcXFxuIik7CisgICAg
ICAgIHJldHVybiBidWlsZGVyLmFwcGVuZChkZWxpbWl0ZXIoKSk7CisgICAgY2FzZSBOdW1iZXJU
b2tlbjoKKyAgICAgICAgLy8gVGhlc2Ugd29uJ3QgcHJvcGVybHkgcHJlc2VydmUgdGhlIE51bWVy
aWNWYWx1ZVR5cGUgZmxhZworICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmROdW1iZXIobnVt
ZXJpY1ZhbHVlKCkpOworICAgIGNhc2UgUGVyY2VudGFnZVRva2VuOgorICAgICAgICBidWlsZGVy
LmFwcGVuZE51bWJlcihudW1lcmljVmFsdWUoKSk7CisgICAgICAgIHJldHVybiBidWlsZGVyLmFw
cGVuZCgnJScpOworICAgIGNhc2UgRGltZW5zaW9uVG9rZW46CisgICAgICAgIC8vIFRoaXMgd2ls
bCBpbmNvcnJlY3RseSBzZXJpYWxpemUgZS5nLiA0ZTNlMiBhcyA0MDAwZTIKKyAgICAgICAgYnVp
bGRlci5hcHBlbmROdW1iZXIobnVtZXJpY1ZhbHVlKCkpOworICAgICAgICBzZXJpYWxpemVJZGVu
dGlmaWVyKHZhbHVlKCkudG9TdHJpbmcoKSwgYnVpbGRlcik7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgVW5pY29kZVJhbmdlVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZChT
dHJpbmc6OmZvcm1hdCgiVSslWC0lWCIsIHVuaWNvZGVSYW5nZVN0YXJ0KCksIHVuaWNvZGVSYW5n
ZUVuZCgpKSk7CisgICAgY2FzZSBTdHJpbmdUb2tlbjoKKyAgICAgICAgcmV0dXJuIHNlcmlhbGl6
ZVN0cmluZyh2YWx1ZSgpLnRvU3RyaW5nKCksIGJ1aWxkZXIpOworCisgICAgY2FzZSBJbmNsdWRl
TWF0Y2hUb2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCJ+PSIpOworICAgIGNh
c2UgRGFzaE1hdGNoVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgifD0iKTsK
KyAgICBjYXNlIFByZWZpeE1hdGNoVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVu
ZCgiXj0iKTsKKyAgICBjYXNlIFN1ZmZpeE1hdGNoVG9rZW46CisgICAgICAgIHJldHVybiBidWls
ZGVyLmFwcGVuZCgiJD0iKTsKKyAgICBjYXNlIFN1YnN0cmluZ01hdGNoVG9rZW46CisgICAgICAg
IHJldHVybiBidWlsZGVyLmFwcGVuZCgiKj0iKTsKKyAgICBjYXNlIENvbHVtblRva2VuOgorICAg
ICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoInx8Iik7CisgICAgY2FzZSBDRE9Ub2tlbjoKKyAg
ICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCI8IS0tIik7CisgICAgY2FzZSBDRENUb2tlbjoK
KyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCItLT4iKTsKKyAgICBjYXNlIEJhZFN0cmlu
Z1Rva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoIidcbiIpOworICAgIGNhc2Ug
QmFkVXJsVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgidXJsKCgpIik7Cisg
ICAgY2FzZSBXaGl0ZXNwYWNlVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgn
ICcpOworICAgIGNhc2UgQ29sb25Ub2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5k
KCc6Jyk7CisgICAgY2FzZSBTZW1pY29sb25Ub2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIu
YXBwZW5kKCc7Jyk7CisgICAgY2FzZSBDb21tYVRva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRl
ci5hcHBlbmQoJywnKTsKKyAgICBjYXNlIExlZnRQYXJlbnRoZXNpc1Rva2VuOgorICAgICAgICBy
ZXR1cm4gYnVpbGRlci5hcHBlbmQoJygnKTsKKyAgICBjYXNlIFJpZ2h0UGFyZW50aGVzaXNUb2tl
bjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CisgICAgY2FzZSBMZWZ0QnJh
Y2tldFRva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJ1snKTsKKyAgICBjYXNl
IFJpZ2h0QnJhY2tldFRva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJ10nKTsK
KyAgICBjYXNlIExlZnRCcmFjZVRva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQo
J3snKTsKKyAgICBjYXNlIFJpZ2h0QnJhY2VUb2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIu
YXBwZW5kKCd9Jyk7CisKKyAgICBjYXNlIEVPRlRva2VuOgorICAgIGNhc2UgQ29tbWVudFRva2Vu
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJUb2tlbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyVG9rZW4uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODAg
QEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8K
Ky8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZu
ZGVmIENTU1BhcnNlclRva2VuX2gKKyNkZWZpbmUgQ1NTUGFyc2VyVG9rZW5faAorCisjaW5jbHVk
ZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBDU1NQYXJzZXJUb2tlblR5cGUgeworICAg
IElkZW50VG9rZW4gPSAwLAorICAgIEZ1bmN0aW9uVG9rZW4sCisgICAgQXRLZXl3b3JkVG9rZW4s
CisgICAgSGFzaFRva2VuLAorICAgIFVybFRva2VuLAorICAgIEJhZFVybFRva2VuLAorICAgIERl
bGltaXRlclRva2VuLAorICAgIE51bWJlclRva2VuLAorICAgIFBlcmNlbnRhZ2VUb2tlbiwKKyAg
ICBEaW1lbnNpb25Ub2tlbiwKKyAgICBJbmNsdWRlTWF0Y2hUb2tlbiwKKyAgICBEYXNoTWF0Y2hU
b2tlbiwKKyAgICBQcmVmaXhNYXRjaFRva2VuLAorICAgIFN1ZmZpeE1hdGNoVG9rZW4sCisgICAg
U3Vic3RyaW5nTWF0Y2hUb2tlbiwKKyAgICBDb2x1bW5Ub2tlbiwKKyAgICBVbmljb2RlUmFuZ2VU
b2tlbiwKKyAgICBXaGl0ZXNwYWNlVG9rZW4sCisgICAgQ0RPVG9rZW4sCisgICAgQ0RDVG9rZW4s
CisgICAgQ29sb25Ub2tlbiwKKyAgICBTZW1pY29sb25Ub2tlbiwKKyAgICBDb21tYVRva2VuLAor
ICAgIExlZnRQYXJlbnRoZXNpc1Rva2VuLAorICAgIFJpZ2h0UGFyZW50aGVzaXNUb2tlbiwKKyAg
ICBMZWZ0QnJhY2tldFRva2VuLAorICAgIFJpZ2h0QnJhY2tldFRva2VuLAorICAgIExlZnRCcmFj
ZVRva2VuLAorICAgIFJpZ2h0QnJhY2VUb2tlbiwKKyAgICBTdHJpbmdUb2tlbiwKKyAgICBCYWRT
dHJpbmdUb2tlbiwKKyAgICBFT0ZUb2tlbiwKKyAgICBDb21tZW50VG9rZW4sCit9OworCitlbnVt
IE51bWVyaWNTaWduIHsKKyAgICBOb1NpZ24sCisgICAgUGx1c1NpZ24sCisgICAgTWludXNTaWdu
LAorfTsKKworZW51bSBOdW1lcmljVmFsdWVUeXBlIHsKKyAgICBJbnRlZ2VyVmFsdWVUeXBlLAor
ICAgIE51bWJlclZhbHVlVHlwZSwKK307CisKK2VudW0gSGFzaFRva2VuVHlwZSB7CisgICAgSGFz
aFRva2VuSWQsCisgICAgSGFzaFRva2VuVW5yZXN0cmljdGVkLAorfTsKKworY2xhc3MgQ1NTUGFy
c2VyVG9rZW4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGVu
dW0gQmxvY2tUeXBlIHsKKyAgICAgICAgTm90QmxvY2ssCisgICAgICAgIEJsb2NrU3RhcnQsCisg
ICAgICAgIEJsb2NrRW5kLAorICAgIH07CisKKyAgICBDU1NQYXJzZXJUb2tlbihDU1NQYXJzZXJU
b2tlblR5cGUsIEJsb2NrVHlwZSA9IE5vdEJsb2NrKTsKKyAgICBDU1NQYXJzZXJUb2tlbihDU1NQ
YXJzZXJUb2tlblR5cGUsIFN0cmluZ1ZpZXcsIEJsb2NrVHlwZSA9IE5vdEJsb2NrKTsKKworICAg
IENTU1BhcnNlclRva2VuKENTU1BhcnNlclRva2VuVHlwZSwgVUNoYXIpOyAvLyBmb3IgRGVsaW1p
dGVyVG9rZW4KKyAgICBDU1NQYXJzZXJUb2tlbihDU1NQYXJzZXJUb2tlblR5cGUsIGRvdWJsZSwg
TnVtZXJpY1ZhbHVlVHlwZSwgTnVtZXJpY1NpZ24pOyAvLyBmb3IgTnVtYmVyVG9rZW4KKyAgICBD
U1NQYXJzZXJUb2tlbihDU1NQYXJzZXJUb2tlblR5cGUsIFVDaGFyMzIsIFVDaGFyMzIpOyAvLyBm
b3IgVW5pY29kZVJhbmdlVG9rZW4KKworICAgIENTU1BhcnNlclRva2VuKEhhc2hUb2tlblR5cGUs
IFN0cmluZ1ZpZXcpOworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1BhcnNlclRva2Vu
JiBvdGhlcikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENTU1BhcnNlclRva2Vu
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKworICAgIC8vIENv
bnZlcnRzIE51bWJlclRva2VuIHRvIERpbWVuc2lvblRva2VuLgorICAgIHZvaWQgY29udmVydFRv
RGltZW5zaW9uV2l0aFVuaXQoU3RyaW5nVmlldyk7CisKKyAgICAvLyBDb252ZXJ0cyBOdW1iZXJU
b2tlbiB0byBQZXJjZW50YWdlVG9rZW4uCisgICAgdm9pZCBjb252ZXJ0VG9QZXJjZW50YWdlKCk7
CisKKyAgICBDU1NQYXJzZXJUb2tlblR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PENTU1BhcnNlclRva2VuVHlwZT4obV90eXBlKTsgfQorICAgIFN0cmluZ1ZpZXcgdmFsdWUo
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fdmFsdWVJczhCaXQpCisgICAgICAgICAgICBy
ZXR1cm4gU3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV92YWx1ZURh
dGFDaGFyUmF3KSwgbV92YWx1ZUxlbmd0aCk7CisgICAgICAgIHJldHVybiBTdHJpbmdWaWV3KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihtX3ZhbHVlRGF0YUNoYXJSYXcpLCBtX3ZhbHVl
TGVuZ3RoKTsKKyAgICB9CisKKyAgICBVQ2hhciBkZWxpbWl0ZXIoKSBjb25zdDsKKyAgICBOdW1l
cmljU2lnbiBudW1lcmljU2lnbigpIGNvbnN0OworICAgIE51bWVyaWNWYWx1ZVR5cGUgbnVtZXJp
Y1ZhbHVlVHlwZSgpIGNvbnN0OworICAgIGRvdWJsZSBudW1lcmljVmFsdWUoKSBjb25zdDsKKyAg
ICBIYXNoVG9rZW5UeXBlIGdldEhhc2hUb2tlblR5cGUoKSBjb25zdCB7IEFTU0VSVChtX3R5cGUg
PT0gSGFzaFRva2VuKTsgcmV0dXJuIG1faGFzaFRva2VuVHlwZTsgfQorICAgIEJsb2NrVHlwZSBn
ZXRCbG9ja1R5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCbG9ja1R5cGU+KG1fYmxv
Y2tUeXBlKTsgfQorICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgdW5pdFR5cGUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzPiht
X3VuaXQpOyB9CisgICAgVUNoYXIzMiB1bmljb2RlUmFuZ2VTdGFydCgpIGNvbnN0IHsgQVNTRVJU
KG1fdHlwZSA9PSBVbmljb2RlUmFuZ2VUb2tlbik7IHJldHVybiBtX3VuaWNvZGVSYW5nZS5zdGFy
dDsgfQorICAgIFVDaGFyMzIgdW5pY29kZVJhbmdlRW5kKCkgY29uc3QgeyBBU1NFUlQobV90eXBl
ID09IFVuaWNvZGVSYW5nZVRva2VuKTsgcmV0dXJuIG1fdW5pY29kZVJhbmdlLmVuZDsgfQorICAg
IENTU1ZhbHVlSUQgaWQoKSBjb25zdDsKKyAgICBDU1NWYWx1ZUlEIGZ1bmN0aW9uSWQoKSBjb25z
dDsKKworICAgIGJvb2wgaGFzU3RyaW5nQmFja2luZygpIGNvbnN0OworCisgICAgQ1NTUHJvcGVy
dHlJRCBwYXJzZUFzVW5yZXNvbHZlZENTU1Byb3BlcnR5SUQoKSBjb25zdDsKKworICAgIHZvaWQg
c2VyaWFsaXplKFN0cmluZ0J1aWxkZXImKSBjb25zdDsKKworICAgIENTU1BhcnNlclRva2VuIGNv
cHlXaXRoVXBkYXRlZFN0cmluZyhjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7CisKK3ByaXZhdGU6
CisgICAgdm9pZCBpbml0VmFsdWVGcm9tU3RyaW5nVmlldyhTdHJpbmdWaWV3IHN0cmluZykKKyAg
ICB7CisgICAgICAgIG1fdmFsdWVMZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgICAgIG1f
dmFsdWVJczhCaXQgPSBzdHJpbmcuaXM4Qml0KCk7CisgICAgICAgIG1fdmFsdWVEYXRhQ2hhclJh
dyA9IG1fdmFsdWVJczhCaXQgPyBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oc3RyaW5nLmNoYXJh
Y3RlcnM4KCkpIDogc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHN0cmluZy5jaGFyYWN0ZXJzMTYo
KSk7CisgICAgfQorICAgIHVuc2lnbmVkIG1fdHlwZSA6IDY7IC8vIENTU1BhcnNlclRva2VuVHlw
ZQorICAgIHVuc2lnbmVkIG1fYmxvY2tUeXBlIDogMjsgLy8gQmxvY2tUeXBlCisgICAgdW5zaWdu
ZWQgbV9udW1lcmljVmFsdWVUeXBlIDogMTsgLy8gTnVtZXJpY1ZhbHVlVHlwZQorICAgIHVuc2ln
bmVkIG1fbnVtZXJpY1NpZ24gOiAyOyAvLyBOdW1lcmljU2lnbgorICAgIHVuc2lnbmVkIG1fdW5p
dCA6IDc7IC8vIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMKKworICAgIGJvb2wgdmFsdWVE
YXRhQ2hhclJhd0VxdWFsKGNvbnN0IENTU1BhcnNlclRva2VuJiBvdGhlcikgY29uc3Q7CisKKyAg
ICAvLyBtX3ZhbHVlLi4uIGlzIGFuIHVucGFja2VkIFN0cmluZ1ZpZXcgc28gdGhhdCB3ZSBjYW4g
cGFjayBpdAorICAgIC8vIHRpZ2h0bHkgd2l0aCB0aGUgcmVzdCBvZiB0aGlzIG9iamVjdCBmb3Ig
YSBzbWFsbGVyIG9iamVjdCBzaXplLgorICAgIGJvb2wgbV92YWx1ZUlzOEJpdCA6IDE7CisgICAg
dW5zaWduZWQgbV92YWx1ZUxlbmd0aDsKKyAgICBjb25zdCB2b2lkKiBtX3ZhbHVlRGF0YUNoYXJS
YXc7IC8vIEVpdGhlciBMQ2hhciogb3IgVUNoYXIqLgorCisgICAgdW5pb24geworICAgICAgICBV
Q2hhciBtX2RlbGltaXRlcjsKKyAgICAgICAgSGFzaFRva2VuVHlwZSBtX2hhc2hUb2tlblR5cGU7
CisgICAgICAgIGRvdWJsZSBtX251bWVyaWNWYWx1ZTsKKyAgICAgICAgbXV0YWJsZSBpbnQgbV9p
ZDsKKworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgVUNoYXIzMiBzdGFydDsKKyAgICAg
ICAgICAgIFVDaGFyMzIgZW5kOworICAgICAgICB9IG1fdW5pY29kZVJhbmdlOworICAgIH07Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NTUGFyc2VyVG9rZW5f
aApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlblJhbmdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2Vu
UmFuZ2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VyVG9rZW5SYW5nZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NiBAQAorLy8g
Q29weXJpZ2h0IDIwMTQgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBk
aXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
Ky8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJhbmdlLmgiCisKKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ1NTUGFyc2VyVG9rZW4mIENTU1BhcnNlclRva2Vu
UmFuZ2U6OmVvZlRva2VuKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q1NTUGFyc2Vy
VG9rZW4+IGVvZlRva2VuKEVPRlRva2VuKTsKKyAgICByZXR1cm4gZW9mVG9rZW4uZ2V0KCk7Cit9
CisKK0NTU1BhcnNlclRva2VuUmFuZ2UgQ1NTUGFyc2VyVG9rZW5SYW5nZTo6bWFrZVN1YlJhbmdl
KGNvbnN0IENTU1BhcnNlclRva2VuKiBmaXJzdCwgY29uc3QgQ1NTUGFyc2VyVG9rZW4qIGxhc3Qp
IGNvbnN0Cit7CisgICAgaWYgKGZpcnN0ID09ICZlb2ZUb2tlbigpKQorICAgICAgICBmaXJzdCA9
IG1fbGFzdDsKKyAgICBpZiAobGFzdCA9PSAmZW9mVG9rZW4oKSkKKyAgICAgICAgbGFzdCA9IG1f
bGFzdDsKKyAgICBBU1NFUlQoZmlyc3QgPD0gbGFzdCk7CisgICAgcmV0dXJuIENTU1BhcnNlclRv
a2VuUmFuZ2UoZmlyc3QsIGxhc3QpOworfQorCitDU1NQYXJzZXJUb2tlblJhbmdlIENTU1BhcnNl
clRva2VuUmFuZ2U6OmNvbnN1bWVCbG9jaygpCit7CisgICAgQVNTRVJUKHBlZWsoKS5nZXRCbG9j
a1R5cGUoKSA9PSBDU1NQYXJzZXJUb2tlbjo6QmxvY2tTdGFydCk7CisgICAgY29uc3QgQ1NTUGFy
c2VyVG9rZW4qIHN0YXJ0ID0gJnBlZWsoKSArIDE7CisgICAgdW5zaWduZWQgbmVzdGluZ0xldmVs
ID0gMDsKKyAgICBkbyB7CisgICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IGNv
bnN1bWUoKTsKKyAgICAgICAgaWYgKHRva2VuLmdldEJsb2NrVHlwZSgpID09IENTU1BhcnNlclRv
a2VuOjpCbG9ja1N0YXJ0KQorICAgICAgICAgICAgbmVzdGluZ0xldmVsKys7CisgICAgICAgIGVs
c2UgaWYgKHRva2VuLmdldEJsb2NrVHlwZSgpID09IENTU1BhcnNlclRva2VuOjpCbG9ja0VuZCkK
KyAgICAgICAgICAgIG5lc3RpbmdMZXZlbC0tOworICAgIH0gd2hpbGUgKG5lc3RpbmdMZXZlbCAm
JiBtX2ZpcnN0IDwgbV9sYXN0KTsKKworICAgIGlmIChuZXN0aW5nTGV2ZWwpCisgICAgICAgIHJl
dHVybiBtYWtlU3ViUmFuZ2Uoc3RhcnQsIG1fZmlyc3QpOyAvLyBFbmRlZCBhdCBFT0YKKyAgICBy
ZXR1cm4gbWFrZVN1YlJhbmdlKHN0YXJ0LCBtX2ZpcnN0IC0gMSk7Cit9CisKK3ZvaWQgQ1NTUGFy
c2VyVG9rZW5SYW5nZTo6Y29uc3VtZUNvbXBvbmVudFZhbHVlKCkKK3sKKyAgICAvLyBGSVhNRTog
VGhpcyBpcyBnb2luZyB0byBkbyBtdWx0aXBsZSBwYXNzZXMgb3ZlciBsYXJnZSBzZWN0aW9ucyBv
ZiBhIHN0eWxlc2hlZXQuCisgICAgLy8gV2Ugc2hvdWxkIGNvbnNpZGVyIG9wdGltaXNpbmcgdGhp
cyBieSBwcmVjb21wdXRpbmcgd2hlcmUgZWFjaCBibG9jayBlbmRzLgorICAgIHVuc2lnbmVkIG5l
c3RpbmdMZXZlbCA9IDA7CisgICAgZG8geworICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYg
dG9rZW4gPSBjb25zdW1lKCk7CisgICAgICAgIGlmICh0b2tlbi5nZXRCbG9ja1R5cGUoKSA9PSBD
U1NQYXJzZXJUb2tlbjo6QmxvY2tTdGFydCkKKyAgICAgICAgICAgIG5lc3RpbmdMZXZlbCsrOwor
ICAgICAgICBlbHNlIGlmICh0b2tlbi5nZXRCbG9ja1R5cGUoKSA9PSBDU1NQYXJzZXJUb2tlbjo6
QmxvY2tFbmQpCisgICAgICAgICAgICBuZXN0aW5nTGV2ZWwtLTsKKyAgICB9IHdoaWxlIChuZXN0
aW5nTGV2ZWwgJiYgbV9maXJzdCA8IG1fbGFzdCk7Cit9CisKK1N0cmluZyBDU1NQYXJzZXJUb2tl
blJhbmdlOjpzZXJpYWxpemUoKSBjb25zdAoreworICAgIC8vIFdlJ3JlIHN1cHBvc2VkIHRvIGlu
c2VydCBjb21tZW50cyBiZXR3ZWVuIGNlcnRhaW4gcGFpcnMgb2YgdG9rZW4gdHlwZXMKKyAgICAv
LyBhcyBwZXIgc3BlYywgYnV0IHNpbmNlIHRoaXMgaXMgY3VycmVudGx5IG9ubHkgdXNlZCBmb3Ig
QHN1cHBvcnRzIENTU09NCisgICAgLy8gd2UganVzdCBnZXQgdGhlc2UgY2FzZXMgd3JvbmcgYW5k
IGF2b2lkIHRoZSBhZGRpdGlvbmFsIGNvbXBsZXhpdHkuCisgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOworICAgIGZvciAoY29uc3QgQ1NTUGFyc2VyVG9rZW4qIGl0ID0gbV9maXJzdDsgaXQgPCBt
X2xhc3Q7ICsraXQpCisgICAgICAgIGl0LT5zZXJpYWxpemUoYnVpbGRlcik7CisgICAgcmV0dXJu
IGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlblJhbmdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlblJhbmdlLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlblJh
bmdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDUgQEAKKy8vIENvcHlyaWdodCAyMDE0
IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgor
Ly8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZuZGVmIENTU1BhcnNlclRva2VuUmFu
Z2VfaAorI2RlZmluZSBDU1NQYXJzZXJUb2tlblJhbmdlX2gKKworI2luY2x1ZGUgIkNTU1BhcnNl
clRva2VuLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKKy8vIEEgQ1NTUGFyc2VyVG9rZW5SYW5nZSBpcyBhbiBpdGVyYXRvciBvdmVyIGEgc3VicmFu
Z2Ugb2YgYSB2ZWN0b3Igb2YgQ1NTUGFyc2VyVG9rZW5zLgorLy8gQWNjZXNzaW5nIG91dHNpZGUg
b2YgdGhlIHJhbmdlIHdpbGwgcmV0dXJuIGFuIGVuZGxlc3Mgc3RyZWFtIG9mIEVPRiB0b2tlbnMu
CisvLyBUaGlzIGNsYXNzIHJlZmVycyB0byBoYWxmLW9wZW4gaW50ZXJ2YWxzIFtmaXJzdCwgbGFz
dCkuCitjbGFzcyBDU1NQYXJzZXJUb2tlblJhbmdlIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTxz
aXplX3QgaW5saW5lQnVmZmVyPgorICAgIENTU1BhcnNlclRva2VuUmFuZ2UoY29uc3QgVmVjdG9y
PENTU1BhcnNlclRva2VuLCBpbmxpbmVCdWZmZXI+JiB2ZWN0b3IpCisgICAgOiBtX2ZpcnN0KHZl
Y3Rvci5iZWdpbigpKQorICAgICwgbV9sYXN0KHZlY3Rvci5lbmQoKSkKKyAgICB7CisgICAgfQor
CisgICAgLy8gVGhpcyBzaG91bGQgYmUgY2FsbGVkIG9uIGEgcmFuZ2Ugd2l0aCB0b2tlbnMgcmV0
dXJuZWQgYnkgdGhhdCByYW5nZS4KKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIG1ha2VTdWJSYW5n
ZShjb25zdCBDU1NQYXJzZXJUb2tlbiogZmlyc3QsIGNvbnN0IENTU1BhcnNlclRva2VuKiBsYXN0
KSBjb25zdDsKKworICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0ID09IG1f
bGFzdDsgfQorICAgIGNvbnN0IENTU1BhcnNlclRva2VuKiBlbmQoKSBjb25zdCB7IHJldHVybiBt
X2xhc3Q7IH0KKworICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiBwZWVrKHVuc2lnbmVkIG9mZnNl
dCA9IDApIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9maXJzdCArIG9mZnNldCA+PSBtX2xh
c3QpCisgICAgICAgICAgICByZXR1cm4gZW9mVG9rZW4oKTsKKyAgICAgICAgcmV0dXJuICoobV9m
aXJzdCArIG9mZnNldCk7CisgICAgfQorCisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIGNvbnN1
bWUoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZmlyc3QgPT0gbV9sYXN0KQorICAgICAgICAgICAg
cmV0dXJuIGVvZlRva2VuKCk7CisgICAgICAgIHJldHVybiAqbV9maXJzdCsrOworICAgIH0KKwor
ICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiBjb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpCisg
ICAgeworICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgcmVzdWx0ID0gY29uc3VtZSgpOwor
ICAgICAgICBjb25zdW1lV2hpdGVzcGFjZSgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKworICAgIC8vIFRoZSByZXR1cm5lZCByYW5nZSBkb2Vzbid0IGluY2x1ZGUgdGhlIGJyYWNr
ZXRzCisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBjb25zdW1lQmxvY2soKTsKKworICAgIHZvaWQg
Y29uc3VtZUNvbXBvbmVudFZhbHVlKCk7CisKKyAgICB2b2lkIGNvbnN1bWVXaGl0ZXNwYWNlKCkK
KyAgICB7CisgICAgICAgIHdoaWxlIChwZWVrKCkudHlwZSgpID09IFdoaXRlc3BhY2VUb2tlbikK
KyAgICAgICAgICAgICsrbV9maXJzdDsKKyAgICB9CisKKyAgICBTdHJpbmcgc2VyaWFsaXplKCkg
Y29uc3Q7CisKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiogYmVnaW4oKSBjb25zdCB7IHJldHVy
biBtX2ZpcnN0OyB9CisKKyAgICBzdGF0aWMgQ1NTUGFyc2VyVG9rZW4mIGVvZlRva2VuKCk7CisK
K3ByaXZhdGU6CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZShjb25zdCBDU1NQYXJzZXJUb2tlbiog
Zmlyc3QsIGNvbnN0IENTU1BhcnNlclRva2VuKiBsYXN0KQorICAgIDogbV9maXJzdChmaXJzdCkK
KyAgICAsIG1fbGFzdChsYXN0KQorICAgIHsgfQorCisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4q
IG1fZmlyc3Q7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4qIG1fbGFzdDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENTU1BhcnNlclRva2VuUmFuZ2VfaApJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBh
cnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NzgzIEBACisvLyBDb3B5cmlnaHQg
MjAxNSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlv
bi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8g
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
Ky8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VyLmgiCisKKyNpbmNsdWRlICJTdHlsZVByb3BlcnR5
U2hvcnRoYW5kLmgiCisjaW5jbHVkZSAiQ1NTQmFzaWNTaGFwZXMuaCIKKyNpbmNsdWRlICJDU1NC
b3JkZXJJbWFnZS5oIgorI2luY2x1ZGUgIkNTU0NvbnRlbnREaXN0cmlidXRpb25WYWx1ZS5oIgor
I2luY2x1ZGUgIkNvdW50ZXIuaCIKKyNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCisv
LyBGSVhNRS1ORVdQQVJTRVIgI2luY2x1ZGUgIkNTU0N1c3RvbUlkZW50VmFsdWUuaCIKKyNpbmNs
dWRlICJDU1NGb250RmFjZVNyY1ZhbHVlLmgiCisvLyBGSVhNRS1ORVdQQVJTRVIgI2luY2x1ZGUg
IkNTU0ZvbnRGYW1pbHlWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0ZvbnRGZWF0dXJlVmFsdWUuaCIK
KyNpbmNsdWRlICJDU1NGdW5jdGlvblZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTR3JpZEF1dG9SZXBl
YXRWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0dyaWRMaW5lTmFtZXNWYWx1ZS5oIgorI2luY2x1ZGUg
IkNTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NJbmhlcml0ZWRWYWx1
ZS5oIgorI2luY2x1ZGUgIkNTU0luaXRpYWxWYWx1ZS5oIgorLy8gRklYTUUtTkVXUEFSU0VSICNp
bmNsdWRlICJDU1NQYXRoVmFsdWUuaCIKKy8vIEZJWE1FLU5FV1BBUlNFUiAjaW5jbHVkZSAiQ1NT
UGVuZGluZ1N1YnN0aXR1dGlvblZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVN
YXBwaW5ncy5oIgorLy8gRklYTUUtTkVXUEFSU0VSICNpbmNsdWRlICJDU1NRdWFkVmFsdWUuaCIK
KyNpbmNsdWRlICJDU1NSZWZsZWN0VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NTaGFkb3dWYWx1ZS5o
IgorLy8gRklYTUUtTkVXUEFSU0VSICNpbmNsdWRlICJDU1NTdHJpbmdWYWx1ZS5oIgorI2luY2x1
ZGUgIkNTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCIKKy8vIEZJWE1FLU5FV1BBUlNFUiAjaW5jbHVk
ZSAiQ1NTVVJJVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NVbmljb2RlUmFuZ2VWYWx1ZS5oIgorI2lu
Y2x1ZGUgIkNTU1Vuc2V0VmFsdWUuaCIKKy8vIEZJWE1FLU5FV1BBUlNFUiAjaW5jbHVkZSAiQ1NT
VmFsdWVQYWlyLmgiCisvLyBGSVhNRS1ORVdQQVJTRVIgI2luY2x1ZGUgIkNTU1ZhcmlhYmxlUmVm
ZXJlbmNlVmFsdWUuaCIKKyNpbmNsdWRlICJGb250RmFjZS5oIgorI2luY2x1ZGUgIkhhc2hUb29s
cy5oIgorI2luY2x1ZGUgIkNTU1BhcnNlckZhc3RQYXRocy5oIgorI2luY2x1ZGUgIkNTU1BhcnNl
cklkaW9tcy5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oIgorLy8gRklY
TUUtTkVXUEFSU0VSICNpbmNsdWRlICJDU1NWYXJpYWJsZVBhcnNlci5oIgorI2luY2x1ZGUgIlJl
bmRlclRoZW1lLmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1
ZGUgIlNWR1BhdGhVdGlsaXRpZXMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CisjaW5jbHVkZSA8bWVtb3J5PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBi
b29sIGhhc1ByZWZpeChjb25zdCBjaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3Qg
Y2hhciogcHJlZml4KQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsr
aSkgeworICAgICAgICBpZiAoIXByZWZpeFtpXSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICBpZiAoc3RyaW5nW2ldICE9IHByZWZpeFtpXSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorICAgIAordGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgQ1NTUHJvcGVydHlJRCBjc3NQcm9wZXJ0eUlEKGNv
bnN0IENoYXJhY3RlclR5cGUqIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAg
IGNoYXIgYnVmZmVyW21heENTU1Byb3BlcnR5TmFtZUxlbmd0aCArIDEgKyAxXTsgLy8gMSB0byB0
dXJuICJhcHBsZSIvImtodG1sIiBpbnRvICJ3ZWJraXQiLCAxIGZvciBudWxsIGNoYXJhY3Rlcgor
ICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0gbGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgQ2hhcmFjdGVyVHlwZSBjID0gcHJvcGVydHlOYW1lW2ldOworICAgICAgICBpZiAoYyA9PSAw
IHx8IGMgPj0gMHg3RikKKyAgICAgICAgICAgIHJldHVybiBDU1NQcm9wZXJ0eUludmFsaWQ7IC8v
IGlsbGVnYWwgY2hhcmFjdGVyCisgICAgICAgIGJ1ZmZlcltpXSA9IHRvQVNDSUlMb3dlcihjKTsK
KyAgICB9CisgICAgYnVmZmVyW2xlbmd0aF0gPSAnXDAnOworICAgIAorICAgIGNvbnN0IGNoYXIq
IG5hbWUgPSBidWZmZXI7CisgICAgaWYgKGJ1ZmZlclswXSA9PSAnLScpIHsKKyNpZiBFTkFCTEUo
TEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpCisgICAgICAgIC8vIElmIHRoZSBwcmVmaXggaXMg
LWFwcGxlLSBvciAta2h0bWwtLCBjaGFuZ2UgaXQgdG8gLXdlYmtpdC0uCisgICAgICAgIC8vIFRo
aXMgbWFrZXMgdGhlIHN0cmluZyBvbmUgY2hhcmFjdGVyIGxvbmdlci4KKyAgICAgICAgaWYgKFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGVnYWN5Q1NTVmVuZG9yUHJl
Zml4ZXNFbmFibGVkKCkKKyAgICAgICAgICAgICYmIChoYXNQcmVmaXgoYnVmZmVyLCBsZW5ndGgs
ICItYXBwbGUtIikgfHwgaGFzUHJlZml4KGJ1ZmZlciwgbGVuZ3RoLCAiLWtodG1sLSIpKSkgewor
ICAgICAgICAgICAgbWVtbW92ZShidWZmZXIgKyA3LCBidWZmZXIgKyA2LCBsZW5ndGggKyAxIC0g
Nik7CisgICAgICAgICAgICBtZW1jcHkoYnVmZmVyLCAiLXdlYmtpdCIsIDcpOworICAgICAgICAg
ICAgKytsZW5ndGg7CisgICAgICAgIH0KKyNlbmRpZgorI2lmIFBMQVRGT1JNKElPUykKKyAgICAg
ICAgY3NzUHJvcGVydHlOYW1lSU9TQWxpYXNpbmcoYnVmZmVyLCBuYW1lLCBsZW5ndGgpOworI2Vu
ZGlmCisgICAgfQorICAgIAorICAgIGNvbnN0IFByb3BlcnR5KiBoYXNoVGFibGVFbnRyeSA9IGZp
bmRQcm9wZXJ0eShuYW1lLCBsZW5ndGgpOworICAgIHJldHVybiBoYXNoVGFibGVFbnRyeSA/IHN0
YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGhhc2hUYWJsZUVudHJ5LT5pZCkgOiBDU1NQcm9wZXJ0
eUludmFsaWQ7Cit9CisKKyNpZiBQTEFURk9STShJT1MpCit2b2lkIGNzc1Byb3BlcnR5TmFtZUlP
U0FsaWFzaW5nKGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgY29uc3QgY2hhciomIHByb3BlcnR5
TmFtZUFsaWFzLCB1bnNpZ25lZCYgbmV3TGVuZ3RoKQoreworICAgIGlmICghc3RyY21wKHByb3Bl
cnR5TmFtZSwgIi13ZWJraXQtaHlwaGVuYXRlLWxvY2FsZSIpKSB7CisgICAgICAgIC8vIFdvcmtl
ZCBpbiBpT1MgNC4yLgorICAgICAgICBzdGF0aWMgY29uc3QgY2hhciB3ZWJraXRMb2NhbGVbXSA9
ICItd2Via2l0LWxvY2FsZSI7CisgICAgICAgIHByb3BlcnR5TmFtZUFsaWFzID0gd2Via2l0TG9j
YWxlOworICAgICAgICBuZXdMZW5ndGggPSBzdHJsZW4od2Via2l0TG9jYWxlKTsKKyAgICB9Cit9
CisjZW5kaWYKKworc3RhdGljIGJvb2wgaXNBcHBsZUxlZ2FjeUNzc1ZhbHVlS2V5d29yZChjb25z
dCBjaGFyKiB2YWx1ZUtleXdvcmQsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBzdGF0aWMgY29u
c3QgY2hhciBhcHBsZVByZWZpeFtdID0gIi1hcHBsZS0iOworICAgIHN0YXRpYyBjb25zdCBjaGFy
IGFwcGxlU3lzdGVtUHJlZml4W10gPSAiLWFwcGxlLXN5c3RlbSI7CisgICAgc3RhdGljIGNvbnN0
IGNoYXIqIGFwcGxlV2lyZWxlc3NQbGF5YmFja1RhcmdldEFjdGl2ZSA9IGdldFZhbHVlTmFtZShD
U1NWYWx1ZUFwcGxlV2lyZWxlc3NQbGF5YmFja1RhcmdldEFjdGl2ZSk7CisgICAgCisgICAgcmV0
dXJuIGhhc1ByZWZpeCh2YWx1ZUtleXdvcmQsIGxlbmd0aCwgYXBwbGVQcmVmaXgpCisgICAgJiYg
IWhhc1ByZWZpeCh2YWx1ZUtleXdvcmQsIGxlbmd0aCwgYXBwbGVTeXN0ZW1QcmVmaXgpCisgICAg
JiYgIVdURjo6ZXF1YWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHZhbHVlS2V5d29y
ZCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihhcHBsZVdpcmVsZXNzUGxheWJhY2tU
YXJnZXRBY3RpdmUpLCBsZW5ndGgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4KK3N0YXRpYyBDU1NWYWx1ZUlEIGNzc1ZhbHVlS2V5d29yZElEKGNvbnN0IENoYXJhY3Rl
clR5cGUqIHZhbHVlS2V5d29yZCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGNoYXIgYnVmZmVy
W21heENTU1ZhbHVlS2V5d29yZExlbmd0aCArIDEgKyAxXTsgLy8gMSB0byB0dXJuICJhcHBsZSIv
ImtodG1sIiBpbnRvICJ3ZWJraXQiLCAxIGZvciBudWxsIGNoYXJhY3RlcgorICAgIAorICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgIT0gbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgQ2hhcmFjdGVy
VHlwZSBjID0gdmFsdWVLZXl3b3JkW2ldOworICAgICAgICBpZiAoYyA9PSAwIHx8IGMgPj0gMHg3
RikKKyAgICAgICAgICAgIHJldHVybiBDU1NWYWx1ZUludmFsaWQ7IC8vIGlsbGVnYWwga2V5d29y
ZC4KKyAgICAgICAgYnVmZmVyW2ldID0gV1RGOjp0b0FTQ0lJTG93ZXIoYyk7CisgICAgfQorICAg
IGJ1ZmZlcltsZW5ndGhdID0gJ1wwJzsKKyAgICAKKyAgICBpZiAoYnVmZmVyWzBdID09ICctJykg
eworICAgICAgICAvLyBJZiB0aGUgcHJlZml4IGlzIC1hcHBsZS0gb3IgLWtodG1sLSwgY2hhbmdl
IGl0IHRvIC13ZWJraXQtLgorICAgICAgICAvLyBUaGlzIG1ha2VzIHRoZSBzdHJpbmcgb25lIGNo
YXJhY3RlciBsb25nZXIuCisgICAgICAgIC8vIE9uIGlPUyB3ZSBkb24ndCB3YW50IHRvIGNoYW5n
ZSB2YWx1ZXMgc3RhcnRpbmcgd2l0aCAtYXBwbGUtc3lzdGVtIHRvIC13ZWJraXQtc3lzdGVtLgor
ICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgbWFuZ2xpbmcgd2l0aG91dCBicmVha2luZyB0
aGUgd2ViLgorICAgICAgICBpZiAoaXNBcHBsZUxlZ2FjeUNzc1ZhbHVlS2V5d29yZChidWZmZXIs
IGxlbmd0aCkgfHwgaGFzUHJlZml4KGJ1ZmZlciwgbGVuZ3RoLCAiLWtodG1sLSIpKSB7CisgICAg
ICAgICAgICBtZW1tb3ZlKGJ1ZmZlciArIDcsIGJ1ZmZlciArIDYsIGxlbmd0aCArIDEgLSA2KTsK
KyAgICAgICAgICAgIG1lbWNweShidWZmZXIsICItd2Via2l0IiwgNyk7CisgICAgICAgICAgICAr
K2xlbmd0aDsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBjb25zdCBWYWx1ZSogaGFzaFRh
YmxlRW50cnkgPSBmaW5kVmFsdWUoYnVmZmVyLCBsZW5ndGgpOworICAgIHJldHVybiBoYXNoVGFi
bGVFbnRyeSA/IHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KGhhc2hUYWJsZUVudHJ5LT5pZCkgOiBD
U1NWYWx1ZUludmFsaWQ7Cit9CisKK0NTU1ZhbHVlSUQgY3NzVmFsdWVLZXl3b3JkSUQoU3RyaW5n
VmlldyBzdHJpbmcpCit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwor
ICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gQ1NTVmFsdWVJbnZhbGlkOworICAgIGlm
IChsZW5ndGggPiBtYXhDU1NWYWx1ZUtleXdvcmRMZW5ndGgpCisgICAgICAgIHJldHVybiBDU1NW
YWx1ZUludmFsaWQ7CisgICAgCisgICAgcmV0dXJuIHN0cmluZy5pczhCaXQoKSA/IGNzc1ZhbHVl
S2V5d29yZElEKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpIDogY3NzVmFsdWVLZXl3b3Jk
SUQoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgpOworfQorCitDU1NQcm9wZXJ0eUlEIHVu
cmVzb2x2ZWRDU1NQcm9wZXJ0eUlEKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIHVuc2lnbmVk
IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICAKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAg
ICAgcmV0dXJuIENTU1Byb3BlcnR5SW52YWxpZDsKKyAgICBpZiAobGVuZ3RoID4gbWF4Q1NTUHJv
cGVydHlOYW1lTGVuZ3RoKQorICAgICAgICByZXR1cm4gQ1NTUHJvcGVydHlJbnZhbGlkOworICAg
IAorICAgIHJldHVybiBzdHJpbmcuaXM4Qml0KCkgPyBjc3NQcm9wZXJ0eUlEKHN0cmluZy5jaGFy
YWN0ZXJzOCgpLCBsZW5ndGgpIDogY3NzUHJvcGVydHlJRChzdHJpbmcuY2hhcmFjdGVyczE2KCks
IGxlbmd0aCk7Cit9CisgICAgCisvLyBGSVhNRS1ORVdQQVJTRVIKKy8vIENvbW1lbnQgb3V0IHBy
b3BlcnR5IHBhcnNpbmcgZm9yIG5vdy4KKy8qCit1c2luZyBuYW1lc3BhY2UgQ1NTUHJvcGVydHlQ
YXJzZXJIZWxwZXJzOworCisKK0NTU1Byb3BlcnR5UGFyc2VyOjpDU1NQcm9wZXJ0eVBhcnNlcihj
b25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwKKyAgICBjb25zdCBDU1NQYXJzZXJDb250
ZXh0JiBjb250ZXh0LCBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4qIHBhcnNlZFByb3BlcnRpZXMp
CisgICAgOiBtX3JhbmdlKHJhbmdlKQorICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBt
X3BhcnNlZFByb3BlcnRpZXMocGFyc2VkUHJvcGVydGllcykKK3sKKyAgICBtX3JhbmdlLmNvbnN1
bWVXaGl0ZXNwYWNlKCk7Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlQYXJzZXI6OmFkZFByb3BlcnR5
KENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1Byb3BlcnR5SUQgY3VycmVudFNob3J0aGFuZCwg
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlLCBib29sIGltcG9ydGFudCwgYm9vbCBpbXBsaWNpdCkKK3sK
KyAgICBBU1NFUlQoIWlzUHJvcGVydHlBbGlhcyhwcm9wZXJ0eSkpOworCisgICAgaW50IHNob3J0
aGFuZEluZGV4ID0gMDsKKyAgICBib29sIHNldEZyb21TaG9ydGhhbmQgPSBmYWxzZTsKKworICAg
IGlmIChjdXJyZW50U2hvcnRoYW5kKSB7CisgICAgICAgIFZlY3RvcjxTdHlsZVByb3BlcnR5U2hv
cnRoYW5kLCA0PiBzaG9ydGhhbmRzOworICAgICAgICBnZXRNYXRjaGluZ1Nob3J0aGFuZHNGb3JM
b25naGFuZChwcm9wZXJ0eSwgJnNob3J0aGFuZHMpOworICAgICAgICBzZXRGcm9tU2hvcnRoYW5k
ID0gdHJ1ZTsKKyAgICAgICAgaWYgKHNob3J0aGFuZHMuc2l6ZSgpID4gMSkKKyAgICAgICAgICAg
IHNob3J0aGFuZEluZGV4ID0gaW5kZXhPZlNob3J0aGFuZEZvckxvbmdoYW5kKGN1cnJlbnRTaG9y
dGhhbmQsIHNob3J0aGFuZHMpOworICAgIH0KKworICAgIG1fcGFyc2VkUHJvcGVydGllcy0+YXBw
ZW5kKENTU1Byb3BlcnR5KHByb3BlcnR5LCB2YWx1ZSwgaW1wb3J0YW50LCBzZXRGcm9tU2hvcnRo
YW5kLCBzaG9ydGhhbmRJbmRleCwgaW1wbGljaXQpKTsKK30KKwordm9pZCBDU1NQcm9wZXJ0eVBh
cnNlcjo6YWRkRXhwYW5kZWRQcm9wZXJ0eUZvclZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHks
IGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpCit7CisgICAgY29uc3QgU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kID0gc2hvcnRoYW5kRm9yUHJvcGVydHkocHJv
cGVydHkpOworICAgIHVuc2lnbmVkIHNob3J0aGFuZExlbmd0aCA9IHNob3J0aGFuZC5sZW5ndGgo
KTsKKyAgICBBU1NFUlQoc2hvcnRoYW5kTGVuZ3RoKTsKKyAgICBjb25zdCBDU1NQcm9wZXJ0eUlE
KiBsb25naGFuZHMgPSBzaG9ydGhhbmQucHJvcGVydGllcygpOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBzaG9ydGhhbmRMZW5ndGg7ICsraSkKKyAgICAgICAgYWRkUHJvcGVydHkobG9u
Z2hhbmRzW2ldLCBwcm9wZXJ0eSwgdmFsdWUsIGltcG9ydGFudCk7Cit9CisKK2Jvb2wgQ1NTUHJv
cGVydHlQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCB1bnJlc29sdmVkUHJvcGVydHks
IGJvb2wgaW1wb3J0YW50LAorICAgIGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBj
b25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LAorICAgIFZlY3RvcjxDU1NQcm9wZXJ0eSwg
MjU2PiYgcGFyc2VkUHJvcGVydGllcywgU3R5bGVSdWxlOjpUeXBlIHJ1bGVUeXBlKQoreworICAg
IGludCBwYXJzZWRQcm9wZXJ0aWVzU2l6ZSA9IHBhcnNlZFByb3BlcnRpZXMuc2l6ZSgpOworCisg
ICAgQ1NTUHJvcGVydHlQYXJzZXIgcGFyc2VyKHJhbmdlLCBjb250ZXh0LCAmcGFyc2VkUHJvcGVy
dGllcyk7CisgICAgQ1NTUHJvcGVydHlJRCByZXNvbHZlZFByb3BlcnR5ID0gcmVzb2x2ZUNTU1By
b3BlcnR5SUQodW5yZXNvbHZlZFByb3BlcnR5KTsKKyAgICBib29sIHBhcnNlU3VjY2VzczsKKwor
ICAgIGlmIChydWxlVHlwZSA9PSBTdHlsZVJ1bGU6OlZpZXdwb3J0KSB7CisgICAgICAgIHBhcnNl
U3VjY2VzcyA9IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NWaWV3cG9ydEVuYWJsZWQoKSB8
fCBpc1VBU2hlZXRCZWhhdmlvcihjb250ZXh0Lm1vZGUoKSkpCisgICAgICAgICAgICAmJiBwYXJz
ZXIucGFyc2VWaWV3cG9ydERlc2NyaXB0b3IocmVzb2x2ZWRQcm9wZXJ0eSwgaW1wb3J0YW50KTsK
KyAgICB9IGVsc2UgaWYgKHJ1bGVUeXBlID09IFN0eWxlUnVsZTo6Rm9udEZhY2UpIHsKKyAgICAg
ICAgcGFyc2VTdWNjZXNzID0gcGFyc2VyLnBhcnNlRm9udEZhY2VEZXNjcmlwdG9yKHJlc29sdmVk
UHJvcGVydHkpOworICAgIH0gZWxzZSB7CisgICAgICAgIHBhcnNlU3VjY2VzcyA9IHBhcnNlci5w
YXJzZVZhbHVlU3RhcnQodW5yZXNvbHZlZFByb3BlcnR5LCBpbXBvcnRhbnQpOworICAgIH0KKwor
ICAgIC8vIFRoaXMgZG9lc24ndCBjb3VudCBVQSBzdHlsZSBzaGVldHMKKyAgICBpZiAocGFyc2VT
dWNjZXNzICYmIGNvbnRleHQudXNlQ291bnRlcigpKQorICAgICAgICBjb250ZXh0LnVzZUNvdW50
ZXIoKS0+Y291bnQoY29udGV4dC5tb2RlKCksIHVucmVzb2x2ZWRQcm9wZXJ0eSk7CisKKyAgICBp
ZiAoIXBhcnNlU3VjY2VzcykKKyAgICAgICAgcGFyc2VkUHJvcGVydGllcy5zaHJpbmsocGFyc2Vk
UHJvcGVydGllc1NpemUpOworCisgICAgcmV0dXJuIHBhcnNlU3VjY2VzczsKK30KKworY29uc3Qg
Q1NTVmFsdWUqIENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNpbmdsZVZhbHVlKAorICAgIENTU1By
b3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25z
dCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIENTU1Byb3BlcnR5UGFyc2VyIHBh
cnNlcihyYW5nZSwgY29udGV4dCwgbnVsbHB0cik7CisgICAgY29uc3QgQ1NTVmFsdWUqIHZhbHVl
ID0gcGFyc2VyLnBhcnNlU2luZ2xlVmFsdWUocHJvcGVydHkpOworICAgIGlmICghdmFsdWUgfHwg
IXBhcnNlci5tX3JhbmdlLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiB2YWx1ZTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VWYWx1ZVN0YXJ0
KENTU1Byb3BlcnR5SUQgdW5yZXNvbHZlZFByb3BlcnR5LCBib29sIGltcG9ydGFudCkKK3sKKyAg
ICBpZiAoY29uc3VtZUNTU1dpZGVLZXl3b3JkKHVucmVzb2x2ZWRQcm9wZXJ0eSwgaW1wb3J0YW50
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIG9yaWdp
bmFsUmFuZ2UgPSBtX3JhbmdlOworICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCA9IHJlc29s
dmVDU1NQcm9wZXJ0eUlEKHVucmVzb2x2ZWRQcm9wZXJ0eSk7CisgICAgYm9vbCBpc1Nob3J0aGFu
ZCA9IGlzU2hvcnRoYW5kUHJvcGVydHkocHJvcGVydHlJZCk7CisKKyAgICBpZiAoaXNTaG9ydGhh
bmQpIHsKKyAgICAgICAgLy8gVmFyaWFibGUgcmVmZXJlbmNlcyB3aWxsIGZhaWwgdG8gcGFyc2Ug
aGVyZSBhbmQgd2lsbCBmYWxsIG91dCB0byB0aGUgdmFyaWFibGUgcmVmIHBhcnNlciBiZWxvdy4K
KyAgICAgICAgaWYgKHBhcnNlU2hvcnRoYW5kKHVucmVzb2x2ZWRQcm9wZXJ0eSwgaW1wb3J0YW50
KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChj
b25zdCBDU1NWYWx1ZSogcGFyc2VkVmFsdWUgPSBwYXJzZVNpbmdsZVZhbHVlKHVucmVzb2x2ZWRQ
cm9wZXJ0eSkpIHsKKyAgICAgICAgICAgIGlmIChtX3JhbmdlLmF0RW5kKCkpIHsKKyAgICAgICAg
ICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0eUlkLCBDU1NQcm9wZXJ0eUludmFsaWQsICpwYXJz
ZWRWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpjc3NWYXJpYWJsZXNFbmFibGVkKCkgJiYgQ1NTVmFyaWFibGVQYXJzZXI6OmNvbnRhaW5z
VmFsaWRWYXJpYWJsZVJlZmVyZW5jZXMob3JpZ2luYWxSYW5nZSkpIHsKKyAgICAgICAgQ1NTVmFy
aWFibGVSZWZlcmVuY2VWYWx1ZSogdmFyaWFibGUgPSBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVl
OjpjcmVhdGUoQ1NTVmFyaWFibGVEYXRhOjpjcmVhdGUob3JpZ2luYWxSYW5nZSkpOworCisgICAg
ICAgIGlmIChpc1Nob3J0aGFuZCkgeworICAgICAgICAgICAgY29uc3QgQ1NTUGVuZGluZ1N1YnN0
aXR1dGlvblZhbHVlJiBwZW5kaW5nVmFsdWUgPSAqQ1NTUGVuZGluZ1N1YnN0aXR1dGlvblZhbHVl
OjpjcmVhdGUocHJvcGVydHlJZCwgdmFyaWFibGUpOworICAgICAgICAgICAgYWRkRXhwYW5kZWRQ
cm9wZXJ0eUZvclZhbHVlKHByb3BlcnR5SWQsIHBlbmRpbmdWYWx1ZSwgaW1wb3J0YW50KTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnR5SWQsIENTU1By
b3BlcnR5SW52YWxpZCwgKnZhcmlhYmxlLCBpbXBvcnRhbnQpOworICAgICAgICB9CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKyAKK2Jvb2wgQ1NT
UHJvcGVydHlQYXJzZXI6OmNvbnN1bWVDU1NXaWRlS2V5d29yZChDU1NQcm9wZXJ0eUlEIHVucmVz
b2x2ZWRQcm9wZXJ0eSwgYm9vbCBpbXBvcnRhbnQpCit7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5n
ZSByYW5nZUNvcHkgPSBtX3JhbmdlOworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZUNvcHkuY29u
c3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpOworICAgIGlmICghcmFuZ2VDb3B5LmF0RW5k
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG51bGxw
dHI7CisgICAgaWYgKGlkID09IENTU1ZhbHVlSW5pdGlhbCkKKyAgICAgICAgdmFsdWUgPSBDU1NJ
bml0aWFsVmFsdWU6OmNyZWF0ZSgpOworICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlSW5oZXJp
dCkKKyAgICAgICAgdmFsdWUgPSBDU1NJbmhlcml0ZWRWYWx1ZTo6Y3JlYXRlKCk7CisgICAgZWxz
ZSBpZiAoaWQgPT0gQ1NTVmFsdWVVbnNldCkKKyAgICAgICAgdmFsdWUgPSBDU1NVbnNldFZhbHVl
OjpjcmVhdGUoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENTU1By
b3BlcnR5SUQgcHJvcGVydHkgPSByZXNvbHZlQ1NTUHJvcGVydHlJRCh1bnJlc29sdmVkUHJvcGVy
dHkpOworICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCA9IHNob3J0
aGFuZEZvclByb3BlcnR5KHByb3BlcnR5KTsKKyAgICBpZiAoIXNob3J0aGFuZC5sZW5ndGgoKSkg
eworICAgICAgICBpZiAoQ1NTUHJvcGVydHlNZXRhZGF0YTo6aXNEZXNjcmlwdG9yT25seSh1bnJl
c29sdmVkUHJvcGVydHkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhZGRQ
cm9wZXJ0eShwcm9wZXJ0eSwgQ1NTUHJvcGVydHlJbnZhbGlkLCAqdmFsdWUsIGltcG9ydGFudCk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgYWRkRXhwYW5kZWRQcm9wZXJ0eUZvclZhbHVlKHByb3Bl
cnR5LCAqdmFsdWUsIGltcG9ydGFudCk7CisgICAgfQorICAgIG1fcmFuZ2UgPSByYW5nZUNvcHk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZUxpc3QqIGNvbnN1bWVUcmFu
c2Zvcm1PcmlnaW4oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3Nz
UGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKK3sKKyAgICBDU1NWYWx1ZSogcmVz
dWx0WCA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIHJlc3VsdFkgPSBudWxscHRyOworICAgIGlm
IChjb25zdW1lT25lT3JUd29WYWx1ZWRQb3NpdGlvbihyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5p
dGxlc3MsIHJlc3VsdFgsIHJlc3VsdFkpKSB7CisgICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgbGlzdC0+YXBw
ZW5kKCpyZXN1bHRYKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKCpyZXN1bHRZKTsKKyAgICAgICAg
Q1NTVmFsdWUqIHJlc3VsdFogPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBW
YWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgaWYgKCFyZXN1bHRaKQorICAgICAgICAgICAgcmVzdWx0
WiA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlOjpQaXhlbHMpOworICAgICAgICBsaXN0LT5hcHBlbmQoKnJlc3VsdFopOworICAgICAgICBy
ZXR1cm4gbGlzdDsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKKy8vIE1ldGhvZHMg
Zm9yIGNvbnN1bWluZyBub24tc2hvcnRoYW5kIHByb3BlcnRpZXMgc3RhcnRzIGhlcmUuCitzdGF0
aWMgQ1NTVmFsdWUqIGNvbnN1bWVXaWxsQ2hhbmdlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
KQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAg
IHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZXMg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgLy8gRXZlcnkgY29t
bWEtc2VwYXJhdGVkIGxpc3Qgb2YgaWRlbnRpZmllcnMgaXMgYSB2YWxpZCB3aWxsLWNoYW5nZSB2
YWx1ZSwKKyAgICAvLyB1bmxlc3MgdGhlIGxpc3QgaW5jbHVkZXMgYW4gZXhwbGljaXRseSBkaXNh
bGxvd2VkIGlkZW50aWZpZXIuCisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKHJhbmdl
LnBlZWsoKS50eXBlKCkgIT0gSWRlbnRUb2tlbikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICBDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0eSA9IHVucmVzb2x2ZWRD
U1NQcm9wZXJ0eUlEKHJhbmdlLnBlZWsoKS52YWx1ZSgpKTsKKyAgICAgICAgaWYgKHVucmVzb2x2
ZWRQcm9wZXJ0eSkgeworICAgICAgICAgICAgQVNTRVJUKENTU1Byb3BlcnR5TWV0YWRhdGE6Omlz
RW5hYmxlZFByb3BlcnR5KHVucmVzb2x2ZWRQcm9wZXJ0eSkpOworICAgICAgICAgICAgLy8gTm93
ICJhbGwiIGlzIHVzZWQgYnkgYm90aCBDU1NWYWx1ZSBhbmQgQ1NTUHJvcGVydHlWYWx1ZS4KKyAg
ICAgICAgICAgIC8vIE5lZWQgdG8gcmV0dXJuIG51bGxwdHIgd2hlbiBjdXJyZW50VmFsdWUgaXMg
Q1NTUHJvcGVydHlBbGwuCisgICAgICAgICAgICBpZiAodW5yZXNvbHZlZFByb3BlcnR5ID09IENT
U1Byb3BlcnR5V2lsbENoYW5nZSB8fCB1bnJlc29sdmVkUHJvcGVydHkgPT0gQ1NTUHJvcGVydHlB
bGwpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICB2YWx1ZXMt
PmFwcGVuZCgqQ1NTQ3VzdG9tSWRlbnRWYWx1ZTo6Y3JlYXRlKHVucmVzb2x2ZWRQcm9wZXJ0eSkp
OworICAgICAgICAgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAocmFuZ2UucGVlaygpLmlkKCkpIHsKKyAg
ICAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb25lOgorICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUFs
bDoKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgorICAgICAgICAgICAgY2FzZSBDU1NW
YWx1ZURlZmF1bHQ6CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlSW5pdGlhbDoKKyAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWVJbmhlcml0OgorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUNvbnRlbnRzOgorICAgICAgICAgICAgY2FzZSBD
U1NWYWx1ZVNjcm9sbFBvc2l0aW9uOgorICAgICAgICAgICAgICAgIHZhbHVlcy0+YXBwZW5kKCpj
b25zdW1lSWRlbnQocmFuZ2UpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3Bh
Y2UoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIGlmIChyYW5nZS5hdEVuZCgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gdmFsdWVzOworfQorCitzdGF0
aWMgQ1NTRm9udEZlYXR1cmVWYWx1ZSogY29uc3VtZUZvbnRGZWF0dXJlVGFnKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlKQoreworICAgIC8vIEZlYXR1cmUgdGFnIG5hbWUgY29uc2lzdHMgb2Yg
NC1sZXR0ZXIgY2hhcmFjdGVycy4KKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdGFnTmFtZUxl
bmd0aCA9IDQ7CisKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5jb25z
dW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgIC8vIEZlYXR1cmUgdGFnIG5hbWUgY29tZXMg
Zmlyc3QKKyAgICBpZiAodG9rZW4udHlwZSgpICE9IFN0cmluZ1Rva2VuKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBpZiAodG9rZW4udmFsdWUoKS5sZW5ndGgoKSAhPSB0YWdOYW1lTGVu
Z3RoKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBBdG9taWNTdHJpbmcgdGFnID0gdG9r
ZW4udmFsdWUoKS50b0F0b21pY1N0cmluZygpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0YWdOYW1lTGVuZ3RoOyArK2kpIHsKKyAgICAgICAgLy8gTGltaXRzIHRoZSByYW5nZSBvZiBj
aGFyYWN0ZXJzIHRvIDB4MjAtMHg3RSwgZm9sbG93aW5nIHRoZSB0YWcgbmFtZSBydWxlcyBkZWZp
ZW5kIGluIHRoZSBPcGVuVHlwZSBzcGVjaWZpY2F0aW9uLgorICAgICAgICBVQ2hhciBjaGFyYWN0
ZXIgPSB0YWdbaV07CisgICAgICAgIGlmIChjaGFyYWN0ZXIgPCAweDIwIHx8IGNoYXJhY3RlciA+
IDB4N0UpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpbnQgdGFn
VmFsdWUgPSAxOworICAgIC8vIEZlYXR1cmUgdGFnIHZhbHVlcyBjb3VsZCBmb2xsb3c6IDxpbnRl
Z2VyPiB8IG9uIHwgb2ZmCisgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gTnVtYmVyVG9r
ZW4gJiYgcmFuZ2UucGVlaygpLm51bWVyaWNWYWx1ZVR5cGUoKSA9PSBJbnRlZ2VyVmFsdWVUeXBl
ICYmIHJhbmdlLnBlZWsoKS5udW1lcmljVmFsdWUoKSA+PSAwKSB7CisgICAgICAgIHRhZ1ZhbHVl
ID0gY2xhbXBUbzxpbnQ+KHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJp
Y1ZhbHVlKCkpOworICAgICAgICBpZiAodGFnVmFsdWUgPCAwKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfSBlbHNlIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU9u
IHx8IHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlT2ZmKSB7CisgICAgICAgIHRhZ1ZhbHVl
ID0gcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpID09IENTU1ZhbHVlT247
CisgICAgfQorICAgIHJldHVybiBDU1NGb250RmVhdHVyZVZhbHVlOjpjcmVhdGUodGFnLCB0YWdW
YWx1ZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUZvbnRGZWF0dXJlU2V0dGluZ3Mo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgp
ID09IENTU1ZhbHVlTm9ybWFsKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsK
KyAgICBDU1NWYWx1ZUxpc3QqIHNldHRpbmdzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNl
cGFyYXRlZCgpOworICAgIGRvIHsKKyAgICAgICAgQ1NTRm9udEZlYXR1cmVWYWx1ZSogZm9udEZl
YXR1cmVWYWx1ZSA9IGNvbnN1bWVGb250RmVhdHVyZVRhZyhyYW5nZSk7CisgICAgICAgIGlmICgh
Zm9udEZlYXR1cmVWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBz
ZXR0aW5ncy0+YXBwZW5kKCpmb250RmVhdHVyZVZhbHVlKTsKKyAgICB9IHdoaWxlIChjb25zdW1l
Q29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSk7CisgICAgcmV0dXJuIHNldHRpbmdzOwor
fQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVQYWdlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAg
ICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lQ3VzdG9t
SWRlbnQocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVRdW90ZXMoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENT
U1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgQ1NT
VmFsdWVMaXN0KiB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7
CisgICAgd2hpbGUgKCFyYW5nZS5hdEVuZCgpKSB7CisgICAgICAgIENTU1N0cmluZ1ZhbHVlKiBw
YXJzZWRWYWx1ZSA9IGNvbnN1bWVTdHJpbmcocmFuZ2UpOworICAgICAgICBpZiAoIXBhcnNlZFZh
bHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHZhbHVlcy0+YXBwZW5k
KCpwYXJzZWRWYWx1ZSk7CisgICAgfQorICAgIGlmICh2YWx1ZXMtPmxlbmd0aCgpICYmIHZhbHVl
cy0+bGVuZ3RoKCkgJSAyID09IDApCisgICAgICAgIHJldHVybiB2YWx1ZXM7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVdlYmtpdEhpZ2hsaWdodChD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkg
PT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAg
ICByZXR1cm4gY29uc3VtZVN0cmluZyhyYW5nZSk7Cit9CisKK2NsYXNzIEZvbnRWYXJpYW50TGln
YXR1cmVzUGFyc2VyIHsKKyAgICBTVEFDS19BTExPQ0FURUQoKTsKKworcHVibGljOgorICAgIEZv
bnRWYXJpYW50TGlnYXR1cmVzUGFyc2VyKCkKKyAgICAgICAgOiBtX3Nhd0NvbW1vbkxpZ2F0dXJl
c1ZhbHVlKGZhbHNlKQorICAgICAgICAsIG1fc2F3RGlzY3JldGlvbmFyeUxpZ2F0dXJlc1ZhbHVl
KGZhbHNlKQorICAgICAgICAsIG1fc2F3SGlzdG9yaWNhbExpZ2F0dXJlc1ZhbHVlKGZhbHNlKQor
ICAgICAgICAsIG1fc2F3Q29udGV4dHVhbExpZ2F0dXJlc1ZhbHVlKGZhbHNlKQorICAgICAgICAs
IG1fcmVzdWx0KENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKSkKKyAgICB7Cisg
ICAgfQorCisgICAgZW51bSBjbGFzcyBQYXJzZVJlc3VsdCB7CisgICAgICAgIENvbnN1bWVkVmFs
dWUsCisgICAgICAgIERpc2FsbG93ZWRWYWx1ZSwKKyAgICAgICAgVW5rbm93blZhbHVlCisgICAg
fTsKKworICAgIFBhcnNlUmVzdWx0IGNvbnN1bWVMaWdhdHVyZShDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSkKKyAgICB7CisgICAgICAgIENTU1ZhbHVlSUQgdmFsdWVJRCA9IHJhbmdlLnBlZWso
KS5pZCgpOworICAgICAgICBzd2l0Y2ggKHZhbHVlSUQpIHsKKyAgICAgICAgY2FzZSBDU1NWYWx1
ZU5vQ29tbW9uTGlnYXR1cmVzOgorICAgICAgICBjYXNlIENTU1ZhbHVlQ29tbW9uTGlnYXR1cmVz
OgorICAgICAgICAgICAgaWYgKG1fc2F3Q29tbW9uTGlnYXR1cmVzVmFsdWUpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0OjpEaXNhbGxvd2VkVmFsdWU7CisgICAgICAgICAgICBt
X3Nhd0NvbW1vbkxpZ2F0dXJlc1ZhbHVlID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIENTU1ZhbHVlTm9EaXNjcmV0aW9uYXJ5TGlnYXR1cmVzOgorICAgICAgICBjYXNl
IENTU1ZhbHVlRGlzY3JldGlvbmFyeUxpZ2F0dXJlczoKKyAgICAgICAgICAgIGlmIChtX3Nhd0Rp
c2NyZXRpb25hcnlMaWdhdHVyZXNWYWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUGFyc2VS
ZXN1bHQ6OkRpc2FsbG93ZWRWYWx1ZTsKKyAgICAgICAgICAgIG1fc2F3RGlzY3JldGlvbmFyeUxp
Z2F0dXJlc1ZhbHVlID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENT
U1ZhbHVlTm9IaXN0b3JpY2FsTGlnYXR1cmVzOgorICAgICAgICBjYXNlIENTU1ZhbHVlSGlzdG9y
aWNhbExpZ2F0dXJlczoKKyAgICAgICAgICAgIGlmIChtX3Nhd0hpc3RvcmljYWxMaWdhdHVyZXNW
YWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHQ6OkRpc2FsbG93ZWRWYWx1
ZTsKKyAgICAgICAgICAgIG1fc2F3SGlzdG9yaWNhbExpZ2F0dXJlc1ZhbHVlID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1ZhbHVlTm9Db250ZXh0dWFsOgorICAg
ICAgICBjYXNlIENTU1ZhbHVlQ29udGV4dHVhbDoKKyAgICAgICAgICAgIGlmIChtX3Nhd0NvbnRl
eHR1YWxMaWdhdHVyZXNWYWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHQ6
OkRpc2FsbG93ZWRWYWx1ZTsKKyAgICAgICAgICAgIG1fc2F3Q29udGV4dHVhbExpZ2F0dXJlc1Zh
bHVlID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0OjpVbmtub3duVmFsdWU7CisgICAgICAgIH0KKyAgICAg
ICAgbV9yZXN1bHQtPmFwcGVuZCgqY29uc3VtZUlkZW50KHJhbmdlKSk7CisgICAgICAgIHJldHVy
biBQYXJzZVJlc3VsdDo6Q29uc3VtZWRWYWx1ZTsKKyAgICB9CisKKyAgICBDU1NWYWx1ZSogZmlu
YWxpemVWYWx1ZSgpCisgICAgeworICAgICAgICBpZiAoIW1fcmVzdWx0LT5sZW5ndGgoKSkKKyAg
ICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NW
YWx1ZU5vcm1hbCk7CisgICAgICAgIHJldHVybiBtX3Jlc3VsdC5yZWxlYXNlKCk7CisgICAgfQor
Citwcml2YXRlOgorICAgIGJvb2wgbV9zYXdDb21tb25MaWdhdHVyZXNWYWx1ZTsKKyAgICBib29s
IG1fc2F3RGlzY3JldGlvbmFyeUxpZ2F0dXJlc1ZhbHVlOworICAgIGJvb2wgbV9zYXdIaXN0b3Jp
Y2FsTGlnYXR1cmVzVmFsdWU7CisgICAgYm9vbCBtX3Nhd0NvbnRleHR1YWxMaWdhdHVyZXNWYWx1
ZTsKKyAgICBNZW1iZXI8Q1NTVmFsdWVMaXN0PiBtX3Jlc3VsdDsKK307CisKK3N0YXRpYyBDU1NW
YWx1ZSogY29uc3VtZUZvbnRWYXJpYW50TGlnYXR1cmVzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBy
YW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1l
SWRlbnQocmFuZ2UpOworCisgICAgRm9udFZhcmlhbnRMaWdhdHVyZXNQYXJzZXIgbGlnYXR1cmVz
UGFyc2VyOworICAgIGRvIHsKKyAgICAgICAgaWYgKGxpZ2F0dXJlc1BhcnNlci5jb25zdW1lTGln
YXR1cmUocmFuZ2UpICE9CisgICAgICAgICAgICBGb250VmFyaWFudExpZ2F0dXJlc1BhcnNlcjo6
UGFyc2VSZXN1bHQ6OkNvbnN1bWVkVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9IHdoaWxlICghcmFuZ2UuYXRFbmQoKSk7CisKKyAgICByZXR1cm4gbGlnYXR1cmVzUGFy
c2VyLmZpbmFsaXplVmFsdWUoKTsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25z
dW1lRm9udFZhcmlhbnRDYXBzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIHJl
dHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlU21hbGxDYXBzLCBDU1NW
YWx1ZUFsbFNtYWxsQ2FwcywKKyAgICAgICAgQ1NTVmFsdWVQZXRpdGVDYXBzLCBDU1NWYWx1ZUFs
bFBldGl0ZUNhcHMsCisgICAgICAgIENTU1ZhbHVlVW5pY2FzZSwgQ1NTVmFsdWVUaXRsaW5nQ2Fw
cz4ocmFuZ2UpOworfQorCitjbGFzcyBGb250VmFyaWFudE51bWVyaWNQYXJzZXIgeworICAgIFNU
QUNLX0FMTE9DQVRFRCgpOworCitwdWJsaWM6CisgICAgRm9udFZhcmlhbnROdW1lcmljUGFyc2Vy
KCkKKyAgICAgICAgOiBtX3Nhd051bWVyaWNGaWd1cmVWYWx1ZShmYWxzZSkKKyAgICAgICAgLCBt
X3Nhd051bWVyaWNTcGFjaW5nVmFsdWUoZmFsc2UpCisgICAgICAgICwgbV9zYXdOdW1lcmljRnJh
Y3Rpb25WYWx1ZShmYWxzZSkKKyAgICAgICAgLCBtX3Nhd09yZGluYWxWYWx1ZShmYWxzZSkKKyAg
ICAgICAgLCBtX3Nhd1NsYXNoZWRaZXJvVmFsdWUoZmFsc2UpCisgICAgICAgICwgbV9yZXN1bHQo
Q1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpKQorICAgIHsKKyAgICB9CisKKyAg
ICBlbnVtIGNsYXNzIFBhcnNlUmVzdWx0IHsKKyAgICAgICAgQ29uc3VtZWRWYWx1ZSwKKyAgICAg
ICAgRGlzYWxsb3dlZFZhbHVlLAorICAgICAgICBVbmtub3duVmFsdWUKKyAgICB9OworCisgICAg
UGFyc2VSZXN1bHQgY29uc3VtZU51bWVyaWMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCisg
ICAgeworICAgICAgICBDU1NWYWx1ZUlEIHZhbHVlSUQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAg
ICAgICAgc3dpdGNoICh2YWx1ZUlEKSB7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVMaW5pbmdOdW1z
OgorICAgICAgICBjYXNlIENTU1ZhbHVlT2xkc3R5bGVOdW1zOgorICAgICAgICAgICAgaWYgKG1f
c2F3TnVtZXJpY0ZpZ3VyZVZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBQYXJzZVJlc3Vs
dDo6RGlzYWxsb3dlZFZhbHVlOworICAgICAgICAgICAgbV9zYXdOdW1lcmljRmlndXJlVmFsdWUg
PSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVQcm9wb3J0
aW9uYWxOdW1zOgorICAgICAgICBjYXNlIENTU1ZhbHVlVGFidWxhck51bXM6CisgICAgICAgICAg
ICBpZiAobV9zYXdOdW1lcmljU3BhY2luZ1ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBQ
YXJzZVJlc3VsdDo6RGlzYWxsb3dlZFZhbHVlOworICAgICAgICAgICAgbV9zYXdOdW1lcmljU3Bh
Y2luZ1ZhbHVlID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1Zh
bHVlRGlhZ29uYWxGcmFjdGlvbnM6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVTdGFja2VkRnJhY3Rp
b25zOgorICAgICAgICAgICAgaWYgKG1fc2F3TnVtZXJpY0ZyYWN0aW9uVmFsdWUpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0OjpEaXNhbGxvd2VkVmFsdWU7CisgICAgICAgICAg
ICBtX3Nhd051bWVyaWNGcmFjdGlvblZhbHVlID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIENTU1ZhbHVlT3JkaW5hbDoKKyAgICAgICAgICAgIGlmIChtX3Nhd09yZGlu
YWxWYWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHQ6OkRpc2FsbG93ZWRW
YWx1ZTsKKyAgICAgICAgICAgIG1fc2F3T3JkaW5hbFZhbHVlID0gdHJ1ZTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIENTU1ZhbHVlU2xhc2hlZFplcm86CisgICAgICAgICAgICBp
ZiAobV9zYXdTbGFzaGVkWmVyb1ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBQYXJzZVJl
c3VsdDo6RGlzYWxsb3dlZFZhbHVlOworICAgICAgICAgICAgbV9zYXdTbGFzaGVkWmVyb1ZhbHVl
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgcmV0dXJuIFBhcnNlUmVzdWx0OjpVbmtub3duVmFsdWU7CisgICAgICAgIH0KKyAgICAgICAg
bV9yZXN1bHQtPmFwcGVuZCgqY29uc3VtZUlkZW50KHJhbmdlKSk7CisgICAgICAgIHJldHVybiBQ
YXJzZVJlc3VsdDo6Q29uc3VtZWRWYWx1ZTsKKyAgICB9CisKKyAgICBDU1NWYWx1ZSogZmluYWxp
emVWYWx1ZSgpCisgICAgeworICAgICAgICBpZiAoIW1fcmVzdWx0LT5sZW5ndGgoKSkKKyAgICAg
ICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1
ZU5vcm1hbCk7CisgICAgICAgIHJldHVybiBtX3Jlc3VsdC5yZWxlYXNlKCk7CisgICAgfQorCisK
K3ByaXZhdGU6CisgICAgYm9vbCBtX3Nhd051bWVyaWNGaWd1cmVWYWx1ZTsKKyAgICBib29sIG1f
c2F3TnVtZXJpY1NwYWNpbmdWYWx1ZTsKKyAgICBib29sIG1fc2F3TnVtZXJpY0ZyYWN0aW9uVmFs
dWU7CisgICAgYm9vbCBtX3Nhd09yZGluYWxWYWx1ZTsKKyAgICBib29sIG1fc2F3U2xhc2hlZFpl
cm9WYWx1ZTsKKyAgICBNZW1iZXI8Q1NTVmFsdWVMaXN0PiBtX3Jlc3VsdDsKK307CisKK3N0YXRp
YyBDU1NWYWx1ZSogY29uc3VtZUZvbnRWYXJpYW50TnVtZXJpYyhDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb3JtYWwp
CisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgRm9udFZhcmlhbnRO
dW1lcmljUGFyc2VyIG51bWVyaWNQYXJzZXI7CisgICAgZG8geworICAgICAgICBpZiAobnVtZXJp
Y1BhcnNlci5jb25zdW1lTnVtZXJpYyhyYW5nZSkgIT0KKyAgICAgICAgICAgIEZvbnRWYXJpYW50
TnVtZXJpY1BhcnNlcjo6UGFyc2VSZXN1bHQ6OkNvbnN1bWVkVmFsdWUpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9IHdoaWxlICghcmFuZ2UuYXRFbmQoKSk7CisKKyAgICByZXR1
cm4gbnVtZXJpY1BhcnNlci5maW5hbGl6ZVZhbHVlKCk7Cit9CisKK3N0YXRpYyBDU1NQcmltaXRp
dmVWYWx1ZSogY29uc3VtZUZvbnRWYXJpYW50Q1NTMjEoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UpCit7CisgICAgcmV0dXJuIGNvbnN1bWVJZGVudDxDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVT
bWFsbENhcHM+KHJhbmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lRm9udFZhcmlh
bnRMaXN0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIENTU1ZhbHVlTGlzdCog
dmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgIGRvIHsK
KyAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQWxsKSB7CisgICAgICAg
ICAgICAvLyBGSVhNRTogQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlRm9udFZhcmlhbnQoKSBpbXBs
ZW1lbnRzCisgICAgICAgICAgICAvLyB0aGUgb2xkIGNzczMgZHJhZnQ6CisgICAgICAgICAgICAv
LyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAyL1dELWNzczMtd2ViZm9udHMtMjAwMjA4MDIvI2Zv
bnQtdmFyaWFudAorICAgICAgICAgICAgLy8gJ2FsbCcgaXMgb25seSBhbGxvd2VkIGluIEBmb250
LWZhY2UgYW5kIHdpdGggbm8gb3RoZXIgdmFsdWVzLgorICAgICAgICAgICAgaWYgKHZhbHVlcy0+
bGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBy
ZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICAgICAgfQorICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogZm9udFZhcmlhbnQgPSBjb25zdW1lRm9udFZhcmlhbnRDU1MyMShyYW5nZSk7Cisg
ICAgICAgIGlmIChmb250VmFyaWFudCkKKyAgICAgICAgICAgIHZhbHVlcy0+YXBwZW5kKCpmb250
VmFyaWFudCk7CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShy
YW5nZSkpOworCisgICAgaWYgKHZhbHVlcy0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiB2YWx1
ZXM7CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVl
KiBjb25zdW1lRm9udFdlaWdodChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBj
b25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CisgICAgaWYgKHRva2Vu
LmlkKCkgPj0gQ1NTVmFsdWVOb3JtYWwgJiYgdG9rZW4uaWQoKSA8PSBDU1NWYWx1ZUxpZ2h0ZXIp
CisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIGlmICh0b2tlbi50eXBl
KCkgIT0gTnVtYmVyVG9rZW4gfHwgdG9rZW4ubnVtZXJpY1ZhbHVlVHlwZSgpICE9IEludGVnZXJW
YWx1ZVR5cGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGludCB3ZWlnaHQgPSBzdGF0
aWNfY2FzdDxpbnQ+KHRva2VuLm51bWVyaWNWYWx1ZSgpKTsKKyAgICBpZiAoKHdlaWdodCAlIDEw
MCkgfHwgd2VpZ2h0IDwgMTAwIHx8IHdlaWdodCA+IDkwMCkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJ
RD4oQ1NTVmFsdWUxMDAgKyB3ZWlnaHQgLyAxMDAgLSAxKSk7Cit9CisKK3N0YXRpYyBTdHJpbmcg
Y29uY2F0ZW5hdGVGYW1pbHlOYW1lKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBib29sIGFkZGVkU3BhY2UgPSBmYWxzZTsKKyAg
ICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgZmlyc3RUb2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICB3
aGlsZSAocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBJZGVudFRva2VuKSB7CisgICAgICAgIGlmICgh
YnVpbGRlci5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Cisg
ICAgICAgICAgICBhZGRlZFNwYWNlID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBidWlsZGVy
LmFwcGVuZChyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVlKCkpOworICAg
IH0KKyAgICBpZiAoIWFkZGVkU3BhY2UgJiYgaXNDU1NXaWRlS2V5d29yZChmaXJzdFRva2VuLmlk
KCkpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJp
bmcoKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lRmFtaWx5TmFtZShDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBTdHJp
bmdUb2tlbikKKyAgICAgICAgcmV0dXJuIENTU0ZvbnRGYW1pbHlWYWx1ZTo6Y3JlYXRlKHJhbmdl
LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b1N0cmluZygpKTsKKyAgICBp
ZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBJZGVudFRva2VuKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICBTdHJpbmcgZmFtaWx5TmFtZSA9IGNvbmNhdGVuYXRlRmFtaWx5TmFtZShyYW5n
ZSk7CisgICAgaWYgKGZhbWlseU5hbWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBDU1NGb250RmFtaWx5VmFsdWU6OmNyZWF0ZShmYW1pbHlOYW1lKTsKK30K
Kworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lR2VuZXJpY0ZhbWlseShDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4gY29uc3VtZUlkZW50UmFuZ2UocmFuZ2UsIENTU1Zh
bHVlU2VyaWYsIENTU1ZhbHVlV2Via2l0Qm9keSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZUxpc3Qq
IGNvbnN1bWVGb250RmFtaWx5KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIENT
U1ZhbHVlTGlzdCogbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsK
KyAgICBkbyB7CisgICAgICAgIENTU1ZhbHVlKiBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVHZW5lcmlj
RmFtaWx5KHJhbmdlKTsKKyAgICAgICAgaWYgKHBhcnNlZFZhbHVlKSB7CisgICAgICAgICAgICBs
aXN0LT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHBhcnNlZFZhbHVlID0gY29uc3VtZUZhbWlseU5hbWUocmFuZ2UpOworICAgICAgICAgICAgaWYg
KHBhcnNlZFZhbHVlKSB7CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKCpwYXJzZWRWYWx1
ZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5j
bHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpOworICAgIHJldHVybiBsaXN0OworfQorCitzdGF0aWMg
Q1NTVmFsdWUqIGNvbnN1bWVTcGFjaW5nKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQ
YXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09
IENTU1ZhbHVlTm9ybWFsKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAg
ICAvLyBUT0RPKHRpbWxvaCk6IGFsbG93IDxwZXJjZW50YWdlPnMgaW4gd29yZC1zcGFjaW5nLgor
ICAgIHJldHVybiBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdl
QWxsLCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3Vt
ZVRhYlNpemUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFy
c2VyTW9kZSkKK3sKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcGFyc2VkVmFsdWUgPSBjb25zdW1l
SW50ZWdlcihyYW5nZSwgMCk7CisgICAgaWYgKHBhcnNlZFZhbHVlKQorICAgICAgICByZXR1cm4g
cGFyc2VkVmFsdWU7CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1v
ZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3Vt
ZVRleHRTaXplQWRqdXN0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2Rl
IGNzc1BhcnNlck1vZGUpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVl
QXV0bykKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgaWYgKHJhbmdl
LnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVu
dChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVQZXJjZW50KHJhbmdlLCBWYWx1ZVJhbmdlTm9u
TmVnYXRpdmUpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVGb250U2l6ZShDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVz
c1F1aXJrIHVuaXRsZXNzID0gVW5pdGxlc3NRdWlyazo6Rm9yYmlkKQoreworICAgIGlmIChyYW5n
ZS5wZWVrKCkuaWQoKSA+PSBDU1NWYWx1ZVh4U21hbGwgJiYgcmFuZ2UucGVlaygpLmlkKCkgPD0g
Q1NTVmFsdWVMYXJnZXIpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAg
IHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1
ZVJhbmdlTm9uTmVnYXRpdmUsIHVuaXRsZXNzKTsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZh
bHVlKiBjb25zdW1lTGluZUhlaWdodChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFy
c2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBD
U1NWYWx1ZU5vcm1hbCkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogbGluZUhlaWdodCA9IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZh
bHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgaWYgKGxpbmVIZWlnaHQpCisgICAgICAgIHJldHVy
biBsaW5lSGVpZ2h0OworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBj
c3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworfQorCitzdGF0aWMgQ1NTVmFs
dWVMaXN0KiBjb25zdW1lUm90YXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7Cisg
ICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0luZGVwZW5kZW50VHJhbnNmb3Jt
UHJvcGVydGllc0VuYWJsZWQoKSk7CisgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVM
aXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworCisgICAgQ1NTVmFsdWUqIHJvdGF0aW9uID0g
Y29uc3VtZUFuZ2xlKHJhbmdlKTsKKyAgICBpZiAoIXJvdGF0aW9uKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBsaXN0LT5hcHBlbmQoKnJvdGF0aW9uKTsKKworICAgIGlmIChyYW5nZS5h
dEVuZCgpKQorICAgICAgICByZXR1cm4gbGlzdDsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCAzOyBpKyspIHsgLy8gMyBkaW1lbnNpb25zIG9mIHJvdGF0aW9uCisgICAgICAgIENTU1Zh
bHVlKiBkaW1lbnNpb24gPSBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlQWxsKTsKKyAg
ICAgICAgaWYgKCFkaW1lbnNpb24pCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgbGlzdC0+YXBwZW5kKCpkaW1lbnNpb24pOworICAgIH0KKworICAgIHJldHVybiBsaXN0Owor
fQorCitzdGF0aWMgQ1NTVmFsdWVMaXN0KiBjb25zdW1lU2NhbGUoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UpCit7CisgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0luZGVw
ZW5kZW50VHJhbnNmb3JtUHJvcGVydGllc0VuYWJsZWQoKSk7CisKKyAgICBDU1NWYWx1ZSogc2Nh
bGUgPSBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBpZiAoIXNjYWxl
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgbGlzdC0+YXBwZW5kKCpzY2Fs
ZSk7CisgICAgc2NhbGUgPSBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlQWxsKTsKKyAg
ICBpZiAoc2NhbGUpIHsKKyAgICAgICAgbGlzdC0+YXBwZW5kKCpzY2FsZSk7CisgICAgICAgIHNj
YWxlID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGlmIChz
Y2FsZSkKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZCgqc2NhbGUpOworICAgIH0KKworICAgIHJl
dHVybiBsaXN0OworfQorCitzdGF0aWMgQ1NTVmFsdWVMaXN0KiBjb25zdW1lVHJhbnNsYXRlKENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7
CisgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0luZGVwZW5kZW50VHJhbnNm
b3JtUHJvcGVydGllc0VuYWJsZWQoKSk7CisgICAgQ1NTVmFsdWUqIHRyYW5zbGF0ZSA9IGNvbnN1
bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOwor
ICAgIGlmICghdHJhbnNsYXRlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBDU1NWYWx1
ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAg
bGlzdC0+YXBwZW5kKCp0cmFuc2xhdGUpOworICAgIHRyYW5zbGF0ZSA9IGNvbnN1bWVMZW5ndGhP
clBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgIGlmICh0
cmFuc2xhdGUpIHsKKyAgICAgICAgbGlzdC0+YXBwZW5kKCp0cmFuc2xhdGUpOworICAgICAgICB0
cmFuc2xhdGUgPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdl
QWxsKTsKKyAgICAgICAgaWYgKHRyYW5zbGF0ZSkKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZCgq
dHJhbnNsYXRlKTsKKyAgICB9CisKKyAgICByZXR1cm4gbGlzdDsKK30KKworc3RhdGljIENTU1Zh
bHVlKiBjb25zdW1lQ291bnRlcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgaW50IGRlZmF1
bHRWYWx1ZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQor
ICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIENTU1ZhbHVlTGlzdCog
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBkbyB7Cisg
ICAgICAgIENTU0N1c3RvbUlkZW50VmFsdWUqIGNvdW50ZXJOYW1lID0gY29uc3VtZUN1c3RvbUlk
ZW50KHJhbmdlKTsKKyAgICAgICAgaWYgKCFjb3VudGVyTmFtZSkKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICBpbnQgaSA9IGRlZmF1bHRWYWx1ZTsKKyAgICAgICAgaWYgKENT
U1ByaW1pdGl2ZVZhbHVlKiBjb3VudGVyVmFsdWUgPSBjb25zdW1lSW50ZWdlcihyYW5nZSkpCisg
ICAgICAgICAgICBpID0gY2xhbXBUbzxpbnQ+KGNvdW50ZXJWYWx1ZS0+Z2V0RG91YmxlVmFsdWUo
KSk7CisgICAgICAgIGxpc3QtPmFwcGVuZCgqQ1NTVmFsdWVQYWlyOjpjcmVhdGUoY291bnRlck5h
bWUsCisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGksIENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZTo6SW50ZWdlciksCisgICAgICAgICAgICBDU1NWYWx1ZVBhaXI6OkRy
b3BJZGVudGljYWxWYWx1ZXMpKTsKKyAgICB9IHdoaWxlICghcmFuZ2UuYXRFbmQoKSk7CisgICAg
cmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVBhZ2VTaXplKENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFs
dWVBMywgQ1NTVmFsdWVBNCwgQ1NTVmFsdWVBNSwgQ1NTVmFsdWVCNCwgQ1NTVmFsdWVCNSwgQ1NT
VmFsdWVMZWRnZXIsIENTU1ZhbHVlTGVnYWwsIENTU1ZhbHVlTGV0dGVyPihyYW5nZSk7Cit9CisK
K3N0YXRpYyBDU1NWYWx1ZUxpc3QqIGNvbnN1bWVTaXplKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgQ1NTVmFsdWVMaXN0KiBy
ZXN1bHQgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisKKyAgICBpZiAo
cmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBdXRvKSB7CisgICAgICAgIHJlc3VsdC0+YXBw
ZW5kKCpjb25zdW1lSWRlbnQocmFuZ2UpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKKyAgICBpZiAoQ1NTVmFsdWUqIHdpZHRoID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFy
c2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKSkgeworICAgICAgICBDU1NWYWx1ZSogaGVp
Z2h0ID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5l
Z2F0aXZlKTsKKyAgICAgICAgcmVzdWx0LT5hcHBlbmQoKndpZHRoKTsKKyAgICAgICAgaWYgKGhl
aWdodCkKKyAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKCpoZWlnaHQpOworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKworICAgIENTU1ZhbHVlKiBwYWdlU2l6ZSA9IGNvbnN1bWVQYWdl
U2l6ZShyYW5nZSk7CisgICAgQ1NTVmFsdWUqIG9yaWVudGF0aW9uID0gY29uc3VtZUlkZW50PENT
U1ZhbHVlUG9ydHJhaXQsIENTU1ZhbHVlTGFuZHNjYXBlPihyYW5nZSk7CisgICAgaWYgKCFwYWdl
U2l6ZSkKKyAgICAgICAgcGFnZVNpemUgPSBjb25zdW1lUGFnZVNpemUocmFuZ2UpOworCisgICAg
aWYgKCFvcmllbnRhdGlvbiAmJiAhcGFnZVNpemUpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIGlmIChwYWdlU2l6ZSkKKyAgICAgICAgcmVzdWx0LT5hcHBlbmQoKnBhZ2VTaXplKTsKKyAg
ICBpZiAob3JpZW50YXRpb24pCisgICAgICAgIHJlc3VsdC0+YXBwZW5kKCpvcmllbnRhdGlvbik7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lU25hcEhl
aWdodChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJN
b2RlKQoreworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB1bml0ID0gY29uc3VtZUxlbmd0aChyYW5n
ZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICBpZiAoIXVuaXQp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBsaXN0LT5hcHBlbmQoKnVuaXQp
OworCisgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlKiBwb3NpdGlvbiA9IGNvbnN1bWVQb3NpdGl2
ZUludGVnZXIocmFuZ2UpKSB7CisgICAgICAgIGlmIChwb3NpdGlvbi0+Z2V0SW50VmFsdWUoKSA+
IDEwMCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBsaXN0LT5hcHBlbmQo
KnBvc2l0aW9uKTsKKyAgICB9CisKKyAgICByZXR1cm4gbGlzdDsKK30KKworc3RhdGljIENTU1Zh
bHVlKiBjb25zdW1lVGV4dEluZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFy
c2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIC8vIFsgPGxlbmd0aD4gfCA8cGVyY2VudGFn
ZT4gXSAmJiBoYW5naW5nPyAmJiBlYWNoLWxpbmU/CisgICAgLy8gS2V5d29yZHMgb25seSBhbGxv
d2VkIHdoZW4gY3NzM1RleHQgaXMgZW5hYmxlZC4KKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisKKyAgICBib29sIGhhc0xlbmd0
aE9yUGVyY2VudGFnZSA9IGZhbHNlOworICAgIGJvb2wgaGFzRWFjaExpbmUgPSBmYWxzZTsKKyAg
ICBib29sIGhhc0hhbmdpbmcgPSBmYWxzZTsKKworICAgIGRvIHsKKyAgICAgICAgaWYgKCFoYXNM
ZW5ndGhPclBlcmNlbnRhZ2UpIHsKKyAgICAgICAgICAgIGlmIChDU1NWYWx1ZSogdGV4dEluZGVu
dCA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFu
Z2VBbGwsIFVuaXRsZXNzUXVpcms6OkFsbG93KSkgeworICAgICAgICAgICAgICAgIGxpc3QtPmFw
cGVuZCgqdGV4dEluZGVudCk7CisgICAgICAgICAgICAgICAgaGFzTGVuZ3RoT3JQZXJjZW50YWdl
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3MzVGV4dEVuYWJs
ZWQoKSkgeworICAgICAgICAgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOwor
ICAgICAgICAgICAgaWYgKCFoYXNFYWNoTGluZSAmJiBpZCA9PSBDU1NWYWx1ZUVhY2hMaW5lKSB7
CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKCpjb25zdW1lSWRlbnQocmFuZ2UpKTsKKyAg
ICAgICAgICAgICAgICBoYXNFYWNoTGluZSA9IHRydWU7CisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWhhc0hhbmdpbmcgJiYgaWQgPT0g
Q1NTVmFsdWVIYW5naW5nKSB7CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKCpjb25zdW1l
SWRlbnQocmFuZ2UpKTsKKyAgICAgICAgICAgICAgICBoYXNIYW5naW5nID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9IHdoaWxlICghcmFuZ2UuYXRFbmQoKSk7CisKKyAgICBpZiAo
IWhhc0xlbmd0aE9yUGVyY2VudGFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBy
ZXR1cm4gbGlzdDsKK30KKworc3RhdGljIGJvb2wgdmFsaWRXaWR0aE9ySGVpZ2h0S2V5d29yZChD
U1NWYWx1ZUlEIGlkLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIGlm
IChpZCA9PSBDU1NWYWx1ZVdlYmtpdE1pbkNvbnRlbnQgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRN
YXhDb250ZW50IHx8IGlkID09IENTU1ZhbHVlV2Via2l0RmlsbEF2YWlsYWJsZSB8fCBpZCA9PSBD
U1NWYWx1ZVdlYmtpdEZpdENvbnRlbnQKKyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVNaW5Db250
ZW50IHx8IGlkID09IENTU1ZhbHVlTWF4Q29udGVudCB8fCBpZCA9PSBDU1NWYWx1ZUZpdENvbnRl
bnQpIHsKKyAgICAgICAgaWYgKGNvbnRleHQudXNlQ291bnRlcigpKSB7CisgICAgICAgICAgICBz
d2l0Y2ggKGlkKSB7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlV2Via2l0TWluQ29udGVudDoK
KyAgICAgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291bnRlcjo6
Q1NTVmFsdWVQcmVmaXhlZE1pbkNvbnRlbnQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdE1heENvbnRlbnQ6CisgICAgICAgICAgICAgICAg
Y29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlUHJlZml4ZWRN
YXhDb250ZW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NT
VmFsdWVXZWJraXRGaWxsQXZhaWxhYmxlOgorICAgICAgICAgICAgICAgIGNvbnRleHQudXNlQ291
bnRlcigpLT5jb3VudChVc2VDb3VudGVyOjpDU1NWYWx1ZVByZWZpeGVkRmlsbEF2YWlsYWJsZSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlV2Via2l0
Rml0Q29udGVudDoKKyAgICAgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQo
VXNlQ291bnRlcjo6Q1NTVmFsdWVQcmVmaXhlZEZpdENvbnRlbnQpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVNYXhXaWR0aE9ySGVp
Z2h0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBj
b250ZXh0LCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzID0gVW5pdGxlc3NRdWlyazo6Rm9yYmlkKQor
eworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsaWRXaWR0
aE9ySGVpZ2h0S2V5d29yZChyYW5nZS5wZWVrKCkuaWQoKSwgY29udGV4dCkpCisgICAgICAgIHJl
dHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJj
ZW50KHJhbmdlLCBjb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlLCB1bml0bGVz
cyk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVdpZHRoT3JIZWlnaHQoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIFVuaXRs
ZXNzUXVpcmsgdW5pdGxlc3MgPSBVbml0bGVzc1F1aXJrOjpGb3JiaWQpCit7CisgICAgaWYgKHJh
bmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0byB8fCB2YWxpZFdpZHRoT3JIZWlnaHRLZXl3
b3JkKHJhbmdlLnBlZWsoKS5pZCgpLCBjb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJ
ZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNv
bnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUsIHVuaXRsZXNzKTsKK30KKworc3Rh
dGljIENTU1ZhbHVlKiBjb25zdW1lTWFyZ2luT3JPZmZzZXQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVz
cykKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBdXRvKQorICAgICAg
ICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9y
UGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCwgdW5pdGxlc3MpOwor
fQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVDbGlwQ29tcG9uZW50KENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7Cisg
ICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgcmV0dXJu
IGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNz
c1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwsIFVuaXRsZXNzUXVpcms6OkFsbG93KTsKK30KKwor
c3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQ2xpcChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Q1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQo
KSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwor
CisgICAgaWYgKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgIT0gQ1NTVmFsdWVSZWN0KQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYXJncyA9IGNv
bnN1bWVGdW5jdGlvbihyYW5nZSk7CisgICAgLy8gcmVjdCh0LCByLCBiLCBsKSB8fCByZWN0KHQg
ciBiIGwpCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHRvcCA9IGNvbnN1bWVDbGlwQ29tcG9uZW50
KGFyZ3MsIGNzc1BhcnNlck1vZGUpOworICAgIGlmICghdG9wKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICBib29sIG5lZWRzQ29tbWEgPSBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNw
YWNlKGFyZ3MpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiByaWdodCA9IGNvbnN1bWVDbGlwQ29t
cG9uZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUpOworICAgIGlmICghcmlnaHQgfHwgKG5lZWRzQ29t
bWEgJiYgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogYm90dG9tID0gY29uc3VtZUNs
aXBDb21wb25lbnQoYXJncywgY3NzUGFyc2VyTW9kZSk7CisgICAgaWYgKCFib3R0b20gfHwgKG5l
ZWRzQ29tbWEgJiYgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogbGVmdCA9IGNvbnN1
bWVDbGlwQ29tcG9uZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUpOworICAgIGlmICghbGVmdCB8fCAh
YXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gQ1NTUXVh
ZFZhbHVlOjpjcmVhdGUodG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBDU1NRdWFkVmFsdWU6OlNl
cmlhbGl6ZUFzUmVjdCk7Cit9CisKK3N0YXRpYyBib29sIGNvbnN1bWVQYW4oQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIENTU1ZhbHVlKiYgcGFuWCwgQ1NTVmFsdWUqJiBwYW5ZKQoreworICAg
IENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICBpZiAoKGlkID09IENTU1Zh
bHVlUGFuWCB8fCBpZCA9PSBDU1NWYWx1ZVBhblJpZ2h0IHx8IGlkID09IENTU1ZhbHVlUGFuTGVm
dCkgJiYgIXBhblgpIHsKKyAgICAgICAgaWYgKGlkICE9IENTU1ZhbHVlUGFuWCAmJiAhUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6Y3NzVG91Y2hBY3Rpb25QYW5EaXJlY3Rpb25zRW5hYmxlZCgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBwYW5YID0gY29uc3VtZUlkZW50KHJh
bmdlKTsKKyAgICB9IGVsc2UgaWYgKChpZCA9PSBDU1NWYWx1ZVBhblkgfHwgaWQgPT0gQ1NTVmFs
dWVQYW5Eb3duIHx8IGlkID09IENTU1ZhbHVlUGFuVXApICYmICFwYW5ZKSB7CisgICAgICAgIGlm
IChpZCAhPSBDU1NWYWx1ZVBhblkgJiYgIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc1RvdWNo
QWN0aW9uUGFuRGlyZWN0aW9uc0VuYWJsZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgcGFuWSA9IGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIENT
U1ZhbHVlKiBjb25zdW1lVG91Y2hBY3Rpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7
CisgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFy
YXRlZCgpOworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1
ZU1hbmlwdWxhdGlvbikgeworICAgICAgICBsaXN0LT5hcHBlbmQoKmNvbnN1bWVJZGVudChyYW5n
ZSkpOworICAgICAgICByZXR1cm4gbGlzdDsKKyAgICB9CisKKyAgICBDU1NWYWx1ZSogcGFuWCA9
IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIHBhblkgPSBudWxscHRyOworICAgIGlmICghY29uc3Vt
ZVBhbihyYW5nZSwgcGFuWCwgcGFuWSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlm
ICghcmFuZ2UuYXRFbmQoKSAmJiAhY29uc3VtZVBhbihyYW5nZSwgcGFuWCwgcGFuWSkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKHBhblgpCisgICAgICAgIGxpc3QtPmFwcGVu
ZCgqcGFuWCk7CisgICAgaWYgKHBhblkpCisgICAgICAgIGxpc3QtPmFwcGVuZCgqcGFuWSk7Cisg
ICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUxp
bmVDbGFtcChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVl
aygpLnR5cGUoKSAhPSBQZXJjZW50YWdlVG9rZW4gJiYgcmFuZ2UucGVlaygpLnR5cGUoKSAhPSBO
dW1iZXJUb2tlbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIGNsYW1wVmFsdWUgPSBjb25zdW1lUGVyY2VudChyYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0
aXZlKTsKKyAgICBpZiAoY2xhbXBWYWx1ZSkKKyAgICAgICAgcmV0dXJuIGNsYW1wVmFsdWU7Cisg
ICAgLy8gV2hlbiBzcGVjaWZ5aW5nIG51bWJlciBvZiBsaW5lcywgZG9uJ3QgYWxsb3cgMCBhcyBh
IHZhbGlkIHZhbHVlLgorICAgIHJldHVybiBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyKHJhbmdlKTsK
K30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lTG9jYWxlKENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisg
ICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lU3Ry
aW5nKHJhbmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQ29sdW1uV2lkdGgoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09
IENTU1ZhbHVlQXV0bykKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAg
Ly8gQWx3YXlzIHBhcnNlIGxlbmd0aHMgaW4gc3RyaWN0IG1vZGUgaGVyZSwgc2luY2UgaXQgd291
bGQgYmUgYW1iaWd1b3VzIG90aGVyd2lzZSB3aGVuIHVzZWQgaW4KKyAgICAvLyB0aGUgJ2NvbHVt
bnMnIHNob3J0aGFuZCBwcm9wZXJ0eS4KKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogY29sdW1uV2lk
dGggPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBIVE1MU3RhbmRhcmRNb2RlLCBWYWx1ZVJhbmdlTm9u
TmVnYXRpdmUpOworICAgIGlmICghY29sdW1uV2lkdGggfHwgKCFjb2x1bW5XaWR0aC0+aXNDYWxj
dWxhdGVkKCkgJiYgY29sdW1uV2lkdGgtPmdldERvdWJsZVZhbHVlKCkgPT0gMCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjb2x1bW5XaWR0aDsKK30KKworc3RhdGljIENT
U1ZhbHVlKiBjb25zdW1lQ29sdW1uQ291bnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7
CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVQb3NpdGl2ZUludGVn
ZXIocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDb2x1bW5HYXAoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAg
ICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb3JtYWwpCisgICAgICAgIHJldHVy
biBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoKHJhbmdlLCBj
c3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworfQorCitzdGF0aWMgQ1NTVmFs
dWUqIGNvbnN1bWVDb2x1bW5TcGFuKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAg
IHJldHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBbGwsIENTU1ZhbHVlTm9uZT4ocmFuZ2UpOwor
fQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVab29tKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIGNvbnN0IENTU1Bh
cnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSog
em9vbSA9IG51bGxwdHI7CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBJZGVudFRva2VuKSB7Cisg
ICAgICAgIHpvb20gPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlUmVzZXQs
IENTU1ZhbHVlRG9jdW1lbnQ+KHJhbmdlKTsKKyAgICB9IGVsc2UgeworICAgICAgICB6b29tID0g
Y29uc3VtZVBlcmNlbnQocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgIGlm
ICghem9vbSkKKyAgICAgICAgICAgIHpvb20gPSBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJh
bmdlTm9uTmVnYXRpdmUpOworICAgIH0KKyAgICBpZiAoem9vbSAmJiBjb250ZXh0LnVzZUNvdW50
ZXIoKQorICAgICAgICAmJiAhKHRva2VuLmlkKCkgPT0gQ1NTVmFsdWVOb3JtYWwKKyAgICAgICAg
ICAgIHx8ICh0b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4gJiYgem9vbS0+Z2V0RG91YmxlVmFs
dWUoKSA9PSAxKQorICAgICAgICAgICAgfHwgKHRva2VuLnR5cGUoKSA9PSBQZXJjZW50YWdlVG9r
ZW4gJiYgem9vbS0+Z2V0RG91YmxlVmFsdWUoKSA9PSAxMDApKSkKKyAgICAgICAgY29udGV4dC51
c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkNTU1pvb21Ob3RFcXVhbFRvT25lKTsKKyAg
ICByZXR1cm4gem9vbTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQW5pbWF0aW9uSXRl
cmF0aW9uQ291bnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdl
LnBlZWsoKS5pZCgpID09IENTU1ZhbHVlSW5maW5pdGUpCisgICAgICAgIHJldHVybiBjb25zdW1l
SWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdl
Tm9uTmVnYXRpdmUpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVBbmltYXRpb25OYW1l
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250
ZXh0LCBib29sIGFsbG93UXVvdGVkTmFtZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkg
PT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKwor
ICAgIGlmIChhbGxvd1F1b3RlZE5hbWUgJiYgcmFuZ2UucGVlaygpLnR5cGUoKSA9PSBTdHJpbmdU
b2tlbikgeworICAgICAgICAvLyBMZWdhY3kgc3VwcG9ydCBmb3Igc3RyaW5ncyBpbiBwcmVmaXhl
ZCBhbmltYXRpb25zLgorICAgICAgICBpZiAoY29udGV4dC51c2VDb3VudGVyKCkpCisgICAgICAg
ICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291bnRlcjo6UXVvdGVkQW5pbWF0
aW9uTmFtZSk7CisKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2Uu
Y29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdB
U0NJSUNhc2UodG9rZW4udmFsdWUoKSwgIm5vbmUiKSkKKyAgICAgICAgICAgIHJldHVybiBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpOworICAgICAgICBy
ZXR1cm4gQ1NTQ3VzdG9tSWRlbnRWYWx1ZTo6Y3JlYXRlKHRva2VuLnZhbHVlKCkudG9TdHJpbmco
KSk7CisgICAgfQorCisgICAgcmV0dXJuIGNvbnN1bWVDdXN0b21JZGVudChyYW5nZSk7Cit9CisK
K3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVRyYW5zaXRpb25Qcm9wZXJ0eShDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSkKK3sKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5n
ZS5wZWVrKCk7CisgICAgaWYgKHRva2VuLnR5cGUoKSAhPSBJZGVudFRva2VuKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAodG9rZW4uaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAg
ICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgaWYgKENTU1Byb3BlcnR5SUQg
cHJvcGVydHkgPSB0b2tlbi5wYXJzZUFzVW5yZXNvbHZlZENTU1Byb3BlcnR5SUQoKSkgeworICAg
ICAgICBBU1NFUlQoQ1NTUHJvcGVydHlNZXRhZGF0YTo6aXNFbmFibGVkUHJvcGVydHkocHJvcGVy
dHkpKTsKKyAgICAgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAg
ICAgcmV0dXJuIENTU0N1c3RvbUlkZW50VmFsdWU6OmNyZWF0ZShwcm9wZXJ0eSk7CisgICAgfQor
ICAgIHJldHVybiBjb25zdW1lQ3VzdG9tSWRlbnQocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFs
dWUqIGNvbnN1bWVTdGVwcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBBU1NF
UlQocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZVN0ZXBzKTsKKyAgICBDU1NQ
YXJzZXJUb2tlblJhbmdlIHJhbmdlQ29weSA9IHJhbmdlOworICAgIENTU1BhcnNlclRva2VuUmFu
Z2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZUNvcHkpOworCisgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHN0ZXBzID0gY29uc3VtZVBvc2l0aXZlSW50ZWdlcihhcmdzKTsKKyAgICBpZiAoIXN0
ZXBzKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFN0ZXBzVGltaW5nRnVuY3Rpb246
OlN0ZXBQb3NpdGlvbiBwb3NpdGlvbiA9IFN0ZXBzVGltaW5nRnVuY3Rpb246OlN0ZXBQb3NpdGlv
bjo6RU5EOworICAgIGlmIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKSB7
CisgICAgICAgIHN3aXRjaCAoYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCkp
IHsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZU1pZGRsZToKKyAgICAgICAgICAgIGlmICghUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6d2ViQW5pbWF0aW9uc0FQSUVuYWJsZWQoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHBvc2l0aW9uID0gU3RlcHNUaW1pbmdG
dW5jdGlvbjo6U3RlcFBvc2l0aW9uOjpNSURETEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBDU1NWYWx1ZVN0YXJ0OgorICAgICAgICAgICAgcG9zaXRpb24gPSBTdGVwc1RpbWlu
Z0Z1bmN0aW9uOjpTdGVwUG9zaXRpb246OlNUQVJUOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQ1NTVmFsdWVFbmQ6CisgICAgICAgICAgICBwb3NpdGlvbiA9IFN0ZXBzVGltaW5n
RnVuY3Rpb246OlN0ZXBQb3NpdGlvbjo6RU5EOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGlmICghYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IHJhbmdlID0gcmFuZ2VDb3B5OworICAgIHJldHVybiBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFs
dWU6OmNyZWF0ZShzdGVwcy0+Z2V0SW50VmFsdWUoKSwgcG9zaXRpb24pOworfQorCitzdGF0aWMg
Q1NTVmFsdWUqIGNvbnN1bWVDdWJpY0JlemllcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkK
K3sKKyAgICBBU1NFUlQocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUN1Ymlj
QmV6aWVyKTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlQ29weSA9IHJhbmdlOworICAg
IENTU1BhcnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZUNvcHkpOwor
CisgICAgZG91YmxlIHgxLCB5MSwgeDIsIHkyOworICAgIGlmIChjb25zdW1lTnVtYmVyUmF3KGFy
Z3MsIHgxKQorICAgICAgICAmJiB4MSA+PSAwICYmIHgxIDw9IDEKKyAgICAgICAgJiYgY29uc3Vt
ZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKQorICAgICAgICAmJiBjb25zdW1lTnVtYmVy
UmF3KGFyZ3MsIHkxKQorICAgICAgICAmJiBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNl
KGFyZ3MpCisgICAgICAgICYmIGNvbnN1bWVOdW1iZXJSYXcoYXJncywgeDIpCisgICAgICAgICYm
IHgyID49IDAgJiYgeDIgPD0gMQorICAgICAgICAmJiBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0
ZXNwYWNlKGFyZ3MpCisgICAgICAgICYmIGNvbnN1bWVOdW1iZXJSYXcoYXJncywgeTIpCisgICAg
ICAgICYmIGFyZ3MuYXRFbmQoKSkgeworICAgICAgICByYW5nZSA9IHJhbmdlQ29weTsKKyAgICAg
ICAgcmV0dXJuIENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKHgxLCB5
MSwgeDIsIHkyKTsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIENT
U1ZhbHVlKiBjb25zdW1lQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UpCit7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAg
IGlmIChpZCA9PSBDU1NWYWx1ZUVhc2UgfHwgaWQgPT0gQ1NTVmFsdWVMaW5lYXIgfHwgaWQgPT0g
Q1NTVmFsdWVFYXNlSW4KKyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVFYXNlT3V0IHx8IGlkID09
IENTU1ZhbHVlRWFzZUluT3V0IHx8IGlkID09IENTU1ZhbHVlU3RlcFN0YXJ0CisgICAgICAgIHx8
IGlkID09IENTU1ZhbHVlU3RlcEVuZCB8fCBpZCA9PSBDU1NWYWx1ZVN0ZXBNaWRkbGUpCisgICAg
ICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgQ1NTVmFsdWVJRCBmdW5jdGlv
biA9IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCk7CisgICAgaWYgKGZ1bmN0aW9uID09IENTU1Zh
bHVlU3RlcHMpCisgICAgICAgIHJldHVybiBjb25zdW1lU3RlcHMocmFuZ2UpOworICAgIGlmIChm
dW5jdGlvbiA9PSBDU1NWYWx1ZUN1YmljQmV6aWVyKQorICAgICAgICByZXR1cm4gY29uc3VtZUN1
YmljQmV6aWVyKHJhbmdlKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIENTU1Zh
bHVlKiBjb25zdW1lQW5pbWF0aW9uVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIGJv
b2wgdXNlTGVnYWN5UGFyc2luZykKK3sKKyAgICBzd2l0Y2ggKHByb3BlcnR5KSB7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkRlbGF5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0
aW9uRGVsYXk6CisgICAgICAgIHJldHVybiBjb25zdW1lVGltZShyYW5nZSwgVmFsdWVSYW5nZUFs
bCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkRpcmVjdGlvbjoKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVJZGVudDxDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVBbHRlcm5hdGUsIENTU1Zh
bHVlUmV2ZXJzZSwgQ1NTVmFsdWVBbHRlcm5hdGVSZXZlcnNlPihyYW5nZSk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUFuaW1hdGlvbkR1cmF0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0
aW9uRHVyYXRpb246CisgICAgICAgIHJldHVybiBjb25zdW1lVGltZShyYW5nZSwgVmFsdWVSYW5n
ZU5vbk5lZ2F0aXZlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uRmlsbE1vZGU6Cisg
ICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVOb25lLCBDU1NWYWx1ZUZvcndhcmRz
LCBDU1NWYWx1ZUJhY2t3YXJkcywgQ1NTVmFsdWVCb3RoPihyYW5nZSk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OgorICAgICAgICByZXR1cm4gY29uc3VtZUFu
aW1hdGlvbkl0ZXJhdGlvbkNvdW50KHJhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0
aW9uTmFtZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVBbmltYXRpb25OYW1lKHJhbmdlLCBjb250
ZXh0LCB1c2VMZWdhY3lQYXJzaW5nKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uUGxh
eVN0YXRlOgorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlUnVubmluZywgQ1NT
VmFsdWVQYXVzZWQ+KHJhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvblByb3Bl
cnR5OgorICAgICAgICByZXR1cm4gY29uc3VtZVRyYW5zaXRpb25Qcm9wZXJ0eShyYW5nZSk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb246CisgICAgICAgIHJldHVybiBjb25zdW1l
QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24ocmFuZ2UpOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cit9CisK
K3N0YXRpYyBib29sIGlzVmFsaWRBbmltYXRpb25Qcm9wZXJ0eUxpc3QoQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eSwgY29uc3QgQ1NTVmFsdWVMaXN0JiB2YWx1ZUxpc3QpCit7CisgICAgaWYgKHByb3Bl
cnR5ICE9IENTU1Byb3BlcnR5VHJhbnNpdGlvblByb3BlcnR5IHx8IHZhbHVlTGlzdC5sZW5ndGgo
KSA8IDIpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGZvciAoYXV0byYgdmFsdWUgOiB2YWx1
ZUxpc3QpIHsKKyAgICAgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYgdG9DU1NQ
cmltaXRpdmVWYWx1ZSgqdmFsdWUpLmlzVmFsdWVJRCgpCisgICAgICAgICAgICAmJiB0b0NTU1By
aW1pdGl2ZVZhbHVlKCp2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRp
YyBDU1NWYWx1ZUxpc3QqIGNvbnN1bWVBbmltYXRpb25Qcm9wZXJ0eUxpc3QoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNv
bnRleHQmIGNvbnRleHQsIGJvb2wgdXNlTGVnYWN5UGFyc2luZykKK3sKKyAgICBDU1NWYWx1ZUxp
c3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgZG8g
eworICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBjb25zdW1lQW5pbWF0aW9uVmFsdWUocHJvcGVy
dHksIHJhbmdlLCBjb250ZXh0LCB1c2VMZWdhY3lQYXJzaW5nKTsKKyAgICAgICAgaWYgKCF2YWx1
ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBsaXN0LT5hcHBlbmQoKnZh
bHVlKTsKKyAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdl
KSk7CisgICAgaWYgKCFpc1ZhbGlkQW5pbWF0aW9uUHJvcGVydHlMaXN0KHByb3BlcnR5LCAqbGlz
dCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIEFTU0VSVChsaXN0LT5sZW5ndGgoKSk7
CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVB
bmltYXRpb25TaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5k
LCBib29sIHVzZUxlZ2FjeVBhcnNpbmcsIGJvb2wgaW1wb3J0YW50KQoreworICAgIGNvbnN0IHVu
c2lnbmVkIGxvbmdoYW5kQ291bnQgPSBzaG9ydGhhbmQubGVuZ3RoKCk7CisgICAgQ1NTVmFsdWVM
aXN0KiBsb25naGFuZHNbOF07CisgICAgQVNTRVJUKGxvbmdoYW5kQ291bnQgPD0gOCk7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBsb25naGFuZENvdW50OyArK2kpCisgICAgICAgIGxvbmdo
YW5kc1tpXSA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKworICAgIGRv
IHsKKyAgICAgICAgYm9vbCBwYXJzZWRMb25naGFuZFs4XSA9IHsgZmFsc2UgfTsKKyAgICAgICAg
ZG8geworICAgICAgICAgICAgYm9vbCBmb3VuZFByb3BlcnR5ID0gZmFsc2U7CisgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxvbmdoYW5kQ291bnQ7ICsraSkgeworICAgICAgICAg
ICAgICAgIGlmIChwYXJzZWRMb25naGFuZFtpXSkKKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgICAgICAgICBpZiAoQ1NTVmFsdWUqIHZhbHVlID0gY29uc3VtZUFuaW1h
dGlvblZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV0sIG1fcmFuZ2UsIG1fY29udGV4dCwg
dXNlTGVnYWN5UGFyc2luZykpIHsKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VkTG9uZ2hhbmRb
aV0gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBmb3VuZFByb3BlcnR5ID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgbG9uZ2hhbmRzW2ldLT5hcHBlbmQoKnZhbHVlKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKCFmb3VuZFByb3BlcnR5KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfSB3aGlsZSAoIW1fcmFuZ2UuYXRFbmQoKSAmJiBtX3JhbmdlLnBlZWsoKS50
eXBlKCkgIT0gQ29tbWFUb2tlbik7CisKKyAgICAgICAgLy8gVE9ETyh0aW1sb2gpOiBUaGlzIHdp
bGwgbWFrZSBpbnZhbGlkIGxvbmdoYW5kcywgc2VlIGNyYnVnLmNvbS8zODY0NTkKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBsb25naGFuZENvdW50OyArK2kpIHsKKyAgICAgICAgICAg
IGlmICghcGFyc2VkTG9uZ2hhbmRbaV0pCisgICAgICAgICAgICAgICAgbG9uZ2hhbmRzW2ldLT5h
cHBlbmQoKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSk7CisgICAgICAg
ICAgICBwYXJzZWRMb25naGFuZFtpXSA9IGZhbHNlOworICAgICAgICB9CisgICAgfSB3aGlsZSAo
Y29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShtX3JhbmdlKSk7CisKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGxvbmdoYW5kQ291bnQ7ICsraSkgeworICAgICAgICBpZiAoIWlzVmFs
aWRBbmltYXRpb25Qcm9wZXJ0eUxpc3Qoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSwgKmxvbmdo
YW5kc1tpXSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsb25naGFuZENvdW50OyArK2kpCisgICAgICAgIGFkZFByb3BlcnR5
KHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV0sIHNob3J0aGFuZC5pZCgpLCAqbG9uZ2hhbmRzW2ld
LCBpbXBvcnRhbnQpOworCisgICAgcmV0dXJuIG1fcmFuZ2UuYXRFbmQoKTsKK30KKworc3RhdGlj
IENTU1ZhbHVlKiBjb25zdW1lWkluZGV4KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQorewor
ICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIHJldHVy
biBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lSW50ZWdlcihyYW5nZSk7
Cit9CisKK3N0YXRpYyBDU1NTaGFkb3dWYWx1ZSogcGFyc2VTaW5nbGVTaGFkb3coQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgYm9vbCBhbGxv
d0luc2V0LCBib29sIGFsbG93U3ByZWFkKQoreworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzdHls
ZSA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIGNvbG9yID0gbnVsbHB0cjsKKworICAgIGlmIChy
YW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAocmFuZ2UucGVl
aygpLmlkKCkgPT0gQ1NTVmFsdWVJbnNldCkgeworICAgICAgICBpZiAoIWFsbG93SW5zZXQpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgc3R5bGUgPSBjb25zdW1lSWRlbnQo
cmFuZ2UpOworICAgIH0KKyAgICBjb2xvciA9IGNvbnN1bWVDb2xvcihyYW5nZSwgY3NzUGFyc2Vy
TW9kZSk7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogaG9yaXpvbnRhbE9mZnNldCA9IGNvbnN1
bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgIGlmICgh
aG9yaXpvbnRhbE9mZnNldCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogdmVydGljYWxPZmZzZXQgPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJz
ZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBpZiAoIXZlcnRpY2FsT2Zmc2V0KQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBibHVyUmFkaXVzID0g
Y29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHNwcmVhZERpc3RhbmNlID0gbnVsbHB0cjsKKyAgICBpZiAoYmx1
clJhZGl1cykgeworICAgICAgICAvLyBCbHVyIHJhZGl1cyBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4K
KyAgICAgICAgaWYgKGJsdXJSYWRpdXMtPmdldERvdWJsZVZhbHVlKCkgPCAwKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGlmIChhbGxvd1NwcmVhZCkKKyAgICAgICAgICAg
IHNwcmVhZERpc3RhbmNlID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFs
dWVSYW5nZUFsbCk7CisgICAgfQorCisgICAgaWYgKCFyYW5nZS5hdEVuZCgpKSB7CisgICAgICAg
IGlmICghY29sb3IpCisgICAgICAgICAgICBjb2xvciA9IGNvbnN1bWVDb2xvcihyYW5nZSwgY3Nz
UGFyc2VyTW9kZSk7CisgICAgICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUlu
c2V0KSB7CisgICAgICAgICAgICBpZiAoIWFsbG93SW5zZXQgfHwgc3R5bGUpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBzdHlsZSA9IGNvbnN1bWVJZGVudChy
YW5nZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIENTU1NoYWRvd1ZhbHVlOjpjcmVh
dGUoaG9yaXpvbnRhbE9mZnNldCwgdmVydGljYWxPZmZzZXQsIGJsdXJSYWRpdXMsCisgICAgICAg
IHNwcmVhZERpc3RhbmNlLCBzdHlsZSwgY29sb3IpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNv
bnN1bWVTaGFkb3coQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3Nz
UGFyc2VyTW9kZSwgYm9vbCBpc0JveFNoYWRvd1Byb3BlcnR5KQoreworICAgIGlmIChyYW5nZS5w
ZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQo
cmFuZ2UpOworCisgICAgQ1NTVmFsdWVMaXN0KiBzaGFkb3dWYWx1ZUxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgZG8geworICAgICAgICBpZiAoQ1NTU2hh
ZG93VmFsdWUqIHNoYWRvd1ZhbHVlID0gcGFyc2VTaW5nbGVTaGFkb3cocmFuZ2UsIGNzc1BhcnNl
ck1vZGUsIGlzQm94U2hhZG93UHJvcGVydHksIGlzQm94U2hhZG93UHJvcGVydHkpKQorICAgICAg
ICAgICAgc2hhZG93VmFsdWVMaXN0LT5hcHBlbmQoKnNoYWRvd1ZhbHVlKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1h
SW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpOworICAgIHJldHVybiBzaGFkb3dWYWx1ZUxpc3Q7
Cit9CisKK3N0YXRpYyBDU1NGdW5jdGlvblZhbHVlKiBjb25zdW1lRmlsdGVyRnVuY3Rpb24oQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQp
Cit7CisgICAgQ1NTVmFsdWVJRCBmaWx0ZXJUeXBlID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQo
KTsKKyAgICBpZiAoZmlsdGVyVHlwZSA8IENTU1ZhbHVlSW52ZXJ0IHx8IGZpbHRlclR5cGUgPiBD
U1NWYWx1ZURyb3BTaGFkb3cpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIENTU1BhcnNl
clRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7CisgICAgQ1NTRnVuY3Rp
b25WYWx1ZSogZmlsdGVyVmFsdWUgPSBDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUoZmlsdGVyVHlw
ZSk7CisgICAgQ1NTVmFsdWUqIHBhcnNlZFZhbHVlID0gbnVsbHB0cjsKKworICAgIGlmIChmaWx0
ZXJUeXBlID09IENTU1ZhbHVlRHJvcFNoYWRvdykgeworICAgICAgICBwYXJzZWRWYWx1ZSA9IHBh
cnNlU2luZ2xlU2hhZG93KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBmYWxzZSwgZmFsc2UpOworICAg
IH0gZWxzZSB7CisgICAgICAgIGlmIChhcmdzLmF0RW5kKCkpIHsKKyAgICAgICAgICAgIGlmIChj
b250ZXh0LnVzZUNvdW50ZXIoKSkKKyAgICAgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIo
KS0+Y291bnQoVXNlQ291bnRlcjo6Q1NTRmlsdGVyRnVuY3Rpb25Ob0FyZ3VtZW50cyk7CisgICAg
ICAgICAgICByZXR1cm4gZmlsdGVyVmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZpbHRl
clR5cGUgPT0gQ1NTVmFsdWVCcmlnaHRuZXNzKSB7CisgICAgICAgICAgICAvLyBGSVhNRSAoY3Ji
dWcuY29tLzM5NzA2MSk6IFN1cHBvcnQgY2FsYyBleHByZXNzaW9ucyBsaWtlIGNhbGMoMTAlICsg
MC41KQorICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lUGVyY2VudChhcmdzLCBWYWx1
ZVJhbmdlQWxsKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICAg
ICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lTnVtYmVyKGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAg
ICAgICB9IGVsc2UgaWYgKGZpbHRlclR5cGUgPT0gQ1NTVmFsdWVIdWVSb3RhdGUpIHsKKyAgICAg
ICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUFuZ2xlKGFyZ3MpOworICAgICAgICB9IGVsc2Ug
aWYgKGZpbHRlclR5cGUgPT0gQ1NTVmFsdWVCbHVyKSB7CisgICAgICAgICAgICBwYXJzZWRWYWx1
ZSA9IGNvbnN1bWVMZW5ndGgoYXJncywgSFRNTFN0YW5kYXJkTW9kZSwgVmFsdWVSYW5nZU5vbk5l
Z2F0aXZlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEZJWE1FIChjcmJ1Zy5j
b20vMzk3MDYxKTogU3VwcG9ydCBjYWxjIGV4cHJlc3Npb25zIGxpa2UgY2FsYygxMCUgKyAwLjUp
CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVQZXJjZW50KGFyZ3MsIFZhbHVlUmFu
Z2VOb25OZWdhdGl2ZSk7CisgICAgICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAg
ICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdlTm9uTmVn
YXRpdmUpOworICAgICAgICAgICAgaWYgKHBhcnNlZFZhbHVlICYmIGZpbHRlclR5cGUgIT0gQ1NT
VmFsdWVTYXR1cmF0ZSAmJiBmaWx0ZXJUeXBlICE9IENTU1ZhbHVlQ29udHJhc3QpIHsKKyAgICAg
ICAgICAgICAgICBib29sIGlzUGVyY2VudGFnZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUocGFyc2Vk
VmFsdWUpLT5pc1BlcmNlbnRhZ2UoKTsKKyAgICAgICAgICAgICAgICBkb3VibGUgbWF4QWxsb3dl
ZCA9IGlzUGVyY2VudGFnZSA/IDEwMC4wIDogMS4wOworICAgICAgICAgICAgICAgIGlmICh0b0NT
U1ByaW1pdGl2ZVZhbHVlKHBhcnNlZFZhbHVlKS0+Z2V0RG91YmxlVmFsdWUoKSA+IG1heEFsbG93
ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgbWF4QWxsb3dlZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlzUGVyY2VudGFnZSA/IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZTo6UGVyY2VudGFnZSA6IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgaWYg
KCFwYXJzZWRWYWx1ZSB8fCAhYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBmaWx0ZXJWYWx1ZS0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAgcmV0dXJuIGZpbHRl
clZhbHVlOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVGaWx0ZXIoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAg
aWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgZG8geworICAgICAgICBDU1NWYWx1ZSog
ZmlsdGVyVmFsdWUgPSBjb25zdW1lVXJsKHJhbmdlKTsKKyAgICAgICAgaWYgKCFmaWx0ZXJWYWx1
ZSkgeworICAgICAgICAgICAgZmlsdGVyVmFsdWUgPSBjb25zdW1lRmlsdGVyRnVuY3Rpb24ocmFu
Z2UsIGNvbnRleHQpOworICAgICAgICAgICAgaWYgKCFmaWx0ZXJWYWx1ZSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBsaXN0LT5hcHBlbmQoKmZp
bHRlclZhbHVlKTsKKyAgICB9IHdoaWxlICghcmFuZ2UuYXRFbmQoKSk7CisgICAgcmV0dXJuIGxp
c3Q7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVRleHREZWNvcmF0aW9uTGluZShDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVl
aygpLmlkKCk7CisgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIGlkZW50ID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQmxpbmssIENT
U1ZhbHVlVW5kZXJsaW5lLCBDU1NWYWx1ZU92ZXJsaW5lLCBDU1NWYWx1ZUxpbmVUaHJvdWdoPihy
YW5nZSk7CisgICAgICAgIGlmICghaWRlbnQpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
aWYgKGxpc3QtPmhhc1ZhbHVlKCppZGVudCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgbGlzdC0+YXBwZW5kKCppZGVudCk7CisgICAgfQorCisgICAgaWYgKCFsaXN0LT5s
ZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisK
Ky8vIG5vbmUgfCBzdHJpY3QgfCBjb250ZW50IHwgWyBsYXlvdXQgfHwgc3R5bGUgfHwgcGFpbnQg
fHwgc2l6ZSBdCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDb250YWluKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlKQoreworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuaWQoKTsK
KyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50
KHJhbmdlKTsKKworICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
U3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVTdHJpY3QgfHwgaWQgPT0g
Q1NTVmFsdWVDb250ZW50KSB7CisgICAgICAgIGxpc3QtPmFwcGVuZCgqY29uc3VtZUlkZW50KHJh
bmdlKSk7CisgICAgICAgIHJldHVybiBsaXN0OworICAgIH0KKyAgICB3aGlsZSAodHJ1ZSkgewor
ICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogaWRlbnQgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVQ
YWludCwgQ1NTVmFsdWVMYXlvdXQsIENTU1ZhbHVlU3R5bGUsIENTU1ZhbHVlU2l6ZT4ocmFuZ2Up
OworICAgICAgICBpZiAoIWlkZW50KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChs
aXN0LT5oYXNWYWx1ZSgqaWRlbnQpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIGxpc3QtPmFwcGVuZCgqaWRlbnQpOworICAgIH0KKworICAgIGlmICghbGlzdC0+bGVuZ3Ro
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBsaXN0OworfQorCitzdGF0
aWMgQ1NTVmFsdWUqIGNvbnN1bWVQYXRoKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQorewor
ICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgPHVybD4sIDxiYXNpYy1zaGFwZT4sIDxnZW9t
ZXRyeS1ib3g+LgorICAgIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpICE9IENTU1ZhbHVl
UGF0aCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdl
IGZ1bmN0aW9uUmFuZ2UgPSByYW5nZTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGZ1bmN0aW9u
QXJncyA9IGNvbnN1bWVGdW5jdGlvbihmdW5jdGlvblJhbmdlKTsKKworICAgIGlmIChmdW5jdGlv
bkFyZ3MucGVlaygpLnR5cGUoKSAhPSBTdHJpbmdUb2tlbikKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgU3RyaW5nIHBhdGhTdHJpbmcgPSBmdW5jdGlvbkFyZ3MuY29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UoKS52YWx1ZSgpLnRvU3RyaW5nKCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
U1ZHUGF0aEJ5dGVTdHJlYW0+IGJ5dGVTdHJlYW0gPSBTVkdQYXRoQnl0ZVN0cmVhbTo6Y3JlYXRl
KCk7CisgICAgaWYgKGJ1aWxkQnl0ZVN0cmVhbUZyb21TdHJpbmcocGF0aFN0cmluZywgKmJ5dGVT
dHJlYW0pICE9IFNWR1BhcnNlU3RhdHVzOjpOb0Vycm9yCisgICAgICAgIHx8ICFmdW5jdGlvbkFy
Z3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByYW5nZSA9IGZ1bmN0
aW9uUmFuZ2U7CisgICAgaWYgKGJ5dGVTdHJlYW0tPmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSk7CisgICAg
cmV0dXJuIENTU1BhdGhWYWx1ZTo6Y3JlYXRlKHN0ZDo6bW92ZShieXRlU3RyZWFtKSk7Cit9CisK
K3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVBhdGhPck5vbmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UpCit7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgIGlm
IChpZCA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2Up
OworCisgICAgcmV0dXJuIGNvbnN1bWVQYXRoKHJhbmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVl
KiBjb25zdW1lTW90aW9uUm90YXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7Cisg
ICAgQ1NTVmFsdWUqIGFuZ2xlID0gY29uc3VtZUFuZ2xlKHJhbmdlKTsKKyAgICBDU1NWYWx1ZSog
a2V5d29yZCA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlUmV2ZXJzZT4ocmFu
Z2UpOworICAgIGlmICghYW5nbGUgJiYgIWtleXdvcmQpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgaWYgKCFhbmdsZSkKKyAgICAgICAgYW5nbGUgPSBjb25zdW1lQW5nbGUocmFuZ2Up
OworCisgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNl
cGFyYXRlZCgpOworICAgIGlmIChrZXl3b3JkKQorICAgICAgICBsaXN0LT5hcHBlbmQoKmtleXdv
cmQpOworICAgIGlmIChhbmdsZSkKKyAgICAgICAgbGlzdC0+YXBwZW5kKCphbmdsZSk7CisgICAg
cmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVRleHRFbXBoYXNpc1N0
eWxlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIENTU1ZhbHVlSUQgaWQgPSBy
YW5nZS5wZWVrKCkuaWQoKTsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICBy
ZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIGlmIChDU1NWYWx1ZSogdGV4dEVtcGhh
c2lzU3R5bGUgPSBjb25zdW1lU3RyaW5nKHJhbmdlKSkKKyAgICAgICAgcmV0dXJuIHRleHRFbXBo
YXNpc1N0eWxlOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpbGwgPSBjb25zdW1lSWRlbnQ8
Q1NTVmFsdWVGaWxsZWQsIENTU1ZhbHVlT3Blbj4ocmFuZ2UpOworICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBzaGFwZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZURvdCwgQ1NTVmFsdWVDaXJjbGUsIENT
U1ZhbHVlRG91YmxlQ2lyY2xlLCBDU1NWYWx1ZVRyaWFuZ2xlLCBDU1NWYWx1ZVNlc2FtZT4ocmFu
Z2UpOworICAgIGlmICghZmlsbCkKKyAgICAgICAgZmlsbCA9IGNvbnN1bWVJZGVudDxDU1NWYWx1
ZUZpbGxlZCwgQ1NTVmFsdWVPcGVuPihyYW5nZSk7CisgICAgaWYgKGZpbGwgJiYgc2hhcGUpIHsK
KyAgICAgICAgQ1NTVmFsdWVMaXN0KiBwYXJzZWRWYWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgIHBhcnNlZFZhbHVlcy0+YXBwZW5kKCpmaWxsKTsK
KyAgICAgICAgcGFyc2VkVmFsdWVzLT5hcHBlbmQoKnNoYXBlKTsKKyAgICAgICAgcmV0dXJuIHBh
cnNlZFZhbHVlczsKKyAgICB9CisgICAgaWYgKGZpbGwpCisgICAgICAgIHJldHVybiBmaWxsOwor
ICAgIGlmIChzaGFwZSkKKyAgICAgICAgcmV0dXJuIHNoYXBlOworICAgIHJldHVybiBudWxscHRy
OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVPdXRsaW5lQ29sb3IoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICAvLyBB
bGxvdyB0aGUgc3BlY2lhbCBmb2N1cyBjb2xvciBldmVuIGluIEhUTUwgU3RhbmRhcmQgcGFyc2lu
ZyBtb2RlLgorICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZVdlYmtpdEZvY3Vz
UmluZ0NvbG9yKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1
cm4gY29uc3VtZUNvbG9yKHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKK30KKworc3RhdGljIENTU1By
aW1pdGl2ZVZhbHVlKiBjb25zdW1lTGluZVdpZHRoKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCit7
CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgIGlmIChpZCA9PSBD
U1NWYWx1ZVRoaW4gfHwgaWQgPT0gQ1NTVmFsdWVNZWRpdW0gfHwgaWQgPT0gQ1NTVmFsdWVUaGlj
aykKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1
bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwgdW5p
dGxlc3MpOworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVCb3JkZXJXaWR0
aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2Rl
LCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzKQoreworICAgIHJldHVybiBjb25zdW1lTGluZVdpZHRo
KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7Cit9CisKK3N0YXRpYyBDU1NQcmltaXRp
dmVWYWx1ZSogY29uc3VtZVRleHRTdHJva2VXaWR0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIHJldHVybiBjb25zdW1lTGlu
ZVdpZHRoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworfQor
CitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVDb2x1bW5SdWxlV2lkdGgoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAg
ICByZXR1cm4gY29uc3VtZUxpbmVXaWR0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NR
dWlyazo6Rm9yYmlkKTsKK30KKworc3RhdGljIGJvb2wgY29uc3VtZVRyYW5zbGF0ZTNkKENTU1Bh
cnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgQ1NTRnVu
Y3Rpb25WYWx1ZSomIHRyYW5zZm9ybVZhbHVlKQoreworICAgIHVuc2lnbmVkIG51bWJlck9mQXJn
dW1lbnRzID0gMjsKKyAgICBDU1NWYWx1ZSogcGFyc2VkVmFsdWUgPSBudWxscHRyOworICAgIGRv
IHsKKyAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNz
c1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5k
KCpwYXJzZWRWYWx1ZSk7CisgICAgICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVz
cGFjZShhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IHdoaWxlICgtLW51
bWJlck9mQXJndW1lbnRzKTsKKyAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGgoYXJncywg
Y3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKCFwYXJzZWRWYWx1ZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoKnBhcnNlZFZh
bHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgY29uc3VtZU51bWJlcnMo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTRnVuY3Rpb25WYWx1ZSomIHRyYW5zZm9ybVZh
bHVlLCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cykKK3sKKyAgICBkbyB7CisgICAgICAgIENT
U1ZhbHVlKiBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7
CisgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICAgICAgaWYg
KC0tbnVtYmVyT2ZBcmd1bWVudHMgJiYgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2Uo
YXJncykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSB3aGlsZSAobnVtYmVyT2ZB
cmd1bWVudHMpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBjb25zdW1lUGVy
c3BlY3RpdmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJz
ZXJNb2RlLCBDU1NGdW5jdGlvblZhbHVlKiYgdHJhbnNmb3JtVmFsdWUsIGJvb2wgdXNlTGVnYWN5
UGFyc2luZykKK3sKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcGFyc2VkVmFsdWUgPSBjb25zdW1l
TGVuZ3RoKGFyZ3MsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAg
aWYgKCFwYXJzZWRWYWx1ZSAmJiB1c2VMZWdhY3lQYXJzaW5nKSB7CisgICAgICAgIGRvdWJsZSBw
ZXJzcGVjdGl2ZTsKKyAgICAgICAgaWYgKCFjb25zdW1lTnVtYmVyUmF3KGFyZ3MsIHBlcnNwZWN0
aXZlKSB8fCBwZXJzcGVjdGl2ZSA8IDApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHBhcnNlZFZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShwZXJzcGVjdGl2ZSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQaXhlbHMpOworICAgIH0KKyAgICBpZiAoIXBh
cnNlZFZhbHVlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdHJhbnNmb3JtVmFsdWUtPmFw
cGVuZCgqcGFyc2VkVmFsdWUpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgQ1NTVmFs
dWUqIGNvbnN1bWVUcmFuc2Zvcm1WYWx1ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NT
UGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBib29sIHVzZUxlZ2FjeVBhcnNpbmcpCit7CisgICAg
Q1NTVmFsdWVJRCBmdW5jdGlvbklkID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKTsKKyAgICBp
ZiAoZnVuY3Rpb25JZCA9PSBDU1NWYWx1ZUludmFsaWQpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7
CisgICAgaWYgKGFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NT
RnVuY3Rpb25WYWx1ZSogdHJhbnNmb3JtVmFsdWUgPSBDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUo
ZnVuY3Rpb25JZCk7CisgICAgQ1NTVmFsdWUqIHBhcnNlZFZhbHVlID0gbnVsbHB0cjsKKyAgICBz
d2l0Y2ggKGZ1bmN0aW9uSWQpIHsKKyAgICBjYXNlIENTU1ZhbHVlUm90YXRlOgorICAgIGNhc2Ug
Q1NTVmFsdWVSb3RhdGVYOgorICAgIGNhc2UgQ1NTVmFsdWVSb3RhdGVZOgorICAgIGNhc2UgQ1NT
VmFsdWVSb3RhdGVaOgorICAgIGNhc2UgQ1NTVmFsdWVTa2V3WDoKKyAgICBjYXNlIENTU1ZhbHVl
U2tld1k6CisgICAgY2FzZSBDU1NWYWx1ZVNrZXc6CisgICAgICAgIHBhcnNlZFZhbHVlID0gY29u
c3VtZUFuZ2xlKGFyZ3MpOworICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIGlmIChmdW5jdGlvbklkID09IENTU1ZhbHVlU2tldyAm
JiBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKSB7CisgICAgICAgICAgICB0
cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAgICAgICAgICBwYXJzZWRW
YWx1ZSA9IGNvbnN1bWVBbmdsZShhcmdzKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VkVmFsdWUp
CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDU1NWYWx1ZVNjYWxlWDoKKyAgICBjYXNlIENTU1ZhbHVlU2NhbGVZOgor
ICAgIGNhc2UgQ1NTVmFsdWVTY2FsZVo6CisgICAgY2FzZSBDU1NWYWx1ZVNjYWxlOgorICAgICAg
ICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAg
ICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgaWYgKGZ1bmN0aW9uSWQgPT0gQ1NTVmFsdWVTY2FsZSAmJiBjb25zdW1lQ29tbWFJbmNsdWRp
bmdXaGl0ZXNwYWNlKGFyZ3MpKSB7CisgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5k
KCpwYXJzZWRWYWx1ZSk7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVOdW1iZXIo
YXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQ1NTVmFsdWVQZXJzcGVjdGl2ZToKKyAgICAgICAgaWYgKCFjb25zdW1lUGVyc3Bl
Y3RpdmUoYXJncywgY3NzUGFyc2VyTW9kZSwgdHJhbnNmb3JtVmFsdWUsIHVzZUxlZ2FjeVBhcnNp
bmcpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQ1NTVmFsdWVUcmFuc2xhdGVYOgorICAgIGNhc2UgQ1NTVmFsdWVUcmFuc2xhdGVZOgorICAg
IGNhc2UgQ1NTVmFsdWVUcmFuc2xhdGU6CisgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUxl
bmd0aE9yUGVyY2VudChhcmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAg
ICAgaWYgKCFwYXJzZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICBpZiAoZnVuY3Rpb25JZCA9PSBDU1NWYWx1ZVRyYW5zbGF0ZSAmJiBjb25zdW1lQ29tbWFJbmNs
dWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKSB7CisgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBw
ZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5n
dGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAg
ICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVUcmFuc2xhdGVaOgor
ICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGgoYXJncywgY3NzUGFyc2VyTW9kZSwg
VmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVNYXRyaXg6
CisgICAgY2FzZSBDU1NWYWx1ZU1hdHJpeDNkOgorICAgICAgICBpZiAoIWNvbnN1bWVOdW1iZXJz
KGFyZ3MsIHRyYW5zZm9ybVZhbHVlLCAoZnVuY3Rpb25JZCA9PSBDU1NWYWx1ZU1hdHJpeDNkKSA/
IDE2IDogNikpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBDU1NWYWx1ZVNjYWxlM2Q6CisgICAgICAgIGlmICghY29uc3VtZU51bWJlcnMoYXJn
cywgdHJhbnNmb3JtVmFsdWUsIDMpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVSb3RhdGUzZDoKKyAgICAgICAgaWYgKCFjb25z
dW1lTnVtYmVycyhhcmdzLCB0cmFuc2Zvcm1WYWx1ZSwgMykgfHwgIWNvbnN1bWVDb21tYUluY2x1
ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lQW5nbGUoYXJncyk7CisgICAgICAgIGlmICghcGFyc2Vk
VmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBDU1NWYWx1ZVRyYW5zbGF0ZTNkOgorICAgICAgICBpZiAoIWNvbnN1bWVUcmFuc2xhdGUz
ZChhcmdzLCBjc3NQYXJzZXJNb2RlLCB0cmFuc2Zvcm1WYWx1ZSkpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorICAgIGlmIChwYXJzZWRWYWx1ZSkKKyAgICAgICAgdHJhbnNmb3Jt
VmFsdWUtPmFwcGVuZCgqcGFyc2VkVmFsdWUpOworICAgIGlmICghYXJncy5hdEVuZCgpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gdHJhbnNmb3JtVmFsdWU7Cit9CisKK3N0
YXRpYyBDU1NWYWx1ZSogY29uc3VtZVRyYW5zZm9ybShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBib29sIHVzZUxlZ2FjeVBhcnNpbmcpCit7
CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgZG8geworICAgICAgICBDU1NW
YWx1ZSogcGFyc2VkVHJhbnNmb3JtVmFsdWUgPSBjb25zdW1lVHJhbnNmb3JtVmFsdWUocmFuZ2Us
IGNzc1BhcnNlck1vZGUsIHVzZUxlZ2FjeVBhcnNpbmcpOworICAgICAgICBpZiAoIXBhcnNlZFRy
YW5zZm9ybVZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGxpc3Qt
PmFwcGVuZCgqcGFyc2VkVHJhbnNmb3JtVmFsdWUpOworICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVu
ZCgpKTsKKworICAgIHJldHVybiBsaXN0OworfQorCit0ZW1wbGF0ZSA8Q1NTVmFsdWVJRCBzdGFy
dCwgQ1NTVmFsdWVJRCBlbmQ+CitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVQb3NpdGlvbkxvbmdo
YW5kKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1v
ZGUpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gSWRlbnRUb2tlbikgeworICAg
ICAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgICAgIGludCBwZXJj
ZW50OworICAgICAgICBpZiAoaWQgPT0gc3RhcnQpCisgICAgICAgICAgICBwZXJjZW50ID0gMDsK
KyAgICAgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVDZW50ZXIpCisgICAgICAgICAgICBwZXJj
ZW50ID0gNTA7CisgICAgICAgIGVsc2UgaWYgKGlkID09IGVuZCkKKyAgICAgICAgICAgIHBlcmNl
bnQgPSAxMDA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShwZXJjZW50LCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGU6OlBlcmNlbnRhZ2UpOworICAgIH0KKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVy
Y2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7Cit9CisKK3N0YXRpYyBD
U1NWYWx1ZSogY29uc3VtZVBvc2l0aW9uWChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NT
UGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIHJldHVybiBjb25zdW1lUG9zaXRpb25M
b25naGFuZDxDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KHJhbmdlLCBjc3NQYXJzZXJNb2Rl
KTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lUG9zaXRpb25ZKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgcmV0dXJu
IGNvbnN1bWVQb3NpdGlvbkxvbmdoYW5kPENTU1ZhbHVlVG9wLCBDU1NWYWx1ZUJvdHRvbT4ocmFu
Z2UsIGNzc1BhcnNlck1vZGUpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVQYWludFN0
cm9rZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJN
b2RlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAg
ICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIENTU1VSSVZhbHVlKiB1cmwgPSBj
b25zdW1lVXJsKHJhbmdlKTsKKyAgICBpZiAodXJsKSB7CisgICAgICAgIENTU1ZhbHVlKiBwYXJz
ZWRWYWx1ZSA9IG51bGxwdHI7CisgICAgICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NW
YWx1ZU5vbmUpCisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVJZGVudChyYW5nZSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUNvbG9yKHJh
bmdlLCBjc3NQYXJzZXJNb2RlKTsKKyAgICAgICAgaWYgKHBhcnNlZFZhbHVlKSB7CisgICAgICAg
ICAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKKyAgICAgICAgICAgIHZhbHVlcy0+YXBwZW5kKCp1cmwpOworICAgICAgICAgICAg
dmFsdWVzLT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZXM7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHVybDsKKyAgICB9CisgICAgcmV0dXJuIGNvbnN1
bWVDb2xvcihyYW5nZSwgY3NzUGFyc2VyTW9kZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29u
c3VtZVBhaW50T3JkZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJh
bmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9ybWFsKQorICAgICAgICByZXR1cm4gY29uc3Vt
ZUlkZW50KHJhbmdlKTsKKworICAgIFZlY3RvcjxDU1NWYWx1ZUlELCAzPiBwYWludFR5cGVMaXN0
OworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmaWxsID0gbnVsbHB0cjsKKyAgICBDU1NQcmltaXRp
dmVWYWx1ZSogc3Ryb2tlID0gbnVsbHB0cjsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogbWFya2Vy
cyA9IG51bGxwdHI7CisgICAgZG8geworICAgICAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVl
aygpLmlkKCk7CisgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUZpbGwgJiYgIWZpbGwpCisgICAg
ICAgICAgICBmaWxsID0gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICAgICAgZWxzZSBpZiAoaWQg
PT0gQ1NTVmFsdWVTdHJva2UgJiYgIXN0cm9rZSkKKyAgICAgICAgICAgIHN0cm9rZSA9IGNvbnN1
bWVJZGVudChyYW5nZSk7CisgICAgICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlTWFya2VycyAm
JiAhbWFya2VycykKKyAgICAgICAgICAgIG1hcmtlcnMgPSBjb25zdW1lSWRlbnQocmFuZ2UpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcGFpbnRU
eXBlTGlzdC5hcHBlbmQoaWQpOworICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgpKTsKKworICAg
IC8vIEFmdGVyIHBhcnNpbmcgd2Ugc2VyaWFsaXplIHRoZSBwYWludC1vcmRlciBsaXN0LiBTaW5j
ZSBpdCBpcyBub3QgcG9zc2libGUgdG8KKyAgICAvLyBwb3AgYSBsYXN0IGxpc3QgaXRlbXMgZnJv
bSBDU1NWYWx1ZUxpc3Qgd2l0aG91dCBiaWdnZXIgY29zdCwgd2UgY3JlYXRlIHRoZQorICAgIC8v
IGxpc3QgYWZ0ZXIgcGFyc2luZy4KKyAgICBDU1NWYWx1ZUlEIGZpcnN0UGFpbnRPcmRlclR5cGUg
PSBwYWludFR5cGVMaXN0LmF0KDApOworICAgIENTU1ZhbHVlTGlzdCogcGFpbnRPcmRlckxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgc3dpdGNoIChmaXJz
dFBhaW50T3JkZXJUeXBlKSB7CisgICAgY2FzZSBDU1NWYWx1ZUZpbGw6CisgICAgY2FzZSBDU1NW
YWx1ZVN0cm9rZToKKyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZChmaXJzdFBhaW50T3Jk
ZXJUeXBlID09IENTU1ZhbHVlRmlsbCA/ICpmaWxsIDogKnN0cm9rZSk7CisgICAgICAgIGlmIChw
YWludFR5cGVMaXN0LnNpemUoKSA+IDEpIHsKKyAgICAgICAgICAgIGlmIChwYWludFR5cGVMaXN0
LmF0KDEpID09IENTU1ZhbHVlTWFya2VycykKKyAgICAgICAgICAgICAgICBwYWludE9yZGVyTGlz
dC0+YXBwZW5kKCptYXJrZXJzKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1ZhbHVlTWFya2VyczoKKyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZCgqbWFya2Vy
cyk7CisgICAgICAgIGlmIChwYWludFR5cGVMaXN0LnNpemUoKSA+IDEpIHsKKyAgICAgICAgICAg
IGlmIChwYWludFR5cGVMaXN0LmF0KDEpID09IENTU1ZhbHVlU3Ryb2tlKQorICAgICAgICAgICAg
ICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoKnN0cm9rZSk7CisgICAgICAgIH0KKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
fQorCisgICAgcmV0dXJuIHBhaW50T3JkZXJMaXN0OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNv
bnN1bWVOb25lT3JVUkkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJh
bmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJ
ZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVVcmwocmFuZ2UpOworfQorCitzdGF0aWMg
Q1NTVmFsdWUqIGNvbnN1bWVGbGV4QmFzaXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICAvLyBGSVhNRTogU3VwcG9ydCBpbnRy
aW5zaWMgZGltZW5zaW9ucyB0b28uCisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1Zh
bHVlQXV0bykKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJu
IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VO
b25OZWdhdGl2ZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVN0cm9rZURhc2hhcnJh
eShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFu
Z2UucGVlaygpLmlkKCk7CisgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIGRhc2hlcyA9IENT
U1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICBkbyB7CisgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBkYXNoID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgU1ZH
QXR0cmlidXRlTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgaWYgKCFkYXNo
IHx8IChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSAmJiByYW5nZS5hdEVu
ZCgpKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBkYXNoZXMtPmFwcGVu
ZCgqZGFzaCk7CisgICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpOworICAgIHJldHVybiBkYXNo
ZXM7Cit9CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUJhc2VsaW5lU2hpZnQo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdl
LnBlZWsoKS5pZCgpOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZUJhc2VsaW5lIHx8IGlkID09IENT
U1ZhbHVlU3ViIHx8IGlkID09IENTU1ZhbHVlU3VwZXIpCisgICAgICAgIHJldHVybiBjb25zdW1l
SWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBT
VkdBdHRyaWJ1dGVNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKK30KKworc3RhdGljIENTU1ByaW1pdGl2
ZVZhbHVlKiBjb25zdW1lUnhPclJ5KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAg
IGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBj
b25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJh
bmdlLCBTVkdBdHRyaWJ1dGVNb2RlLCBWYWx1ZVJhbmdlQWxsLCBVbml0bGVzc1F1aXJrOjpGb3Ji
aWQpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDdXJzb3IoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIGJvb2wgaW5RdWly
a3NNb2RlKQoreworICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IG51bGxwdHI7CisgICAgd2hpbGUg
KENTU1ZhbHVlKiBpbWFnZSA9IGNvbnN1bWVJbWFnZShyYW5nZSwgY29udGV4dCwgQ29uc3VtZUdl
bmVyYXRlZEltYWdlOjpGb3JiaWQpKSB7CisgICAgICAgIGRvdWJsZSBudW07CisgICAgICAgIElu
dFBvaW50IGhvdFNwb3QoLTEsIC0xKTsKKyAgICAgICAgYm9vbCBob3RTcG90U3BlY2lmaWVkID0g
ZmFsc2U7CisgICAgICAgIGlmIChjb25zdW1lTnVtYmVyUmF3KHJhbmdlLCBudW0pKSB7CisgICAg
ICAgICAgICBob3RTcG90LnNldFgoaW50KG51bSkpOworICAgICAgICAgICAgaWYgKCFjb25zdW1l
TnVtYmVyUmF3KHJhbmdlLCBudW0pKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICAgICAgaG90U3BvdC5zZXRZKGludChudW0pKTsKKyAgICAgICAgICAgIGhvdFNwb3RT
cGVjaWZpZWQgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFsaXN0KQorICAgICAg
ICAgICAgbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKworICAg
ICAgICBsaXN0LT5hcHBlbmQoKkNTU0N1cnNvckltYWdlVmFsdWU6OmNyZWF0ZShpbWFnZSwgaG90
U3BvdFNwZWNpZmllZCwgaG90U3BvdCkpOworICAgICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1
ZGluZ1doaXRlc3BhY2UocmFuZ2UpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCisgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgIGlmICghcmFu
Z2UuYXRFbmQoKSAmJiBjb250ZXh0LnVzZUNvdW50ZXIoKSkgeworICAgICAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVXZWJraXRab29tSW4pCisgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+
Y291bnQoVXNlQ291bnRlcjo6UHJlZml4ZWRDdXJzb3Jab29tSW4pOworICAgICAgICBlbHNlIGlm
IChpZCA9PSBDU1NWYWx1ZVdlYmtpdFpvb21PdXQpCisgICAgICAgICAgICBjb250ZXh0LnVzZUNv
dW50ZXIoKS0+Y291bnQoVXNlQ291bnRlcjo6UHJlZml4ZWRDdXJzb3Jab29tT3V0KTsKKyAgICB9
CisgICAgQ1NTVmFsdWUqIGN1cnNvclR5cGUgPSBudWxscHRyOworICAgIGlmIChpZCA9PSBDU1NW
YWx1ZUhhbmQpIHsKKyAgICAgICAgaWYgKCFpblF1aXJrc01vZGUpIC8vIE5vbi1zdGFuZGFyZCBi
ZWhhdmlvcgorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGN1cnNvclR5cGUg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVBvaW50ZXIpOwor
ICAgICAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgIH0gZWxzZSBp
ZiAoKGlkID49IENTU1ZhbHVlQXV0byAmJiBpZCA8PSBDU1NWYWx1ZVdlYmtpdFpvb21PdXQpIHx8
IGlkID09IENTU1ZhbHVlQ29weSB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpIHsKKyAgICAgICAgY3Vy
c29yVHlwZSA9IGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKCFsaXN0KQorICAgICAgICByZXR1cm4gY3Vy
c29yVHlwZTsKKyAgICBsaXN0LT5hcHBlbmQoKmN1cnNvclR5cGUpOworICAgIHJldHVybiBsaXN0
OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVBdHRyKENTU1BhcnNlclRva2VuUmFuZ2Ug
YXJncywgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KQoreworICAgIGlmIChhcmdzLnBlZWsoKS50
eXBlKCkgIT0gSWRlbnRUb2tlbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBTdHJp
bmcgYXR0ck5hbWUgPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50
b1N0cmluZygpOworICAgIGlmICghYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIGlmIChjb250ZXh0LmlzSFRNTERvY3VtZW50KCkpCisgICAgICAgIGF0dHJOYW1l
ID0gYXR0ck5hbWUubG93ZXIoKTsKKworICAgIENTU0Z1bmN0aW9uVmFsdWUqIGF0dHJWYWx1ZSA9
IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShDU1NWYWx1ZUF0dHIpOworICAgIGF0dHJWYWx1ZS0+
YXBwZW5kKCpDU1NDdXN0b21JZGVudFZhbHVlOjpjcmVhdGUoYXR0ck5hbWUpKTsKKyAgICByZXR1
cm4gYXR0clZhbHVlOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDb3VudGVyQ29udGVu
dChDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MsIGJvb2wgY291bnRlcnMpCit7CisgICAgQ1NTQ3Vz
dG9tSWRlbnRWYWx1ZSogaWRlbnRpZmllciA9IGNvbnN1bWVDdXN0b21JZGVudChhcmdzKTsKKyAg
ICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQ1NTU3Ry
aW5nVmFsdWUqIHNlcGFyYXRvciA9IG51bGxwdHI7CisgICAgaWYgKCFjb3VudGVycykgeworICAg
ICAgICBzZXBhcmF0b3IgPSBDU1NTdHJpbmdWYWx1ZTo6Y3JlYXRlKFN0cmluZygpKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJn
cykgfHwgYXJncy5wZWVrKCkudHlwZSgpICE9IFN0cmluZ1Rva2VuKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIHNlcGFyYXRvciA9IENTU1N0cmluZ1ZhbHVlOjpjcmVhdGUo
YXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVlKCkudG9TdHJpbmcoKSk7Cisg
ICAgfQorCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGxpc3RTdHlsZSA9IG51bGxwdHI7CisgICAg
aWYgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpIHsKKyAgICAgICAgQ1NT
VmFsdWVJRCBpZCA9IGFyZ3MucGVlaygpLmlkKCk7CisgICAgICAgIGlmICgoaWQgIT0gQ1NTVmFs
dWVOb25lICYmIChpZCA8IENTU1ZhbHVlRGlzYyB8fCBpZCA+IENTU1ZhbHVlS2F0YWthbmFJcm9o
YSkpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGxpc3RTdHlsZSA9IGNv
bnN1bWVJZGVudChhcmdzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBsaXN0U3R5bGUgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZURlY2ltYWwpOworICAgIH0K
KworICAgIGlmICghYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gQ1NTQ291bnRlclZhbHVlOjpjcmVhdGUoaWRlbnRpZmllciwgbGlzdFN0eWxlLCBzZXBh
cmF0b3IpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDb250ZW50KENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQpCit7CisgICAgaWYgKGlk
ZW50TWF0Y2hlczxDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlTm9ybWFsPihyYW5nZS5wZWVrKCkuaWQo
KSkpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgQ1NTVmFsdWVM
aXN0KiB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisKKyAg
ICBkbyB7CisgICAgICAgIENTU1ZhbHVlKiBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVJbWFnZShyYW5n
ZSwgY29udGV4dCk7CisgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICBwYXJz
ZWRWYWx1ZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZU9wZW5RdW90ZSwgQ1NTVmFsdWVDbG9zZVF1
b3RlLCBDU1NWYWx1ZU5vT3BlblF1b3RlLCBDU1NWYWx1ZU5vQ2xvc2VRdW90ZT4ocmFuZ2UpOwor
ICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25z
dW1lU3RyaW5nKHJhbmdlKTsKKyAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkgeworICAgICAgICAg
ICAgaWYgKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVBdHRyKQorICAgICAg
ICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUF0dHIoY29uc3VtZUZ1bmN0aW9uKHJhbmdl
KSwgY29udGV4dCk7CisgICAgICAgICAgICBlbHNlIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25J
ZCgpID09IENTU1ZhbHVlQ291bnRlcikKKyAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNv
bnN1bWVDb3VudGVyQ29udGVudChjb25zdW1lRnVuY3Rpb24ocmFuZ2UpLCBmYWxzZSk7CisgICAg
ICAgICAgICBlbHNlIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlQ291
bnRlcnMpCisgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lQ291bnRlckNvbnRl
bnQoY29uc3VtZUZ1bmN0aW9uKHJhbmdlKSwgdHJ1ZSk7CisgICAgICAgICAgICBpZiAoIXBhcnNl
ZFZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAg
ICAgIHZhbHVlcy0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAgfSB3aGlsZSAoIXJhbmdlLmF0
RW5kKCkpOworCisgICAgcmV0dXJuIHZhbHVlczsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZh
bHVlKiBjb25zdW1lUGVyc3BlY3RpdmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1Bh
cnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgQ1NTUHJvcGVydHlJRCB1bnJlc29sdmVkUHJvcGVydHkp
Cit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAg
cmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBhcnNl
ZFZhbHVlID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFs
bCk7CisgICAgaWYgKCFwYXJzZWRWYWx1ZSAmJiAodW5yZXNvbHZlZFByb3BlcnR5ID09IENTU1By
b3BlcnR5QWxpYXNXZWJraXRQZXJzcGVjdGl2ZSkpIHsKKyAgICAgICAgZG91YmxlIHBlcnNwZWN0
aXZlOworICAgICAgICBpZiAoIWNvbnN1bWVOdW1iZXJSYXcocmFuZ2UsIHBlcnNwZWN0aXZlKSkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBwYXJzZWRWYWx1ZSA9IENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUocGVyc3BlY3RpdmUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZTo6UGl4ZWxzKTsKKyAgICB9CisgICAgaWYgKHBhcnNlZFZhbHVlICYmIChwYXJzZWRWYWx1
ZS0+aXNDYWxjdWxhdGVkKCkgfHwgcGFyc2VkVmFsdWUtPmdldERvdWJsZVZhbHVlKCkgPiAwKSkK
KyAgICAgICAgcmV0dXJuIHBhcnNlZFZhbHVlOworICAgIHJldHVybiBudWxscHRyOworfQorCitz
dGF0aWMgQ1NTVmFsdWVMaXN0KiBjb25zdW1lUG9zaXRpb25MaXN0KENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgQ1NTVmFsdWVM
aXN0KiBwb3NpdGlvbnMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Cisg
ICAgZG8geworICAgICAgICBDU1NWYWx1ZSogcG9zaXRpb24gPSBjb25zdW1lUG9zaXRpb24ocmFu
Z2UsIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CisgICAgICAgIGlmICgh
cG9zaXRpb24pCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcG9zaXRpb25z
LT5hcHBlbmQoKnBvc2l0aW9uKTsKKyAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdX
aGl0ZXNwYWNlKHJhbmdlKSk7CisgICAgcmV0dXJuIHBvc2l0aW9uczsKK30KKworc3RhdGljIENT
U1ZhbHVlKiBjb25zdW1lU2Nyb2xsU25hcENvb3JkaW5hdGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAocmFuZ2UucGVl
aygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJh
bmdlKTsKKyAgICByZXR1cm4gY29uc3VtZVBvc2l0aW9uTGlzdChyYW5nZSwgY3NzUGFyc2VyTW9k
ZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVNjcm9sbFNuYXBQb2ludHMoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAg
ICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4g
Y29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICBpZiAocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9
PSBDU1NWYWx1ZVJlcGVhdCkgeworICAgICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBj
b25zdW1lRnVuY3Rpb24ocmFuZ2UpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcGFyc2Vk
VmFsdWUgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUsIFZhbHVl
UmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgIGlmIChhcmdzLmF0RW5kKCkgJiYgcGFyc2VkVmFs
dWUgJiYgKHBhcnNlZFZhbHVlLT5pc0NhbGN1bGF0ZWQoKSB8fCBwYXJzZWRWYWx1ZS0+Z2V0RG91
YmxlVmFsdWUoKSA+IDApKSB7CisgICAgICAgICAgICBDU1NGdW5jdGlvblZhbHVlKiByZXN1bHQg
PSBDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUoQ1NTVmFsdWVSZXBlYXQpOworICAgICAgICAgICAg
cmVzdWx0LT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NW
YWx1ZSogY29uc3VtZUJvcmRlclJhZGl1c0Nvcm5lcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIENTU1ZhbHVlKiBwYXJzZWRW
YWx1ZTEgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1
ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgIGlmICghcGFyc2VkVmFsdWUxKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogcGFyc2VkVmFsdWUyID0gY29uc3VtZUxlbmd0aE9y
UGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAg
ICBpZiAoIXBhcnNlZFZhbHVlMikKKyAgICAgICAgcGFyc2VkVmFsdWUyID0gcGFyc2VkVmFsdWUx
OworICAgIHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShwYXJzZWRWYWx1ZTEsIHBhcnNlZFZh
bHVlMiwgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVzKTsKK30KKworc3RhdGljIENT
U1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lVmVydGljYWxBbGlnbihDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVJZGVudFJhbmdlKHJhbmdlLCBDU1NWYWx1ZUJh
c2VsaW5lLCBDU1NWYWx1ZVdlYmtpdEJhc2VsaW5lTWlkZGxlKTsKKyAgICBpZiAoIXBhcnNlZFZh
bHVlKQorICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2Us
IGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwsIFVuaXRsZXNzUXVpcms6OkFsbG93KTsKKyAg
ICByZXR1cm4gcGFyc2VkVmFsdWU7Cit9CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29u
c3VtZVNoYXBlUmFkaXVzKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlck1vZGUg
Y3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlQ2xvc2VzdFNp
ZGUsIENTU1ZhbHVlRmFydGhlc3RTaWRlPihhcmdzLnBlZWsoKS5pZCgpKSkKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVJZGVudChhcmdzKTsKKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2Vu
dChhcmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworfQorCitzdGF0
aWMgQ1NTQmFzaWNTaGFwZUNpcmNsZVZhbHVlKiBjb25zdW1lQmFzaWNTaGFwZUNpcmNsZShDU1NQ
YXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQor
eworICAgIC8vIHNwZWM6IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtc2hhcGVzLyNzdXBw
b3J0ZWQtYmFzaWMtc2hhcGVzCisgICAgLy8gY2lyY2xlKCBbPHNoYXBlLXJhZGl1cz5dPyBbYXQg
PHBvc2l0aW9uPl0/ICkKKyAgICBDU1NCYXNpY1NoYXBlQ2lyY2xlVmFsdWUqIHNoYXBlID0gQ1NT
QmFzaWNTaGFwZUNpcmNsZVZhbHVlOjpjcmVhdGUoKTsKKyAgICBpZiAoQ1NTUHJpbWl0aXZlVmFs
dWUqIHJhZGl1cyA9IGNvbnN1bWVTaGFwZVJhZGl1cyhhcmdzLCBjb250ZXh0Lm1vZGUoKSkpCisg
ICAgICAgIHNoYXBlLT5zZXRSYWRpdXMocmFkaXVzKTsKKyAgICBpZiAoY29uc3VtZUlkZW50PENT
U1ZhbHVlQXQ+KGFyZ3MpKSB7CisgICAgICAgIENTU1ZhbHVlKiBjZW50ZXJYID0gbnVsbHB0cjsK
KyAgICAgICAgQ1NTVmFsdWUqIGNlbnRlclkgPSBudWxscHRyOworICAgICAgICBpZiAoIWNvbnN1
bWVQb3NpdGlvbihhcmdzLCBjb250ZXh0Lm1vZGUoKSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBj
ZW50ZXJYLCBjZW50ZXJZKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBz
aGFwZS0+c2V0Q2VudGVyWChjZW50ZXJYKTsKKyAgICAgICAgc2hhcGUtPnNldENlbnRlclkoY2Vu
dGVyWSk7CisgICAgfQorICAgIHJldHVybiBzaGFwZTsKK30KKworc3RhdGljIENTU0Jhc2ljU2hh
cGVFbGxpcHNlVmFsdWUqIGNvbnN1bWVCYXNpY1NoYXBlRWxsaXBzZShDU1NQYXJzZXJUb2tlblJh
bmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIC8vIHNw
ZWM6IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtc2hhcGVzLyNzdXBwb3J0ZWQtYmFzaWMt
c2hhcGVzCisgICAgLy8gZWxsaXBzZSggWzxzaGFwZS1yYWRpdXM+ezJ9XT8gW2F0IDxwb3NpdGlv
bj5dPyApCisgICAgQ1NTQmFzaWNTaGFwZUVsbGlwc2VWYWx1ZSogc2hhcGUgPSBDU1NCYXNpY1No
YXBlRWxsaXBzZVZhbHVlOjpjcmVhdGUoKTsKKyAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWUqIHJh
ZGl1c1ggPSBjb25zdW1lU2hhcGVSYWRpdXMoYXJncywgY29udGV4dC5tb2RlKCkpKSB7CisgICAg
ICAgIHNoYXBlLT5zZXRSYWRpdXNYKHJhZGl1c1gpOworICAgICAgICBpZiAoQ1NTUHJpbWl0aXZl
VmFsdWUqIHJhZGl1c1kgPSBjb25zdW1lU2hhcGVSYWRpdXMoYXJncywgY29udGV4dC5tb2RlKCkp
KQorICAgICAgICAgICAgc2hhcGUtPnNldFJhZGl1c1kocmFkaXVzWSk7CisgICAgfQorICAgIGlm
IChjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBdD4oYXJncykpIHsKKyAgICAgICAgQ1NTVmFsdWUqIGNl
bnRlclggPSBudWxscHRyOworICAgICAgICBDU1NWYWx1ZSogY2VudGVyWSA9IG51bGxwdHI7Cisg
ICAgICAgIGlmICghY29uc3VtZVBvc2l0aW9uKGFyZ3MsIGNvbnRleHQubW9kZSgpLCBVbml0bGVz
c1F1aXJrOjpGb3JiaWQsIGNlbnRlclgsIGNlbnRlclkpKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIHNoYXBlLT5zZXRDZW50ZXJYKGNlbnRlclgpOworICAgICAgICBzaGFw
ZS0+c2V0Q2VudGVyWShjZW50ZXJZKTsKKyAgICB9CisgICAgcmV0dXJuIHNoYXBlOworfQorCitz
dGF0aWMgQ1NTQmFzaWNTaGFwZVBvbHlnb25WYWx1ZSogY29uc3VtZUJhc2ljU2hhcGVQb2x5Z29u
KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRl
eHQpCit7CisgICAgQ1NTQmFzaWNTaGFwZVBvbHlnb25WYWx1ZSogc2hhcGUgPSBDU1NCYXNpY1No
YXBlUG9seWdvblZhbHVlOjpjcmVhdGUoKTsKKyAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVl
RXZlbm9kZCwgQ1NTVmFsdWVOb256ZXJvPihhcmdzLnBlZWsoKS5pZCgpKSkgeworICAgICAgICBz
aGFwZS0+c2V0V2luZFJ1bGUoYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCkg
PT0gQ1NTVmFsdWVFdmVub2RkID8gUlVMRV9FVkVOT0REIDogUlVMRV9OT05aRVJPKTsKKyAgICAg
ICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgZG8geworICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogeExlbmd0aCA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5t
b2RlKCksIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBpZiAoIXhMZW5ndGgpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHlMZW5ndGggPSBj
b25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxs
KTsKKyAgICAgICAgaWYgKCF5TGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHNoYXBlLT5hcHBlbmRQb2ludCh4TGVuZ3RoLCB5TGVuZ3RoKTsKKyAgICB9IHdoaWxl
IChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKTsKKyAgICByZXR1cm4gc2hh
cGU7Cit9CisKK3N0YXRpYyB2b2lkIGNvbXBsZXRlNFNpZGVzKENTU1ByaW1pdGl2ZVZhbHVlKiBz
aWRlWzRdKQoreworICAgIGlmIChzaWRlWzNdKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFz
aWRlWzJdKSB7CisgICAgICAgIGlmICghc2lkZVsxXSkKKyAgICAgICAgICAgIHNpZGVbMV0gPSBz
aWRlWzBdOworICAgICAgICBzaWRlWzJdID0gc2lkZVswXTsKKyAgICB9CisgICAgc2lkZVszXSA9
IHNpZGVbMV07Cit9CisKK3N0YXRpYyBib29sIGNvbnN1bWVSYWRpaShDU1NQcmltaXRpdmVWYWx1
ZSogaG9yaXpvbnRhbFJhZGlpWzRdLCBDU1NQcmltaXRpdmVWYWx1ZSogdmVydGljYWxSYWRpaVs0
XSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9k
ZSwgYm9vbCB1c2VMZWdhY3lQYXJzaW5nKQoreworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIGZv
ciAoOyBpIDwgNCAmJiAhcmFuZ2UuYXRFbmQoKSAmJiByYW5nZS5wZWVrKCkudHlwZSgpICE9IERl
bGltaXRlclRva2VuOyArK2kpIHsKKyAgICAgICAgaG9yaXpvbnRhbFJhZGlpW2ldID0gY29uc3Vt
ZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0
aXZlKTsKKyAgICAgICAgaWYgKCFob3Jpem9udGFsUmFkaWlbaV0pCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIGlmICghaG9yaXpvbnRhbFJhZGlpWzBdKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKHJhbmdlLmF0RW5kKCkpIHsKKyAgICAgICAgLy8gTGVnYWN5
IHN5bnRheDogLXdlYmtpdC1ib3JkZXItcmFkaXVzOiBsMSBsMjsgaXMgZXF1aXZhbGVudCB0byBi
b3JkZXItcmFkaXVzOiBsMSAvIGwyOworICAgICAgICBpZiAodXNlTGVnYWN5UGFyc2luZyAmJiBp
ID09IDIpIHsKKyAgICAgICAgICAgIHZlcnRpY2FsUmFkaWlbMF0gPSBob3Jpem9udGFsUmFkaWlb
MV07CisgICAgICAgICAgICBob3Jpem9udGFsUmFkaWlbMV0gPSBudWxscHRyOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgY29tcGxldGU0U2lkZXMoaG9yaXpvbnRhbFJhZGlpKTsKKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCA0OyArK2kpCisgICAgICAgICAgICAg
ICAgdmVydGljYWxSYWRpaVtpXSA9IGhvcml6b250YWxSYWRpaVtpXTsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFjb25zdW1l
U2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IDQgJiYgIXJhbmdlLmF0RW5kKCk7ICsraSkgewor
ICAgICAgICAgICAgdmVydGljYWxSYWRpaVtpXSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFu
Z2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgICAgICBp
ZiAoIXZlcnRpY2FsUmFkaWlbaV0pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgICAgIGlmICghdmVydGljYWxSYWRpaVswXSB8fCAhcmFuZ2UuYXRFbmQoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgY29tcGxldGU0U2lkZXMoaG9y
aXpvbnRhbFJhZGlpKTsKKyAgICBjb21wbGV0ZTRTaWRlcyh2ZXJ0aWNhbFJhZGlpKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIENTU0Jhc2ljU2hhcGVJbnNldFZhbHVlKiBjb25zdW1l
QmFzaWNTaGFwZUluc2V0KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNl
ckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ1NTQmFzaWNTaGFwZUluc2V0VmFsdWUqIHNoYXBl
ID0gQ1NTQmFzaWNTaGFwZUluc2V0VmFsdWU6OmNyZWF0ZSgpOworICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiB0b3AgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBW
YWx1ZVJhbmdlQWxsKTsKKyAgICBpZiAoIXRvcCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHJpZ2h0ID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdz
LCBjb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZUFsbCk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IGJvdHRvbSA9IG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGxlZnQgPSBudWxscHRy
OworICAgIGlmIChyaWdodCkgeworICAgICAgICBib3R0b20gPSBjb25zdW1lTGVuZ3RoT3JQZXJj
ZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgaWYgKGJv
dHRvbSkKKyAgICAgICAgICAgIGxlZnQgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNv
bnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICB9CisgICAgaWYgKGxlZnQpCisgICAg
ICAgIHNoYXBlLT51cGRhdGVTaGFwZVNpemU0VmFsdWVzKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVm
dCk7CisgICAgZWxzZSBpZiAoYm90dG9tKQorICAgICAgICBzaGFwZS0+dXBkYXRlU2hhcGVTaXpl
M1ZhbHVlcyh0b3AsIHJpZ2h0LCBib3R0b20pOworICAgIGVsc2UgaWYgKHJpZ2h0KQorICAgICAg
ICBzaGFwZS0+dXBkYXRlU2hhcGVTaXplMlZhbHVlcyh0b3AsIHJpZ2h0KTsKKyAgICBlbHNlCisg
ICAgICAgIHNoYXBlLT51cGRhdGVTaGFwZVNpemUxVmFsdWUodG9wKTsKKworICAgIGlmIChjb25z
dW1lSWRlbnQ8Q1NTVmFsdWVSb3VuZD4oYXJncykpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIGhvcml6b250YWxSYWRpaVs0XSA9IHsgMCB9OworICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogdmVydGljYWxSYWRpaVs0XSA9IHsgMCB9OworICAgICAgICBpZiAoIWNvbnN1bWVSYWRpaSho
b3Jpem9udGFsUmFkaWksIHZlcnRpY2FsUmFkaWksIGFyZ3MsIGNvbnRleHQubW9kZSgpLCBmYWxz
ZSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgc2hhcGUtPnNldFRvcExl
ZnRSYWRpdXMoQ1NTVmFsdWVQYWlyOjpjcmVhdGUoaG9yaXpvbnRhbFJhZGlpWzBdLCB2ZXJ0aWNh
bFJhZGlpWzBdLCBDU1NWYWx1ZVBhaXI6OkRyb3BJZGVudGljYWxWYWx1ZXMpKTsKKyAgICAgICAg
c2hhcGUtPnNldFRvcFJpZ2h0UmFkaXVzKENTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhvcml6b250YWxS
YWRpaVsxXSwgdmVydGljYWxSYWRpaVsxXSwgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFs
dWVzKSk7CisgICAgICAgIHNoYXBlLT5zZXRCb3R0b21SaWdodFJhZGl1cyhDU1NWYWx1ZVBhaXI6
OmNyZWF0ZShob3Jpem9udGFsUmFkaWlbMl0sIHZlcnRpY2FsUmFkaWlbMl0sIENTU1ZhbHVlUGFp
cjo6RHJvcElkZW50aWNhbFZhbHVlcykpOworICAgICAgICBzaGFwZS0+c2V0Qm90dG9tTGVmdFJh
ZGl1cyhDU1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsUmFkaWlbM10sIHZlcnRpY2FsUmFk
aWlbM10sIENTU1ZhbHVlUGFpcjo6RHJvcElkZW50aWNhbFZhbHVlcykpOworICAgIH0KKyAgICBy
ZXR1cm4gc2hhcGU7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUJhc2ljU2hhcGUoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQp
Cit7CisgICAgQ1NTVmFsdWUqIHNoYXBlID0gbnVsbHB0cjsKKyAgICBpZiAocmFuZ2UucGVlaygp
LnR5cGUoKSAhPSBGdW5jdGlvblRva2VuKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBD
U1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKTsKKyAgICBDU1NQYXJzZXJU
b2tlblJhbmdlIHJhbmdlQ29weSA9IHJhbmdlOworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYXJn
cyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZUNvcHkpOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZUNp
cmNsZSkKKyAgICAgICAgc2hhcGUgPSBjb25zdW1lQmFzaWNTaGFwZUNpcmNsZShhcmdzLCBjb250
ZXh0KTsKKyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZUVsbGlwc2UpCisgICAgICAgIHNoYXBl
ID0gY29uc3VtZUJhc2ljU2hhcGVFbGxpcHNlKGFyZ3MsIGNvbnRleHQpOworICAgIGVsc2UgaWYg
KGlkID09IENTU1ZhbHVlUG9seWdvbikKKyAgICAgICAgc2hhcGUgPSBjb25zdW1lQmFzaWNTaGFw
ZVBvbHlnb24oYXJncywgY29udGV4dCk7CisgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVJbnNl
dCkKKyAgICAgICAgc2hhcGUgPSBjb25zdW1lQmFzaWNTaGFwZUluc2V0KGFyZ3MsIGNvbnRleHQp
OworICAgIGlmICghc2hhcGUgfHwgIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmFuZ2UgPSByYW5nZUNvcHk7CisgICAgcmV0dXJuIHNoYXBlOworfQorCitzdGF0
aWMgQ1NTVmFsdWUqIGNvbnN1bWVXZWJraXRDbGlwUGF0aChDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBpZiAocmFuZ2Uu
cGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50
KHJhbmdlKTsKKyAgICBpZiAoQ1NTVVJJVmFsdWUqIHVybCA9IGNvbnN1bWVVcmwocmFuZ2UpKQor
ICAgICAgICByZXR1cm4gdXJsOworICAgIHJldHVybiBjb25zdW1lQmFzaWNTaGFwZShyYW5nZSwg
Y29udGV4dCk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVNoYXBlT3V0c2lkZShDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkK
K3sKKyAgICBpZiAoQ1NTVmFsdWUqIGltYWdlVmFsdWUgPSBjb25zdW1lSW1hZ2VPck5vbmUocmFu
Z2UsIGNvbnRleHQpKQorICAgICAgICByZXR1cm4gaW1hZ2VWYWx1ZTsKKyAgICBDU1NWYWx1ZUxp
c3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgaWYg
KENTU1ZhbHVlKiBib3hWYWx1ZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUNvbnRlbnRCb3gsIENT
U1ZhbHVlUGFkZGluZ0JveCwgQ1NTVmFsdWVCb3JkZXJCb3gsIENTU1ZhbHVlTWFyZ2luQm94Pihy
YW5nZSkpCisgICAgICAgIGxpc3QtPmFwcGVuZCgqYm94VmFsdWUpOworICAgIGlmIChDU1NWYWx1
ZSogc2hhcGVWYWx1ZSA9IGNvbnN1bWVCYXNpY1NoYXBlKHJhbmdlLCBjb250ZXh0KSkgeworICAg
ICAgICBsaXN0LT5hcHBlbmQoKnNoYXBlVmFsdWUpOworICAgICAgICBpZiAobGlzdC0+bGVuZ3Ro
KCkgPCAyKSB7CisgICAgICAgICAgICBpZiAoQ1NTVmFsdWUqIGJveFZhbHVlID0gY29uc3VtZUlk
ZW50PENTU1ZhbHVlQ29udGVudEJveCwgQ1NTVmFsdWVQYWRkaW5nQm94LCBDU1NWYWx1ZUJvcmRl
ckJveCwgQ1NTVmFsdWVNYXJnaW5Cb3g+KHJhbmdlKSkKKyAgICAgICAgICAgICAgICBsaXN0LT5h
cHBlbmQoKmJveFZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIWxpc3QtPmxlbmd0
aCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbGlzdDsKK30KKworc3Rh
dGljIENTU1ZhbHVlKiBjb25zdW1lQ29udGVudERpc3RyaWJ1dGlvbk92ZXJmbG93UG9zaXRpb24o
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NW
YWx1ZU5vcm1hbCwgQ1NTVmFsdWVCYXNlbGluZSwgQ1NTVmFsdWVMYXN0QmFzZWxpbmU+KHJhbmdl
LnBlZWsoKS5pZCgpKSkKKyAgICAgICAgcmV0dXJuIENTU0NvbnRlbnREaXN0cmlidXRpb25WYWx1
ZTo6Y3JlYXRlKENTU1ZhbHVlSW52YWxpZCwgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3Bh
Y2UoKS5pZCgpLCBDU1NWYWx1ZUludmFsaWQpOworCisgICAgQ1NTVmFsdWVJRCBkaXN0cmlidXRp
b24gPSBDU1NWYWx1ZUludmFsaWQ7CisgICAgQ1NTVmFsdWVJRCBwb3NpdGlvbiA9IENTU1ZhbHVl
SW52YWxpZDsKKyAgICBDU1NWYWx1ZUlEIG92ZXJmbG93ID0gQ1NTVmFsdWVJbnZhbGlkOworICAg
IGRvIHsKKyAgICAgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgICAg
ICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlU3BhY2VCZXR3ZWVuLCBDU1NWYWx1ZVNwYWNlQXJv
dW5kLCBDU1NWYWx1ZVNwYWNlRXZlbmx5LCBDU1NWYWx1ZVN0cmV0Y2g+KGlkKSkgeworICAgICAg
ICAgICAgaWYgKGRpc3RyaWJ1dGlvbiAhPSBDU1NWYWx1ZUludmFsaWQpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBkaXN0cmlidXRpb24gPSBpZDsKKyAgICAg
ICAgfSBlbHNlIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVTdGFydCwgQ1NTVmFsdWVFbmQsIENT
U1ZhbHVlQ2VudGVyLCBDU1NWYWx1ZUZsZXhTdGFydCwgQ1NTVmFsdWVGbGV4RW5kLCBDU1NWYWx1
ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KGlkKSkgeworICAgICAgICAgICAgaWYgKHBvc2l0aW9uICE9
IENTU1ZhbHVlSW52YWxpZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgICAgIHBvc2l0aW9uID0gaWQ7CisgICAgICAgIH0gZWxzZSBpZiAoaWRlbnRNYXRjaGVzPENT
U1ZhbHVlVW5zYWZlLCBDU1NWYWx1ZVNhZmU+KGlkKSkgeworICAgICAgICAgICAgaWYgKG92ZXJm
bG93ICE9IENTU1ZhbHVlSW52YWxpZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgICAgIG92ZXJmbG93ID0gaWQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICByYW5nZS5jb25zdW1lSW5jbHVk
aW5nV2hpdGVzcGFjZSgpOworICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgpKTsKKworICAgIC8v
IFRoZSBncmFtbWFyIHN0YXRlcyB0aGF0IHdlIHNob3VsZCBoYXZlIGF0IGxlYXN0IDxjb250ZW50
LWRpc3RyaWJ1dGlvbj4gb3IgPGNvbnRlbnQtcG9zaXRpb24+LgorICAgIGlmIChwb3NpdGlvbiA9
PSBDU1NWYWx1ZUludmFsaWQgJiYgZGlzdHJpYnV0aW9uID09IENTU1ZhbHVlSW52YWxpZCkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBUaGUgZ3JhbW1hciBzdGF0ZXMgdGhhdCA8
b3ZlcmZsb3ctcG9zaXRpb24+IG11c3QgYmUgYXNzb2NpYXRlZCB0byA8Y29udGVudC1wb3NpdGlv
bj4uCisgICAgaWYgKG92ZXJmbG93ICE9IENTU1ZhbHVlSW52YWxpZCAmJiBwb3NpdGlvbiA9PSBD
U1NWYWx1ZUludmFsaWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIENT
U0NvbnRlbnREaXN0cmlidXRpb25WYWx1ZTo6Y3JlYXRlKGRpc3RyaWJ1dGlvbiwgcG9zaXRpb24s
IG92ZXJmbG93KTsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lQm9yZGVy
SW1hZ2VSZXBlYXRLZXl3b3JkKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIHJl
dHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVTdHJldGNoLCBDU1NWYWx1ZVJlcGVhdCwgQ1NTVmFs
dWVTcGFjZSwgQ1NTVmFsdWVSb3VuZD4ocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNv
bnN1bWVCb3JkZXJJbWFnZVJlcGVhdChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogaG9yaXpvbnRhbCA9IGNvbnN1bWVCb3JkZXJJbWFnZVJlcGVh
dEtleXdvcmQocmFuZ2UpOworICAgIGlmICghaG9yaXpvbnRhbCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZlcnRpY2FsID0gY29uc3VtZUJvcmRlcklt
YWdlUmVwZWF0S2V5d29yZChyYW5nZSk7CisgICAgaWYgKCF2ZXJ0aWNhbCkKKyAgICAgICAgdmVy
dGljYWwgPSBob3Jpem9udGFsOworICAgIHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jp
em9udGFsLCB2ZXJ0aWNhbCwgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVzKTsKK30K
Kworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQm9yZGVySW1hZ2VTbGljZShDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5LCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBib29sIGZpbGwg
PSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVGaWxsPihyYW5nZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHNsaWNlc1s0XSA9IHsgMCB9OworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRl
eCA8IDQ7ICsraW5kZXgpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlID0gY29u
c3VtZVBlcmNlbnQocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgIGlmICgh
dmFsdWUpCisgICAgICAgICAgICB2YWx1ZSA9IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFu
Z2VOb25OZWdhdGl2ZSk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgc2xpY2VzW2luZGV4XSA9IHZhbHVlOworICAgIH0KKyAgICBpZiAoIXNsaWNlc1sw
XSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKGNvbnN1bWVJZGVudDxDU1NWYWx1
ZUZpbGw+KHJhbmdlKSkgeworICAgICAgICBpZiAoZmlsbCkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICBmaWxsID0gdHJ1ZTsKKyAgICB9CisgICAgY29tcGxldGU0U2lkZXMo
c2xpY2VzKTsKKyAgICAvLyBGSVhNRTogRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCAtd2Vi
a2l0LWJvcmRlci1pbWFnZSwgLXdlYmtpdC1tYXNrLWJveC1pbWFnZSBhbmQgLXdlYmtpdC1ib3gt
cmVmbGVjdCBoYXZlIHRvIGRvIGEgZmlsbCBieSBkZWZhdWx0LgorICAgIC8vIEZJWE1FOiBXaGF0
IGRvIHdlIGRvIHdpdGggLXdlYmtpdC1ib3gtcmVmbGVjdCBhbmQgLXdlYmtpdC1tYXNrLWJveC1p
bWFnZT8gUHJvYmFibHkganVzdCBoYXZlIHRvIGxlYXZlIHRoZW0gZmlsbGluZy4uLgorICAgIGlm
IChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlIHx8IHByb3BlcnR5ID09
IENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5
V2Via2l0Qm94UmVmbGVjdCkKKyAgICAgICAgZmlsbCA9IHRydWU7CisgICAgcmV0dXJuIENTU0Jv
cmRlckltYWdlU2xpY2VWYWx1ZTo6Y3JlYXRlKENTU1F1YWRWYWx1ZTo6Y3JlYXRlKHNsaWNlc1sw
XSwgc2xpY2VzWzFdLCBzbGljZXNbMl0sIHNsaWNlc1szXSwgQ1NTUXVhZFZhbHVlOjpTZXJpYWxp
emVBc1F1YWQpLCBmaWxsKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQm9yZGVySW1h
Z2VPdXRzZXQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIG91dHNldHNbNF0gPSB7IDAgfTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1
ZSA9IG51bGxwdHI7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IDQ7ICsraW5k
ZXgpIHsKKyAgICAgICAgdmFsdWUgPSBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlTm9u
TmVnYXRpdmUpOworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgdmFsdWUgPSBjb25z
dW1lTGVuZ3RoKHJhbmdlLCBIVE1MU3RhbmRhcmRNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUp
OworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG91dHNl
dHNbaW5kZXhdID0gdmFsdWU7CisgICAgfQorICAgIGlmICghb3V0c2V0c1swXSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgY29tcGxldGU0U2lkZXMob3V0c2V0cyk7CisgICAgcmV0dXJu
IENTU1F1YWRWYWx1ZTo6Y3JlYXRlKG91dHNldHNbMF0sIG91dHNldHNbMV0sIG91dHNldHNbMl0s
IG91dHNldHNbM10sIENTU1F1YWRWYWx1ZTo6U2VyaWFsaXplQXNRdWFkKTsKK30KKworc3RhdGlj
IENTU1ZhbHVlKiBjb25zdW1lQm9yZGVySW1hZ2VXaWR0aChDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSkKK3sKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogd2lkdGhzWzRdID0geyAwIH07CisKKyAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUgPSBudWxscHRyOworICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gMDsgaW5kZXggPCA0OyArK2luZGV4KSB7CisgICAgICAgIHZhbHVlID0gY29uc3VtZU51
bWJlcihyYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkK
KyAgICAgICAgICAgIHZhbHVlID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgSFRNTFN0
YW5kYXJkTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQp
OworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgdmFsdWUgPSBjb25zdW1lSWRlbnQ8
Q1NTVmFsdWVBdXRvPihyYW5nZSk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgd2lkdGhzW2luZGV4XSA9IHZhbHVlOworICAgIH0KKyAgICBpZiAoIXdp
ZHRoc1swXSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgY29tcGxldGU0U2lkZXMod2lk
dGhzKTsKKyAgICByZXR1cm4gQ1NTUXVhZFZhbHVlOjpjcmVhdGUod2lkdGhzWzBdLCB3aWR0aHNb
MV0sIHdpZHRoc1syXSwgd2lkdGhzWzNdLCBDU1NRdWFkVmFsdWU6OlNlcmlhbGl6ZUFzUXVhZCk7
Cit9CisKK3N0YXRpYyBib29sIGNvbnN1bWVCb3JkZXJJbWFnZUNvbXBvbmVudHMoQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNl
ckNvbnRleHQmIGNvbnRleHQsIENTU1ZhbHVlKiYgc291cmNlLAorICAgIENTU1ZhbHVlKiYgc2xp
Y2UsIENTU1ZhbHVlKiYgd2lkdGgsIENTU1ZhbHVlKiYgb3V0c2V0LCBDU1NWYWx1ZSomIHJlcGVh
dCkKK3sKKyAgICBkbyB7CisgICAgICAgIGlmICghc291cmNlKSB7CisgICAgICAgICAgICBzb3Vy
Y2UgPSBjb25zdW1lSW1hZ2VPck5vbmUocmFuZ2UsIGNvbnRleHQpOworICAgICAgICAgICAgaWYg
KHNvdXJjZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoIXJlcGVhdCkgeworICAgICAgICAgICAgcmVwZWF0ID0gY29uc3VtZUJvcmRlckltYWdlUmVw
ZWF0KHJhbmdlKTsKKyAgICAgICAgICAgIGlmIChyZXBlYXQpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFzbGljZSkgeworICAgICAgICAgICAgc2xp
Y2UgPSBjb25zdW1lQm9yZGVySW1hZ2VTbGljZShwcm9wZXJ0eSwgcmFuZ2UpOworICAgICAgICAg
ICAgaWYgKHNsaWNlKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKCF3aWR0aCAmJiAhb3V0c2V0
KTsKKyAgICAgICAgICAgICAgICBpZiAoY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShy
YW5nZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBjb25zdW1lQm9yZGVySW1hZ2VX
aWR0aChyYW5nZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdW1lU2xhc2hJbmNsdWRp
bmdXaGl0ZXNwYWNlKHJhbmdlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3V0c2V0ID0g
Y29uc3VtZUJvcmRlckltYWdlT3V0c2V0KHJhbmdlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmICghb3V0c2V0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghd2lkdGgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpOworICAgIHJl
dHVybiB0cnVlOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVXZWJraXRCb3JkZXJJbWFn
ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29u
c3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBDU1NWYWx1ZSogc291cmNlID0g
bnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogc2xpY2UgPSBudWxscHRyOworICAgIENTU1ZhbHVlKiB3
aWR0aCA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIG91dHNldCA9IG51bGxwdHI7CisgICAgQ1NT
VmFsdWUqIHJlcGVhdCA9IG51bGxwdHI7CisgICAgaWYgKGNvbnN1bWVCb3JkZXJJbWFnZUNvbXBv
bmVudHMocHJvcGVydHksIHJhbmdlLCBjb250ZXh0LCBzb3VyY2UsIHNsaWNlLCB3aWR0aCwgb3V0
c2V0LCByZXBlYXQpKQorICAgICAgICByZXR1cm4gY3JlYXRlQm9yZGVySW1hZ2VWYWx1ZShzb3Vy
Y2UsIHNsaWNlLCB3aWR0aCwgb3V0c2V0LCByZXBlYXQpOworICAgIHJldHVybiBudWxscHRyOwor
fQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVSZWZsZWN0KENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBkaXJlY3Rpb24gPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBYm92ZSwgQ1NTVmFs
dWVCZWxvdywgQ1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0PihyYW5nZSk7CisgICAgaWYgKCFk
aXJlY3Rpb24pCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIG9mZnNldCA9IG51bGxwdHI7CisgICAgaWYgKHJhbmdlLmF0RW5kKCkpIHsKKyAgICAgICAg
b2Zmc2V0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLCBDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGU6OlBpeGVscyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgb2Zmc2V0ID0gY29uc3Vt
ZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VBbGwsIFVu
aXRsZXNzUXVpcms6OkZvcmJpZCk7CisgICAgICAgIGlmICghb2Zmc2V0KQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgQ1NTVmFsdWUqIG1hc2sgPSBudWxscHRyOwor
ICAgIGlmICghcmFuZ2UuYXRFbmQoKSkgeworICAgICAgICBtYXNrID0gY29uc3VtZVdlYmtpdEJv
cmRlckltYWdlKENTU1Byb3BlcnR5V2Via2l0Qm94UmVmbGVjdCwgcmFuZ2UsIGNvbnRleHQpOwor
ICAgICAgICBpZiAoIW1hc2spCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cisg
ICAgcmV0dXJuIENTU1JlZmxlY3RWYWx1ZTo6Y3JlYXRlKGRpcmVjdGlvbiwgb2Zmc2V0LCBtYXNr
KTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lRm9udFNpemVBZGp1c3QoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1Zh
bHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJu
IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7Cit9CisKK3N0YXRp
YyBDU1NWYWx1ZSogY29uc3VtZUltYWdlT3JpZW50YXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlRnJvbUltYWdl
KQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICBpZiAocmFuZ2UucGVl
aygpLnR5cGUoKSAhPSBOdW1iZXJUb2tlbikgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSog
YW5nbGUgPSBjb25zdW1lQW5nbGUocmFuZ2UpOworICAgICAgICBpZiAoYW5nbGUgJiYgYW5nbGUt
PmdldERvdWJsZVZhbHVlKCkgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBhbmdsZTsKKyAgICB9
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUJhY2tn
cm91bmRCbGVuZE1vZGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTVmFs
dWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1h
bCB8fCBpZCA9PSBDU1NWYWx1ZU92ZXJsYXkgfHwgKGlkID49IENTU1ZhbHVlTXVsdGlwbHkgJiYg
aWQgPD0gQ1NTVmFsdWVMdW1pbm9zaXR5KSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChy
YW5nZSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3Vt
ZUJhY2tncm91bmRBdHRhY2htZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAg
IHJldHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVTY3JvbGwsIENTU1ZhbHVlRml4ZWQsIENTU1Zh
bHVlTG9jYWw+KHJhbmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQmFja2dyb3Vu
ZEJveChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4gY29uc3VtZUlk
ZW50PENTU1ZhbHVlQm9yZGVyQm94LCBDU1NWYWx1ZVBhZGRpbmdCb3gsIENTU1ZhbHVlQ29udGVu
dEJveD4ocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVCYWNrZ3JvdW5kQ29t
cG9zaXRlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBjb25zdW1l
SWRlbnRSYW5nZShyYW5nZSwgQ1NTVmFsdWVDbGVhciwgQ1NTVmFsdWVQbHVzTGlnaHRlcik7Cit9
CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZU1hc2tTb3VyY2VUeXBlKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlKQoreworICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NN
YXNrU291cmNlVHlwZUVuYWJsZWQoKSk7CisgICAgcmV0dXJuIGNvbnN1bWVJZGVudDxDU1NWYWx1
ZUF1dG8sIENTU1ZhbHVlQWxwaGEsIENTU1ZhbHVlTHVtaW5hbmNlPihyYW5nZSk7Cit9CisKK3N0
YXRpYyBDU1NWYWx1ZSogY29uc3VtZVByZWZpeGVkQmFja2dyb3VuZEJveChDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5LCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29u
dGV4dCYgY29udGV4dCkKK3sKKyAgICAvLyBUaGUgdmFsdWVzICdib3JkZXInLCAncGFkZGluZycg
YW5kICdjb250ZW50JyBhcmUgZGVwcmVjYXRlZCBhbmQgZG8gbm90IGFwcGx5IHRvIHRoZSB2ZXJz
aW9uIG9mIHRoZSBwcm9wZXJ0eSB0aGF0IGhhcyB0aGUgLXdlYmtpdC0gcHJlZml4IHJlbW92ZWQu
CisgICAgaWYgKENTU1ZhbHVlKiB2YWx1ZSA9IGNvbnN1bWVJZGVudFJhbmdlKHJhbmdlLCBDU1NW
YWx1ZUJvcmRlciwgQ1NTVmFsdWVQYWRkaW5nQm94KSkKKyAgICAgICAgcmV0dXJuIHZhbHVlOwor
ICAgIGlmICgocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xpcCB8fCBw
cm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwKSAmJiByYW5nZS5wZWVrKCkuaWQo
KSA9PSBDU1NWYWx1ZVRleHQpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwor
ICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVCYWNrZ3Jv
dW5kU2l6ZShDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0eSwgQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAoaWRl
bnRNYXRjaGVzPENTU1ZhbHVlQ29udGFpbiwgQ1NTVmFsdWVDb3Zlcj4ocmFuZ2UucGVlaygpLmlk
KCkpKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBob3Jpem9udGFsID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQXV0bz4ocmFuZ2Up
OworICAgIGlmICghaG9yaXpvbnRhbCkKKyAgICAgICAgaG9yaXpvbnRhbCA9IGNvbnN1bWVMZW5n
dGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwsIFVuaXRsZXNz
UXVpcms6OkZvcmJpZCk7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmVydGljYWwgPSBudWxs
cHRyOworICAgIGlmICghcmFuZ2UuYXRFbmQoKSkgeworICAgICAgICBpZiAocmFuZ2UucGVlaygp
LmlkKCkgPT0gQ1NTVmFsdWVBdXRvKSAvLyBgYXV0bycgaXMgdGhlIGRlZmF1bHQKKyAgICAgICAg
ICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHZlcnRpY2FsID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFy
c2VyTW9kZSwgVmFsdWVSYW5nZUFsbCwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKKyAgICB9IGVs
c2UgaWYgKHVucmVzb2x2ZWRQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUFsaWFzV2Via2l0QmFja2dy
b3VuZFNpemUpIHsKKyAgICAgICAgLy8gTGVnYWN5IHN5bnRheDogIi13ZWJraXQtYmFja2dyb3Vu
ZC1zaXplOiAxMHB4IiBpcyBlcXVpdmFsZW50IHRvICJiYWNrZ3JvdW5kLXNpemU6IDEwcHggMTBw
eCIuCisgICAgICAgIHZlcnRpY2FsID0gaG9yaXpvbnRhbDsKKyAgICB9CisgICAgaWYgKCF2ZXJ0
aWNhbCkKKyAgICAgICAgcmV0dXJuIGhvcml6b250YWw7CisgICAgcmV0dXJuIENTU1ZhbHVlUGFp
cjo6Y3JlYXRlKGhvcml6b250YWwsIHZlcnRpY2FsLCBDU1NWYWx1ZVBhaXI6OktlZXBJZGVudGlj
YWxWYWx1ZXMpOworfQorCitzdGF0aWMgQ1NTVmFsdWVMaXN0KiBjb25zdW1lR3JpZEF1dG9GbG93
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBy
b3dPckNvbHVtblZhbHVlID0gY29uc3VtZUlkZW50PENTU1ZhbHVlUm93LCBDU1NWYWx1ZUNvbHVt
bj4ocmFuZ2UpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBkZW5zZUFsZ29yaXRobSA9IGNvbnN1
bWVJZGVudDxDU1NWYWx1ZURlbnNlPihyYW5nZSk7CisgICAgaWYgKCFyb3dPckNvbHVtblZhbHVl
KSB7CisgICAgICAgIHJvd09yQ29sdW1uVmFsdWUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVSb3cs
IENTU1ZhbHVlQ29sdW1uPihyYW5nZSk7CisgICAgICAgIGlmICghcm93T3JDb2x1bW5WYWx1ZSAm
JiAhZGVuc2VBbGdvcml0aG0pCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cisg
ICAgQ1NTVmFsdWVMaXN0KiBwYXJzZWRWYWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNl
U2VwYXJhdGVkKCk7CisgICAgaWYgKHJvd09yQ29sdW1uVmFsdWUpCisgICAgICAgIHBhcnNlZFZh
bHVlcy0+YXBwZW5kKCpyb3dPckNvbHVtblZhbHVlKTsKKyAgICBpZiAoZGVuc2VBbGdvcml0aG0p
CisgICAgICAgIHBhcnNlZFZhbHVlcy0+YXBwZW5kKCpkZW5zZUFsZ29yaXRobSk7CisgICAgcmV0
dXJuIHBhcnNlZFZhbHVlczsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQmFja2dyb3Vu
ZENvbXBvbmVudChDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0eSwgQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAg
c3dpdGNoICh1bnJlc29sdmVkUHJvcGVydHkpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dy
b3VuZENsaXA6CisgICAgICAgIHJldHVybiBjb25zdW1lQmFja2dyb3VuZEJveChyYW5nZSk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRCbGVuZE1vZGU6CisgICAgICAgIHJldHVybiBj
b25zdW1lQmFja2dyb3VuZEJsZW5kTW9kZShyYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRBdHRhY2htZW50OgorICAgICAgICByZXR1cm4gY29uc3VtZUJhY2tncm91bmRBdHRh
Y2htZW50KHJhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbjoKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVCYWNrZ3JvdW5kQm94KHJhbmdlKTsKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWFza0NvbXBvc2l0ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCYWNrZ3Jv
dW5kQ29tcG9zaXRlKHJhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFza1NvdXJjZVR5cGU6
CisgICAgICAgIHJldHVybiBjb25zdW1lTWFza1NvdXJjZVR5cGUocmFuZ2UpOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xpcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0QmFja2dyb3VuZE9yaWdpbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXA6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW46CisgICAgICAgIHJldHVybiBj
b25zdW1lUHJlZml4ZWRCYWNrZ3JvdW5kQm94KHVucmVzb2x2ZWRQcm9wZXJ0eSwgcmFuZ2UsIGNv
bnRleHQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2U6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJbWFnZU9y
Tm9uZShyYW5nZSwgY29udGV4dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3Np
dGlvblg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblg6CisgICAgICAg
IHJldHVybiBjb25zdW1lUG9zaXRpb25YKHJhbmdlLCBjb250ZXh0Lm1vZGUoKSk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tQb3NpdGlvblk6CisgICAgICAgIHJldHVybiBjb25zdW1lUG9zaXRpb25ZKHJhbmdl
LCBjb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlBbGlhc1dlYmtpdEJhY2tncm91bmRTaXplOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCYWNrZ3Jv
dW5kU2l6ZSh1bnJlc29sdmVkUHJvcGVydHksIHJhbmdlLCBjb250ZXh0Lm1vZGUoKSk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVD
b2xvcihyYW5nZSwgY29udGV4dC5tb2RlKCkpOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFr
OworICAgIH07CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyB2b2lkIGFkZEJhY2tn
cm91bmRWYWx1ZShDU1NWYWx1ZSomIGxpc3QsIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAo
bGlzdCkgeworICAgICAgICBpZiAoIWxpc3QtPmlzQmFzZVZhbHVlTGlzdCgpKSB7CisgICAgICAg
ICAgICBDU1NWYWx1ZSogZmlyc3RWYWx1ZSA9IGxpc3Q7CisgICAgICAgICAgICBsaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgdG9DU1NWYWx1
ZUxpc3QobGlzdCktPmFwcGVuZCgqZmlyc3RWYWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgdG9D
U1NWYWx1ZUxpc3QobGlzdCktPmFwcGVuZCgqdmFsdWUpOworICAgIH0gZWxzZSB7CisgICAgICAg
IC8vIFRvIGNvbnNlcnZlIG1lbW9yeSB3ZSBkb24ndCBhY3R1YWxseSB3cmFwIGEgc2luZ2xlIHZh
bHVlIGluIGEgbGlzdC4KKyAgICAgICAgbGlzdCA9IHZhbHVlOworICAgIH0KK30KKworc3RhdGlj
IENTU1ZhbHVlKiBjb25zdW1lQ29tbWFTZXBhcmF0ZWRCYWNrZ3JvdW5kQ29tcG9uZW50KENTU1By
b3BlcnR5SUQgdW5yZXNvbHZlZFByb3BlcnR5LCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Y29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBDU1NWYWx1ZSogcmVzdWx0
ID0gbnVsbHB0cjsKKyAgICBkbyB7CisgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IGNvbnN1bWVC
YWNrZ3JvdW5kQ29tcG9uZW50KHVucmVzb2x2ZWRQcm9wZXJ0eSwgcmFuZ2UsIGNvbnRleHQpOwor
ICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IGFkZEJhY2tncm91bmRWYWx1ZShyZXN1bHQsIHZhbHVlKTsKKyAgICB9IHdoaWxlIChjb25zdW1l
Q29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lU2VsZlBvc2l0aW9uS2V5d29yZChD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2Uu
cGVlaygpLmlkKCk7CisgICAgaWYgKGlkID09IENTU1ZhbHVlU3RhcnQgfHwgaWQgPT0gQ1NTVmFs
dWVFbmQgfHwgaWQgPT0gQ1NTVmFsdWVDZW50ZXIKKyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVT
ZWxmU3RhcnQgfHwgaWQgPT0gQ1NTVmFsdWVTZWxmRW5kIHx8IGlkID09IENTU1ZhbHVlRmxleFN0
YXJ0CisgICAgICAgIHx8IGlkID09IENTU1ZhbHVlRmxleEVuZCB8fCBpZCA9PSBDU1NWYWx1ZUxl
ZnQgfHwgaWQgPT0gQ1NTVmFsdWVSaWdodCkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChy
YW5nZSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3Vt
ZVNlbGZQb3NpdGlvbk92ZXJmbG93UG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Up
Cit7CisgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlTm9ybWFsLCBD
U1NWYWx1ZVN0cmV0Y2gsIENTU1ZhbHVlQmFzZWxpbmUsIENTU1ZhbHVlTGFzdEJhc2VsaW5lPihy
YW5nZS5wZWVrKCkuaWQoKSkpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwor
CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIG92ZXJmbG93UG9zaXRpb24gPSBjb25zdW1lSWRlbnQ8
Q1NTVmFsdWVVbnNhZmUsIENTU1ZhbHVlU2FmZT4ocmFuZ2UpOworICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBzZWxmUG9zaXRpb24gPSBjb25zdW1lU2VsZlBvc2l0aW9uS2V5d29yZChyYW5nZSk7Cisg
ICAgaWYgKCFzZWxmUG9zaXRpb24pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICgh
b3ZlcmZsb3dQb3NpdGlvbikKKyAgICAgICAgb3ZlcmZsb3dQb3NpdGlvbiA9IGNvbnN1bWVJZGVu
dDxDU1NWYWx1ZVVuc2FmZSwgQ1NTVmFsdWVTYWZlPihyYW5nZSk7CisgICAgaWYgKG92ZXJmbG93
UG9zaXRpb24pCisgICAgICAgIHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShzZWxmUG9zaXRp
b24sIG92ZXJmbG93UG9zaXRpb24sIENTU1ZhbHVlUGFpcjo6RHJvcElkZW50aWNhbFZhbHVlcyk7
CisgICAgcmV0dXJuIHNlbGZQb3NpdGlvbjsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1l
QWxpZ25JdGVtcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICAvLyBhbGlnbi1p
dGVtcyBwcm9wZXJ0eSBkb2VzIG5vdCBhbGxvdyB0aGUgJ2F1dG8nIHZhbHVlLgorICAgIGlmIChp
ZGVudE1hdGNoZXM8Q1NTVmFsdWVBdXRvPihyYW5nZS5wZWVrKCkuaWQoKSkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIHJldHVybiBjb25zdW1lU2VsZlBvc2l0aW9uT3ZlcmZsb3dQb3Np
dGlvbihyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUp1c3RpZnlJdGVtcyhD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJh
bmdlQ29weSA9IHJhbmdlOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBsZWdhY3kgPSBjb25zdW1l
SWRlbnQ8Q1NTVmFsdWVMZWdhY3k+KHJhbmdlQ29weSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHBvc2l0aW9uS2V5d29yZCA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUNlbnRlciwgQ1NTVmFsdWVM
ZWZ0LCBDU1NWYWx1ZVJpZ2h0PihyYW5nZUNvcHkpOworICAgIGlmICghbGVnYWN5KQorICAgICAg
ICBsZWdhY3kgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVMZWdhY3k+KHJhbmdlQ29weSk7CisgICAg
aWYgKGxlZ2FjeSAmJiBwb3NpdGlvbktleXdvcmQpIHsKKyAgICAgICAgcmFuZ2UgPSByYW5nZUNv
cHk7CisgICAgICAgIHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShsZWdhY3ksIHBvc2l0aW9u
S2V5d29yZCwgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVzKTsKKyAgICB9CisgICAg
cmV0dXJuIGNvbnN1bWVTZWxmUG9zaXRpb25PdmVyZmxvd1Bvc2l0aW9uKHJhbmdlKTsKK30KKwor
c3RhdGljIENTU0N1c3RvbUlkZW50VmFsdWUqIGNvbnN1bWVDdXN0b21JZGVudEZvckdyaWRMaW5l
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQo
KSA9PSBDU1NWYWx1ZUF1dG8gfHwgcmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVTcGFuKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY29uc3VtZUN1c3RvbUlkZW50KHJh
bmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lR3JpZExpbmUoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVl
QXV0bykKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogc3BhblZhbHVlID0gbnVsbHB0cjsKKyAgICBDU1NDdXN0b21JZGVudFZhbHVl
KiBncmlkTGluZU5hbWUgPSBudWxscHRyOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBudW1lcmlj
VmFsdWUgPSBjb25zdW1lSW50ZWdlcihyYW5nZSk7CisgICAgaWYgKG51bWVyaWNWYWx1ZSkgewor
ICAgICAgICBncmlkTGluZU5hbWUgPSBjb25zdW1lQ3VzdG9tSWRlbnRGb3JHcmlkTGluZShyYW5n
ZSk7CisgICAgICAgIHNwYW5WYWx1ZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZVNwYW4+KHJhbmdl
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBzcGFuVmFsdWUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFs
dWVTcGFuPihyYW5nZSk7CisgICAgICAgIGlmIChzcGFuVmFsdWUpIHsKKyAgICAgICAgICAgIG51
bWVyaWNWYWx1ZSA9IGNvbnN1bWVJbnRlZ2VyKHJhbmdlKTsKKyAgICAgICAgICAgIGdyaWRMaW5l
TmFtZSA9IGNvbnN1bWVDdXN0b21JZGVudEZvckdyaWRMaW5lKHJhbmdlKTsKKyAgICAgICAgICAg
IGlmICghbnVtZXJpY1ZhbHVlKQorICAgICAgICAgICAgICAgIG51bWVyaWNWYWx1ZSA9IGNvbnN1
bWVJbnRlZ2VyKHJhbmdlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGdyaWRMaW5l
TmFtZSA9IGNvbnN1bWVDdXN0b21JZGVudEZvckdyaWRMaW5lKHJhbmdlKTsKKyAgICAgICAgICAg
IGlmIChncmlkTGluZU5hbWUpIHsKKyAgICAgICAgICAgICAgICBudW1lcmljVmFsdWUgPSBjb25z
dW1lSW50ZWdlcihyYW5nZSk7CisgICAgICAgICAgICAgICAgc3BhblZhbHVlID0gY29uc3VtZUlk
ZW50PENTU1ZhbHVlU3Bhbj4ocmFuZ2UpOworICAgICAgICAgICAgICAgIGlmICghc3BhblZhbHVl
ICYmICFudW1lcmljVmFsdWUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBncmlkTGluZU5h
bWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHNwYW5WYWx1ZSAm
JiAhbnVtZXJpY1ZhbHVlICYmICFncmlkTGluZU5hbWUpCisgICAgICAgIHJldHVybiBudWxscHRy
OyAvLyAic3BhbiIga2V5d29yZCBhbG9uZSBpcyBpbnZhbGlkLgorICAgIGlmIChzcGFuVmFsdWUg
JiYgbnVtZXJpY1ZhbHVlICYmIG51bWVyaWNWYWx1ZS0+Z2V0SW50VmFsdWUoKSA8IDApCisgICAg
ICAgIHJldHVybiBudWxscHRyOyAvLyBOZWdhdGl2ZSBudW1iZXJzIGFyZSBub3QgYWxsb3dlZCBm
b3Igc3Bhbi4KKyAgICBpZiAobnVtZXJpY1ZhbHVlICYmIG51bWVyaWNWYWx1ZS0+Z2V0SW50VmFs
dWUoKSA9PSAwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsgLy8gQW4gPGludGVnZXI+IHZhbHVl
IG9mIHplcm8gbWFrZXMgdGhlIGRlY2xhcmF0aW9uIGludmFsaWQuCisKKyAgICBDU1NWYWx1ZUxp
c3QqIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBp
ZiAoc3BhblZhbHVlKQorICAgICAgICB2YWx1ZXMtPmFwcGVuZCgqc3BhblZhbHVlKTsKKyAgICBp
ZiAobnVtZXJpY1ZhbHVlKQorICAgICAgICB2YWx1ZXMtPmFwcGVuZCgqbnVtZXJpY1ZhbHVlKTsK
KyAgICBpZiAoZ3JpZExpbmVOYW1lKQorICAgICAgICB2YWx1ZXMtPmFwcGVuZCgqZ3JpZExpbmVO
YW1lKTsKKyAgICBBU1NFUlQodmFsdWVzLT5sZW5ndGgoKSk7CisgICAgcmV0dXJuIHZhbHVlczsK
K30KKworc3RhdGljIGJvb2wgaXNHcmlkVHJhY2tGaXhlZFNpemVkKGNvbnN0IENTU1ByaW1pdGl2
ZVZhbHVlJiBwcmltaXRpdmVWYWx1ZSkKK3sKKyAgICBDU1NWYWx1ZUlEIHZhbHVlSUQgPSBwcmlt
aXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCk7CisgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVNaW5D
b250ZW50IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVNYXhDb250ZW50IHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVBdXRvIHx8IHByaW1pdGl2ZVZhbHVlLmlzRmxleCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgaXNHcmlkVHJhY2tGaXhl
ZFNpemVkKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUuaXNQcmltaXRp
dmVWYWx1ZSgpKQorICAgICAgICByZXR1cm4gaXNHcmlkVHJhY2tGaXhlZFNpemVkKHRvQ1NTUHJp
bWl0aXZlVmFsdWUodmFsdWUpKTsKKworICAgIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBtaW5Q
cmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodG9DU1NGdW5jdGlvblZhbHVlKHZh
bHVlKS5pdGVtKDApKTsKKyAgICBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgbWF4UHJpbWl0aXZl
VmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRvQ1NTRnVuY3Rpb25WYWx1ZSh2YWx1ZSkuaXRl
bSgxKSk7CisgICAgcmV0dXJuIGlzR3JpZFRyYWNrRml4ZWRTaXplZChtaW5QcmltaXRpdmVWYWx1
ZSkgfHwgaXNHcmlkVHJhY2tGaXhlZFNpemVkKG1heFByaW1pdGl2ZVZhbHVlKTsKK30KKworc3Rh
dGljIFZlY3RvcjxTdHJpbmc+IHBhcnNlR3JpZFRlbXBsYXRlQXJlYXNDb2x1bW5OYW1lcyhjb25z
dCBTdHJpbmcmIGdyaWRSb3dOYW1lcykKK3sKKyAgICBBU1NFUlQoIWdyaWRSb3dOYW1lcy5pc0Vt
cHR5KCkpOworICAgIFZlY3RvcjxTdHJpbmc+IGNvbHVtbk5hbWVzOworICAgIC8vIFVzaW5nIFN0
cmluZ0ltcGwgdG8gYXZvaWQgY2hlY2tzIGFuZCBpbmRpcmVjdGlvbiBpbiBldmVyeSBjYWxsIHRv
IFN0cmluZzo6b3BlcmF0b3JbXS4KKyAgICBTdHJpbmdJbXBsJiB0ZXh0ID0gKmdyaWRSb3dOYW1l
cy5pbXBsKCk7CisKKyAgICBTdHJpbmdCdWlsZGVyIGFyZWFOYW1lOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKGlzQ1NTU3Bh
Y2UodGV4dFtpXSkpIHsKKyAgICAgICAgICAgIGlmICghYXJlYU5hbWUuaXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICAgICAgY29sdW1uTmFtZXMuYXBwZW5kKGFyZWFOYW1lLnRvU3RyaW5nKCkpOwor
ICAgICAgICAgICAgICAgIGFyZWFOYW1lLmNsZWFyKCk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodGV4dFtpXSA9PSAnLicpIHsK
KyAgICAgICAgICAgIGlmIChhcmVhTmFtZSA9PSAiLiIpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBpZiAoIWFyZWFOYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
ICAgIGNvbHVtbk5hbWVzLmFwcGVuZChhcmVhTmFtZS50b1N0cmluZygpKTsKKyAgICAgICAgICAg
ICAgICBhcmVhTmFtZS5jbGVhcigpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgaWYgKCFpc05hbWVDb2RlUG9pbnQodGV4dFtpXSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CisgICAgICAgICAgICBpZiAoYXJlYU5hbWUgPT0g
Ii4iKSB7CisgICAgICAgICAgICAgICAgY29sdW1uTmFtZXMuYXBwZW5kKGFyZWFOYW1lLnRvU3Ry
aW5nKCkpOworICAgICAgICAgICAgICAgIGFyZWFOYW1lLmNsZWFyKCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBhcmVhTmFtZS5hcHBlbmQodGV4dFtpXSk7CisgICAgfQor
CisgICAgaWYgKCFhcmVhTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIGNvbHVtbk5hbWVzLmFwcGVu
ZChhcmVhTmFtZS50b1N0cmluZygpKTsKKworICAgIHJldHVybiBjb2x1bW5OYW1lczsKK30KKwor
c3RhdGljIGJvb2wgcGFyc2VHcmlkVGVtcGxhdGVBcmVhc1Jvdyhjb25zdCBTdHJpbmcmIGdyaWRS
b3dOYW1lcywgTmFtZWRHcmlkQXJlYU1hcCYgZ3JpZEFyZWFNYXAsIGNvbnN0IHNpemVfdCByb3dD
b3VudCwgc2l6ZV90JiBjb2x1bW5Db3VudCkKK3sKKyAgICBpZiAoZ3JpZFJvd05hbWVzLmlzRW1w
dHkoKSB8fCBncmlkUm93TmFtZXMuY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBWZWN0b3I8U3RyaW5nPiBjb2x1bW5OYW1lcyA9IHBhcnNlR3Jp
ZFRlbXBsYXRlQXJlYXNDb2x1bW5OYW1lcyhncmlkUm93TmFtZXMpOworICAgIGlmIChyb3dDb3Vu
dCA9PSAwKSB7CisgICAgICAgIGNvbHVtbkNvdW50ID0gY29sdW1uTmFtZXMuc2l6ZSgpOworICAg
ICAgICBpZiAoY29sdW1uQ291bnQgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9IGVsc2UgaWYgKGNvbHVtbkNvdW50ICE9IGNvbHVtbk5hbWVzLnNpemUoKSkgeworICAgICAg
ICAvLyBUaGUgZGVjbGFyYXRpb24gaXMgaW52YWxpZCBpZiBhbGwgdGhlIHJvd3MgZG9uJ3QgaGF2
ZSB0aGUgbnVtYmVyIG9mIGNvbHVtbnMuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBmb3IgKHNpemVfdCBjdXJyZW50Q29sdW1uID0gMDsgY3VycmVudENvbHVtbiA8IGNvbHVt
bkNvdW50OyArK2N1cnJlbnRDb2x1bW4pIHsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBncmlkQXJl
YU5hbWUgPSBjb2x1bW5OYW1lc1tjdXJyZW50Q29sdW1uXTsKKworICAgICAgICAvLyBVbmFtZWQg
YXJlYXMgYXJlIGFsd2F5cyB2YWxpZCAod2UgY29uc2lkZXIgdGhlbSB0byBiZSAxeDEpLgorICAg
ICAgICBpZiAoZ3JpZEFyZWFOYW1lID09ICIuIikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIHNpemVfdCBsb29rQWhlYWRDb2x1bW4gPSBjdXJyZW50Q29sdW1uICsgMTsKKyAgICAg
ICAgd2hpbGUgKGxvb2tBaGVhZENvbHVtbiA8IGNvbHVtbkNvdW50ICYmIGNvbHVtbk5hbWVzW2xv
b2tBaGVhZENvbHVtbl0gPT0gZ3JpZEFyZWFOYW1lKQorICAgICAgICAgICAgbG9va0FoZWFkQ29s
dW1uKys7CisKKyAgICAgICAgTmFtZWRHcmlkQXJlYU1hcDo6aXRlcmF0b3IgZ3JpZEFyZWFJdCA9
IGdyaWRBcmVhTWFwLmZpbmQoZ3JpZEFyZWFOYW1lKTsKKyAgICAgICAgaWYgKGdyaWRBcmVhSXQg
PT0gZ3JpZEFyZWFNYXAuZW5kKCkpIHsKKyAgICAgICAgICAgIGdyaWRBcmVhTWFwLmFkZChncmlk
QXJlYU5hbWUsIEdyaWRBcmVhKEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3Bhbihy
b3dDb3VudCwgcm93Q291bnQgKyAxKSwgR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRT
cGFuKGN1cnJlbnRDb2x1bW4sIGxvb2tBaGVhZENvbHVtbikpKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIEdyaWRBcmVhJiBncmlkQXJlYSA9IGdyaWRBcmVhSXQtPnZhbHVlOworCisg
ICAgICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGNoZWNrcyB0ZXN0IHRoYXQgdGhlIGdyaWQgYXJl
YSBpcyBhIHNpbmdsZSBmaWxsZWQtaW4gcmVjdGFuZ2xlLgorICAgICAgICAgICAgLy8gMS4gVGhl
IG5ldyByb3cgaXMgYWRqYWNlbnQgdG8gdGhlIHByZXZpb3VzbHkgcGFyc2VkIHJvdy4KKyAgICAg
ICAgICAgIGlmIChyb3dDb3VudCAhPSBncmlkQXJlYS5yb3dzLmVuZExpbmUoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIC8vIDIuIFRoZSBuZXcgYXJlYSBz
dGFydHMgYXQgdGhlIHNhbWUgcG9zaXRpb24gYXMgdGhlIHByZXZpb3VzbHkgcGFyc2VkIGFyZWEu
CisgICAgICAgICAgICBpZiAoY3VycmVudENvbHVtbiAhPSBncmlkQXJlYS5jb2x1bW5zLnN0YXJ0
TGluZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgLy8g
My4gVGhlIG5ldyBhcmVhIGVuZHMgYXQgdGhlIHNhbWUgcG9zaXRpb24gYXMgdGhlIHByZXZpb3Vz
bHkgcGFyc2VkIGFyZWEuCisgICAgICAgICAgICBpZiAobG9va0FoZWFkQ29sdW1uICE9IGdyaWRB
cmVhLmNvbHVtbnMuZW5kTGluZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICAgICAgZ3JpZEFyZWEucm93cyA9IEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVH
cmlkU3BhbihncmlkQXJlYS5yb3dzLnN0YXJ0TGluZSgpLCBncmlkQXJlYS5yb3dzLmVuZExpbmUo
KSArIDEpOworICAgICAgICB9CisgICAgICAgIGN1cnJlbnRDb2x1bW4gPSBsb29rQWhlYWRDb2x1
bW4gLSAxOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgQ1NTUHJpbWl0
aXZlVmFsdWUqIGNvbnN1bWVHcmlkQnJlYWR0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Q1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGNvbnN0IENTU1BhcnNlclRva2Vu
JiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlTWlu
Q29udGVudCwgQ1NTVmFsdWVNYXhDb250ZW50LCBDU1NWYWx1ZUF1dG8+KHRva2VuLmlkKCkpKQor
ICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICBpZiAodG9rZW4udHlwZSgp
ID09IERpbWVuc2lvblRva2VuICYmIHRva2VuLnVuaXRUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlOjpGcmFjdGlvbikgeworICAgICAgICBpZiAocmFuZ2UucGVlaygpLm51bWVy
aWNWYWx1ZSgpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1
cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVz
cGFjZSgpLm51bWVyaWNWYWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkZyYWN0
aW9uKTsKKyAgICB9CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNz
c1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwgVW5pdGxlc3NRdWlyazo6QWxsb3cp
OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVHcmlkVHJhY2tTaXplKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgY29u
c3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOworICAgIGlmIChpZGVudE1h
dGNoZXM8Q1NTVmFsdWVBdXRvPih0b2tlbi5pZCgpKSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJ
ZGVudChyYW5nZSk7CisKKyAgICBpZiAodG9rZW4uZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlTWlu
bWF4KSB7CisgICAgICAgIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2VDb3B5ID0gcmFuZ2U7Cisg
ICAgICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZUNv
cHkpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogbWluVHJhY2tCcmVhZHRoID0gY29uc3Vt
ZUdyaWRCcmVhZHRoKGFyZ3MsIGNzc1BhcnNlck1vZGUpOworICAgICAgICBpZiAoIW1pblRyYWNr
QnJlYWR0aCB8fCBtaW5UcmFja0JyZWFkdGgtPmlzRmxleCgpIHx8ICFjb25zdW1lQ29tbWFJbmNs
dWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBtYXhUcmFja0JyZWFkdGggPSBjb25zdW1lR3JpZEJyZWFk
dGgoYXJncywgY3NzUGFyc2VyTW9kZSk7CisgICAgICAgIGlmICghbWF4VHJhY2tCcmVhZHRoIHx8
ICFhcmdzLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmFu
Z2UgPSByYW5nZUNvcHk7CisgICAgICAgIENTU0Z1bmN0aW9uVmFsdWUqIHJlc3VsdCA9IENTU0Z1
bmN0aW9uVmFsdWU6OmNyZWF0ZShDU1NWYWx1ZU1pbm1heCk7CisgICAgICAgIHJlc3VsdC0+YXBw
ZW5kKCptaW5UcmFja0JyZWFkdGgpOworICAgICAgICByZXN1bHQtPmFwcGVuZCgqbWF4VHJhY2tC
cmVhZHRoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIGNvbnN1
bWVHcmlkQnJlYWR0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSk7Cit9CisKKy8vIEFwcGVuZHMgdG8g
dGhlIHBhc3NlZCBpbiBDU1NHcmlkTGluZU5hbWVzVmFsdWUgaWYgYW55LCBvdGhlcndpc2UgY3Jl
YXRlcyBhIG5ldyBvbmUuCitzdGF0aWMgQ1NTR3JpZExpbmVOYW1lc1ZhbHVlKiBjb25zdW1lR3Jp
ZExpbmVOYW1lcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTR3JpZExpbmVOYW1lc1Zh
bHVlKiBsaW5lTmFtZXMgPSBudWxscHRyKQoreworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgcmFu
Z2VDb3B5ID0gcmFuZ2U7CisgICAgaWYgKHJhbmdlQ29weS5jb25zdW1lSW5jbHVkaW5nV2hpdGVz
cGFjZSgpLnR5cGUoKSAhPSBMZWZ0QnJhY2tldFRva2VuKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICBpZiAoIWxpbmVOYW1lcykKKyAgICAgICAgbGluZU5hbWVzID0gQ1NTR3JpZExpbmVO
YW1lc1ZhbHVlOjpjcmVhdGUoKTsKKyAgICB3aGlsZSAoQ1NTQ3VzdG9tSWRlbnRWYWx1ZSogbGlu
ZU5hbWUgPSBjb25zdW1lQ3VzdG9tSWRlbnRGb3JHcmlkTGluZShyYW5nZUNvcHkpKQorICAgICAg
ICBsaW5lTmFtZXMtPmFwcGVuZCgqbGluZU5hbWUpOworICAgIGlmIChyYW5nZUNvcHkuY29uc3Vt
ZUluY2x1ZGluZ1doaXRlc3BhY2UoKS50eXBlKCkgIT0gUmlnaHRCcmFja2V0VG9rZW4pCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJhbmdlID0gcmFuZ2VDb3B5OworICAgIHJldHVybiBs
aW5lTmFtZXM7Cit9CisKK3N0YXRpYyBib29sIGNvbnN1bWVHcmlkVHJhY2tSZXBlYXRGdW5jdGlv
bihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2Rl
LCBDU1NWYWx1ZUxpc3QmIGxpc3QsIGJvb2wmIGlzQXV0b1JlcGVhdCwgYm9vbCYgYWxsVHJhY2tz
QXJlRml4ZWRTaXplZCkKK3sKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1l
RnVuY3Rpb24ocmFuZ2UpOworICAgIC8vIFRoZSBudW1iZXIgb2YgcmVwZXRpdGlvbnMgZm9yIDxh
dXRvLXJlcGVhdD4gaXMgbm90IGltcG9ydGFudCBhdCBwYXJzaW5nIGxldmVsCisgICAgLy8gYmVj
YXVzZSBpdCB3aWxsIGJlIGNvbXB1dGVkIGxhdGVyLCBsZXQncyBzZXQgaXQgdG8gMS4KKyAgICBz
aXplX3QgcmVwZXRpdGlvbnMgPSAxOworICAgIGlzQXV0b1JlcGVhdCA9IGlkZW50TWF0Y2hlczxD
U1NWYWx1ZUF1dG9GaWxsLCBDU1NWYWx1ZUF1dG9GaXQ+KGFyZ3MucGVlaygpLmlkKCkpOworICAg
IENTU1ZhbHVlTGlzdCogcmVwZWF0ZWRWYWx1ZXM7CisgICAgaWYgKGlzQXV0b1JlcGVhdCkgewor
ICAgICAgICByZXBlYXRlZFZhbHVlcyA9IENTU0dyaWRBdXRvUmVwZWF0VmFsdWU6OmNyZWF0ZShh
cmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgLy8gVE9ETyhyb2IuYnVpcyk6IGEgY29uc3VtZUludGVnZXJSYXcgd291bGQgYmUgbW9y
ZSBlZmZpY2llbnQgaGVyZS4KKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHJlcGV0aXRpb24g
PSBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyKGFyZ3MpOworICAgICAgICBpZiAoIXJlcGV0aXRpb24p
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJlcGV0aXRpb25zID0gY2xhbXBU
bzxzaXplX3Q+KHJlcGV0aXRpb24tPmdldERvdWJsZVZhbHVlKCksIDAsIGtHcmlkTWF4VHJhY2tz
KTsKKyAgICAgICAgcmVwZWF0ZWRWYWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2Vw
YXJhdGVkKCk7CisgICAgfQorICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFj
ZShhcmdzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIENTU0dyaWRMaW5lTmFtZXNWYWx1
ZSogbGluZU5hbWVzID0gY29uc3VtZUdyaWRMaW5lTmFtZXMoYXJncyk7CisgICAgaWYgKGxpbmVO
YW1lcykKKyAgICAgICAgcmVwZWF0ZWRWYWx1ZXMtPmFwcGVuZCgqbGluZU5hbWVzKTsKKworICAg
IHNpemVfdCBudW1iZXJPZlRyYWNrcyA9IDA7CisgICAgd2hpbGUgKCFhcmdzLmF0RW5kKCkpIHsK
KyAgICAgICAgQ1NTVmFsdWUqIHRyYWNrU2l6ZSA9IGNvbnN1bWVHcmlkVHJhY2tTaXplKGFyZ3Ms
IGNzc1BhcnNlck1vZGUpOworICAgICAgICBpZiAoIXRyYWNrU2l6ZSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGFsbFRyYWNrc0FyZUZpeGVkU2l6ZWQpCisgICAgICAg
ICAgICBhbGxUcmFja3NBcmVGaXhlZFNpemVkID0gaXNHcmlkVHJhY2tGaXhlZFNpemVkKCp0cmFj
a1NpemUpOworICAgICAgICByZXBlYXRlZFZhbHVlcy0+YXBwZW5kKCp0cmFja1NpemUpOworICAg
ICAgICArK251bWJlck9mVHJhY2tzOworICAgICAgICBsaW5lTmFtZXMgPSBjb25zdW1lR3JpZExp
bmVOYW1lcyhhcmdzKTsKKyAgICAgICAgaWYgKGxpbmVOYW1lcykKKyAgICAgICAgICAgIHJlcGVh
dGVkVmFsdWVzLT5hcHBlbmQoKmxpbmVOYW1lcyk7CisgICAgfQorICAgIC8vIFdlIHNob3VsZCBo
YXZlIGZvdW5kIGF0IGxlYXN0IG9uZSA8dHJhY2stc2l6ZT4gb3IgZWxzZSBpdCBpcyBub3QgYSB2
YWxpZCA8dHJhY2stbGlzdD4uCisgICAgaWYgKCFudW1iZXJPZlRyYWNrcykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKGlzQXV0b1JlcGVhdCkgeworICAgICAgICBsaXN0LmFwcGVu
ZCgqcmVwZWF0ZWRWYWx1ZXMpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFdlIGNsYW1wIHRo
ZSByZXBldGl0aW9ucyB0byBhIG11bHRpcGxlIG9mIHRoZSByZXBlYXQoKSB0cmFjayBsaXN0J3Mg
c2l6ZSwgd2hpbGUgc3RheWluZyBiZWxvdyB0aGUgbWF4IGdyaWQgc2l6ZS4KKyAgICAgICAgcmVw
ZXRpdGlvbnMgPSBzdGQ6Om1pbihyZXBldGl0aW9ucywga0dyaWRNYXhUcmFja3MgLyBudW1iZXJP
ZlRyYWNrcyk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVwZXRpdGlvbnM7ICsr
aSkgeworICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCByZXBlYXRlZFZhbHVlcy0+
bGVuZ3RoKCk7ICsraikKKyAgICAgICAgICAgICAgICBsaXN0LmFwcGVuZChyZXBlYXRlZFZhbHVl
cy0+aXRlbShqKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Vu
dW0gVHJhY2tMaXN0VHlwZSB7IEdyaWRUZW1wbGF0ZSwgR3JpZFRlbXBsYXRlTm9SZXBlYXQsIEdy
aWRBdXRvIH07CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUdyaWRUcmFja0xpc3QoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVHJhY2tM
aXN0VHlwZSB0cmFja0xpc3RUeXBlKQoreworICAgIGJvb2wgYWxsb3dHcmlkTGluZU5hbWVzID0g
dHJhY2tMaXN0VHlwZSAhPSBHcmlkQXV0bzsKKyAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9IENT
U1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBDU1NHcmlkTGluZU5hbWVz
VmFsdWUqIGxpbmVOYW1lcyA9IGNvbnN1bWVHcmlkTGluZU5hbWVzKHJhbmdlKTsKKyAgICBpZiAo
bGluZU5hbWVzKSB7CisgICAgICAgIGlmICghYWxsb3dHcmlkTGluZU5hbWVzKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHZhbHVlcy0+YXBwZW5kKCpsaW5lTmFtZXMpOwor
ICAgIH0KKworICAgIGJvb2wgYWxsb3dSZXBlYXQgPSB0cmFja0xpc3RUeXBlID09IEdyaWRUZW1w
bGF0ZTsKKyAgICBib29sIHNlZW5BdXRvUmVwZWF0ID0gZmFsc2U7CisgICAgYm9vbCBhbGxUcmFj
a3NBcmVGaXhlZFNpemVkID0gdHJ1ZTsKKyAgICBkbyB7CisgICAgICAgIGJvb2wgaXNBdXRvUmVw
ZWF0OworICAgICAgICBpZiAocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZVJl
cGVhdCkgeworICAgICAgICAgICAgaWYgKCFhbGxvd1JlcGVhdCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmICghY29uc3VtZUdyaWRUcmFja1JlcGVhdEZ1
bmN0aW9uKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCAqdmFsdWVzLCBpc0F1dG9SZXBlYXQsIGFsbFRy
YWNrc0FyZUZpeGVkU2l6ZWQpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICAgICAgaWYgKGlzQXV0b1JlcGVhdCAmJiBzZWVuQXV0b1JlcGVhdCkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHNlZW5BdXRvUmVwZWF0ID0gc2VlbkF1
dG9SZXBlYXQgfHwgaXNBdXRvUmVwZWF0OworICAgICAgICB9IGVsc2UgaWYgKENTU1ZhbHVlKiB2
YWx1ZSA9IGNvbnN1bWVHcmlkVHJhY2tTaXplKHJhbmdlLCBjc3NQYXJzZXJNb2RlKSkgeworICAg
ICAgICAgICAgaWYgKGFsbFRyYWNrc0FyZUZpeGVkU2l6ZWQpCisgICAgICAgICAgICAgICAgYWxs
VHJhY2tzQXJlRml4ZWRTaXplZCA9IGlzR3JpZFRyYWNrRml4ZWRTaXplZCgqdmFsdWUpOworICAg
ICAgICAgICAgdmFsdWVzLT5hcHBlbmQoKnZhbHVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIGlmIChzZWVuQXV0b1Jl
cGVhdCAmJiAhYWxsVHJhY2tzQXJlRml4ZWRTaXplZCkKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICBsaW5lTmFtZXMgPSBjb25zdW1lR3JpZExpbmVOYW1lcyhyYW5nZSk7Cisg
ICAgICAgIGlmIChsaW5lTmFtZXMpIHsKKyAgICAgICAgICAgIGlmICghYWxsb3dHcmlkTGluZU5h
bWVzKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgdmFsdWVz
LT5hcHBlbmQoKmxpbmVOYW1lcyk7CisgICAgICAgIH0KKyAgICB9IHdoaWxlICghcmFuZ2UuYXRF
bmQoKSAmJiByYW5nZS5wZWVrKCkudHlwZSgpICE9IERlbGltaXRlclRva2VuKTsKKyAgICByZXR1
cm4gdmFsdWVzOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVHcmlkVGVtcGxhdGVzUm93
c09yQ29sdW1ucyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQ
YXJzZXJNb2RlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUp
CisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1l
R3JpZFRyYWNrTGlzdChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgR3JpZFRlbXBsYXRlKTsKK30KKwor
c3RhdGljIENTU1ZhbHVlKiBjb25zdW1lR3JpZFRlbXBsYXRlQXJlYXMoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9u
ZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBOYW1lZEdyaWRB
cmVhTWFwIGdyaWRBcmVhTWFwOworICAgIHNpemVfdCByb3dDb3VudCA9IDA7CisgICAgc2l6ZV90
IGNvbHVtbkNvdW50ID0gMDsKKworICAgIHdoaWxlIChyYW5nZS5wZWVrKCkudHlwZSgpID09IFN0
cmluZ1Rva2VuKSB7CisgICAgICAgIGlmICghcGFyc2VHcmlkVGVtcGxhdGVBcmVhc1JvdyhyYW5n
ZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVlKCkudG9TdHJpbmcoKSwgZ3JpZEFy
ZWFNYXAsIHJvd0NvdW50LCBjb2x1bW5Db3VudCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgKytyb3dDb3VudDsKKyAgICB9CisKKyAgICBpZiAocm93Q291bnQgPT0gMCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQVNTRVJUKGNvbHVtbkNvdW50KTsKKyAgICBy
ZXR1cm4gQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZTo6Y3JlYXRlKGdyaWRBcmVhTWFwLCByb3dD
b3VudCwgY29sdW1uQ291bnQpOworfQorCitzdGF0aWMgdm9pZCBjb3VudEtleXdvcmRPbmx5UHJv
cGVydHlVc2FnZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBVc2VDb3VudGVyKiBjb3VudGVyLCBD
U1NWYWx1ZUlEIHZhbHVlSUQpCit7CisgICAgaWYgKCFjb3VudGVyKQorICAgICAgICByZXR1cm47
CisgICAgc3dpdGNoIChwcm9wZXJ0eSkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBl
YXJhbmNlOgorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUpIHsKKyAgICAgICAg
ICAgIGNvdW50ZXItPmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5jZU5vbmUpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY291bnRlci0+Y291bnQoVXNlQ291bnRlcjo6
Q1NTVmFsdWVBcHBlYXJhbmNlTm90Tm9uZSk7CisgICAgICAgICAgICBpZiAodmFsdWVJRCA9PSBD
U1NWYWx1ZUJ1dHRvbikKKyAgICAgICAgICAgICAgICBjb3VudGVyLT5jb3VudChVc2VDb3VudGVy
OjpDU1NWYWx1ZUFwcGVhcmFuY2VCdXR0b24pOworICAgICAgICAgICAgZWxzZSBpZiAodmFsdWVJ
RCA9PSBDU1NWYWx1ZUNhcmV0KQorICAgICAgICAgICAgICAgIGNvdW50ZXItPmNvdW50KFVzZUNv
dW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5jZUNhcmV0KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZh
bHVlSUQgPT0gQ1NTVmFsdWVDaGVja2JveCkKKyAgICAgICAgICAgICAgICBjb3VudGVyLT5jb3Vu
dChVc2VDb3VudGVyOjpDU1NWYWx1ZUFwcGVhcmFuY2VDaGVja2JveCk7CisgICAgICAgICAgICBl
bHNlIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlTWVudWxpc3QpCisgICAgICAgICAgICAgICAgY291
bnRlci0+Y291bnQoVXNlQ291bnRlcjo6Q1NTVmFsdWVBcHBlYXJhbmNlTWVudWxpc3QpOworICAg
ICAgICAgICAgZWxzZSBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU1lbnVsaXN0QnV0dG9uKQorICAg
ICAgICAgICAgICAgIGNvdW50ZXItPmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5j
ZU1lbnVsaXN0QnV0dG9uKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlSUQgPT0gQ1NTVmFs
dWVMaXN0Ym94KQorICAgICAgICAgICAgICAgIGNvdW50ZXItPmNvdW50KFVzZUNvdW50ZXI6OkNT
U1ZhbHVlQXBwZWFyYW5jZUxpc3Rib3gpOworICAgICAgICAgICAgZWxzZSBpZiAodmFsdWVJRCA9
PSBDU1NWYWx1ZVJhZGlvKQorICAgICAgICAgICAgICAgIGNvdW50ZXItPmNvdW50KFVzZUNvdW50
ZXI6OkNTU1ZhbHVlQXBwZWFyYW5jZVJhZGlvKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVl
SUQgPT0gQ1NTVmFsdWVTZWFyY2hmaWVsZCkKKyAgICAgICAgICAgICAgICBjb3VudGVyLT5jb3Vu
dChVc2VDb3VudGVyOjpDU1NWYWx1ZUFwcGVhcmFuY2VTZWFyY2hGaWVsZCk7CisgICAgICAgICAg
ICBlbHNlIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlVGV4dGZpZWxkKQorICAgICAgICAgICAgICAg
IGNvdW50ZXItPmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5jZVRleHRGaWVsZCk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY291bnRlci0+Y291bnQoVXNlQ291
bnRlcjo6Q1NTVmFsdWVBcHBlYXJhbmNlT3RoZXJzKTsKKyAgICAgICAgfQorICAgICAgICBicmVh
azsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworY29uc3QgQ1NT
VmFsdWUqIENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5SUQg
dW5yZXNvbHZlZFByb3BlcnR5LCBDU1NQcm9wZXJ0eUlEIGN1cnJlbnRTaG9ydGhhbmQpCit7Cisg
ICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSA9IHJlc29sdmVDU1NQcm9wZXJ0eUlEKHVucmVzb2x2
ZWRQcm9wZXJ0eSk7CisgICAgaWYgKENTU1BhcnNlckZhc3RQYXRoczo6aXNLZXl3b3JkUHJvcGVy
dHlJRChwcm9wZXJ0eSkpIHsKKyAgICAgICAgaWYgKCFDU1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFs
aWRLZXl3b3JkUHJvcGVydHlBbmRWYWx1ZShwcm9wZXJ0eSwgbV9yYW5nZS5wZWVrKCkuaWQoKSwg
bV9jb250ZXh0Lm1vZGUoKSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
Y291bnRLZXl3b3JkT25seVByb3BlcnR5VXNhZ2UocHJvcGVydHksIG1fY29udGV4dC51c2VDb3Vu
dGVyKCksIG1fcmFuZ2UucGVlaygpLmlkKCkpOworICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50
KG1fcmFuZ2UpOworICAgIH0KKyAgICBzd2l0Y2ggKHByb3BlcnR5KSB7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdpbGxDaGFuZ2U6CisgICAgICAgIHJldHVybiBjb25zdW1lV2lsbENoYW5nZShtX3Jh
bmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFnZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVQ
YWdlKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlRdW90ZXM6CisgICAgICAgIHJldHVy
biBjb25zdW1lUXVvdGVzKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIaWdo
bGlnaHQ6CisgICAgICAgIHJldHVybiBjb25zdW1lV2Via2l0SGlnaGxpZ2h0KG1fcmFuZ2UpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlGb250VmFyaWFudENhcHM6CisgICAgICAgIHJldHVybiBjb25z
dW1lRm9udFZhcmlhbnRDYXBzKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250VmFy
aWFudExpZ2F0dXJlczoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVGb250VmFyaWFudExpZ2F0dXJl
cyhtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFZhcmlhbnROdW1lcmljOgorICAg
ICAgICByZXR1cm4gY29uc3VtZUZvbnRWYXJpYW50TnVtZXJpYyhtX3JhbmdlKTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5Rm9udEZlYXR1cmVTZXR0aW5nczoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVG
b250RmVhdHVyZVNldHRpbmdzKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250RmFt
aWx5OgorICAgICAgICByZXR1cm4gY29uc3VtZUZvbnRGYW1pbHkobV9yYW5nZSk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQ6CisgICAgICAgIHJldHVybiBjb25zdW1lRm9udFdlaWdo
dChtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZzoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V29yZFNwYWNpbmc6CisgICAgICAgIHJldHVybiBjb25zdW1lU3BhY2luZyht
X3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGFiU2l6ZToK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVUYWJTaXplKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0U2l6ZUFkanVzdDoKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVUZXh0U2l6ZUFkanVzdChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5Rm9udFNpemU6CisgICAgICAgIHJldHVybiBjb25zdW1lRm9udFNpemUobV9y
YW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlMaW5lSGVpZ2h0OgorICAgICAgICByZXR1cm4gY29uc3VtZUxpbmVIZWlnaHQo
bV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVJvdGF0ZToK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVSb3RhdGlvbihtX3JhbmdlKTsKKyAgICBjYXNlIENTU1By
b3BlcnR5U2NhbGU6CisgICAgICAgIHJldHVybiBjb25zdW1lU2NhbGUobV9yYW5nZSk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVRyYW5zbGF0ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVUcmFuc2xh
dGUobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckhvcml6b250YWxTcGFjaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJWZXJ0aWNhbFNwYWNpbmc6CisgICAgICAgIHJldHVybiBjb25zdW1lTGVuZ3RoKG1fcmFuZ2Us
IG1fY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUNvdW50ZXJJbmNyZW1lbnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvdW50ZXJSZXNl
dDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb3VudGVyKG1fcmFuZ2UsIHByb3BlcnR5ID09IENT
U1Byb3BlcnR5Q291bnRlckluY3JlbWVudCA/IDEgOiAwKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
U2l6ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaXplKG1fcmFuZ2UsIG1fY29udGV4dC5tb2Rl
KCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlTbmFwSGVpZ2h0OgorICAgICAgICByZXR1cm4gY29u
c3VtZVNuYXBIZWlnaHQobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVRleHRJbmRlbnQ6CisgICAgICAgIHJldHVybiBjb25zdW1lVGV4dEluZGVudChtX3Jh
bmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWF4V2lkdGg6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eU1heEhlaWdodDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVNYXhX
aWR0aE9ySGVpZ2h0KG1fcmFuZ2UsIG1fY29udGV4dCwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsV2lkdGg6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxIZWlnaHQ6CisgICAgICAgIHJldHVybiBjb25zdW1lTWF4
V2lkdGhPckhlaWdodChtX3JhbmdlLCBtX2NvbnRleHQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlN
aW5XaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWluSGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5SGVpZ2h0OgorICAgICAgICByZXR1cm4g
Y29uc3VtZVdpZHRoT3JIZWlnaHQobV9yYW5nZSwgbV9jb250ZXh0LCBVbml0bGVzc1F1aXJrOjpB
bGxvdyk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxXaWR0aDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbEhlaWdodDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TG9naWNhbFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMb2dpY2Fs
SGVpZ2h0OgorICAgICAgICByZXR1cm4gY29uc3VtZVdpZHRoT3JIZWlnaHQobV9yYW5nZSwgbV9j
b250ZXh0KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luVG9wOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlNYXJnaW5SaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3R0b206
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxlZnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVJpZ2h0Ogor
ICAgIGNhc2UgQ1NTUHJvcGVydHlUb3A6CisgICAgICAgIHJldHVybiBjb25zdW1lTWFyZ2luT3JP
ZmZzZXQobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5TdGFydDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luRW5kOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZv
cmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyOgorICAgICAgICByZXR1
cm4gY29uc3VtZU1hcmdpbk9yT2Zmc2V0KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFVuaXRs
ZXNzUXVpcms6OkZvcmJpZCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdUb3A6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGlu
Z0JvdHRvbToKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ0xlZnQ6CisgICAgICAgIHJldHVy
biBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFZhbHVl
UmFuZ2VOb25OZWdhdGl2ZSwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRQYWRkaW5nU3RhcnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRp
bmdFbmQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmU6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVM
ZW5ndGhPclBlcmNlbnQobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZU5vbk5l
Z2F0aXZlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlDbGlw
OgorICAgICAgICByZXR1cm4gY29uc3VtZUNsaXAobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRvdWNoQWN0aW9uOgorICAgICAgICByZXR1cm4gY29uc3Vt
ZVRvdWNoQWN0aW9uKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlTY3JvbGxTbmFwRGVz
dGluYXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9iamVjdFBvc2l0aW9uOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlQZXJzcGVjdGl2ZU9yaWdpbjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVQb3Np
dGlvbihtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQ2xhbXA6CisgICAgICAgIHJldHVybiBjb25z
dW1lTGluZUNsYW1wKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250U2l6
ZURlbHRhOgorICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0aChtX3JhbmdlLCBtX2NvbnRleHQu
bW9kZSgpLCBWYWx1ZVJhbmdlQWxsLCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUNoYXJhY3RlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TG9jYWxlOgorICAgICAgICByZXR1cm4gY29uc3VtZUxvY2FsZShtX3JhbmdlKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Q29sdW1uV2lkdGg6CisgICAgICAgIHJldHVybiBjb25zdW1lQ29s
dW1uV2lkdGgobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVtbkNvdW50OgorICAg
ICAgICByZXR1cm4gY29uc3VtZUNvbHVtbkNvdW50KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlDb2x1bW5HYXA6CisgICAgICAgIHJldHVybiBjb25zdW1lQ29sdW1uR2FwKG1fcmFuZ2Us
IG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlDb2x1bW5TcGFuOgorICAg
ICAgICByZXR1cm4gY29uc3VtZUNvbHVtblNwYW4obV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVpvb206CisgICAgICAgIHJldHVybiBjb25zdW1lWm9vbShtX3JhbmdlLCBtX2NvbnRleHQp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25EZWxheToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5VHJhbnNpdGlvbkRlbGF5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25EaXJlY3Rp
b246CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkR1cmF0aW9uOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlUcmFuc2l0aW9uRHVyYXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlv
bkZpbGxNb2RlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25JdGVyYXRpb25Db3VudDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uTmFtZToKKyAgICBjYXNlIENTU1Byb3BlcnR5
QW5pbWF0aW9uUGxheVN0YXRlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uUHJvcGVy
dHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb246CisgICAgICAgIHJldHVybiBj
b25zdW1lQW5pbWF0aW9uUHJvcGVydHlMaXN0KHByb3BlcnR5LCBtX3JhbmdlLCBtX2NvbnRleHQs
IHVucmVzb2x2ZWRQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUFsaWFzV2Via2l0QW5pbWF0aW9uTmFt
ZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRDb2x1bW5HYXA6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUdyaWRSb3dHYXA6CisgICAgICAgIHJldHVybiBjb25zdW1lTGVuZ3RoKG1fcmFuZ2UsIG1f
Y29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVNoYXBlTWFyZ2luOgorICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudCht
X3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlTaGFwZUltYWdlVGhyZXNob2xkOgorICAgICAgICByZXR1cm4gY29uc3Vt
ZU51bWJlcihtX3JhbmdlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Qm94T3JkaW5hbEdyb3VwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPcnBoYW5zOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXaWRvd3M6CisgICAgICAgIHJldHVybiBjb25zdW1lUG9zaXRpdmVJbnRl
Z2VyKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkNvbG9yOgor
ICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzM1RleHREZWNvcmF0aW9u
c0VuYWJsZWQoKSk7CisgICAgICAgIHJldHVybiBjb25zdW1lQ29sb3IobV9yYW5nZSwgbV9jb250
ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aDoK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVUZXh0U3Ryb2tlV2lkdGgobV9yYW5nZSwgbV9jb250ZXh0
Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3I6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRhcEhpZ2hsaWdodENvbG9yOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyU3RhcnRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29s
b3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlckNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRUZXh0U3Ryb2tlQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0b3BDb2xvcjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5Rmxvb2RDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5TGln
aHRpbmdDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1uUnVsZUNvbG9yOgorICAgICAg
ICByZXR1cm4gY29uc3VtZUNvbG9yKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
OgorICAgICAgICByZXR1cm4gY29uc3VtZUNvbG9yKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCks
IGluUXVpcmtzTW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRX
aWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kV2lkdGg6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJBZnRlcldpZHRoOgorICAgICAgICByZXR1cm4gY29uc3VtZUJvcmRlcldp
ZHRoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJMZWZ0Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3I6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yOiB7CisgICAgICAgIGJvb2wgYWxs
b3dRdWlya3lDb2xvcnMgPSBpblF1aXJrc01vZGUoKQorICAgICAgICAgICAgJiYgKGN1cnJlbnRT
aG9ydGhhbmQgPT0gQ1NTUHJvcGVydHlJbnZhbGlkIHx8IGN1cnJlbnRTaG9ydGhhbmQgPT0gQ1NT
UHJvcGVydHlCb3JkZXJDb2xvcik7CisgICAgICAgIHJldHVybiBjb25zdW1lQ29sb3IobV9yYW5n
ZSwgbV9jb250ZXh0Lm1vZGUoKSwgYWxsb3dRdWlya3lDb2xvcnMpOworICAgIH0KKyAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
ckxlZnRXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGg6IHsKKyAgICAgICAgYm9vbCBhbGxvd1F1aXJr
eUxlbmd0aHMgPSBpblF1aXJrc01vZGUoKQorICAgICAgICAgICAgJiYgKGN1cnJlbnRTaG9ydGhh
bmQgPT0gQ1NTUHJvcGVydHlJbnZhbGlkIHx8IGN1cnJlbnRTaG9ydGhhbmQgPT0gQ1NTUHJvcGVy
dHlCb3JkZXJXaWR0aCk7CisgICAgICAgIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MgPSBhbGxvd1F1
aXJreUxlbmd0aHMgPyBVbml0bGVzc1F1aXJrOjpBbGxvdyA6IFVuaXRsZXNzUXVpcms6OkZvcmJp
ZDsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCb3JkZXJXaWR0aChtX3JhbmdlLCBtX2NvbnRleHQu
bW9kZSgpLCB1bml0bGVzcyk7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlaSW5kZXg6Cisg
ICAgICAgIHJldHVybiBjb25zdW1lWkluZGV4KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlUZXh0U2hhZG93OiAvLyBDU1MyIHByb3BlcnR5LCBkcm9wcGVkIGluIENTUzIuMSwgYmFjayBp
biBDU1MzLCBzbyB0cmVhdCBhcyBDU1MzCisgICAgY2FzZSBDU1NQcm9wZXJ0eUJveFNoYWRvdzoK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaGFkb3cobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwg
cHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCb3hTaGFkb3cpOworICAgIGNhc2UgQ1NTUHJvcGVydHlG
aWx0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tkcm9wRmlsdGVyOgorICAgICAgICByZXR1
cm4gY29uc3VtZUZpbHRlcihtX3JhbmdlLCBtX2NvbnRleHQpOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlUZXh0RGVjb3JhdGlvbjoKKyAgICAgICAgQVNTRVJUKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojpjc3MzVGV4dERlY29yYXRpb25zRW5hYmxlZCgpKTsKKyAgICAgICAgLy8gZmFsbHRocm91Z2gK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3Q6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uTGluZToKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVUZXh0RGVjb3JhdGlvbkxpbmUobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUQ6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eU1vdGlvblBhdGg6CisgICAgICAgIHJldHVybiBjb25zdW1lUGF0
aE9yTm9uZShtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TW90aW9uT2Zmc2V0OgorICAg
ICAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChtX3JhbmdlLCBtX2NvbnRleHQubW9k
ZSgpLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TW90aW9uUm90YXRpb246
CisgICAgICAgIHJldHVybiBjb25zdW1lTW90aW9uUm90YXRpb24obV9yYW5nZSk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlOgorICAgICAgICByZXR1cm4gY29u
c3VtZVRleHRFbXBoYXNpc1N0eWxlKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRs
aW5lQ29sb3I6CisgICAgICAgIHJldHVybiBjb25zdW1lT3V0bGluZUNvbG9yKG1fcmFuZ2UsIG1f
Y29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lT2Zmc2V0OgorICAg
ICAgICByZXR1cm4gY29uc3VtZUxlbmd0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1
ZVJhbmdlQWxsKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVdpZHRoOgorICAgICAgICBy
ZXR1cm4gY29uc3VtZUxpbmVXaWR0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBVbml0bGVz
c1F1aXJrOjpGb3JiaWQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2Zvcm06CisgICAgICAg
IHJldHVybiBjb25zdW1lVHJhbnNmb3JtKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIHVucmVz
b2x2ZWRQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUFsaWFzV2Via2l0VHJhbnNmb3JtKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YOgorICAgICAgICByZXR1cm4gY29uc3VtZVBvc2l0
aW9uWChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNmb3JtT3JpZ2luWToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3Rp
dmVPcmlnaW5ZOgorICAgICAgICByZXR1cm4gY29uc3VtZVBvc2l0aW9uWShtX3JhbmdlLCBtX2Nv
bnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2lu
WjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGgobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUo
KSwgVmFsdWVSYW5nZUFsbCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGw6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVN0cm9rZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVQYWludFN0cm9rZShtX3Jh
bmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFpbnRPcmRlcjoK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVQYWludE9yZGVyKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlNYXJrZXJTdGFydDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFya2VyTWlkOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlNYXJrZXJFbmQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNsaXBQYXRo
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXNrOgorICAgICAgICByZXR1cm4gY29uc3VtZU5vbmVP
clVSSShtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5RmxleEJhc2lzOgorICAgICAgICBy
ZXR1cm4gY29uc3VtZUZsZXhCYXNpcyhtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5RmxleEdyb3c6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsZXhTaHJpbms6
CisgICAgICAgIHJldHVybiBjb25zdW1lTnVtYmVyKG1fcmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdh
dGl2ZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZURhc2hhcnJheToKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVTdHJva2VEYXNoYXJyYXkobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUNvbHVtblJ1bGVXaWR0aDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb2x1bW5SdWxlV2lkdGgo
bV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZU9w
YWNpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGxPcGFjaXR5OgorICAgIGNhc2UgQ1NTUHJv
cGVydHlTdG9wT3BhY2l0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5Rmxvb2RPcGFjaXR5OgorICAg
IGNhc2UgQ1NTUHJvcGVydHlPcGFjaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hG
bGV4OgorICAgICAgICByZXR1cm4gY29uc3VtZU51bWJlcihtX3JhbmdlLCBWYWx1ZVJhbmdlQWxs
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFzZWxpbmVTaGlmdDoKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVCYXNlbGluZVNoaWZ0KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2VN
aXRlcmxpbWl0OgorICAgICAgICByZXR1cm4gY29uc3VtZU51bWJlcihtX3JhbmdlLCBWYWx1ZVJh
bmdlTm9uTmVnYXRpdmUpOworICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2VXaWR0aDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5U3Ryb2tlRGFzaG9mZnNldDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q3g6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUN5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlYOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlZOgorICAgIGNhc2UgQ1NTUHJvcGVydHlSOgorICAgICAgICByZXR1cm4g
Y29uc3VtZUxlbmd0aE9yUGVyY2VudChtX3JhbmdlLCBTVkdBdHRyaWJ1dGVNb2RlLCBWYWx1ZVJh
bmdlQWxsLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlSeDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5Unk6CisgICAgICAgIHJldHVybiBjb25zdW1lUnhPclJ5KG1f
cmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlDdXJzb3I6CisgICAgICAgIHJldHVybiBjb25z
dW1lQ3Vyc29yKG1fcmFuZ2UsIG1fY29udGV4dCwgaW5RdWlya3NNb2RlKCkpOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlDb250YWluOgorICAgICAgICByZXR1cm4gY29uc3VtZUNvbnRhaW4obV9yYW5n
ZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zZm9ybU9yaWdpbjoKKyAgICAgICAgcmV0dXJu
IGNvbnN1bWVUcmFuc2Zvcm1PcmlnaW4obV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVW5pdGxl
c3NRdWlyazo6Rm9yYmlkKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29udGVudDoKKyAgICAgICAg
cmV0dXJuIGNvbnN1bWVDb250ZW50KG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUxpc3RTdHlsZUltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNv
dXJjZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlU291cmNlOgorICAg
ICAgICByZXR1cm4gY29uc3VtZUltYWdlT3JOb25lKG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVBlcnNwZWN0aXZlOgorICAgICAgICByZXR1cm4gY29uc3VtZVBlcnNw
ZWN0aXZlKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIHVucmVzb2x2ZWRQcm9wZXJ0eSk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVNjcm9sbFNuYXBDb29yZGluYXRlOgorICAgICAgICByZXR1cm4g
Y29uc3VtZVNjcm9sbFNuYXBDb29yZGluYXRlKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlTY3JvbGxTbmFwUG9pbnRzWDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5U2Nyb2xsU25hcFBvaW50c1k6CisgICAgICAgIHJldHVybiBjb25zdW1lU2Nyb2xsU25hcFBv
aW50cyhtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9y
ZGVyVG9wUmlnaHRSYWRpdXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRp
dXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXM6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOgorICAgICAgICByZXR1cm4gY29u
c3VtZUJvcmRlclJhZGl1c0Nvcm5lcihtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RmxleEdyb3VwOgorICAgICAgICByZXR1cm4gY29uc3Vt
ZUludGVnZXIobV9yYW5nZSwgMCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9yZGVyOgorICAgICAg
ICByZXR1cm4gY29uc3VtZUludGVnZXIobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRl
eHRVbmRlcmxpbmVQb3NpdGlvbjoKKyAgICAgICAgLy8gYXV0byB8IFsgdW5kZXIgfHwgWyBsZWZ0
IHwgcmlnaHQgXSBdLCBidXQgd2Ugb25seSBzdXBwb3J0IGF1dG8gfCB1bmRlciBmb3Igbm93Cisg
ICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3MzVGV4dERlY29yYXRpb25z
RW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudDxDU1NWYWx1ZUF1dG8sIENT
U1ZhbHVlVW5kZXI+KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWdu
OgorICAgICAgICByZXR1cm4gY29uc3VtZVZlcnRpY2FsQWxpZ24obV9yYW5nZSwgbV9jb250ZXh0
Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNoYXBlT3V0c2lkZToKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVTaGFwZU91dHNpZGUobV9yYW5nZSwgbV9jb250ZXh0KTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Q2xpcFBhdGg6CisgICAgICAgIHJldHVybiBjb25zdW1lV2Via2l0Q2xp
cFBhdGgobV9yYW5nZSwgbV9jb250ZXh0KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5SnVzdGlmeUNv
bnRlbnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFsaWduQ29udGVudDoKKyAgICAgICAgQVNTRVJU
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkpOworICAgICAg
ICByZXR1cm4gY29uc3VtZUNvbnRlbnREaXN0cmlidXRpb25PdmVyZmxvd1Bvc2l0aW9uKG1fcmFu
Z2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVJlcGVhdDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlUmVwZWF0OgorICAgICAgICByZXR1cm4gY29uc3Vt
ZUJvcmRlckltYWdlUmVwZWF0KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJ
bWFnZVNsaWNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTbGljZToK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVCb3JkZXJJbWFnZVNsaWNlKHByb3BlcnR5LCBtX3Jhbmdl
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VPdXRzZXQ6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZU91dHNldDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVC
b3JkZXJJbWFnZU91dHNldChtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1h
Z2VXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlV2lkdGg6Cisg
ICAgICAgIHJldHVybiBjb25zdW1lQm9yZGVySW1hZ2VXaWR0aChtX3JhbmdlKTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2U6CisgICAgICAgIHJldHVybiBjb25zdW1lV2Vi
a2l0Qm9yZGVySW1hZ2UocHJvcGVydHksIG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3Q6CisgICAgICAgIHJldHVybiBjb25zdW1lUmVmbGVj
dChtX3JhbmdlLCBtX2NvbnRleHQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U2l6ZUFkanVz
dDoKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0ZvbnRTaXplQWRq
dXN0RW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVGb250U2l6ZUFkanVzdChtX3Jh
bmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5SW1hZ2VPcmllbnRhdGlvbjoKKyAgICAgICAgQVNT
RVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmltYWdlT3JpZW50YXRpb25FbmFibGVkKCkpOwor
ICAgICAgICByZXR1cm4gY29uc3VtZUltYWdlT3JpZW50YXRpb24obV9yYW5nZSk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQmxlbmRNb2RlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kT3JpZ2luOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRp
b25YOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFza1NvdXJj
ZVR5cGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDbGlwOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kT3JpZ2luOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrQ2xpcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0NvbXBvc2l0
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXNrT3JpZ2luOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9z
aXRpb25YOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb21t
YVNlcGFyYXRlZEJhY2tncm91bmRDb21wb25lbnQodW5yZXNvbHZlZFByb3BlcnR5LCBtX3Jhbmdl
LCBtX2NvbnRleHQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFk6CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIGNhc2UgQ1NTUHJvcGVydHlBbGlnbkl0ZW1zOgorICAgICAgICBEQ0hFQ0soUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzR3JpZExheW91dEVuYWJsZWQoKSk7CisgICAgICAgIHJl
dHVybiBjb25zdW1lQWxpZ25JdGVtcyhtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5SnVz
dGlmeVNlbGY6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFsaWduU2VsZjoKKyAgICAgICAgQVNTRVJU
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkpOworICAgICAg
ICByZXR1cm4gY29uc3VtZVNlbGZQb3NpdGlvbk92ZXJmbG93UG9zaXRpb24obV9yYW5nZSk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUp1c3RpZnlJdGVtczoKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkpOworICAgICAgICByZXR1cm4g
Y29uc3VtZUp1c3RpZnlJdGVtcyhtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZENv
bHVtbkVuZDoKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZENvbHVtblN0YXJ0OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlHcmlkUm93RW5kOgorICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkUm93U3RhcnQ6
CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NHcmlkTGF5b3V0RW5h
YmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVHcmlkTGluZShtX3JhbmdlKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5R3JpZEF1dG9Db2x1bW5zOgorICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlk
QXV0b1Jvd3M6CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NHcmlk
TGF5b3V0RW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVHcmlkVHJhY2tMaXN0KG1f
cmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIEdyaWRBdXRvKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
R3JpZFRlbXBsYXRlQ29sdW1uczoKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlUm93
czoKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRF
bmFibGVkKCkpOworICAgICAgICByZXR1cm4gY29uc3VtZUdyaWRUZW1wbGF0ZXNSb3dzT3JDb2x1
bW5zKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlk
VGVtcGxhdGVBcmVhczoKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNz
c0dyaWRMYXlvdXRFbmFibGVkKCkpOworICAgICAgICByZXR1cm4gY29uc3VtZUdyaWRUZW1wbGF0
ZUFyZWFzKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkQXV0b0Zsb3c6CisgICAg
ICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NHcmlkTGF5b3V0RW5hYmxlZCgp
KTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVHcmlkQXV0b0Zsb3cobV9yYW5nZSk7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorfQorCitzdGF0aWMgQ1NTUHJp
bWl0aXZlVmFsdWUqIGNvbnN1bWVGb250RGlzcGxheShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSkKK3sKKyAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVCbG9j
aywgQ1NTVmFsdWVTd2FwLCBDU1NWYWx1ZUZhbGxiYWNrLCBDU1NWYWx1ZU9wdGlvbmFsPihyYW5n
ZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZUxpc3QqIGNvbnN1bWVGb250RmFjZVVuaWNvZGVSYW5n
ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NWYWx1ZUxpc3QqIHZhbHVl
cyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKworICAgIGRvIHsKKyAg
ICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UuY29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UoKTsKKyAgICAgICAgaWYgKHRva2VuLnR5cGUoKSAhPSBVbmljb2RlUmFuZ2VU
b2tlbikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIFVDaGFyMzIgc3Rh
cnQgPSB0b2tlbi51bmljb2RlUmFuZ2VTdGFydCgpOworICAgICAgICBVQ2hhcjMyIGVuZCA9IHRv
a2VuLnVuaWNvZGVSYW5nZUVuZCgpOworICAgICAgICBpZiAoc3RhcnQgPiBlbmQpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgdmFsdWVzLT5hcHBlbmQoKkNTU1VuaWNvZGVS
YW5nZVZhbHVlOjpjcmVhdGUoc3RhcnQsIGVuZCkpOworICAgIH0gd2hpbGUgKGNvbnN1bWVDb21t
YUluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKTsKKworICAgIHJldHVybiB2YWx1ZXM7Cit9CisK
K3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUZvbnRGYWNlU3JjVVJJKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIFN0cmlu
ZyB1cmwgPSBjb25zdW1lVXJsQXNTdHJpbmdWaWV3KHJhbmdlKS50b1N0cmluZygpOworICAgIGlm
ICh1cmwuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIENTU0ZvbnRGYWNl
U3JjVmFsdWUqIHVyaVZhbHVlKENTU0ZvbnRGYWNlU3JjVmFsdWU6OmNyZWF0ZSh1cmwsIGNvbnRl
eHQuY29tcGxldGVVUkwodXJsKSwgY29udGV4dC5zaG91bGRDaGVja0NvbnRlbnRTZWN1cml0eVBv
bGljeSgpKSk7CisgICAgdXJpVmFsdWUtPnNldFJlZmVycmVyKGNvbnRleHQucmVmZXJyZXIoKSk7
CisKKyAgICBpZiAocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSAhPSBDU1NWYWx1ZUZvcm1hdCkK
KyAgICAgICAgcmV0dXJuIHVyaVZhbHVlOworCisgICAgLy8gRklYTUU6IGh0dHBzOi8vZHJhZnRz
LmNzc3dnLm9yZy9jc3MtZm9udHMgc2F5cyB0aGF0IGZvcm1hdCgpIGNvbnRhaW5zIGEgY29tbWEt
c2VwYXJhdGVkIGxpc3Qgb2Ygc3RyaW5ncywKKyAgICAvLyBidXQgQ1NTRm9udEZhY2VTcmNWYWx1
ZSBzdG9yZXMgb25seSBvbmUgZm9ybWF0LiBBbGxvd2luZyBvbmUgZm9ybWF0IGZvciBub3cuCisg
ICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlKTsKKyAg
ICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgYXJnID0gYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVz
cGFjZSgpOworICAgIGlmICgoYXJnLnR5cGUoKSAhPSBTdHJpbmdUb2tlbikgfHwgIWFyZ3MuYXRF
bmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgdXJpVmFsdWUtPnNldEZvcm1hdChh
cmcudmFsdWUoKS50b1N0cmluZygpKTsKKyAgICByZXR1cm4gdXJpVmFsdWU7Cit9CisKK3N0YXRp
YyBDU1NWYWx1ZSogY29uc3VtZUZvbnRGYWNlU3JjTG9jYWwoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ1NTUGFyc2Vy
VG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlKTsKKyAgICBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXNwb3NpdGlvbiBzaG91bGRDaGVja0NvbnRlbnRTZWN1cml0eVBvbGljeSA9
IGNvbnRleHQuc2hvdWxkQ2hlY2tDb250ZW50U2VjdXJpdHlQb2xpY3koKTsKKyAgICBpZiAoYXJn
cy5wZWVrKCkudHlwZSgpID09IFN0cmluZ1Rva2VuKSB7CisgICAgICAgIGNvbnN0IENTU1BhcnNl
clRva2VuJiBhcmcgPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAg
IGlmICghYXJncy5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IHJldHVybiBDU1NGb250RmFjZVNyY1ZhbHVlOjpjcmVhdGVMb2NhbChhcmcudmFsdWUoKS50b1N0
cmluZygpLCBzaG91bGRDaGVja0NvbnRlbnRTZWN1cml0eVBvbGljeSk7CisgICAgfQorICAgIGlm
IChhcmdzLnBlZWsoKS50eXBlKCkgPT0gSWRlbnRUb2tlbikgeworICAgICAgICBTdHJpbmcgZmFt
aWx5TmFtZSA9IGNvbmNhdGVuYXRlRmFtaWx5TmFtZShhcmdzKTsKKyAgICAgICAgaWYgKCFhcmdz
LmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIENT
U0ZvbnRGYWNlU3JjVmFsdWU6OmNyZWF0ZUxvY2FsKGZhbWlseU5hbWUsIHNob3VsZENoZWNrQ29u
dGVudFNlY3VyaXR5UG9saWN5KTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0
YXRpYyBDU1NWYWx1ZUxpc3QqIGNvbnN1bWVGb250RmFjZVNyYyhDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBDU1NWYWx1
ZUxpc3QqIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKwor
ICAgIGRvIHsKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVl
aygpOworICAgICAgICBDU1NWYWx1ZSogcGFyc2VkVmFsdWUgPSBudWxscHRyOworICAgICAgICBp
ZiAodG9rZW4uZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlTG9jYWwpCisgICAgICAgICAgICBwYXJz
ZWRWYWx1ZSA9IGNvbnN1bWVGb250RmFjZVNyY0xvY2FsKHJhbmdlLCBjb250ZXh0KTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lRm9udEZhY2VTcmNVUkko
cmFuZ2UsIGNvbnRleHQpOworICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHZhbHVlcy0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7Cisg
ICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpOworICAg
IHJldHVybiB2YWx1ZXM7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlRm9udEZh
Y2VEZXNjcmlwdG9yKENTU1Byb3BlcnR5SUQgcHJvcElkKQoreworICAgIENTU1ZhbHVlKiBwYXJz
ZWRWYWx1ZSA9IG51bGxwdHI7CisgICAgc3dpdGNoIChwcm9wSWQpIHsKKyAgICBjYXNlIENTU1By
b3BlcnR5Rm9udEZhbWlseToKKyAgICAgICAgaWYgKGNvbnN1bWVHZW5lcmljRmFtaWx5KG1fcmFu
Z2UpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBwYXJzZWRWYWx1ZSA9IGNv
bnN1bWVGYW1pbHlOYW1lKG1fcmFuZ2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1By
b3BlcnR5U3JjOiAvLyBUaGlzIGlzIGEgbGlzdCBvZiB1cmxzIG9yIGxvY2FsIHJlZmVyZW5jZXMu
CisgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUZvbnRGYWNlU3JjKG1fcmFuZ2UsIG1fY29u
dGV4dCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlVbmljb2RlUmFuZ2U6
CisgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUZvbnRGYWNlVW5pY29kZVJhbmdlKG1fcmFu
Z2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udERpc3BsYXk6Cisg
ICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUZvbnREaXNwbGF5KG1fcmFuZ2UpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0cmV0Y2g6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUZvbnRTdHlsZTogeworICAgICAgICBDU1NWYWx1ZUlEIGlkID0gbV9yYW5nZS5jb25z
dW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgICAgIGlmICghQ1NTUGFyc2VyRmFz
dFBhdGhzOjppc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUocHJvcElkLCBpZCwgbV9jb250
ZXh0Lm1vZGUoKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHBhcnNlZFZh
bHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoaWQpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50OgorICAgICAgICBw
YXJzZWRWYWx1ZSA9IGNvbnN1bWVGb250VmFyaWFudExpc3QobV9yYW5nZSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250V2VpZ2h0OgorICAgICAgICBwYXJzZWRWYWx1
ZSA9IGNvbnN1bWVGb250V2VpZ2h0KG1fcmFuZ2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1Byb3BlcnR5Rm9udEZlYXR1cmVTZXR0aW5nczoKKyAgICAgICAgcGFyc2VkVmFsdWUgPSBj
b25zdW1lRm9udEZlYXR1cmVTZXR0aW5ncyhtX3JhbmdlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKCFwYXJzZWRWYWx1ZSB8
fCAhbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhZGRQcm9w
ZXJ0eShwcm9wSWQsIENTU1Byb3BlcnR5SW52YWxpZCwgKnBhcnNlZFZhbHVlLCBmYWxzZSk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVTeXN0
ZW1Gb250KGJvb2wgaW1wb3J0YW50KQoreworICAgIENTU1ZhbHVlSUQgc3lzdGVtRm9udElEID0g
bV9yYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgQVNTRVJUKHN5
c3RlbUZvbnRJRCA+PSBDU1NWYWx1ZUNhcHRpb24gJiYgc3lzdGVtRm9udElEIDw9IENTU1ZhbHVl
U3RhdHVzQmFyKTsKKyAgICBpZiAoIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgRm9udFN0eWxlIGZvbnRTdHlsZSA9IEZvbnRTdHlsZU5vcm1hbDsKKyAgICBG
b250V2VpZ2h0IGZvbnRXZWlnaHQgPSBGb250V2VpZ2h0Tm9ybWFsOworICAgIGZsb2F0IGZvbnRT
aXplID0gMDsKKyAgICBBdG9taWNTdHJpbmcgZm9udEZhbWlseTsKKyAgICBMYXlvdXRUaGVtZTo6
dGhlbWUoKS5zeXN0ZW1Gb250KHN5c3RlbUZvbnRJRCwgZm9udFN0eWxlLCBmb250V2VpZ2h0LCBm
b250U2l6ZSwgZm9udEZhbWlseSk7CisKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRT
dHlsZSwgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZp
ZXIoZm9udFN0eWxlID09IEZvbnRTdHlsZUl0YWxpYyA/IENTU1ZhbHVlSXRhbGljIDogQ1NTVmFs
dWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFdl
aWdodCwgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShmb250V2Vp
Z2h0KSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBD
U1NQcm9wZXJ0eUZvbnQsICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGZvbnRTaXplLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBpeGVscyksIGltcG9ydGFudCk7CisgICAgQ1NTVmFs
dWVMaXN0KiBmb250RmFtaWx5TGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0
ZWQoKTsKKyAgICBmb250RmFtaWx5TGlzdC0+YXBwZW5kKCpDU1NGb250RmFtaWx5VmFsdWU6OmNy
ZWF0ZShmb250RmFtaWx5KSk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFtaWx5
LCBDU1NQcm9wZXJ0eUZvbnQsICpmb250RmFtaWx5TGlzdCwgaW1wb3J0YW50KTsKKworICAgIGFk
ZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFN0cmV0Y2gsIENTU1Byb3BlcnR5Rm9udCwgKkNTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFsKSwgaW1wb3J0YW50
KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50Q2FwcywgQ1NTUHJvcGVy
dHlGb250LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3Jt
YWwpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRM
aWdhdHVyZXMsIENTU1Byb3BlcnR5Rm9udCwgKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVu
dGlmaWVyKENTU1ZhbHVlTm9ybWFsKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUZvbnRWYXJpYW50TnVtZXJpYywgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAg
IGFkZFByb3BlcnR5KENTU1Byb3BlcnR5TGluZUhlaWdodCwgQ1NTUHJvcGVydHlGb250LCAqQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRh
bnQpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25z
dW1lRm9udChib29sIGltcG9ydGFudCkKK3sKKyAgICAvLyBMZXQncyBjaGVjayBpZiB0aGVyZSBp
cyBhbiBpbmhlcml0IG9yIGluaXRpYWwgc29tZXdoZXJlIGluIHRoZSBzaG9ydGhhbmQuCisgICAg
Q1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSA9IG1fcmFuZ2U7CisgICAgd2hpbGUgKCFyYW5nZS5h
dEVuZCgpKSB7CisgICAgICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5jb25zdW1lSW5jbHVkaW5n
V2hpdGVzcGFjZSgpLmlkKCk7CisgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUluaGVyaXQgfHwg
aWQgPT0gQ1NTVmFsdWVJbml0aWFsKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICAvLyBPcHRpb25hbCBmb250LXN0eWxlLCBmb250LXZhcmlhbnQsIGZvbnQtc3RyZXRjaCBh
bmQgZm9udC13ZWlnaHQuCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZvbnRTdHlsZSA9IG51bGxw
dHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZvbnRWYXJpYW50Q2FwcyA9IG51bGxwdHI7Cisg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZvbnRXZWlnaHQgPSBudWxscHRyOworICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBmb250U3RyZXRjaCA9IG51bGxwdHI7CisgICAgd2hpbGUgKCFtX3JhbmdlLmF0
RW5kKCkpIHsKKyAgICAgICAgQ1NTVmFsdWVJRCBpZCA9IG1fcmFuZ2UucGVlaygpLmlkKCk7Cisg
ICAgICAgIGlmICghZm9udFN0eWxlICYmIENTU1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdv
cmRQcm9wZXJ0eUFuZFZhbHVlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCBpZCwgbV9jb250ZXh0Lm1v
ZGUoKSkpIHsKKyAgICAgICAgICAgIGZvbnRTdHlsZSA9IGNvbnN1bWVJZGVudChtX3JhbmdlKTsK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICghZm9udFZhcmlh
bnRDYXBzICYmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZVNtYWxsQ2Fw
cykpIHsKKyAgICAgICAgICAgIC8vIEZvbnQgdmFyaWFudCBpbiB0aGUgc2hvcnRoYW5kIGlzIHBh
cnRpY3VsYXIsIGl0IG9ubHkgYWNjZXB0cyBub3JtYWwgb3Igc21hbGwtY2Fwcy4KKyAgICAgICAg
ICAgIC8vIFNlZSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWZvbnRzLyNwcm9wZGVmLWZv
bnQKKyAgICAgICAgICAgIGZvbnRWYXJpYW50Q2FwcyA9IGNvbnN1bWVGb250VmFyaWFudENTUzIx
KG1fcmFuZ2UpOworICAgICAgICAgICAgaWYgKGZvbnRWYXJpYW50Q2FwcykKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZvbnRXZWlnaHQpIHsKKyAg
ICAgICAgICAgIGZvbnRXZWlnaHQgPSBjb25zdW1lRm9udFdlaWdodChtX3JhbmdlKTsKKyAgICAg
ICAgICAgIGlmIChmb250V2VpZ2h0KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisgICAgICAgIGlmICghZm9udFN0cmV0Y2ggJiYgQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1Zh
bGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUoQ1NTUHJvcGVydHlGb250U3RyZXRjaCwgaWQsIG1f
Y29udGV4dC5tb2RlKCkpKQorICAgICAgICAgICAgZm9udFN0cmV0Y2ggPSBjb25zdW1lSWRlbnQo
bV9yYW5nZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IGlmIChtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGFkZFBy
b3BlcnR5KENTU1Byb3BlcnR5Rm9udFN0eWxlLCBDU1NQcm9wZXJ0eUZvbnQsIGZvbnRTdHlsZSA/
ICpmb250U3R5bGUgOiAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFs
dWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZh
cmlhbnRDYXBzLCBDU1NQcm9wZXJ0eUZvbnQsIGZvbnRWYXJpYW50Q2FwcyA/ICpmb250VmFyaWFu
dENhcHMgOiAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3Jt
YWwpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRM
aWdhdHVyZXMsIENTU1Byb3BlcnR5Rm9udCwgKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVu
dGlmaWVyKENTU1ZhbHVlTm9ybWFsKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUZvbnRWYXJpYW50TnVtZXJpYywgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworCisg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCBDU1NQcm9wZXJ0eUZvbnQsIGZv
bnRXZWlnaHQgPyAqZm9udFdlaWdodCA6ICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRp
ZmllcihDU1NWYWx1ZU5vcm1hbCksIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJv
cGVydHlGb250U3RyZXRjaCwgQ1NTUHJvcGVydHlGb250LCBmb250U3RyZXRjaCA/ICpmb250U3Ry
ZXRjaCA6ICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vcm1h
bCksIGltcG9ydGFudCk7CisKKyAgICAvLyBOb3cgYSBmb250IHNpemUgX211c3RfIGNvbWUuCisg
ICAgQ1NTVmFsdWUqIGZvbnRTaXplID0gY29uc3VtZUZvbnRTaXplKG1fcmFuZ2UsIG1fY29udGV4
dC5tb2RlKCkpOworICAgIGlmICghZm9udFNpemUgfHwgbV9yYW5nZS5hdEVuZCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBD
U1NQcm9wZXJ0eUZvbnQsICpmb250U2l6ZSwgaW1wb3J0YW50KTsKKworICAgIGlmIChjb25zdW1l
U2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKG1fcmFuZ2UpKSB7CisgICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBsaW5lSGVpZ2h0ID0gY29uc3VtZUxpbmVIZWlnaHQobV9yYW5nZSwgbV9jb250ZXh0
Lm1vZGUoKSk7CisgICAgICAgIGlmICghbGluZUhlaWdodCkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlMaW5lSGVpZ2h0LCBDU1NQcm9w
ZXJ0eUZvbnQsICpsaW5lSGVpZ2h0LCBpbXBvcnRhbnQpOworICAgIH0gZWxzZSB7CisgICAgICAg
IGFkZFByb3BlcnR5KENTU1Byb3BlcnR5TGluZUhlaWdodCwgQ1NTUHJvcGVydHlGb250LCAqQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRh
bnQpOworICAgIH0KKworICAgIC8vIEZvbnQgZmFtaWx5IG11c3QgY29tZSBub3cuCisgICAgQ1NT
VmFsdWUqIHBhcnNlZEZhbWlseVZhbHVlID0gY29uc3VtZUZvbnRGYW1pbHkobV9yYW5nZSk7Cisg
ICAgaWYgKCFwYXJzZWRGYW1pbHlWYWx1ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFtaWx5LCBDU1NQcm9wZXJ0eUZvbnQsICpwYXJz
ZWRGYW1pbHlWYWx1ZSwgaW1wb3J0YW50KTsKKworICAgIC8vIEZJWE1FOiBodHRwOi8vd3d3Lncz
Lm9yZy9UUi8yMDExL1dELWNzczMtZm9udHMtMjAxMTAzMjQvI2ZvbnQtcHJvcCByZXF1aXJlcyB0
aGF0CisgICAgLy8gImZvbnQtc3RyZXRjaCIsICJmb250LXNpemUtYWRqdXN0IiwgYW5kICJmb250
LWtlcm5pbmciIGJlIHJlc2V0IHRvIHRoZWlyIGluaXRpYWwgdmFsdWVzCisgICAgLy8gYnV0IHdl
IGRvbid0IHNlZW0gdG8gc3VwcG9ydCB0aGVtIGF0IHRoZSBtb21lbnQuIFRoZXkgc2hvdWxkIGFs
c28gYmUgYWRkZWQgaGVyZSBvbmNlIGltcGxlbWVudGVkLgorICAgIHJldHVybiBtX3JhbmdlLmF0
RW5kKCk7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVGb250VmFyaWFudFNo
b3J0aGFuZChib29sIGltcG9ydGFudCkKK3sKKyAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVl
Tm9ybWFsLCBDU1NWYWx1ZU5vbmU+KG1fcmFuZ2UucGVlaygpLmlkKCkpKSB7CisgICAgICAgIGFk
ZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXMsIENTU1Byb3BlcnR5Rm9u
dFZhcmlhbnQsICpjb25zdW1lSWRlbnQobV9yYW5nZSksIGltcG9ydGFudCk7CisgICAgICAgIGFk
ZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRDYXBzLCBDU1NQcm9wZXJ0eUZvbnRWYXJp
YW50LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwp
LCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gbV9yYW5nZS5hdEVuZCgpOworICAgIH0KKwor
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjYXBzVmFsdWUgPSBudWxscHRyOworICAgIEZvbnRWYXJp
YW50TGlnYXR1cmVzUGFyc2VyIGxpZ2F0dXJlc1BhcnNlcjsKKyAgICBGb250VmFyaWFudE51bWVy
aWNQYXJzZXIgbnVtZXJpY1BhcnNlcjsKKyAgICBkbyB7CisgICAgICAgIEZvbnRWYXJpYW50TGln
YXR1cmVzUGFyc2VyOjpQYXJzZVJlc3VsdCBsaWdhdHVyZXNQYXJzZVJlc3VsdCA9IGxpZ2F0dXJl
c1BhcnNlci5jb25zdW1lTGlnYXR1cmUobV9yYW5nZSk7CisgICAgICAgIEZvbnRWYXJpYW50TnVt
ZXJpY1BhcnNlcjo6UGFyc2VSZXN1bHQgbnVtZXJpY1BhcnNlUmVzdWx0ID0gbnVtZXJpY1BhcnNl
ci5jb25zdW1lTnVtZXJpYyhtX3JhbmdlKTsKKyAgICAgICAgaWYgKGxpZ2F0dXJlc1BhcnNlUmVz
dWx0ID09IEZvbnRWYXJpYW50TGlnYXR1cmVzUGFyc2VyOjpQYXJzZVJlc3VsdDo6Q29uc3VtZWRW
YWx1ZQorICAgICAgICAgICAgfHwgbnVtZXJpY1BhcnNlUmVzdWx0ID09IEZvbnRWYXJpYW50TnVt
ZXJpY1BhcnNlcjo6UGFyc2VSZXN1bHQ6OkNvbnN1bWVkVmFsdWUpCisgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICBpZiAobGlnYXR1cmVzUGFyc2VSZXN1bHQgPT0gRm9udFZhcmlhbnRM
aWdhdHVyZXNQYXJzZXI6OlBhcnNlUmVzdWx0OjpEaXNhbGxvd2VkVmFsdWUKKyAgICAgICAgICAg
IHx8IG51bWVyaWNQYXJzZVJlc3VsdCA9PSBGb250VmFyaWFudE51bWVyaWNQYXJzZXI6OlBhcnNl
UmVzdWx0OjpEaXNhbGxvd2VkVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgQ1NTVmFsdWVJRCBpZCA9IG1fcmFuZ2UucGVlaygpLmlkKCk7CisgICAgICAgIHN3aXRj
aCAoaWQpIHsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVNtYWxsQ2FwczoKKyAgICAgICAgY2FzZSBD
U1NWYWx1ZUFsbFNtYWxsQ2FwczoKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVBldGl0ZUNhcHM6Cisg
ICAgICAgIGNhc2UgQ1NTVmFsdWVBbGxQZXRpdGVDYXBzOgorICAgICAgICBjYXNlIENTU1ZhbHVl
VW5pY2FzZToKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVRpdGxpbmdDYXBzOgorICAgICAgICAgICAg
Ly8gT25seSBvbmUgY2FwcyB2YWx1ZSBwZXJtaXR0ZWQgaW4gZm9udC12YXJpYW50IGdyYW1tYXIu
CisgICAgICAgICAgICBpZiAoY2Fwc1ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIGNhcHNWYWx1ZSA9IGNvbnN1bWVJZGVudChtX3JhbmdlKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisgICAgfSB3aGlsZSAoIW1fcmFuZ2UuYXRFbmQoKSk7CisKKyAgICBhZGRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50TGlnYXR1cmVzLCBDU1NQcm9wZXJ0eUZvbnRW
YXJpYW50LCAqbGlnYXR1cmVzUGFyc2VyLmZpbmFsaXplVmFsdWUoKSwgaW1wb3J0YW50KTsKKyAg
ICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50TnVtZXJpYywgQ1NTUHJvcGVydHlG
b250VmFyaWFudCwgKm51bWVyaWNQYXJzZXIuZmluYWxpemVWYWx1ZSgpLCBpbXBvcnRhbnQpOwor
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRDYXBzLCBDU1NQcm9wZXJ0eUZv
bnRWYXJpYW50LCBjYXBzVmFsdWUgPyAqY2Fwc1ZhbHVlIDogKkNTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFsKSwgaW1wb3J0YW50KTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUJvcmRlclNwYWNpbmco
Ym9vbCBpbXBvcnRhbnQpCit7CisgICAgQ1NTVmFsdWUqIGhvcml6b250YWxTcGFjaW5nID0gY29u
c3VtZUxlbmd0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlTm9uTmVnYXRp
dmUsIFVuaXRsZXNzUXVpcms6OkFsbG93KTsKKyAgICBpZiAoIWhvcml6b250YWxTcGFjaW5nKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQ1NTVmFsdWUqIHZlcnRpY2FsU3BhY2luZyA9IGhv
cml6b250YWxTcGFjaW5nOworICAgIGlmICghbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICB2ZXJ0
aWNhbFNwYWNpbmcgPSBjb25zdW1lTGVuZ3RoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFZh
bHVlUmFuZ2VOb25OZWdhdGl2ZSwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOworICAgIGlmICghdmVy
dGljYWxTcGFjaW5nIHx8ICFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5n
LCBDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcsICpob3Jpem9udGFsU3BhY2luZywgaW1wb3J0YW50
KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2lu
ZywgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nLCAqdmVydGljYWxTcGFjaW5nLCBpbXBvcnRhbnQp
OworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVTaW5nbGVW
aWV3cG9ydERlc2NyaXB0b3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1Byb3BlcnR5
SUQgcHJvcElkLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgQ1NTVmFsdWVJ
RCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eU1pbldpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhXaWR0aDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5TWluSGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhIZWln
aHQ6CisgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVJbnRl
cm5hbEV4dGVuZFRvWm9vbSkKKyAgICAgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2Up
OworICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2Vy
TW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWluWm9v
bToKKyAgICBjYXNlIENTU1Byb3BlcnR5TWF4Wm9vbToKKyAgICBjYXNlIENTU1Byb3BlcnR5Wm9v
bTogeworICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICAgICAgcmV0dXJu
IGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgICAgIENTU1ZhbHVlKiBwYXJzZWRWYWx1ZSA9IGNv
bnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgIGlmIChw
YXJzZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBwYXJzZWRWYWx1ZTsKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVQZXJjZW50KHJhbmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgIH0K
KyAgICBjYXNlIENTU1Byb3BlcnR5VXNlclpvb206CisgICAgICAgIHJldHVybiBjb25zdW1lSWRl
bnQ8Q1NTVmFsdWVab29tLCBDU1NWYWx1ZUZpeGVkPihyYW5nZSk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eU9yaWVudGF0aW9uOgorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlQXV0
bywgQ1NTVmFsdWVQb3J0cmFpdCwgQ1NTVmFsdWVMYW5kc2NhcGU+KHJhbmdlKTsKKyAgICBkZWZh
dWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVmlld3BvcnREZXNjcmlwdG9yKENTU1Byb3Bl
cnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKK3sKKyAgICBBU1NFUlQoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6Y3NzVmlld3BvcnRFbmFibGVkKCkgfHwgaXNVQVNoZWV0QmVoYXZpb3IobV9j
b250ZXh0Lm1vZGUoKSkpOworCisgICAgc3dpdGNoIChwcm9wSWQpIHsKKyAgICBjYXNlIENTU1By
b3BlcnR5V2lkdGg6IHsKKyAgICAgICAgQ1NTVmFsdWUqIG1pbldpZHRoID0gY29uc3VtZVNpbmds
ZVZpZXdwb3J0RGVzY3JpcHRvcihtX3JhbmdlLCBDU1NQcm9wZXJ0eU1pbldpZHRoLCBtX2NvbnRl
eHQubW9kZSgpKTsKKyAgICAgICAgaWYgKCFtaW5XaWR0aCkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgQ1NTVmFsdWUqIG1heFdpZHRoID0gbWluV2lkdGg7CisgICAgICAgIGlm
ICghbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICAgICAgbWF4V2lkdGggPSBjb25zdW1lU2luZ2xl
Vmlld3BvcnREZXNjcmlwdG9yKG1fcmFuZ2UsIENTU1Byb3BlcnR5TWF4V2lkdGgsIG1fY29udGV4
dC5tb2RlKCkpOworICAgICAgICBpZiAoIW1heFdpZHRoIHx8ICFtX3JhbmdlLmF0RW5kKCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5
TWluV2lkdGgsIENTU1Byb3BlcnR5SW52YWxpZCwgKm1pbldpZHRoLCBpbXBvcnRhbnQpOworICAg
ICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1heFdpZHRoLCBDU1NQcm9wZXJ0eUludmFsaWQs
ICptYXhXaWR0aCwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IGNhc2UgQ1NTUHJvcGVydHlIZWlnaHQ6IHsKKyAgICAgICAgQ1NTVmFsdWUqIG1pbkhlaWdodCA9
IGNvbnN1bWVTaW5nbGVWaWV3cG9ydERlc2NyaXB0b3IobV9yYW5nZSwgQ1NTUHJvcGVydHlNaW5I
ZWlnaHQsIG1fY29udGV4dC5tb2RlKCkpOworICAgICAgICBpZiAoIW1pbkhlaWdodCkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgQ1NTVmFsdWUqIG1heEhlaWdodCA9IG1pbkhl
aWdodDsKKyAgICAgICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICBtYXhIZWln
aHQgPSBjb25zdW1lU2luZ2xlVmlld3BvcnREZXNjcmlwdG9yKG1fcmFuZ2UsIENTU1Byb3BlcnR5
TWF4SGVpZ2h0LCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICAgICAgaWYgKCFtYXhIZWlnaHQgfHwg
IW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYWRk
UHJvcGVydHkoQ1NTUHJvcGVydHlNaW5IZWlnaHQsIENTU1Byb3BlcnR5SW52YWxpZCwgKm1pbkhl
aWdodCwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlNYXhIZWln
aHQsIENTU1Byb3BlcnR5SW52YWxpZCwgKm1heEhlaWdodCwgaW1wb3J0YW50KTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5XaWR0aDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5TWF4V2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbkhlaWdodDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5TWF4SGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5a
b29tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhab29tOgorICAgIGNhc2UgQ1NTUHJvcGVydHla
b29tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlVc2VyWm9vbToKKyAgICBjYXNlIENTU1Byb3BlcnR5
T3JpZW50YXRpb246IHsKKyAgICAgICAgQ1NTVmFsdWUqIHBhcnNlZFZhbHVlID0gY29uc3VtZVNp
bmdsZVZpZXdwb3J0RGVzY3JpcHRvcihtX3JhbmdlLCBwcm9wSWQsIG1fY29udGV4dC5tb2RlKCkp
OworICAgICAgICBpZiAoIXBhcnNlZFZhbHVlIHx8ICFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFkZFByb3BlcnR5KHByb3BJZCwgQ1NTUHJvcGVy
dHlJbnZhbGlkLCAqcGFyc2VkVmFsdWUsIGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQor
CitzdGF0aWMgYm9vbCBjb25zdW1lQ29sdW1uV2lkdGhPckNvdW50KENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBDU1NWYWx1ZSomIGNvbHVtbldpZHRoLCBDU1NWYWx1ZSomIGNvbHVtbkNvdW50
KQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pIHsKKyAgICAg
ICAgY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IGlmICghY29sdW1uV2lkdGgpIHsKKyAgICAgICAgY29sdW1uV2lkdGggPSBjb25zdW1lQ29sdW1u
V2lkdGgocmFuZ2UpOworICAgICAgICBpZiAoY29sdW1uV2lkdGgpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKCFjb2x1bW5Db3VudCkKKyAgICAgICAgY29sdW1uQ291
bnQgPSBjb25zdW1lQ29sdW1uQ291bnQocmFuZ2UpOworICAgIHJldHVybiBjb2x1bW5Db3VudDsK
K30KKworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUNvbHVtbnMoYm9vbCBpbXBvcnRh
bnQpCit7CisgICAgQ1NTVmFsdWUqIGNvbHVtbldpZHRoID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1
ZSogY29sdW1uQ291bnQgPSBudWxscHRyOworICAgIGlmICghY29uc3VtZUNvbHVtbldpZHRoT3JD
b3VudChtX3JhbmdlLCBjb2x1bW5XaWR0aCwgY29sdW1uQ291bnQpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgY29uc3VtZUNvbHVtbldpZHRoT3JDb3VudChtX3JhbmdlLCBjb2x1bW5XaWR0
aCwgY29sdW1uQ291bnQpOworICAgIGlmICghbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKCFjb2x1bW5XaWR0aCkKKyAgICAgICAgY29sdW1uV2lkdGggPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUF1dG8pOworICAgIGlm
ICghY29sdW1uQ291bnQpCisgICAgICAgIGNvbHVtbkNvdW50ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVBdXRvKTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUNvbHVtbldpZHRoLCBDU1NQcm9wZXJ0eUludmFsaWQsICpjb2x1bW5XaWR0aCwgaW1wb3J0
YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbHVtbkNvdW50LCBDU1NQcm9wZXJ0
eUludmFsaWQsICpjb2x1bW5Db3VudCwgaW1wb3J0YW50KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KGNvbnN0
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCwgYm9vbCBpbXBvcnRhbnQpCit7Cisg
ICAgQVNTRVJUKHNob3J0aGFuZC5sZW5ndGgoKSA8PSA2KTsgLy8gRXhpc3Rpbmcgc2hvcnRoYW5k
cyBoYXZlIGF0IG1vc3QgNiBsb25naGFuZHMuCisgICAgY29uc3QgQ1NTVmFsdWUqIGxvbmdoYW5k
c1s2XSA9IHsgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciB9OworICAgIGNvbnN0IENTU1Byb3BlcnR5SUQqIHNob3J0aGFuZFByb3BlcnRpZXMgPSBz
aG9ydGhhbmQucHJvcGVydGllcygpOworICAgIGRvIHsKKyAgICAgICAgYm9vbCBmb3VuZExvbmdo
YW5kID0gZmFsc2U7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyAhZm91bmRMb25naGFuZCAm
JiBpIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChsb25naGFu
ZHNbaV0pCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBsb25naGFuZHNb
aV0gPSBwYXJzZVNpbmdsZVZhbHVlKHNob3J0aGFuZFByb3BlcnRpZXNbaV0sIHNob3J0aGFuZC5p
ZCgpKTsKKyAgICAgICAgICAgIGlmIChsb25naGFuZHNbaV0pCisgICAgICAgICAgICAgICAgZm91
bmRMb25naGFuZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmb3VuZExvbmdoYW5k
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gd2hpbGUgKCFtX3JhbmdlLmF0RW5k
KCkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsr
aSkgeworICAgICAgICBpZiAobG9uZ2hhbmRzW2ldKQorICAgICAgICAgICAgYWRkUHJvcGVydHko
c2hvcnRoYW5kUHJvcGVydGllc1tpXSwgc2hvcnRoYW5kLmlkKCksICpsb25naGFuZHNbaV0sIGlt
cG9ydGFudCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KHNob3J0aGFu
ZFByb3BlcnRpZXNbaV0sIHNob3J0aGFuZC5pZCgpLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVM
ZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUZsZXgoYm9vbCBpbXBvcnRhbnQpCit7
CisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB1bnNldFZhbHVlID0gLTE7CisgICAgZG91YmxlIGZs
ZXhHcm93ID0gdW5zZXRWYWx1ZTsKKyAgICBkb3VibGUgZmxleFNocmluayA9IHVuc2V0VmFsdWU7
CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZsZXhCYXNpcyA9IG51bGxwdHI7CisKKyAgICBpZiAo
bV9yYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpIHsKKyAgICAgICAgZmxleEdyb3cg
PSAwOworICAgICAgICBmbGV4U2hyaW5rID0gMDsKKyAgICAgICAgZmxleEJhc2lzID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVBdXRvKTsKKyAgICAgICAgbV9y
YW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgIH0gZWxzZSB7CisgICAgICAg
IHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICAgICAgd2hpbGUgKCFtX3JhbmdlLmF0RW5kKCkgJiYg
aW5kZXgrKyA8IDMpIHsKKyAgICAgICAgICAgIGRvdWJsZSBudW07CisgICAgICAgICAgICBpZiAo
Y29uc3VtZU51bWJlclJhdyhtX3JhbmdlLCBudW0pKSB7CisgICAgICAgICAgICAgICAgaWYgKG51
bSA8IDApCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICBpZiAoZmxleEdyb3cgPT0gdW5zZXRWYWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgZmxleEdy
b3cgPSBudW07CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxleFNocmluayA9PSB1bnNldFZh
bHVlKQorICAgICAgICAgICAgICAgICAgICBmbGV4U2hyaW5rID0gbnVtOworICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKCFudW0pIC8vIGZsZXggb25seSBhbGxvd3MgYSBiYXNpcyBvZiAwIChzYW5z
IHVuaXRzKSBpZiBmbGV4LWdyb3cgYW5kIGZsZXgtc2hyaW5rIHZhbHVlcyBoYXZlIGFscmVhZHkg
YmVlbiBzZXQuCisgICAgICAgICAgICAgICAgICAgIGZsZXhCYXNpcyA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUoMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQaXhlbHMpOworICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgfSBlbHNlIGlmICghZmxleEJhc2lzKSB7CisgICAgICAgICAgICAgICAgaWYgKG1f
cmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICAgICAgICAgICAgICBm
bGV4QmFzaXMgPSBjb25zdW1lSWRlbnQobV9yYW5nZSk7CisgICAgICAgICAgICAgICAgaWYgKCFm
bGV4QmFzaXMpCisgICAgICAgICAgICAgICAgICAgIGZsZXhCYXNpcyA9IGNvbnN1bWVMZW5ndGhP
clBlcmNlbnQobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZl
KTsKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT0gMiAmJiAhbV9yYW5nZS5hdEVuZCgpKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgaWYgKGluZGV4ID09IDApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGlmIChmbGV4R3JvdyA9PSB1bnNldFZhbHVlKQorICAgICAgICAgICAgZmxleEdyb3cg
PSAxOworICAgICAgICBpZiAoZmxleFNocmluayA9PSB1bnNldFZhbHVlKQorICAgICAgICAgICAg
ZmxleFNocmluayA9IDE7CisgICAgICAgIGlmICghZmxleEJhc2lzKQorICAgICAgICAgICAgZmxl
eEJhc2lzID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLCBDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGU6OlBlcmNlbnRhZ2UpOworICAgIH0KKworICAgIGlmICghbV9yYW5nZS5hdEVuZCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGbGV4
R3JvdywgQ1NTUHJvcGVydHlGbGV4LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShjbGFtcFRv
PGZsb2F0PihmbGV4R3JvdyksIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyKSwg
aW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZsZXhTaHJpbmssIENTU1By
b3BlcnR5RmxleCwgKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoY2xhbXBUbzxmbG9hdD4oZmxl
eFNocmluayksIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyKSwgaW1wb3J0YW50
KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZsZXhCYXNpcywgQ1NTUHJvcGVydHlGbGV4
LCAqZmxleEJhc2lzLCBpbXBvcnRhbnQpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIENT
U1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lQm9yZGVyKGJvb2wgaW1wb3J0YW50KQoreworICAgIENT
U1ZhbHVlKiB3aWR0aCA9IG51bGxwdHI7CisgICAgY29uc3QgQ1NTVmFsdWUqIHN0eWxlID0gbnVs
bHB0cjsKKyAgICBDU1NWYWx1ZSogY29sb3IgPSBudWxscHRyOworCisgICAgd2hpbGUgKCF3aWR0
aCB8fCAhc3R5bGUgfHwgIWNvbG9yKSB7CisgICAgICAgIGlmICghd2lkdGgpIHsKKyAgICAgICAg
ICAgIHdpZHRoID0gY29uc3VtZUxpbmVXaWR0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBV
bml0bGVzc1F1aXJrOjpGb3JiaWQpOworICAgICAgICAgICAgaWYgKHdpZHRoKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICghc3R5bGUpIHsKKyAgICAg
ICAgICAgIHN0eWxlID0gcGFyc2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHls
ZSwgQ1NTUHJvcGVydHlCb3JkZXIpOworICAgICAgICAgICAgaWYgKHN0eWxlKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICghY29sb3IpIHsKKyAgICAg
ICAgICAgIGNvbG9yID0gY29uc3VtZUNvbG9yKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOwor
ICAgICAgICAgICAgaWYgKGNvbG9yKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICghd2lkdGggJiYgIXN0eWxlICYm
ICFjb2xvcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCF3aWR0aCkKKyAgICAg
ICAgd2lkdGggPSBDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCk7CisgICAg
aWYgKCFzdHlsZSkKKyAgICAgICAgc3R5bGUgPSBDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2Fj
eUltcGxpY2l0KCk7CisgICAgaWYgKCFjb2xvcikKKyAgICAgICAgY29sb3IgPSBDU1NJbml0aWFs
VmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCk7CisKKyAgICBhZGRFeHBhbmRlZFByb3BlcnR5
Rm9yVmFsdWUoQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgKndpZHRoLCBpbXBvcnRhbnQpOworICAg
IGFkZEV4cGFuZGVkUHJvcGVydHlGb3JWYWx1ZShDU1NQcm9wZXJ0eUJvcmRlclN0eWxlLCAqc3R5
bGUsIGltcG9ydGFudCk7CisgICAgYWRkRXhwYW5kZWRQcm9wZXJ0eUZvclZhbHVlKENTU1Byb3Bl
cnR5Qm9yZGVyQ29sb3IsICpjb2xvciwgaW1wb3J0YW50KTsKKyAgICBhZGRFeHBhbmRlZFByb3Bl
cnR5Rm9yVmFsdWUoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZSwgKkNTU0luaXRpYWxWYWx1ZTo6Y3Jl
YXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKworICAgIHJldHVybiBtX3JhbmdlLmF0
RW5kKCk7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWU0VmFsdWVzKGNvbnN0
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCwgYm9vbCBpbXBvcnRhbnQpCit7Cisg
ICAgQVNTRVJUKHNob3J0aGFuZC5sZW5ndGgoKSA9PSA0KTsKKyAgICBjb25zdCBDU1NQcm9wZXJ0
eUlEKiBsb25naGFuZHMgPSBzaG9ydGhhbmQucHJvcGVydGllcygpOworICAgIGNvbnN0IENTU1Zh
bHVlKiB0b3AgPSBwYXJzZVNpbmdsZVZhbHVlKGxvbmdoYW5kc1swXSwgc2hvcnRoYW5kLmlkKCkp
OworICAgIGlmICghdG9wKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCBDU1NW
YWx1ZSogcmlnaHQgPSBwYXJzZVNpbmdsZVZhbHVlKGxvbmdoYW5kc1sxXSwgc2hvcnRoYW5kLmlk
KCkpOworICAgIGNvbnN0IENTU1ZhbHVlKiBib3R0b20gPSBudWxscHRyOworICAgIGNvbnN0IENT
U1ZhbHVlKiBsZWZ0ID0gbnVsbHB0cjsKKyAgICBpZiAocmlnaHQpIHsKKyAgICAgICAgYm90dG9t
ID0gcGFyc2VTaW5nbGVWYWx1ZShsb25naGFuZHNbMl0sIHNob3J0aGFuZC5pZCgpKTsKKyAgICAg
ICAgaWYgKGJvdHRvbSkKKyAgICAgICAgICAgIGxlZnQgPSBwYXJzZVNpbmdsZVZhbHVlKGxvbmdo
YW5kc1szXSwgc2hvcnRoYW5kLmlkKCkpOworICAgIH0KKworICAgIGlmICghcmlnaHQpCisgICAg
ICAgIHJpZ2h0ID0gdG9wOworICAgIGlmICghYm90dG9tKQorICAgICAgICBib3R0b20gPSB0b3A7
CisgICAgaWYgKCFsZWZ0KQorICAgICAgICBsZWZ0ID0gcmlnaHQ7CisKKyAgICBhZGRQcm9wZXJ0
eShsb25naGFuZHNbMF0sIHNob3J0aGFuZC5pZCgpLCAqdG9wLCBpbXBvcnRhbnQpOworICAgIGFk
ZFByb3BlcnR5KGxvbmdoYW5kc1sxXSwgc2hvcnRoYW5kLmlkKCksICpyaWdodCwgaW1wb3J0YW50
KTsKKyAgICBhZGRQcm9wZXJ0eShsb25naGFuZHNbMl0sIHNob3J0aGFuZC5pZCgpLCAqYm90dG9t
LCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KGxvbmdoYW5kc1szXSwgc2hvcnRoYW5kLmlk
KCksICpsZWZ0LCBpbXBvcnRhbnQpOworCisgICAgcmV0dXJuIG1fcmFuZ2UuYXRFbmQoKTsKK30K
KworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUJvcmRlckltYWdlKENTU1Byb3BlcnR5
SUQgcHJvcGVydHksIGJvb2wgaW1wb3J0YW50KQoreworICAgIENTU1ZhbHVlKiBzb3VyY2UgPSBu
dWxscHRyOworICAgIENTU1ZhbHVlKiBzbGljZSA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIHdp
ZHRoID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogb3V0c2V0ID0gbnVsbHB0cjsKKyAgICBDU1NW
YWx1ZSogcmVwZWF0ID0gbnVsbHB0cjsKKyAgICBpZiAoY29uc3VtZUJvcmRlckltYWdlQ29tcG9u
ZW50cyhwcm9wZXJ0eSwgbV9yYW5nZSwgbV9jb250ZXh0LCBzb3VyY2UsIHNsaWNlLCB3aWR0aCwg
b3V0c2V0LCByZXBlYXQpKSB7CisgICAgICAgIHN3aXRjaCAocHJvcGVydHkpIHsKKyAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZToKKyAgICAgICAgICAgIGFkZFByb3Bl
cnR5KENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlU291cmNlLCBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tCb3hJbWFnZSwgc291cmNlID8gKnNvdXJjZSA6ICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0
ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVNsaWNlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tC
b3hJbWFnZSwgc2xpY2UgPyAqc2xpY2UgOiAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJ
bXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVy
dHlXZWJraXRNYXNrQm94SW1hZ2VXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2Us
IHdpZHRoID8gKndpZHRoIDogKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQo
KSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0
TWFza0JveEltYWdlT3V0c2V0LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgb3V0c2V0
ID8gKm91dHNldCA6ICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGlt
cG9ydGFudCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tC
b3hJbWFnZVJlcGVhdCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2UsIHJlcGVhdCA/ICpy
ZXBlYXQgOiAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRh
bnQpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJJbWFnZToKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVySW1h
Z2VTb3VyY2UsIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2UsIHNvdXJjZSA/ICpzb3VyY2UgOiAqQ1NT
SW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgICAg
ICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNsaWNlLCBDU1NQcm9wZXJ0
eUJvcmRlckltYWdlLCBzbGljZSA/ICpzbGljZSA6ICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxl
Z2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUJvcmRlckltYWdlV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2UsIHdpZHRoID8g
KndpZHRoIDogKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0
YW50KTsKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VPdXRz
ZXQsIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2UsIG91dHNldCA/ICpvdXRzZXQgOiAqQ1NTSW5pdGlh
bFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgICAgICAgICAg
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVJlcGVhdCwgQ1NTUHJvcGVydHlCb3Jk
ZXJJbWFnZSwgcmVwZWF0ID8gKnJlcGVhdCA6ICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2Fj
eUltcGxpY2l0KCksIGltcG9ydGFudCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30K
Kworc3RhdGljIGlubGluZSBDU1NWYWx1ZUlEIG1hcEZyb21QYWdlQnJlYWtCZXR3ZWVuKENTU1Zh
bHVlSUQgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlID09IENTU1ZhbHVlQWx3YXlzKQorICAgICAg
ICByZXR1cm4gQ1NTVmFsdWVQYWdlOworICAgIGlmICh2YWx1ZSA9PSBDU1NWYWx1ZUF1dG8gfHwg
dmFsdWUgPT0gQ1NTVmFsdWVBdm9pZCB8fCB2YWx1ZSA9PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWUg
PT0gQ1NTVmFsdWVSaWdodCkKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBDU1NW
YWx1ZUludmFsaWQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgQ1NTVmFsdWVJRCBtYXBGcm9tQ29sdW1u
QnJlYWtCZXR3ZWVuKENTU1ZhbHVlSUQgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlID09IENTU1Zh
bHVlQWx3YXlzKQorICAgICAgICByZXR1cm4gQ1NTVmFsdWVDb2x1bW47CisgICAgaWYgKHZhbHVl
ID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZSA9PSBDU1NWYWx1ZUF2b2lkKQorICAgICAgICByZXR1
cm4gdmFsdWU7CisgICAgcmV0dXJuIENTU1ZhbHVlSW52YWxpZDsKK30KKworc3RhdGljIGlubGlu
ZSBDU1NWYWx1ZUlEIG1hcEZyb21Db2x1bW5PclBhZ2VCcmVha0luc2lkZShDU1NWYWx1ZUlEIHZh
bHVlKQoreworICAgIGlmICh2YWx1ZSA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWUgPT0gQ1NTVmFs
dWVBdm9pZCkKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBDU1NWYWx1ZUludmFs
aWQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgQ1NTUHJvcGVydHlJRCBtYXBGcm9tTGVnYWN5QnJlYWtQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KQoreworICAgIGlmIChwcm9wZXJ0eSA9PSBD
U1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0
Q29sdW1uQnJlYWtBZnRlcikKKyAgICAgICAgcmV0dXJuIENTU1Byb3BlcnR5QnJlYWtBZnRlcjsK
KyAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlQYWdlQnJlYWtCZWZvcmUgfHwgcHJvcGVy
dHkgPT0gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0JlZm9yZSkKKyAgICAgICAgcmV0dXJu
IENTU1Byb3BlcnR5QnJlYWtCZWZvcmU7CisgICAgQVNTRVJUKHByb3BlcnR5ID09IENTU1Byb3Bl
cnR5UGFnZUJyZWFrSW5zaWRlIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
QnJlYWtJbnNpZGUpOworICAgIHJldHVybiBDU1NQcm9wZXJ0eUJyZWFrSW5zaWRlOworfQorCiti
b29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lTGVnYWN5QnJlYWtQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5LCBib29sIGltcG9ydGFudCkKK3sKKyAgICAvLyBUaGUgZnJhZ21lbnRh
dGlvbiBzcGVjIHNheXMgdGhhdCBwYWdlLWJyZWFrLShhZnRlcnxiZWZvcmV8aW5zaWRlKSBhcmUg
dG8gYmUgdHJlYXRlZCBhcworICAgIC8vIHNob3J0aGFuZHMgZm9yIHRoZWlyIGJyZWFrLShhZnRl
cnxiZWZvcmV8aW5zaWRlKSBjb3VudGVycGFydHMuIFdlJ2xsIGRvIHRoZSBzYW1lIGZvciB0aGUK
KyAgICAvLyBub24tc3RhbmRhcmQgcHJvcGVydGllcyAtd2Via2l0LWNvbHVtbi1icmVhay0oYWZ0
ZXJ8YmVmb3JlfGluc2lkZSkuCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGtleXdvcmQgPSBjb25z
dW1lSWRlbnQobV9yYW5nZSk7CisgICAgaWYgKCFrZXl3b3JkKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBDU1NWYWx1ZUlEIHZhbHVlID0ga2V5d29yZC0+Z2V0VmFsdWVJRCgpOworICAgIHN3aXRjaCAo
cHJvcGVydHkpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFnZUJyZWFrQWZ0ZXI6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0JlZm9yZToKKyAgICAgICAgdmFsdWUgPSBtYXBGcm9tUGFn
ZUJyZWFrQmV0d2Vlbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRDb2x1bW5CcmVha0FmdGVyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5CcmVha0JlZm9yZToKKyAgICAgICAgdmFsdWUgPSBtYXBGcm9tQ29sdW1uQnJlYWtCZXR3ZWVu
KHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0lu
c2lkZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGU6CisgICAg
ICAgIHZhbHVlID0gbWFwRnJvbUNvbHVtbk9yUGFnZUJyZWFrSW5zaWRlKHZhbHVlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgfQorICAgIGlmICh2YWx1ZSA9PSBDU1NWYWx1ZUludmFsaWQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIENTU1Byb3BlcnR5SUQgZ2VuZXJpY0JyZWFrUHJvcGVydHkgPSBtYXBGcm9t
TGVnYWN5QnJlYWtQcm9wZXJ0eShwcm9wZXJ0eSk7CisgICAgYWRkUHJvcGVydHkoZ2VuZXJpY0Jy
ZWFrUHJvcGVydHksIHByb3BlcnR5LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZp
ZXIodmFsdWUpLCBpbXBvcnRhbnQpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9v
bCBjb25zdW1lQmFja2dyb3VuZFBvc2l0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBj
b25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzLCBD
U1NWYWx1ZSomIHJlc3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSkKK3sKKyAgICBkbyB7CisgICAg
ICAgIENTU1ZhbHVlKiBwb3NpdGlvblggPSBudWxscHRyOworICAgICAgICBDU1NWYWx1ZSogcG9z
aXRpb25ZID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFjb25zdW1lUG9zaXRpb24ocmFuZ2UsIGNv
bnRleHQubW9kZSgpLCB1bml0bGVzcywgcG9zaXRpb25YLCBwb3NpdGlvblkpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhZGRCYWNrZ3JvdW5kVmFsdWUocmVzdWx0WCwgcG9z
aXRpb25YKTsKKyAgICAgICAgYWRkQmFja2dyb3VuZFZhbHVlKHJlc3VsdFksIHBvc2l0aW9uWSk7
CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpOwor
ICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBjb25zdW1lUmVwZWF0U3R5bGVDb21w
b25lbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1ZhbHVlKiYgdmFsdWUxLCBDU1NW
YWx1ZSomIHZhbHVlMiwgYm9vbCYgaW1wbGljaXQpCit7CisgICAgaWYgKGNvbnN1bWVJZGVudDxD
U1NWYWx1ZVJlcGVhdFg+KHJhbmdlKSkgeworICAgICAgICB2YWx1ZTEgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVJlcGVhdCk7CisgICAgICAgIHZhbHVlMiA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9SZXBlYXQpOwor
ICAgICAgICBpbXBsaWNpdCA9IHRydWU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICBpZiAoY29uc3VtZUlkZW50PENTU1ZhbHVlUmVwZWF0WT4ocmFuZ2UpKSB7CisgICAgICAgIHZh
bHVlMSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9SZXBl
YXQpOworICAgICAgICB2YWx1ZTIgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmll
cihDU1NWYWx1ZVJlcGVhdCk7CisgICAgICAgIGltcGxpY2l0ID0gdHJ1ZTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIHZhbHVlMSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZVJlcGVh
dCwgQ1NTVmFsdWVOb1JlcGVhdCwgQ1NTVmFsdWVSb3VuZCwgQ1NTVmFsdWVTcGFjZT4ocmFuZ2Up
OworICAgIGlmICghdmFsdWUxKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2YWx1ZTIg
PSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVSZXBlYXQsIENTU1ZhbHVlTm9SZXBlYXQsIENTU1ZhbHVl
Um91bmQsIENTU1ZhbHVlU3BhY2U+KHJhbmdlKTsKKyAgICBpZiAoIXZhbHVlMikgeworICAgICAg
ICB2YWx1ZTIgPSB2YWx1ZTE7CisgICAgICAgIGltcGxpY2l0ID0gdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGNvbnN1bWVSZXBlYXRTdHlsZShDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTVmFsdWUqJiByZXN1bHRYLCBDU1NWYWx1ZSomIHJlc3Vs
dFksIGJvb2wmIGltcGxpY2l0KQoreworICAgIGRvIHsKKyAgICAgICAgQ1NTVmFsdWUqIHJlcGVh
dFggPSBudWxscHRyOworICAgICAgICBDU1NWYWx1ZSogcmVwZWF0WSA9IG51bGxwdHI7CisgICAg
ICAgIGlmICghY29uc3VtZVJlcGVhdFN0eWxlQ29tcG9uZW50KHJhbmdlLCByZXBlYXRYLCByZXBl
YXRZLCBpbXBsaWNpdCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFkZEJh
Y2tncm91bmRWYWx1ZShyZXN1bHRYLCByZXBlYXRYKTsKKyAgICAgICAgYWRkQmFja2dyb3VuZFZh
bHVlKHJlc3VsdFksIHJlcGVhdFkpOworICAgIH0gd2hpbGUgKGNvbnN1bWVDb21tYUluY2x1ZGlu
Z1doaXRlc3BhY2UocmFuZ2UpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gTm90ZTogY29u
c3VtZUJhY2tncm91bmRTaG9ydGhhbmQgYXNzdW1lcyB5IHByb3BlcnRpZXMgKGZvciBleGFtcGxl
IGJhY2tncm91bmQtcG9zaXRpb24teSkgZm9sbG93CisvLyB0aGUgeCBwcm9wZXJ0aWVzIGluIHRo
ZSBzaG9ydGhhbmQgYXJyYXkuCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lQmFja2dy
b3VuZFNob3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQsIGJv
b2wgaW1wb3J0YW50KQoreworICAgIGNvbnN0IHVuc2lnbmVkIGxvbmdoYW5kQ291bnQgPSBzaG9y
dGhhbmQubGVuZ3RoKCk7CisgICAgQ1NTVmFsdWUqIGxvbmdoYW5kc1sxMF0gPSB7IDAgfTsKKyAg
ICBBU1NFUlQobG9uZ2hhbmRDb3VudCA8PSAxMCk7CisKKyAgICBib29sIGltcGxpY2l0ID0gZmFs
c2U7CisgICAgZG8geworICAgICAgICBib29sIHBhcnNlZExvbmdoYW5kWzEwXSA9IHsgZmFsc2Ug
fTsKKyAgICAgICAgQ1NTVmFsdWUqIG9yaWdpblZhbHVlID0gbnVsbHB0cjsKKyAgICAgICAgZG8g
eworICAgICAgICAgICAgYm9vbCBmb3VuZFByb3BlcnR5ID0gZmFsc2U7CisgICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGxvbmdoYW5kQ291bnQ7ICsraSkgeworICAgICAgICAgICAg
ICAgIGlmIChwYXJzZWRMb25naGFuZFtpXSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBudWxscHRyOworICAgICAgICAg
ICAgICAgIENTU1ZhbHVlKiB2YWx1ZVkgPSBudWxscHRyOworICAgICAgICAgICAgICAgIENTU1By
b3BlcnR5SUQgcHJvcGVydHkgPSBzaG9ydGhhbmQucHJvcGVydGllcygpW2ldOworICAgICAgICAg
ICAgICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYIHx8IHBy
b3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgY29uc3VtZVJlcGVhdFN0eWxlQ29tcG9uZW50KG1fcmFuZ2UsIHZhbHVlLCB2YWx1ZVks
IGltcGxpY2l0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5ID09IENTU1By
b3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCB8fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tQb3NpdGlvblgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ1NTUGFyc2VyVG9rZW5SYW5n
ZSByYW5nZUNvcHkgPSBtX3JhbmdlOworICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWVQ
b3NpdGlvbihyYW5nZUNvcHksIG1fY29udGV4dC5tb2RlKCksIFVuaXRsZXNzUXVpcms6OkZvcmJp
ZCwgdmFsdWUsIHZhbHVlWSkpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9yYW5nZSA9IHJhbmdlQ29weTsKKyAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUgfHwgcHJvcGVy
dHkgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSkgeworICAgICAgICAgICAgICAgICAgICBp
ZiAoIWNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UobV9yYW5nZSkpCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBjb25z
dW1lQmFja2dyb3VuZFNpemUocHJvcGVydHksIG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlIHx8ICFwYXJzZWRMb25naGFuZFtpIC0gMV0p
IC8vIFBvc2l0aW9uIG11c3QgaGF2ZSBiZWVuIHBhcnNlZCBpbiB0aGUgY3VycmVudCBsYXllci4K
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSB8fCBw
cm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZCisgICAgICAgICAgICAgICAg
ICAgIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSB8fCBwcm9w
ZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZKSB7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgIHZhbHVlID0gY29uc3VtZUJhY2tncm91bmRDb21wb25lbnQocHJvcGVydHksIG1fcmFuZ2Us
IG1fY29udGV4dCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh2YWx1
ZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kT3JpZ2luIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbikK
KyAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblZhbHVlID0gdmFsdWU7CisgICAgICAgICAg
ICAgICAgICAgIHBhcnNlZExvbmdoYW5kW2ldID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
Zm91bmRQcm9wZXJ0eSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGFkZEJhY2tncm91bmRW
YWx1ZShsb25naGFuZHNbaV0sIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVl
WSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkTG9uZ2hhbmRbaSArIDFdID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZEJhY2tncm91bmRWYWx1ZShsb25naGFuZHNb
aSArIDFdLCB2YWx1ZVkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFmb3VuZFByb3BlcnR5KQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSB3aGlsZSAoIW1fcmFuZ2UuYXRFbmQo
KSAmJiBtX3JhbmdlLnBlZWsoKS50eXBlKCkgIT0gQ29tbWFUb2tlbik7CisKKyAgICAgICAgLy8g
VE9ETyh0aW1sb2gpOiBUaGlzIHdpbGwgbWFrZSBpbnZhbGlkIGxvbmdoYW5kcywgc2VlIGNyYnVn
LmNvbS8zODY0NTkKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsb25naGFuZENvdW50
OyArK2kpIHsKKyAgICAgICAgICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHkgPSBzaG9ydGhhbmQu
cHJvcGVydGllcygpW2ldOworICAgICAgICAgICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5
QmFja2dyb3VuZENvbG9yICYmICFtX3JhbmdlLmF0RW5kKCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAocGFyc2VkTG9uZ2hhbmRbaV0pCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsg
Ly8gQ29sb3JzIGFyZSBvbmx5IGFsbG93ZWQgaW4gdGhlIGxhc3QgbGF5ZXIuCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKHByb3BlcnR5
ID09IENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXAgfHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlX
ZWJraXRNYXNrQ2xpcCkgJiYgIXBhcnNlZExvbmdoYW5kW2ldICYmIG9yaWdpblZhbHVlKSB7Cisg
ICAgICAgICAgICAgICAgYWRkQmFja2dyb3VuZFZhbHVlKGxvbmdoYW5kc1tpXSwgb3JpZ2luVmFs
dWUpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKCFwYXJzZWRMb25naGFuZFtpXSkKKyAgICAgICAgICAgICAgICBhZGRCYWNrZ3JvdW5k
VmFsdWUobG9uZ2hhbmRzW2ldLCBDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0
KCkpOworICAgICAgICB9CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVz
cGFjZShtX3JhbmdlKSk7CisgICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbG9uZ2hhbmRDb3VudDsgKytp
KSB7CisgICAgICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHkgPSBzaG9ydGhhbmQucHJvcGVydGll
cygpW2ldOworICAgICAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6
ZSAmJiBsb25naGFuZHNbaV0gJiYgbV9jb250ZXh0LnVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hv
cnRoYW5kQmVoYXZpb3IoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBhZGRQcm9w
ZXJ0eShwcm9wZXJ0eSwgc2hvcnRoYW5kLmlkKCksICpsb25naGFuZHNbaV0sIGltcG9ydGFudCwg
aW1wbGljaXQpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NQcm9wZXJ0
eVBhcnNlcjo6Y29uc3VtZUdyaWRJdGVtUG9zaXRpb25TaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCBz
aG9ydGhhbmRJZCwgYm9vbCBpbXBvcnRhbnQpCit7CisgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkpOworICAgIGNvbnN0IFN0eWxlUHJvcGVy
dHlTaG9ydGhhbmQmIHNob3J0aGFuZCA9IHNob3J0aGFuZEZvclByb3BlcnR5KHNob3J0aGFuZElk
KTsKKyAgICBBU1NFUlQoc2hvcnRoYW5kLmxlbmd0aCgpID09IDIpOworICAgIENTU1ZhbHVlKiBz
dGFydFZhbHVlID0gY29uc3VtZUdyaWRMaW5lKG1fcmFuZ2UpOworICAgIGlmICghc3RhcnRWYWx1
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1NTVmFsdWUqIGVuZFZhbHVlID0gbnVs
bHB0cjsKKyAgICBpZiAoY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShtX3JhbmdlKSkg
eworICAgICAgICBlbmRWYWx1ZSA9IGNvbnN1bWVHcmlkTGluZShtX3JhbmdlKTsKKyAgICAgICAg
aWYgKCFlbmRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBlbmRWYWx1ZSA9IHN0YXJ0VmFsdWUtPmlzQ3VzdG9tSWRlbnRWYWx1ZSgpID8gc3Rh
cnRWYWx1ZSA6IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlQXV0
byk7CisgICAgfQorICAgIGlmICghbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgYWRkUHJvcGVydHkoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVswXSwgc2hvcnRoYW5k
SWQsICpzdGFydFZhbHVlLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KHNob3J0aGFuZC5w
cm9wZXJ0aWVzKClbMV0sIHNob3J0aGFuZElkLCAqZW5kVmFsdWUsIGltcG9ydGFudCk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVHcmlkQXJl
YVNob3J0aGFuZChib29sIGltcG9ydGFudCkKK3sKKyAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6Y3NzR3JpZExheW91dEVuYWJsZWQoKSk7CisgICAgQVNTRVJUKGdyaWRBcmVhU2hv
cnRoYW5kKCkubGVuZ3RoKCkgPT0gNCk7CisgICAgQ1NTVmFsdWUqIHJvd1N0YXJ0VmFsdWUgPSBj
b25zdW1lR3JpZExpbmUobV9yYW5nZSk7CisgICAgaWYgKCFyb3dTdGFydFZhbHVlKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgQ1NTVmFsdWUqIGNvbHVtblN0YXJ0VmFsdWUgPSBudWxscHRy
OworICAgIENTU1ZhbHVlKiByb3dFbmRWYWx1ZSA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIGNv
bHVtbkVuZFZhbHVlID0gbnVsbHB0cjsKKyAgICBpZiAoY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hp
dGVzcGFjZShtX3JhbmdlKSkgeworICAgICAgICBjb2x1bW5TdGFydFZhbHVlID0gY29uc3VtZUdy
aWRMaW5lKG1fcmFuZ2UpOworICAgICAgICBpZiAoIWNvbHVtblN0YXJ0VmFsdWUpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0
ZXNwYWNlKG1fcmFuZ2UpKSB7CisgICAgICAgICAgICByb3dFbmRWYWx1ZSA9IGNvbnN1bWVHcmlk
TGluZShtX3JhbmdlKTsKKyAgICAgICAgICAgIGlmICghcm93RW5kVmFsdWUpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKGNvbnN1bWVTbGFzaEluY2x1ZGlu
Z1doaXRlc3BhY2UobV9yYW5nZSkpIHsKKyAgICAgICAgICAgICAgICBjb2x1bW5FbmRWYWx1ZSA9
IGNvbnN1bWVHcmlkTGluZShtX3JhbmdlKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNvbHVtbkVu
ZFZhbHVlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIWNvbHVtblN0YXJ0VmFsdWUpCisgICAgICAgIGNvbHVtblN0
YXJ0VmFsdWUgPSByb3dTdGFydFZhbHVlLT5pc0N1c3RvbUlkZW50VmFsdWUoKSA/IHJvd1N0YXJ0
VmFsdWUgOiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUF1dG8p
OworICAgIGlmICghcm93RW5kVmFsdWUpCisgICAgICAgIHJvd0VuZFZhbHVlID0gcm93U3RhcnRW
YWx1ZS0+aXNDdXN0b21JZGVudFZhbHVlKCkgPyByb3dTdGFydFZhbHVlIDogQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVBdXRvKTsKKyAgICBpZiAoIWNvbHVtbkVu
ZFZhbHVlKQorICAgICAgICBjb2x1bW5FbmRWYWx1ZSA9IGNvbHVtblN0YXJ0VmFsdWUtPmlzQ3Vz
dG9tSWRlbnRWYWx1ZSgpID8gY29sdW1uU3RhcnRWYWx1ZSA6IENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlQXV0byk7CisKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUdyaWRSb3dTdGFydCwgQ1NTUHJvcGVydHlHcmlkQXJlYSwgKnJvd1N0YXJ0VmFsdWUsIGlt
cG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkQ29sdW1uU3RhcnQsIENT
U1Byb3BlcnR5R3JpZEFyZWEsICpjb2x1bW5TdGFydFZhbHVlLCBpbXBvcnRhbnQpOworICAgIGFk
ZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFJvd0VuZCwgQ1NTUHJvcGVydHlHcmlkQXJlYSwgKnJv
d0VuZFZhbHVlLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZENv
bHVtbkVuZCwgQ1NTUHJvcGVydHlHcmlkQXJlYSwgKmNvbHVtbkVuZFZhbHVlLCBpbXBvcnRhbnQp
OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1l
R3JpZFRlbXBsYXRlUm93c0FuZEFyZWFzQW5kQ29sdW1ucyhDU1NQcm9wZXJ0eUlEIHNob3J0aGFu
ZElkLCBib29sIGltcG9ydGFudCkKK3sKKyAgICBOYW1lZEdyaWRBcmVhTWFwIGdyaWRBcmVhTWFw
OworICAgIHNpemVfdCByb3dDb3VudCA9IDA7CisgICAgc2l6ZV90IGNvbHVtbkNvdW50ID0gMDsK
KyAgICBDU1NWYWx1ZUxpc3QqIHRlbXBsYXRlUm93cyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3Bh
Y2VTZXBhcmF0ZWQoKTsKKworICAgIC8vIFBlcnNpc3RzIGJldHdlZW4gbG9vcCBpdGVyYXRpb25z
IHNvIHdlIGNhbiB1c2UgdGhlIHNhbWUgdmFsdWUgZm9yCisgICAgLy8gY29uc2VjdXRpdmUgPGxp
bmUtbmFtZXM+IHZhbHVlcworICAgIENTU0dyaWRMaW5lTmFtZXNWYWx1ZSogbGluZU5hbWVzID0g
bnVsbHB0cjsKKworICAgIGRvIHsKKyAgICAgICAgLy8gSGFuZGxlIGxlYWRpbmcgPGN1c3RvbS1p
ZGVudD4qLgorICAgICAgICBib29sIGhhc1ByZXZpb3VzTGluZU5hbWVzID0gbGluZU5hbWVzOwor
ICAgICAgICBsaW5lTmFtZXMgPSBjb25zdW1lR3JpZExpbmVOYW1lcyhtX3JhbmdlLCBsaW5lTmFt
ZXMpOworICAgICAgICBpZiAobGluZU5hbWVzICYmICFoYXNQcmV2aW91c0xpbmVOYW1lcykKKyAg
ICAgICAgICAgIHRlbXBsYXRlUm93cy0+YXBwZW5kKCpsaW5lTmFtZXMpOworCisgICAgICAgIC8v
IEhhbmRsZSBhIHRlbXBsYXRlLWFyZWEncyByb3cuCisgICAgICAgIGlmIChtX3JhbmdlLnBlZWso
KS50eXBlKCkgIT0gU3RyaW5nVG9rZW4gfHwgIXBhcnNlR3JpZFRlbXBsYXRlQXJlYXNSb3cobV9y
YW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVlKCkudG9TdHJpbmcoKSwgZ3Jp
ZEFyZWFNYXAsIHJvd0NvdW50LCBjb2x1bW5Db3VudCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICsrcm93Q291bnQ7CisKKyAgICAgICAgLy8gSGFuZGxlIHRlbXBsYXRlLXJv
d3MncyB0cmFjay1zaXplLgorICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBjb25zdW1lR3JpZFRy
YWNrU2l6ZShtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkK
KyAgICAgICAgICAgIHZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIo
Q1NTVmFsdWVBdXRvKTsKKyAgICAgICAgdGVtcGxhdGVSb3dzLT5hcHBlbmQoKnZhbHVlKTsKKwor
ICAgICAgICAvLyBUaGlzIHdpbGwgaGFuZGxlIHRoZSB0cmFpbGluZy9sZWFkaW5nIDxjdXN0b20t
aWRlbnQ+KiBpbiB0aGUgZ3JhbW1hci4KKyAgICAgICAgbGluZU5hbWVzID0gY29uc3VtZUdyaWRM
aW5lTmFtZXMobV9yYW5nZSk7CisgICAgICAgIGlmIChsaW5lTmFtZXMpCisgICAgICAgICAgICB0
ZW1wbGF0ZVJvd3MtPmFwcGVuZCgqbGluZU5hbWVzKTsKKyAgICB9IHdoaWxlICghbV9yYW5nZS5h
dEVuZCgpICYmICEobV9yYW5nZS5wZWVrKCkudHlwZSgpID09IERlbGltaXRlclRva2VuICYmIG1f
cmFuZ2UucGVlaygpLmRlbGltaXRlcigpID09ICcvJykpOworCisgICAgQ1NTVmFsdWUqIGNvbHVt
bnNWYWx1ZSA9IG51bGxwdHI7CisgICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkpIHsKKyAgICAgICAg
aWYgKCFjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKG1fcmFuZ2UpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjb2x1bW5zVmFsdWUgPSBjb25zdW1lR3JpZFRyYWNr
TGlzdChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBHcmlkVGVtcGxhdGVOb1JlcGVhdCk7Cisg
ICAgICAgIGlmICghY29sdW1uc1ZhbHVlIHx8ICFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY29sdW1uc1ZhbHVlID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKTsKKyAgICB9Cisg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVSb3dzLCBzaG9ydGhhbmRJZCwg
KnRlbXBsYXRlUm93cywgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdy
aWRUZW1wbGF0ZUNvbHVtbnMsIHNob3J0aGFuZElkLCAqY29sdW1uc1ZhbHVlLCBpbXBvcnRhbnQp
OworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQXJlYXMsIHNob3J0aGFu
ZElkLCAqQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZTo6Y3JlYXRlKGdyaWRBcmVhTWFwLCByb3dD
b3VudCwgY29sdW1uQ291bnQpLCBpbXBvcnRhbnQpOworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lR3JpZFRlbXBsYXRlU2hvcnRoYW5kKENTU1By
b3BlcnR5SUQgc2hvcnRoYW5kSWQsIGJvb2wgaW1wb3J0YW50KQoreworICAgIEFTU0VSVChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NHcmlkTGF5b3V0RW5hYmxlZCgpKTsKKyAgICBBU1NFUlQo
Z3JpZFRlbXBsYXRlU2hvcnRoYW5kKCkubGVuZ3RoKCkgPT0gMyk7CisKKyAgICBDU1NQYXJzZXJU
b2tlblJhbmdlIHJhbmdlQ29weSA9IG1fcmFuZ2U7CisgICAgQ1NTVmFsdWUqIHJvd3NWYWx1ZSA9
IGNvbnN1bWVJZGVudDxDU1NWYWx1ZU5vbmU+KG1fcmFuZ2UpOworCisgICAgLy8gMS0gJ25vbmUn
IGNhc2UuCisgICAgaWYgKHJvd3NWYWx1ZSAmJiBtX3JhbmdlLmF0RW5kKCkpIHsKKyAgICAgICAg
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVSb3dzLCBzaG9ydGhhbmRJZCwgKkNT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSksIGltcG9ydGFu
dCk7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQ29sdW1ucywg
c2hvcnRoYW5kSWQsICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1
ZU5vbmUpLCBpbXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRU
ZW1wbGF0ZUFyZWFzLCBzaG9ydGhhbmRJZCwgKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVu
dGlmaWVyKENTU1ZhbHVlTm9uZSksIGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIC8vIDItIDxncmlkLXRlbXBsYXRlLXJvd3M+IC8gPGdyaWQtdGVtcGxhdGUt
Y29sdW1ucz4KKyAgICBpZiAoIXJvd3NWYWx1ZSkKKyAgICAgICAgcm93c1ZhbHVlID0gY29uc3Vt
ZUdyaWRUcmFja0xpc3QobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgR3JpZFRlbXBsYXRlKTsK
KworICAgIGlmIChyb3dzVmFsdWUpIHsKKyAgICAgICAgaWYgKCFjb25zdW1lU2xhc2hJbmNsdWRp
bmdXaGl0ZXNwYWNlKG1fcmFuZ2UpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBDU1NWYWx1ZSogY29sdW1uc1ZhbHVlID0gY29uc3VtZUdyaWRUZW1wbGF0ZXNSb3dzT3JDb2x1
bW5zKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgICAgICBpZiAoIWNvbHVtbnNWYWx1
ZSB8fCAhbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlUm93cywgc2hvcnRoYW5kSWQs
ICpyb3dzVmFsdWUsIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5
R3JpZFRlbXBsYXRlQ29sdW1ucywgc2hvcnRoYW5kSWQsICpjb2x1bW5zVmFsdWUsIGltcG9ydGFu
dCk7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQXJlYXMsIHNo
b3J0aGFuZElkLCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVO
b25lKSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8g
My0gWyA8bGluZS1uYW1lcz4/IDxzdHJpbmc+IDx0cmFjay1zaXplPj8gPGxpbmUtbmFtZXM+PyBd
KyBbIC8gPHRyYWNrLWxpc3Q+IF0/CisgICAgbV9yYW5nZSA9IHJhbmdlQ29weTsKKyAgICByZXR1
cm4gY29uc3VtZUdyaWRUZW1wbGF0ZVJvd3NBbmRBcmVhc0FuZENvbHVtbnMoc2hvcnRoYW5kSWQs
IGltcG9ydGFudCk7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVHcmlkU2hv
cnRoYW5kKGJvb2wgaW1wb3J0YW50KQoreworICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpjc3NHcmlkTGF5b3V0RW5hYmxlZCgpKTsKKyAgICBBU1NFUlQoc2hvcnRoYW5kRm9yUHJv
cGVydHkoQ1NTUHJvcGVydHlHcmlkKS5sZW5ndGgoKSA9PSA4KTsKKworICAgIENTU1BhcnNlclRv
a2VuUmFuZ2UgcmFuZ2VDb3B5ID0gbV9yYW5nZTsKKworICAgIC8vIDEtIDxncmlkLXRlbXBsYXRl
PgorICAgIGlmIChjb25zdW1lR3JpZFRlbXBsYXRlU2hvcnRoYW5kKENTU1Byb3BlcnR5R3JpZCwg
aW1wb3J0YW50KSkgeworICAgICAgICAvLyBJdCBjYW4gb25seSBiZSBzcGVjaWZpZWQgdGhlIGV4
cGxpY2l0IG9yIHRoZSBpbXBsaWNpdCBncmlkIHByb3BlcnRpZXMgaW4gYSBzaW5nbGUgZ3JpZCBk
ZWNsYXJhdGlvbi4KKyAgICAgICAgLy8gVGhlIHN1Yi1wcm9wZXJ0aWVzIG5vdCBzcGVjaWZpZWQg
YXJlIHNldCB0byB0aGVpciBpbml0aWFsIHZhbHVlLCBhcyBub3JtYWwgZm9yIHNob3J0aGFuZHMu
CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZEF1dG9GbG93LCBDU1NQcm9wZXJ0
eUdyaWQsICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFu
dCk7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZEF1dG9Db2x1bW5zLCBDU1NQ
cm9wZXJ0eUdyaWQsICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGlt
cG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZEF1dG9Sb3dzLCBD
U1NQcm9wZXJ0eUdyaWQsICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCks
IGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZENvbHVtbkdh
cCwgQ1NTUHJvcGVydHlHcmlkLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNp
dCgpLCBpbXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRSb3dH
YXAsIENTU1Byb3BlcnR5R3JpZCwgKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGlj
aXQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgbV9y
YW5nZSA9IHJhbmdlQ29weTsKKworICAgIC8vIDItIDxncmlkLWF1dG8tZmxvdz4gWyA8Z3JpZC1h
dXRvLXJvd3M+IFsgLyA8Z3JpZC1hdXRvLWNvbHVtbnM+IF0/IF0KKyAgICBDU1NWYWx1ZUxpc3Qq
IGdyaWRBdXRvRmxvdyA9IGNvbnN1bWVHcmlkQXV0b0Zsb3cobV9yYW5nZSk7CisgICAgaWYgKCFn
cmlkQXV0b0Zsb3cpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENTU1ZhbHVlKiBhdXRv
Q29sdW1uc1ZhbHVlID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogYXV0b1Jvd3NWYWx1ZSA9IG51
bGxwdHI7CisKKyAgICBpZiAoIW1fcmFuZ2UuYXRFbmQoKSkgeworICAgICAgICBhdXRvUm93c1Zh
bHVlID0gY29uc3VtZUdyaWRUcmFja0xpc3QobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgR3Jp
ZEF1dG8pOworICAgICAgICBpZiAoIWF1dG9Sb3dzVmFsdWUpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGlmIChjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKG1fcmFu
Z2UpKSB7CisgICAgICAgICAgICBhdXRvQ29sdW1uc1ZhbHVlID0gY29uc3VtZUdyaWRUcmFja0xp
c3QobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgR3JpZEF1dG8pOworICAgICAgICAgICAgaWYg
KCFhdXRvQ29sdW1uc1ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBPdGhlciBvbWl0dGVkIHZhbHVlcyBhcmUg
c2V0IHRvIHRoZWlyIGluaXRpYWwgdmFsdWVzLgorICAgICAgICBhdXRvQ29sdW1uc1ZhbHVlID0g
Q1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpOworICAgICAgICBhdXRvUm93
c1ZhbHVlID0gQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpOworICAgIH0K
KworICAgIC8vIGlmIDxncmlkLWF1dG8tY29sdW1ucz4gdmFsdWUgaXMgb21pdHRlZCwgaXQgaXMg
c2V0IHRvIHRoZSB2YWx1ZSBzcGVjaWZpZWQgZm9yIGdyaWQtYXV0by1yb3dzLgorICAgIGlmICgh
YXV0b0NvbHVtbnNWYWx1ZSkKKyAgICAgICAgYXV0b0NvbHVtbnNWYWx1ZSA9IGF1dG9Sb3dzVmFs
dWU7CisKKyAgICAvLyBJdCBjYW4gb25seSBiZSBzcGVjaWZpZWQgdGhlIGV4cGxpY2l0IG9yIHRo
ZSBpbXBsaWNpdCBncmlkIHByb3BlcnRpZXMgaW4gYSBzaW5nbGUgZ3JpZCBkZWNsYXJhdGlvbi4K
KyAgICAvLyBUaGUgc3ViLXByb3BlcnRpZXMgbm90IHNwZWNpZmllZCBhcmUgc2V0IHRvIHRoZWly
IGluaXRpYWwgdmFsdWUsIGFzIG5vcm1hbCBmb3Igc2hvcnRoYW5kcy4KKyAgICBhZGRQcm9wZXJ0
eShDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZUNvbHVtbnMsIENTU1Byb3BlcnR5R3JpZCwgKkNTU0lu
aXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZVJvd3MsIENTU1Byb3BlcnR5R3JpZCwgKkNT
U0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICBh
ZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZUFyZWFzLCBDU1NQcm9wZXJ0eUdyaWQs
ICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7Cisg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkQXV0b0Zsb3csIENTU1Byb3BlcnR5R3JpZCwg
KmdyaWRBdXRvRmxvdywgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdy
aWRBdXRvQ29sdW1ucywgQ1NTUHJvcGVydHlHcmlkLCAqYXV0b0NvbHVtbnNWYWx1ZSwgaW1wb3J0
YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRBdXRvUm93cywgQ1NTUHJvcGVy
dHlHcmlkLCAqYXV0b1Jvd3NWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUdyaWRDb2x1bW5HYXAsIENTU1Byb3BlcnR5R3JpZCwgKkNTU0luaXRpYWxWYWx1ZTo6
Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUdyaWRSb3dHYXAsIENTU1Byb3BlcnR5R3JpZCwgKkNTU0luaXRpYWxWYWx1ZTo6Y3Jl
YXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VTaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCB1bnJl
c29sdmVkUHJvcGVydHksIGJvb2wgaW1wb3J0YW50KQoreworICAgIENTU1Byb3BlcnR5SUQgcHJv
cGVydHkgPSByZXNvbHZlQ1NTUHJvcGVydHlJRCh1bnJlc29sdmVkUHJvcGVydHkpOworCisgICAg
c3dpdGNoIChwcm9wZXJ0eSkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xs
YXBzZTogeworICAgICAgICBDU1NWYWx1ZUlEIGlkID0gbV9yYW5nZS5jb25zdW1lSW5jbHVkaW5n
V2hpdGVzcGFjZSgpLmlkKCk7CisgICAgICAgIGlmICghQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1Zh
bGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVD
b2xsYXBzZSwgaWQsIG1fY29udGV4dC5tb2RlKCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBDU1NWYWx1ZSogYmVmb3JlQ29sbGFwc2UgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlSWRlbnRpZmllcihpZCk7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Vi
a2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2Us
ICpiZWZvcmVDb2xsYXBzZSwgaW1wb3J0YW50KTsKKyAgICAgICAgaWYgKG1fcmFuZ2UuYXRFbmQo
KSkgeworICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRl
ckNvbGxhcHNlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlLCAqYmVmb3JlQ29sbGFw
c2UsIGltcG9ydGFudCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAg
ICAgICBpZCA9IG1fcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpOworICAg
ICAgICBpZiAoIUNTU1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZh
bHVlKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSwgaWQsIG1fY29udGV4dC5t
b2RlKCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhZGRQcm9wZXJ0eShD
U1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UsIENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luQ29sbGFwc2UsICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihpZCksIGlt
cG9ydGFudCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBjYXNlIENTU1Byb3Bl
cnR5T3ZlcmZsb3c6IHsKKyAgICAgICAgQ1NTVmFsdWVJRCBpZCA9IG1fcmFuZ2UuY29uc3VtZUlu
Y2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpOworICAgICAgICBpZiAoIUNTU1BhcnNlckZhc3RQYXRo
czo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKENTU1Byb3BlcnR5T3ZlcmZsb3dZLCBp
ZCwgbV9jb250ZXh0Lm1vZGUoKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IGlmICghbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBDU1NWYWx1ZSogb3ZlcmZsb3dZVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRl
bnRpZmllcihpZCk7CisKKyAgICAgICAgQ1NTVmFsdWUqIG92ZXJmbG93WFZhbHVlID0gbnVsbHB0
cjsKKworICAgICAgICAvLyBGSVhNRTogLXdlYmtpdC1wYWdlZC14IG9yIC13ZWJraXQtcGFnZWQt
eSBvbmx5IGFwcGx5IHRvIG92ZXJmbG93LXkuIElmIHRoaXMgdmFsdWUgaGFzIGJlZW4KKyAgICAg
ICAgLy8gc2V0IHVzaW5nIHRoZSBzaG9ydGhhbmQsIHRoZW4gZm9yIG5vdyBvdmVyZmxvdy14IHdp
bGwgZGVmYXVsdCB0byBhdXRvLCBidXQgb25jZSB3ZSBpbXBsZW1lbnQKKyAgICAgICAgLy8gcGFn
aW5hdGlvbiBjb250cm9scywgaXQgc2hvdWxkIGRlZmF1bHQgdG8gaGlkZGVuLiBJZiB0aGUgb3Zl
cmZsb3cteSB2YWx1ZSBpcyBhbnl0aGluZyBidXQKKyAgICAgICAgLy8gcGFnZWQteCBvciBwYWdl
ZC15LCB0aGVuIG92ZXJmbG93LXggYW5kIG92ZXJmbG93LXkgc2hvdWxkIGhhdmUgdGhlIHNhbWUg
dmFsdWUuCisgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdFBhZ2VkWCB8fCBpZCA9PSBD
U1NWYWx1ZVdlYmtpdFBhZ2VkWSkKKyAgICAgICAgICAgIG92ZXJmbG93WFZhbHVlID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVBdXRvKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgb3ZlcmZsb3dYVmFsdWUgPSBvdmVyZmxvd1lWYWx1ZTsKKyAgICAgICAg
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlPdmVyZmxvd1gsIENTU1Byb3BlcnR5T3ZlcmZsb3csICpv
dmVyZmxvd1hWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVy
dHlPdmVyZmxvd1ksIENTU1Byb3BlcnR5T3ZlcmZsb3csICpvdmVyZmxvd1lWYWx1ZSwgaW1wb3J0
YW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlG
b250OiB7CisgICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IG1fcmFuZ2UucGVl
aygpOworICAgICAgICBpZiAodG9rZW4uaWQoKSA+PSBDU1NWYWx1ZUNhcHRpb24gJiYgdG9rZW4u
aWQoKSA8PSBDU1NWYWx1ZVN0YXR1c0JhcikKKyAgICAgICAgICAgIHJldHVybiBjb25zdW1lU3lz
dGVtRm9udChpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gY29uc3VtZUZvbnQoaW1wb3J0YW50
KTsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50OgorICAgICAgICByZXR1
cm4gY29uc3VtZUZvbnRWYXJpYW50U2hvcnRoYW5kKGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlclNwYWNpbmc6CisgICAgICAgIHJldHVybiBjb25zdW1lQm9yZGVyU3BhY2lu
ZyhpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlDb2x1bW5zOgorICAgICAgICByZXR1
cm4gY29uc3VtZUNvbHVtbnMoaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0
aW9uOgorICAgICAgICByZXR1cm4gY29uc3VtZUFuaW1hdGlvblNob3J0aGFuZChhbmltYXRpb25T
aG9ydGhhbmRGb3JQYXJzaW5nKCksIHVucmVzb2x2ZWRQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUFs
aWFzV2Via2l0QW5pbWF0aW9uLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFu
c2l0aW9uOgorICAgICAgICByZXR1cm4gY29uc3VtZUFuaW1hdGlvblNob3J0aGFuZCh0cmFuc2l0
aW9uU2hvcnRoYW5kRm9yUGFyc2luZygpLCBmYWxzZSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5VGV4dERlY29yYXRpb246CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpjc3MzVGV4dERlY29yYXRpb25zRW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVTaG9ydGhhbmRHcmVlZGlseSh0ZXh0RGVjb3JhdGlvblNob3J0aGFuZCgpLCBpbXBvcnRh
bnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW46CisgICAgICAgIHJldHVybiBjb25zdW1l
NFZhbHVlcyhtYXJnaW5TaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5UGFkZGluZzoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWU0VmFsdWVzKHBhZGRpbmdTaG9ydGhh
bmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TW90aW9uOgorICAgICAgICBy
ZXR1cm4gY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KG1vdGlvblNob3J0aGFuZCgpLCBpbXBvcnRh
bnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXM6CisgICAgICAgIHJl
dHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkod2Via2l0VGV4dEVtcGhhc2lzU2hvcnRoYW5k
KCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmU6CisgICAgICAgIHJl
dHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkob3V0bGluZVNob3J0aGFuZCgpLCBpbXBvcnRh
bnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydDoKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVTaG9ydGhhbmRHcmVlZGlseSh3ZWJraXRCb3JkZXJTdGFydFNob3J0aGFuZCgp
LCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmQ6CisgICAg
ICAgIHJldHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkod2Via2l0Qm9yZGVyRW5kU2hvcnRo
YW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9y
ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhhbmRHcmVlZGlseSh3ZWJraXRCb3JkZXJC
ZWZvcmVTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyQWZ0ZXI6CisgICAgICAgIHJldHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkod2Vi
a2l0Qm9yZGVyQWZ0ZXJTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VGV4dFN0cm9rZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhhbmRHcmVl
ZGlseSh3ZWJraXRUZXh0U3Ryb2tlU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eU1hcmtlcjogeworICAgICAgICBjb25zdCBDU1NWYWx1ZSogbWFya2VyID0gcGFy
c2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eU1hcmtlclN0YXJ0KTsKKyAgICAgICAgaWYgKCFtYXJr
ZXIgfHwgIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJrZXJTdGFydCwgQ1NTUHJvcGVydHlNYXJrZXIs
ICptYXJrZXIsIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5TWFy
a2VyTWlkLCBDU1NQcm9wZXJ0eU1hcmtlciwgKm1hcmtlciwgaW1wb3J0YW50KTsKKyAgICAgICAg
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJrZXJFbmQsIENTU1Byb3BlcnR5TWFya2VyLCAqbWFy
a2VyLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUZsZXg6CisgICAgICAgIHJldHVybiBjb25zdW1lRmxleChpbXBvcnRhbnQpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlGbGV4RmxvdzoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9y
dGhhbmRHcmVlZGlseShmbGV4Rmxvd1Nob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlDb2x1bW5SdWxlOgorICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdy
ZWVkaWx5KGNvbHVtblJ1bGVTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1By
b3BlcnR5TGlzdFN0eWxlOgorICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5
KGxpc3RTdHlsZVNob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJSYWRpdXM6IHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGhvcml6b250YWxSYWRp
aVs0XSA9IHsgMCB9OworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmVydGljYWxSYWRpaVs0
XSA9IHsgMCB9OworICAgICAgICBpZiAoIWNvbnN1bWVSYWRpaShob3Jpem9udGFsUmFkaWksIHZl
cnRpY2FsUmFkaWksIG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIHVucmVzb2x2ZWRQcm9wZXJ0
eSA9PSBDU1NQcm9wZXJ0eUFsaWFzV2Via2l0Qm9yZGVyUmFkaXVzKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0
UmFkaXVzLCBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cywgKkNTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhv
cml6b250YWxSYWRpaVswXSwgdmVydGljYWxSYWRpaVswXSwgQ1NTVmFsdWVQYWlyOjpEcm9wSWRl
bnRpY2FsVmFsdWVzKSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVy
dHlCb3JkZXJUb3BSaWdodFJhZGl1cywgQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMsICpDU1NWYWx1
ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsUmFkaWlbMV0sIHZlcnRpY2FsUmFkaWlbMV0sIENTU1Zh
bHVlUGFpcjo6RHJvcElkZW50aWNhbFZhbHVlcyksIGltcG9ydGFudCk7CisgICAgICAgIGFkZFBy
b3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMsIENTU1Byb3BlcnR5Qm9y
ZGVyUmFkaXVzLCAqQ1NTVmFsdWVQYWlyOjpjcmVhdGUoaG9yaXpvbnRhbFJhZGlpWzJdLCB2ZXJ0
aWNhbFJhZGlpWzJdLCBDU1NWYWx1ZVBhaXI6OkRyb3BJZGVudGljYWxWYWx1ZXMpLCBpbXBvcnRh
bnQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRp
dXMsIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzLCAqQ1NTVmFsdWVQYWlyOjpjcmVhdGUoaG9yaXpv
bnRhbFJhZGlpWzNdLCB2ZXJ0aWNhbFJhZGlpWzNdLCBDU1NWYWx1ZVBhaXI6OkRyb3BJZGVudGlj
YWxWYWx1ZXMpLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yOgorICAgICAgICByZXR1cm4gY29uc3VtZTRWYWx1
ZXMoYm9yZGVyQ29sb3JTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyU3R5bGU6CisgICAgICAgIHJldHVybiBjb25zdW1lNFZhbHVlcyhib3JkZXJTdHls
ZVNob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJXaWR0
aDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWU0VmFsdWVzKGJvcmRlcldpZHRoU2hvcnRoYW5kKCks
IGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcDoKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVTaG9ydGhhbmRHcmVlZGlseShib3JkZXJUb3BTaG9ydGhhbmQoKSwgaW1wb3J0
YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQ6CisgICAgICAgIHJldHVybiBj
b25zdW1lU2hvcnRoYW5kR3JlZWRpbHkoYm9yZGVyUmlnaHRTaG9ydGhhbmQoKSwgaW1wb3J0YW50
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tOgorICAgICAgICByZXR1cm4gY29u
c3VtZVNob3J0aGFuZEdyZWVkaWx5KGJvcmRlckJvdHRvbVNob3J0aGFuZCgpLCBpbXBvcnRhbnQp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0OgorICAgICAgICByZXR1cm4gY29uc3Vt
ZVNob3J0aGFuZEdyZWVkaWx5KGJvcmRlckxlZnRTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyOgorICAgICAgICByZXR1cm4gY29uc3VtZUJvcmRlcihp
bXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlOgorICAgICAgICByZXR1cm4gY29uc3VtZUJvcmRl
ckltYWdlKHByb3BlcnR5LCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlQnJl
YWtBZnRlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFnZUJyZWFrQmVmb3JlOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENv
bHVtbkJyZWFrQWZ0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQmVm
b3JlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0luc2lkZToKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVMZWdhY3lCcmVha1Byb3BlcnR5KHByb3BlcnR5LCBpbXBvcnRhbnQp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb246CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbjogeworICAgICAgICBDU1NWYWx1ZSogcmVzdWx0WCA9
IG51bGxwdHI7CisgICAgICAgIENTU1ZhbHVlKiByZXN1bHRZID0gbnVsbHB0cjsKKyAgICAgICAg
aWYgKCFjb25zdW1lQmFja2dyb3VuZFBvc2l0aW9uKG1fcmFuZ2UsIG1fY29udGV4dCwgVW5pdGxl
c3NRdWlyazo6QWxsb3csIHJlc3VsdFgsIHJlc3VsdFkpIHx8ICFtX3JhbmdlLmF0RW5kKCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnR5ID09
IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uID8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9z
aXRpb25YIDogQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLCBwcm9wZXJ0eSwgKnJlc3Vs
dFgsIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnR5ID09IENTU1Byb3Bl
cnR5QmFja2dyb3VuZFBvc2l0aW9uID8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZIDog
Q1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZLCBwcm9wZXJ0eSwgKnJlc3VsdFksIGltcG9y
dGFudCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5
QmFja2dyb3VuZFJlcGVhdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdDog
eworICAgICAgICBDU1NWYWx1ZSogcmVzdWx0WCA9IG51bGxwdHI7CisgICAgICAgIENTU1ZhbHVl
KiByZXN1bHRZID0gbnVsbHB0cjsKKyAgICAgICAgYm9vbCBpbXBsaWNpdCA9IGZhbHNlOworICAg
ICAgICBpZiAoIWNvbnN1bWVSZXBlYXRTdHlsZShtX3JhbmdlLCByZXN1bHRYLCByZXN1bHRZLCBp
bXBsaWNpdCkgfHwgIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVw
ZWF0ID8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCA6IENTU1Byb3BlcnR5V2Via2l0TWFz
a1JlcGVhdFgsIHByb3BlcnR5LCAqcmVzdWx0WCwgaW1wb3J0YW50LCBpbXBsaWNpdCk7CisgICAg
ICAgIGFkZFByb3BlcnR5KHByb3BlcnR5ID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCA/
IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFkgOiBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBl
YXRZLCBwcm9wZXJ0eSwgKnJlc3VsdFksIGltcG9ydGFudCwgaW1wbGljaXQpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6CisgICAg
ICAgIHJldHVybiBjb25zdW1lQmFja2dyb3VuZFNob3J0aGFuZChiYWNrZ3JvdW5kU2hvcnRoYW5k
KCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2s6CisgICAgICAg
IHJldHVybiBjb25zdW1lQmFja2dyb3VuZFNob3J0aGFuZCh3ZWJraXRNYXNrU2hvcnRoYW5kKCks
IGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRHYXA6IHsKKyAgICAgICAgQVNT
RVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkgJiYgc2hv
cnRoYW5kRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkR2FwKS5sZW5ndGgoKSA9PSAyKTsKKyAg
ICAgICAgQ1NTVmFsdWUqIHJvd0dhcCA9IGNvbnN1bWVMZW5ndGgobV9yYW5nZSwgbV9jb250ZXh0
Lm1vZGUoKSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgQ1NTVmFsdWUqIGNvbHVt
bkdhcCA9IGNvbnN1bWVMZW5ndGgobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5n
ZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgaWYgKCFyb3dHYXAgfHwgIW1fcmFuZ2UuYXRFbmQoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFjb2x1bW5HYXApCisgICAg
ICAgICAgICBjb2x1bW5HYXAgPSByb3dHYXA7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3Bl
cnR5R3JpZFJvd0dhcCwgQ1NTUHJvcGVydHlHcmlkR2FwLCAqcm93R2FwLCBpbXBvcnRhbnQpOwor
ICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRDb2x1bW5HYXAsIENTU1Byb3BlcnR5
R3JpZEdhcCwgKmNvbHVtbkdhcCwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkQ29sdW1uOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlHcmlkUm93OgorICAgICAgICByZXR1cm4gY29uc3VtZUdyaWRJdGVtUG9zaXRpb25TaG9ydGhh
bmQocHJvcGVydHksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRBcmVhOgor
ICAgICAgICByZXR1cm4gY29uc3VtZUdyaWRBcmVhU2hvcnRoYW5kKGltcG9ydGFudCk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVHcmlk
VGVtcGxhdGVTaG9ydGhhbmQoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGUsIGltcG9ydGFudCk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWQ6CisgICAgICAgIHJldHVybiBjb25zdW1lR3JpZFNob3J0
aGFuZChpbXBvcnRhbnQpOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9Cit9CisqLworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMyBMYXJzIEtub2xs
IChrbm9sbEBrZGUub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4
LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChD
KSAyMDA5IC0gMjAxMCAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjaWZuZGVmIENTU1Byb3BlcnR5UGFyc2VyX2gKKyNkZWZpbmUgQ1NTUHJvcGVy
dHlQYXJzZXJfaAorCisjaW5jbHVkZSAiU3R5bGVSdWxlLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2Vy
VG9rZW5SYW5nZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBDU1NQcm9wZXJ0eTsKK2NsYXNzIENTU1ZhbHVlOworY2xh
c3MgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZDsKKworLy8gSW5wdXRzOiBQcm9wZXJ0eUlELCBpc0lt
cG9ydGFudCBib29sLCBDU1NQYXJzZXJUb2tlblJhbmdlLgorLy8gT3V0cHV0czogVmVjdG9yIG9m
IENTU1Byb3BlcnRpZXMKKworY2xhc3MgQ1NTUHJvcGVydHlQYXJzZXIgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENTU1Byb3BlcnR5UGFyc2VyKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9v
bCBwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQsIGJvb2wgaW1wb3J0YW50LAorICAgICAgICBjb25z
dCBDU1NQYXJzZXJUb2tlblJhbmdlJiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYsCisgICAgICAg
IFZlY3RvcjxDU1NQcm9wZXJ0eSwgMjU2PiYsIFN0eWxlUnVsZTo6VHlwZSk7CisKKyAgICAvLyBQ
YXJzZXMgYSBub24tc2hvcnRoYW5kIENTUyBwcm9wZXJ0eQorICAgIHN0YXRpYyBjb25zdCBDU1NW
YWx1ZSogcGFyc2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUlELCBjb25zdCBDU1NQYXJzZXJUb2tl
blJhbmdlJiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYpOworCitwcml2YXRlOgorICAgIENTU1By
b3BlcnR5UGFyc2VyKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmLCBjb25zdCBDU1NQYXJzZXJD
b250ZXh0JiwKKyAgICAgICAgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+Kik7CisKKyAgICAvLyBU
T0RPKHRpbWxvaCk6IFJlbmFtZSBvbmNlIHRoZSBDU1NQYXJzZXJWYWx1ZS1iYXNlZCBwYXJzZVZh
bHVlIGlzIHJlbW92ZWQKKyAgICBib29sIHBhcnNlVmFsdWVTdGFydChDU1NQcm9wZXJ0eUlEIHVu
cmVzb2x2ZWRQcm9wZXJ0eSwgYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wgY29uc3VtZUNTU1dp
ZGVLZXl3b3JkKENTU1Byb3BlcnR5SUQgdW5yZXNvbHZlZFByb3BlcnR5LCBib29sIGltcG9ydGFu
dCk7CisgICAgY29uc3QgQ1NTVmFsdWUqIHBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlJRCwg
Q1NTUHJvcGVydHlJRCA9IENTU1Byb3BlcnR5SW52YWxpZCk7CisKKyAgICBib29sIGluUXVpcmtz
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5tb2RlID09IENTU1F1aXJrc01vZGU7IH0K
KworICAgIGJvb2wgcGFyc2VWaWV3cG9ydERlc2NyaXB0b3IoQ1NTUHJvcGVydHlJRCBwcm9wSWQs
IGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29sIHBhcnNlRm9udEZhY2VEZXNjcmlwdG9yKENTU1By
b3BlcnR5SUQpOworCisgICAgdm9pZCBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBDU1NQcm9w
ZXJ0eUlELCBjb25zdCBDU1NWYWx1ZSYsIGJvb2wgaW1wb3J0YW50LCBib29sIGltcGxpY2l0ID0g
ZmFsc2UpOworICAgIHZvaWQgYWRkRXhwYW5kZWRQcm9wZXJ0eUZvclZhbHVlKENTU1Byb3BlcnR5
SUQgcHJvcElkLCBjb25zdCBDU1NWYWx1ZSYsIGJvb2wpOworCisgICAgYm9vbCBjb25zdW1lQm9y
ZGVyKGJvb2wgaW1wb3J0YW50KTsKKworICAgIGJvb2wgcGFyc2VTaG9ydGhhbmQoQ1NTUHJvcGVy
dHlJRCwgYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wgY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5
KGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmLCBib29sIGltcG9ydGFudCk7CisgICAgYm9v
bCBjb25zdW1lNFZhbHVlcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiwgYm9vbCBpbXBv
cnRhbnQpOworCisgICAgLy8gTGVnYWN5IHBhcnNpbmcgYWxsb3dzIDxzdHJpbmc+cyBmb3IgYW5p
bWF0aW9uLW5hbWUKKyAgICBib29sIGNvbnN1bWVBbmltYXRpb25TaG9ydGhhbmQoY29uc3QgU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZCYsIGJvb2wgdXNlTGVnYWN5UGFyc2luZywgYm9vbCBpbXBvcnRh
bnQpOworICAgIGJvb2wgY29uc3VtZUJhY2tncm91bmRTaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZCYsIGJvb2wgaW1wb3J0YW50KTsKKworICAgIGJvb2wgY29uc3VtZUNvbHVt
bnMoYm9vbCBpbXBvcnRhbnQpOworCisgICAgYm9vbCBjb25zdW1lR3JpZEl0ZW1Qb3NpdGlvblNo
b3J0aGFuZChDU1NQcm9wZXJ0eUlELCBib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBjb25zdW1l
R3JpZFRlbXBsYXRlUm93c0FuZEFyZWFzQW5kQ29sdW1ucyhDU1NQcm9wZXJ0eUlELCBib29sIGlt
cG9ydGFudCk7CisgICAgYm9vbCBjb25zdW1lR3JpZFRlbXBsYXRlU2hvcnRoYW5kKENTU1Byb3Bl
cnR5SUQsIGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29sIGNvbnN1bWVHcmlkU2hvcnRoYW5kKGJv
b2wgaW1wb3J0YW50KTsKKyAgICBib29sIGNvbnN1bWVHcmlkQXJlYVNob3J0aGFuZChib29sIGlt
cG9ydGFudCk7CisKKyAgICBib29sIGNvbnN1bWVGb250KGJvb2wgaW1wb3J0YW50KTsKKyAgICBi
b29sIGNvbnN1bWVGb250VmFyaWFudFNob3J0aGFuZChib29sIGltcG9ydGFudCk7CisgICAgYm9v
bCBjb25zdW1lU3lzdGVtRm9udChib29sIGltcG9ydGFudCk7CisKKyAgICBib29sIGNvbnN1bWVC
b3JkZXJTcGFjaW5nKGJvb2wgaW1wb3J0YW50KTsKKworICAgIC8vIENTUzMgUGFyc2luZyBSb3V0
aW5lcyAoZm9yIHByb3BlcnRpZXMgc3BlY2lmaWMgdG8gQ1NTMykKKyAgICBib29sIGNvbnN1bWVC
b3JkZXJJbWFnZShDU1NQcm9wZXJ0eUlELCBib29sIGltcG9ydGFudCk7CisKKyAgICBib29sIGNv
bnN1bWVGbGV4KGJvb2wgaW1wb3J0YW50KTsKKworICAgIGJvb2wgY29uc3VtZUxlZ2FjeUJyZWFr
UHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRhbnQpOworCitwcml2YXRlOgorICAg
IC8vIElucHV0czoKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIG1fcmFuZ2U7CisgICAgY29uc3Qg
Q1NTUGFyc2VyQ29udGV4dCYgbV9jb250ZXh0OworICAgIC8vIE91dHB1dHM6CisgICAgVmVjdG9y
PENTU1Byb3BlcnR5LCAyNTY+KiBtX3BhcnNlZFByb3BlcnRpZXM7Cit9OworCitDU1NQcm9wZXJ0
eUlEIHVucmVzb2x2ZWRDU1NQcm9wZXJ0eUlEKFN0cmluZ1ZpZXcpOworQ1NTVmFsdWVJRCBjc3NW
YWx1ZUtleXdvcmRJRChTdHJpbmdWaWV3KTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gQ1NTUHJvcGVydHlQYXJzZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTEwIEBACisvLyBDb3B5cmlnaHQgMjAx
NiBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4K
Ky8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
Ky8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oIgorCisjaW5jbHVkZSAiQ1NTQ2FsY3Vs
YXRpb25WYWx1ZS5oIgorLy8gRklYTUUtTkVXUEFSU0VSOiAjaW5jbHVkZSAiQ1NTQ29sb3JWYWx1
ZS5oIgorI2luY2x1ZGUgIkNTU0Nyb3NzZmFkZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTR3JhZGll
bnRWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0ltYWdlU2V0VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NJ
bWFnZVZhbHVlLmgiCisvLyBGSVhNRS1ORVdQQVJTRVI6ICNpbmNsdWRlICJDU1NQYWludFZhbHVl
LmgiCisvLyBGSVhNRV9ORVdQQVJTRVI6ICNpbmNsdWRlICJDU1NTdHJpbmdWYWx1ZS5oIgorLy8g
RklYTUUtTkVXUEFSU0VSOiAjaW5jbHVkZSAiQ1NTVVJJVmFsdWUuaCIKKy8vIEZJWE1FX05FV1BB
UlNFUjogI2luY2x1ZGUgIkNTU1ZhbHVlUGFpci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
Ky8qIEZJWE1FLU5FV1BBUlNFUjogRGlzYWJsZSBmb3Igbm93LgorIAorbmFtZXNwYWNlIENTU1By
b3BlcnR5UGFyc2VySGVscGVycyB7CisKK2Jvb2wgY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVz
cGFjZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NQYXJzZXJUb2tlbiB2
YWx1ZSA9IHJhbmdlLnBlZWsoKTsKKyAgICBpZiAodmFsdWUudHlwZSgpICE9IENvbW1hVG9rZW4p
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVz
cGFjZSgpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIGNvbnN1bWVTbGFzaEluY2x1ZGlu
Z1doaXRlc3BhY2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTUGFyc2Vy
VG9rZW4gdmFsdWUgPSByYW5nZS5wZWVrKCk7CisgICAgaWYgKHZhbHVlLnR5cGUoKSAhPSBEZWxp
bWl0ZXJUb2tlbiB8fCB2YWx1ZS5kZWxpbWl0ZXIoKSAhPSAnLycpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgIHJldHVy
biB0cnVlOworfQorCitDU1NQYXJzZXJUb2tlblJhbmdlIGNvbnN1bWVGdW5jdGlvbihDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBBU1NFUlQocmFuZ2UucGVlaygpLnR5cGUoKSA9
PSBGdW5jdGlvblRva2VuKTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGNvbnRlbnRzID0gcmFu
Z2UuY29uc3VtZUJsb2NrKCk7CisgICAgcmFuZ2UuY29uc3VtZVdoaXRlc3BhY2UoKTsKKyAgICBj
b250ZW50cy5jb25zdW1lV2hpdGVzcGFjZSgpOworICAgIHJldHVybiBjb250ZW50czsKK30KKwor
Ly8gVE9ETyhyd2xidWlzKTogY29uc2lkZXIgcHVsbGluZyBpbiB0aGUgcGFyc2luZyBsb2dpYyBm
cm9tIENTU0NhbGN1bGF0aW9uVmFsdWUuY3BwLgorY2xhc3MgQ2FsY1BhcnNlciB7CisKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBDYWxjUGFyc2VyKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBW
YWx1ZVJhbmdlIHZhbHVlUmFuZ2UgPSBWYWx1ZVJhbmdlQWxsKQorICAgICAgICA6IG1fc291cmNl
UmFuZ2UocmFuZ2UpCisgICAgICAgICwgbV9yYW5nZShyYW5nZSkKKyAgICB7CisgICAgICAgIGNv
bnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICAgICAgaWYgKHRv
a2VuLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUNhbGMgfHwgdG9rZW4uZnVuY3Rpb25JZCgpID09
IENTU1ZhbHVlV2Via2l0Q2FsYykKKyAgICAgICAgICAgIG1fY2FsY1ZhbHVlID0gQ1NTQ2FsY1Zh
bHVlOjpjcmVhdGUoY29uc3VtZUZ1bmN0aW9uKG1fcmFuZ2UpLCB2YWx1ZVJhbmdlKTsKKyAgICB9
CisKKyAgICBjb25zdCBDU1NDYWxjVmFsdWUqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxj
VmFsdWUuZ2V0KCk7IH0KKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZVZhbHVlKCkKKyAg
ICB7CisgICAgICAgIGlmICghbV9jYWxjVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgbV9zb3VyY2VSYW5nZSA9IG1fcmFuZ2U7CisgICAgICAgIHJldHVybiBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1fY2FsY1ZhbHVlLnJlbGVhc2UoKSk7CisgICAgfQorICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lTnVtYmVyKCkKKyAgICB7CisgICAgICAgIGlmICgh
bV9jYWxjVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgbV9zb3Vy
Y2VSYW5nZSA9IG1fcmFuZ2U7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZSB1
bml0VHlwZSA9IG1fY2FsY1ZhbHVlLT5pc0ludCgpID8gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlOjpJbnRlZ2VyIDogQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpOdW1iZXI7CisgICAg
ICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1fY2FsY1ZhbHVlLT5kb3VibGVW
YWx1ZSgpLCB1bml0VHlwZSk7CisgICAgfQorCisgICAgYm9vbCBjb25zdW1lTnVtYmVyUmF3KGRv
dWJsZSYgcmVzdWx0KQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NhbGNWYWx1ZSB8fCBtX2NhbGNW
YWx1ZS0+Y2F0ZWdvcnkoKSAhPSBDYWxjTnVtYmVyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBtX3NvdXJjZVJhbmdlID0gbV9yYW5nZTsKKyAgICAgICAgcmVzdWx0ID0gbV9j
YWxjVmFsdWUtPmRvdWJsZVZhbHVlKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlJiBtX3NvdXJjZVJhbmdlOworICAgIENT
U1BhcnNlclRva2VuUmFuZ2UgbV9yYW5nZTsKKyAgICBNZW1iZXI8Q1NTQ2FsY1ZhbHVlPiBtX2Nh
bGNWYWx1ZTsKK307CisKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lSW50ZWdlcihDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgZG91YmxlIG1pbmltdW1WYWx1ZSkKK3sKKyAgICBjb25zdCBD
U1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CisgICAgaWYgKHRva2VuLnR5cGUo
KSA9PSBOdW1iZXJUb2tlbikgeworICAgICAgICBpZiAodG9rZW4ubnVtZXJpY1ZhbHVlVHlwZSgp
ID09IE51bWJlclZhbHVlVHlwZSB8fCB0b2tlbi5udW1lcmljVmFsdWUoKSA8IG1pbmltdW1WYWx1
ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVy
aWNWYWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkludGVnZXIpOworICAgIH0K
KyAgICBDYWxjUGFyc2VyIGNhbGNQYXJzZXIocmFuZ2UpOworICAgIGlmIChjb25zdCBDU1NDYWxj
VmFsdWUqIGNhbGN1bGF0aW9uID0gY2FsY1BhcnNlci52YWx1ZSgpKSB7CisgICAgICAgIGlmIChj
YWxjdWxhdGlvbi0+Y2F0ZWdvcnkoKSAhPSBDYWxjTnVtYmVyIHx8ICFjYWxjdWxhdGlvbi0+aXNJ
bnQoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBkb3VibGUgdmFsdWUg
PSBjYWxjdWxhdGlvbi0+ZG91YmxlVmFsdWUoKTsKKyAgICAgICAgaWYgKHZhbHVlIDwgbWluaW11
bVZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBjYWxj
UGFyc2VyLmNvbnN1bWVOdW1iZXIoKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBjb25zdW1lSW50ZWdlcihyYW5nZSwgMSk7Cit9
CisKK2Jvb2wgY29uc3VtZU51bWJlclJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgZG91
YmxlJiByZXN1bHQpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gTnVtYmVyVG9r
ZW4pIHsKKyAgICAgICAgcmVzdWx0ID0gcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2Uo
KS5udW1lcmljVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIENhbGNQ
YXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgcmV0dXJuIGNhbGNQ
YXJzZXIuY29uc3VtZU51bWJlclJhdyhyZXN1bHQpOworfQorCisvLyBUT0RPKHRpbWxvaCk6IFdv
cmsgb3V0IGlmIHRoaXMgY2FuIGp1c3QgY2FsbCBjb25zdW1lTnVtYmVyUmF3CitDU1NQcmltaXRp
dmVWYWx1ZSogY29uc3VtZU51bWJlcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgVmFsdWVS
YW5nZSB2YWx1ZVJhbmdlKQoreworICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJh
bmdlLnBlZWsoKTsKKyAgICBpZiAodG9rZW4udHlwZSgpID09IE51bWJlclRva2VuKSB7CisgICAg
ICAgIGlmICh2YWx1ZVJhbmdlID09IFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSAmJiB0b2tlbi5udW1l
cmljVmFsdWUoKSA8IDApCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRl
c3BhY2UoKS5udW1lcmljVmFsdWUoKSwgdG9rZW4udW5pdFR5cGUoKSk7CisgICAgfQorICAgIENh
bGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKGNvbnN0
IENTU0NhbGNWYWx1ZSogY2FsY3VsYXRpb24gPSBjYWxjUGFyc2VyLnZhbHVlKCkpIHsKKyAgICAg
ICAgLy8gVE9ETyhyd2xidWlzKSBDYWxjcyBzaG91bGQgbm90IGJlIHN1YmplY3QgdG8gcGFyc2Ug
dGltZSByYW5nZSBjaGVja3MuCisgICAgICAgIC8vIHNwZWM6IGh0dHBzOi8vZHJhZnRzLmNzc3dn
Lm9yZy9jc3MtdmFsdWVzLTMvI2NhbGMtcmFuZ2UKKyAgICAgICAgaWYgKGNhbGN1bGF0aW9uLT5j
YXRlZ29yeSgpICE9IENhbGNOdW1iZXIgfHwgKHZhbHVlUmFuZ2UgPT0gVmFsdWVSYW5nZU5vbk5l
Z2F0aXZlICYmIGNhbGN1bGF0aW9uLT5pc05lZ2F0aXZlKCkpKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIHJldHVybiBjYWxjUGFyc2VyLmNvbnN1bWVOdW1iZXIoKTsKKyAg
ICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2lubGluZSBib29sIHNob3VsZEFjY2VwdFVu
aXRsZXNzTGVuZ3RoKGRvdWJsZSB2YWx1ZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBV
bml0bGVzc1F1aXJrIHVuaXRsZXNzKQoreworICAgIC8vIFRPRE8odGltbG9oKTogUHJlc2VudGF0
aW9uYWwgSFRNTCBhdHRyaWJ1dGVzIHNob3VsZG4ndCB1c2UgdGhlIENTUyBwYXJzZXIgZm9yIGxl
bmd0aHMKKyAgICByZXR1cm4gdmFsdWUgPT0gMAorICAgICAgICB8fCBpc1VuaXRMZXNzTGVuZ3Ro
UGFyc2luZ0VuYWJsZWRGb3JNb2RlKGNzc1BhcnNlck1vZGUpCisgICAgICAgIHx8IChjc3NQYXJz
ZXJNb2RlID09IEhUTUxRdWlya3NNb2RlICYmIHVuaXRsZXNzID09IFVuaXRsZXNzUXVpcms6OkFs
bG93KTsKK30KKworQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVMZW5ndGgoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZSB2
YWx1ZVJhbmdlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzKQoreworICAgIGNvbnN0IENTU1BhcnNl
clRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICBpZiAodG9rZW4udHlwZSgpID09IERp
bWVuc2lvblRva2VuKSB7CisgICAgICAgIHN3aXRjaCAodG9rZW4udW5pdFR5cGUoKSkgeworICAg
ICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UXVpcmt5RW1zOgorICAgICAg
ICAgICAgaWYgKGNzc1BhcnNlck1vZGUgIT0gVUFTaGVldE1vZGUpCisgICAgICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgY2FzZSBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkVtczoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGU6OlJlbXM6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlOjpDaHM6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBl
OjpFeHM6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQaXhlbHM6
CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpDZW50aW1ldGVyczoK
KyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6Ok1pbGxpbWV0ZXJzOgor
ICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6SW5jaGVzOgorICAgICAg
ICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UG9pbnRzOgorICAgICAgICBjYXNl
IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGljYXM6CisgICAgICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpVc2VyVW5pdHM6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlOjpWaWV3cG9ydFdpZHRoOgorICAgICAgICBjYXNlIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZTo6Vmlld3BvcnRIZWlnaHQ6CisgICAgICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpWaWV3cG9ydE1pbjoKKyAgICAgICAgY2FzZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlZpZXdwb3J0TWF4OgorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQor
ICAgICAgICBpZiAodmFsdWVSYW5nZSA9PSBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUgJiYgdG9rZW4u
bnVtZXJpY1ZhbHVlKCkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdX
aGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCksIHRva2VuLnVuaXRUeXBlKCkpOworICAgIH0KKyAg
ICBpZiAodG9rZW4udHlwZSgpID09IE51bWJlclRva2VuKSB7CisgICAgICAgIGlmICghc2hvdWxk
QWNjZXB0VW5pdGxlc3NMZW5ndGgodG9rZW4ubnVtZXJpY1ZhbHVlKCksIGNzc1BhcnNlck1vZGUs
IHVuaXRsZXNzKQorICAgICAgICAgICAgfHwgKHZhbHVlUmFuZ2UgPT0gVmFsdWVSYW5nZU5vbk5l
Z2F0aXZlICYmIHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgMCkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlIHVuaXRUeXBlID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQaXhlbHM7CisgICAgICAgIGlmIChjc3NQYXJz
ZXJNb2RlID09IFNWR0F0dHJpYnV0ZU1vZGUpCisgICAgICAgICAgICB1bml0VHlwZSA9IENTU1By
aW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6VXNlclVuaXRzOworICAgICAgICByZXR1cm4gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51
bWVyaWNWYWx1ZSgpLCB1bml0VHlwZSk7CisgICAgfQorICAgIGlmIChjc3NQYXJzZXJNb2RlID09
IFNWR0F0dHJpYnV0ZU1vZGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIENhbGNQYXJz
ZXIgY2FsY1BhcnNlcihyYW5nZSwgdmFsdWVSYW5nZSk7CisgICAgaWYgKGNhbGNQYXJzZXIudmFs
dWUoKSAmJiBjYWxjUGFyc2VyLnZhbHVlKCktPmNhdGVnb3J5KCkgPT0gQ2FsY0xlbmd0aCkKKyAg
ICAgICAgcmV0dXJuIGNhbGNQYXJzZXIuY29uc3VtZVZhbHVlKCk7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lUGVyY2VudChDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgVmFsdWVSYW5nZSB2YWx1ZVJhbmdlKQoreworICAgIGNvbnN0IENTU1Bh
cnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICBpZiAodG9rZW4udHlwZSgpID09
IFBlcmNlbnRhZ2VUb2tlbikgeworICAgICAgICBpZiAodmFsdWVSYW5nZSA9PSBWYWx1ZVJhbmdl
Tm9uTmVnYXRpdmUgJiYgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPCAwKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJh
bmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCksIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZTo6UGVyY2VudGFnZSk7CisgICAgfQorICAgIENhbGNQYXJzZXIg
Y2FsY1BhcnNlcihyYW5nZSwgdmFsdWVSYW5nZSk7CisgICAgaWYgKGNvbnN0IENTU0NhbGNWYWx1
ZSogY2FsY3VsYXRpb24gPSBjYWxjUGFyc2VyLnZhbHVlKCkpIHsKKyAgICAgICAgaWYgKGNhbGN1
bGF0aW9uLT5jYXRlZ29yeSgpID09IENhbGNQZXJjZW50KQorICAgICAgICAgICAgcmV0dXJuIGNh
bGNQYXJzZXIuY29uc3VtZVZhbHVlKCk7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQor
Citib29sIGNhbkNvbnN1bWVDYWxjVmFsdWUoQ2FsY3VsYXRpb25DYXRlZ29yeSBjYXRlZ29yeSwg
Q1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlmIChjYXRlZ29yeSA9PSBDYWxj
TGVuZ3RoIHx8IGNhdGVnb3J5ID09IENhbGNQZXJjZW50IHx8IGNhdGVnb3J5ID09IENhbGNQZXJj
ZW50TGVuZ3RoKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChjc3NQYXJzZXJNb2Rl
ICE9IFNWR0F0dHJpYnV0ZU1vZGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChj
YXRlZ29yeSA9PSBDYWxjTnVtYmVyIHx8IGNhdGVnb3J5ID09IENhbGNQZXJjZW50TnVtYmVyIHx8
IGNhdGVnb3J5ID09IENhbGNMZW5ndGhOdW1iZXIgfHwgY2F0ZWdvcnkgPT0gQ2FsY1BlcmNlbnRM
ZW5ndGhOdW1iZXIpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUxlbmd0aE9yUGVyY2VudChDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdl
IHZhbHVlUmFuZ2UsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCit7CisgICAgY29uc3QgQ1NTUGFy
c2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0g
RGltZW5zaW9uVG9rZW4gfHwgdG9rZW4udHlwZSgpID09IE51bWJlclRva2VuKQorICAgICAgICBy
ZXR1cm4gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdmFsdWVSYW5nZSwgdW5p
dGxlc3MpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gUGVyY2VudGFnZVRva2VuKQorICAgICAg
ICByZXR1cm4gY29uc3VtZVBlcmNlbnQocmFuZ2UsIHZhbHVlUmFuZ2UpOworICAgIENhbGNQYXJz
ZXIgY2FsY1BhcnNlcihyYW5nZSwgdmFsdWVSYW5nZSk7CisgICAgaWYgKGNvbnN0IENTU0NhbGNW
YWx1ZSogY2FsY3VsYXRpb24gPSBjYWxjUGFyc2VyLnZhbHVlKCkpIHsKKyAgICAgICAgaWYgKGNh
bkNvbnN1bWVDYWxjVmFsdWUoY2FsY3VsYXRpb24tPmNhdGVnb3J5KCksIGNzc1BhcnNlck1vZGUp
KQorICAgICAgICAgICAgcmV0dXJuIGNhbGNQYXJzZXIuY29uc3VtZVZhbHVlKCk7CisgICAgfQor
ICAgIHJldHVybiBudWxscHRyOworfQorCitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUFuZ2xl
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGNvbnN0IENTU1BhcnNlclRva2Vu
JiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICBpZiAodG9rZW4udHlwZSgpID09IERpbWVuc2lv
blRva2VuKSB7CisgICAgICAgIHN3aXRjaCAodG9rZW4udW5pdFR5cGUoKSkgeworICAgICAgICBj
YXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6RGVncmVlczoKKyAgICAgICAgY2FzZSBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlJhZGlhbnM6CisgICAgICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpHcmFkaWFuczoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGU6OlR1cm5zOgorICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1lcmlj
VmFsdWUoKSwgdG9rZW4udW5pdFR5cGUoKSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAodG9rZW4udHlwZSgp
ID09IE51bWJlclRva2VuICYmIHRva2VuLm51bWVyaWNWYWx1ZSgpID09IDApIHsKKyAgICAgICAg
cmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgcmV0dXJuIENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUoMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpEZWdy
ZWVzKTsKKyAgICB9CisgICAgQ2FsY1BhcnNlciBjYWxjUGFyc2VyKHJhbmdlLCBWYWx1ZVJhbmdl
QWxsKTsKKyAgICBpZiAoY29uc3QgQ1NTQ2FsY1ZhbHVlKiBjYWxjdWxhdGlvbiA9IGNhbGNQYXJz
ZXIudmFsdWUoKSkgeworICAgICAgICBpZiAoY2FsY3VsYXRpb24tPmNhdGVnb3J5KCkgPT0gQ2Fs
Y0FuZ2xlKQorICAgICAgICAgICAgcmV0dXJuIGNhbGNQYXJzZXIuY29uc3VtZVZhbHVlKCk7Cisg
ICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3Vt
ZVRpbWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSkK
K3sKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CisgICAg
aWYgKHRva2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbikgeworICAgICAgICBpZiAodmFsdWVS
YW5nZSA9PSBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUgJiYgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPCAw
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZSB1bml0ID0gdG9rZW4udW5pdFR5cGUoKTsKKyAgICAgICAgaWYgKHVuaXQgPT0g
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpNaWxsaXNlY29uZHMgfHwgdW5pdCA9PSBDU1NQ
cmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlNlY29uZHMpCisgICAgICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgp
Lm51bWVyaWNWYWx1ZSgpLCB0b2tlbi51bml0VHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorICAgIENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgdmFsdWVSYW5nZSk7
CisgICAgaWYgKGNvbnN0IENTU0NhbGNWYWx1ZSogY2FsY3VsYXRpb24gPSBjYWxjUGFyc2VyLnZh
bHVlKCkpIHsKKyAgICAgICAgaWYgKGNhbGN1bGF0aW9uLT5jYXRlZ29yeSgpID09IENhbGNUaW1l
KQorICAgICAgICAgICAgcmV0dXJuIGNhbGNQYXJzZXIuY29uc3VtZVZhbHVlKCk7CisgICAgfQor
ICAgIHJldHVybiBudWxscHRyOworfQorCitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUlkZW50
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkudHlw
ZSgpICE9IElkZW50VG9rZW4pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihyYW5nZS5jb25zdW1lSW5jbHVkaW5n
V2hpdGVzcGFjZSgpLmlkKCkpOworfQorCitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUlkZW50
UmFuZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1ZhbHVlSUQgbG93ZXIsIENTU1Zh
bHVlSUQgdXBwZXIpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpIDwgbG93ZXIgfHwgcmFu
Z2UucGVlaygpLmlkKCkgPiB1cHBlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7Cit9CisKK0NTU0N1c3RvbUlkZW50VmFsdWUqIGNvbnN1
bWVDdXN0b21JZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFu
Z2UucGVlaygpLnR5cGUoKSAhPSBJZGVudFRva2VuIHx8IGlzQ1NTV2lkZUtleXdvcmQocmFuZ2Uu
cGVlaygpLmlkKCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gQ1NTQ3Vz
dG9tSWRlbnRWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCku
dmFsdWUoKS50b1N0cmluZygpKTsKK30KKworQ1NTU3RyaW5nVmFsdWUqIGNvbnN1bWVTdHJpbmco
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBl
KCkgIT0gU3RyaW5nVG9rZW4pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBD
U1NTdHJpbmdWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCku
dmFsdWUoKS50b1N0cmluZygpKTsKK30KKworU3RyaW5nVmlldyBjb25zdW1lVXJsQXNTdHJpbmdW
aWV3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGNvbnN0IENTU1BhcnNlclRv
a2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICBpZiAodG9rZW4udHlwZSgpID09IFVybFRv
a2VuKSB7CisgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAg
ICAgIHJldHVybiB0b2tlbi52YWx1ZSgpOworICAgIH0KKyAgICBpZiAodG9rZW4uZnVuY3Rpb25J
ZCgpID09IENTU1ZhbHVlVXJsKSB7CisgICAgICAgIENTU1BhcnNlclRva2VuUmFuZ2UgdXJsUmFu
Z2UgPSByYW5nZTsKKyAgICAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSB1cmxBcmdzID0gdXJsUmFu
Z2UuY29uc3VtZUJsb2NrKCk7CisgICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiBuZXh0ID0g
dXJsQXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICBpZiAobmV4dC50
eXBlKCkgPT0gQmFkU3RyaW5nVG9rZW4gfHwgIXVybEFyZ3MuYXRFbmQoKSkKKyAgICAgICAgICAg
IHJldHVybiBTdHJpbmdWaWV3KCk7CisgICAgICAgIEFTU0VSVChuZXh0LnR5cGUoKSA9PSBTdHJp
bmdUb2tlbik7CisgICAgICAgIHJhbmdlID0gdXJsUmFuZ2U7CisgICAgICAgIHJhbmdlLmNvbnN1
bWVXaGl0ZXNwYWNlKCk7CisgICAgICAgIHJldHVybiBuZXh0LnZhbHVlKCk7CisgICAgfQorCisg
ICAgcmV0dXJuIFN0cmluZ1ZpZXcoKTsKK30KKworQ1NTVVJJVmFsdWUqIGNvbnN1bWVVcmwoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgU3RyaW5nVmlldyB1cmwgPSBjb25zdW1l
VXJsQXNTdHJpbmdWaWV3KHJhbmdlKTsKKyAgICBpZiAodXJsLmlzTnVsbCgpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gQ1NTVVJJVmFsdWU6OmNyZWF0ZSh1cmwudG9TdHJp
bmcoKSk7Cit9CisKK3N0YXRpYyBpbnQgY2xhbXBSR0JDb21wb25lbnQoY29uc3QgQ1NTUHJpbWl0
aXZlVmFsdWUmIHZhbHVlKQoreworICAgIGRvdWJsZSByZXN1bHQgPSB2YWx1ZS5nZXREb3VibGVW
YWx1ZSgpOworICAgIC8vIFRPRE8odGltbG9oKTogTXVsdGlwbHkgYnkgMi41NSBhbmQgcm91bmQg
aW5zdGVhZCBvZiBmbG9vci4KKyAgICBpZiAodmFsdWUuaXNQZXJjZW50YWdlKCkpCisgICAgICAg
IHJlc3VsdCAqPSAyLjU2OworICAgIHJldHVybiBjbGFtcFRvPGludD4ocmVzdWx0LCAwLCAyNTUp
OworfQorCitzdGF0aWMgYm9vbCBwYXJzZVJHQlBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UsIFJHQkEzMiYgcmVzdWx0LCBib29sIHBhcnNlQWxwaGEpCit7CisgICAgQVNTRVJU
KHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVSZ2IgfHwgcmFuZ2UucGVlaygp
LmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZVJnYmEpOworICAgIENTU1BhcnNlclRva2VuUmFuZ2Ug
YXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNv
bG9yUGFyYW1ldGVyID0gY29uc3VtZUludGVnZXIoYXJncyk7CisgICAgaWYgKCFjb2xvclBhcmFt
ZXRlcikKKyAgICAgICAgY29sb3JQYXJhbWV0ZXIgPSBjb25zdW1lUGVyY2VudChhcmdzLCBWYWx1
ZVJhbmdlQWxsKTsKKyAgICBpZiAoIWNvbG9yUGFyYW1ldGVyKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgY29uc3QgYm9vbCBpc1BlcmNlbnQgPSBjb2xvclBhcmFtZXRlci0+aXNQZXJjZW50
YWdlKCk7CisgICAgaW50IGNvbG9yQXJyYXlbM107CisgICAgY29sb3JBcnJheVswXSA9IGNsYW1w
UkdCQ29tcG9uZW50KCpjb2xvclBhcmFtZXRlcik7CisgICAgZm9yIChpbnQgaSA9IDE7IGkgPCAz
OyBpKyspIHsKKyAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFy
Z3MpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjb2xvclBhcmFtZXRlciA9
IGlzUGVyY2VudCA/IGNvbnN1bWVQZXJjZW50KGFyZ3MsIFZhbHVlUmFuZ2VBbGwpIDogY29uc3Vt
ZUludGVnZXIoYXJncyk7CisgICAgICAgIGlmICghY29sb3JQYXJhbWV0ZXIpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNvbG9yQXJyYXlbaV0gPSBjbGFtcFJHQkNvbXBvbmVu
dCgqY29sb3JQYXJhbWV0ZXIpOworICAgIH0KKyAgICBpZiAocGFyc2VBbHBoYSkgeworICAgICAg
ICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRvdWJsZSBhbHBoYTsKKyAgICAgICAgaWYgKCFjb25z
dW1lTnVtYmVyUmF3KGFyZ3MsIGFscGhhKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgLy8gQ29udmVydCB0aGUgZmxvYXRpbmcgcG9pbnRlciBudW1iZXIgb2YgYWxwaGEgdG8g
YW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgWzAsIDI1NiksCisgICAgICAgIC8vIHdpdGggYW4gZXF1
YWwgZGlzdHJpYnV0aW9uIGFjcm9zcyBhbGwgMjU2IHZhbHVlcy4KKyAgICAgICAgaW50IGFscGhh
Q29tcG9uZW50ID0gc3RhdGljX2Nhc3Q8aW50PihjbGFtcFRvPGRvdWJsZT4oYWxwaGEsIDAuMCwg
MS4wKSAqIG5leHRhZnRlcigyNTYuMCwgMC4wKSk7CisgICAgICAgIHJlc3VsdCA9IG1ha2VSR0JB
KGNvbG9yQXJyYXlbMF0sIGNvbG9yQXJyYXlbMV0sIGNvbG9yQXJyYXlbMl0sIGFscGhhQ29tcG9u
ZW50KTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXN1bHQgPSBtYWtlUkdCKGNvbG9yQXJyYXlb
MF0sIGNvbG9yQXJyYXlbMV0sIGNvbG9yQXJyYXlbMl0pOworICAgIH0KKyAgICByZXR1cm4gYXJn
cy5hdEVuZCgpOworfQorCitzdGF0aWMgYm9vbCBwYXJzZUhTTFBhcmFtZXRlcnMoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UsIFJHQkEzMiYgcmVzdWx0LCBib29sIHBhcnNlQWxwaGEpCit7Cisg
ICAgQVNTRVJUKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVIc2wgfHwgcmFu
Z2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUhzbGEpOworICAgIENTU1BhcnNlclRv
a2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7CisgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIGhzbFZhbHVlID0gY29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKKyAg
ICBpZiAoIWhzbFZhbHVlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZG91YmxlIGNvbG9y
QXJyYXlbM107CisgICAgY29sb3JBcnJheVswXSA9ICgoKGhzbFZhbHVlLT5nZXRJbnRWYWx1ZSgp
ICUgMzYwKSArIDM2MCkgJSAzNjApIC8gMzYwLjA7CisgICAgZm9yIChpbnQgaSA9IDE7IGkgPCAz
OyBpKyspIHsKKyAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFy
Z3MpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBoc2xWYWx1ZSA9IGNvbnN1
bWVQZXJjZW50KGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBpZiAoIWhzbFZhbHVlKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBkb3VibGUgZG91YmxlVmFsdWUgPSBo
c2xWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgY29sb3JBcnJheVtpXSA9IGNsYW1w
VG88ZG91YmxlPihkb3VibGVWYWx1ZSwgMC4wLCAxMDAuMCkgLyAxMDAuMDsgLy8gTmVlZHMgdG8g
YmUgdmFsdWUgYmV0d2VlbiAwIGFuZCAxLjAuCisgICAgfQorICAgIGRvdWJsZSBhbHBoYSA9IDEu
MDsKKyAgICBpZiAocGFyc2VBbHBoYSkgeworICAgICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1
ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IGlmICghY29uc3VtZU51bWJlclJhdyhhcmdzLCBhbHBoYSkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGFscGhhID0gY2xhbXBUbzxkb3VibGU+KGFscGhhLCAwLjAsIDEuMCk7
CisgICAgfQorICAgIHJlc3VsdCA9IG1ha2VSR0JBRnJvbUhTTEEoY29sb3JBcnJheVswXSwgY29s
b3JBcnJheVsxXSwgY29sb3JBcnJheVsyXSwgYWxwaGEpOworICAgIHJldHVybiBhcmdzLmF0RW5k
KCk7Cit9CisKK3N0YXRpYyBib29sIHBhcnNlSGV4Q29sb3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UsIFJHQkEzMiYgcmVzdWx0LCBib29sIGFjY2VwdFF1aXJreUNvbG9ycykKK3sKKyAgICBj
b25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CisgICAgaWYgKHRva2Vu
LnR5cGUoKSA9PSBIYXNoVG9rZW4pIHsKKyAgICAgICAgaWYgKCFDb2xvcjo6cGFyc2VIZXhDb2xv
cih0b2tlbi52YWx1ZSgpLCByZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0gZWxzZSBpZiAoYWNjZXB0UXVpcmt5Q29sb3JzKSB7CisgICAgICAgIFN0cmluZyBjb2xvcjsK
KyAgICAgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbiB8fCB0b2tlbi50eXBlKCkg
PT0gRGltZW5zaW9uVG9rZW4pIHsKKyAgICAgICAgICAgIGlmICh0b2tlbi5udW1lcmljVmFsdWVU
eXBlKCkgIT0gSW50ZWdlclZhbHVlVHlwZQorICAgICAgICAgICAgICAgIHx8IHRva2VuLm51bWVy
aWNWYWx1ZSgpIDwgMC4gfHwgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPj0gMTAwMDAwMC4pCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKHRva2VuLnR5cGUoKSA9
PSBOdW1iZXJUb2tlbikgLy8gZS5nLiAxMTIyMzMKKyAgICAgICAgICAgICAgICBjb2xvciA9IFN0
cmluZzo6Zm9ybWF0KCIlZCIsIHN0YXRpY19jYXN0PGludD4odG9rZW4ubnVtZXJpY1ZhbHVlKCkp
KTsKKyAgICAgICAgICAgIGVsc2UgLy8gZS5nLiAwMDAxRkYKKyAgICAgICAgICAgICAgICBjb2xv
ciA9IFN0cmluZzo6bnVtYmVyKHN0YXRpY19jYXN0PGludD4odG9rZW4ubnVtZXJpY1ZhbHVlKCkp
KSArIHRva2VuLnZhbHVlKCkudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIHdoaWxlIChjb2xvci5s
ZW5ndGgoKSA8IDYpCisgICAgICAgICAgICAgICAgY29sb3IgPSAiMCIgKyBjb2xvcjsKKyAgICAg
ICAgfSBlbHNlIGlmICh0b2tlbi50eXBlKCkgPT0gSWRlbnRUb2tlbikgeyAvLyBlLmcuIEZGMDAw
MAorICAgICAgICAgICAgY29sb3IgPSB0b2tlbi52YWx1ZSgpLnRvU3RyaW5nKCk7CisgICAgICAg
IH0KKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gY29sb3IubGVuZ3RoKCk7CisgICAgICAgIGlm
IChsZW5ndGggIT0gMyAmJiBsZW5ndGggIT0gNikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgaWYgKCFDb2xvcjo6cGFyc2VIZXhDb2xvcihjb2xvciwgcmVzdWx0KSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIHBhcnNlQ29sb3JGdW5jdGlvbihDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgUkdCQTMyJiByZXN1bHQpCit7CisgICAgQ1NTVmFsdWVJRCBmdW5j
dGlvbklkID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKTsKKyAgICBpZiAoZnVuY3Rpb25JZCA8
IENTU1ZhbHVlUmdiIHx8IGZ1bmN0aW9uSWQgPiBDU1NWYWx1ZUhzbGEpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGNvbG9yUmFuZ2UgPSByYW5nZTsKKyAg
ICBpZiAoKGZ1bmN0aW9uSWQgPD0gQ1NTVmFsdWVSZ2JhICYmICFwYXJzZVJHQlBhcmFtZXRlcnMo
Y29sb3JSYW5nZSwgcmVzdWx0LCBmdW5jdGlvbklkID09IENTU1ZhbHVlUmdiYSkpCisgICAgICAg
IHx8IChmdW5jdGlvbklkID49IENTU1ZhbHVlSHNsICYmICFwYXJzZUhTTFBhcmFtZXRlcnMoY29s
b3JSYW5nZSwgcmVzdWx0LCBmdW5jdGlvbklkID09IENTU1ZhbHVlSHNsYSkpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmFuZ2UgPSBjb2xvclJhbmdlOworICAgIHJldHVybiB0cnVlOwor
fQorCitDU1NWYWx1ZSogY29uc3VtZUNvbG9yKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBD
U1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIGJvb2wgYWNjZXB0UXVpcmt5Q29sb3JzKQorewor
ICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICBpZiAoU3R5bGVDb2xv
cjo6aXNDb2xvcktleXdvcmQoaWQpKSB7CisgICAgICAgIGlmICghaXNWYWx1ZUFsbG93ZWRJbk1v
ZGUoaWQsIGNzc1BhcnNlck1vZGUpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIH0KKyAgICBSR0JBMzIgY29sb3Ig
PSBDb2xvcjo6dHJhbnNwYXJlbnQ7CisgICAgaWYgKCFwYXJzZUhleENvbG9yKHJhbmdlLCBjb2xv
ciwgYWNjZXB0UXVpcmt5Q29sb3JzKSAmJiAhcGFyc2VDb2xvckZ1bmN0aW9uKHJhbmdlLCBjb2xv
cikpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBDU1NDb2xvclZhbHVlOjpj
cmVhdGUoY29sb3IpOworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVQb3Np
dGlvbkNvbXBvbmVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBj
c3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzKQoreworICAgIGlmIChyYW5nZS5w
ZWVrKCkudHlwZSgpID09IElkZW50VG9rZW4pCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQ8
Q1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVRvcCwgQ1NTVmFsdWVCb3R0b20sIENTU1ZhbHVlUmlnaHQs
IENTU1ZhbHVlQ2VudGVyPihyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNl
bnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwsIHVuaXRsZXNzKTsKK30KKwor
c3RhdGljIGJvb2wgaXNIb3Jpem9udGFsUG9zaXRpb25LZXl3b3JkT25seShjb25zdCBDU1NQcmlt
aXRpdmVWYWx1ZSYgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlLmlzVmFsdWVJRCgpICYmICh2
YWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVMZWZ0IHx8IHZhbHVlLmdldFZhbHVlSUQoKSA9
PSBDU1NWYWx1ZVJpZ2h0KTsKK30KKworc3RhdGljIGJvb2wgaXNWZXJ0aWNhbFBvc2l0aW9uS2V5
d29yZE9ubHkoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQoreworICAgIHJldHVybiB2
YWx1ZS5pc1ZhbHVlSUQoKSAmJiAodmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlVG9wIHx8
IHZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUJvdHRvbSk7Cit9CisKK3N0YXRpYyB2b2lk
IHBvc2l0aW9uRnJvbU9uZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSwgQ1NTVmFsdWUq
JiByZXN1bHRYLCBDU1NWYWx1ZSomIHJlc3VsdFkpCit7CisgICAgYm9vbCB2YWx1ZUFwcGxpZXNU
b1lBeGlzT25seSA9IGlzVmVydGljYWxQb3NpdGlvbktleXdvcmRPbmx5KCp2YWx1ZSk7CisgICAg
cmVzdWx0WCA9IHZhbHVlOworICAgIHJlc3VsdFkgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
SWRlbnRpZmllcihDU1NWYWx1ZUNlbnRlcik7CisgICAgaWYgKHZhbHVlQXBwbGllc1RvWUF4aXNP
bmx5KQorICAgICAgICBzdGQ6OnN3YXAocmVzdWx0WCwgcmVzdWx0WSk7Cit9CisKK3N0YXRpYyBi
b29sIHBvc2l0aW9uRnJvbVR3b1ZhbHVlcyhDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUxLCBDU1NQ
cmltaXRpdmVWYWx1ZSogdmFsdWUyLAorICAgIENTU1ZhbHVlKiYgcmVzdWx0WCwgQ1NTVmFsdWUq
JiByZXN1bHRZKQoreworICAgIGJvb2wgbXVzdE9yZGVyQXNYWSA9IGlzSG9yaXpvbnRhbFBvc2l0
aW9uS2V5d29yZE9ubHkoKnZhbHVlMSkgfHwgaXNWZXJ0aWNhbFBvc2l0aW9uS2V5d29yZE9ubHko
KnZhbHVlMikKKyAgICAgICAgfHwgIXZhbHVlMS0+aXNWYWx1ZUlEKCkgfHwgIXZhbHVlMi0+aXNW
YWx1ZUlEKCk7CisgICAgYm9vbCBtdXN0T3JkZXJBc1lYID0gaXNWZXJ0aWNhbFBvc2l0aW9uS2V5
d29yZE9ubHkoKnZhbHVlMSkgfHwgaXNIb3Jpem9udGFsUG9zaXRpb25LZXl3b3JkT25seSgqdmFs
dWUyKTsKKyAgICBpZiAobXVzdE9yZGVyQXNYWSAmJiBtdXN0T3JkZXJBc1lYKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmVzdWx0WCA9IHZhbHVlMTsKKyAgICByZXN1bHRZID0gdmFsdWUy
OworICAgIGlmIChtdXN0T3JkZXJBc1lYKQorICAgICAgICBzdGQ6OnN3YXAocmVzdWx0WCwgcmVz
dWx0WSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIHBvc2l0aW9uRnJvbVRo
cmVlT3JGb3VyVmFsdWVzKENTU1ByaW1pdGl2ZVZhbHVlKiogdmFsdWVzLCBDU1NWYWx1ZSomIHJl
c3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSkKK3sKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogY2Vu
dGVyID0gbnVsbHB0cjsKKyAgICBmb3IgKGludCBpID0gMDsgdmFsdWVzW2ldOyBpKyspIHsKKyAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGN1cnJlbnRWYWx1ZSA9IHZhbHVlc1tpXTsKKyAgICAg
ICAgaWYgKCFjdXJyZW50VmFsdWUtPmlzVmFsdWVJRCgpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBDU1NWYWx1ZUlEIGlkID0gY3VycmVudFZhbHVlLT5nZXRWYWx1ZUlEKCk7
CisKKyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQ2VudGVyKSB7CisgICAgICAgICAgICBpZiAo
Y2VudGVyKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGNlbnRl
ciA9IGN1cnJlbnRWYWx1ZTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAg
ICAgICAgQ1NTVmFsdWUqIHJlc3VsdCA9IG51bGxwdHI7CisgICAgICAgIGlmICh2YWx1ZXNbaSAr
IDFdICYmICF2YWx1ZXNbaSArIDFdLT5pc1ZhbHVlSUQoKSkgeworICAgICAgICAgICAgcmVzdWx0
ID0gQ1NTVmFsdWVQYWlyOjpjcmVhdGUoY3VycmVudFZhbHVlLCB2YWx1ZXNbKytpXSwgQ1NTVmFs
dWVQYWlyOjpLZWVwSWRlbnRpY2FsVmFsdWVzKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IGN1cnJlbnRWYWx1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpZCA9
PSBDU1NWYWx1ZUxlZnQgfHwgaWQgPT0gQ1NTVmFsdWVSaWdodCkgeworICAgICAgICAgICAgaWYg
KHJlc3VsdFgpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmVz
dWx0WCA9IHJlc3VsdDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChpZCA9
PSBDU1NWYWx1ZVRvcCB8fCBpZCA9PSBDU1NWYWx1ZUJvdHRvbSk7CisgICAgICAgICAgICBpZiAo
cmVzdWx0WSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXN1
bHRZID0gcmVzdWx0OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGNlbnRlcikgeworICAg
ICAgICBBU1NFUlQocmVzdWx0WCB8fCByZXN1bHRZKTsKKyAgICAgICAgaWYgKHJlc3VsdFggJiYg
cmVzdWx0WSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFyZXN1bHRY
KQorICAgICAgICAgICAgcmVzdWx0WCA9IGNlbnRlcjsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcmVzdWx0WSA9IGNlbnRlcjsKKyAgICB9CisKKyAgICBBU1NFUlQocmVzdWx0WCAmJiByZXN1
bHRZKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gVE9ETyh0aW1sb2gpOiBUaGlzIG1heSBj
b25zdW1lIGZyb20gdGhlIHJhbmdlIHVwb24gZmFpbHVyZS4gVGhlIGJhY2tncm91bmQKKy8vIHNo
b3J0aGFuZCB3b3JrcyBhcm91bmQgaXQsIGJ1dCB3ZSBzaG91bGQganVzdCBmaXggaXQgaGVyZS4K
K2Jvb2wgY29uc3VtZVBvc2l0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJz
ZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MsIENTU1ZhbHVlKiYg
cmVzdWx0WCwgQ1NTVmFsdWUqJiByZXN1bHRZKQoreworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2
YWx1ZTEgPSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVu
aXRsZXNzKTsKKyAgICBpZiAoIXZhbHVlMSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlMiA9IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVudChyYW5n
ZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpOworICAgIGlmICghdmFsdWUyKSB7CisgICAgICAg
IHBvc2l0aW9uRnJvbU9uZVZhbHVlKHZhbHVlMSwgcmVzdWx0WCwgcmVzdWx0WSk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZTMgPSBj
b25zdW1lUG9zaXRpb25Db21wb25lbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKTsK
KyAgICBpZiAoIXZhbHVlMykKKyAgICAgICAgcmV0dXJuIHBvc2l0aW9uRnJvbVR3b1ZhbHVlcyh2
YWx1ZTEsIHZhbHVlMiwgcmVzdWx0WCwgcmVzdWx0WSk7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1
ZSogdmFsdWU0ID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQYXJzZXJNb2Rl
LCB1bml0bGVzcyk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlc1s1XTsKKyAgICB2YWx1
ZXNbMF0gPSB2YWx1ZTE7CisgICAgdmFsdWVzWzFdID0gdmFsdWUyOworICAgIHZhbHVlc1syXSA9
IHZhbHVlMzsKKyAgICB2YWx1ZXNbM10gPSB2YWx1ZTQ7CisgICAgdmFsdWVzWzRdID0gbnVsbHB0
cjsKKyAgICByZXR1cm4gcG9zaXRpb25Gcm9tVGhyZWVPckZvdXJWYWx1ZXModmFsdWVzLCByZXN1
bHRYLCByZXN1bHRZKTsKK30KKworQ1NTVmFsdWVQYWlyKiBjb25zdW1lUG9zaXRpb24oQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxl
c3NRdWlyayB1bml0bGVzcykKK3sKKyAgICBDU1NWYWx1ZSogcmVzdWx0WCA9IG51bGxwdHI7Cisg
ICAgQ1NTVmFsdWUqIHJlc3VsdFkgPSBudWxscHRyOworICAgIGlmIChjb25zdW1lUG9zaXRpb24o
cmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzLCByZXN1bHRYLCByZXN1bHRZKSkKKyAgICAg
ICAgcmV0dXJuIENTU1ZhbHVlUGFpcjo6Y3JlYXRlKHJlc3VsdFgsIHJlc3VsdFksIENTU1ZhbHVl
UGFpcjo6S2VlcElkZW50aWNhbFZhbHVlcyk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jv
b2wgY29uc3VtZU9uZU9yVHdvVmFsdWVkUG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcywg
Q1NTVmFsdWUqJiByZXN1bHRYLCBDU1NWYWx1ZSomIHJlc3VsdFkpCit7CisgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHZhbHVlMSA9IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFy
c2VyTW9kZSwgdW5pdGxlc3MpOworICAgIGlmICghdmFsdWUxKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlMiA9IGNvbnN1bWVQb3NpdGlvbkNvbXBv
bmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpOworICAgIGlmICghdmFsdWUyKSB7
CisgICAgICAgIHBvc2l0aW9uRnJvbU9uZVZhbHVlKHZhbHVlMSwgcmVzdWx0WCwgcmVzdWx0WSk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gcG9zaXRpb25Gcm9tVHdv
VmFsdWVzKHZhbHVlMSwgdmFsdWUyLCByZXN1bHRYLCByZXN1bHRZKTsKK30KKworLy8gVGhpcyBz
aG91bGQgZ28gYXdheSBvbmNlIHdlIGRyb3Agc3VwcG9ydCBmb3IgLXdlYmtpdC1ncmFkaWVudAor
c3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50UG9pbnQo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgYm9vbCBob3Jpem9udGFsKQoreworICAgIGlmIChh
cmdzLnBlZWsoKS50eXBlKCkgPT0gSWRlbnRUb2tlbikgeworICAgICAgICBpZiAoKGhvcml6b250
YWwgJiYgY29uc3VtZUlkZW50PENTU1ZhbHVlTGVmdD4oYXJncykpIHx8ICghaG9yaXpvbnRhbCAm
JiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVUb3A+KGFyZ3MpKSkKKyAgICAgICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAuLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6
OlBlcmNlbnRhZ2UpOworICAgICAgICBpZiAoKGhvcml6b250YWwgJiYgY29uc3VtZUlkZW50PENT
U1ZhbHVlUmlnaHQ+KGFyZ3MpKSB8fCAoIWhvcml6b250YWwgJiYgY29uc3VtZUlkZW50PENTU1Zh
bHVlQm90dG9tPihhcmdzKSkpCisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZSgxMDAuLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBlcmNlbnRhZ2UpOwor
ICAgICAgICBpZiAoY29uc3VtZUlkZW50PENTU1ZhbHVlQ2VudGVyPihhcmdzKSkKKyAgICAgICAg
ICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDUwLiwgQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlOjpQZXJjZW50YWdlKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorICAgIENTU1ByaW1pdGl2ZVZhbHVlKiByZXN1bHQgPSBjb25zdW1lUGVyY2VudChhcmdzLCBW
YWx1ZVJhbmdlQWxsKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0gY29uc3Vt
ZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisv
LyBVc2VkIHRvIHBhcnNlIGNvbG9ycyBmb3IgLXdlYmtpdC1ncmFkaWVudCguLi4pLgorc3RhdGlj
IENTU1ZhbHVlKiBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50U3RvcENvbG9yKENTU1BhcnNlclRv
a2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAo
YXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUN1cnJlbnRjb2xvcikKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIGNvbnN1bWVDb2xvcihhcmdzLCBjc3NQYXJzZXJNb2RlKTsK
K30KKworc3RhdGljIGJvb2wgY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudENvbG9yU3RvcChDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTR3JhZGllbnRDb2xvclN0b3AmIHN0b3AsIENTU1Bh
cnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVl
aygpLmZ1bmN0aW9uSWQoKTsKKyAgICBpZiAoaWQgIT0gQ1NTVmFsdWVGcm9tICYmIGlkICE9IENT
U1ZhbHVlVG8gJiYgaWQgIT0gQ1NTVmFsdWVDb2xvclN0b3ApCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5n
ZSk7CisgICAgZG91YmxlIHBvc2l0aW9uOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZUZyb20gfHwg
aWQgPT0gQ1NTVmFsdWVUbykgeworICAgICAgICBwb3NpdGlvbiA9IChpZCA9PSBDU1NWYWx1ZUZy
b20pID8gMCA6IDE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgRENIRUNLKGlkID09IENTU1ZhbHVl
Q29sb3JTdG9wKTsKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIGFyZyA9IGFyZ3MuY29u
c3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgaWYgKGFyZy50eXBlKCkgPT0gUGVy
Y2VudGFnZVRva2VuKQorICAgICAgICAgICAgcG9zaXRpb24gPSBhcmcubnVtZXJpY1ZhbHVlKCkg
LyAxMDAuMDsKKyAgICAgICAgZWxzZSBpZiAoYXJnLnR5cGUoKSA9PSBOdW1iZXJUb2tlbikKKyAg
ICAgICAgICAgIHBvc2l0aW9uID0gYXJnLm51bWVyaWNWYWx1ZSgpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNs
dWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIHN0b3AubV9wb3NpdGlvbiA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocG9zaXRp
b24sIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyKTsKKyAgICBzdG9wLm1fY29s
b3IgPSBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50U3RvcENvbG9yKGFyZ3MsIGNzc1BhcnNlck1v
ZGUpOworICAgIHJldHVybiBzdG9wLm1fY29sb3IgJiYgYXJncy5hdEVuZCgpOworfQorCitzdGF0
aWMgQ1NTVmFsdWUqIGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIENTU0dyYWRpZW50
VmFsdWUqIHJlc3VsdCA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWVJRCBpZCA9IGFyZ3MuY29uc3Vt
ZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpOworICAgIGJvb2wgaXNEZXByZWNhdGVkUmFkaWFs
R3JhZGllbnQgPSAoaWQgPT0gQ1NTVmFsdWVSYWRpYWwpOworICAgIGlmIChpc0RlcHJlY2F0ZWRS
YWRpYWxHcmFkaWVudCkKKyAgICAgICAgcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6
Y3JlYXRlKE5vblJlcGVhdGluZywgQ1NTRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KTsKKyAgICBl
bHNlIGlmIChpZCA9PSBDU1NWYWx1ZUxpbmVhcikKKyAgICAgICAgcmVzdWx0ID0gQ1NTTGluZWFy
R3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJlcGVhdGluZywgQ1NTRGVwcmVjYXRlZExpbmVhckdy
YWRpZW50KTsKKyAgICBpZiAoIXJlc3VsdCB8fCAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVz
cGFjZShhcmdzKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcG9pbnQgPSBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50UG9pbnQoYXJncywgdHJ1ZSk7
CisgICAgaWYgKCFwb2ludCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmVzdWx0LT5z
ZXRGaXJzdFgocG9pbnQpOworICAgIHBvaW50ID0gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudFBv
aW50KGFyZ3MsIGZhbHNlKTsKKyAgICBpZiAoIXBvaW50KQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXN1bHQtPnNldEZpcnN0WShwb2ludCk7CisKKyAgICBpZiAoIWNvbnN1bWVDb21t
YUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgLy8gRm9yIHJhZGlhbCBncmFkaWVudHMgb25seSwgd2Ugbm93IGV4cGVjdCBhIG51bWVyaWMg
cmFkaXVzLgorICAgIGlmIChpc0RlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCkgeworICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogcmFkaXVzID0gY29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdl
QWxsKTsKKyAgICAgICAgaWYgKCFyYWRpdXMgfHwgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRl
c3BhY2UoYXJncykpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgdG9DU1NS
YWRpYWxHcmFkaWVudFZhbHVlKHJlc3VsdCktPnNldEZpcnN0UmFkaXVzKHJhZGl1cyk7CisgICAg
fQorCisgICAgcG9pbnQgPSBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50UG9pbnQoYXJncywgdHJ1
ZSk7CisgICAgaWYgKCFwb2ludCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmVzdWx0
LT5zZXRTZWNvbmRYKHBvaW50KTsKKyAgICBwb2ludCA9IGNvbnN1bWVEZXByZWNhdGVkR3JhZGll
bnRQb2ludChhcmdzLCBmYWxzZSk7CisgICAgaWYgKCFwb2ludCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmVzdWx0LT5zZXRTZWNvbmRZKHBvaW50KTsKKworICAgIC8vIEZvciByYWRp
YWwgZ3JhZGllbnRzIG9ubHksIHdlIG5vdyBleHBlY3QgdGhlIHNlY29uZCByYWRpdXMuCisgICAg
aWYgKGlzRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KSB7CisgICAgICAgIGlmICghY29uc3VtZUNv
bW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcmFkaXVzID0gY29uc3VtZU51bWJlcihhcmdz
LCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgaWYgKCFyYWRpdXMpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgdG9DU1NSYWRpYWxHcmFkaWVudFZhbHVlKHJlc3VsdCktPnNl
dFNlY29uZFJhZGl1cyhyYWRpdXMpOworICAgIH0KKworICAgIENTU0dyYWRpZW50Q29sb3JTdG9w
IHN0b3A7CisgICAgd2hpbGUgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykp
IHsKKyAgICAgICAgaWYgKCFjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50Q29sb3JTdG9wKGFyZ3Ms
IHN0b3AsIGNzc1BhcnNlck1vZGUpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHJlc3VsdC0+YWRkU3RvcChzdG9wKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitzdGF0aWMgYm9vbCBjb25zdW1lR3JhZGllbnRDb2xvclN0b3BzKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU0dyYWRpZW50VmFs
dWUqIGdyYWRpZW50KQoreworICAgIGJvb2wgc3VwcG9ydHNDb2xvckhpbnRzID0gZ3JhZGllbnQt
PmdyYWRpZW50VHlwZSgpID09IENTU0xpbmVhckdyYWRpZW50IHx8IGdyYWRpZW50LT5ncmFkaWVu
dFR5cGUoKSA9PSBDU1NSYWRpYWxHcmFkaWVudDsKKworICAgIC8vIFRoZSBmaXJzdCBjb2xvciBz
dG9wIGNhbm5vdCBiZSBhIGNvbG9yIGhpbnQuCisgICAgYm9vbCBwcmV2aW91c1N0b3BXYXNDb2xv
ckhpbnQgPSB0cnVlOworICAgIGRvIHsKKyAgICAgICAgQ1NTR3JhZGllbnRDb2xvclN0b3Agc3Rv
cDsKKyAgICAgICAgc3RvcC5tX2NvbG9yID0gY29uc3VtZUNvbG9yKHJhbmdlLCBjc3NQYXJzZXJN
b2RlKTsKKyAgICAgICAgLy8gVHdvIGhpbnRzIGluIGEgcm93IGFyZSBub3QgYWxsb3dlZC4KKyAg
ICAgICAgaWYgKCFzdG9wLm1fY29sb3IgJiYgKCFzdXBwb3J0c0NvbG9ySGludHMgfHwgcHJldmlv
dXNTdG9wV2FzQ29sb3JIaW50KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cHJldmlvdXNTdG9wV2FzQ29sb3JIaW50ID0gIXN0b3AubV9jb2xvcjsKKyAgICAgICAgc3RvcC5t
X3Bvc2l0aW9uID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwg
VmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGlmICghc3RvcC5tX2NvbG9yICYmICFzdG9wLm1fcG9z
aXRpb24pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGdyYWRpZW50LT5hZGRT
dG9wKHN0b3ApOworICAgIH0gd2hpbGUgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2Uo
cmFuZ2UpKTsKKworICAgIC8vIFRoZSBsYXN0IGNvbG9yIHN0b3AgY2Fubm90IGJlIGEgY29sb3Ig
aGludC4KKyAgICBpZiAocHJldmlvdXNTdG9wV2FzQ29sb3JIaW50KQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAvLyBNdXN0IGhhdmUgMiBvciBtb3JlIHN0b3BzIHRvIGJlIHZhbGlkLgor
ICAgIHJldHVybiBncmFkaWVudC0+c3RvcENvdW50KCkgPj0gMjsKK30KKworc3RhdGljIENTU1Zh
bHVlKiBjb25zdW1lRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2Um
IGFyZ3MsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgQ1NTR3JhZGllbnRSZXBlYXQgcmVw
ZWF0aW5nKQoreworICAgIENTU1JhZGlhbEdyYWRpZW50VmFsdWUqIHJlc3VsdCA9IENTU1JhZGlh
bEdyYWRpZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRpbmcsIENTU1ByZWZpeGVkUmFkaWFsR3JhZGll
bnQpOworICAgIENTU1ZhbHVlKiBjZW50ZXJYID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogY2Vu
dGVyWSA9IG51bGxwdHI7CisgICAgY29uc3VtZU9uZU9yVHdvVmFsdWVkUG9zaXRpb24oYXJncywg
Y3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBjZW50ZXJYLCBjZW50ZXJZKTsK
KyAgICBpZiAoKGNlbnRlclggfHwgY2VudGVyWSkgJiYgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1do
aXRlc3BhY2UoYXJncykpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmVzdWx0LT5z
ZXRGaXJzdFgodG9DU1NQcmltaXRpdmVWYWx1ZShjZW50ZXJYKSk7CisgICAgcmVzdWx0LT5zZXRT
ZWNvbmRYKHRvQ1NTUHJpbWl0aXZlVmFsdWUoY2VudGVyWCkpOworICAgIHJlc3VsdC0+c2V0Rmly
c3RZKHRvQ1NTUHJpbWl0aXZlVmFsdWUoY2VudGVyWSkpOworICAgIHJlc3VsdC0+c2V0U2Vjb25k
WSh0b0NTU1ByaW1pdGl2ZVZhbHVlKGNlbnRlclkpKTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBzaGFwZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUNpcmNsZSwgQ1NTVmFsdWVFbGxpcHNlPihh
cmdzKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2l6ZUtleXdvcmQgPSBjb25zdW1lSWRlbnQ8
Q1NTVmFsdWVDbG9zZXN0U2lkZSwgQ1NTVmFsdWVDbG9zZXN0Q29ybmVyLCBDU1NWYWx1ZUZhcnRo
ZXN0U2lkZSwgQ1NTVmFsdWVGYXJ0aGVzdENvcm5lciwgQ1NTVmFsdWVDb250YWluLCBDU1NWYWx1
ZUNvdmVyPihhcmdzKTsKKyAgICBpZiAoIXNoYXBlKQorICAgICAgICBzaGFwZSA9IGNvbnN1bWVJ
ZGVudDxDU1NWYWx1ZUNpcmNsZSwgQ1NTVmFsdWVFbGxpcHNlPihhcmdzKTsKKyAgICByZXN1bHQt
PnNldFNoYXBlKHNoYXBlKTsKKyAgICByZXN1bHQtPnNldFNpemluZ0JlaGF2aW9yKHNpemVLZXl3
b3JkKTsKKworICAgIC8vIE9yLCB0d28gbGVuZ3RocyBvciBwZXJjZW50YWdlcworICAgIGlmICgh
c2hhcGUgJiYgIXNpemVLZXl3b3JkKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBob3Jp
em9udGFsU2l6ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9kZSwg
VmFsdWVSYW5nZUFsbCk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2ZXJ0aWNhbFNpemUg
PSBudWxscHRyOworICAgICAgICBpZiAoaG9yaXpvbnRhbFNpemUpIHsKKyAgICAgICAgICAgIHZl
cnRpY2FsU2l6ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9kZSwg
VmFsdWVSYW5nZUFsbCk7CisgICAgICAgICAgICBpZiAoIXZlcnRpY2FsU2l6ZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGNvbnN1bWVDb21tYUluY2x1ZGlu
Z1doaXRlc3BhY2UoYXJncyk7CisgICAgICAgICAgICByZXN1bHQtPnNldEVuZEhvcml6b250YWxT
aXplKGhvcml6b250YWxTaXplKTsKKyAgICAgICAgICAgIHJlc3VsdC0+c2V0RW5kVmVydGljYWxT
aXplKHZlcnRpY2FsU2l6ZSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBjb25z
dW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpOworICAgIH0KKyAgICBpZiAoIWNvbnN1
bWVHcmFkaWVudENvbG9yU3RvcHMoYXJncywgY3NzUGFyc2VyTW9kZSwgcmVzdWx0KSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgQ1NT
VmFsdWUqIGNvbnN1bWVSYWRpYWxHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBD
U1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykK
K3sKKyAgICBDU1NSYWRpYWxHcmFkaWVudFZhbHVlKiByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVu
dFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCBDU1NSYWRpYWxHcmFkaWVudCk7CisKKyAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogc2hhcGUgPSBudWxscHRyOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBz
aXplS2V5d29yZCA9IG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGhvcml6b250YWxT
aXplID0gbnVsbHB0cjsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmVydGljYWxTaXplID0gbnVs
bHB0cjsKKworICAgIC8vIEZpcnN0IHBhcnQgb2YgZ3JhbW1hciwgdGhlIHNpemUvc2hhcGUgY2xh
dXNlOgorICAgIC8vIFsgY2lyY2xlIHx8IDxsZW5ndGg+IF0gfAorICAgIC8vIFsgZWxsaXBzZSB8
fCBbIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IF17Mn0gXSB8CisgICAgLy8gWyBbIGNpcmNsZSB8
IGVsbGlwc2VdIHx8IDxzaXplLWtleXdvcmQ+IF0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7
ICsraSkgeworICAgICAgICBpZiAoYXJncy5wZWVrKCkudHlwZSgpID09IElkZW50VG9rZW4pIHsK
KyAgICAgICAgICAgIENTU1ZhbHVlSUQgaWQgPSBhcmdzLnBlZWsoKS5pZCgpOworICAgICAgICAg
ICAgaWYgKGlkID09IENTU1ZhbHVlQ2lyY2xlIHx8IGlkID09IENTU1ZhbHVlRWxsaXBzZSkgewor
ICAgICAgICAgICAgICAgIGlmIChzaGFwZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgICAgICAgICAgc2hhcGUgPSBjb25zdW1lSWRlbnQoYXJncyk7CisgICAg
ICAgICAgICB9IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlQ2xvc2VzdFNpZGUgfHwgaWQgPT0gQ1NT
VmFsdWVDbG9zZXN0Q29ybmVyIHx8IGlkID09IENTU1ZhbHVlRmFydGhlc3RTaWRlIHx8IGlkID09
IENTU1ZhbHVlRmFydGhlc3RDb3JuZXIpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2l6ZUtleXdv
cmQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAg
IHNpemVLZXl3b3JkID0gY29uc3VtZUlkZW50KGFyZ3MpOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjZW50ZXIgPSBjb25zdW1lTGVuZ3RoT3JQ
ZXJjZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICAgICAg
aWYgKCFjZW50ZXIpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoaG9y
aXpvbnRhbFNpemUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAg
ICBob3Jpem9udGFsU2l6ZSA9IGNlbnRlcjsKKyAgICAgICAgICAgIGNlbnRlciA9IGNvbnN1bWVM
ZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAg
ICAgICAgICBpZiAoY2VudGVyKSB7CisgICAgICAgICAgICAgICAgdmVydGljYWxTaXplID0gY2Vu
dGVyOworICAgICAgICAgICAgICAgICsraTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKworICAgIC8vIFlvdSBjYW4gc3BlY2lmeSBzaXplIGFzIGEga2V5d29yZCBvciBhIGxlbmd0
aC9wZXJjZW50YWdlLCBub3QgYm90aC4KKyAgICBpZiAoc2l6ZUtleXdvcmQgJiYgaG9yaXpvbnRh
bFNpemUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIC8vIENpcmNsZXMgbXVzdCBoYXZl
IDAgb3IgMSBsZW5ndGhzLgorICAgIGlmIChzaGFwZSAmJiBzaGFwZS0+Z2V0VmFsdWVJRCgpID09
IENTU1ZhbHVlQ2lyY2xlICYmIHZlcnRpY2FsU2l6ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgLy8gRWxsaXBzZXMgbXVzdCBoYXZlIDAgb3IgMiBsZW5ndGgvcGVyY2VudGFnZXMuCisg
ICAgaWYgKHNoYXBlICYmIHNoYXBlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVFbGxpcHNlICYm
IGhvcml6b250YWxTaXplICYmICF2ZXJ0aWNhbFNpemUpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIC8vIElmIHRoZXJlJ3Mgb25seSBvbmUgc2l6ZSwgaXQgbXVzdCBiZSBhIGxlbmd0aC4K
KyAgICBpZiAoIXZlcnRpY2FsU2l6ZSAmJiBob3Jpem9udGFsU2l6ZSAmJiBob3Jpem9udGFsU2l6
ZS0+aXNQZXJjZW50YWdlKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICgoaG9y
aXpvbnRhbFNpemUgJiYgaG9yaXpvbnRhbFNpemUtPmlzQ2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRo
TGVuZ3RoKCkpCisgICAgICAgIHx8ICh2ZXJ0aWNhbFNpemUgJiYgdmVydGljYWxTaXplLT5pc0Nh
bGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICByZXN1bHQtPnNldFNoYXBlKHNoYXBlKTsKKyAgICByZXN1bHQtPnNldFNpemluZ0Jl
aGF2aW9yKHNpemVLZXl3b3JkKTsKKyAgICByZXN1bHQtPnNldEVuZEhvcml6b250YWxTaXplKGhv
cml6b250YWxTaXplKTsKKyAgICByZXN1bHQtPnNldEVuZFZlcnRpY2FsU2l6ZSh2ZXJ0aWNhbFNp
emUpOworCisgICAgQ1NTVmFsdWUqIGNlbnRlclggPSBudWxscHRyOworICAgIENTU1ZhbHVlKiBj
ZW50ZXJZID0gbnVsbHB0cjsKKyAgICBpZiAoYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF0
KSB7CisgICAgICAgIGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAg
Y29uc3VtZVBvc2l0aW9uKGFyZ3MsIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJp
ZCwgY2VudGVyWCwgY2VudGVyWSk7CisgICAgICAgIGlmICghKGNlbnRlclggJiYgY2VudGVyWSkp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmVzdWx0LT5zZXRGaXJzdFgo
Y2VudGVyWCk7CisgICAgICAgIHJlc3VsdC0+c2V0Rmlyc3RZKGNlbnRlclkpOworICAgICAgICAv
LyBSaWdodCBub3csIENTUyByYWRpYWwgZ3JhZGllbnRzIGhhdmUgdGhlIHNhbWUgc3RhcnQgYW5k
IGVuZCBjZW50ZXJzLgorICAgICAgICByZXN1bHQtPnNldFNlY29uZFgoY2VudGVyWCk7CisgICAg
ICAgIHJlc3VsdC0+c2V0U2Vjb25kWShjZW50ZXJZKTsKKyAgICB9CisKKyAgICBpZiAoKHNoYXBl
IHx8IHNpemVLZXl3b3JkIHx8IGhvcml6b250YWxTaXplIHx8IGNlbnRlclggfHwgY2VudGVyWSkg
JiYgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIGlmICghY29uc3VtZUdyYWRpZW50Q29sb3JTdG9wcyhhcmdzLCBjc3NQ
YXJzZXJNb2RlLCByZXN1bHQpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVMaW5lYXJHcmFkaWVudChDU1NQ
YXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU0dy
YWRpZW50UmVwZWF0IHJlcGVhdGluZywgQ1NTR3JhZGllbnRUeXBlIGdyYWRpZW50VHlwZSkKK3sK
KyAgICBDU1NMaW5lYXJHcmFkaWVudFZhbHVlKiByZXN1bHQgPSBDU1NMaW5lYXJHcmFkaWVudFZh
bHVlOjpjcmVhdGUocmVwZWF0aW5nLCBncmFkaWVudFR5cGUpOworCisgICAgYm9vbCBleHBlY3RD
b21tYSA9IHRydWU7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGFuZ2xlID0gY29uc3VtZUFuZ2xl
KGFyZ3MpOworICAgIGlmIChhbmdsZSkgeworICAgICAgICByZXN1bHQtPnNldEFuZ2xlKGFuZ2xl
KTsKKyAgICB9IGVsc2UgaWYgKGdyYWRpZW50VHlwZSA9PSBDU1NQcmVmaXhlZExpbmVhckdyYWRp
ZW50IHx8IGNvbnN1bWVJZGVudDxDU1NWYWx1ZVRvPihhcmdzKSkgeworICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogZW5kWCA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmln
aHQ+KGFyZ3MpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogZW5kWSA9IGNvbnN1bWVJZGVu
dDxDU1NWYWx1ZUJvdHRvbSwgQ1NTVmFsdWVUb3A+KGFyZ3MpOworICAgICAgICBpZiAoIWVuZFgg
JiYgIWVuZFkpIHsKKyAgICAgICAgICAgIGlmIChncmFkaWVudFR5cGUgPT0gQ1NTTGluZWFyR3Jh
ZGllbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBlbmRZ
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVUb3ApOworICAg
ICAgICAgICAgZXhwZWN0Q29tbWEgPSBmYWxzZTsKKyAgICAgICAgfSBlbHNlIGlmICghZW5kWCkg
eworICAgICAgICAgICAgZW5kWCA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUxlZnQsIENTU1ZhbHVl
UmlnaHQ+KGFyZ3MpOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0LT5zZXRGaXJzdFgoZW5k
WCk7CisgICAgICAgIHJlc3VsdC0+c2V0Rmlyc3RZKGVuZFkpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGV4cGVjdENvbW1hID0gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGV4cGVjdENvbW1hICYm
ICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBpZiAoIWNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMoYXJncywgY3NzUGFy
c2VyTW9kZSwgcmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworQ1NTVmFsdWUqIGNvbnN1bWVJbWFnZU9yTm9uZShDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KQoreworICAgIGlmIChyYW5nZS5w
ZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQo
cmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lSW1hZ2UocmFuZ2UsIGNvbnRleHQpOworfQorCitz
dGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDcm9zc0ZhZGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJn
cywgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KQoreworICAgIENTU1ZhbHVlKiBmcm9tSW1hZ2VW
YWx1ZSA9IGNvbnN1bWVJbWFnZU9yTm9uZShhcmdzLCBjb250ZXh0KTsKKyAgICBpZiAoIWZyb21J
bWFnZVZhbHVlIHx8ICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogdG9JbWFnZVZhbHVlID0gY29uc3Vt
ZUltYWdlT3JOb25lKGFyZ3MsIGNvbnRleHQpOworICAgIGlmICghdG9JbWFnZVZhbHVlIHx8ICFj
b25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwZXJjZW50YWdlID0gbnVsbHB0cjsKKyAg
ICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgcGVyY2VudGFnZUFyZyA9IGFyZ3MuY29uc3VtZUluY2x1
ZGluZ1doaXRlc3BhY2UoKTsKKyAgICBpZiAocGVyY2VudGFnZUFyZy50eXBlKCkgPT0gUGVyY2Vu
dGFnZVRva2VuKQorICAgICAgICBwZXJjZW50YWdlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShjbGFtcFRvPGRvdWJsZT4ocGVyY2VudGFnZUFyZy5udW1lcmljVmFsdWUoKSAvIDEwMCwgMCwg
MSksIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyKTsKKyAgICBlbHNlIGlmIChw
ZXJjZW50YWdlQXJnLnR5cGUoKSA9PSBOdW1iZXJUb2tlbikKKyAgICAgICAgcGVyY2VudGFnZSA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoY2xhbXBUbzxkb3VibGU+KHBlcmNlbnRhZ2VBcmcu
bnVtZXJpY1ZhbHVlKCksIDAsIDEpLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6Ok51bWJl
cik7CisKKyAgICBpZiAoIXBlcmNlbnRhZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IHJldHVybiBDU1NDcm9zc2ZhZGVWYWx1ZTo6Y3JlYXRlKGZyb21JbWFnZVZhbHVlLCB0b0ltYWdl
VmFsdWUsIHBlcmNlbnRhZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVQYWludChD
U1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQpCit7Cisg
ICAgRENIRUNLKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc1BhaW50QVBJRW5hYmxlZCgpKTsK
KworICAgIENTU0N1c3RvbUlkZW50VmFsdWUqIG5hbWUgPSBjb25zdW1lQ3VzdG9tSWRlbnQoYXJn
cyk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVy
biBDU1NQYWludFZhbHVlOjpjcmVhdGUobmFtZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29u
c3VtZUdlbmVyYXRlZEltYWdlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJD
b250ZXh0IGNvbnRleHQpCit7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5mdW5j
dGlvbklkKCk7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSByYW5nZTsKKyAg
ICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2VDb3B5KTsK
KyAgICBDU1NWYWx1ZSogcmVzdWx0ID0gbnVsbHB0cjsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVS
YWRpYWxHcmFkaWVudCkgeworICAgICAgICByZXN1bHQgPSBjb25zdW1lUmFkaWFsR3JhZGllbnQo
YXJncywgY29udGV4dC5tb2RlKCksIE5vblJlcGVhdGluZyk7CisgICAgfSBlbHNlIGlmIChpZCA9
PSBDU1NWYWx1ZVJlcGVhdGluZ1JhZGlhbEdyYWRpZW50KSB7CisgICAgICAgIHJlc3VsdCA9IGNv
bnN1bWVSYWRpYWxHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUoKSwgUmVwZWF0aW5nKTsKKyAg
ICB9IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0TGluZWFyR3JhZGllbnQpIHsKKyAgICAg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHNlbmQgYSBkZXByZWNhdGlvbiBtZXNzYWdlLgorICAg
ICAgICBpZiAoY29udGV4dC51c2VDb3VudGVyKCkpCisgICAgICAgICAgICBjb250ZXh0LnVzZUNv
dW50ZXIoKS0+Y291bnQoVXNlQ291bnRlcjo6RGVwcmVjYXRlZFdlYktpdExpbmVhckdyYWRpZW50
KTsKKyAgICAgICAgcmVzdWx0ID0gY29uc3VtZUxpbmVhckdyYWRpZW50KGFyZ3MsIGNvbnRleHQu
bW9kZSgpLCBOb25SZXBlYXRpbmcsIENTU1ByZWZpeGVkTGluZWFyR3JhZGllbnQpOworICAgIH0g
ZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRSZXBlYXRpbmdMaW5lYXJHcmFkaWVudCkgewor
ICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgc2VuZCBhIGRlcHJlY2F0aW9uIG1lc3NhZ2Uu
CisgICAgICAgIGlmIChjb250ZXh0LnVzZUNvdW50ZXIoKSkKKyAgICAgICAgICAgIGNvbnRleHQu
dXNlQ291bnRlcigpLT5jb3VudChVc2VDb3VudGVyOjpEZXByZWNhdGVkV2ViS2l0UmVwZWF0aW5n
TGluZWFyR3JhZGllbnQpOworICAgICAgICByZXN1bHQgPSBjb25zdW1lTGluZWFyR3JhZGllbnQo
YXJncywgY29udGV4dC5tb2RlKCksIFJlcGVhdGluZywgQ1NTUHJlZml4ZWRMaW5lYXJHcmFkaWVu
dCk7CisgICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVJlcGVhdGluZ0xpbmVhckdyYWRpZW50
KSB7CisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVMaW5lYXJHcmFkaWVudChhcmdzLCBjb250ZXh0
Lm1vZGUoKSwgUmVwZWF0aW5nLCBDU1NMaW5lYXJHcmFkaWVudCk7CisgICAgfSBlbHNlIGlmIChp
ZCA9PSBDU1NWYWx1ZUxpbmVhckdyYWRpZW50KSB7CisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVM
aW5lYXJHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUoKSwgTm9uUmVwZWF0aW5nLCBDU1NMaW5l
YXJHcmFkaWVudCk7CisgICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdEdyYWRpZW50
KSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBzZW5kIGEgZGVwcmVjYXRpb24gbWVz
c2FnZS4KKyAgICAgICAgaWYgKGNvbnRleHQudXNlQ291bnRlcigpKQorICAgICAgICAgICAgY29u
dGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkRlcHJlY2F0ZWRXZWJLaXRHcmFk
aWVudCk7CisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnQoYXJncywg
Y29udGV4dC5tb2RlKCkpOworICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRSYWRp
YWxHcmFkaWVudCkgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgc2VuZCBhIGRlcHJl
Y2F0aW9uIG1lc3NhZ2UuCisgICAgICAgIGlmIChjb250ZXh0LnVzZUNvdW50ZXIoKSkKKyAgICAg
ICAgICAgIGNvbnRleHQudXNlQ291bnRlcigpLT5jb3VudChVc2VDb3VudGVyOjpEZXByZWNhdGVk
V2ViS2l0UmFkaWFsR3JhZGllbnQpOworICAgICAgICByZXN1bHQgPSBjb25zdW1lRGVwcmVjYXRl
ZFJhZGlhbEdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBOb25SZXBlYXRpbmcpOworICAg
IH0gZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRSZXBlYXRpbmdSYWRpYWxHcmFkaWVudCkg
eworICAgICAgICBpZiAoY29udGV4dC51c2VDb3VudGVyKCkpCisgICAgICAgICAgICBjb250ZXh0
LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291bnRlcjo6RGVwcmVjYXRlZFdlYktpdFJlcGVhdGlu
Z1JhZGlhbEdyYWRpZW50KTsKKyAgICAgICAgcmVzdWx0ID0gY29uc3VtZURlcHJlY2F0ZWRSYWRp
YWxHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUoKSwgUmVwZWF0aW5nKTsKKyAgICB9IGVsc2Ug
aWYgKGlkID09IENTU1ZhbHVlV2Via2l0Q3Jvc3NGYWRlKSB7CisgICAgICAgIHJlc3VsdCA9IGNv
bnN1bWVDcm9zc0ZhZGUoYXJncywgY29udGV4dCk7CisgICAgfSBlbHNlIGlmIChpZCA9PSBDU1NW
YWx1ZVBhaW50KSB7CisgICAgICAgIHJlc3VsdCA9IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNz
c1BhaW50QVBJRW5hYmxlZCgpID8gY29uc3VtZVBhaW50KGFyZ3MsIGNvbnRleHQpIDogbnVsbHB0
cjsKKyAgICB9CisgICAgaWYgKCFyZXN1bHQgfHwgIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmFuZ2UgPSByYW5nZUNvcHk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworc3RhdGljIENTU1ZhbHVlKiBjcmVhdGVDU1NJbWFnZVZhbHVlV2l0aFJlZmVycmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgcmF3VmFsdWUsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRl
eHQpCit7CisgICAgQ1NTVmFsdWUqIGltYWdlVmFsdWUgPSBDU1NJbWFnZVZhbHVlOjpjcmVhdGUo
cmF3VmFsdWUsIGNvbnRleHQuY29tcGxldGVVUkwocmF3VmFsdWUpKTsKKyAgICB0b0NTU0ltYWdl
VmFsdWUoaW1hZ2VWYWx1ZSktPnNldFJlZmVycmVyKGNvbnRleHQucmVmZXJyZXIoKSk7CisgICAg
cmV0dXJuIGltYWdlVmFsdWU7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUltYWdlU2V0
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250
ZXh0KQoreworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2VDb3B5ID0gcmFuZ2U7CisgICAg
Q1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlQ29weSk7Cisg
ICAgQ1NTSW1hZ2VTZXRWYWx1ZSogaW1hZ2VTZXQgPSBDU1NJbWFnZVNldFZhbHVlOjpjcmVhdGUo
KTsKKyAgICBkbyB7CisgICAgICAgIEF0b21pY1N0cmluZyB1cmxWYWx1ZSA9IGNvbnN1bWVVcmxB
c1N0cmluZ1ZpZXcoYXJncykudG9BdG9taWNTdHJpbmcoKTsKKyAgICAgICAgaWYgKHVybFZhbHVl
LmlzTnVsbCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgQ1NTVmFs
dWUqIGltYWdlID0gY3JlYXRlQ1NTSW1hZ2VWYWx1ZVdpdGhSZWZlcnJlcih1cmxWYWx1ZSwgY29u
dGV4dCk7CisgICAgICAgIGltYWdlU2V0LT5hcHBlbmQoKmltYWdlKTsKKworICAgICAgICBjb25z
dCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNl
KCk7CisgICAgICAgIGlmICh0b2tlbi50eXBlKCkgIT0gRGltZW5zaW9uVG9rZW4pCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKHRva2VuLnZhbHVlKCkgIT0gIngiKQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIERDSEVDSyh0b2tlbi51bml0VHlw
ZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6VW5rbm93bik7CisgICAgICAgIGRv
dWJsZSBpbWFnZVNjYWxlRmFjdG9yID0gdG9rZW4ubnVtZXJpY1ZhbHVlKCk7CisgICAgICAgIGlm
IChpbWFnZVNjYWxlRmFjdG9yIDw9IDApCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgaW1hZ2VTZXQtPmFwcGVuZCgqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShpbWFnZVNj
YWxlRmFjdG9yLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6Ok51bWJlcikpOworICAgIH0g
d2hpbGUgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpOworICAgIGlmICgh
YXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByYW5nZSA9IHJhbmdl
Q29weTsKKyAgICByZXR1cm4gaW1hZ2VTZXQ7Cit9CisKK3N0YXRpYyBib29sIGlzR2VuZXJhdGVk
SW1hZ2UoQ1NTVmFsdWVJRCBpZCkKK3sKKyAgICByZXR1cm4gaWQgPT0gQ1NTVmFsdWVMaW5lYXJH
cmFkaWVudCB8fCBpZCA9PSBDU1NWYWx1ZVJhZGlhbEdyYWRpZW50CisgICAgICAgIHx8IGlkID09
IENTU1ZhbHVlUmVwZWF0aW5nTGluZWFyR3JhZGllbnQgfHwgaWQgPT0gQ1NTVmFsdWVSZXBlYXRp
bmdSYWRpYWxHcmFkaWVudAorICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdExpbmVhckdy
YWRpZW50IHx8IGlkID09IENTU1ZhbHVlV2Via2l0UmFkaWFsR3JhZGllbnQKKyAgICAgICAgfHwg
aWQgPT0gQ1NTVmFsdWVXZWJraXRSZXBlYXRpbmdMaW5lYXJHcmFkaWVudCB8fCBpZCA9PSBDU1NW
YWx1ZVdlYmtpdFJlcGVhdGluZ1JhZGlhbEdyYWRpZW50CisgICAgICAgIHx8IGlkID09IENTU1Zh
bHVlV2Via2l0R3JhZGllbnQgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRDcm9zc0ZhZGUgfHwgaWQg
PT0gQ1NTVmFsdWVQYWludDsKK30KKworQ1NTVmFsdWUqIGNvbnN1bWVJbWFnZShDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0LCBDb25zdW1lR2VuZXJh
dGVkSW1hZ2UgZ2VuZXJhdGVkSW1hZ2UpCit7CisgICAgQXRvbWljU3RyaW5nIHVyaSA9IGNvbnN1
bWVVcmxBc1N0cmluZ1ZpZXcocmFuZ2UpLnRvQXRvbWljU3RyaW5nKCk7CisgICAgaWYgKCF1cmku
aXNOdWxsKCkpCisgICAgICAgIHJldHVybiBjcmVhdGVDU1NJbWFnZVZhbHVlV2l0aFJlZmVycmVy
KHVyaSwgY29udGV4dCk7CisgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gRnVuY3Rpb25U
b2tlbikgeworICAgICAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQo
KTsKKyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0SW1hZ2VTZXQpCisgICAgICAgICAg
ICByZXR1cm4gY29uc3VtZUltYWdlU2V0KHJhbmdlLCBjb250ZXh0KTsKKyAgICAgICAgaWYgKGdl
bmVyYXRlZEltYWdlID09IENvbnN1bWVHZW5lcmF0ZWRJbWFnZTo6QWxsb3cgJiYgaXNHZW5lcmF0
ZWRJbWFnZShpZCkpCisgICAgICAgICAgICByZXR1cm4gY29uc3VtZUdlbmVyYXRlZEltYWdlKHJh
bmdlLCBjb250ZXh0KTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIENTU1Byb3BlcnR5UGFyc2VySGVscGVycworKi8KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhl
bHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3Bl
cnR5UGFyc2VySGVscGVycy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMjEgQEAKKy8vIENvcHlyaWdodCAyMDE2IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0
OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
Ly8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisv
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisKKyNpZm5kZWYgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzX2gKKyNkZWZpbmUgQ1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzX2gKKworLy8gRklYTUUtTkVXUEFSU0VSICNpbmNsdWRlICJDU1NDdXN0
b21JZGVudFZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRl
ICJDU1NQYXJzZXJNb2RlLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIgorI2lu
Y2x1ZGUgIkxlbmd0aC5oIiAvLyBGb3IgVmFsdWVSYW5nZQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIENTU1N0cmluZ1ZhbHVlOworY2xhc3MgQ1NTVVJJVmFsdWU7CitjbGFzcyBDU1NW
YWx1ZVBhaXI7CisKKy8vIFdoZW4gdGhlc2UgZnVuY3Rpb25zIGFyZSBzdWNjZXNzZnVsLCB0aGV5
IHdpbGwgY29uc3VtZSBhbGwgdGhlIHJlbGV2YW50CisvLyB0b2tlbnMgZnJvbSB0aGUgcmFuZ2Ug
YW5kIGFsc28gY29uc3VtZSBhbnkgd2hpdGVzcGFjZSB3aGljaCBmb2xsb3dzLiBXaGVuCisvLyB0
aGUgc3RhcnQgb2YgdGhlIHJhbmdlIGRvZXNuJ3QgbWF0Y2ggdGhlIHR5cGUgd2UncmUgbG9va2lu
ZyBmb3IsIHRoZSByYW5nZQorLy8gd2lsbCBub3QgYmUgbW9kaWZpZWQuCituYW1lc3BhY2UgQ1NT
UHJvcGVydHlQYXJzZXJIZWxwZXJzIHsKKworLy8gVE9ETyh0aW1sb2gpOiBUaGVzZSBzaG91bGQg
cHJvYmFibHkganVzdCBiZSBjb25zdW1lQ29tbWEgYW5kIGNvbnN1bWVTbGFzaC4KK2Jvb2wgY29u
c3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShDU1NQYXJzZXJUb2tlblJhbmdlJik7Citib29s
IGNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwor
Ly8gY29uc3VtZUZ1bmN0aW9uIGV4cGVjdHMgdGhlIHJhbmdlIHN0YXJ0cyB3aXRoIGEgRnVuY3Rp
b25Ub2tlbi4KK0NTU1BhcnNlclRva2VuUmFuZ2UgY29uc3VtZUZ1bmN0aW9uKENTU1BhcnNlclRv
a2VuUmFuZ2UmKTsKKworZW51bSBjbGFzcyBVbml0bGVzc1F1aXJrIHsKKyAgICBBbGxvdywKKyAg
ICBGb3JiaWQKK307CisKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lSW50ZWdlcihDU1NQYXJz
ZXJUb2tlblJhbmdlJiwgZG91YmxlIG1pbmltdW1WYWx1ZSA9IC1zdGQ6Om51bWVyaWNfbGltaXRz
PGRvdWJsZT46Om1heCgpKTsKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lUG9zaXRpdmVJbnRl
Z2VyKENTU1BhcnNlclRva2VuUmFuZ2UmKTsKK2Jvb2wgY29uc3VtZU51bWJlclJhdyhDU1NQYXJz
ZXJUb2tlblJhbmdlJiwgZG91YmxlJiByZXN1bHQpOworQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1
bWVOdW1iZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIFZhbHVlUmFuZ2UpOworQ1NTUHJpbWl0aXZl
VmFsdWUqIGNvbnN1bWVMZW5ndGgoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUs
IFZhbHVlUmFuZ2UsIFVuaXRsZXNzUXVpcmsgPSBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworQ1NT
UHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVQZXJjZW50KENTU1BhcnNlclRva2VuUmFuZ2UmLCBWYWx1
ZVJhbmdlKTsKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KENTU1Bh
cnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlLCBVbml0bGVzc1F1aXJr
ID0gVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lQW5n
bGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVUaW1l
KENTU1BhcnNlclRva2VuUmFuZ2UmLCBWYWx1ZVJhbmdlKTsKKworQ1NTUHJpbWl0aXZlVmFsdWUq
IGNvbnN1bWVJZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJik7CitDU1NQcmltaXRpdmVWYWx1ZSog
Y29uc3VtZUlkZW50UmFuZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1ZhbHVlSUQgbG93ZXIs
IENTU1ZhbHVlSUQgdXBwZXIpOwordGVtcGxhdGU8Q1NTVmFsdWVJRCwgQ1NTVmFsdWVJRC4uLj4g
aW5saW5lIGJvb2wgaWRlbnRNYXRjaGVzKENTU1ZhbHVlSUQgaWQpOwordGVtcGxhdGU8Q1NTVmFs
dWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUlkZW50KENT
U1BhcnNlclRva2VuUmFuZ2UmKTsKKworLy8gRklYTUUtTkVXUEFSU0VSIENTU0N1c3RvbUlkZW50
VmFsdWUqIGNvbnN1bWVDdXN0b21JZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJik7CitDU1NTdHJp
bmdWYWx1ZSogY29uc3VtZVN0cmluZyhDU1NQYXJzZXJUb2tlblJhbmdlJik7CitTdHJpbmdWaWV3
IGNvbnN1bWVVcmxBc1N0cmluZ1ZpZXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworQ1NTVVJJVmFs
dWUqIGNvbnN1bWVVcmwoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworCitDU1NWYWx1ZSogY29uc3Vt
ZUNvbG9yKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBib29sIGFjY2VwdFF1
aXJreUNvbG9ycyA9IGZhbHNlKTsKKworQ1NTVmFsdWVQYWlyKiBjb25zdW1lUG9zaXRpb24oQ1NT
UGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmspOworYm9vbCBj
b25zdW1lUG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIFVuaXRs
ZXNzUXVpcmssIENTU1ZhbHVlKiYgcmVzdWx0WCwgQ1NTVmFsdWUqJiByZXN1bHRZKTsKK2Jvb2wg
Y29uc3VtZU9uZU9yVHdvVmFsdWVkUG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1Bh
cnNlck1vZGUsIFVuaXRsZXNzUXVpcmssIENTU1ZhbHVlKiYgcmVzdWx0WCwgQ1NTVmFsdWUqJiBy
ZXN1bHRZKTsKKworZW51bSBjbGFzcyBDb25zdW1lR2VuZXJhdGVkSW1hZ2UgeworICAgIEFsbG93
LAorICAgIEZvcmJpZAorfTsKKworQ1NTVmFsdWUqIGNvbnN1bWVJbWFnZShDU1NQYXJzZXJUb2tl
blJhbmdlJiwgQ1NTUGFyc2VyQ29udGV4dCwgQ29uc3VtZUdlbmVyYXRlZEltYWdlID0gQ29uc3Vt
ZUdlbmVyYXRlZEltYWdlOjpBbGxvdyk7CitDU1NWYWx1ZSogY29uc3VtZUltYWdlT3JOb25lKENT
U1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJDb250ZXh0KTsKKworLy8gVGVtcGxhdGUgaW1w
bGVtZW50YXRpb25zIGFyZSBhdCB0aGUgYm90dG9tIG9mIHRoZSBmaWxlIGZvciByZWFkYWJpbGl0
eS4KKwordGVtcGxhdGU8dHlwZW5hbWUuLi4gZW1wdHlCYXNlQ2FzZT4gaW5saW5lIGJvb2wgaWRl
bnRNYXRjaGVzKENTU1ZhbHVlSUQpIHsgcmV0dXJuIGZhbHNlOyB9Cit0ZW1wbGF0ZTxDU1NWYWx1
ZUlEIGhlYWQsIENTU1ZhbHVlSUQuLi4gdGFpbD4gaW5saW5lIGJvb2wgaWRlbnRNYXRjaGVzKENT
U1ZhbHVlSUQgaWQpCit7CisgICAgcmV0dXJuIGlkID09IGhlYWQgfHwgaWRlbnRNYXRjaGVzPHRh
aWwuLi4+KGlkKTsKK30KKworLy8gRklYTUUtTkVXUEFSU0VSIC0gY29udmVydGVkIHRvIGEgUmVm
UHRyIHJldHVybiB0eXBlIGZyb20gYSByYXcgcHRyLgordGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBu
YW1lcz4gUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lSWRlbnQoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgIT0gSWRlbnRU
b2tlbiB8fCAhaWRlbnRNYXRjaGVzPG5hbWVzLi4uPihyYW5nZS5wZWVrKCkuaWQoKSkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
SWRlbnRpZmllcihyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCkpOworfQor
CitzdGF0aWMgaW5saW5lIGJvb2wgaXNDU1NXaWRlS2V5d29yZChjb25zdCBDU1NWYWx1ZUlEJiBp
ZCkKK3sKKyAgICByZXR1cm4gaWQgPT0gQ1NTVmFsdWVJbml0aWFsIHx8IGlkID09IENTU1ZhbHVl
SW5oZXJpdCB8fCBpZCA9PSBDU1NWYWx1ZVVuc2V0IHx8IGlkID09IENTU1ZhbHVlRGVmYXVsdDsK
K30KKworfSAvLyBuYW1lc3BhY2UgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzCisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENTU1Byb3BlcnR5UGFyc2VySGVscGVyc19oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDg4OCBAQAorLy8gQ29weXJpZ2h0IDIwMTUgVGhlIENocm9t
aXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NU
b2tlbml6ZXIuaCIKKworI2luY2x1ZGUgIkNTU1BhcnNlcklkaW9tcy5oIgorI2luY2x1ZGUgIkNT
U1BhcnNlck9ic2VydmVyV3JhcHBlci5oIgorI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuUmFuZ2Uu
aCIKKyNpbmNsdWRlICJDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5oIgorI2luY2x1ZGUgIkhUTUxQ
YXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NTU1Rva2VuaXplcjo6U2NvcGU6OlNjb3BlKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQorOiBtX3N0cmluZyhzdHJpbmcpCit7CisgICAgLy8gQWNjb3JkaW5n
IHRvIHRoZSBzcGVjLCB3ZSBzaG91bGQgcGVyZm9ybSBwcmVwcm9jZXNzaW5nIGhlcmUuCisgICAg
Ly8gU2VlOiBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3Mtc3ludGF4LyNpbnB1dC1wcmVwcm9j
ZXNzaW5nCisgICAgLy8KKyAgICAvLyBIb3dldmVyLCB3ZSBjYW4gc2tpcCB0aGlzIHN0ZXAgc2lu
Y2U6CisgICAgLy8gKiBXZSdyZSB1c2luZyBIVE1MIHNwYWNlcyAod2hpY2ggYWNjZXB0IFxyIGFu
ZCBcZiBhcyBhIHZhbGlkIHdoaXRlIHNwYWNlKQorICAgIC8vICogRG8gbm90IGNvdW50IHdoaXRl
IHNwYWNlcworICAgIC8vICogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW06Om5leHRJbnB1dENoYXIo
KSByZXBsYWNlcyBOVUxMcyBmb3IgcmVwbGFjZW1lbnQgY2hhcmFjdGVycworCisgICAgaWYgKHN0
cmluZy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRvIGF2b2lkIHJlc2l6
aW5nIHdlIGVyciBvbiB0aGUgc2lkZSBvZiByZXNlcnZpbmcgdG9vIG11Y2ggc3BhY2UuCisgICAg
Ly8gTW9zdCBzdHJpbmdzIHdlIHRva2VuaXplIGhhdmUgYWJvdXQgMy41IHRvIDUgY2hhcmFjdGVy
cyBwZXIgdG9rZW4uCisgICAgbV90b2tlbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzdHJpbmcu
bGVuZ3RoKCkgLyAzKTsKKworICAgIENTU1Rva2VuaXplcklucHV0U3RyZWFtIGlucHV0KHN0cmlu
Zyk7CisgICAgQ1NTVG9rZW5pemVyIHRva2VuaXplcihpbnB1dCwgKnRoaXMpOworICAgIHdoaWxl
ICh0cnVlKSB7CisgICAgICAgIENTU1BhcnNlclRva2VuIHRva2VuID0gdG9rZW5pemVyLm5leHRU
b2tlbigpOworICAgICAgICBpZiAodG9rZW4udHlwZSgpID09IENvbW1lbnRUb2tlbikKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAodG9rZW4udHlwZSgpID09IEVPRlRva2VuKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3Rva2Vucy5hcHBlbmQodG9rZW4pOworICAg
IH0KK30KKworQ1NTVG9rZW5pemVyOjpTY29wZTo6U2NvcGUoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IENTU1BhcnNlck9ic2VydmVyV3JhcHBlciYgd3JhcHBlcikKKzogbV9zdHJpbmcoc3RyaW5nKQor
eworICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBDU1NU
b2tlbml6ZXJJbnB1dFN0cmVhbSBpbnB1dChzdHJpbmcpOworICAgIENTU1Rva2VuaXplciB0b2tl
bml6ZXIoaW5wdXQsICp0aGlzKTsKKworICAgIHVuc2lnbmVkIG9mZnNldCA9IDA7CisgICAgd2hp
bGUgKHRydWUpIHsKKyAgICAgICAgQ1NTUGFyc2VyVG9rZW4gdG9rZW4gPSB0b2tlbml6ZXIubmV4
dFRva2VuKCk7CisgICAgICAgIGlmICh0b2tlbi50eXBlKCkgPT0gRU9GVG9rZW4pCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBDb21tZW50VG9rZW4pIHsK
KyAgICAgICAgICAgIHdyYXBwZXIuYWRkQ29tbWVudChvZmZzZXQsIGlucHV0Lm9mZnNldCgpLCBt
X3Rva2Vucy5zaXplKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV90b2tlbnMu
YXBwZW5kKHRva2VuKTsKKyAgICAgICAgICAgIHdyYXBwZXIuYWRkVG9rZW4ob2Zmc2V0KTsKKyAg
ICAgICAgfQorICAgICAgICBvZmZzZXQgPSBpbnB1dC5vZmZzZXQoKTsKKyAgICB9CisKKyAgICB3
cmFwcGVyLmFkZFRva2VuKG9mZnNldCk7CisgICAgd3JhcHBlci5maW5hbGl6ZUNvbnN0cnVjdGlv
bihtX3Rva2Vucy5iZWdpbigpKTsKK30KKworQ1NTUGFyc2VyVG9rZW5SYW5nZSBDU1NUb2tlbml6
ZXI6OlNjb3BlOjp0b2tlblJhbmdlKCkKK3sKKyAgICByZXR1cm4gbV90b2tlbnM7Cit9CisKK3Vu
c2lnbmVkIENTU1Rva2VuaXplcjo6U2NvcGU6OnRva2VuQ291bnQoKQoreworICAgIHJldHVybiBt
X3Rva2Vucy5zaXplKCk7Cit9CisKK3N0YXRpYyBib29sIGlzTmV3TGluZShVQ2hhciBjYykKK3sK
KyAgICAvLyBXZSBjaGVjayBcciBhbmQgXGYgaGVyZSwgc2luY2Ugd2UgaGF2ZSBubyBwcmVwcm9j
ZXNzaW5nIHN0YWdlCisgICAgcmV0dXJuIChjYyA9PSAnXHInIHx8IGNjID09ICdcbicgfHwgY2Mg
PT0gJ1xmJyk7Cit9CisKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1zeW50YXgvI2No
ZWNrLWlmLXR3by1jb2RlLXBvaW50cy1hcmUtYS12YWxpZC1lc2NhcGUKK3N0YXRpYyBib29sIHR3
b0NoYXJzQXJlVmFsaWRFc2NhcGUoVUNoYXIgZmlyc3QsIFVDaGFyIHNlY29uZCkKK3sKKyAgICBy
ZXR1cm4gZmlyc3QgPT0gJ1xcJyAmJiAhaXNOZXdMaW5lKHNlY29uZCk7Cit9CisKK0NTU1Rva2Vu
aXplcjo6Q1NTVG9rZW5pemVyKENTU1Rva2VuaXplcklucHV0U3RyZWFtJiBpbnB1dFN0cmVhbSwg
U2NvcGUmIHNjb3BlKQorICAgIDogbV9pbnB1dChpbnB1dFN0cmVhbSkKKyAgICAsIG1fc2NvcGUo
c2NvcGUpCit7Cit9CisKK3ZvaWQgQ1NTVG9rZW5pemVyOjpyZWNvbnN1bWUoVUNoYXIgYykKK3sK
KyAgICBtX2lucHV0LnB1c2hCYWNrKGMpOworfQorCitVQ2hhciBDU1NUb2tlbml6ZXI6OmNvbnN1
bWUoKQoreworICAgIFVDaGFyIGN1cnJlbnQgPSBtX2lucHV0Lm5leHRJbnB1dENoYXIoKTsKKyAg
ICBtX2lucHV0LmFkdmFuY2UoKTsKKyAgICByZXR1cm4gY3VycmVudDsKK30KKworQ1NTUGFyc2Vy
VG9rZW4gQ1NTVG9rZW5pemVyOjp3aGl0ZVNwYWNlKFVDaGFyIC8qY2MqLykKK3sKKyAgICBtX2lu
cHV0LmFkdmFuY2VVbnRpbE5vbldoaXRlc3BhY2UoKTsKKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9r
ZW4oV2hpdGVzcGFjZVRva2VuKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpi
bG9ja1N0YXJ0KENTU1BhcnNlclRva2VuVHlwZSB0eXBlKQoreworICAgIG1fYmxvY2tTdGFjay5h
cHBlbmQodHlwZSk7CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKHR5cGUsIENTU1BhcnNlclRv
a2VuOjpCbG9ja1N0YXJ0KTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpibG9j
a1N0YXJ0KENTU1BhcnNlclRva2VuVHlwZSBibG9ja1R5cGUsIENTU1BhcnNlclRva2VuVHlwZSB0
eXBlLCBTdHJpbmdWaWV3IG5hbWUpCit7CisgICAgbV9ibG9ja1N0YWNrLmFwcGVuZChibG9ja1R5
cGUpOworICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbih0eXBlLCBuYW1lLCBDU1NQYXJzZXJUb2tl
bjo6QmxvY2tTdGFydCk7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6YmxvY2tF
bmQoQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIENTU1BhcnNlclRva2VuVHlwZSBzdGFydFR5cGUp
Cit7CisgICAgaWYgKCFtX2Jsb2NrU3RhY2suaXNFbXB0eSgpICYmIG1fYmxvY2tTdGFjay5sYXN0
KCkgPT0gc3RhcnRUeXBlKSB7CisgICAgICAgIG1fYmxvY2tTdGFjay5yZW1vdmVMYXN0KCk7Cisg
ICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbih0eXBlLCBDU1NQYXJzZXJUb2tlbjo6QmxvY2tF
bmQpOworICAgIH0KKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4odHlwZSk7Cit9CisKK0NTU1Bh
cnNlclRva2VuIENTU1Rva2VuaXplcjo6bGVmdFBhcmVudGhlc2lzKFVDaGFyIC8qY2MqLykKK3sK
KyAgICByZXR1cm4gYmxvY2tTdGFydChMZWZ0UGFyZW50aGVzaXNUb2tlbik7Cit9CisKK0NTU1Bh
cnNlclRva2VuIENTU1Rva2VuaXplcjo6cmlnaHRQYXJlbnRoZXNpcyhVQ2hhciAvKmNjKi8pCit7
CisgICAgcmV0dXJuIGJsb2NrRW5kKFJpZ2h0UGFyZW50aGVzaXNUb2tlbiwgTGVmdFBhcmVudGhl
c2lzVG9rZW4pOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmxlZnRCcmFja2V0
KFVDaGFyIC8qY2MqLykKK3sKKyAgICByZXR1cm4gYmxvY2tTdGFydChMZWZ0QnJhY2tldFRva2Vu
KTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpyaWdodEJyYWNrZXQoVUNoYXIg
LypjYyovKQoreworICAgIHJldHVybiBibG9ja0VuZChSaWdodEJyYWNrZXRUb2tlbiwgTGVmdEJy
YWNrZXRUb2tlbik7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6bGVmdEJyYWNl
KFVDaGFyIC8qY2MqLykKK3sKKyAgICByZXR1cm4gYmxvY2tTdGFydChMZWZ0QnJhY2VUb2tlbik7
Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6cmlnaHRCcmFjZShVQ2hhciAvKmNj
Ki8pCit7CisgICAgcmV0dXJuIGJsb2NrRW5kKFJpZ2h0QnJhY2VUb2tlbiwgTGVmdEJyYWNlVG9r
ZW4pOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OnBsdXNPckZ1bGxTdG9wKFVD
aGFyIGNjKQoreworICAgIGlmIChuZXh0Q2hhcnNBcmVOdW1iZXIoY2MpKSB7CisgICAgICAgIHJl
Y29uc3VtZShjYyk7CisgICAgICAgIHJldHVybiBjb25zdW1lTnVtZXJpY1Rva2VuKCk7CisgICAg
fQorICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihEZWxpbWl0ZXJUb2tlbiwgY2MpOworfQorCitD
U1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmFzdGVyaXNrKFVDaGFyIGNjKQoreworICAgIEFT
U0VSVChjYyA9PSAnKicpOworICAgIGlmIChjb25zdW1lSWZOZXh0KCc9JykpCisgICAgICAgIHJl
dHVybiBDU1NQYXJzZXJUb2tlbihTdWJzdHJpbmdNYXRjaFRva2VuKTsKKyAgICByZXR1cm4gQ1NT
UGFyc2VyVG9rZW4oRGVsaW1pdGVyVG9rZW4sICcqJyk7Cit9CisKK0NTU1BhcnNlclRva2VuIENT
U1Rva2VuaXplcjo6bGVzc1RoYW4oVUNoYXIgY2MpCit7CisgICAgQVNTRVJUKGNjID09ICc8Jyk7
CisgICAgaWYgKG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSA9PSAnIScKKyAgICAg
ICAgJiYgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDEpID09ICctJworICAgICAgICAm
JiBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMikgPT0gJy0nKSB7CisgICAgICAgIG1f
aW5wdXQuYWR2YW5jZSgzKTsKKyAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKENET1Rva2Vu
KTsKKyAgICB9CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKERlbGltaXRlclRva2VuLCAnPCcp
OworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmNvbW1hKFVDaGFyIC8qY2MqLykK
K3sKKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oQ29tbWFUb2tlbik7Cit9CisKK0NTU1BhcnNl
clRva2VuIENTU1Rva2VuaXplcjo6aHlwaGVuTWludXMoVUNoYXIgY2MpCit7CisgICAgaWYgKG5l
eHRDaGFyc0FyZU51bWJlcihjYykpIHsKKyAgICAgICAgcmVjb25zdW1lKGNjKTsKKyAgICAgICAg
cmV0dXJuIGNvbnN1bWVOdW1lcmljVG9rZW4oKTsKKyAgICB9CisgICAgaWYgKG1faW5wdXQucGVl
a1dpdGhvdXRSZXBsYWNlbWVudCgwKSA9PSAnLScKKyAgICAgICAgJiYgbV9pbnB1dC5wZWVrV2l0
aG91dFJlcGxhY2VtZW50KDEpID09ICc+JykgeworICAgICAgICBtX2lucHV0LmFkdmFuY2UoMik7
CisgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihDRENUb2tlbik7CisgICAgfQorICAgIGlm
IChuZXh0Q2hhcnNBcmVJZGVudGlmaWVyKGNjKSkgeworICAgICAgICByZWNvbnN1bWUoY2MpOwor
ICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50TGlrZVRva2VuKCk7CisgICAgfQorICAgIHJldHVy
biBDU1NQYXJzZXJUb2tlbihEZWxpbWl0ZXJUb2tlbiwgY2MpOworfQorCitDU1NQYXJzZXJUb2tl
biBDU1NUb2tlbml6ZXI6OnNvbGlkdXMoVUNoYXIgY2MpCit7CisgICAgaWYgKGNvbnN1bWVJZk5l
eHQoJyonKSkgeworICAgICAgICAvLyBUaGVzZSBnZXQgaWdub3JlZCwgYnV0IHdlIG5lZWQgYSB2
YWx1ZSB0byByZXR1cm4uCisgICAgICAgIGNvbnN1bWVVbnRpbENvbW1lbnRFbmRGb3VuZCgpOwor
ICAgICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oQ29tbWVudFRva2VuKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oRGVsaW1pdGVyVG9rZW4sIGNjKTsKK30KKworQ1NTUGFy
c2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjb2xvbihVQ2hhciAvKmNjKi8pCit7CisgICAgcmV0dXJu
IENTU1BhcnNlclRva2VuKENvbG9uVG9rZW4pOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tl
bml6ZXI6OnNlbWlDb2xvbihVQ2hhciAvKmNjKi8pCit7CisgICAgcmV0dXJuIENTU1BhcnNlclRv
a2VuKFNlbWljb2xvblRva2VuKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpo
YXNoKFVDaGFyIGNjKQoreworICAgIFVDaGFyIG5leHRDaGFyID0gbV9pbnB1dC5wZWVrV2l0aG91
dFJlcGxhY2VtZW50KDApOworICAgIGlmIChpc05hbWVDb2RlUG9pbnQobmV4dENoYXIpIHx8IHR3
b0NoYXJzQXJlVmFsaWRFc2NhcGUobmV4dENoYXIsIG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNl
bWVudCgxKSkpIHsKKyAgICAgICAgSGFzaFRva2VuVHlwZSB0eXBlID0gbmV4dENoYXJzQXJlSWRl
bnRpZmllcigpID8gSGFzaFRva2VuSWQgOiBIYXNoVG9rZW5VbnJlc3RyaWN0ZWQ7CisgICAgICAg
IHJldHVybiBDU1NQYXJzZXJUb2tlbih0eXBlLCBjb25zdW1lTmFtZSgpKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oRGVsaW1pdGVyVG9rZW4sIGNjKTsKK30KKworQ1NTUGFy
c2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjaXJjdW1mbGV4QWNjZW50KFVDaGFyIGNjKQoreworICAg
IEFTU0VSVChjYyA9PSAnXicpOworICAgIGlmIChjb25zdW1lSWZOZXh0KCc9JykpCisgICAgICAg
IHJldHVybiBDU1NQYXJzZXJUb2tlbihQcmVmaXhNYXRjaFRva2VuKTsKKyAgICByZXR1cm4gQ1NT
UGFyc2VyVG9rZW4oRGVsaW1pdGVyVG9rZW4sICdeJyk7Cit9CisKK0NTU1BhcnNlclRva2VuIENT
U1Rva2VuaXplcjo6ZG9sbGFyU2lnbihVQ2hhciBjYykKK3sKKyAgICBBU1NFUlQoY2MgPT0gJyQn
KTsKKyAgICBpZiAoY29uc3VtZUlmTmV4dCgnPScpKQorICAgICAgICByZXR1cm4gQ1NTUGFyc2Vy
VG9rZW4oU3VmZml4TWF0Y2hUb2tlbik7CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKERlbGlt
aXRlclRva2VuLCAnJCcpOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OnZlcnRp
Y2FsTGluZShVQ2hhciBjYykKK3sKKyAgICBBU1NFUlQoY2MgPT0gJ3wnKTsKKyAgICBpZiAoY29u
c3VtZUlmTmV4dCgnPScpKQorICAgICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oRGFzaE1hdGNo
VG9rZW4pOworICAgIGlmIChjb25zdW1lSWZOZXh0KCd8JykpCisgICAgICAgIHJldHVybiBDU1NQ
YXJzZXJUb2tlbihDb2x1bW5Ub2tlbik7CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKERlbGlt
aXRlclRva2VuLCAnfCcpOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OnRpbGRl
KFVDaGFyIGNjKQoreworICAgIEFTU0VSVChjYyA9PSAnficpOworICAgIGlmIChjb25zdW1lSWZO
ZXh0KCc9JykpCisgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihJbmNsdWRlTWF0Y2hUb2tl
bik7CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKERlbGltaXRlclRva2VuLCAnficpOworfQor
CitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmNvbW1lcmNpYWxBdChVQ2hhciBjYykKK3sK
KyAgICBBU1NFUlQoY2MgPT0gJ0AnKTsKKyAgICBpZiAobmV4dENoYXJzQXJlSWRlbnRpZmllcigp
KQorICAgICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oQXRLZXl3b3JkVG9rZW4sIGNvbnN1bWVO
YW1lKCkpOworICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihEZWxpbWl0ZXJUb2tlbiwgJ0AnKTsK
K30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpyZXZlcnNlU29saWR1cyhVQ2hhciBj
YykKK3sKKyAgICBpZiAodHdvQ2hhcnNBcmVWYWxpZEVzY2FwZShjYywgbV9pbnB1dC5wZWVrV2l0
aG91dFJlcGxhY2VtZW50KDApKSkgeworICAgICAgICByZWNvbnN1bWUoY2MpOworICAgICAgICBy
ZXR1cm4gY29uc3VtZUlkZW50TGlrZVRva2VuKCk7CisgICAgfQorICAgIHJldHVybiBDU1NQYXJz
ZXJUb2tlbihEZWxpbWl0ZXJUb2tlbiwgY2MpOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tl
bml6ZXI6OmFzY2lpRGlnaXQoVUNoYXIgY2MpCit7CisgICAgcmVjb25zdW1lKGNjKTsKKyAgICBy
ZXR1cm4gY29uc3VtZU51bWVyaWNUb2tlbigpOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tl
bml6ZXI6OmxldHRlclUoVUNoYXIgY2MpCit7CisgICAgaWYgKG1faW5wdXQucGVla1dpdGhvdXRS
ZXBsYWNlbWVudCgwKSA9PSAnKycKKyAgICAgICAgJiYgKGlzQVNDSUlIZXhEaWdpdChtX2lucHV0
LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMSkpCisgICAgICAgICAgICB8fCBtX2lucHV0LnBlZWtX
aXRob3V0UmVwbGFjZW1lbnQoMSkgPT0gJz8nKSkgeworICAgICAgICBtX2lucHV0LmFkdmFuY2Uo
KTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVVbmljb2RlUmFuZ2UoKTsKKyAgICB9CisgICAgcmVj
b25zdW1lKGNjKTsKKyAgICByZXR1cm4gY29uc3VtZUlkZW50TGlrZVRva2VuKCk7Cit9CisKK0NT
U1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6bmFtZVN0YXJ0KFVDaGFyIGNjKQoreworICAgIHJl
Y29uc3VtZShjYyk7CisgICAgcmV0dXJuIGNvbnN1bWVJZGVudExpa2VUb2tlbigpOworfQorCitD
U1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OnN0cmluZ1N0YXJ0KFVDaGFyIGNjKQoreworICAg
IHJldHVybiBjb25zdW1lU3RyaW5nVG9rZW5VbnRpbChjYyk7Cit9CisKK0NTU1BhcnNlclRva2Vu
IENTU1Rva2VuaXplcjo6ZW5kT2ZGaWxlKFVDaGFyIC8qY2MqLykKK3sKKyAgICByZXR1cm4gQ1NT
UGFyc2VyVG9rZW4oRU9GVG9rZW4pOworfQorCitjb25zdCBDU1NUb2tlbml6ZXI6OkNvZGVQb2lu
dCBDU1NUb2tlbml6ZXI6OmNvZGVQb2ludHNbMTI4XSA9IHsKKyAgICAmQ1NTVG9rZW5pemVyOjpl
bmRPZkZpbGUsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAs
CisgICAgMCwKKyAgICAwLAorICAgICZDU1NUb2tlbml6ZXI6OndoaXRlU3BhY2UsCisgICAgJkNT
U1Rva2VuaXplcjo6d2hpdGVTcGFjZSwKKyAgICAwLAorICAgICZDU1NUb2tlbml6ZXI6OndoaXRl
U3BhY2UsCisgICAgJkNTU1Rva2VuaXplcjo6d2hpdGVTcGFjZSwKKyAgICAwLAorICAgIDAsCisg
ICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAg
ICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAg
IDAsCisgICAgMCwKKyAgICAmQ1NTVG9rZW5pemVyOjp3aGl0ZVNwYWNlLAorICAgIDAsCisgICAg
JkNTU1Rva2VuaXplcjo6c3RyaW5nU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6aGFzaCwKKyAg
ICAmQ1NTVG9rZW5pemVyOjpkb2xsYXJTaWduLAorICAgIDAsCisgICAgMCwKKyAgICAmQ1NTVG9r
ZW5pemVyOjpzdHJpbmdTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpsZWZ0UGFyZW50aGVzaXMs
CisgICAgJkNTU1Rva2VuaXplcjo6cmlnaHRQYXJlbnRoZXNpcywKKyAgICAmQ1NTVG9rZW5pemVy
Ojphc3RlcmlzaywKKyAgICAmQ1NTVG9rZW5pemVyOjpwbHVzT3JGdWxsU3RvcCwKKyAgICAmQ1NT
VG9rZW5pemVyOjpjb21tYSwKKyAgICAmQ1NTVG9rZW5pemVyOjpoeXBoZW5NaW51cywKKyAgICAm
Q1NTVG9rZW5pemVyOjpwbHVzT3JGdWxsU3RvcCwKKyAgICAmQ1NTVG9rZW5pemVyOjpzb2xpZHVz
LAorICAgICZDU1NUb2tlbml6ZXI6OmFzY2lpRGlnaXQsCisgICAgJkNTU1Rva2VuaXplcjo6YXNj
aWlEaWdpdCwKKyAgICAmQ1NTVG9rZW5pemVyOjphc2NpaURpZ2l0LAorICAgICZDU1NUb2tlbml6
ZXI6OmFzY2lpRGlnaXQsCisgICAgJkNTU1Rva2VuaXplcjo6YXNjaWlEaWdpdCwKKyAgICAmQ1NT
VG9rZW5pemVyOjphc2NpaURpZ2l0LAorICAgICZDU1NUb2tlbml6ZXI6OmFzY2lpRGlnaXQsCisg
ICAgJkNTU1Rva2VuaXplcjo6YXNjaWlEaWdpdCwKKyAgICAmQ1NTVG9rZW5pemVyOjphc2NpaURp
Z2l0LAorICAgICZDU1NUb2tlbml6ZXI6OmFzY2lpRGlnaXQsCisgICAgJkNTU1Rva2VuaXplcjo6
Y29sb24sCisgICAgJkNTU1Rva2VuaXplcjo6c2VtaUNvbG9uLAorICAgICZDU1NUb2tlbml6ZXI6
Omxlc3NUaGFuLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgICZDU1NUb2tlbml6ZXI6OmNv
bW1lcmNpYWxBdCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2Vu
aXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NT
VG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAg
ICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQs
CisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVT
dGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6
bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5p
emVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NU
b2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAg
JkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwK
KyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0
YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6OmxldHRlclUsCisgICAgJkNTU1Rva2VuaXplcjo6bmFt
ZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVy
OjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tl
bml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpsZWZ0QnJhY2tldCwKKyAgICAm
Q1NTVG9rZW5pemVyOjpyZXZlcnNlU29saWR1cywKKyAgICAmQ1NTVG9rZW5pemVyOjpyaWdodEJy
YWNrZXQsCisgICAgJkNTU1Rva2VuaXplcjo6Y2lyY3VtZmxleEFjY2VudCwKKyAgICAmQ1NTVG9r
ZW5pemVyOjpuYW1lU3RhcnQsCisgICAgMCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQs
CisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVT
dGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6
bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5p
emVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NU
b2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAg
JkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwK
KyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0
YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpu
YW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6
ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rv
a2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6OmxldHRlclUsCisgICAgJkNT
U1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAg
ICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0
LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpsZWZ0
QnJhY2UsCisgICAgJkNTU1Rva2VuaXplcjo6dmVydGljYWxMaW5lLAorICAgICZDU1NUb2tlbml6
ZXI6OnJpZ2h0QnJhY2UsCisgICAgJkNTU1Rva2VuaXplcjo6dGlsZGUsCisgICAgMCwKK307Citj
b25zdCB1bnNpZ25lZCBjb2RlUG9pbnRzTnVtYmVyID0gMTI4OworICAgIAorQ1NTUGFyc2VyVG9r
ZW4gQ1NTVG9rZW5pemVyOjpuZXh0VG9rZW4oKQoreworICAgIC8vIFVubGlrZSB0aGUgSFRNTFRv
a2VuaXplciwgdGhlIENTUyBTeW50YXggc3BlYyBpcyB3cml0dGVuCisgICAgLy8gYXMgYSBzdGF0
ZWxlc3MsIChmaXhlZC1zaXplKSBsb29rLWFoZWFkIHRva2VuaXplci4KKyAgICAvLyBXZSBjb3Vs
ZCBtb3ZlIHRvIHRoZSBzdGF0ZWZ1bCBtb2RlbCBhbmQgaW5zdGVhZCBjcmVhdGUKKyAgICAvLyBz
dGF0ZXMgZm9yIGFsbCB0aGUgIm5leHQgMyBjb2RlcG9pbnRzIGFyZSBYIiBjYXNlcy4KKyAgICAv
LyBTdGF0ZS1tYWNoaW5lIHRva2VuaXplcnMgYXJlIGVhc2llciB0byB3cml0ZSB0byBoYW5kbGUK
KyAgICAvLyBpbmNyZW1lbnRhbCB0b2tlbml6YXRpb24gb2YgcGFydGlhbCBzb3VyY2VzLgorICAg
IC8vIEhvd2V2ZXIsIGZvciBub3cgd2UgZm9sbG93IHRoZSBzcGVjIGV4YWN0bHkuCisgICAgVUNo
YXIgY2MgPSBjb25zdW1lKCk7CisgICAgQ29kZVBvaW50IGNvZGVQb2ludEZ1bmMgPSAwOworCisg
ICAgaWYgKGlzQVNDSUkoY2MpKSB7CisgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKGNjIDwgY29kZVBvaW50c051bWJlcik7CisgICAgICAgIGNvZGVQb2ludEZ1bmMgPSBj
b2RlUG9pbnRzW2NjXTsKKyAgICB9IGVsc2UgeworICAgICAgICBjb2RlUG9pbnRGdW5jID0gJkNT
U1Rva2VuaXplcjo6bmFtZVN0YXJ0OworICAgIH0KKworICAgIGlmIChjb2RlUG9pbnRGdW5jKQor
ICAgICAgICByZXR1cm4gKCh0aGlzKS0+Kihjb2RlUG9pbnRGdW5jKSkoY2MpOworICAgIHJldHVy
biBDU1NQYXJzZXJUb2tlbihEZWxpbWl0ZXJUb2tlbiwgY2MpOworfQorCisvLyBUaGlzIG1ldGhv
ZCBtZXJnZXMgdGhlIGZvbGxvd2luZyBzcGVjIHNlY3Rpb25zIGZvciBlZmZpY2llbmN5CisvLyBo
dHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXN5bnRheC8jY29uc3VtZS1hLW51bWJlcgorLy8gaHR0
cDovL3d3dy53My5vcmcvVFIvY3NzMy1zeW50YXgvI2NvbnZlcnQtYS1zdHJpbmctdG8tYS1udW1i
ZXIKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6Y29uc3VtZU51bWJlcigpCit7CisgICAg
QVNTRVJUKG5leHRDaGFyc0FyZU51bWJlcigpKTsKKworICAgIE51bWVyaWNWYWx1ZVR5cGUgdHlw
ZSA9IEludGVnZXJWYWx1ZVR5cGU7CisgICAgTnVtZXJpY1NpZ24gc2lnbiA9IE5vU2lnbjsKKyAg
ICB1bnNpZ25lZCBudW1iZXJMZW5ndGggPSAwOworCisgICAgVUNoYXIgbmV4dCA9IG1faW5wdXQu
cGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKTsKKyAgICBpZiAobmV4dCA9PSAnKycpIHsKKyAgICAg
ICAgKytudW1iZXJMZW5ndGg7CisgICAgICAgIHNpZ24gPSBQbHVzU2lnbjsKKyAgICB9IGVsc2Ug
aWYgKG5leHQgPT0gJy0nKSB7CisgICAgICAgICsrbnVtYmVyTGVuZ3RoOworICAgICAgICBzaWdu
ID0gTWludXNTaWduOworICAgIH0KKworICAgIG51bWJlckxlbmd0aCA9IG1faW5wdXQuc2tpcFdo
aWxlUHJlZGljYXRlPGlzQVNDSUlEaWdpdD4obnVtYmVyTGVuZ3RoKTsKKyAgICBuZXh0ID0gbV9p
bnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KG51bWJlckxlbmd0aCk7CisgICAgaWYgKG5leHQg
PT0gJy4nICYmIGlzQVNDSUlEaWdpdChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQobnVt
YmVyTGVuZ3RoICsgMSkpKSB7CisgICAgICAgIHR5cGUgPSBOdW1iZXJWYWx1ZVR5cGU7CisgICAg
ICAgIG51bWJlckxlbmd0aCA9IG1faW5wdXQuc2tpcFdoaWxlUHJlZGljYXRlPGlzQVNDSUlEaWdp
dD4obnVtYmVyTGVuZ3RoICsgMik7CisgICAgICAgIG5leHQgPSBtX2lucHV0LnBlZWtXaXRob3V0
UmVwbGFjZW1lbnQobnVtYmVyTGVuZ3RoKTsKKyAgICB9CisKKyAgICBpZiAobmV4dCA9PSAnRScg
fHwgbmV4dCA9PSAnZScpIHsKKyAgICAgICAgbmV4dCA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBs
YWNlbWVudChudW1iZXJMZW5ndGggKyAxKTsKKyAgICAgICAgaWYgKGlzQVNDSUlEaWdpdChuZXh0
KSkgeworICAgICAgICAgICAgdHlwZSA9IE51bWJlclZhbHVlVHlwZTsKKyAgICAgICAgICAgIG51
bWJlckxlbmd0aCA9IG1faW5wdXQuc2tpcFdoaWxlUHJlZGljYXRlPGlzQVNDSUlEaWdpdD4obnVt
YmVyTGVuZ3RoICsgMSk7CisgICAgICAgIH0gZWxzZSBpZiAoKG5leHQgPT0gJysnIHx8IG5leHQg
PT0gJy0nKSAmJiBpc0FTQ0lJRGlnaXQobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KG51
bWJlckxlbmd0aCArIDIpKSkgeworICAgICAgICAgICAgdHlwZSA9IE51bWJlclZhbHVlVHlwZTsK
KyAgICAgICAgICAgIG51bWJlckxlbmd0aCA9IG1faW5wdXQuc2tpcFdoaWxlUHJlZGljYXRlPGlz
QVNDSUlEaWdpdD4obnVtYmVyTGVuZ3RoICsgMyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBk
b3VibGUgdmFsdWUgPSBtX2lucHV0LmdldERvdWJsZSgwLCBudW1iZXJMZW5ndGgpOworICAgIG1f
aW5wdXQuYWR2YW5jZShudW1iZXJMZW5ndGgpOworCisgICAgcmV0dXJuIENTU1BhcnNlclRva2Vu
KE51bWJlclRva2VuLCB2YWx1ZSwgdHlwZSwgc2lnbik7Cit9CisKKy8vIGh0dHA6Ly93d3cudzMu
b3JnL1RSL2NzczMtc3ludGF4LyNjb25zdW1lLWEtbnVtZXJpYy10b2tlbgorQ1NTUGFyc2VyVG9r
ZW4gQ1NTVG9rZW5pemVyOjpjb25zdW1lTnVtZXJpY1Rva2VuKCkKK3sKKyAgICBDU1NQYXJzZXJU
b2tlbiB0b2tlbiA9IGNvbnN1bWVOdW1iZXIoKTsKKyAgICBpZiAobmV4dENoYXJzQXJlSWRlbnRp
ZmllcigpKQorICAgICAgICB0b2tlbi5jb252ZXJ0VG9EaW1lbnNpb25XaXRoVW5pdChjb25zdW1l
TmFtZSgpKTsKKyAgICBlbHNlIGlmIChjb25zdW1lSWZOZXh0KCclJykpCisgICAgICAgIHRva2Vu
LmNvbnZlcnRUb1BlcmNlbnRhZ2UoKTsKKyAgICByZXR1cm4gdG9rZW47Cit9CisKKy8vIGh0dHA6
Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1zeW50YXgvI2NvbnN1bWUtaWRlbnQtbGlrZS10b2tlbgor
Q1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjb25zdW1lSWRlbnRMaWtlVG9rZW4oKQorewor
ICAgIFN0cmluZ1ZpZXcgbmFtZSA9IGNvbnN1bWVOYW1lKCk7CisgICAgaWYgKGNvbnN1bWVJZk5l
eHQoJygnKSkgeworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAidXJs
IikpIHsKKyAgICAgICAgICAgIC8vIFRoZSBzcGVjIGlzIHNsaWdodGx5IGRpZmZlcmVudCBzbyBh
cyB0byBhdm9pZCBkcm9wcGluZyB3aGl0ZXNwYWNlCisgICAgICAgICAgICAvLyB0b2tlbnMsIGJ1
dCB0aGV5IHdvdWxkbid0IGJlIHVzZWQgYW5kIHRoaXMgaXMgZWFzaWVyLgorICAgICAgICAgICAg
bV9pbnB1dC5hZHZhbmNlVW50aWxOb25XaGl0ZXNwYWNlKCk7CisgICAgICAgICAgICBVQ2hhciBu
ZXh0ID0gbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApOworICAgICAgICAgICAgaWYg
KG5leHQgIT0gJyInICYmIG5leHQgIT0gJ1wnJykKKyAgICAgICAgICAgICAgICByZXR1cm4gY29u
c3VtZVVybFRva2VuKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJsb2NrU3RhcnQoTGVm
dFBhcmVudGhlc2lzVG9rZW4sIEZ1bmN0aW9uVG9rZW4sIG5hbWUpOworICAgIH0KKyAgICByZXR1
cm4gQ1NTUGFyc2VyVG9rZW4oSWRlbnRUb2tlbiwgbmFtZSk7Cit9CisKKy8vIGh0dHA6Ly9kZXYu
dzMub3JnL2Nzc3dnL2Nzcy1zeW50YXgvI2NvbnN1bWUtYS1zdHJpbmctdG9rZW4KK0NTU1BhcnNl
clRva2VuIENTU1Rva2VuaXplcjo6Y29uc3VtZVN0cmluZ1Rva2VuVW50aWwoVUNoYXIgZW5kaW5n
Q29kZVBvaW50KQoreworICAgIC8vIFN0cmluZ3Mgd2l0aG91dCBlc2NhcGVzIGdldCBoYW5kbGVk
IHdpdGhvdXQgYWxsb2NhdGlvbnMKKyAgICBmb3IgKHVuc2lnbmVkIHNpemUgPSAwOyA7IHNpemUr
KykgeworICAgICAgICBVQ2hhciBjYyA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudChz
aXplKTsKKyAgICAgICAgaWYgKGNjID09IGVuZGluZ0NvZGVQb2ludCkgeworICAgICAgICAgICAg
dW5zaWduZWQgc3RhcnRPZmZzZXQgPSBtX2lucHV0Lm9mZnNldCgpOworICAgICAgICAgICAgbV9p
bnB1dC5hZHZhbmNlKHNpemUgKyAxKTsKKyAgICAgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tl
bihTdHJpbmdUb2tlbiwgbV9pbnB1dC5yYW5nZUF0KHN0YXJ0T2Zmc2V0LCBzaXplKSk7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGlzTmV3TGluZShjYykpIHsKKyAgICAgICAgICAgIG1faW5wdXQu
YWR2YW5jZShzaXplKTsKKyAgICAgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihCYWRTdHJp
bmdUb2tlbik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNjID09ICdcMCcgfHwgY2MgPT0gJ1xc
JykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIFN0cmluZ0J1aWxkZXIgb3V0cHV0
OworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIFVDaGFyIGNjID0gY29uc3VtZSgpOworICAg
ICAgICBpZiAoY2MgPT0gZW5kaW5nQ29kZVBvaW50IHx8IGNjID09IGtFbmRPZkZpbGVNYXJrZXIp
CisgICAgICAgICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oU3RyaW5nVG9rZW4sIHJlZ2lzdGVy
U3RyaW5nKG91dHB1dC50b1N0cmluZygpKSk7CisgICAgICAgIGlmIChpc05ld0xpbmUoY2MpKSB7
CisgICAgICAgICAgICByZWNvbnN1bWUoY2MpOworICAgICAgICAgICAgcmV0dXJuIENTU1BhcnNl
clRva2VuKEJhZFN0cmluZ1Rva2VuKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2MgPT0gJ1xc
JykgeworICAgICAgICAgICAgaWYgKG1faW5wdXQubmV4dElucHV0Q2hhcigpID09IGtFbmRPZkZp
bGVNYXJrZXIpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoaXNO
ZXdMaW5lKG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSkpCisgICAgICAgICAgICAg
ICAgY29uc3VtZVNpbmdsZVdoaXRlc3BhY2VJZk5leHQoKTsgLy8gVGhpcyBoYW5kbGVzIFxyXG4g
Zm9yIHVzCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZChj
b25zdW1lRXNjYXBlKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgb3V0cHV0LmFw
cGVuZChjYyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2Vu
aXplcjo6Y29uc3VtZVVuaWNvZGVSYW5nZSgpCit7CisgICAgQVNTRVJUKGlzQVNDSUlIZXhEaWdp
dChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkpIHx8IG1faW5wdXQucGVla1dpdGhv
dXRSZXBsYWNlbWVudCgwKSA9PSAnPycpOworICAgIGludCBsZW5ndGhSZW1haW5pbmcgPSA2Owor
ICAgIFVDaGFyMzIgc3RhcnQgPSAwOworCisgICAgd2hpbGUgKGxlbmd0aFJlbWFpbmluZyAmJiBp
c0FTQ0lJSGV4RGlnaXQobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApKSkgeworICAg
ICAgICBzdGFydCA9IHN0YXJ0ICogMTYgKyB0b0FTQ0lJSGV4VmFsdWUoY29uc3VtZSgpKTsKKyAg
ICAgICAgLS1sZW5ndGhSZW1haW5pbmc7CisgICAgfQorCisgICAgVUNoYXIzMiBlbmQgPSBzdGFy
dDsKKyAgICBpZiAobGVuZ3RoUmVtYWluaW5nICYmIGNvbnN1bWVJZk5leHQoJz8nKSkgeworICAg
ICAgICBkbyB7CisgICAgICAgICAgICBzdGFydCAqPSAxNjsKKyAgICAgICAgICAgIGVuZCA9IGVu
ZCAqIDE2ICsgMHhGOworICAgICAgICAgICAgLS1sZW5ndGhSZW1haW5pbmc7CisgICAgICAgIH0g
d2hpbGUgKGxlbmd0aFJlbWFpbmluZyAmJiBjb25zdW1lSWZOZXh0KCc/JykpOworICAgIH0gZWxz
ZSBpZiAobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApID09ICctJyAmJiBpc0FTQ0lJ
SGV4RGlnaXQobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDEpKSkgeworICAgICAgICBt
X2lucHV0LmFkdmFuY2UoKTsKKyAgICAgICAgbGVuZ3RoUmVtYWluaW5nID0gNjsKKyAgICAgICAg
ZW5kID0gMDsKKyAgICAgICAgZG8geworICAgICAgICAgICAgZW5kID0gZW5kICogMTYgKyB0b0FT
Q0lJSGV4VmFsdWUoY29uc3VtZSgpKTsKKyAgICAgICAgICAgIC0tbGVuZ3RoUmVtYWluaW5nOwor
ICAgICAgICB9IHdoaWxlIChsZW5ndGhSZW1haW5pbmcgJiYgaXNBU0NJSUhleERpZ2l0KG1faW5w
dXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSkpOworICAgIH0KKworICAgIHJldHVybiBDU1NQ
YXJzZXJUb2tlbihVbmljb2RlUmFuZ2VUb2tlbiwgc3RhcnQsIGVuZCk7Cit9CisKKy8vIGh0dHA6
Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1zeW50YXgvI25vbi1wcmludGFibGUtY29kZS1wb2ludAor
c3RhdGljIGJvb2wgaXNOb25QcmludGFibGVDb2RlUG9pbnQoVUNoYXIgY2MpCit7CisgICAgcmV0
dXJuIChjYyA+PSAnXDAnICYmIGNjIDw9ICdceDgnKSB8fCBjYyA9PSAnXHhiJyB8fCAoY2MgPj0g
J1x4ZScgJiYgY2MgPD0gJ1x4MWYnKSB8fCBjYyA9PSAnXHg3Zic7Cit9CisKKy8vIGh0dHA6Ly9k
ZXYudzMub3JnL2Nzc3dnL2Nzcy1zeW50YXgvI2NvbnN1bWUtdXJsLXRva2VuCitDU1NQYXJzZXJU
b2tlbiBDU1NUb2tlbml6ZXI6OmNvbnN1bWVVcmxUb2tlbigpCit7CisgICAgbV9pbnB1dC5hZHZh
bmNlVW50aWxOb25XaGl0ZXNwYWNlKCk7CisKKyAgICAvLyBVUkwgdG9rZW5zIHdpdGhvdXQgZXNj
YXBlcyBnZXQgaGFuZGxlZCB3aXRob3V0IGFsbG9jYXRpb25zCisgICAgZm9yICh1bnNpZ25lZCBz
aXplID0gMDsgOyBzaXplKyspIHsKKyAgICAgICAgVUNoYXIgY2MgPSBtX2lucHV0LnBlZWtXaXRo
b3V0UmVwbGFjZW1lbnQoc2l6ZSk7CisgICAgICAgIGlmIChjYyA9PSAnKScpIHsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gbV9pbnB1dC5vZmZzZXQoKTsKKyAgICAgICAgICAg
IG1faW5wdXQuYWR2YW5jZShzaXplICsgMSk7CisgICAgICAgICAgICByZXR1cm4gQ1NTUGFyc2Vy
VG9rZW4oVXJsVG9rZW4sIG1faW5wdXQucmFuZ2VBdChzdGFydE9mZnNldCwgc2l6ZSkpOworICAg
ICAgICB9CisgICAgICAgIGlmIChjYyA8PSAnICcgfHwgY2MgPT0gJ1xcJyB8fCBjYyA9PSAnIicg
fHwgY2MgPT0gJ1wnJyB8fCBjYyA9PSAnKCcgfHwgY2MgPT0gJ1x4N2YnKQorICAgICAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CisgICAgd2hpbGUgKHRy
dWUpIHsKKyAgICAgICAgVUNoYXIgY2MgPSBjb25zdW1lKCk7CisgICAgICAgIGlmIChjYyA9PSAn
KScgfHwgY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikKKyAgICAgICAgICAgIHJldHVybiBDU1NQYXJz
ZXJUb2tlbihVcmxUb2tlbiwgcmVnaXN0ZXJTdHJpbmcocmVzdWx0LnRvU3RyaW5nKCkpKTsKKwor
ICAgICAgICBpZiAoaXNIVE1MU3BhY2UoY2MpKSB7CisgICAgICAgICAgICBtX2lucHV0LmFkdmFu
Y2VVbnRpbE5vbldoaXRlc3BhY2UoKTsKKyAgICAgICAgICAgIGlmIChjb25zdW1lSWZOZXh0KCcp
JykgfHwgbV9pbnB1dC5uZXh0SW5wdXRDaGFyKCkgPT0ga0VuZE9mRmlsZU1hcmtlcikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oVXJsVG9rZW4sIHJlZ2lzdGVyU3RyaW5n
KHJlc3VsdC50b1N0cmluZygpKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChjYyA9PSAnIicgfHwgY2MgPT0gJ1wnJyB8fCBjYyA9PSAnKCcgfHwgaXNOb25Q
cmludGFibGVDb2RlUG9pbnQoY2MpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYg
KGNjID09ICdcXCcpIHsKKyAgICAgICAgICAgIGlmICh0d29DaGFyc0FyZVZhbGlkRXNjYXBlKGNj
LCBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkpKSB7CisgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZChjb25zdW1lRXNjYXBlKCkpOworICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg
ICByZXN1bHQuYXBwZW5kKGNjKTsKKyAgICB9CisKKyAgICBjb25zdW1lQmFkVXJsUmVtbmFudHMo
KTsKKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oQmFkVXJsVG9rZW4pOworfQorCisvLyBodHRw
Oi8vZGV2LnczLm9yZy9jc3N3Zy9jc3Mtc3ludGF4LyNjb25zdW1lLXRoZS1yZW1uYW50cy1vZi1h
LWJhZC11cmwKK3ZvaWQgQ1NTVG9rZW5pemVyOjpjb25zdW1lQmFkVXJsUmVtbmFudHMoKQorewor
ICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIFVDaGFyIGNjID0gY29uc3VtZSgpOworICAgICAg
ICBpZiAoY2MgPT0gJyknIHx8IGNjID09IGtFbmRPZkZpbGVNYXJrZXIpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGlmICh0d29DaGFyc0FyZVZhbGlkRXNjYXBlKGNjLCBtX2lucHV0LnBl
ZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkpKQorICAgICAgICAgICAgY29uc3VtZUVzY2FwZSgpOwor
ICAgIH0KK30KKwordm9pZCBDU1NUb2tlbml6ZXI6OmNvbnN1bWVTaW5nbGVXaGl0ZXNwYWNlSWZO
ZXh0KCkKK3sKKyAgICAvLyBXZSBjaGVjayBmb3IgXHJcbiBhbmQgSFRNTCBzcGFjZXMgc2luY2Ug
d2UgZG9uJ3QgZG8gcHJlcHJvY2Vzc2luZworICAgIFVDaGFyIG5leHQgPSBtX2lucHV0LnBlZWtX
aXRob3V0UmVwbGFjZW1lbnQoMCk7CisgICAgaWYgKG5leHQgPT0gJ1xyJyAmJiBtX2lucHV0LnBl
ZWtXaXRob3V0UmVwbGFjZW1lbnQoMSkgPT0gJ1xuJykKKyAgICAgICAgbV9pbnB1dC5hZHZhbmNl
KDIpOworICAgIGVsc2UgaWYgKGlzSFRNTFNwYWNlKG5leHQpKQorICAgICAgICBtX2lucHV0LmFk
dmFuY2UoKTsKK30KKwordm9pZCBDU1NUb2tlbml6ZXI6OmNvbnN1bWVVbnRpbENvbW1lbnRFbmRG
b3VuZCgpCit7CisgICAgVUNoYXIgYyA9IGNvbnN1bWUoKTsKKyAgICB3aGlsZSAodHJ1ZSkgewor
ICAgICAgICBpZiAoYyA9PSBrRW5kT2ZGaWxlTWFya2VyKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBpZiAoYyAhPSAnKicpIHsKKyAgICAgICAgICAgIGMgPSBjb25zdW1lKCk7CisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBjID0gY29uc3VtZSgpOworICAg
ICAgICBpZiAoYyA9PSAnLycpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorfQorCitib29s
IENTU1Rva2VuaXplcjo6Y29uc3VtZUlmTmV4dChVQ2hhciBjaGFyYWN0ZXIpCit7CisgICAgLy8g
U2luY2Ugd2UncmUgbm90IGRvaW5nIHJlcGxhY2VtZW50IHdlIGNhbid0IHRlbGwgdGhlIGRpZmZl
cmVuY2UgZnJvbQorICAgIC8vIGEgTlVMIGluIHRoZSBtaWRkbGUgYW5kIHRoZSBrRW5kT2ZGaWxl
TWFya2VyLCBzbyBjaGFyYWN0ZXIgbXVzdCBub3QgYmUKKyAgICAvLyBOVUwuCisgICAgQVNTRVJU
KGNoYXJhY3Rlcik7CisgICAgaWYgKG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSA9
PSBjaGFyYWN0ZXIpIHsKKyAgICAgICAgbV9pbnB1dC5hZHZhbmNlKCk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8vIGh0dHA6Ly93d3cudzMu
b3JnL1RSL2NzczMtc3ludGF4LyNjb25zdW1lLWEtbmFtZQorU3RyaW5nVmlldyBDU1NUb2tlbml6
ZXI6OmNvbnN1bWVOYW1lKCkKK3sKKyAgICAvLyBOYW1lcyB3aXRob3V0IGVzY2FwZXMgZ2V0IGhh
bmRsZWQgd2l0aG91dCBhbGxvY2F0aW9ucworICAgIGZvciAodW5zaWduZWQgc2l6ZSA9IDA7IDsg
KytzaXplKSB7CisgICAgICAgIFVDaGFyIGNjID0gbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2Vt
ZW50KHNpemUpOworICAgICAgICBpZiAoaXNOYW1lQ29kZVBvaW50KGNjKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAvLyBwZWVrV2l0aG91dFJlcGxhY2VtZW50IHdpbGwgcmV0dXJu
IE5VTCB3aGVuIHdlIGhpdCB0aGUgZW5kIG9mIHRoZQorICAgICAgICAvLyBpbnB1dC4gSW4gdGhh
dCBjYXNlIHdlIHdhbnQgdG8gc3RpbGwgdXNlIHRoZSByYW5nZUF0KCkgZmFzdCBwYXRoCisgICAg
ICAgIC8vIGJlbG93LgorICAgICAgICBpZiAoY2MgPT0gJ1wwJyAmJiBtX2lucHV0Lm9mZnNldCgp
ICsgc2l6ZSA8IG1faW5wdXQubGVuZ3RoKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
aWYgKGNjID09ICdcXCcpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgdW5zaWduZWQgc3Rh
cnRPZmZzZXQgPSBtX2lucHV0Lm9mZnNldCgpOworICAgICAgICBtX2lucHV0LmFkdmFuY2Uoc2l6
ZSk7CisgICAgICAgIHJldHVybiBtX2lucHV0LnJhbmdlQXQoc3RhcnRPZmZzZXQsIHNpemUpOwor
ICAgIH0KKworICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgIHdoaWxlICh0cnVlKSB7Cisg
ICAgICAgIFVDaGFyIGNjID0gY29uc3VtZSgpOworICAgICAgICBpZiAoaXNOYW1lQ29kZVBvaW50
KGNjKSkgeworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjYyk7CisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodHdvQ2hhcnNBcmVWYWxpZEVzY2FwZShjYywg
bV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApKSkgeworICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChjb25zdW1lRXNjYXBlKCkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKyAgICAgICAgcmVjb25zdW1lKGNjKTsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVyU3RyaW5n
KHJlc3VsdC50b1N0cmluZygpKTsKKyAgICB9Cit9CisKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2Nz
c3dnL2Nzcy1zeW50YXgvI2NvbnN1bWUtYW4tZXNjYXBlZC1jb2RlLXBvaW50CitVQ2hhcjMyIENT
U1Rva2VuaXplcjo6Y29uc3VtZUVzY2FwZSgpCit7CisgICAgVUNoYXIgY2MgPSBjb25zdW1lKCk7
CisgICAgQVNTRVJUKCFpc05ld0xpbmUoY2MpKTsKKyAgICBpZiAoaXNBU0NJSUhleERpZ2l0KGNj
KSkgeworICAgICAgICB1bnNpZ25lZCBjb25zdW1lZEhleERpZ2l0cyA9IDE7CisgICAgICAgIFN0
cmluZ0J1aWxkZXIgaGV4Q2hhcnM7CisgICAgICAgIGhleENoYXJzLmFwcGVuZChjYyk7CisgICAg
ICAgIHdoaWxlIChjb25zdW1lZEhleERpZ2l0cyA8IDYgJiYgaXNBU0NJSUhleERpZ2l0KG1faW5w
dXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSkpIHsKKyAgICAgICAgICAgIGNjID0gY29uc3Vt
ZSgpOworICAgICAgICAgICAgaGV4Q2hhcnMuYXBwZW5kKGNjKTsKKyAgICAgICAgICAgIGNvbnN1
bWVkSGV4RGlnaXRzKys7CisgICAgICAgIH07CisgICAgICAgIGNvbnN1bWVTaW5nbGVXaGl0ZXNw
YWNlSWZOZXh0KCk7CisgICAgICAgIGJvb2wgb2sgPSBmYWxzZTsKKyAgICAgICAgVUNoYXIzMiBj
b2RlUG9pbnQgPSBoZXhDaGFycy50b1N0cmluZygpLnRvVUludFN0cmljdCgmb2ssIDE2KTsKKyAg
ICAgICAgQVNTRVJUKG9rKTsKKyAgICAgICAgaWYgKGNvZGVQb2ludCA9PSAwIHx8ICgweEQ4MDAg
PD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweERGRkYpIHx8IGNvZGVQb2ludCA+IDB4MTBG
RkZGKQorICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VtZW50Q2hhcmFjdGVyOworICAgICAgICBy
ZXR1cm4gY29kZVBvaW50OworICAgIH0KKworICAgIGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFya2Vy
KQorICAgICAgICByZXR1cm4gcmVwbGFjZW1lbnRDaGFyYWN0ZXI7CisgICAgcmV0dXJuIGNjOwor
fQorCitib29sIENTU1Rva2VuaXplcjo6bmV4dFR3b0NoYXJzQXJlVmFsaWRFc2NhcGUoKQorewor
ICAgIHJldHVybiB0d29DaGFyc0FyZVZhbGlkRXNjYXBlKG1faW5wdXQucGVla1dpdGhvdXRSZXBs
YWNlbWVudCgwKSwgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDEpKTsKK30KKworLy8g
aHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1zeW50YXgvI3N0YXJ0cy13aXRoLWEtbnVtYmVyCiti
b29sIENTU1Rva2VuaXplcjo6bmV4dENoYXJzQXJlTnVtYmVyKFVDaGFyIGZpcnN0KQoreworICAg
IFVDaGFyIHNlY29uZCA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKTsKKyAgICBp
ZiAoaXNBU0NJSURpZ2l0KGZpcnN0KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGZp
cnN0ID09ICcrJyB8fCBmaXJzdCA9PSAnLScpCisgICAgICAgIHJldHVybiAoKGlzQVNDSUlEaWdp
dChzZWNvbmQpKSB8fCAoc2Vjb25kID09ICcuJyAmJiBpc0FTQ0lJRGlnaXQobV9pbnB1dC5wZWVr
V2l0aG91dFJlcGxhY2VtZW50KDEpKSkpOworICAgIGlmIChmaXJzdCA9PScuJykKKyAgICAgICAg
cmV0dXJuIChpc0FTQ0lJRGlnaXQoc2Vjb25kKSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIENTU1Rva2VuaXplcjo6bmV4dENoYXJzQXJlTnVtYmVyKCkKK3sKKyAgICBVQ2hhciBmaXJz
dCA9IGNvbnN1bWUoKTsKKyAgICBib29sIGFyZU51bWJlciA9IG5leHRDaGFyc0FyZU51bWJlcihm
aXJzdCk7CisgICAgcmVjb25zdW1lKGZpcnN0KTsKKyAgICByZXR1cm4gYXJlTnVtYmVyOworfQor
CisvLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3Mtc3ludGF4LyN3b3VsZC1zdGFydC1hbi1p
ZGVudGlmaWVyCitib29sIENTU1Rva2VuaXplcjo6bmV4dENoYXJzQXJlSWRlbnRpZmllcihVQ2hh
ciBmaXJzdCkKK3sKKyAgICBVQ2hhciBzZWNvbmQgPSBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFj
ZW1lbnQoMCk7CisgICAgaWYgKGlzTmFtZVN0YXJ0Q29kZVBvaW50KGZpcnN0KSB8fCB0d29DaGFy
c0FyZVZhbGlkRXNjYXBlKGZpcnN0LCBzZWNvbmQpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIGlmIChmaXJzdCA9PSAnLScpCisgICAgICAgIHJldHVybiBpc05hbWVTdGFydENvZGVQb2lu
dChzZWNvbmQpIHx8IHNlY29uZCA9PSAnLScgfHwgbmV4dFR3b0NoYXJzQXJlVmFsaWRFc2NhcGUo
KTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBDU1NUb2tlbml6ZXI6Om5leHRDaGFy
c0FyZUlkZW50aWZpZXIoKQoreworICAgIFVDaGFyIGZpcnN0ID0gY29uc3VtZSgpOworICAgIGJv
b2wgYXJlSWRlbnRpZmllciA9IG5leHRDaGFyc0FyZUlkZW50aWZpZXIoZmlyc3QpOworICAgIHJl
Y29uc3VtZShmaXJzdCk7CisgICAgcmV0dXJuIGFyZUlkZW50aWZpZXI7Cit9CisKK1N0cmluZ1Zp
ZXcgQ1NTVG9rZW5pemVyOjpyZWdpc3RlclN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3sK
KyAgICBtX3Njb3BlLnN0b3JlU3RyaW5nKHN0cmluZyk7CisgICAgcmV0dXJuIHN0cmluZzsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NUb2tlbml6ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1Rva2VuaXplci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTVG9rZW5pemVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDAgQEAKKy8vIENv
cHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlz
dHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisv
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZuZGVmIENTU1Rv
a2VuaXplcl9oCisjZGVmaW5lIENTU1Rva2VuaXplcl9oCisKKyNpbmNsdWRlICJDU1NQYXJzZXJU
b2tlbi5oIgorI2luY2x1ZGUgIklucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmgiCisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nVmlldy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CisjaW5jbHVkZSA8Y2xpbWl0cz4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDU1NU
b2tlbml6ZXJJbnB1dFN0cmVhbTsKK2NsYXNzIENTU1BhcnNlck9ic2VydmVyV3JhcHBlcjsKK2Ns
YXNzIENTU1BhcnNlclRva2VuUmFuZ2U7CisKK2NsYXNzIENTU1Rva2VuaXplciB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQ1NTVG9rZW5pemVyKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBjbGFzcyBTY29wZSB7CisgICAgcHVibGljOgorICAgICAgICBT
Y29wZShjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgU2NvcGUoY29uc3QgU3RyaW5nJiwgQ1NTUGFy
c2VyT2JzZXJ2ZXJXcmFwcGVyJik7IC8vIEZvciB0aGUgaW5zcGVjdG9yCisKKyAgICAgICAgQ1NT
UGFyc2VyVG9rZW5SYW5nZSB0b2tlblJhbmdlKCk7CisgICAgICAgIHVuc2lnbmVkIHRva2VuQ291
bnQoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgc3RvcmVTdHJpbmcoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpIHsgbV9zdHJpbmdQb29sLmFwcGVuZChzdHJpbmcpOyB9CisgICAgICAgIFZl
Y3RvcjxDU1NQYXJzZXJUb2tlbiwgMzI+IG1fdG9rZW5zOworICAgICAgICAvLyBXZSBvbmx5IGFs
bG9jYXRlIHN0cmluZ3Mgd2hlbiBlc2NhcGVzIGFyZSB1c2VkLgorICAgICAgICBWZWN0b3I8U3Ry
aW5nPiBtX3N0cmluZ1Bvb2w7CisgICAgICAgIFN0cmluZyBtX3N0cmluZzsKKworICAgICAgICBm
cmllbmQgY2xhc3MgQ1NTVG9rZW5pemVyOworICAgIH07CisKK3ByaXZhdGU6CisgICAgQ1NTVG9r
ZW5pemVyKENTU1Rva2VuaXplcklucHV0U3RyZWFtJiwgU2NvcGUmKTsKKworICAgIENTU1BhcnNl
clRva2VuIG5leHRUb2tlbigpOworCisgICAgVUNoYXIgY29uc3VtZSgpOworICAgIHZvaWQgcmVj
b25zdW1lKFVDaGFyKTsKKworICAgIENTU1BhcnNlclRva2VuIGNvbnN1bWVOdW1lcmljVG9rZW4o
KTsKKyAgICBDU1NQYXJzZXJUb2tlbiBjb25zdW1lSWRlbnRMaWtlVG9rZW4oKTsKKyAgICBDU1NQ
YXJzZXJUb2tlbiBjb25zdW1lTnVtYmVyKCk7CisgICAgQ1NTUGFyc2VyVG9rZW4gY29uc3VtZVN0
cmluZ1Rva2VuVW50aWwoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIGNvbnN1bWVVbmljb2Rl
UmFuZ2UoKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBjb25zdW1lVXJsVG9rZW4oKTsKKworICAgIHZv
aWQgY29uc3VtZUJhZFVybFJlbW5hbnRzKCk7CisgICAgdm9pZCBjb25zdW1lU2luZ2xlV2hpdGVz
cGFjZUlmTmV4dCgpOworICAgIHZvaWQgY29uc3VtZVVudGlsQ29tbWVudEVuZEZvdW5kKCk7CisK
KyAgICBib29sIGNvbnN1bWVJZk5leHQoVUNoYXIpOworICAgIFN0cmluZ1ZpZXcgY29uc3VtZU5h
bWUoKTsKKyAgICBVQ2hhcjMyIGNvbnN1bWVFc2NhcGUoKTsKKworICAgIGJvb2wgbmV4dFR3b0No
YXJzQXJlVmFsaWRFc2NhcGUoKTsKKyAgICBib29sIG5leHRDaGFyc0FyZU51bWJlcihVQ2hhcik7
CisgICAgYm9vbCBuZXh0Q2hhcnNBcmVOdW1iZXIoKTsKKyAgICBib29sIG5leHRDaGFyc0FyZUlk
ZW50aWZpZXIoVUNoYXIpOworICAgIGJvb2wgbmV4dENoYXJzQXJlSWRlbnRpZmllcigpOworCisg
ICAgQ1NTUGFyc2VyVG9rZW4gYmxvY2tTdGFydChDU1NQYXJzZXJUb2tlblR5cGUpOworICAgIENT
U1BhcnNlclRva2VuIGJsb2NrU3RhcnQoQ1NTUGFyc2VyVG9rZW5UeXBlIGJsb2NrVHlwZSwgQ1NT
UGFyc2VyVG9rZW5UeXBlLCBTdHJpbmdWaWV3KTsKKyAgICBDU1NQYXJzZXJUb2tlbiBibG9ja0Vu
ZChDU1NQYXJzZXJUb2tlblR5cGUsIENTU1BhcnNlclRva2VuVHlwZSBzdGFydFR5cGUpOworCisg
ICAgQ1NTUGFyc2VyVG9rZW4gd2hpdGVTcGFjZShVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4g
bGVmdFBhcmVudGhlc2lzKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiByaWdodFBhcmVudGhl
c2lzKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBsZWZ0QnJhY2tldChVQ2hhcik7CisgICAg
Q1NTUGFyc2VyVG9rZW4gcmlnaHRCcmFja2V0KFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBs
ZWZ0QnJhY2UoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIHJpZ2h0QnJhY2UoVUNoYXIpOwor
ICAgIENTU1BhcnNlclRva2VuIHBsdXNPckZ1bGxTdG9wKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJU
b2tlbiBjb21tYShVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gaHlwaGVuTWludXMoVUNoYXIp
OworICAgIENTU1BhcnNlclRva2VuIGFzdGVyaXNrKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tl
biBsZXNzVGhhbihVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gc29saWR1cyhVQ2hhcik7Cisg
ICAgQ1NTUGFyc2VyVG9rZW4gY29sb24oVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIHNlbWlD
b2xvbihVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gaGFzaChVQ2hhcik7CisgICAgQ1NTUGFy
c2VyVG9rZW4gY2lyY3VtZmxleEFjY2VudChVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gZG9s
bGFyU2lnbihVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gdmVydGljYWxMaW5lKFVDaGFyKTsK
KyAgICBDU1NQYXJzZXJUb2tlbiB0aWxkZShVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gY29t
bWVyY2lhbEF0KFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiByZXZlcnNlU29saWR1cyhVQ2hh
cik7CisgICAgQ1NTUGFyc2VyVG9rZW4gYXNjaWlEaWdpdChVQ2hhcik7CisgICAgQ1NTUGFyc2Vy
VG9rZW4gbGV0dGVyVShVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gbmFtZVN0YXJ0KFVDaGFy
KTsKKyAgICBDU1NQYXJzZXJUb2tlbiBzdHJpbmdTdGFydChVQ2hhcik7CisgICAgQ1NTUGFyc2Vy
VG9rZW4gZW5kT2ZGaWxlKFVDaGFyKTsKKworICAgIFN0cmluZ1ZpZXcgcmVnaXN0ZXJTdHJpbmco
Y29uc3QgU3RyaW5nJik7CisKKyAgICB1c2luZyBDb2RlUG9pbnQgPSBDU1NQYXJzZXJUb2tlbiAo
Q1NTVG9rZW5pemVyOjoqKShVQ2hhcik7CisgICAgc3RhdGljIGNvbnN0IENvZGVQb2ludCBjb2Rl
UG9pbnRzW107CisKKyAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW5UeXBlLCA4PiBtX2Jsb2NrU3Rh
Y2s7CisgICAgQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0mIG1faW5wdXQ7CisgICAgU2NvcGUmIG1f
c2NvcGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NUb2tl
bml6ZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXJJbnB1
dFN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NU
b2tlbml6ZXJJbnB1dFN0cmVhbS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw3MiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgVGhlIENocm9taXVtIEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisv
LyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
Ly8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NUb2tlbml6ZXJJbnB1dFN0
cmVhbS5oIgorCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0NTU1Rva2VuaXplcklucHV0U3RyZWFtOjpDU1NUb2tlbml6ZXJJbnB1dFN0cmVh
bShTdHJpbmcgaW5wdXQpCisgICAgOiBtX29mZnNldCgwKQorICAgICwgbV9zdHJpbmdMZW5ndGgo
aW5wdXQubGVuZ3RoKCkpCisgICAgLCBtX3N0cmluZyhpbnB1dC5pbXBsKCkpCit7Cit9CisKK3Zv
aWQgQ1NTVG9rZW5pemVySW5wdXRTdHJlYW06OmFkdmFuY2VVbnRpbE5vbldoaXRlc3BhY2UoKQor
eworICAgIC8vIFVzaW5nIEhUTUwgc3BhY2UgaGVyZSByYXRoZXIgdGhhbiBDU1Mgc3BhY2Ugc2lu
Y2Ugd2UgZG9uJ3QgZG8gcHJlcHJvY2Vzc2luZworICAgIGlmIChtX3N0cmluZy0+aXM4Qml0KCkp
IHsKKyAgICAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnMgPSBtX3N0cmluZy0+Y2hhcmFjdGVy
czgoKTsKKyAgICAgICAgd2hpbGUgKG1fb2Zmc2V0IDwgbV9zdHJpbmdMZW5ndGggJiYgaXNIVE1M
U3BhY2UoY2hhcmFjdGVyc1ttX29mZnNldF0pKQorICAgICAgICAgICAgKyttX29mZnNldDsKKyAg
ICB9IGVsc2UgeworICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IG1fc3RyaW5nLT5j
aGFyYWN0ZXJzMTYoKTsKKyAgICAgICAgd2hpbGUgKG1fb2Zmc2V0IDwgbV9zdHJpbmdMZW5ndGgg
JiYgaXNIVE1MU3BhY2UoY2hhcmFjdGVyc1ttX29mZnNldF0pKQorICAgICAgICAgICAgKyttX29m
ZnNldDsKKyAgICB9Cit9CisKK2RvdWJsZSBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbTo6Z2V0RG91
YmxlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpIGNvbnN0Cit7CisgICAgQVNTRVJUKHN0
YXJ0IDw9IGVuZCAmJiAoKG1fb2Zmc2V0ICsgZW5kKSA8PSBtX3N0cmluZ0xlbmd0aCkpOworICAg
IGJvb2wgaXNSZXN1bHRPSyA9IGZhbHNlOworICAgIGRvdWJsZSByZXN1bHQgPSAwLjA7CisgICAg
aWYgKHN0YXJ0IDwgZW5kKSB7CisgICAgICAgIGlmIChtX3N0cmluZy0+aXM4Qml0KCkpCisgICAg
ICAgICAgICByZXN1bHQgPSBjaGFyYWN0ZXJzVG9Eb3VibGUobV9zdHJpbmctPmNoYXJhY3RlcnM4
KCkgKyBtX29mZnNldCArIHN0YXJ0LCBlbmQgLSBzdGFydCwgJmlzUmVzdWx0T0spOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSBjaGFyYWN0ZXJzVG9Eb3VibGUobV9zdHJpbmct
PmNoYXJhY3RlcnMxNigpICsgbV9vZmZzZXQgKyBzdGFydCwgZW5kIC0gc3RhcnQsICZpc1Jlc3Vs
dE9LKTsKKyAgICB9CisgICAgLy8gRklYTUU6IEl0IGxvb2tzIGxpa2UgY2FsbGVycyBlbnN1cmUg
d2UgaGF2ZSBhIHZhbGlkIG51bWJlcgorICAgIHJldHVybiBpc1Jlc3VsdE9LID8gcmVzdWx0IDog
MC4wOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0u
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwOSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgVGhl
IENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
Ly8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
Ky8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
Ky8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZm5kZWYgQ1NTVG9rZW5pemVySW5wdXRTdHJl
YW1faAorI2RlZmluZSBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbV9oCisKKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdWaWV3Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0geworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKENTU1Rva2VuaXplcklucHV0U3RyZWFtKTsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBDU1NUb2tlbml6ZXJJ
bnB1dFN0cmVhbShTdHJpbmcgaW5wdXQpOworCisgICAgLy8gR2V0cyB0aGUgY2hhciBpbiB0aGUg
c3RyZWFtIHJlcGxhY2luZyBOVUwgY2hhcmFjdGVycyB3aXRoIGEgdW5pY29kZQorICAgIC8vIHJl
cGxhY2VtZW50IGNoYXJhY3Rlci4gV2lsbCByZXR1cm4gKE5VTCkga0VuZE9mRmlsZU1hcmtlciB3
aGVuIGF0IHRoZQorICAgIC8vIGVuZCBvZiB0aGUgc3RyZWFtLgorICAgIFVDaGFyIG5leHRJbnB1
dENoYXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fb2Zmc2V0ID49IG1fc3RyaW5nTGVu
Z3RoKQorICAgICAgICAgICAgcmV0dXJuICdcMCc7CisgICAgICAgIFVDaGFyIHJlc3VsdCA9ICgq
bV9zdHJpbmcpW21fb2Zmc2V0XTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdCA/IHJlc3VsdCA6IDB4
RkZGRDsKKyAgICB9CisKKyAgICAvLyBHZXRzIHRoZSBjaGFyIGF0IGxvb2thaGVhZE9mZnNldCBm
cm9tIHRoZSBjdXJyZW50IHN0cmVhbSBwb3NpdGlvbi4gV2lsbAorICAgIC8vIHJldHVybiBOVUwg
KGtFbmRPZkZpbGVNYXJrZXIpIGlmIHRoZSBzdHJlYW0gcG9zaXRpb24gaXMgYXQgdGhlIGVuZC4K
KyAgICAvLyBOT1RFOiBUaGlzIG1heSAqYWxzbyogcmV0dXJuIE5VTCBpZiB0aGVyZSdzIG9uZSBp
biB0aGUgaW5wdXQhIE5ldmVyCisgICAgLy8gY29tcGFyZSB0aGUgcmV0dXJuIHZhbHVlIHRvICdc
MCcuCisgICAgVUNoYXIgcGVla1dpdGhvdXRSZXBsYWNlbWVudCh1bnNpZ25lZCBsb29rYWhlYWRP
ZmZzZXQpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoKG1fb2Zmc2V0ICsgbG9va2FoZWFkT2Zm
c2V0KSA+PSBtX3N0cmluZ0xlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiAnXDAnOworICAgICAg
ICByZXR1cm4gKCptX3N0cmluZylbbV9vZmZzZXQgKyBsb29rYWhlYWRPZmZzZXRdOworICAgIH0K
KworICAgIHZvaWQgYWR2YW5jZSh1bnNpZ25lZCBvZmZzZXQgPSAxKSB7IG1fb2Zmc2V0ICs9IG9m
ZnNldDsgfQorICAgIHZvaWQgcHVzaEJhY2soVUNoYXIgY2MpCisgICAgeworICAgICAgICAtLW1f
b2Zmc2V0OworICAgICAgICBBU1NFUlQobmV4dElucHV0Q2hhcigpID09IGNjKTsKKyAgICB9CisK
KyAgICBkb3VibGUgZ2V0RG91YmxlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpIGNvbnN0
OworCisgICAgdGVtcGxhdGU8Ym9vbCBjaGFyYWN0ZXJQcmVkaWNhdGUoVUNoYXIpPgorICAgIHVu
c2lnbmVkIHNraXBXaGlsZVByZWRpY2F0ZSh1bnNpZ25lZCBvZmZzZXQpCisgICAgeworICAgICAg
ICBpZiAobV9zdHJpbmctPmlzOEJpdCgpKSB7CisgICAgICAgICAgICBjb25zdCBMQ2hhciogY2hh
cmFjdGVyczggPSBtX3N0cmluZy0+Y2hhcmFjdGVyczgoKTsKKyAgICAgICAgICAgIHdoaWxlICgo
bV9vZmZzZXQgKyBvZmZzZXQpIDwgbV9zdHJpbmdMZW5ndGggJiYgY2hhcmFjdGVyUHJlZGljYXRl
KGNoYXJhY3RlcnM4W21fb2Zmc2V0ICsgb2Zmc2V0XSkpCisgICAgICAgICAgICAgICAgKytvZmZz
ZXQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVy
czE2ID0gbV9zdHJpbmctPmNoYXJhY3RlcnMxNigpOworICAgICAgICAgICAgd2hpbGUgKChtX29m
ZnNldCArIG9mZnNldCkgPCBtX3N0cmluZ0xlbmd0aCAmJiBjaGFyYWN0ZXJQcmVkaWNhdGUoY2hh
cmFjdGVyczE2W21fb2Zmc2V0ICsgb2Zmc2V0XSkpCisgICAgICAgICAgICAgICAgKytvZmZzZXQ7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG9mZnNldDsKKyAgICB9CisKKyAgICB2b2lkIGFk
dmFuY2VVbnRpbE5vbldoaXRlc3BhY2UoKTsKKworICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RyaW5nTGVuZ3RoOyB9CisgICAgdW5zaWduZWQgb2Zmc2V0KCkgY29uc3Qg
eyByZXR1cm4gc3RkOjptaW4obV9vZmZzZXQsIG1fc3RyaW5nTGVuZ3RoKTsgfQorCisgICAgU3Ry
aW5nVmlldyByYW5nZUF0KHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0Cisg
ICAgeworICAgICAgICBBU1NFUlQoc3RhcnQgKyBsZW5ndGggPD0gbV9zdHJpbmdMZW5ndGgpOwor
ICAgICAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZy5nZXQoKSkuc3Vic3RyaW5nKHN0YXJ0
LCBsZW5ndGgpOyAvLyBGSVhNRTogU2hvdWxkIG1ha2UgYSBjb25zdHJ1Y3RvciBvbiBTdHJpbmdW
aWV3IGZvciB0aGlzLgorICAgIH0KKworcHJpdmF0ZToKKyAgICBzaXplX3QgbV9vZmZzZXQ7Cisg
ICAgY29uc3Qgc2l6ZV90IG1fc3RyaW5nTGVuZ3RoOworICAgIGNvbnN0IFJlZlB0cjxTdHJpbmdJ
bXBsPiBtX3N0cmluZzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IENTU1Rva2VuaXplcklucHV0U3RyZWFtX2gKKwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTGVuZ3RoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3Ro
LmgJKHJldmlzaW9uIDIwNDkwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCwxMSBAQCBlbnVtIExlbmd0aFR5cGUgewogICAg
IFVuZGVmaW5lZAogfTsKIAorZW51bSBWYWx1ZVJhbmdlIHsKKyAgICBWYWx1ZVJhbmdlQWxsLAor
ICAgIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZQorfTsKKwogY2xhc3MgQ2FsY3VsYXRpb25WYWx1ZTsK
IGNsYXNzIFRleHRTdHJlYW07CiAK
</data>
<flag name="commit-queue"
          id="310422"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>286926</attachid>
            <date>2016-08-24 18:24:40 -0700</date>
            <delta_ts>2016-08-25 11:34:03 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews113 for mac-yosemite</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>1538407</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
UT/ZVklXNV+swv21q1bLQ7yrEvdKMvWJXkkMG09umbYqGguz/Nn0q2J7fSaJOdRj+yy13o+rtPsT
kyu/PU+K802cjFXchHskiOsEqfT6o0fq9KwyDT1tvZFupGktu1sd3Kj+Q5fiR86eKYd2/IanMSps
UuTT8nab1YkH1Zi+rIKdqEvDi9RVvWpmq8ImfcN2n6gpC9mxqQKUlIdZQwkfIupEDPHa51yWJmlr
m1qF9zG3Y/Dzi4TqrG5OXmFPKFnqKsxYSO166KBL96LWt2koW1+15C2COC7lNoEpnlfVRcgry4te
lP95UZx71aurNKsZSnV1UHndFvWkf+g0U4WjGu9utNmf3pTFDAaVTlcHwer7OZIaH1kZKpip2KK5
nI3Z5NzuwmI0Kfmi8rrlIjzh2XSmxq03Qp5qH2uzQ/x0F8gszYr86ero0eOo4UIpvwrS7CH6WtXT
drCubzGl+nb4e7mX9nZIcr9z+56Uk9b2mVS7iDY7pPXNePXjJMgS1Qq15ql9KrDSXdIxpSxUwlSn
R7CUDrHJ7e4Q03pFLpgK7Fnow5bGHqen+w1j0cRYouG8tFkdZXu9bDjhJ5hhC/Adq6uuqwd1vFca
qt+NBmTgST6Ey2HlwXp2LGjeJjVQeZW6ZFcOpiqVWnWv2WVCXqgf65cXE4+IgewV5T1oVLXLqG8q
CoCQdWz9K86vrojRO3UihEOFf5wLzqzUb5ui1404UhGATb2VlVxhmy2N/fzFlvkuuEqOQr/rN1xz
GwBktww+OVIW4KEQmdlhot0Z8IXbXrWY0t5MI7Bhz8zeWU7qLEeDSZ1kx8kCLEmHqdJ1l7M9Q+sh
fsx21wrIEQLetGdeapLP3Kd2rnIcFEF5fmYa5N8a+xd6vOvUp0pXGac/qbpe2uubrbocO8F9U6Ua
qnRwqiq/LQ6eAJwneXAXNl1mSCjAZN8aq47iNC9TXpMoDt3yvabWAKgsp8S97tTp9+Y4UqdW0BFl
H5/WpBYhq0OxuLuoJUzv9BsRwgdCndUCqRuXgVI99gVDJxjun4xUDbY6sNbbGwuq7hbd1WQ2z8Y3
vKBrN5TM4cdpQ96Jglp0ecqieu0GdwWIv7IMDa1smVcWXHZRd6xswq70miUu7yUPRLjXFWZqSnph
oxP7dI9c4kKGmq8PpUbHOmjrkzPESGqoke6tbyfWl0ow1bKJWnBSWZQ7EB33LlDlG9loW78cXN6+
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
6H8iclO7v1B0s+xLkXqFV3jFU3EDUEsDBAoAAAAAAPiMGEkAAAAAAAAAAAAAAAANABwAZGlzcGxh
eWxpc3RzL1VUCQADVD6+V/VAvld1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA+IwYSaNX/ehQAAAA
jgAAADIAHABkaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRyYW5zZm9ybXMtc3RkZXJyLnR4
dFVUCQADVD6+V1Q+vld1eAsAAQT1AQAABBQAAABzL0osyMhMLnbOzytJrSixskpPLXEO8dXQVMgs
VsjLL1GoTC1RSM7PLUgsyUzKSVUozyzJUChKTc4vSsnMSwfKgLUV63G5oxtUjGYQMYYAAFBLAwQU
AAIACAD4jBhJ8paV1UcAAABJAAAAKQAcAGRpc3BsYXlsaXN0cy9sYXllci1kaXNwYXktbGlzdC1z
dGRlcnIudHh0VVQJAANUPr5XVD6+V3V4CwABBPUBAAAEFAAAAHMvSizIyEwuds7PK0mtKLGySk8t
cQ7x1dBUyCxWyMsvUahMLVFIzs8tSCzJTMpJVSjPLMlQKEpNzi9KycxLB8qAtRXrcQEAUEsDBAoA
AAAAAAuNGEkAAAAAAAAAAAAAAAAIABwAZWRpdGluZy9VVAkAA3U+vlf1QL5XdXgLAAEE9QEAAAQU
AAAAUEsDBAoAAAAAABeNGEkAAAAAAAAAAAAAAAATABwAZWRpdGluZy9wYXN0ZWJvYXJkL1VUCQAD
jj6+V/VAvld1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAC40YSX6p8SDpAAAAggEAADAAHABlZGl0
aW5nL3Bhc3RlYm9hcmQvY29weS1yZXNvbHZlcy11cmxzLXN0ZGVyci50eHRVVAkAA3U+vld1Pr5X
dXgLAAEE9QEAAAQUAAAAdY9BS8NAEIXv/RVzkkSk40EvSwkUbS4WlaQ058nuJC6kmbA7EfrvTWxE
EXqc9773ZmZXFG+FgZx8xw5UgIL98J8McawDRxmDZWgkQDMBBhGP0o0njvhMSrirSqy4fvGKezrL
qAeOGpGdV9+3OFBUroWCw5+uiFTzeujb1dWm8hucpycJjJ2Q44DLXWgb3HNL9jz524u2tsOQPD7c
p2AgKqm3UHDzrmGzdBjzP5LBVcsYG5iUEyt9VKgOuTGlhukfuLn7jeWBTjwrF+zIVuXPwldxDLfZ
DER1xjRjb9VLv6lFOkiWdJqlqy9QSwMEFAACAAgAF40YSVcYE0naAAAAUAEAACwAHABlZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtbm9wbHVnaW4tc3RkZXJyLnR4dFVUCQADjT6+V40+vld1eAsAAQT1
AQAABBQAAAB1jU9Lw0AQxe/9FHOSRKSTg4IMJVC0uSgqiTTnzWbSLGwzYXdS8dvb2IAieHx/fu/t
yvK1JCiM89yCCphge3diiFMTOMoULEMnAXrVkRC9WON7iUr3WZYhn5xfx49uhXvx05EjPho1uKsr
rLl5corV98SsHiTwmTctB1xe0Hb4zAdjP8/59uKt7Tgmd7dZCgRRjToLJXdvGjbLBtFfJId/IyIb
2CgnVoaoUL8XRJUGNxzg6uYHK4I58uxcanu2Kr8OX6RluM7nQtSWqJsGq06GTSPiIVnoNE9XX1BL
AwQUAAIACAAXjRhJVxgTSdoAAABQAQAAMgAcAGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1ub3Bs
dWdpbi14aHRtbC1zdGRlcnIudHh0VVQJAAONPr5XjT6+V3V4CwABBPUBAAAEFAAAAHWNT0vDQBDF
7/0Uc5JEpJODggwlULS5KCqJNOfNZtIsbDNhd1Lx29vYgCJ4fH9+7+3K8rUkKIzz3IIKmGB7d2KI
UxM4yhQsQycBetWREL1Y43uJSvdZliGfnF/Hj26Fe/HTkSM+GjW4qyusuXlyitX3xKweJPCZNy0H
XF7QdvjMB2M/z/n24q3tOCZ3t1kKBFGNOgsld28aNssG0V8kh38jIhvYKCdWhqhQvxdElQY3HODq
5gcrgjny7Fxqe7Yqvw5fpGW4zudC1JaomwarToZNI+IhWeg0T1dfUEsDBBQAAgAIABeNGEl3TYsd
4wAAAHcBAAAsABwAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLW5vc2NyaXB0LXN0ZGVyci50eHRV
VAkAA44+vleOPr5XdXgLAAEE9QEAAAQUAAAAdY9BS8NAEIXv/RVzkkSk40EvSwkUbS4WlaQ058lm
Ni6kmbA7EfrvTWxEEXqc9973ZmZXFG+FgZx8xw2oAAX74T8Z4lgHjjIGy+AkgJsCBhGP0o0njvhM
SrirSqy4fvGKezrLqAeOGpEbr75v8acgItW8Hvp2dRUvv4Pz9CSBsRNqOOByDFqHe27Jnid/e9HW
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
L2NhY2hlL25ldHdvcmstZXJyb3ItZHVyaW5nLXJldmFsaWRhdGlvbi1zdGRlcnIudHh0VVQJAAPp
Pr5X6T6+V3V4CwABBPUBAAAEFAAAAJ3MsQrCMBCA4b1PcaMuYtrQQhCh1MVBEBwUxCGm13gQLpJc
FN/e+gquPz9fXzzUGlRndG1UB/jOSjWrEJ0NkMQlfMYkxP7a6rZZ32Czw3vxWwMZeTxgztbjmeQx
WEEf08fAgksIy6r/WyYm+ZGnWafIe56igctxABeZ0cnc5udlA43VF1BLAwQKAAAAAABGjRhJAAAA
AAAAAAAAAAAAEgAcAGh0dHAvdGVzdHMvY2FudmFzL1VUCQAD4z6+V/VAvld1eAsAAQT1AQAABBQA
AABQSwMECgAAAAAARo0YSQAAAAAAAAAAAAAAABgAHABodHRwL3Rlc3RzL2NhbnZhcy93ZWJnbC9V
VAkAA+M+vlf1QL5XdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAEaNGEnGLa/wywAAADcCAAA7ABwA
aHR0cC90ZXN0cy9jYW52YXMvd2ViZ2wvb3JpZ2luLWNsZWFuLWNvbmZvcm1hbmNlLXN0ZGVyci50
eHRVVAkAA+M+vlfjPr5XdXgLAAEE9QEAAAQUAAAAtZBBawIxEIXP9VfM0V6WRhcLoQi6HhTqUTyU
HmaTMQbjRJJZxH9vVnvrqSw9zoP3vXlv0TmY1KDedT3RSgFds1LTKkSDAZKYRJeYxLP7mtUzVX/D
x4YPca4hROeKDFkwSa6qarT4M2pFbecKK5NsKWd09PmkLovppKEYA9kh4P65JvLBuy6h+Mh7L8cm
ni+B+muNbAMlDQ2aI1l4A2JsSya0aE7ENg9rtcuU+r1W3oj+xdYwHr28Dkpg+zPcoxcKuZhuhctd
CP9JvgNQSwMECgAAAAAAR40YSQAAAAAAAAAAAAAAAC8AHABodHRwL3Rlc3RzL2NvbnRlbnRkaXNw
b3NpdGlvbmF0dGFjaG1lbnRzYW5kYm94L1VUCQAD5j6+V/VAvld1eAsAAQT1AQAABBQAAABQSwME
FAACAAgAR40YSWXRGYh/AAAAlQAAAFEAHABodHRwL3Rlc3RzL2NvbnRlbnRkaXNwb3NpdGlvbmF0
dGFjaG1lbnRzYW5kYm94L3JlZmVyZXItaGVhZGVyLXN0cmlwcGVkLXN0ZGVyci50eHRVVAkAA+Y+
vlfmPr5XdXgLAAEE9QEAAAQUAAAADYgxDsIwDAB3XuEP0KQFBMrepQtS4QNp4qqphB3ZrgS/J7rh
TreZ1eBcP9w73+jDw3vvEpMhWS5aWYsVpmgW0/ZpUyPlhb9OUPmQhNpqRUE5bxhzk5qUWjF3u4bh
Gi63ANMLxnl+zvD+VRxFWAIclHEthBmKArFBJOBlx2SnP1BLAwQUAAIACABGjRhJZdEZiH8AAACV
AAAAagAcAGh0dHAvdGVzdHMvY29udGVudGRpc3Bvc2l0aW9uYXR0YWNobWVudHNhbmRib3gvcmVm
ZXJlci1oZWFkZXItc3RyaXBwZWQtd2l0aC1tZXRhLXJlZmVyZXItYWx3YXlzLXN0ZGVyci50eHRV
VAkAA+Q+vlfkPr5XdXgLAAEE9QEAAAQUAAAADYgxDsIwDAB3XuEP0KQFBMrepQtS4QNp4qqphB3Z
rgS/J7rhTreZ1eBcP9w73+jDw3vvEpMhWS5aWYsVpmgW0/ZpUyPlhb9OUPmQhNpqRUE5bxhzk5qU
WjF3u4bhGi63ANMLxnl+zvD+VRxFWAIclHEthBmKArFBJOBlx2SnP1BLAwQUAAIACABGjRhJZdEZ
iH8AAACVAAAAawAcAGh0dHAvdGVzdHMvY29udGVudGRpc3Bvc2l0aW9uYXR0YWNobWVudHNhbmRi
b3gvcmVmZXJlci1oZWFkZXItc3RyaXBwZWQtd2l0aC1tZXRhLXJlZmVyZXItZGVmYXVsdC1zdGRl
cnIudHh0VVQJAAPkPr5X5D6+V3V4CwABBPUBAAAEFAAAAA2IMQ7CMAwAd17hD9CkBQTK3qULUuED
aeKqqYQd2a4Evye64U63mdXgXD/cO9/ow8N77xKTIVkuWlmLFaZoFtP2aVMj5YW/TlD5kITaakVB
OW8Yc5OalFoxd7uG4RoutwDTC8Z5fs7w/lUcRVgCHJRxLYQZigKxQSTgZcdkpz9QSwMEFAACAAgA
R40YSWXRGYh/AAAAlQAAAGkAHABodHRwL3Rlc3RzL2NvbnRlbnRkaXNwb3NpdGlvbmF0dGFjaG1l
bnRzYW5kYm94L3JlZmVyZXItaGVhZGVyLXN0cmlwcGVkLXdpdGgtbWV0YS1yZWZlcmVyLW5ldmVy
LXN0ZGVyci50eHRVVAkAA+U+vlflPr5XdXgLAAEE9QEAAAQUAAAADYgxDsIwDAB3XuEP0KQFBMre
pQtS4QNp4qqphB3ZrgS/J7rhTreZ1eBcP9w73+jDw3vvEpMhWS5aWYsVpmgW0/ZpUyPlhb9OUPmQ
hNpqRUE5bxhzk5qUWjF3u4bhGi63ANMLxnl+zvD+VRxFWAIclHEthBmKArFBJOBlx2SnP1BLAwQU
AAIACABHjRhJZdEZiH8AAACVAAAAbwAcAGh0dHAvdGVzdHMvY29udGVudGRpc3Bvc2l0aW9uYXR0
YWNobWVudHNhbmRib3gvcmVmZXJlci1oZWFkZXItc3RyaXBwZWQtd2l0aC1tZXRhLXJlZmVyZXIt
bm8tcmVmZXJyZXItc3RkZXJyLnR4dFVUCQAD5T6+V+U+vld1eAsAAQT1AQAABBQAAAANiDEOwjAM
AHde4Q/QpAUEyt6lC1LhA2niqqmEHdmuBL8nuuFOt5nV4Fw/3Dvf6MPDe+8SkyFZLlpZixWmaBbT
9mlTI+WFv05Q+ZCE2mpFQTlvGHOTmpRaMXe7huEaLrcA0wvGeX7O8P5VHEVYAhyUcS2EGYoCsUEk
4GXHZKc/UEsDBBQAAgAIAEeNGEll0RmIfwAAAJUAAAB+ABwAaHR0cC90ZXN0cy9jb250ZW50ZGlz
cG9zaXRpb25hdHRhY2htZW50c2FuZGJveC9yZWZlcmVyLWhlYWRlci1zdHJpcHBlZC13aXRoLW1l
dGEtcmVmZXJlci1uby1yZWZlcnJlci13aGVuLWRvd25ncmFkZS1zdGRlcnIudHh0VVQJAAPlPr5X
5T6+V3V4CwABBPUBAAAEFAAAAA2IMQ7CMAwAd17hD9CkBQTK3qULUuEDaeKqqYQd2a4Evye64U63
mdXgXD/cO9/ow8N77xKTIVkuWlmLFaZoFtP2aVMj5YW/TlD5kITaakVBOW8Yc5OalFoxd7uG4Rou
twDTC8Z5fs7w/lUcRVgCHJRxLYQZigKxQSTgZcdkpz9QSwMEFAACAAgAR40YSWXRGYh/AAAAlQAA
AGoAHABodHRwL3Rlc3RzL2NvbnRlbnRkaXNwb3NpdGlvbmF0dGFjaG1lbnRzYW5kYm94L3JlZmVy
ZXItaGVhZGVyLXN0cmlwcGVkLXdpdGgtbWV0YS1yZWZlcmVyLW9yaWdpbi1zdGRlcnIudHh0VVQJ
AAPlPr5X5T6+V3V4CwABBPUBAAAEFAAAAA2IMQ7CMAwAd17hD9CkBQTK3qULUuEDaeKqqYQd2a4E
vye64U63mdXgXD/cO9/ow8N77xKTIVkuWlmLFaZoFtP2aVMj5YW/TlD5kITaakVBOW8Yc5OalFox
d7uG4RoutwDTC8Z5fs7w/lUcRVgCHJRxLYQZigKxQSTgZcdkpz9QSwMEFAACAAgAR40YSWXRGYh/
AAAAlQAAAG4AHABodHRwL3Rlc3RzL2NvbnRlbnRkaXNwb3NpdGlvbmF0dGFjaG1lbnRzYW5kYm94
L3JlZmVyZXItaGVhZGVyLXN0cmlwcGVkLXdpdGgtbWV0YS1yZWZlcmVyLXVuc2FmZS11cmwtc3Rk
ZXJyLnR4dFVUCQAD5j6+V+Y+vld1eAsAAQT1AQAABBQAAAANiDEOwjAMAHde4Q/QpAUEyt6lC1Lh
A2niqqmEHdmuBL8nuuFOt5nV4Fw/3Dvf6MPDe+8SkyFZLlpZixWmaBbT9mlTI+WFv05Q+ZCE2mpF
QTlvGHOTmpRaMXe7huEaLrcA0wvGeX7O8P5VHEVYAhyUcS2EGYoCsUEk4GXHZKc/UEsDBAoAAAAA
AEaNGEkAAAAAAAAAAAAAAAAPABwAaHR0cC90ZXN0cy9jc3MvVVQJAAPkPr5X9UC+V3V4CwABBPUB
AAAEFAAAAFBLAwQUAAIACABGjRhJyPlvg4MAAADAAAAALgAcAGh0dHAvdGVzdHMvY3NzL2JvcmRl
ci1pbWFnZS1sb2FkaW5nLXN0ZGVyci50eHRVVAkAA+Q+vlfkPr5XdXgLAAEE9QEAAAQUAAAAncyx
CsIwEIDhvU9xoy5CaqgQRCh1cRAEBwVxiOkZD8KdJBfFt7e+guvPz9fXCK0Fs3K2dcYAvosxy0WS
4BNkDRmfkpU4XjrbGXuF9RZvNW4cFORxj6X4iCfSx+AVo+SPgxnXlOZN/7dMTPojj5NOwju+i4Pz
YYAgzBh0atPz8onG5gtQSwMECgAAAAAAVo0YSQAAAAAAAAAAAAAAABEAHABodHRwL3Rlc3RzL21l
ZGlhL1VUCQADAz++V/VAvld1eAsAAQT1AQAABBQAAABQSwMECgAAAAAATI0YSQAAAAAAAAAAAAAA
ABoAHABodHRwL3Rlc3RzL21lZGlhL2NsZWFya2V5L1VUCQAD8D6+V/VAvld1eAsAAQT1AQAABBQA
AABQSwMEFAACAAgATI0YSXv7X7hSAQAAfwMAADkAHABodHRwL3Rlc3RzL21lZGlhL2NsZWFya2V5
L2NsZWFyLWtleS1obHMtYWVzMTI4LXN0ZGVyci50eHRVVAkAA/A+vlfwPr5XdXgLAAEE9QEAAAQU
AAAAzVJLTwIxED7Lr5ijXDawLCDVkPAwaiKGhBAPxENpZ0tDt920U4n/3q6oIfEmMfE4nZnvNd10
h6zIWV5keX/4Ajer27vlerEcw4QIq5qekA7O7xfOanJ+hRRrBtYRBCTSVkGswR5noDoOXQOX0mMI
oAMYJ7hpbU5Yrv6MZRIV5AV8cQEeQrfbyz6a4El4rJ1v4DaDYpAXSceDLd2YpXWlGpZA3FPIsuwX
UHPcRpWwkuJFUsUVPh5Rp2lpzyAtGpQnSRSj/j9K4lt+E8HM2VKr6DlpZ5817Wauqg021T230qBn
MONihxI6gJZvkzPYcrFHK8N52a0D+uYqcy2I/cBmcNm6aJ+EOMg7pyEGVMtY1XM0+hX9RIhYRcMJ
5TSWZaO6w0AemyB18xSg9K4Cj7zx4miXOsJZi4JSPRz1B738LEdWfn6HjxyTFuX8W/JhozHt1jtQ
SwMECgAAAAAAUo0YSQAAAAAAAAAAAAAAABUAHABodHRwL3Rlc3RzL21lZGlhL2hscy9VVAkAA/s+
vlf1QL5XdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAE2NGEnlL8tISQIAAL0FAABFABwAaHR0cC90
ZXN0cy9tZWRpYS9obHMvaGxzLWFjY2Vzc2libGl0eS1kZXNjcmliZXMtdmlkZW8tbWVudS1zdGRl
cnIudHh0VVQJAAPxPr5X8T6+V3V4CwABBPUBAAAEFAAAAM1UwW7bMAw9L1/BY3uIE6dO0nhDgdRZ
1wHNECQNegiGQbVpW4gseRLdrH8/Km6LBAV2aDdg8sWUyMfHR0qbcBxHg3gQBaNR9B2ub28XS/zZ
oCPIZXFNVD+ZM5ktMUX5gEt0tdEOE6HUvUi3Mdj2IIOS/dlqzyHqR3CC1hoL3XAwOTs/hZz/vVPc
64WDcdDnL4zP+/1+r8JMil6pXE8b3cVf0hFq6u63u7lUGFR11Nn8mS6bs6aqr6QWar28mWrmXBnC
aZYxKxeDaH/gJTmHsS80Vv0lXuMh8/q0+vxlsZ4vLmBKhFVN35B2xm7nRksydoXU1DFoQ+CQSOoC
mhp06wNV6/Txhax0oEwq1FGW4T/LMm0KGETwnAtw58LwLNgfgqXUYm2sh9uMotFkwDy+6txcxBxe
FD6LI2HJBUHwBqgZ3jcFYzHjObMSBd60qJccxKPGgQqz9wB7conRPC6NFSSNvpNUJqaqFXrrWuhM
oY0hEWnJI90H1OKec4KfddSZO2zDeMzQvOBKFiuyKKqFEo9o4YIX5HXufkwVodWC8IZHJymFLjDj
OkpjnBdLchskkxbPbrwDil1fpflfun3QorVD65s/kynFr4SK4aTz4fSojslhHXN/h674CvFLkjaK
a7+84yublJhuE8HFzFG4xu4RdbaTGZWed8Eys1ZArKVvJ7EDa/YgrBSavLSssa/f8ssgj8NzayoY
nUXRMAQyMIom55PhK4ZvaWjSWMsPw0Efaxaad96lsM6ebsF+SBm1MPaRddWNUqed31BLAwQUAAIA
CABNjRhJyG26f8gBAACfBQAAQAAcAGh0dHAvdGVzdHMvbWVkaWEvaGxzL2hscy1hY2Nlc3NpYmxp
dHktZGVzY3JpYmVzLXZpZGVvLXN0ZGVyci50eHRVVAkAA/E+vlfxPr5XdXgLAAEE9QEAAAQUAAAA
zZRBa9tAEIXP9a+YY3MJsS27tVoMitK0hagYTEghlDLWjlaLV7vq7igm/76zTgM2ORQaKN6bljdv
Ru8bqRg0TDIYv8uzST6ZAe3ieDw9t75GC4HrQL0PbJy+n2fzxeQHfLyizaCXOURyqqIYUdOd4bZE
Ju3DYw5v3WDt2ag4QWfjDCfLtbgb7766xufwfVVC7Z2jmuVONA9ojRrdP/ufTxdT8Vh/+ry6rVZL
KJip6/kb8c6HbeXF04c18dDn4DzL+Jyaw9CDe9JA9yT6AKhUkN5gIuzH/U9dXsOC/6C48VqL4lKK
tjlIoaXDkLKLVCYHro1ecyDsVhYfKcBSDjR9E38Wlik4wXljIpctOk1KrFrvY3qVRMfIQPgskxuw
In3R5uRSYgxcetcYPQRMa7RfXN/1ltLTF3TKUsihxLolBRdADjcSIGyw3sq6x9chuo0U0jJfmZrz
F97y4YzenB2FmB2GWJEyeG0slWjrwUrwl3eFU2VL9bZESbIijEPYOzq1M4rbFJoWxgIKWECmBFgE
AuwBg0HHiasATuEH+jWY4/Im+A7m0yybjYE9zLPF+8XsaMLZP25TOYRAjg+WqBfKcnOSP6S/Of8G
UEsDBBQAAgAIAE2NGElwB1W5xgEAAEUFAAA6ABwAaHR0cC90ZXN0cy9tZWRpYS9obHMvaGxzLWF1
ZGlvLXRyYWNrcy1oYXMtYXVkaW8tc3RkZXJyLnR4dFVUCQAD8j6+V/I+vld1eAsAAQT1AQAABBQA
AADNVF1r3DAQfO79in1sXkLv4vtyyoHjNG0hLgdHSCCUsmetZXE6yZXWOfLvu7o0UJO3hkD05mV2
dj0zUtFrmGQwnufZJJ9MgQ5xPD47tb5GC4HrQJ0PbJy+n2Wz5eQnfL6kba9XOURyqqIYUdOt4bZE
Ju3DYw4fXW/tyah4h8zGGU6UG2E33n13jc/hbl1C7Z2jmqUmmAe0Ro3un/lPF/OFcGy+fF3fVOsV
FMy07/gH8cGHXeWF04cNcd/l4DzL+pyGQ9+Be8LA/gl0DqhUkNlgIhzXHUxZvtmU13jBf6249loL
4kKadjlIo6WBSIuZtMmBK6M3HAj3a4uPFGAlB5quib8KyxSc2HltIpctOk1KqFrvY/qV5I6RhfAZ
JhWwAh2Mmb9HlRgDl941RvcBU4yOwfX7zlL6+oZOWQo5lFi3pOATkMOtCAhbrHcS9/g6i24ihRTm
S1Nz/oJbLs7ow8lAxEGgK1IGr4ylEm3dWxH+4rZwqmyp3pUoSlaEsQ9HRqcORnGbRNPisRgFLEYm
BVgAYtgDBoOOk69icBI/0O/eDNub4PcwO8uy6RjYwyxbLpbTFxv+T5rKPgRy/E+IOnFZKm/4IP0B
UEsDBBQAAgAIAE6NGEkkkWkbyQEAAJ8FAABBABwAaHR0cC90ZXN0cy9tZWRpYS9obHMvaGxzLWF1
ZGlvLXRyYWNrcy1sb2NhbGUtc2VsZWN0aW9uLXN0ZGVyci50eHRVVAkAA/M+vlfzPr5XdXgLAAEE
9QEAAAQUAAAAzZRBa9tAEIXP9a+YY3MJsSIrtVoMjtK0hbgYTEghlDLWjlaLV7vq7igm/z6zTgM2
ORQaKN6bljdvRu8baT5oyHIYX5R5VmYF0DaOx+en1tdoIXAdqPeBjdP3RV5Ms5/w6YrWg56VEMmp
BcWImu4MtxUyaR8eS3jvBmtPRvMjdDbOcLJcibvx7ptrfAk/lhXU3jmqWe5E84DWqNH9i/9plk3E
Y/X5y/J2sZzBnJm6nr8Tb33YLLx4+rAiHvoSnGcZn1NzGHpwzxronkUfAZUK0htMhN24/6nLW1jw
HxQ3XmtRXErRpgQptLQf0uSskDI5cG30igNht7T4SAFmcqDpm/hrbpmCE5w3JnLVotOkxKr1PqZX
SXSMDIQvMrkBK9KDNhfHmBJj4Mq7xughYFqj3eL6rreUnr6iU5ZCCRXWLSk4A3K4lgBhjfVG1j2+
DdFtpJCW+crUXL7ylg9n9O7kIMTpfogLUgavjaUKbT1YCf7ybu5U1VK9qVCSXBDGIewcndoaxW0K
TQtjAQUsIFMCLAIB9oDBoOPEVQCn8AP9HsxheRN8B8V5nk/GwB6KfPphOnk14b9sUzWEQI73lqgX
ynJzlD+kvzk/AVBLAwQUAAIACABOjRhJX802rcUBAABFBQAAMAAcAGh0dHAvdGVzdHMvbWVkaWEv
aGxzL2hscy1hdWRpby10cmFja3Mtc3RkZXJyLnR4dFVUCQAD8z6+V/M+vld1eAsAAQT1AQAABBQA
AADNVMFq20AQPddfMcf2EixZcWqlGBylaQtRMZiQQihlrB2vFq921d1RTP4+s04DTnNrSMnetLx5
M++90S4GDXkB2UlZ5GV+ArSLWTY5sr5BC4GbQL0PbJy+mRbTWf4TPp3TetDzEiI5VVOMqOnacFsh
k/bhroT3brD2w2jxBpmNM5woV8JuvPvmNr6EH8sKGu8cNSx3grlFa9To5pH/KJ9lwrH6/GV5VS/n
sGCmrufvxDsftrUXTh9WxENfgvMs43NqDkMP7gED3QPoFFCpIL3BRNiP+5+6vCQL/hPFpddaEGdS
tC1BCi0dmjQZj6VMDlwYveJA2C0t3lGAuRzY9Jv4a2GZgpM4L03kqkWnSQlV631MUlI6RgbCR5jc
gBXoszZvziXGwJV3G6OHgGmN9ovru95S+vqKTlkKJVTYtKRgDORwLQbCGputrHt8IjE/lFiTMnhh
LFVom8GKLWfXC6eqlppthaKzJoxD2HM5tTOK2yRJSwJiI7DYnOZjAYidtxgMOk6ui/3JmkC/B/O0
fBN8B9NJURxnwB6mxezj7PjZhP+SdTWEQI4PIu4lA7l52YpeRQrpZz43jUj721t5OEbvXvNBugdQ
SwMEFAACAAgATo0YSfwbjjkwAQAA3gMAACwAHABodHRwL3Rlc3RzL21lZGlhL2hscy9obHMtcHJv
Z3Jlc3Mtc3RkZXJyLnR4dFVUCQAD9D6+V/Q+vld1eAsAAQT1AQAABBQAAADNk0FLAzEQhc/2V8zR
Xoq7XbsapVC3ooKVQikKxUOanaahabIksxb/vbOtIkUQpAg9Jrz53mTmZVBrSDNIcpGlIs0BNzFJ
uh3rlbQQSAWsfCDj9KyX9S7TV7ge4rzWfQERXTnCGKXGZ0PLQhJqH94FnLra2nZrcIRk4ww1yAnT
jXcPbuEFvIwLUN45VMR3rHmT1pSt2Re/k+ddZkxu78bT0bgPAyJcV/SEtPFhNfLM9GGCVFcCnCdu
nxpzqCtwOw2sd6IrkGUZ2BtMhG27ey7Zv7nsT+ziT7ugz1U8eq1ZccNFKwFcaPF7SBed8yQ5xvZJ
Biq8WxhdB9nsd5sov64sNqd76UqLQUAh1RJLOAN0cs4vg7lUK85hPGx204ihSdnQKBI/2Jzo1kn7
IIfff8oHUEsDBBQAAgAIAE+NGEki6ot+KwEAAIQDAAAwABwAaHR0cC90ZXN0cy9tZWRpYS9obHMv
aGxzLXZpZGVvLXJlc2l6ZS1zdGRlcnIudHh0VVQJAAP1Pr5X9T6+V3V4CwABBPUBAAAEFAAAAM2T
QUsDMRCFz+6vmKO9lO62VhqlsG5FBSuFUhSKhzQ7TcOmyZLMWvz3zrZ6KIIHi+Ax4c33JjMveaMh
G0B6KQaZyEaAu5im/a71SloIpALWPpBxejkcDEfZK1xPcNXosYCIrpxijFLjs6FNIQm1D+8Czl1j
bSfJf002zlCLnDPdePfg1l7Ay6wA5Z1DRXzHmjdpTZksv/jdiyxlxvz2braYzsaQE+G2pieknQ/V
1DPThzlSUwtwnrh9as2hqcEdNLA9iK5AlmVgbzAR9u0euWR/5pKfsAv6XMWj15oVN1xUCeBCi0dD
6vf+Y/skAxXerY1ugmz3u0+U39YW29O9dKXFIKCQaoMl9ACdXPHLYCVVxTmMp81uETG0KZsYReIb
mxOdnHVOcvj5p3wAUEsDBBQAAgAIAFCNGEmud5fNfgEAACoGAAA6ABwAaHR0cC90ZXN0cy9tZWRp
YS9obHMvdmlkZW8tY29udHJvbHMtbGl2ZS1zdHJlYW0tc3RkZXJyLnR4dFVUCQAD9z6+V/c+vld1
eAsAAQT1AQAABBQAAADtlEFrGzEQhc/1r5hjcwm7WttJ1BJw7JAG6rLghhZCD7J2VhaWNYs029B/
39k4h5qcnLTQQo8rnr55evPYWe9AjaE802Ol1QXgQy7L6jSQNQES24QdJfbR3U/H0wv1Dd4vcN27
Sw0ZY7PEnI3DL543c8PoKP3Q8Db2IZyMZi8m++h5QK6E7inexpY0fK3nYClGtCxnovlugm9G93t+
VZxOilIYq+ub+m5ZX8KMGXcdf0J+oLRdkjAprZD7TkMkFvs8DIe+g7jXwG4vegemaZLMBp/h0e7B
FPXHphwkVhVH7YKfVvGRnBPFlVzaapCLAQ9CUpO/0T6bxHOKrXd9MsN+HxtFuy7g8PXBxCZg0jA3
doMNCDuatbwM1sZupYf5ddndZUxDyxbesn7GlkaP3pyMdh061ZkkWqgx14msPP9zrs0QtAVMiZL0
EurbBZSFgryhPggGoayGlApofUCgtpWRUJ1Nj0WWvyAnz4mTc3X+3+VvdPmaTh3xb/xHyD8BUEsD
BBQAAgAIAFKNGEm23+jNrQIAAIY+AAA8ABwAaHR0cC90ZXN0cy9tZWRpYS9obHMvdmlkZW8tZHVy
YXRpb24tYWNjZXNzaWJpbGl0eS1zdGRlcnIudHh0VVQJAAP7Pr5X+z6+V3V4CwABBPUBAAAEFAAA
AO2b30/bMBDHn9e/4h7HA22SlrZkG1OWshUJpqiANgnx4CbXxMKxM9sB8d/vQjvEtEn7wUBDnPpS
p+evP3f+nhMpatKWEI0gnMSjKB6GgFcuDId9ZXKhwPrcYmOsl7o8G4/Gu9E5vJ7hsi33YnCoiyN0
TpT4SfoqFR5LY69jeKlbpbZ6yV8rSy19J3lM6tLoA70yMXzOUsiN1ph7ukYxl0LJonf2Tb8/nkzO
YX5yki3wS4vOw0qWc++bzXAmiwXmKC9xga4x2mEqlFqK/CIGbTppj9rDIerSV2DXoQVsA1qbmgJB
OoiC4FcL0nDW1s17qYU6XRwmmlatjcekKCylE4NYf4EwmvQD+oQ0jWKhtQoqwo0Hg9uf4mkQBIMa
CykGNMm0Nkc3qJQblKjRUsW3L03Rb6rmbdHSkArzppvyG5CbYWqRVPatNZRkXVMFYkCdm5aqYSl9
obv8jY1hee0RrNAl0sXibsnUumTb60i6/NNiTXdph4/3P2SnR9keJN5j3fiP6K+MvTgytOPGHqNv
m243PJnLd9aAtgG9joF6HfTqtoK0xo2ZHmmV5B6d4jeNcmjKkiLe0SSyHU1UeNfCkyD6H/G9sD41
mpyzMdlNv5u6UdiN5uQHhWSRVOQVeSYgB4klZQZdd9Ep4e5Xu1OHtjsDZjK/cef32nTe9F5s9eoG
y6gRlmIhQ5dZQ63iTlwmukLnG29KDdnBDMIgAleZVpEMQjjsqhRQZygEs1rRkjCcjP9UMrwjufOj
4s40mjLlP6RMHuzOxbvElEzJlEzJlEzJlEzJlPzkyl5iSqZkSqZkSr6rsZeYkimZkimZkimZkimZ
kimZkimZkimZkimZkimZkimZkimf29uP6MH+R8HKrPwYyk+x60bPPP8dfufKlEzJlEzJlEzJlE+G
8itQSwMEFAACAAgATI0YSdfMBM3MAAAANwIAADIAHABodHRwL3Rlc3RzL21lZGlhL21lZGlhLWRv
Y3VtZW50LXJlZmVyZXItc3RkZXJyLnR4dFVUCQAD8D6+V/A+vld1eAsAAQT1AQAABBQAAAC1kDFr
wzAQhef6V9yYLMZOjAuiFFJnSCAdS4bS4SxdFBHlZKQzof++ctqtUzHd7g7e9+69zWhh1UD9qJqV
ygPdUl2vSx80eoiiIw0himP73jZtU33A055P4VmBD9bmMyTBKKksy2LzZ9SW+tFmViJ5pZTQ0uGb
+pJFFwVZ6MnMAU/PdYFPzo4RxQU+Ojl34Tp4mrYdsvEUFXSoz2SgAmLssyf0qC/EJs1L9ZYoTn1t
nRb1i61gUTwsZzmw+SnunguFbIifmcuj9/9J/gJQSwMEFAACAAgATY0YSX62O0PgAAAArAIAACoA
HABodHRwL3Rlc3RzL21lZGlhL21lZGlhLWRvY3VtZW50LXN0ZGVyci50eHRVVAkAA/E+vlfxPr5X
dXgLAAEE9QEAAAQUAAAAtZHBSgNBDIbP9ilytBfp1qXCIELdHiy0IIgoiIfsbDodOiZlJlvx7c2K
Nw+Ci7ckJN+f/Fn2AeY1VFeunjsL6L1U1eVFEo8JsvpMR8kaObws6kU9e4XrFbV9uHFQiLstlYKB
nqLuG1QKkj8cnHOf0nSy/DM5ctQB+WD0KLzmnTh4vm/ACzN5tZr1nDDFboRKIf1efyMhWMetDR0c
2GCiUWDFrI3wLoY+47Dtlz/ydkw0ZHfIXaLsoEG/pw5mQIytaUKL/mCulnFXPRbKg2er6NX9YNt/
JmfTUQr/9fffyJ9QSwMEFAACAAgATo0YSfqMDVPqAAAAxgMAADkAHABodHRwL3Rlc3RzL21lZGlh
L21lZGlhLXBsYXktc3RyZWFtLWNodW5rZWQtaWN5LXN0ZGVyci50eHRVVAkAA/M+vlfzPr5XdXgL
AAEE9QEAAAQUAAAA3ZPBSgNBDIbP9ilytJfSXdcWBhHq9mChQkGKgnjIzqbToWOmzGSVvr1Z8eap
Ll48JiTfn/whi85BWUExN1Vpymugj1wUV5MQLQZIYhMdYxLP7mVWzarpK9wsqencrYFM3D5Qzujo
ycu+RiEX08nAJXchjEeLX5M9e+mRj0r3kVe8iwaeNzXYyExWNKc17xh8O0Alk3yPv47OacWdNh0M
aGOgQWDBJHXknXddwn7aL3/i2zFQH90jt4GSgRrtnlqYAjE2qgkN2oO6modttc2Ues+W3or5wdb7
jC7GgxT+6u7nkef/nHzOF3wCUEsDBAoAAAAAAFyNGEkAAAAAAAAAAAAAAAAeABwAaHR0cC90ZXN0
cy9tZWRpYS9tZWRpYS1zb3VyY2UvVVQJAAMPP75X9UC+V3V4CwABBPUBAAAEFAAAAFBLAwQUAAIA
CABRjRhJMnb8/00BAACdBAAAQgAcAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlh
c291cmNlLWFwcGVuZC1idWZmZXItc3RkZXJyLnR4dFVUCQAD+j6+V/o+vld1eAsAAQT1AQAABBQA
AADN0k1PwzAMBuA7v8I3xmFrk3XtNokDMCYmMQmxwQVNyEvcLSJNKicFyq+nk/g4cWY3y7KS57X8
JIppJqdDMRByvIGScbdEZ0pv9fNdE/aXbaQAwewcWksaiPm8L/I0y6H3Mjc/w9fMnp8fHL3XpCLp
hTNxhhHPoLci5Z2G0zK29Slg9BWQU75xkZj0WdeBZOUbVnSFak/JlWdakjb4W/XFKJcDmaXJHfvo
u4coJHPPFcYbdNoSh2TpXw0lB9KhmHdBKnLx2zdQYI0jEPkwPZGpyPvpuC8z+IqfDeQ4hVlT1ffk
NPGaiZ7yLB/mU5HJ0aRIN7DYOc/G7aCLE9nbtaloi4EgUIRtC8qa7kPYksKm6148rrCqLV02ZUk8
M6G22N5iSwxvGAC17tYZPSCE1qk9e2c+iP+wyT9t2VgU/2sbHbGtOGLb5Hhtk+O4t09QSwMEFAAC
AAgAU40YSa40Hko9AQAAewMAAFAAHABodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRp
YXNvdXJjZS1jb25maWctY2hhbmdlLW1wNC12LWJpdHJhdGUtc3RkZXJyLnR4dFVUCQAD/T6+V/0+
vld1eAsAAQT1AQAABBQAAADlkM1OAkEQhO88Rd+AA+wvC5J4EJBIIgkR9EIIaWZ6l4mzM5ueWXV9
epdE5SG4VSqV7vpqH42naTxNRsMwCg+QMxZrNCq3Wh43tTvPGk8OnCoMak0SiPl+EGVhmkHvfan+
w4/Mlo+vhr4qEp7kyii/QI996G1JWCOhm/um6gJ6WwIZYWvjiUn2WweCra1Z0BzFmYK5ZVqTVHhV
g2iUxcM4DYMNW2/bQ+SCpeUS/RMaqYldsLYfioJLpYtYtiAlGf/XbyhAK0MQZUnY2V+h49ENQid3
twIdh1E2CCeDOIVf/PEwnKSwqMvqhYwk3jHRPkuzJJtGaZzGSXKAVWEsK1NAi+PZ6p0q6YSOwJGH
UwNCq/YhnEhg3boPb1ssK02zOs+JF8pVGptnbIjhEx2glO2c3gKCa4w4szXqm7jzA1BLAwQUAAIA
CABUjRhJHgX92j0BAAB7AwAAUgAcAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlh
c291cmNlLWNvbmZpZy1jaGFuZ2UtbXA0LXYtZnJhbWVyYXRlLXN0ZGVyci50eHRVVAkAA/8+vlf/
Pr5XdXgLAAEE9QEAAAQUAAAA5ZBBT8JAEIXv/Iq5AQdou60FSTwISCSRhAh6IYYMu1PYuN1tZrdq
/fWWROVHcHt5mbx539slo0kmJulomCbJGxSMxxVaXTij9uvan6ZNIA9eHy0aQwqI+W6Q5HGWQ+99
of+PH5gd718sfVUkA6ml1WGOAfvQ25B0VkG3CE3VBQyuBLLS1TYQk+q3DkQbV7OkGcoTRTPHtCKl
8aIGyU0uhiKLozW74Nog8tHCcYnhEa0yxD5auQ9N0bnSWSxakJJs+Os3lGC0JUjyNO7sLtBifIXQ
WXot0CJO8kE8HogMfvFvh+lYwLwuq2eyinjLRLs8y9N8kmQiE2m7zfJoHWt7hBYnsDNbXdIBPYGn
AIcGpNHtQziQxLp17183WFaGpnVREM+1rww2T9gQwyd6QKXaOYMDBN9YeWJn9Tdx5wdQSwMEFAAC
AAgAWI0YSZPieS2LAAAAnAAAADkAHABodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRp
YXNvdXJjZS1wbGF5LXN0ZGVyci50eHRVVAkAAwc/vlcHP75XdXgLAAEE9QEAAAQUAAAADcixCsIw
EADQ3a+4H6g0MSSlm9JFcNLiIg7X5FoDaVIuLRK/3m6PJ2uhq7qppAJhWiVbZY5Gaei2eblTdMQ9
E7200ifdCiVVI8wbrlNM7OMENsWVU+j9TANmgkwrDAVs8BR3kcVt3/PzgfMS6LKNI3Hn8xKw3LAQ
wxczoHPkYE2AkEu0H07R/4gPf1BLAwQUAAIACABajRhJppwYI6gAAAAMAwAAOwAcAGh0dHAvdGVz
dHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXJlbW92ZS1zdGRlcnIudHh0VVQJAAML
P75XCz++V3V4CwABBPUBAAAEFAAAAM3RvQ6CMBiF4d2r+G4A0z+KsmlYTJyUuBiHUj6wSWlJCzH1
6uUCdJbt5J2e5DBCZUZ2GRNAi1KwMqdbRghU8zBe0LUY6oB4l0JyWVLB8r2UDzj1zgfjetDeTcHb
2gzYqIgQcYImgbYG3bJQq3mph9tVDaPF49x1GCoTR6vSWSUM8FIRVNtiC5MHBTE5/QzemTeGDftq
4z9tBWX8v7Zixbb9ej+lfBW2D1BLAwQUAAIACABcjRhJ15bpIqQAAADUAQAARgAcAGh0dHAvdGVz
dHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXNvdXJjZWJ1ZmZlci1tb2RlLXN0ZGVy
ci50eHRVVAkAAw8/vlcPP75XdXgLAAEE9QEAAAQUAAAAxc69DoIwFEDh3ae4L6Ch/8imYTFxUuJi
HEp7wSbQkhZi8OnlAWTV7eRMH82I3Gb5lnIgquC0EGLHKINy6ocLeouxioh3ySWTBeGU50Q94NT6
EJ1vwQQ/xtBVrsdaJ4SEI9QzmM6hXwqNnpZ7uF11P3R4nJoGY+nS0On5rGeM8NIJtLVoYQygIc3e
PGPw7o1xQ7/a1KpN7KX8q43RVZsiVPzK9gFQSwMEFAACAAgATo0YSU2fjTjsAAAAXwEAAC0AHABo
dHRwL3Rlc3RzL21lZGlhL3BkZi1zZXJ2ZWQtYXMtcGRmLXN0ZGVyci50eHRVVAkAA/Q+vlf0Pr5X
dXgLAAEE9QEAAAQUAAAAhY9Pa8MwDMXv/RQ69ZY4CYUkhlBKt7HDDiN0p7KDG6uJwf9my4N++zls
7XXS5T1+T0I61y3fNbzpyrrqP+H1dHof8SthJLiqebVPyfgXZYX+GN8OVo5oHOFByoAxchC/Auqm
LavcdR7LWUhBw0LkOWMPxLuqqphBqQT7VhJdQUtwRBploZ2Q5TSrvRUGh7zSpTBhZJQvKb28bu/R
oV9rSzePg/Beq0mQcpblzOb87zN/9hhQED6H4MLRGYOWOKCdXLKEASUIC7hCDpcbIQRhZwSNdqYF
jIpG0LRAAXFxSUu4PFgDKt5123e7zQ9QSwMEFAACAAgAT40YSUwq8ODAAAAAkgEAAC8AHABodHRw
L3Rlc3RzL21lZGlhL3JlbG9hZC1hZnRlci1kaWFsb2ctc3RkZXJyLnR4dFVUCQAD9T6+V/U+vld1
eAsAAQT1AQAABBQAAAClkDFvwjAQhWfyK26EpSIhosWqKkEYQKIjYqg6XOzDWDHnyL6o6r/HRUww
tR2fdO/7dG85WKhqKJ9VXanqBegrleXsyQeNHqLoSH2I4th+zOt5Pf2E1zW1g31TkEjeKSW0tAvW
5otVLnUKctGTKZZ/BwtGaQIfnR0iigt8cHJqwrn39JM2yMZTVNCgPpGBKRBjm53Qou6ITfqPnGSf
KG75GNZOi3pgKxgXo8mdYfErA5vbcNe/UMiG+J25PHg/KS5QSwMEFAACAAgAT40YSdNvA7JHAQAA
dAIAAC8AHABodHRwL3Rlc3RzL21lZGlhL3RleHQtc2VydmVkLWFzLXRleHQtc3RkZXJyLnR4dFVU
CQAD9j6+V/Y+vld1eAsAAQT1AQAABBQAAADNkE9LAzEQxe/9FHMqeuj+61JtsEppFQWFUhUF8ZBu
xmwgO1mTibbf3hStZ49OLvPy3vxIZh41VDWUJ6KuRDUF/AxlOc6sa6QFz43H3nk2pF8m9aQuXuFs
iZuozwUEJHWHIUiNT4bbhWTUzu8EHFG09ngw/4dkQ4b3yPtEN45u6M0JeF4toHFE2HC6S5kPaY0a
vBz42bSavML1w8Nqje8RA8Ob0Xu5jF1/ZUjax/XtnNQaO8c4V8onugD53UBZnWRFOmUaS1mI3kLL
3Is8/7XEaVEUeYfKyPzDKHQjbr1jtqhG1kmVNdpckOxwlpAu+gZDzuklGW95eIjOpvsa8q7HGeOW
895KQ3/4x49ceEybvvTe+YXrOiQWgNS4SIweFUgC3JsCNjtG8JI0gkXS3EJnQie5aWEEoXXRKtj8
ehWYcOjruhgPvgBQSwMECgAAAAAATY0YSQAAAAAAAAAAAAAAABcAHABodHRwL3Rlc3RzL21lZGlh
L3RyYWNrL1VUCQAD8j6+V/VAvld1eAsAAQT1AQAABBQAAABQSwMEFAACAAgATY0YScjyCQ2EAAAA
wAAAAD0AHABodHRwL3Rlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbG93LWxvYWRpbmct
Mi1zdGRlcnIudHh0VVQJAAPyPr5X8j6+V3V4CwABBPUBAAAEFAAAAJ3MuwoCMRCF4X6fYkpthMSw
QhBhWRsLQbBQEIuYHeNAmJFcFN/e+Ap2h5/DN9QA2oBaWaNtG/jOSi0XUbyLkIpP+JRUiMOlN702
V1hv8VbDxkJGnvaYswt4ovIYXcEg6WNhxjXGeTf8LRNT+ZHHppPwju9i4XwYwQsz+tJa+7xcpKn7
AlBLAwQUAAIACABQjRhJdK/USgUBAAB4AwAANgAcAGh0dHAvdGVzdHMvbWVkaWEvdHJhY2staW4t
YmFuZC1obHMtbWV0YWRhdGEtc3RkZXJyLnR4dFVUCQAD+D6+V/g+vld1eAsAAQT1AQAABBQAAADN
kUFLw0AQhc/2V8xRL6VpQsRVCjUVFawUSvEQPGyy0+2SzWzYnVD8925aBcFjpXgc5s333syUybXI
piKdjNObyTvcrR8eV5vlagZzZmw7fkXeO98sHRl2fo3cdwLIMQRkNqSh74COGmiPoluQSnkMAUwA
62ppR+VZXOa9hmkG316A+5Ak6fjQBM+1x875AVfmWZ4NORZY9XomBptlREmNL07rqLiPQ42AOGhR
/Yif5cl/jM/Sc+Foa3TvJRtHb4Z3hWs7i0P1JElZ9AIKWe9QQWSTrOJmUMm6QVLhtNttAvpn2rqF
qVn8Ygu4HF1cneRA6us9h70ko3b+I3Kpt/Z85OQPyZ9QSwMEFAACAAgAUo0YSYMcdBR8AQAAcAcA
ACYAHABodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWF1dGgtc3RkZXJyLnR4dFVUCQAD+z6+V/s+vld1
eAsAAQT1AQAABBQAAADtlE1LAzEQhs/2V8yxHrrNflaCCHWLKKhIqyiIhzQ7bmPTZJnN+vXrzaoo
WBS0CBW8JWHyzjuTZzJsSogSCAc8iXgcA97VYRgH2kqhgZwkrCw5ZcrLLMkSdgXbI5w25Q6HGk1x
hHUtSjxXbpYLh6WlBw5d02i92Rn+WFkZ5VrJiVdX1hyYa8vh4iQHaY1B6fyZj7kVWhWdiIVZj231
3jMlQZrFMGoW1dg7RDolxJcUPEyiJMziK3jZQr53jO7O0tzLOSTjjSGRJeiye8lCwfsT25DEXMgZ
9t+i31e9QcSCNBj0T8jeeGfjxji1wP4ESXl7j2KqcUhypm4xkFXF04xt/jHLPvnHt0y/RYl7heTQ
lqWP2PWX5hz8RY3FKsJOkMutuVZlQ6Jl4plCu6g0trt9YQqN5DvWdqIABmja2gqYCjn3ba5Xq+qs
RmrJHCnp+JK2n4LOxmp9+3q6liFKgywOP4Uoi9lg7bhfZ8src/+d3zH9pd/xf27XbW6fAFBLAwQU
AAIACABTjRhJUT/txuEAAACsAgAALQAcAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tZXJyb3ItYWJv
cnQtc3RkZXJyLnR4dFVUCQAD/T6+V/0+vld1eAsAAQT1AQAABBQAAAC1kUFLA0EMhc/2V+SoF+m2
yxYGEer2oKAgiCiIh+xsOh06JmUmq/jvzYonvbl6TMj7kry3HgIsaqhWrl64ZQP0VqpqeZrEY4Ks
PtNBskYOT03d1PNnONtQN4RzB4W4v6FSMNBD1F2LSkHyu4NjHlI6ma1/TY4cdUTeGT0KX/FWHDze
tuCFmbxaz2ZeMcV+wpZC+nX+tYRgExcm2jswYaJJYMWsrfA2hiHjeO2nP/JySDRWl8h9ouygRb+j
HuZAjJ3thA793lwt0766L5RHzzbRq/vBtnxmR9/TWf1b7n9J/gBQSwMEFAACAAgAU40YSUHhPSkT
AQAA4wEAADYAHABodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWVycm9yLWRvZXMtbm90LWV4aXN0LXN0
ZGVyci50eHRVVAkAA/0+vlf9Pr5XdXgLAAEE9QEAAAQUAAAAnU7RSsMwFH3fV9zH7WFt0pWtBhFK
i0xQGHVDYewha26zYJbUJJ3692ZMfRXlvpxzz7nnnnKQkOVAFyzP2GwB+OYpnSXatlyDC63D3rqg
jNzO83lOdnBd436QNww8GvGA3nOJTyocKh5QWvfBYGwGrSej8t/JyqhwjnyM6cqaO9NZBs+rClpr
DLYh7qLnxLUSo+13flLQYgfL9XrV4OuAPkCn5DKE/ovWSjTYojphg763xmPFtd7z9oWBuwgCDtEf
2UWHnOQwRuesgynNrmbFBLqIzyaWpjRbJCQOZQUhJBUW/dTYMMV35UNy7FH+Vi7Sejj2t8pwvWnu
SxMbHm3AUojYwTPgFwA/r+JZ9MLg9B9afAJQSwMEFAACAAgAU40YScGLwhfDAAAAJAMAACwAHABo
dHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWxvYWQtdHdpY2Utc3RkZXJyLnR4dFVUCQAD/j6+V/4+vld1
eAsAAQT1AQAABBQAAADtkbGKAjEQhuvzKabU5nB18Y4ggq6FgpZiIVfMJrMxGCeSzCK+vVHsrrvF
7sqB+b+PmX/eWhiVUHypcqTG30DXVBTjTx80eoiiI11CFMf2MCkn5fAHpkuqWztTkEi2lBJa2gRr
88Yih04KctCT6c3/DhaMUgVunG0jigu8d3Kswvni6TGtkI2nqKBCfSQDQyDGOjuhRn0iNqmLnGSX
KK65CUunRf1iK+j3PgadDGxej3vehUI2xFvmcut9N/J/I+9o5A5QSwMEFAACAAgAU40YSakBGczi
AAAAbAMAAC8AHABodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXBsYXktcHJvZ3Jlc3Mtc3RkZXJyLnR4
dFVUCQAD/j6+V/4+vld1eAsAAQT1AQAABBQAAADVkUFLA0EMhc/2V+RoL9JtlyqDCHV7UFAQRBSk
h+xsOh06JmUmq/jvzYo3D4J70WNC3peXl1UfYF5DderquVucAb2VqlqcJPGYIKvPdJCskcPzsl7W
sw2cr6ntw4WDQtzdUikY6DHqrkGlIPndwTH3KU0nq1+TI0cdkPdGj8LXvBUHT3cNeGEmr9azmVdM
sRux5f/71y/7NxKCTVyaaO/AhIlGgRWzNsLbGPqMg9vPfOTlkGiorpC7RNlBg35HHcyAGFvbCS36
vaVaxl31UCgPma2jV/eNbf+ZHE3/5N9/In8AUEsDBBQAAgAIAFWNGEmWIjTmhAAAAMAAAAA9ABwA
aHR0cC90ZXN0cy9tZWRpYS92aWRlby1wbGF5LXN0YWxsLWJlZm9yZS1tZXRhLWRhdGEtc3RkZXJy
LnR4dFVUCQADAj++VwI/vld1eAsAAQT1AQAABBQAAACdzLEKwjAQgOG9T3GjLmLbUCWIUOriIAgO
CuIQ02s8CBdJLopvb3wF15+fr88OGgX1SqtGt2vAd6rrduGDNR6i2IjPEIXYXTvVqeUNNju8Z7fV
kJDHA6ZkHJ5JHoMRdCF+NMw4ez+v+r9lYpIfeSo6Bd7zFDRcjgPYwIxWSivPy3gaqy9QSwMEFAAC
AAgAVY0YSehZ/g+3AAAAkgEAACsAHABodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXF1ZXJ5LXVybC1z
dGRlcnIudHh0VVQJAAMCP75XAj++V3V4CwABBPUBAAAEFAAAAKWQsQoCMQyGZ+8pMuoinh4KRQQ9
BwUdxUEccm2sxZpKm0N8e6u4uSlkCeT/PvLPWwvDCsqJqoZ5gO6pLEd9HzR6iKIj3UIUx/YwrsbV
4AjTJTWtnSlIJFtKCS1tgrX5YpFDFwU56MkU89/BglHqwCdn24jiAu+dnOtwvXl6bStk4ykqqFGf
ycAAiLHJTmhQX4hN+kdOsksU13wKS6dFfbEVdItO7y8Dm09x779QyIb4yFxuve8VT1BLAwQUAAIA
CABWjRhJ3UdgGvMAAABYBQAAKgAcAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcmVkaXJlY3Qtc3Rk
ZXJyLnR4dFVUCQADAz++VwM/vld1eAsAAQT1AQAABBQAAADtkkFLAzEQhc/2V8xRL9JtlgpBhLo9
KCgIIgriYTY7TUPjpCSziv/e2eJJb12KIEIuCTPfTN57i97DrIbqzNYzPUDvparMaUwOI2RxmbYp
S2D/PK/n9fQFzpfU9v7CQiHubqkU9PQYZN2gkE/5w8Ix9zGeTBZ7kwMHGZD3Sg+Jr3mVLDzdNeAS
MznRN615wxi6EVMKydf6N8l7rbjUpo0FbYw0CiyYpUm8Cr7POGy70ye9biMNtyvkLlK20KBbUwdT
IMZWZ0KLbqOqlnG/eiiUB82WwYn9wVZ/Jkff3TEH8/2vk/fPqjlUVs1vZtX8Z3VH/gRQSwMEFAAC
AAgAVo0YSVuTHNHdAAAAUgIAACsAHABodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXVzZXJhZ2VudC1z
dGRlcnIudHh0VVQJAAMDP75XAz++V3V4CwABBPUBAAAEFAAAAKWRQUsDQQyFz/ZX5Ggv0m2HCoMI
dXtQUBBEFMRDdjadDh2TMpNV/PdmxZvgwT0m5H0vedkMEZYOmnPvlt6tgD5q06zOsgTMUDQUOkrR
xPFl7dZu8QoXW+qGeOmhEvd3VCtGekq6b1EpSvn0cMpDzvPZ5t/kxElH5IPRk/AN78TD830LQZgp
qPVs5h1z6ie4VNKf9W8lRpu4MtHBgwkzTQIrFm2FdykOBcdtv/ORt2OmsbpG7jMVDy2GPfWwAGLs
zBM6DAdLtU676rFSGTPbpqD+F9v+MzuZT3L4++9fUEsDBAoAAAAAAHaNGEkAAAAAAAAAAAAAAAAQ
ABwAaHR0cC90ZXN0cy9taXNjL1VUCQADPz++V/VAvld1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA
VY0YSV6E9GnmAAAAYgEAAC0AHABodHRwL3Rlc3RzL21pc2MvY29weS1yZXNvbHZlcy11cmxzLXN0
ZGVyci50eHRVVAkAAwI/vlcCP75XdXgLAAEE9QEAAAQUAAAAdY1BS8NAEIXv/RVzkkSkk4qiDCUg
2lwUlUTa83YzSVeSTNidCP57ExtRCjKn99735m3y/CUnyIxruAQVMN4e3AdDGPaegwzeMlTi4aDa
E+Lq8maZjLei2yRJsHXB4g8X0ErbmxCW7329wK00QzuaD0YNbnYF7nj/6BSLb3hS9+IZGzEle5x3
0Vb4xLWxn2N+d/SWtu+j66skBoKgRp2FnKtX9ev5B9FpJYV/IyLr2ShHVrqgsHvLiAr1rqvh7OK3
lnnT8uQcsS1blT+Dz1IynKcTELQkqobOqpNuvRdpIJrbcRovvgBQSwMEFAACAAgAVo0YSRvITXvF
AAAA/wAAAD8AHABodHRwL3Rlc3RzL21pc2MvZGVsZXRlLWZyYW1lLWR1cmluZy1yZWFkeXN0YXRl
Y2hhbmdlLXN0ZGVyci50eHRVVAkAAwM/vlcDP75XdXgLAAEE9QEAAAQUAAAATY5PS8NAFMTv/RRz
VLCyG7exLuKlsacgxT+nImVJXuvDZDe8vFT007sFhQ7MYWCY+RXGlnOznBcO9ta7wrub64Vdopr6
4ZliS/IqRNvSlQvjrSuMc3fv2EgaSPQbHY8KjsfQcYt9kpP7oB7WGFwM57URTYgxKZoUNXDE01td
X862Z7d5+T4L62q12dXcs1KLhyys+fCXKx4/V6H5oMxw5My3eyH95/F4FMkUX8LK8YA05btTGXvu
6AoqU2yCEjThhyTNfgFQSwMEFAACAAgAVo0YSZ7TIXDEAAAA/wAAAFsAHABodHRwL3Rlc3RzL21p
c2MvZGVsZXRlLWZyYW1lLWR1cmluZy1yZWFkeXN0YXRlY2hhbmdlLXdpdGgtZ2MtYWZ0ZXItdmlk
ZW8tcmVtb3ZhbC1zdGRlcnIudHh0VVQJAAMDP75XAz++V3V4CwABBPUBAAAEFAAAAE2OTUvDQBRF
9/0Vd6lgZTIdow7iprGrIMWPVSllSF7rw2QmvLxU9Nc7BYVeuIsLB+6xpijn5m5uHYpb76x3i+uF
saimfnih2JK8CdGmdOWN8YWzxrn7LdaSBhL9RsejguMxdNxin+TUPqhHYQwuhnNsRBNiTIomRQ0c
8fxe15ezzfntFg85WFXL9a7mnpVaPOZgxYe/XfH4uQzNB2WHI2e/3Svpv4/Hk0i2+BJWjgekKd+d
YOy5oyuoTLEJStCEH5I0+wVQSwMEFAACAAgAdo0YSRU1NZJ6AAAAvAAAACoAHABodHRwL3Rlc3Rz
L21pc2MveHNsdC1iYWQtaW1wb3J0LXN0ZGVyci50eHRVVAkAAz8/vlc/P75XdXgLAAEE9QEAAAQU
AAAAjY5BDsMgDATveYU/QCDtoRW/IcRVLBmMjJH6/BLlA9VeVjuH2SylEScjqYCqohE+xAinWYve
b4/XGma2+A4h+EI9e8UuQzN2/+1sbk+Ho9JEzQ2ldW7AVBGegIwFq8FNl0niXSHCqGmfGhNgScd/
uip95PO6lywxLz9QSwMECgAAAAAAbo0YSQAAAAAAAAAAAAAAABQAHABodHRwL3Rlc3RzL3NlY3Vy
aXR5L1VUCQADMD++V/VAvld1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAUI0YSaMIydDKAAAA3QEA
AFUAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NhbnZhcy1yZW1vdGUtcmVhZC1yZW1vdGUtdmlkZW8t
YmxvY2tlZC1uby1jcm9zc29yaWdpbi1zdGRlcnIudHh0VVQJAAP4Pr5X+D6+V3V4CwABBPUBAAAE
FAAAAKWQMW/CMBCF5+ZX3AhL1ISISlZViYYBJBgrhqrDxT6MhTkj+yLEv68DbEwo4z3pfe/eW/QW
6gaqD9XUalYBXVJVzUofNHqIoiOdQxTH9nfezJv6Dz7XvA9fCnywNsuQBKOksiyLxcuoJXW9zaxE
sqWU0NLmTv3OpqOCbPRkxoCH59rAe2f7iOIC75wc2nA6exquFbLxFBW0qA9k4B2IscuZ0KE+Eps0
rtVPojjstXRa1BNbwaR4m45KYPMY7tYLhWyI18zl3vtp8Q9QSwMEFAACAAgAUI0YSTeHl+baAAAA
rAIAAEgAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NhbnZhcy1yZW1vdGUtcmVhZC1yZW1vdGUtdmlk
ZW8tbG9jYWxob3N0LXN0ZGVyci50eHRVVAkAA/g+vlf4Pr5XdXgLAAEE9QEAAAQUAAAAzZFBSwNB
DIXP9lfkaC/ibpcKgwh1e1BoQRBREA/Z2XQ6dEzKTLbivzcr3jwugseEvC8vL6shQN1AdeWa2i1q
oI9SVYuLJB4TZPWZjpI1cnhdNsumfoPrNXVDuHFQiPstlYKBnqPuW1QKkj8dnPOQ0ny2+ofkyFFH
5KPRo/A978TBy0MLXpjJq/Vs5oQp9pP864/9jYRgE7cmOjgwYaJJYMWsrfAuhiHj6PY7H3k/Jhqr
O+Q+UXbQot9TD5dAjJ3thA79wVIt0656KpTHzNbRq/vFtv/Mzv7y719QSwMEFAACAAgAUY0YSUOk
hfTiAAAArAIAAEcAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NhbnZhcy1yZW1vdGUtcmVhZC1yZW1v
dGUtdmlkZW8tcmVkaXJlY3Qtc3RkZXJyLnR4dFVUCQAD+j6+V/o+vld1eAsAAQT1AQAABBQAAADN
kUFLA0EMhc/2V+RoL8XdDhUGEer2oNCCIKIgHrKz6XTomCkzWcV/b7Z4UhBkLz0mJN97eVn2HmoD
1aU1tZ3XQB+lquazmBxGyOIyHVKWwP5lYRamfoWrFbW9v7ZQiLsNlYKenoLsGhTyKX9aOOc+xulk
eYLkwEEG5IPSQ+I73iYLz/cNuMRMTrSnM+8YQ/dDxfzLv3zbXyfvdeJGl/YWdDHSKLBglibxNvg+
4+D2mE96O0QaqlvkLlK20KDbUQcXQIytakKLbq+plnFXPRbKQ2ar4MT+Yut/JmfTUQp///0LUEsD
BAoAAAAAAGmNGEkAAAAAAAAAAAAAAAAqABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvVVQJAAMlP75X9UC+V3V4CwABBPUBAAAEFAAAAFBLAwQUAAIACABQjRhJIcy4
HtgAAAD4AQAASwAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2F1
ZGlvLXJlZGlyZWN0LWFsbG93ZWQtc3RkZXJyLnR4dFVUCQAD9z6+V/c+vld1eAsAAQT1AQAABBQA
AAClkMFKA0EQRM/uV/QxXiSbXSIMIsTNQcGAEERBPPTOdCZDJt1hpjeSv3dWvHlzjwVVr6haDR4W
LdS3pl2Ypgb6ynXd3ESxGCGpTXSSpIH9x7JdNvNPuFtTP/h7A5l0Qzmjp2fxvjgeSuhgoAQjuWr1
f7Bi0k54F/yQUIPwW9B9J8dTpFE9IrtIyUCHdk8O5kCMfemEHu2B2OUp5aSvmdIT72QdrJo/bAOz
6up6UgO73+N+dqGSl3QpXB5inEIOHHREbgu9/DRuMPD+0oEVZrLjd8Vzxhhc9Q1QSwMEFAACAAgA
UI0YSSHMuB7YAAAA+AEAAEwAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS9hdWRpby1yZWRpcmVjdC1hbGxvd2VkMi1zdGRlcnIudHh0VVQJAAP3Pr5X9z6+V3V4CwAB
BPUBAAAEFAAAAKWQwUoDQRBEz+5X9DFeJJtdIgwixM1BwYAQREE89M50JkMm3WGmN5K/d1a8eXOP
BVWvqFoNHhYt1LemXZimBvrKdd3cRLEYIalNdJKkgf3Hsl0280+4W1M/+HsDmXRDOaOnZ/G+OB5K
6GCgBCO5avV/sGLSTngX/JBQg/Bb0H0nx1OkUT0iu0jJQId2Tw7mQIx96YQe7YHY5SnlpK+Z0hPv
ZB2smj9sA7Pq6npSA7vf4352oZKXdClcHmKcQg4cdERuC738NG4w8P7SgRVmsuN3xXPGGFz1DVBL
AwQUAAIACABQjRhJ2qk1e6cAAACKAQAAWAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L2Jsb2ItdXJsLWRvZXMtbm90LW1hdGNoLXNvdXJjZS1zZWxmLXN0ZGVyci50
eHRVVAkAA/c+vlf3Pr5XdXgLAAEE9QEAAAQUAAAA3Y+xDoIwFEV3v6IjDlApIErioEQTByMJIzHk
WV6wWil5rSb8vRgH/Qa3c6dzbhWmWSyyKAyiKDkx5fAOduhkXaIryPRIbmBWtR1ojQ1DopUfinSR
MO+2U+0GLB7PV5RuS2So3ndP0KoBh82Ueep3gWO8NA+SmIO8IM8N4QEbBV/yw2QuAhHP+Kh2xg09
Wl5oGJD4KPtQvX73BZJp1SETYhlNqn848QJQSwMECgAAAAAAUo0YSQAAAAAAAAAAAAAAAEQAHABo
dHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91cGdyYWRlLWluc2VjdXJl
LXJlcXVlc3RzL1VUCQAD/D6+V/VAvld1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAUo0YSWBiXlHo
AAAAJgMAAHkAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91cGdy
YWRlLWluc2VjdXJlLXJlcXVlc3RzL3VwZ3JhZGUtaW5zZWN1cmUtYXVkaW8tdmlkZW8taW4tbWFp
bi1mcmFtZS1zdGRlcnIudHh0VVQJAAP8Pr5X/D6+V3V4CwABBPUBAAAEFAAAAM1RO0/DMBDe+RU3
wkBedR3krUpBDAwoKlPF4DrXYhHb4Wwz8Ou5lgoxIJAYAHm5830v6VvXrRKNmsliLub3cL1a3fb4
lDEm2Nrdh7Uj1AkviQJ1wTn0SQF6E7JPSDiA9oD7o4LsCU3YefvC3w8pTUAYp+Ajgqiqk/XXjow/
rks79GjQPmN/5Hd6HDfaPCpWPBw+0YfTQww4rxsp2zPY8rwHqbKsm7ao+NXqQohZyayQyWAsE7sV
bhLfZeN1md10Zb0e7/qbheeALiRcDAOLRQX6bYB3J6YxFjKNPwshf70S+Y8rkX9VyStQSwMECgAA
AAAAVI0YSQAAAAAAAAAAAAAAAD0AHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS91c2VyQWdlbnRTaGFkb3dET00vVVQJAAP/Pr5X9UC+V3V4CwABBPUBAAAEFAAAAFBL
AwQUAAIACABRjRhJU8AtbjYBAADRAgAAUwAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9hbGxvdy1hdWRpby1zdGRlcnIudHh0VVQJ
AAP6Pr5X+j6+V3V4CwABBPUBAAAEFAAAAKWST0sDMRDFz/ZTzFFBlv3XVcNatFtEoaJYREE8ZJNp
GpomJZlV+u3Nth4Ub24OgTze/Gbmkbqua7jRarojXJBHvoFJPL+lBXEKc6ceLD4hlwx+uOMlwS2h
gDaKAa6gOkvTcQXk3BrS5CIr8nEOAUUSJRBuszVIeArZvjTA5DK6xnvD6LpTkJeQnbEyZ0UJ+Bmy
rEiME9yAJ+Fx6zxpq96qssrP36G+s0s3YWCcUlGGQNxTSJL/oGbYdiqyAtI9hsAVzg/UaSxaM4iF
BuUQcD9c4+xSq85z0s6+aFo1h0Ti65ZbadAzaLhYoYQU0PI29oSWizVaGYZt9RzQ93nNtCD2h83g
eHR0MqiDld/B7ffihMr5XeTazpghZG019chFpMec+h0YvD428TdZi6LPLno+uNFy9AVQSwMEFAAC
AAgAVI0YSWgTiAAAAQAA+wEAAFMAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS91c2VyQWdlbnRTaGFkb3dET00vYWxsb3ctdmlkZW8tc3RkZXJyLnR4dFVUCQAD/z6+
V/8+vld1eAsAAQT1AQAABBQAAAClkDtPw0AQhGv8K7YkBZEfiWNOKFLiFCCBhBIhCivF+rw+Wzn2
onuIx6/niKCh9XYr7cy3M022EotcFNX8drk8wl0cqPeb7QHWcaDXwQ3PxN3Iak+a0NGBvIAm/Vj1
WKRlVmFbpkfYaiNPkMKADtjwzRdZA5Z6kCawhyzZBAX5Av5wQO8uy4p5lKEG66Wls7E+YppyUeZV
fGVHbVBrAY78EzmHih6NUvHiwhIQhZq6KcYera8N96MKFv1o+HX0Q23ezpp+tnvkTpMVUKMcqIvp
iLGNTGhRnmIpblqqF0f2gXuzG2Ws9L+3gOvkajaJwN1vcZdc6EkZ+xl9OWg9S74BUEsDBBQAAgAI
AFSNGEkkhFn1hAAAAMAAAACCABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQ
b2xpY3kvdXNlckFnZW50U2hhZG93RE9NL2Jsb2NrLWxvYWRpbmctdXNlci1hZ2VudC1pbWFnZS1m
cm9tLW5vbi11c2VyLWFnZW50LWNvbnRlbnQtc3RkZXJyLnR4dFVUCQAD/z6+V/8+vld1eAsAAQT1
AQAABBQAAACdzD0KAjEQQOF+TzGlNkKyYdUgwrI2FoJgoSAWMTsbB8JE8qN4e+MVbB+Pry8OpAKx
1Erqdg34TkK0Cx+s8RCzjfgMMRO7a6c6ubrBZof34rYaEvJ4wJSMwzPlx2AyuhA/GmZcvJ83/d8y
MeUfeao6Bd7zFDRcjgPYwIw211afl/E0Nl9QSwMEFAACAAgAZo0YScckWPveAAAAUgIAAEsAHABo
dHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS92aWRlby1yZWRpcmVjdC1h
bGxvd2VkLXN0ZGVyci50eHRVVAkAAx8/vlcfP75XdXgLAAEE9QEAAAQUAAAApZFBSwNBDIXP9lfk
2F6k010qDFJotwcFBaGIgnjIzqbTodNMmckq/vtmxZvgwT0m5H0veVn3HhY1mBtbV9YYoM9iTHUd
k8MIWVymc8oS2L8t62U1f4fbLbW9X1koxN0jlYKeXoIcGhTyKX9ZmHIf42yy/jc5cJABuVN6SHzP
+2Th9akBl5jJifZ05gNj6Ea4FJKf9R+S9zqxUdHRggojjQILZmkS74PvMw7bfueTTudIQ3WH3EXK
Fhp0B+pgDsTYqie06I6aahl31XOhPGS2DU7sL7b+Z3I1G+Xw998vUEsDBBQAAgAIAGaNGEn9QWSU
vgAAAJIBAABMABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdmlk
ZW8tcmVkaXJlY3QtYWxsb3dlZDItc3RkZXJyLnR4dFVUCQADHz++Vx8/vld1eAsAAQT1AQAABBQA
AAClkLGKAjEQhuvbp5hSGzHuohCOA28tFLxSLOSK2WSMwTiRZBbx7S+KjVgdlgPzf9/MP+8dTBpQ
M93UWo2BLlmpehSiwQBJTKJzTOLZ7abNtB7/wueCut59acgkP5QzOlpH58rGdwkdNZRgIFvNn8Dq
P2DBJG3kvXd9QvGRt14ObTydA92mJbINlDS0aA5koRzN2BUndGiOxDa/IyfZZEor3seFN6Jf2BoG
1cfwLQPbR3H3v1DIxXQtXO5DGFZ/UEsDBBQAAgAIAGaNGEnHJFj73gAAAFICAABmABwAaHR0cC90
ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdmlkZW8td2l0aC1odHRwLXVybC1h
bGxvd2VkLWJ5LWNzcC1tZWRpYS1zcmMtc3Rhci1zdGRlcnIudHh0VVQJAAMfP75XHz++V3V4CwAB
BPUBAAAEFAAAAKWRQUsDQQyFz/ZX5NhepNNdKgxSaLcHBQWhiIJ4yM6m06HTTJnJKv77ZsWb4ME9
JuR9L3lZ9x4WNZgbW1fWGKDPYkx1HZPDCFlcpnPKEti/LetlNX+H2y21vV9ZKMTdI5WCnl6CHBoU
8il/WZhyH+Nssv43OXCQAblTekh8z/tk4fWpAZeYyYn2dOYDY+hGuBSSn/Ufkvc6sVHR0YIKI40C
C2ZpEu+D7zMO237nk07nSEN1h9xFyhYadAfqYA7E2KontOiOmmoZd9VzoTxktg1O7C+2/mdyNRvl
8PffL1BLAwQUAAIACABmjRhJlfM8wYQAAADAAAAAWQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1ibG9iLWluaGVyaXRzLWNzcC1ibG9ja3MtZXZhbC1z
dGRlcnIudHh0VVQJAAMgP75XID++V3V4CwABBPUBAAAEFAAAAJ3MsQrCMBCA4b1PcaMuYppQIYhQ
6uIgCA4K4hDTMwbCnSQXxbe3voLrz8/X1wCtAbWyRlvVAr6LUnqR2LsEWXzGJ2eJFC6d6fTyCust
3mrYWChI4x5LcQFPUR6DEwycPxZmVFOaN/3fcqQoP/I46ZFpR3e2cD4M4JkIvUxtel4uxbH5AlBL
AwQUAAIACABojRhJY6qsbIIAAACoAAAAQAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L3hzbC1hbGxvd2VkLXN0ZGVyci50eHRVVAkAAyQ/vlckP75XdXgLAAEE9QEA
AAQUAAAALY1BCsMwDATveYVeEDu9pPgVhb4guBtiUCwjKaX+fU0pe1qG2c1ytsKbF6kEVdFEe2HQ
4d5SCMttnePIku4xxmDIlxbvIUt1VH/++0O45B4UJpdmWDDvjPljTFwqaCUwziHQD9gB+DRoekNt
XCeSyp2WOdKOza8xRJuC7GpN1PGavlBLAwQUAAIACABpjRhJY6qsbIIAAACoAAAAUgAcAGh0dHAv
dGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC11bmFmZmVjdGVkLWJ5LXN0
eWxlLXNyYy0yLXN0ZGVyci50eHRVVAkAAyU/vlclP75XdXgLAAEE9QEAAAQUAAAALY1BCsMwDATv
eYVeEDu9pPgVhb4guBtiUCwjKaX+fU0pe1qG2c1ytsKbF6kEVdFEe2HQ4d5SCMttnePIku4xxmDI
lxbvIUt1VH/++0O45B4UJpdmWDDvjPljTFwqaCUwziHQD9gB+DRoekNtXCeSyp2WOdKOza8xRJuC
7GpN1PGavlBLAwQUAAIACABRjRhJ9kVkgoQAAAAaAQAANQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y29ycy1wb3N0LXJlZGlyZWN0LTMwMS1zdGRlcnIudHh0VVQJAAP6Pr5X+j6+V3V4CwABBPUBAAAE
FAAAAM3MsQrCMBCA4b1PcaMuQtpQIYhQ6uIgCA4K4hDTMw2EO0kuim9vfAvXn59vKB5aDWptdGs6
DfjOSnWryM5GSOISPjlJIH/tda/bG2x2eC9+ayAjTQfM2Xo8B5lHK+g5fQwsqMS4bIY/lAMF+ZGn
qgemPT3YwOU4gmMidFJbfV42hqn5AlBLAwQUAAIACABZjRhJht9nf7YAAADcAQAAOgAcAGh0dHAv
dGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXdlYnNxbC1hbGxvd2VkLXN0ZGVyci50eHRVVAkA
Awo/vlcKP75XdXgLAAEE9QEAAAQUAAAA5c+/CsJADAbw3afIJC2oJziIt4nWRURo/TPftakcXJOS
3im+va3o5CO45SO/D5Isz4+5hjMZ6xECQ4hCwASOSsEGKRgPJgae3k0ZYwPJHIgDGAIUYUlH6sI+
NtiprQlGZddCXdHuXVAFRylxSBsWVAeuou/ZA23VS2s6fFeGYVa2bbJYrlLQYJk9fEpaf4XWLUrN
0hxbpDVVFxRXP5MBT351NpwG435z2mldBHF0g3E6yv7q2xdQSwMEFAACAAgAWY0YSSjZeTawAAAA
7gAAADIAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi13ZWJzcWwtc3RkZXJyLnR4
dFVUCQADCj++Vwo/vld1eAsAAQT1AQAABBQAAABlzkELgkAQBeB7v2JOoVBt0CHaW5RdIgQtPe/q
GMI6I+Nu0b9Po07d5vG+B5NkWZppuJGxDsEz+CAETNBSJdgheePABM/Lh6lC6CBaA7EHQ4AiLPFM
FexCh4M6Gm9UUuaqRHtuvco5SIVTOrCgunAd3MieaOtRWjPgZzIdq6rvo812F4MGy+zgO9L6J7Tu
URqWLu2R9lQXKG3ziia8+NfJ9BrMx+Z60jr30tId5vHsDVBLAwQKAAAAAABSjRhJAAAAAAAAAAAA
AAAAJAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL1VUCQAD/D6+V/VAvld1
eAsAAQT1AQAABBQAAABQSwMEFAACAAgAUo0YSYaev4cuAQAAKQ8AAEoAHABodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1hc3NpZ24tc3RkZXJy
LnR4dFVUCQAD/D6+V/w+vld1eAsAAQT1AQAABBQAAADtlU1LAzEQhu/9Fe9RL6W7288gBdki9CAs
tKBQRNLsbBqaTZYka+m/NxUEwZOKByVzHIZnHl5Ipu1I5h13nhwq8pWzgrzf+oofGYQAOWcdlEG1
XiEb5fAH2+sae0JWQHmM0ChNsE3jKaCYTQft15DZB+TkM3Eyz+dfRSbLZJksk2WyTJY/ttxlMzbO
WTEZzhaLJ9zEwp2Sm+CIt5Xm57hqGQtN1/jnDdFxperStp2mQAwl15pqnFQ4gOOFa1WjcySUp8vs
VrX0R4K47SXyMd7jAJ18lhVDbQXXcEE46qwLysjddDxd5DGqFe17uWTwZOr7uJ5Leog5lDyQtO7M
cGV6ra9/kZweQrJMlskyWf7fP/77ZGVUuCA3ka6sWZvGMjxWJYQ1hkSIvTjzdrMHr1BLAwQUAAIA
CABcjRhJ3YjfpP8AAAD7AQAAPQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvbG9jYWwtdmlkZW8tc291
cmNlLWZyb20tcmVtb3RlLXN0ZGVyci50eHRVVAkAAxA/vlcQP75XdXgLAAEE9QEAAAQUAAAApZBL
a8MwEITP9a/YY3NosPwKESWQOIcWWigJpQeTw1peyyaqFCSZPn59t6G95Jq9LezMtzONWMgik2U1
F6U4wD0P1Lv1Zg8rHujNFIYXst1o9Y4MYaA9RQlN+rnoUeW5WOKyTA+wMU4dIYUBA1hn777JO/DU
g3KTjZAn60lDVsA/DugjCJHPWYYGfFSeTs5HxjRVURUZv7KldtIrCYHiM4WAmp6c1nxxZklgoaHu
GuOIPtbO9qOePMbR2bcxDrV7Pxn63R7Qdoa8hBrVQB2nI4stM6FFdeRSwnWpXgP5R9u77ai40ktv
CbfJzewqgu3+ijvnwkja+S/2tZMxs+QHUEsDBBQAAgAIAFyNGEmt9i0/gwAAAMAAAAA6ABwAaHR0
cC90ZXN0cy9zZWN1cml0eS9sb2NhbC12aWRlby1zcmMtZnJvbS1yZW1vdGUtc3RkZXJyLnR4dFVU
CQADED++VxA/vld1eAsAAQT1AQAABBQAAACdzD0KAjEQQOF+TzGlNkJijBBEWNbGQhAsFMQiZmdj
IMxIfhRvb7yC7ePx9dWDVCDWRkmz0oDvLMRyEdnZCKm4hE9OJZC/aqWVvMFmh/fqtwYy0njAnK3H
cyiPwRb0nD4GZlRjnHf933KgUH7kqemBaU8TG7gcB3BMhK601p6XjWHsvlBLAwQKAAAAAABUjRhJ
AAAAAAAAAAAAAAAAIQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L1VUCQAD/z6+
V/VAvld1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAVI0YSdAXfwDiAAAAPgQAAE4AHABodHRwL3Rl
c3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1hdWRpby12aWRlby1pbi1tYWluLWZy
YW1lLXN0ZGVyci50eHRVVAkAA/8+vlf/Pr5XdXgLAAEE9QEAAAQUAAAA7ZJBSwNBDIXP7q/Isb2I
2y4VBxHq9qBQQRBRKB6yM+l06DQpM1nFf++sePPW9thj4L3vkZfMew+TBupr00zM9AboK9f19DKK
xQhJbaK9JA3sV7NmVjcfcLugrvd3BjLpE+WMnpbifVHcF9PWQDFGctX8cLBi0lZ4HXyfUIPwW9BN
K7t9pGF6QHaRkoEW7YYcXAExdiUTOrRbYpePCSd9zZQeeS2LYNX8YxsYVRfj4xLOvR2UwO6vuN+9
UMlL+i5c7mM8k09FDhx0QL4Uevma4aIG3p9bsMJMdvikovnEGFz1A1BLAwQUAAIACABUjRhJPJY0
GIQAAADAAAAAQgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLWNz
cy1pbi1pZnJhbWUtc3RkZXJyLnR4dFVUCQAD/z6+V/8+vld1eAsAAQT1AQAABBQAAACdzLEKwjAQ
gOG9T3GjLkLaUDGIUOriIAgOCuIQ0zMehIskF8W3N76C68/PNxQPrQa1NLo13QrwnZXqFiE6GyCJ
S/iMSYj9pde90ldYb/FW/MZARp72mLP1eCJ5jFbQx/QxMOMSwrwZ/paJSX7kseoUecf3aOB8GMFF
ZnRSW31eNtDUfAFQSwMEFAACAAgAZ40YSSjZeTawAAAA7gAAAD8AHABodHRwL3Rlc3RzL3NlY3Vy
aXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtd2Vic3FsLXN0ZGVyci50eHRVVAkAAyE/vlch
P75XdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXge79iTqFQbdAh2luUXSIELT3v6hjCOiPjbtG/T6NO
3ebxvgeTZFmaabiRsQ7BM/ggBEzQUiXYIXnjwATPy4epQuggWgOxB0OAIizxTBXsQoeDOhpvVFLm
qkR7br3KOUiFUzqwoLpwHdzInmjrUVoz4GcyHauq76PNdheDBsvs4DvS+ie07lEali7tkfZUFyht
84omvPjXyfQazMfmetI699LSHebx7A1QSwMEFAACAAgAZ40YSSjZeTawAAAA7gAAAEMAHABodHRw
L3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXdlYnNxbC1zdGRl
cnIudHh0VVQJAAMiP75XIj++V3V4CwABBPUBAAAEFAAAAGXOQQuCQBAF4Hu/Yk6hUG3QIdpblF0i
BC097+oYwjoj427Rv0+jTt3m8b4Hk2RZmmm4kbEOwTP4IARM0FIl2CF548AEz8uHqULoIFoDsQdD
gCIs8UwV7EKHgzoab1RS5qpEe269yjlIhVM6sKC6cB3cyJ5o61FaM+BnMh2rqu+jzXYXgwbL7OA7
0vontO5RGpYu7ZH2VBcobfOKJrz418n0GszH5nrSOvfS0h3m8ewNUEsDBBQAAgAIAGiNGEkwtIia
7wAAAJgEAAA5ABwAaHR0cC90ZXN0cy9zZWN1cml0eS92aWRlby1jcm9zcy1vcmlnaW4tY2FjaGlu
Zy1zdGRlcnIudHh0VVQJAAMkP75XJD++V3V4CwABBPUBAAAEFAAAANWSQUsDQQyFz/ZX5GgvxW3X
EQYR6vagUEGQoiA9ZGfS6dAxU2ayiv/eWfHmSRe1HgPJ95KXN+8cTGuoznQ909Up0EuuqtkkRIMB
kphE+5jEs3tUtaqnazhfUNu5Cw2Z5IZyRkfL6FzpuCxDOw1lMJAdzb8PFkzSRN541yUUH/ney7aJ
T/tAfXWFbAMlDQ2aLVk4AWJsiya0aHbENg8RJ1llSte8iQtvRH9iazgeHY0HKbD9MO79LhRyMb0W
Lnch/B5ZHQTZs5ceeVfo5be97xoebhswkZlM/+/S84zB20H7fyGr6i+zqn48q+pfJOoNUEsDBBQA
AgAIAGiNGElKQsRJFAEAAOcBAAA/ABwAaHR0cC90ZXN0cy9zZWN1cml0eS92aWRlby1wb3N0ZXIt
Y3Jvc3Mtb3JpZ2luLWNyYXNoMi1zdGRlcnIudHh0VVQJAAMkP75XJD++V3V4CwABBPUBAAAEFAAA
AJ1Oy0oDQRC85yv6mBzc3dlMHg4iLAkSQSGsEYWQw2S2sxmc9KzziOTvnRD1Kkpfqrqqq6uKLZQc
2ETwoWBjwA/P2DAzVkkDLiiHnXVBU7se8zEvN3Azx21sbwV4pOYRvZctvuiwn8mArXUnAX2Kxgx6
1b+TNelwjnxK6drSPe2sgNflDJQlQhXSLnmO0uimt/7Oz0Z8tIHFarWs8T2iD7DT7SKE7ovOdVOj
Qn3EGn1nyeNMGrOV6k2AuwgN7JM/sYsOvODQR+esgytWXg+nA9glfDaJPGflJCvSMDEtiiL3qKLT
4ZSTJfRR7bNDx3+rl+g8Hro7TdI81w8VpY4HG7BqmtTCC5AXAD/P0lnyQnTmTz0+AVBLAwQUAAIA
CABujRhJYEtmEJEAAAD7AQAARQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC14c2wt
ZG9jdW1lbnQtc2VjdXJpdHlPcmlnaW4tc3RkZXJyLnR4dFVUCQADMD++VzA/vld1eAsAAQT1AQAA
BBQAAADtjjEOgzAMRXdO4QuEBJZWmWHo0p4BBVMimSSynQpuXzr0Bh2rv76v90LeSqRJY06AzJk9
LJEQVtXire36S+vOdf7qnLOCoXLUw+4iZhjvt3Ewu5CZc6gbJjVf4MHxGVO7bwQUE0IPSPghQPQg
lBVRm/PpX8hyuj3kRAd0rYMFJ62MAhMjSC0ls+LchH/oj0PfUEsDBAoAAAAAAFWNGEkAAAAAAAAA
AAAAAAATABwAaHR0cC90ZXN0cy9zdG9yYWdlL1VUCQADAj++V/VAvld1eAsAAQT1AQAABBQAAABQ
SwMEFAACAAgAVY0YSSjZeTawAAAA7gAAAEUAHABodHRwL3Rlc3RzL3N0b3JhZ2UvY2FsbGJhY2tz
LWFyZS1jYWxsZWQtaW4tY29ycmVjdC1jb250ZXh0LXN0ZGVyci50eHRVVAkAAwI/vlcCP75XdXgL
AAEE9QEAAAQUAAAAZc5BC4JAEAXge79iTqFQbdAh2luUXSIELT3v6hjCOiPjbtG/T6NO3ebxvgeT
ZFmaabiRsQ7BM/ggBEzQUiXYIXnjwATPy4epQuggWgOxB0OAIizxTBXsQoeDOhpvVFLmqkR7br3K
OUiFUzqwoLpwHdzInmjrUVoz4GcyHauq76PNdheDBsvs4DvS+ie07lEali7tkfZUFyht84omvPjX
yfQazMfmetI699LSHebx7A1QSwMECgAAAAAAVo0YSQAAAAAAAAAAAAAAABMAHABodHRwL3Rlc3Rz
L3dvcmtlcnMvVVQJAAMEP75X9UC+V3V4CwABBPUBAAAEFAAAAFBLAwQUAAIACABWjRhJKqCnHIQA
AADAAAAALwAcAGh0dHAvdGVzdHMvd29ya2Vycy9sb2NhdGlvbi1yZWFkb25seS1zdGRlcnIudHh0
VVQJAAMEP75XBD++V3V4CwABBPUBAAAEFAAAAJ3MPQoCMRBA4X5PMaU2YnbDCkGEZW0sBMFCQSxi
dowDYUbyo3h74xVsH49vKB5aDWpldGt0B/hOSnWLIM4GiNlFfErMxP7S614vr7De4q34jYGEPO0x
JevxRPkx2oxe4sfAjEsI82b4Wyam/COPVSfhHd/FwPkwghNmdLm2+rxsoKn5AlBLAwQKAAAAAABm
jRhJAAAAAAAAAAAAAAAAGgAcAGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvVVQJAAMfP75X9UC+
V3V4CwABBPUBAAAEFAAAAFBLAwQUAAIACABljRhJfn/tF7EAAAABAQAAQQAcAGh0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvcG9zdC1ibG9iLWNvbnRlbnQtdHlwZS1hc3luYy1zdGRlcnIudHh0VVQJ
AAMeP75XHj++V3V4CwABBPUBAAAEFAAAAGWNsQrCQBBE+3zFVqKgHjaCB1YmglgoiZhCLC7JKoe5
22OzUfx7DQRULGd4My9J012qYePvprYVrMgLepkcngHHYPs2GDYOBRneucVppI5Utw4bFRsxKskz
lWOxtaIyarnELq2IUYXayIXYKY/yIL6pveEGq97SSaZlCMPZYj4CDQVRDf1U69ChX+SwJN8I5Ie1
1pmw9VcYjCHFEu0duSNgMILTT7H83MWtc88//Tl6AVBLAwQUAAIACABmjRhJfn/tF7EAAAABAQAA
QAAcAGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcG9zdC1ibG9iLWNvbnRlbnQtdHlwZS1zeW5j
LXN0ZGVyci50eHRVVAkAAx8/vlcfP75XdXgLAAEE9QEAAAQUAAAAZY2xCsJAEET7fMVWoqAeNoIH
ViaCWCiJmEIsLskqh7nbY7NR/HsNBFQsZ3gzL0nTXaph4++mthWsyAt6mRyeAcdg+zYYNg4FGd65
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
V3V4CwABBPUBAAAEFAAAAFBLAwQKAAAAAACHjRhJAAAAAAAAAAAAAAAAJQAcAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9VVAkAA14/vlf1QL5XdXgLAAEE9QEAAAQUAAAAUEsD
BAoAAAAAAIeNGEkAAAAAAAAAAAAAAAAvABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9VVAkAA14/vlf1QL5XdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAImN
GEkAAAAAAAAAAAAAAABAABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9lbWJlZGRlZC1jb250ZW50L1VUCQADYT++V/VAvld1eAsAAQT1AQAABBQAAABQSwME
CgAAAAAAmo0YSQAAAAAAAAAAAAAAAE8AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvVVQJAAOEP75X
9UC+V3V4CwABBPUBAAAEFAAAAFBLAwQUAAIACACHjRhJomeqnOMAAABMBQAAZwAcAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9t
ZWRpYS1lbGVtZW50cy9ldmVudF9jYW5wbGF5LXN0ZGVyci50eHRVVAkAA14/vldeP75XdXgLAAEE
9QEAAAQUAAAA7ZNBSwNBDIXP7q/IUS/i1qHiIELdHhQUBBEF6SE7k06HjkmZySr+e2fFm7cWb3sM
vPc98kgWQ4CZgfbCGmNbA/RZ2vb8NInDBFldpp1kjRze5mZ+OVvB1ZL6IVxbKKQPVAoGupcQquKm
mrYWqjGRbxb7gxWzdsLrGIaMGoVfom46ed8lGqdbZJ8oW+jQbcjDGRBjXzOhR7cl9uWQcNLnQvmO
17KMTu0ftoXj5ujksISpt70S2P8W97MXKgXJX5XLQ0oTeSL/Bzly1BH5VOn1h8b7tvD62IETZnLj
X1XNB6bom29QSwMEFAACAAgAiI0YSdFMSa/sAAAApAQAAHIAHABpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVu
dHMvZXZlbnRfY2FucGxheV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA18/vldfP75XdXgLAAEE
9QEAAAQUAAAA7ZPBSgMxEIbP9inm2F7ErbFikELdHhQUBBGF4mE2O01D40xJZhXf3qx40tPagyAe
E2a++fOFWXQepgaqU2uMrQzQa66q48MoDiMkdYl2kjSwX83M7Gz6BOdLajo/t5CJ2xvKGT09BN3U
qOQlvVkYcxfjZLT4MTlw0B55V+hB+IrXYuHxtgYnzOS03JWaF4yh/TLlZFB+/Yx/Ld6XiovStLVQ
GiPtBVZMWguvg+8S9mk//MjzLlJ/ukRuIyULNboNtXAExNiUmdCg2xareb9X3WdKvbNlcGq/scv/
jA4m/95+wduQffnr5CE7/g5QSwMEFAACAAgAiI0YSTt0HnfwAAAADAYAAG4AHABpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVk
aWEtZWxlbWVudHMvZXZlbnRfY2FucGxheXRocm91Z2gtc3RkZXJyLnR4dFVUCQADYD++V2A/vld1
eAsAAQT1AQAABBQAAADtlMFKAzEQhs/2KeZoL+LWdcUgQt0eFBSEIgriYTY7TUPjTElmFd/ebPGk
p7WClz0mzHzz5wvJvHMwK6E4M2VpilOg91QUJ0dBLAaIaiNtJapn91yV1fnsBS4W1HTu0kAibu8o
JXT06HVdo5KT+GHgkLsQppP5r8mevfbIZaZ74RteiYGn+xqsMJPVvJdr3jD49tuUalB+/Yp/K87l
iqvctDGQGwPtBVaMWguvvOsi9ml3fuR1G6hfXSO3gaKBGu2aWjgGYmzyTGjQbrLVtN+pHhLF3tnC
WzU/2Pl+JgfT0ds/eBvyXkbySP4L8pC/9BNQSwMEFAACAAgAiY0YSW6Jk1DtAAAA/gQAAHkAHABp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNv
bnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfY2FucGxheXRocm91Z2hfbm9hdXRvcGxheS1zdGRl
cnIudHh0VVQJAANhP75XYT++V3V4CwABBPUBAAAEFAAAAO2TwUoDMRCGz/Yp5mgv4tZli6EIdXtQ
UCiIKEgPs9lpGhonJZm1+PbOiic9LT0o0mPCzDd/vjDzzsGkhGJqytIUFdA+F8XFWYgWAySxiXYx
iWf3UpXV5WQFswU1nbsykInbe8oZHT152dQo5GJ6N3DKXQjj0fwPkj176ZEPSveRb3kdDTwva7CR
mazonda8YfDttynTQfnlK/5ddE4rrrVpa0AbAx0EFkxSR1571yXs0376ia+7QP3pBrkNlAzUaDfU
wjkQY6MzoUG7Vav5sFc9Zkq9s4W3Yn6w9X9GJ+Ojt1/wNmRf/jt5yI5/AFBLAwQUAAIACACJjRhJ
thU3gvAAAAAMBgAAagAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2FkZWRkYXRhLXN0
ZGVyci50eHRVVAkAA2I/vldiP75XdXgLAAEE9QEAAAQUAAAA7ZTBSgMxEIbP9inm2F7ErUurQYR2
e1BQEEQUiofZ7DQNjZOSzCq+vbPiSU9rBS97TJj55s8XkkXrYFpCMTdlaYo50FsuitPjEC0GSGIT
7WMSz249K2fn02e4WFHduksDmbi5pZzR0aOXbYVCLqZ3A2NuQ5iMFr8me/bSIe+V7iNf8yYaeLqr
wEZmsqJ7WvOKwTffppz1yi9f8W+ic1qx1KadAW0MdBBYMEkVeeNdm7BL++knvuwDdasr5CZQMlCh
3VIDJ0CMtc6EGu1OrebDTvWQKXXOVt6K+cHW+xkdTQZv/+Ctz3sZyAP5L8h9/tIPUEsDBBQAAgAI
AIqNGEk1sp2y7QAAAKQEAAB1ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRlZGRh
dGFfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAANjP75XYz++V3V4CwABBPUBAAAEFAAAAO2TwUoD
MRCGz/Yp5thexK1LtUGEdntoQUEQUZAeZrPTNDROSjKr+PbOiic9rT0I0mPCzDd/vjCz1sG4hOLC
lKUpLoHeclGcn4ZoMUASm2gfk3h2z5NyMh2v4WpBdeuuDWTi5pZyRkePXrYVCrmY3g0MuQ1hNJj9
muzZS4e8V7qPvOJNNPB0V4GNzGRF77TmFYNvvk2Z9sovX/FvonNaMdemnQFtDHQQWDBJFXnjXZuw
S/vpJ77sA3WnJXITKBmo0G6pgTMgxlpnQo12p1bzYa96yJQ6Zwtvxfxg6/8MTkZHb3/grc++/Hdy
nx3/AFBLAwQUAAIACACKjRhJzsBDhe0AAACkBAAAbgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9l
dmVudF9sb2FkZWRtZXRhZGF0YS1zdGRlcnIudHh0VVQJAANkP75XZD++V3V4CwABBPUBAAAEFAAA
AO2TwUoDMRCGz/Yp5mgv4q5LpUGEuj1YqCCIKEgPs9lpGhonJZlVfHtnSy/iae1BEI8JM9/8+cLM
OgdlBcWlqSpTTIHec1FcnIVoMUASm2gXk3h2L5NqMi1XcDWnpnPXBjJxe0c5o6MnL5sahVxMHwZO
uQthPJr9mOzZS498ULqPvOB1NPB8X4ONzGRF77TmDYNvv04pzwfll0P8ZXROK260aWtAGwMdBRZM
Ukdee9cl7NPu/cTXXaD+dIvcBkoGarQbakHZjI3OhAbtVq3m4171mCn1zubeivnG1v8ZnYz/vf2C
twH78ufJQ3b8E1BLAwQUAAIACACLjRhJpZpvoOwAAACkBAAAeQAcAGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVt
ZW50cy9ldmVudF9sb2FkZWRtZXRhZGF0YV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA2U/vldl
P75XdXgLAAEE9QEAAAQUAAAA7ZPBSgMxEIbP9inmaC/FXZcWgwh1e1BooSCiIB5ms9M0NE5KMqv0
7Z0VT3paexDEY8LMN3++MPPOQVlBMTNVZcozoLdcFOeTEC0GSGIT7WMSz+5pWk0vyme4XFDTuSsD
mbhdUc7o6MHLtkYhF9PBwCl3IYxH8x+TPXvpkXdK95FveRMNPK5rsJGZrOid1rxi8O2XKcWg/PIZ
fxmd04prbdoZ0MZAR4EFk9SRN951Cfu0H37iyz5Qf7pBbgMlAzXaLbWgahgbnQkN2p1azce96j5T
6p0tvBXzja3/MzoZ/3v7BW9D9uWvk4fs+DtQSwMEFAACAAgAi40YSX0aWdfvAAAApAQAAGkAHABp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNv
bnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZHN0YXJ0LXN0ZGVyci50eHRVVAkAA2Y/vldm
P75XdXgLAAEE9QEAAAQUAAAA7ZNBSwMxEIXP9lfM0V7EXZeKQYS6PbTQgiCiIB5ms9M0NE5KMqv4
750VT3paFw+Cx4SZ7728R+adg7KC4txUlSkLoNdcFGcnIVoMkMQmOsQknt3jrJpdlE9wuaCmc1cG
MnG7oZzR0b2XXY1CLqY3A8fchTCdzH9M9uylR94q3Ude8TYaeLipwUZmsqJ3OvOCwbdfVMpB/uXT
/jo6pxPXurQ3oIuBRoEFk9SRt951CXu3H/nE50Og/rREbgMlAzXaHbVwCsTYqCY0aPeaah73qrtM
qc9s4a2Yb2ztZ3I0HaUwpPf/Rv52I79FHvLH3wFQSwMEFAACAAgAjI0YSbRNGRPsAAAApAQAAHQA
HABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZHN0YXJ0X25vYXV0b3BsYXktc3RkZXJy
LnR4dFVUCQADZz++V2c/vld1eAsAAQT1AQAABBQAAADtk8FKAzEQhs/2KeZoL+Jul4qhCHV7UGhB
EFGQHmaz0zQ0zpRkVvHtzYonPa09CNJjwsw3f74w885BWUFxYarKlCXQWyqKyVkQiwGi2kh7ierZ
PU+r6WW5htmCms5dGUjE7YpSQkePXrc1KjmJ7wZOuQthPJr/muzZa4+8z3QvfMsbMfB0V4MVZrKa
73LNKwbffpsyGZRfv+IvxblccZ2bdgZyY6CDwIpRa+GNd13EPu2nH3nZB+pPN8htoGigRrulFs6B
GJs8Exq0u2w1Hfaqh0Sxd7bwVs0Pdv6f0cn46O0PvA3Zl/9OHrLjH1BLAwQUAAIACACMjRhJHVuK
TfEAAAAMBgAAfAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9vcmRlcl9jYW5wbGF5X2Nh
bnBsYXl0aHJvdWdoLXN0ZGVyci50eHRVVAkAA2g/vldoP75XdXgLAAEE9QEAAAQUAAAA7ZRBSwMx
EIXP9lfMsb2Iuw0Vgwh1e2ihBUFEQTzMZqdpaDopyazivzcrnvS07qnQY8LM917eg8xbC6WC4lor
pcsp0EcqiumlDwY9RDGRjiGKY/s6U7Ob8g1uF1S39k5DIm42lBJaenayq1DIhvipYcyt95PR/N9k
x0465GOmu8Ar3gYNLw8VmMBMRvJdnnlH75pfKqqXf/mxvw7W5on7vLTXkBc9DQILRqkCb51tI3Zu
v/MJh6On7rREbjxFDRWaHTVwBcRYZ02o0exzqmnYq54SxS6zhTOi/7BzP6OLySCFPr2fGzntRs7k
0yb3+Uu/AFBLAwQUAAIACACNjRhJNxthF/EAAAAMBgAAdQAcAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50
cy9ldmVudF9vcmRlcl9jYW5wbGF5X3BsYXlpbmctc3RkZXJyLnR4dFVUCQADaT++V2k/vld1eAsA
AQT1AQAABBQAAADtlEFLAzEQhc/2V8zRXsSta8UgQt0eWlAQRBRKD7PZaRoaJyWZVfz3zoonPbV7
EdpbEma+efMeZNI6GJVQXJmyNHqgj1wUF2chWgyQxCbaxiSe3WJcjq9HS7iZUt26WwOZuHmgnNHR
i5d1hUIupk8Dp9yGMBxM9iZ79tIhn5TuI895FQ28PlZgIzNZ0Tetecfgm19TLnfSLz/y76NzWnGn
TRsD2hioF1gwSRV55V2bsFP77U982wbqbjPkJlAyUKFdUwPnQIy1zoQa7UZdzf22es6UOs+m3or5
w9Z8BifDXhN2yf2/kI9ZH07WR/J+f+kXUEsDBBQAAgAIAI6NGEkqVlLW6wAAAAwGAAB/ABwAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250
ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X29yZGVyX2xvYWRlZG1ldGFkYXRhX2xvYWRlZGRhdGEt
c3RkZXJyLnR4dFVUCQADaz++V2s/vld1eAsAAQT1AQAABBQAAADtlMFKBDEMQM/uV+ToXsSZHUYs
IqyzBwUFQURB9pDpZLtlu+nSZhT/3ox48+YoXubYkLykr6TL3kFZQXFmqsqUNdBbLorFSYgWAySx
iQ4xiWf3Ulf1ebmGixW1vbs0kIm7O8oZHT152TYo5GJ6N3DMfQjz2fLHZM9eBuSD0n3kG95EA8/3
DdjITFY0pjmvGHw3oksm+Rr/NjqnGVdatDOghYFGgQWTNJE33vUJh2k//cT9IdBwukbuAiUDDdot
dXAKxNhqT2jR7tRqHnerx0xpcLbyVsw3tr7P7Gg+efsHb3+1LxN5Iv/GX/oBUEsDBBQAAgAIAI6N
GElQY0Q07gAAAGYGAAB4ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X29yZGVyX2xvYWRz
dGFydF9wcm9ncmVzcy1zdGRlcnIudHh0VVQJAANsP75XbD++V3V4CwABBPUBAAAEFAAAAO2UQUsD
QQyFz/ZX5KgXcbdLq4MI7fagoCCIKBQP2dl0OnTMlJms4r83K948yVLYQ48Tkm9e3oMsOgdlBcXc
VJUp50CfuSim5yFaDJDEJtrHJJ7delbNrso3uF5R07kbA5m4faCc0dGLl22NQi6mLwOn3IVwNlmM
kOzZS498UrqPfMebaOD1sQYbmcmK1rTnA4NvB+mXX/n30TntWOrQzoAOBhoEFkxSR9541yXs1f74
E9/3gfrXLXIbKBmo0W6phQsgxkb/hAbtTl3Nw7Z6zpR6z1beivnD1nwmJ+PM/ZDkY9aHT+TySB4d
+T+39BtQSwMEFAACAAgAj40YSStOrhjwAAAADAYAAGUAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMv
ZXZlbnRfcGF1c2Utc3RkZXJyLnR4dFVUCQADbT++V20/vld1eAsAAQT1AQAABBQAAADtlMFKAzEQ
hs/2KeZoL+KuS7VBhLo9KCgIIgrFw2x2mobGmZLMKr69WfGkp7WClz0mzHzz5wvJonNQVlCcmqoy
5RnQWyqKk6MgFgNEtZF2EtWzW82q2bx8hvMlNZ27MJCI21tKCR09et3UqOQkvhs45C6E6WTxa7Jn
rz3yPtO98DWvxcDTXQ1WmMlq3ss1rxh8+23KfFB+/Yp/I87lisvctDWQGwPtBVaMWguvvesi9mk/
/cjLLlC/ukJuA0UDNdoNtXAMxNjkmdCg3Warab9TPSSKvbOlt2p+sPP9TA6mo7d/8DbkvYzkkfwX
5CF/6QdQSwMEFAACAAgAj40YSRe9ffbtAAAApAQAAHAAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMv
ZXZlbnRfcGF1c2Vfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAANuP75Xbj++V3V4CwABBPUBAAAE
FAAAAO2TwUoDMRCGz/Yp5mgv4m6XlgYR6vZgoYJQREE8zGanaWiclGRW8e2dFS/iae1BEI8JM9/8
+cIsOgdlBcXMVJUp50CvuSgmZyFaDJDEJjrEJJ7d47SazssnuFhS07lLA5m4vaGc0dG9l12NQi6m
NwOn3IUwHi1+TPbspUdulO4jr3gbDTzc1mAjM1nRO615weDbr1Mm54Pyy2f8dXROK660aW9AGwMd
BRZMUkfeetcl7NN++InPh0D96Rq5DZQM1Gh31IKyGRudCQ3avVrNx73qLlPqnS29FfONrf8zOhn/
e/sFbwP25c+Th+z4O1BLAwQUAAIACACQjRhJgr5JR/EAAAAMBgAAZAAcAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1l
bGVtZW50cy9ldmVudF9wbGF5LXN0ZGVyci50eHRVVAkAA28/vldvP75XdXgLAAEE9QEAAAQUAAAA
7ZRBSwMxEIXP9lfM0V7EbZeKoQh1e1BoQRBRkB5ms9M0NE5KMqv4750VT3pq9yK0x4SZ7728B5m1
DkYlFFemLM34EugjF8X4IkSLAZLYRLuYxLN7nZST69EKpnOqW3djIBM3S8oZHT172VQo5GL6NHDO
bQjDwexgsmcvHfJR6T7yPa+jgZeHCmxkJit6pzPvGHzzS6XYy7/82F9E53TiVpe2BnQxUC+wYJIq
8tq7NmHn9juf+LYL1J3ukJtAyUCFdkMNaDSMtWpCjXarqeZ+r3rKlLrM5t6K+cPWfgZnw14K+/T+
X8inro+n6xP5sL/0C1BLAwQUAAIACACQjRhJ6DUHhucAAACkBAAAbwAcAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1l
bGVtZW50cy9ldmVudF9wbGF5X25vYXV0b3BsYXktc3RkZXJyLnR4dFVUCQADcD++V3A/vld1eAsA
AQT1AQAABBQAAADtk8FKA0EMhs/2KXK0F3G3S8VBhLo9KCgIIgriITubToeOSZnJKr69WfHmSQui
4DEh+ZI/P1kMAeoGqiPXNG5WA72UqpodJPGYIKvPtJWskcPDvJkf149wsqRuCKcOCnF/RaVgoLuo
6xaVguRXB/s8pDSdLL5Njhx1RN4YPQpf8Eoc3F+34IWZvFrOap4xxX6HKYX0Y/1LCcEqzqxp48Aa
E/1OsGLWVngVw5BxPMP74eVpm2iMzpH7RNlBi35NPRwCMXY2Ezr0G7Or7KbqtlAezVhGr+4T24yf
7E3/5f38v/xF8ld+/A1QSwMEFAACAAgAkY0YScgNk3brAAAADAYAAGcAHABpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEt
ZWxlbWVudHMvZXZlbnRfcGxheWluZy1zdGRlcnIudHh0VVQJAANyP75Xcj++V3V4CwABBPUBAAAE
FAAAAO2UwUoDMRBAz/Yr5mgv4naXikGEuj0otFAQURAPs9lpGhpnSjKr9O/NijdvruJljxlm3kxe
mCw6B7MKigtTVaYsgd5TUZRnQSwGiGojHSSqZ/c8r+aXsxe4WlLTuWsDibhdU0ro6NHrrkYlJ/Fo
4JS7EKaTxY/Jnr32yPtM98J3vBUDT5sarDCT1RzLOW8YfDugSyL9Gn8lzuWMm1y0N5ALAw0CK0at
hbfedRH7aT/9yOshUH+6RW4DRQM12h21cA7E2OSe0KDdZ6tp2K0eEsXe2dJbNd/Y+X0mJ9PR2z94
+6t9Gckj+Tf+0g9QSwMEFAACAAgAko0YSezc0mHvAAAADAYAAHIAHABpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxl
bWVudHMvZXZlbnRfcGxheWluZ19ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA3M/vldzP75XdXgL
AAEE9QEAAAQUAAAA7ZRBS0MxDIDP7lfk6C7i2+rEIsJ8OygoCCIKw0NeX9aV1WS0eYr/3j7x5sk9
RJAdG5Iv6VfSeedhYqA6tcbYqQF6y1U1PYriMEJSl2grSQP75czMzibPcL6gpvMXFjJxe0s5o6fH
oOsalbykdwuH3MU4Hs13JgcO2iPvCz0IX/NKLDzd1eCEmZyWWMl5xRjaAV0y6df4N+J9ybgsRRsL
pTDSILBi0lp4FXyXsJ/204+8bCP1pyvkNlKyUKNbUwvHQIxN6QkNuk2xmofd6iFT6p0tglP7jV3e
Z3Qw3nv7A2+/tS978u7kk39O/slf+gFQSwMEFAACAAgAko0YSV/76WvvAAAAZgYAAGgAHABpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUCQADdD++V3Q/vld1
eAsAAQT1AQAABBQAAADtlMFKAzEQhs/2KebYXsRt1xWDCO32oKAgiCgUD7PZaRoaJyWZVXx7Z8Wb
p7IHK/SYMPPlny8k887BtITiwpSlmZ0DfeSimJ2GaDFAEptoF5N4dquqrC6nr3C1pKZz1wYycXtP
OaOjZy+bGoVcTJ8GxtyFMBnND5Ds2UuPfFS6j3zL62jg5aEGG5nJiu5pzTsG3w7KLz/x76JzWrHQ
pq0BbQw0CCyYpI689q5L2Kf99hPfdoH61Q1yGygZqNFuqIUzIMZGz4QG7Vat5mFTPWVKvbOlt2J+
sfV+RieTo7c/8Pb/XuJ+5OpIPjjyPn/pF1BLAwQUAAIACACTjRhJTHG7KO0AAAD+BAAAcwAcAGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29u
dGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wcm9ncmVzc19ub2F1dG9wbGF5LXN0ZGVyci50eHRV
VAkAA3U/vld1P75XdXgLAAEE9QEAAAQUAAAA7ZPBSgMxEIbP9inmaC/FbZctBhHq9qCgUCiiIB5m
s9M0NE5KMmvx7Z0VT3paelDEY8LMN3++MIvOwbSEYm7K0swqoEMuitkkRIsBkthE+5jEs3uqyup8
+gwXS2o6d2kgE7d3lDM6evCyrVHIxfRm4JS7EMajxS8ke/bSI9dK95FveBMNPK5qsJGZrOid1rxi
8O2XKfNB+eUz/m10TiuutGlnQBsDHQUWTFJH3njXJezTfviJL/tA/ekauQ2UDNRot9TCGRBjozOh
QbtTq/m4V91nSr2zpbdivrH1f0Yn439vP+BtyL78dfKQHX8HUEsDBBQAAgAIAJONGEnf+T0W8AAA
AAwGAABqABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3RpbWV1cGRhdGUtc3RkZXJyLnR4
dFVUCQADdj++V3Y/vld1eAsAAQT1AQAABBQAAADtlMFKAzEQhs/2KeZoL+K2S6tBhHZ7UFAQRBTE
w2x2moamk5LMKr69s+JJT2sFL3tMmPnmzxeSRetgUkIxN2VppnOgt1wU05MQLQZIYhPtYxLP7nlW
zs4nL3Cxorp1lwYycXNLOaOjRy+bCoVcTO8GjrkNYTxa/Jrs2UuHvFe6j3zN62jg6a4CG5nJiu5p
zSsG33ybctYrv3zFv4nOacVSm7YGtDHQQWDBJFXktXdtwi7tp5+42wfqVlfITaBkoEK7oQZOgRhr
nQk12q1azYed6iFT6pytvBXzg633MzoaD97+wVuf9zKQB/JfkPv8pR9QSwMEFAACAAgAlI0YSQzu
uDrsAAAApgUAAHUAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfdGltZXVwZGF0ZV9ub2F1
dG9wbGF5LXN0ZGVyci50eHRVVAkAA3g/vld4P75XdXgLAAEE9QEAAAQUAAAA7ZPBSgNBDIbP9ily
tBdx26XaQYS6PbSgIIgoFA/Z2XQ6dMyUmazi25uVgqAnqwcPe0xIvuTPT2atg1EJxZkpSzM+B3rN
RTE+CdFigCQ20S4m8exWk3IyHT3BxZzq1l0ayMTNDeWMjh68bCoUcjG9GTjmNoThYHYw2bOXDnmn
dB95yeto4PG2AhuZyYrmtOYFg2++TJn+aH/Zr38dndOKK23aGtDGQP8TLJikirz2rk3YneHj8PF5
F6iLFshNoGSgQruhBk6BGGudCTXardqVf6fqPlPqzJh7K+YbW40fHA17eX/zLz25J3+S3wFQSwME
FAACAAgAlI0YSQPb5wuLAAAAgAEAAGwAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfdm9s
dW1lY2hhbmdlLXN0ZGVyci50eHRVVAkAA3g/vld4P75XdXgLAAEE9QEAAAQUAAAAcyxNVzAyUTA0
tzIxsTIxUEgtLzY0NNbLyU9OzFEoKkkuSi3ILyrJzEuPNjMxszSKVbBxSU0qTbezUihOzUvxTS0u
TkxPDc8syXBOLElNzy+qtFLQyCvNydHkciTb5My8zBKQkcFA0zPz8zzz0vKtFCICnBWS8/PyUpNL
gGJANWWJOZkpFNgyONwPAFBLAwQKAAAAAACHjRhJAAAAAAAAAAAAAAAAWgAcAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRp
YS1lbGVtZW50cy9pbnRlcmZhY2VzL1VUCQADXj++V/VAvld1eAsAAQT1AQAABBQAAABQSwMECgAA
AAAAiI0YSQAAAAAAAAAAAAAAAGQAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvaW50ZXJmYWNlcy9U
ZXh0VHJhY2svVVQJAANfP75X9UC+V3V4CwABBPUBAAAEFAAAAFBLAwQUAAIACACHjRhJ415MVMoA
AADdAQAAeQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9pbnRlcmZhY2VzL1RleHRUcmFjay9hY3Rp
dmVDdWVzLXN0ZGVyci50eHRVVAkAA14/vldeP75XdXgLAAEE9QEAAAQUAAAApZCxagMxEERr31ds
GTeHlQgHhDE45yIGpwwuTIo9aS0LKysj7RHy99HF7lKFK3dg3uzMZvDwqEE9G62N0kBfRamnNiaL
EbLYTNeUJbA/LvVSLT5gteNTWhuIyfsqQxHMUtq2bTb/Rm2pH3xlFZI3KgU97W/Ul2q6GKjGSG4K
eHyuS3wKfsgoIfEhyLlLn9dI4/WK7CJlAx3aMzlYADH2NRN6tBdiV6a1ei+Ux722wYr5wzbw0Mzm
kxLY3Yf77YVCPuXvyuUhxnnzA1BLAwQUAAIACACIjRhJPcw29oQAAADAAAAAdQAcAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9t
ZWRpYS1lbGVtZW50cy9pbnRlcmZhY2VzL1RleHRUcmFjay9hZGRDdWUtc3RkZXJyLnR4dFVUCQAD
Xz++V18/vld1eAsAAQT1AQAABBQAAACdzD0KAjEQQOF+TzGlNmI0rhBEWNbGQhAsFMQiZmfjQJiR
/Cje3ngF28fj64qHhQa1NlobtQJ8J6WWsyDOBojZRXxKzMT+2upWzW+w2eG9+K2BhDwcMCXr8Uz5
0duMXuLHwIRLCNOm+1smpvwjT1Un4T2PYuBy7MEJM7pcW31eNtDQfAFQSwMEFAACAAgAlY0YSXK7
xi7fAAAA5AMAAHcAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvbmV0d29ya1N0YXRlX2R1cmluZ19s
b2Fkc3RhcnQtc3RkZXJyLnR4dFVUCQADeT++V3k/vld1eAsAAQT1AQAABBQAAADtkUFLAzEQhc/u
r5ijvYhbQ8UghXZ7sKAgiCiIh9lkmobGmZLMKv57s+LNW3vU48B732PeWwwBpgbaS2uMNS3QR2nb
i7MkDhNkdZn2kjVyeJmZ2dX0Fa5X1A9hbqGQ3lEpGOhWQqiKZTXtLFRjIt8sDgcrZu2ENzEMGTUK
P0XddvK2TzReN8g+UbbQoduSh3Mgxr5mQo9uR+zLMeGkj4Xymjeyik7tL7aF0+ZkclzCf28HJbD/
Ke77L1QKkj8rl4eU/ho5ctQR+VDpdduxdwvP9x04YSY37l0175iib74AUEsDBBQAAgAIAJWNGEmt
sWX9gwAAAMAAAABuABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL25ldHdvcmtTdGF0ZV9pbml0aWFs
LXN0ZGVyci50eHRVVAkAA3k/vld5P75XdXgLAAEE9QEAAAQUAAAAncyxCsIwEIDhvU9xoy5CaqgY
RCh1cRAEBwVxiOk1HoSLJBfFtze+guvPz9cXD60GtTJaG60A31mp5SJEZwMkcQmfMQmxv3a6W7c3
2OzwXvzWQEYeD5iz9XgmeQxW0Mf0MTDjEsK86f+WiUl+5KnqFHnPUzRwOQ7gIjM6qa0+LxtobL5Q
SwMEFAACAAgAlY0YSf9wN0jkAAAATAUAAHIAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGF1c2Vk
X2ZhbHNlX2R1cmluZ19wbGF5LXN0ZGVyci50eHRVVAkAA3o/vld6P75XdXgLAAEE9QEAAAQUAAAA
7ZNBSwMxEIXP7q+Yo72Iuw0Vgwh1e1CoIIgolB5mk2kamk5KMqv4782KN28tve1x4L3vMY+Zee+g
UVDfaKW0aoC+cl1Pr0I0GCCJSXSISTy71UzNbps13C2o6929hkzyTDmjo2V0rigeimmnoRgD2Wp+
PFgwSRt5412fUHzkdy/bNu4PgYbpEdkGShpaNFuycA3E2JVM6NDsiG0+JZzkLVN64k1ceCP6H1vD
ZXUxOS1h7O2oBLZ/xf3uhUIupu/C5T6EkTySz0H27GVAvhZ6+aHhvjV8vLRgIjOZ4a+K5hODt9UP
UEsDBBQAAgAIAJaNGElFBdYs6gAAAKQEAAByABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BhdXNl
ZF90cnVlX2R1cmluZ19wYXVzZS1zdGRlcnIudHh0VVQJAAN8P75XfD++V3V4CwABBPUBAAAEFAAA
AO2TQUsDQQyFz/ZX5Ggv4rZDxaEU6vZgoYIgoiA9ZGfT6dAxU2ayiv/erHjz5iL04DEh+V7mPWbZ
eZgYqK6sMdZMgd5LVU0vYnIYIYvLdExZAvuXmZldT7YwX1HT+YWFQtzeUSno6SnIvkYhn/KHhXPu
YhyPlr8mBw7SIx+UHhKveZcsPN/X4BIzOdGezrxhDO0AlULyff4mea8TN7p0sKCLkQaBBbPUiXfB
dxn7a7/8Sa/HSH11i9xGyhZqdHtq4RKIsVFNaNAd1NUy7FWPhXLv2So4sT/Yms/obDxI4a9y/0/k
9BI5hT/+CVBLAwQKAAAAAACJjRhJAAAAAAAAAAAAAAAAagAcAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50
cy9wbGF5aW5nLXRoZS1tZWRpYS1yZXNvdXJjZS9VVAkAA2E/vlf1QL5XdXgLAAEE9QEAAAQUAAAA
UEsDBBQAAgAIAIiNGElArzVn/gAAAPsBAACRABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlp
bmctdGhlLW1lZGlhLXJlc291cmNlL3BhdXNlLW1vdmUtdG8tb3RoZXItZG9jdW1lbnQtc3RkZXJy
LnR4dFVUCQADYD++V2A/vld1eAsAAQT1AQAABBQAAAClkEtrwzAQhM/1r9hjcmiwE2FTEQKJc2ih
hZJQejA5rKWVbKJKQQ/6+PVVQ3vp1XNb2JmPma5qOGO8qhd1fXeCdRa0h+3uCJssUCaF4ZmsHK0+
kCEMdKTIoSs/GtVjwxT2S1meYGecOEMJAwawzt5+kXfgSYFwyUZYFdukYcngDwf0Hqpqtcg2NOCj
8HRxPmZMV7Oa5cT1nvqkNxwCxScKATU9Oq3zx5XFIRsNySnBEX1snVWjTh7j6OzrGIfWvV0M/Vz3
aKUhz6FFMZDM7chin5nQozjnUcK0Vi+B/INVbj+KPOn/bA6z4mY+iWDl73DXXhhJO/+Zc20yZl58
A1BLAwQUAAIACACJjRhJGyDCWCQBAAC7AgAAjwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wbGF5
aW5nLXRoZS1tZWRpYS1yZXNvdXJjZS9wYXVzZS1tb3ZlLXdpdGhpbi1kb2N1bWVudC1zdGRlcnIu
dHh0VVQJAANhP75XYT++V3V4CwABBPUBAAAEFAAAAKWSTU/DMAyGz+xX+MgOoJVVHURo0tYdQAJp
2oRAmji4qZtGC86UpHz9etwJLhw4UN8S2c9rv/aiM3CRQzZTea6yAugtZtn03HmNDkLSgQ4+JMtm
V+RFPnmG6xVVnZkriMT1PcWIhh5taktMZHz4UHDKnXPj0eLfZMs29cit0K3nW268gqd1Cdozk07y
Jzmv6Gw92v3wz6+mmTAkoNwslluYS0DjutiupVPR2ZAjjLSlpGA3eZ81Fc6wuNQFivhS+trDBFqM
wJ7PPil4CNSIZscJpgPGiZS+fbrzxkjGUUuBFDqqh4AThlR6bqzpAva2HBfhXw6O+tcNcu0oKChR
t1TLdMRYiSZUqPdiShw21UOk0C9nZbVY+psthzA6GQ9S+PvAvgBQSwMEFAACAAgAiY0YSZ5s9Dkj
AQAAbwMAAI8AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVkaWEtcmVzb3Vy
Y2UvcGF1c2UtcmVtb3ZlLWZyb20tZG9jdW1lbnQtc3RkZXJyLnR4dFVUCQADYT++V2E/vld1eAsA
AQT1AQAABBQAAADNkj1PAzEMhmf6KzzCQNVrj56IUKX2OoAEUtUKgVQx+HK+XNTgVEmOr1+Pr4KF
haFLvSWyn9d+7XlnYJxDVqg8V1kB9B6zbDJ0XqODkHSgvQ/JstlO82k+eoGbJVWdmSmIxPUDxYiG
nmxqS0xkfPhUcM6dcxeD+QmSLdvUIzdCt57vuPEKnlclaM9MOsmf5Lyhs/Vg+8sfjifXwpCAcj1f
bGAmAY3rYruSTkVnTY4w0oaSgu3oo2gqLPCqqq578YX0tYMRtBiBPV9+UfAQqBHNjhNMjjIq/fh0
742RjIOWAil0VB8DThhS6bmxpgvY23JYhH/dO+pft8i1o6CgRN1SLdMRYyWaUKHeiSnxuKkeI4V+
OUurxdK/bDmEwdlpHth/5G9QSwMEFAACAAgAiY0YSfo4yEeDAAAAwAAAAIEAHABpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVk
aWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVkaWEtcmVzb3VyY2UvcGxheWJhY2tSYXRlLXN0ZGVy
ci50eHRVVAkAA2E/vldhP75XdXgLAAEE9QEAAAQUAAAAncyxCsIwEIDhvU9xoy5iNLQQRCh1cRAE
BwVxiOk1HoSLJBfFtze+guvPz9cXDysNqjNaG9UBvrNS60WIzgZI4hI+YxJif211q5c32OzwXvzW
QEYeD5iz9XgmeQxW0Mf0MTDjEsK86f+WiUl+5KnqFHnPUzRwOQ7gIjM6qa0+LxtobL5QSwMEFAAC
AAgAlo0YSaUzgU2EAAAAwAAAAHgAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcHJlbG9hZF9yZWZs
ZWN0c19ub25lX2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA3w/vld8P75XdXgLAAEE9QEAAAQUAAAA
ncwxCgIxEIXhfk8xpTZC1rBiEGFZGwtBsFAQi5idjQNhIslE8fbGKwiv+nl8ffHQalAro3Ud4Dsr
tVyE6GyAJC7hMyYh9tdOd+v2Bpsd3ovfGsjI4wFzth7PJI/BCvqYPgZmXEKYN/3fMjHJjzxVnSLv
eYoGLscBXGRGJ7XVz8sGGpsvUEsDBBQAAgAIAJeNGEkCqGIY5AAAAEwFAABzABwAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21l
ZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVyaW5nX2NhbnBsYXktc3RkZXJyLnR4dFVUCQADfT++
V30/vld1eAsAAQT1AQAABBQAAADtk0FLBDEMhc/Or8hRL+KsdcUiwjp7UFAQRBTEQ6bNdsvWZGkz
iv/ejnjztou3OQbe+x55JIshwMxAe26NseYM6LO07elxEocJsrpMW8kaObzOzfxi9gaXS+qHcGWh
kN5TKRjoTkKoiutq2lioxkS+WewOVszaCa9iGDJqFH6Ouu7kfZtonG6QfaJsoUO3Jg8nQIx9zYQe
3YbYl33CSZ8K5VteyTI6tX/YFg6bg6P9Eqbedkpg/1vcz16oFCR/VS4PKU3kifwf5MhRR+Rjpdcf
Gu/bwstDB06YyY1/VTUfmKJvvgFQSwMEFAACAAgAl40YSeOpzx7yAAAAZgYAAHoAHABpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvcmVhZHlTdGF0ZV9kdXJpbmdfY2FucGxheXRocm91Z2gtc3RkZXJyLnR4
dFVUCQADfj++V34/vld1eAsAAQT1AQAABBQAAADtlEFLAzEQhc/2V8yxvYjbxhVDKbTbg4KCIKJQ
PMxmp2loOinJrOK/Nyue9FT3UrDHhJnvvbwHmbcWxgqKK62UVpdA76koJuc+GPQQxUTahyiO7apU
5fX4FaZLqls705CIm3tKCS09O9lUKGRD/NAw5Nb70WB+hGTHTjrkY6a7wLe8DhpeHiowgZmM5Ls8
84beNT9UyoP8y7f9u2Btnljkpa2GvOipF1gwShV47WwbsXP7lU/Y7T11pxvkxlPUUKHZUAMXQIx1
1oQazTanmvq96ilR7DJbOiP6Fzv3Mzgb9VI4pPdjIZ+6/j9dn8h/+0s/AVBLAwQUAAIACACYjRhJ
js3Te/QAAAAMBgAAdgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19s
b2FkZWRkYXRhLXN0ZGVyci50eHRVVAkAA4A/vleAP75XdXgLAAEE9QEAAAQUAAAA7ZRBSwMxEIXP
9lfM0V7ErWGLoQh1e1BQKIgoSA+z2WkaGiclmbX4782KJz2ti0Khx4SZ7728B5m3FiYKiqlWSqsS
aJ+K4uLMB4MeophIuxDFsX0pVXk5WcFsQXVrrzQk4uaeUkJLT042FQrZEN81nHLr/Xg0/zXZsZMO
+ZDpLvAtr4OG52UFJjCTkXyXZ97Qu+abyrSXf/myfxeszRPXeWmrIS96GgQWjFIFXjvbRuzcfuYT
XneeutMNcuMpaqjQbKiBcyDGOmtCjWabU03DXvWYKHaZLZwR/YOd+xmdjAcp9On92Mif5nXAXR/J
/0Hu85d+AFBLAwQUAAIACACZjRhJ0gStzOkAAACkBAAAegAcAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50
cy9yZWFkeVN0YXRlX2R1cmluZ19sb2FkZWRtZXRhZGF0YS1zdGRlcnIudHh0VVQJAAOBP75XgT++
V3V4CwABBPUBAAAEFAAAAO2TwUoDQQxAz/YrcrQXcetQdRChbg8tKAgiCtJDdjadDh0zZSar+Pdm
xZsnXUSEHhOSl8wbMus8TAxUp9YYa86AXktVnRzF5DBCFpdpl7IE9k9TMz2frOBiTk3nLy0U4vaG
SkFPD0E2NQr5lN8sHHIX43g0+zE5cJAeeaf0kHjJ62Th8bYGl5jJiea05gVjaAdMKSSf618n77Xi
Spu2FrQx0iCwYJY68Tr4LmO/7Yef9LyL1EcL5DZStlCj21ALx0CMjc6EBt1WrZZhr7ovlHtn8+DE
fmHr/4wOxntvf+Dtt+7lP5K/c+PvUEsDBBQAAgAIAJmNGEngJlqn7gAAAAwGAABzABwAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVyaW5nX3BsYXlpbmctc3RkZXJyLnR4dFVUCQAD
gj++V4I/vld1eAsAAQT1AQAABBQAAADtlE1LA0EMhs/2V+TYXqRbx0oHEdrtQUFBEFEQD9nZdDp0
zJSZrOK/NyvePGkVBHtMSJ58vCTzzsPEQHVijbFmBvRSquroMCaHEbK4TNuUJbB/mJrpbPIIp0tq
On9moRC3V1QKeroLsq5RyKf8amHIXYyjwfzb5MBBeuSN0kPiC14lC/fXNbjETE7UpzHPGEO7Q5VC
8tH+ZfJeIxaatLGgiZH+JlgwS514FXyXsV/D++LT0zZSb50jt5GyhRrdmloYAzE2WhMadBuVq+w2
1W2h3IuxDE7sJ7YKPzgY/avxjse/dS978p78I+Sv/NI3UEsDBBQAAgAIAJqNGElfhCwAhAAAAMAA
AABsABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfaW5pdGlhbC1zdGRlcnIudHh0
VVQJAAODP75Xgz++V3V4CwABBPUBAAAEFAAAAJ3MvwrCMBCA8b1PcaMuYmusGIpQ6uIgCA4K4hDT
Mx6EO8kfxbc3voLrx8evzw4aBfVKK6WXc8B3rOvFzIs1HkKyAZ8SErG7tKpdN1fotnjLbqMhIo97
jNE4PFF6DCahk/DRMOHs/bTq/5aJKf3IY9FJeMd30XA+DGCFGW0qrTwv42msvlBLAwQUAAIACACa
jRhJtc1X/dYAAADCAgAAhAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9zcmNfcmVmbGVjdHNfYXR0
cmlidXRlX25vdF9zb3VyY2VfZWxlbWVudHMtc3RkZXJyLnR4dFVUCQADgz++V4M/vld1eAsAAQT1
AQAABBQAAADVkD9PwzAQxXc+xY10SB2nQTHeKqqqA0MVtVPF4NoXYuE/wXb6+TmUzmxIoFveT++d
9O4uvJNtK5/4uuk2b3A4nY49fs6YCwz2/VDKdMedNT1qtDfsMU8xZHxRzl2V/pCQFsPASHmixYe2
buERU4oJKt48b8QKBtLfIcmYi1q5MeYihahrNhbvWEavQrE6M/RXNAZNpWMoGArzaKyq0KEnymyI
8eHyc3fC3eynvQ3KnfvXbaADfCy4NYYqZglqEcCbbl3TcFqjLMzJ/U5J8Y8fLP7qg78AUEsDBAoA
AAAAAImNGEkAAAAAAAAAAAAAAABVABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3RyYWNrL1VUCQAD
YT++V/VAvld1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAiY0YSQAAAAAAAAAAAAAAAGMAHABpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvbWVkaWEtZWxlbWVudHMvdHJhY2svdHJhY2stZWxlbWVudC9VVAkAA2E/vlf1QL5XdXgLAAEE
9QEAAAQUAAAAUEsDBBQAAgAIAImNGEkCTRYM/AAAAOwBAACCABwAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1l
bnRzL3RyYWNrL3RyYWNrLWVsZW1lbnQvdHJhY2stYXBpLXRleHR0cmFja3Mtc3RkZXJyLnR4dFVU
CQADYT++V2E/vld1eAsAAQT1AQAABBQAAAClkUFLw0AQhc/mV8xRD4YkXRtYSqFNDwoK0iIeQg+b
3ckmdN0tOxsUf70TxYtHO7cZmO+9edOWtRRClnVe1eIIKy5o9pvtAdZc0LuJhmf0ZvR2jw4V4QGT
hLb4qHtdVMbcGW2KI2xd0CcoYFAEPvjbT4wBIvagw+QTiGwzWagE/MoBvlNZLnJeUw5i0hHPISaW
aZdiuViylQffh7UEF6zlMVBSMVGe5/9A7bCbLLMI0xMSKYuPP9Rv2xJ40aG5BDyba4LvRztFlcbg
X8c0NOHt7HDu7pU3DqOERukBDQeFXnWsCZ3SJ86XLrvqhTDOee1Gzd/5y5ZwnV3dZF9QSwMEFAAC
AAgAmo0YSbmHxT29AAAA7AEAAGMAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvdmlkZW9fMDA4LXN0
ZGVyci50eHRVVAkAA4M/vleDP75XdXgLAAEE9QEAAAQUAAAAtZAxiwIxEIXr81dMqY3c6upxQQRd
CwUtxeK4YjYZY9g4WZJZxH9vFDu7kysfzPs+5i06C6MSii9VlmpSAF1SUYyHPmj0EEVHakMUx/Zn
Wk6/R78wW1Hd2bmCRLKjlNDSNlibL5a51CjIRU+mt/g7WDBKFfjobBdRXOCDk1MVzq2ne1ojG09R
QYX6RAY+gRjr7IQadUNs0jtykn2iuOFjWDkt6oWtoN/7GLxlYPMc7vEXCtkQr5nLnff/Sb4BUEsD
BBQAAgAIAJqNGEnIBp2ThAAAAMAAAABsABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3ZpZGVvX3Zv
bHVtZV9jaGVjay1zdGRlcnIudHh0VVQJAAOEP75XhD++V3V4CwABBPUBAAAEFAAAAJ3MMQoCMRBA
0X5PMaU2Qta4YhBhWRsLQbBQEIuYHeNAmEgyUby98Qq2n8/ri4dWg1oarc1CAb6zUvNZiM4GSOIS
PmMSYn/pdLdqr7De4q34jYGMPO4xZ+vxRPIYrKCP6WNgwiWEadP/LROT/Mhj1Snyju/RwPkwgIvM
6KS2+rxsoLH5AlBLAwQKAAAAAACJjRhJAAAAAAAAAAAAAAAAUgAcAGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtYXVkaW8t
ZWxlbWVudC9VVAkAA2E/vlf1QL5XdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAImNGElSenOr3QAA
ANACAABuABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L3RoZS1hdWRpby1lbGVtZW50L2F1ZGlvX2NvbnN0cnVjdG9yLXN0ZGVy
ci50eHRVVAkAA2E/vldhP75XdXgLAAEE9QEAAAQUAAAA1ZAxTwMxDIV3foVHGK65lBM5slVUqAMD
OpWpYkgTl4twkiPx8ftJOWaYkEBe3rOfpc8+SKW7Tku16tXNM+z2+8cB32YsDCf/smOevuzWuwEt
+nccsEwpFrwzREdjXzXkZeBgrPnqljl0bQeXmHPK0Mj17XV/BaeqzyEtBCVraEyFdd+3rRg5kCgY
TGRvi8BwROfQNTZFxsiCR2zM7HxqkDCcOyXbi8P3+NVu5zDd+2joaXjYxHpDSIwb5ypl0WAWAXKt
Vm0tWddqFuZMv8ap/teb40z0E/+f+PMn6AdQSwMECgAAAAAAiY0YSQAAAAAAAAAAAAAAAFMAHABp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNv
bnRlbnQvdGhlLWNhbnZhcy1lbGVtZW50L1VUCQADYT++V/VAvld1eAsAAQT1AQAABBQAAABQSwME
FAACAAgAiY0YSSjwzZeDAAAAwAAAAHAAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWNhbnZhcy1lbGVtZW50LzJkLmNh
bnZhcy5yZWFkb25seS1zdGRlcnIudHh0VVQJAANhP75XYT++V3V4CwABBPUBAAAEFAAAAJ3MsQrC
MBCA4b1PcaMuQmxIIYhQ6uIgCA4K4hDTMw2EO0kuim9vfQXXn5+vrwHWGlRntbaqA3wXpdpVYu8S
ZPEZn5wlUrgabVpzg80O7zVsLRSk8YCluIDnKNPgBAPnj4UF1ZSWTf+3HCnKjzzNemTa04MtXI4D
eCZCL3Obn5dLcWy+UEsDBAoAAAAAAImNGEkAAAAAAAAAAAAAAAAqABwAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvVVQJAANhP75X9UC+V3V4CwABBPUBAAAEFAAAAFBL
AwQUAAIACAB6jRhJwhf1FaIAAABPAgAARgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvSW5kZXhlZERCL2lkYmZhY3Rvcnlfb3BlbjExLXN0ZGVyci50eHRVVAkAA0g/vldIP75XdXgL
AAEE9QEAAAQUAAAA7Y+xCsIwFEX3fsUb28WAiJRs2nYQFbEFO0qavCGQ9oX0pfj51tLJL3BwvHDO
5d6qrm+1hAMz9p6BCZSZ1KARFGjqvUNGAzqGkUIiHuRij6MoFStRtY1osTtbFg3FoPGTCgoormSi
mzE7GHyhMZ0YMUwYRHO/WMZTeSyWwo32Pt3meQYSOiIHa4GUM9IsipRfjpTrwDTagfe7J2dJ9T/x
IyfeUEsDBBQAAgAIAHuNGEm8cWzVmQAAAMUAAABDABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9JbmRleGVkREIvaWRiaW5kZXhfY291bnQtc3RkZXJyLnR4dFVUCQADSj++V0o/vld1
eAsAAQT1AQAABBQAAABdjrEKwjAURfd+xRvbxYCIlGzadhAVsQE7Spq8IZD2hfSl+PnW0snxwjmH
27Tto5VwYsYhMDCBtrMeDYIGQ0PwyGjBpDhRzMSLfBpwErVmLZpOiQ77q2OhKEWDv1VRRHEnm/yC
udHiB63txYRxxijU8+YYL/W5WoM7E0K+L8sCJPREHraAlAuiVkXKP0fK7WCe3MjHw5uL7AtQSwME
FAACAAgAe40YSbxxbNWZAAAAxQAAAEQAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L0luZGV4ZWREQi9pZGJpbmRleF9jb3VudDItc3RkZXJyLnR4dFVUCQADST++V0k/vld1eAsAAQT1
AQAABBQAAABdjrEKwjAURfd+xRvbxYCIlGzadhAVsQE7Spq8IZD2hfSl+PnW0snxwjmH27Tto5Vw
YsYhMDCBtrMeDYIGQ0PwyGjBpDhRzMSLfBpwErVmLZpOiQ77q2OhKEWDv1VRRHEnm/yCudHiB63t
xYRxxijU8+YYL/W5WoM7E0K+L8sCJPREHraAlAuiVkXKP0fK7WCe3MjHw5uL7AtQSwMEFAACAAgA
e40YSbxxbNWZAAAAxQAAAEQAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4
ZWREQi9pZGJpbmRleF9jb3VudDMtc3RkZXJyLnR4dFVUCQADST++V0k/vld1eAsAAQT1AQAABBQA
AABdjrEKwjAURfd+xRvbxYCIlGzadhAVsQE7Spq8IZD2hfSl+PnW0snxwjmH27Tto5VwYsYhMDCB
trMeDYIGQ0PwyGjBpDhRzMSLfBpwErVmLZpOiQ77q2OhKEWDv1VRRHEnm/yCudHiB63txYRxxijU
8+YYL/W5WoM7E0K+L8sCJPREHraAlAuiVkXKP0fK7WCe3MjHw5uL7AtQSwMEFAACAAgAgY0YSbxx
bNWZAAAAxQAAAEkAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9p
ZGJvYmplY3RzdG9yZV9jb3VudC1zdGRlcnIudHh0VVQJAANRP75XUT++V3V4CwABBPUBAAAEFAAA
AF2OsQrCMBRF937FG9vFgIiUbNp2EBWxATtKmrwhkPaF9KX4+dbSyfHCOYfbtO2jlXBixiEwMIG2
sx4NggZDQ/DIaMGkOFHMxIt8GnAStWYtmk6JDvurY6EoRYO/VVFEcSeb/IK50eIHre3FhHHGKNTz
5hgv9blagzsTQr4vywIk9EQetoCUC6JWRco/R8rtYJ7cyMfDm4vsC1BLAwQUAAIACACAjRhJvHFs
1ZkAAADFAAAASgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lk
Ym9iamVjdHN0b3JlX2NvdW50Mi1zdGRlcnIudHh0VVQJAANQP75XUD++V3V4CwABBPUBAAAEFAAA
AF2OsQrCMBRF937FG9vFgIiUbNp2EBWxATtKmrwhkPaF9KX4+dbSyfHCOYfbtO2jlXBixiEwMIG2
sx4NggZDQ/DIaMGkOFHMxIt8GnAStWYtmk6JDvurY6EoRYO/VVFEcSeb/IK50eIHre3FhHHGKNTz
5hgv9blagzsTQr4vywIk9EQetoCUC6JWRco/R8rtYJ7cyMfDm4vsC1BLAwQUAAIACACAjRhJBIrp
A58AAACKAQAASgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lk
Ym9iamVjdHN0b3JlX2NvdW50My1zdGRlcnIudHh0VVQJAANQP75XUD++V3V4CwABBPUBAAAEFAAA
AN2PsQrCMBRF937FG+1iQERKNm07iIrYgB0lTd4QSPtC+lL8fGvp5Cc4Xjj3cG/dNPdGwpEZ+8DA
BNpOejAIGgz1wSOjBZPiSDETT/Kpx1FUmrWoWyVa7C6OhaIUDX5TSRHFjWzyM+YGi2+0thMjxgmj
UI+rYzxXp3IRbk0Im11R5CChI/KwCqScEbVUpPzpSLkO3CQ38GH/4jyr/+HEB1BLAwQUAAIACACC
jRhJvHFs1ZkAAADFAAAASwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhl
ZERCL2lkYm9iamVjdHN0b3JlX2RlbGV0ZTUtc3RkZXJyLnR4dFVUCQADUz++V1M/vld1eAsAAQT1
AQAABBQAAABdjrEKwjAURfd+xRvbxYCIlGzadhAVsQE7Spq8IZD2hfSl+PnW0snxwjmH27Tto5Vw
YsYhMDCBtrMeDYIGQ0PwyGjBpDhRzMSLfBpwErVmLZpOiQ77q2OhKEWDv1VRRHEnm/yCudHiB63t
xYRxxijU8+YYL/W5WoM7E0K+L8sCJPREHraAlAuiVkXKP0fK7WCe3MjHw5uL7AtQSwMEFAACAAgA
hI0YSbxxbNWZAAAAxQAAAE4AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4
ZWREQi9pZGJ0cmFuc2FjdGlvbi1vbmNvbXBsZXRlLXN0ZGVyci50eHRVVAkAA1g/vldYP75XdXgL
AAEE9QEAAAQUAAAAXY6xCsIwFEX3fsUb28WAiJRs2nYQFbEBO0qavCGQ9oX0pfj51tLJ8cI5h9u0
7aOVcGLGITAwgbazHg2CBkND8MhowaQ4UczEi3wacBK1Zi2aTokO+6tjoShFg79VUURxJ5v8grnR
4get7cWEccYo1PPmGC/1uVqDOxNCvi/LAiT0RB62gJQLolZFyj9Hyu1gntzIx8Obi+wLUEsDBBQA
AgAIAIiNGEkEiukDnwAAAIoBAABYABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9J
bmRleGVkREIvdHJhbnNhY3Rpb24tY3JlYXRlX2luX3ZlcnNpb25jaGFuZ2Utc3RkZXJyLnR4dFVU
CQADXz++V18/vld1eAsAAQT1AQAABBQAAADdj7EKwjAURfd+xRvtYkBESjZtO4iK2IAdJU3eEEj7
QvpS/Hxr6eQnOF4493Bv3TT3RsKRGfvAwATaTnowCBoM9cEjowWT4kgxE0/yqcdRVJq1qFslWuwu
joWiFA1+U0kRxY1s8jPmBotvtLYTI8YJo1CPq2M8V6dyEW5NCJtdUeQgoSPysAqknBG1VKT86Ui5
DtwkN/Bh/+I8q//hxAdQSwMEFAACAAgAiY0YSbxxbNWZAAAAxQAAAEYAHABpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi93cml0ZXItc3RhcnZhdGlvbi1zdGRlcnIudHh0
VVQJAANhP75XYT++V3V4CwABBPUBAAAEFAAAAF2OsQrCMBRF937FG9vFgIiUbNp2EBWxATtKmrwh
kPaF9KX4+dbSyfHCOYfbtO2jlXBixiEwMIG2sx4NggZDQ/DIaMGkOFHMxIt8GnAStWYtmk6JDvur
Y6EoRYO/VVFEcSeb/IK50eIHre3FhHHGKNTz5hgv9blagzsTQr4vywIk9EQetoCUC6JWRco/R8rt
YJ7cyMfDm4vsC1BLAwQKAAAAAACUjRhJAAAAAAAAAAAAAAAACgAcAGluc3BlY3Rvci9VVAkAA3g/
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
ZQ25XaRw2+/5+cBltXTZpom4N2G1mG6YiOGLAVBr0hA9IITk1Ie9Mz/iwx9QSwMEFAACAAgAzY0Y
SbpzHenEAAAAJAMAACgAHABtZWRpYS9zb3VyY2VzLWZhbGxiYWNrLWNvZGVjcy1zdGRlcnIudHh0
VVQJAAPiP75X4j++V3V4CwABBPUBAAAEFAAAAO2RsW4CMQyG5/IUHtsF9a7HISJUCY6hleiIGBCD
LzEhIjgo8Qnx9g2IjY1Tt46W/H+f7H/WWSgrKMaqqlU5AjqnovgY+qDRQxQd6RSiOLabuqon5Ram
C2o7+6kgkfxQSmhpGazNG/McOijIQU9mMHseLBilCbxztosoLvDayb4Jx5On6/SFbDxFBQ3qPRl4
B2JssxNa1Adik/rISVaJ4jfvwsJpUQ9sBa+Dl7deBjb3x93uQiEb4iVzufO+H/m/kb9o5BdQSwME
FAACAAgAzY0YScF3i/6KAAAAgAEAADAAHABtZWRpYS9zdmctYXMtaW1hZ2Utd2l0aC1tZWRpYS1i
bG9ja2VkLXN0ZGVyci50eHRVVAkAA+I/vlfiP75XdXgLAAEE9QEAAAQUAAAAzc49CkIxEATg3lNs
qY2QGCIGER7PxkIQLBTEIuatcSFsJD+KtzdeQRvbYfhmuupBKhBzo7SRGvCZhZhNQ3Q2QCou4T2m
QuxPWumFPMNyjZfqVwYy8rDFnK3HA5Vbbwv6mF4GxlxDmIy6r2ViKh9y33SKvOFrNHDc9eAiM7rS
stZ52EDDDyv/8f8NUEsDBBQAAgAIAM+NGEnPTinSkAAAAL0AAAAhABwAbWVkaWEvdW5zdXBwb3J0
ZWQtcnRzcC1zdGRlcnIudHh0VVQJAAPlP75X5T++V3V4CwABBPUBAAAEFAAAAG2OQQ6CMBQF957i
X0BQoi7YVhESSQjCAZr2RZtgP7a/JN5eXblxNbOYxeRXTsFAaXNHrjighXX6Z+vt/lBkxW6Td4GF
5TUj5pW71cPQfakmBy+19naCVSkKP8b+8mkXZxEyQ+ZvoAK0oEec2UccnZGKwxnS45kQpSTFabLk
WciwXxCExqEhYWqb9kTfjZJWb1BLAwQUAAIACADQjRhJf7NLh7gAAADqAAAAIwAcAG1lZGlhL3Zp
ZGVvLWFzcGVjdC1yYXRpby1zdGRlcnIudHh0VVQJAAPnP75X5z++V3V4CwABBPUBAAAEFAAAAE3O
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
cy9wYXJzaW5nLWNzcy1ub25hc2NpaS1hY3R1YWwudHh0VVQJAAPyQL5X8kC+V3V4CwABBPUBAAAE
FAAAAAtJLS5RKEgsKs7MS1fIT1NwDg5WSC1OTixILdbj4nJz9PQJDXLl4goqzUktVkgrys9VKMlI
VSguqQTyM1JTS6y4uJQTDY3M42PM0xQUqhWS83Pyi6wUilJTrBVqwVIW8YcaMCWS0CXSi1JT86B6
TC3jD83HpgdNAlmPmUH8oQXY9KBJIOkxtjCJP4bNbegScD2uFQWpySWpKUClxaU5SJ6vH/Ze5wIA
UEsDBBQAAgAIAF2OGEmfXRHn9wAAANQBAAAuABwAcmV0cmllcy9mYXN0L2Nzcy9wYXJzaW5nLWNz
cy1ub25hc2NpaS1kaWZmLnR4dFVUCQAD8kC+V/JAvld1eAsAAQT1AQAABBQAAAC9jc9Kw0AQh+95
igGP63aNINV6iaYRRE+NbS9C2GwmaWCbDTuz0CKib+K79MlMS71Yz17m38c3PyklqIWzYY2kppq1
ypa5WmL51PKx3YfWVmqKZWiU1VsXWDISS48ULJPyyL4d7FoTK0Okeu2p7Ro5zLJznSbTthI3PRrG
asQbjoQQ/5OqDQdtD5lJAjI+jy9AHGqSRPAyPISjB66GNM8ByegeaRRBJPN5mmZ5HomHu8fn+Swb
bjALFglq79bAKwTi7bCvEHmyN850fDkuXj/gDYyzzk/AY3UL75E4knENJwz27LrYff5Byt+k8Yjd
j3V1U+y+TqxvUEsDBBQAAgAIAF2OGElz/MWnoQAAACgCAAAyABwAcmV0cmllcy9mYXN0L2Nzcy9w
YXJzaW5nLWNzcy1ub25hc2NpaS1leHBlY3RlZC50eHRVVAkAA/JAvlfyQL5XdXgLAAEE9QEAAAQU
AAAAC0ktLlEoSCwqzsxLV8hPU3AODlZILU5OLEgt1uPiCg51dnYNDubiCirNSS1WSCvKz1UoyUhV
KC6pBPIzUlNLrLi4lBMNjczjY+oVqhWS83Pyi6wUilJTrBVqwRIW8YcaMCWS0CXSi1JT86B6TC3j
D83HpgdNAlmPmUH8oQXY9KBJIOkxtjCJP4bNbegScD2uFQWpySWpKUClxaU5I8rrXABQSwMEFAAC
AAgAXY4YSfNnOJkzCAAANB8AADYAHAByZXRyaWVzL2Zhc3QvY3NzL3BhcnNpbmctY3NzLW5vbmFz
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
VhTepKKQOy11h68rdF64VjVrOUAlLzMgtR5zrtTbve03XX/zzUKIqdyVLPQWeBa3xDHEVRpGcA/J
xn8OvrUoIkVmugxIH9LLkCVieRi4CaqqqIGljP48X7KvF0lvYco6Aa7gF3eoOVmElQtJCU4tzJMC
sORQaYo5F8/JS/fVTEgnSn6WAVBUUVRRVPcsN4PPrWIMuouC1afJ+dnpg8rxWzd1NxN+Gk5Ia/s/
Rkni3dUsP25Gtmk5EFNE+HgnJn8+1OOd77MWzD0cpygIl56Xe8M8EBaSsZC8Q6cSC8tYWMbCMgb1
WFjGwjIWlrGwjIVlLCxjYRmrdVitQ1FFUUVRxcIyFpYxBt2fMsBe1zjV4QU+IYDPfuFnHrFSjJVi
rBTjXw1jsffTPS30uh9gxOeF8HkhLOxiUI1BNb5Bim+QYmEXvwf/2h+N3qOPNyeT3LLQp9a5484u
bWc1pf9uv/csGbUwnmf0dmklX+u+Sj7c7Xqrz3Z/ro9EY20G3Uh8pRJfqaz1EAq9YN+XwgTLjjpk
F7cyczc2mEkdh1pbRpwTdtWaS6x2onf0IozpuD4tAQ30UREoPn3GEeRkZcLKI+C8lAl0Rb3iiay3
o9H/UEsDBBQAAgAIANSNGEn8B20rPQoAAKmkAAA3ABwAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L2Jsb2Itc2ltcGxlLXdvcmtlcnMtc3RkZXJyLnR4dFVUCQAD8D++V/A/vld1eAsAAQT1AQAABBQA
AADtXUtvo0gQlvbok39Cay4bSxkJ2xgnuSXOJGvtapydzMwdQzthg8HLY5Jc9rdvAebdDzAQ20mP
FI1Mv7urqr+vqmnm11f32PmFnYsLXfXUperimW1ZWPMM25qZtot19BkNZWk6lhVpOB0NJyOp98My
/vXx/PrqulTm4kIrlL9x7PXMNLDlQU39Qm3ydNQ7WauGNUClSrlVnWRqks6GyqBHqMOwftlPeLHB
jhpUdGnp3x3VctWw2u/GGjsng95cTENhGuwNtq6vvmGox/VmqqVh08Q6qWZyzqBnjCHZjI7cGA60
lOmLFoy6VAmpL/+Vnp0M0In0Ml2tVpPxaqgMFWkAHYMMN9Ci7bzCgmMTezjOH/YbktOl/G4nokHM
yUgl9JDTwelYDztIn7lH1dJNfB02xs+2/Z2suwv9+v6IHYxU+APBORuPx6PxCMEi6ob10KtX1Z29
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
z9cysnoA73T5UXongyGde3YfgM84JHi2Aj9kFplFZpFZZBaZRWaRWWQWmUVmkVlkFplFZpFZZBaZ
RWaRWWQWmUVmkVlkFplFZmul3R2EY9Q27zMoWs3elASNV5QqITO90t2J6vZXWDyXf+IHkgio8rcJ
+dD90ClFxX2pZVzcTCIJe6W8oElcRw7SiGw3m7rlJJAW50/+NJgMN0MabxtrVrRMJhnNf6P5Pc22
SS5dJSvi5mLg7Y2FLAXXb+ntNi3vuPVyVppqowaRDXzSS954aXR5DOCWffUL80o2ZfWQHMiZYZ43
hDVJ8FTLNZ7z753XaZDOjet5KICoIqqIKqKKqCKqiCqiiqgiqogqooqoIqqIKqKKqCKqiCqiiqgi
qogqooqoIqr/Q1R/8r8QwOsAeB0AEywmWDwLIKqIKqKKqCKqiCqiiqgiqogqooqoIqqIKqKKqCKq
iCqiiqgiqogqooqoIqqI6uVRvUBRALZex3mzssZrnCTTot1cv+QdBo+WHjg03yg90Hp55L/tl3M0
1R48nKypUtq+5oBSSVd3wCx83nClugPKbk/xxlkFB1RWmnWGxo7rvKcio658gQqDVvkCBcLKUXc1
Mgt+vWT8COyrWNRF2Ncb+vXq6Bx4RcoeiqJCYjK7rHO9gkzWKFpUOqUoNNQ1loVrV848KIfENg1K
rLFv+wdFfESRvgOhgT9qCq2DtyUtKmnOd2njUMOxtBBpSnK2XLYb7bkz/g9QSwMEFAACAAgA140Y
SebAH1HNBQAAFFYAADQAHABzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTMtcHJpdmF0
ZS1zdGRlcnIudHh0VVQJAAP2P75X9j++V3V4CwABBPUBAAAEFAAAAO2cS2/jNhCA7z7lJ+hoAw2g
hy0/bom9KYyi6yDJ7p2W6ISNLLqSnGwu/e0l9aQkkpITp1ss5rAHizOc4fCbIR1rZ726vsfRC44W
C3rA4er6Dv99xHGyRKGHgwD7g28hYU/Wq+sVStAWxVglaVwaF4N1NZ+fyy9pGGIvITRcBjRO5ayx
OXXGrmlNbWtim20blc5i4TX0byK6XwYEhwm32JhtPLUHwz0i4ciQON4x1VCYyZxZ7ki2eBK+0Ge8
OeAI8YmuQv8hQmGM0mkfyB5Hw5EYhrOEVb0kqnHkhkTMkuCLx1fdmkTmyz+tZ8ORMTR/THe73cTZ
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
YXRhYmFzZS1udWxsLW5hbWUtZXhjZXB0aW9uLXByaXZhdGUtc3RkZXJyLnR4dFVUCQAD/D++V/w/
vld1eAsAAQT1AQAABBQAAADVkT8PgjAQxXcmP0LHdjBp5V/iJhATJhPFD1DhSBrhii0SJz+7xTgY
RScX18u737v3Ls+SHZgBzHKpO8As2cLpDLZPJZbQNFB5e1RukmdJJnt5kBY+KcmczDzaSoWMTCyV
GhHKXmlMG22hWhvdpo0C7MdFQkXAYz+IuIgXPAo4mzJWOOgjbDowcgStsCqMRCvv2EK1YCjz8h9H
+iNe9dCnL1073VO9IlzwL4/SX+pdK+Pue3IsR/4bZCrB9W1GGaH8Etd1Hfq1iETEmYtzA1BLAwQU
AAIACADajRhJWpKjo04BAACdAwAASAAcAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVk
YXRhYmFzZS1yZXF1ZXN0LWV2ZW50LXByaXZhdGUtc3RkZXJyLnR4dFVUCQAD/D++V/w/vld1eAsA
AQT1AQAABBQAAACVUsFOg0AQvffkJ+wREptAF4tyBDTpSWPrB2x3B0uks7i7rXrx2x1KS9qU0ngg
geG9N2/ezCxPn4R02vwkiYIKHOTCiaWwwMbsZjTL00wjgnSlxoWeg9mCuYQc+PuG5ecGCHOoJslZ
yfOZF3zHRVHc8SKMuQp8YnprUaLPegRWAlUF+a7Zddj++7kGI5phLPlarMAAE/SEUXDPOZ/wCasB
VYnvo/9Jvei6BsUEMn0o3zLUX8wN9bjmOtsYA+i6TgMEghTarPeMNpWOt9uBp5a9zHZdqZAfZGlO
pzCUpipVfo4/Wr6stIUzYl+av9cuIJzuLuDSDR6cdD0ISBNjnr4C6VqXJKZ9yfS6bpCqB6LxVGW+
kRKsJStjJtswGfWzTYqlbZYY82gahPEkeIiiRrCTUqWthZOrx21DosiPp5nyZeBfmkUfe8oESqgq
cvsHUEsDBBQAAgAIANuNGEkRqlxsiwEAAEIEAABAABwAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L2RlbGV0ZWRhdGFiYXNlLXJlcXVlc3QtZXZlbnQtc3RkZXJyLnR4dFVUCQAD/T++V/0/vld1eAsA
AQT1AQAABBQAAACVVMtuwjAQvHPiE3wDpCIFkpLWxxAqIVWiLfQDjL0Bi2CntqHtpd/eTSAoVRJQ
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
QK50rduz+zYa9FCGx6tGkhnLEG8sdUUs9NsJw7BvhYZjAdIF9VREbVDqVRC2LLPnFghfFuqWbTbi
HGCqFWz4pFG209K2Pc5lPX7gXDC52KnFQZiEjMcnD1p4VZG1kLpT3cBTMZyOsH8vcl4IpkAW0TBt
sFHfQfoFbVp8/0rSzLIcbThcQTrnN4kwj0iyPvrNaMgEtEfREXxQlx+QYF5L8nU4YRj2e/bL9gzU
pj0CM57+BJ5kAiiSWEFJgc6IMAecgsq3IcSGM+ibSoZ4sCK05D6rtuK5oqvgS3234z0l060DMwqO
C7N5+bIbDvnh1mPxJoJUyHUlz9IPsc04A00kUmKltiPpWtvmOJZvLmS7rna6n7STVmYdDhEaYBeF
gYMsPzD1ztP7mhdbWthnKcGjViijd5sVxwF8AwggEJr7WfNzAhb5k6RSgusioWOwk6x/vBuxKDQg
yQan/vpmW8wBpSNlebkEVgAsUj4lWXHq+RInn8UxSaud25EoGu/X2zv2gg3nNCe3ivJ+ffuy4Df/
2WiCrMa2CaxebMY+lVAcdU/qpDjufrvxZekKPbhty+EpaGhdH0eRJ5LU2zVWbCbdpaqsA9MyX/L5
oJC9sYwGlWoKo04dIgWDJTZzfu0xfobsoaD3nB4V9uMpRw2VknpIZDQrZvHg+5Ak12EKvCLTOSh7
ab16hiYpWjklVAxGX7ICRcbK+778qfZUJznpayRuCSX7YkNu+wFsCfeSc3C5vn4sIr7NJ0d1j3cY
YQ0L6W8gb8+Y6hrz0OEYd/VXm/mcvnnBzPdPjVBJyjZH2StPsvvVE0ZoYBt21cbPnm5qRn3brRrF
+NGD/SPP7DD/1D1MpKSL4uGq9bGj+XB2sfXfAsMfUEsDBBQAAgAIAN2NGEmVaLkmjwQAAFEkAAA+
ABwAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2djLWNsb3Nlcy1kYXRhYmFzZS1wcml2YXRlLXN0
ZGVyci50eHRVVAkAAwFAvlcBQL5XdXgLAAEE9QEAAAQUAAAA7VpLb+M2EL77lJ+gow3sAtRb9i2W
G9SH1osmu3daomIhMulSStJc+ttLSbZESiT9xgZdHwLE8rw4j2+GI89n00dE3xCdTGJYwCXMUUgw
RlGREhxmJEex8dUwHeDbjgdM3zJdCwy+4/TvVzSfTWc9nskk6vA/ULIOsxThgkm660hzfGswXMMU
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
hCEMYQhDGMIQhjCEIQxhCEMYwhCGMIQhDGEIQxjCEIYwhCEMYQhDGMIQhjCEIQxhCEMYwhCGMITh
x2PoJ+t1mPdqPfUcRpFbfq+EWmdvWWGXev+4epV/86J5IHf32E6jUWDR4V1TwtUmtej1DcFqpKbd
/YFO/HMa5mr0TRiH2UqcNgH0TT+lE9W50Ig/DGRZmbYW+eeM7eloPLGdqXMxHA17mqaG8VPyTcz3
vq7iQCmm1NY3zUVXp+d4Uroa+dpWn7XEyCm9SNKOObKUs2Iey4RNscQZRicx3Gw5tQy5Ky8OIrH/
XHVbJjv7fiVSYXnyT3b7bDScTca2tRFxIMVpekVZdOp3nRs6s/65tHQcItc0bxFJoV0Tvwo8Gj1t
S2RVclWVq07x8UlYuXm5Osyf4lptOj2IvBGfbtfiLyLfPVtIIokkkkgiiSSSSCKJJJLeK0m+pik7
QsWb5G6n6GqZi/R3kWYy110Vu2rubqtg//JlfJ0yvrjrMhov7kNHvknqXtxFLL95FJ1bC6e/4r9q
x+nEbbTRwjZtI2z3VP5TvFzLt+Vaf6vd+bHe6dtLLF+Svdqu0W2sbj69epg6dsquOitWxJ7c76bt
toV4COOTyZur1OCXvW7eZzMU98/Ohf8Xm4e9yat3U2re35Qt2FfdxNmyQNzlXtq1zVjGNHYQjzOL
7eYPvTX4qr3+h/3jrGvX70F97jW/NI/cIa69G5QY81p1eAK3LC0PRwG1R/uTFz2KmyT9SXw/CfuX
l97iaWdRtZ8RxyC/6AalemBmxdXsMcplgXn66OePcqTdKInFBzq0whWucIUrXOEKV7jCFa5whStc
4QpXuMIVrnCFK1zhCle4whWucIUrXOEKV7jCFa5whStc4QpXuMIVrnCFK1zhCle4whWucIUrXOEK
V7jCFa5whStc4epEV4ABDGAAw5MLV7jCFa5whSt+OAGGhQhXLESAAQwLEa5YiADDQoQrXOEKV7jC
Fa5whStc4QpXuMIVrnCFK1zhCle4whWucIUrXOEKV7jCFa5whStc4QpXuMIVrnCFK1zhCle4whWu
cIUrXOEKV7j6+K78ZL0O816tU5/DKHLL75VQ6+wtK+xS7B9Xr2puXjQP+e4e2xU1Ciw6vIu3q01q
oe4bgtVITbv7g5P865tzSseoE6ERfxicsjJtLfLPGdvT0XhiO1PnYjga9jRNDeOn5JuY781cxYFS
TCnIeKeJIbGkZ8hdeXEQif3nqgmZbPj9SqTC8uSfvIXZaDibjG1rI+JAjohhWXB1Po+XB1czt7R9
eNYSM0+vFknaMQuX8ubnsUzYRCIXmnYoC0m9nixPNrWxsy8mzqQe40dJJo6CziezetDa+74QbhF5
u5vXxxlDu7UzG9DKgprr7a61Z8YLuhqknLhaWV0v9kUUbct/QfRfUEsDBBQAAgAIAOGNGEm2e7FG
yAkAAPYEAgAwABwAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2dldC1rZXlyYW5nZS1zdGRlcnIu
dHh0VVQJAAMFQL5XBUC+V3V4CwABBPUBAAAEFAAAAO3aT3OjRhrA4btO+gjcIlVlqvhnJOvmwZlZ
V22tZmMndwQtizUCLWB755LPvg2SEBLQSBNP4lR+B5VL0G938/bTjaB9d/vxXqQvIp3NAi/3Fl4m
3CSOhZ+HSexGSSYC7YNm2PrEsh3dmJjGlakPfonD/z6Lu9uPt42Y2cw/if+UJms3CkWcy5qGJ7XZ
E3MwWnthPNYalfZWNarVpE8NZzxoqSOMX5InMd+I1CsquomDh9SLM6+s9iFci3Q0Htwd0pBsRHz7
8Wch68ly14t9EUUiaKu5vWTRszevrztFieLCPoWpbKk7duXFQST236sUZbLJh5VIhebJj8zx1DKn
jq1rsn9BGD8WV/dJNpOkX6UaEYm8qmN/8QcPD0nlq7Wk4mxLjxuHRmNtpP9vslwur6ylMbECfaxM
1+6Sy8beJDOWZVpmlZnLqvqSbDZygL1Yq0bxRy1OXrVc1UZfr93nNJUzpGpJESCLLJN0vYvYZqWK
28ILFq2R2+H66PlPskv3koIY3P/7n2FelKofnc0eRT5Pf8pkYBRmq30Nd/EykQ3s1xzZUkd4syGt
PCS/acswEtoPwx802dkgzJ4UVxqEwW2zyzV/frHANALbBvS3PoSGUyLsmgb7nlRtyILz+tSfzdLd
GpCsN0XJoKVIEh/Xcv/s+yLLZFc+aP52PDXZXlYMZJjV11z92raLCquqZOo2Xu6vfnqpFtbD1TjW
Qh8fzfhimeq6uHIJq81hbTSUubGdK0e2qhcr9OnKqEh072QXZZ67VtLGremt5rs9/f7zvdbGd5vv
hajDbD/KrCXHvGvqF8k9mo8y0jAd4ehXExn2O5cB5RSenzT9NiNqGM6fmW1nYRTZ7qxG5izNf91O
ZVd24lHU7vM9P8VS4eWiK7bxc8yYXF+ZneO+EI9hXAu/i89Z/k+juu7s5/5M61hS5/W15LwF9dB2
7Yvsnlskrbi9HFRqr2G+qpbT+lrqTKfa4VeqdljpihFe6vq1N9WXwUS3/MAcD84f1+39o3ag7OVp
HttuC79sHlMvEP8SIhDBObeD6VSXq5B4bTn+/n53XnjTqj1KlFNhvviPHKntsvVB3py04biR50bJ
Ms2Hr3JiP8u17CYIGqE7Zl9q5wkkkEACCSSQQAIJJJBAAgkkkEACCSSQQAIJJJBAAt9J4NH5aq/n
sLtztNti+/oZ2yjzeLtf17WL17rv0n2ysa/Us4mj+C+zZtmOLdD9jm4joGPzs23TyQuKvSxtfr/f
Vry71exre3I1cXRdV+9/f+lq/8JkaCPfi6KF7OtYvYEs23TbhqVjF7a17FFX2grVYfx+d3vlfdzq
s6FxTJ3Pqphi778qoqZUzTnlvz/9XOwOSztp+Xf4o5aU2dOycjC3emxLt3tqEX6SFv9P+CS+dlRi
mU5nJRLuOTVcm+ch/nJZrutkuwF2LmG1c3UYtX3z3T9QXbDJbBst/DCLWcxiFrOYxSxmMYtZzGIW
s5jFLGYxi1nMYhazmMUsZjGLWcxiFrOYxSxmMYtZzGIWs5jFLGYxi1nMYhazmMUsZjGLWcxiFrOY
xSxmMYtZzGIWs5jFLGYxi1nMYhazmMUsZjGLWcxiFrOYxSxmMYtZzGIWs5jFLGYxi1nMYhazmMUs
ZjGLWcxiFrOYxSxmMYtZzGIWs5jFLGYxi1nMYhazmMUsZjGLWcxiFrOYxSxmMYtZzGIWs5jFLGYx
i1nMYhazmMUsZjGLWcxiFrOYxSxmMYtZzGIWs5jFLGYxi1nMYhazmMUsZjGLWcxiFrOYxSxmMYtZ
zGIWs5jFLGYxi1nMYhazmMUsZjGLWcxiFrOYxSxmMYtZzGIWs5jFLGYxi1nMYhazmMUsZjGLWcxi
FrOYxSxmMYtZzGIWs5jFLGYxi1nMYhazmMUsZjGLWcxiFrOYxSxmMYtZzGIWs5jFLGYxi1nMYhaz
mMUsZjGLWcxiFrOYxSxmMYtZzGIWs5jFLGYxi1nMYhazmMUsZjGLWcxiFrOYxSxmMfs3M+sn63WY
D44y9RpGkVserxXVhm/ZYN8U8U+br8+V5kn1QO6usZtGo8Ii4X3zx20N6hDsqwtf1t2D5PY+nJON
OupG+cOIlI21tiI/hq1PLNvRjYlxbVrmoKWrYfySPIn5HspNHNSqKdmMVJPKbWNwOrvcFsKtvR52
lJFzc5GkPdiXkvc8lgGbYkFTjE6iuNhyjihiV14cRGL/vUpbJpP9sBJypfPkR6Z9aplTx9a1jYgD
iawlK7XV4/iqc0Uyj7+Xlk6LyMXJW0RhtuqbwVXBk9Fr7YlsSi6Pcvkovr4ILVevO+XaX86s4tz8
8HU2exR5o3y6XVQ/i3x7FyGIIIIIIogggggiiCCCCPpuQfIxrfZqp3iS3L3yuVnmIv1VpJmMdVfF
K7btE+lovH/4Uj5OKR/c2yIaD+6mIZ8k2x7cRSyPPIveVwvnP+J/06ujM9+HWQtd9RrhUxjLPPyj
eLiWT8tH+a6n830903fXWD4ke3m973dx/X3TNw9Tzyuvm96Ga2LPzrvqvdlCPIZxL8KT91WKZlsm
gMy8+l2boro/dj78VXwe3k/efDep6necsgf7pptAOxaJ+9xL+141lmUabxFPI4t3x+/69eA3vbh/
3N/S+t78Pdbvfc2D6pE7lOtOQ62Mer063IU7lpeqpt3GkmqX68pyztte+nzppZ63wXT0k+IU5ue2
walunllxNnuOcllhnj77+bMccTdKYvGOdqLwhS984Qtf+MIXvvCFL3zhC1/4whe+8IUvfOELX/jC
F77whS984Qtf+MIXvvCFL3zhC1/4whe+8IUvfOELX/jCF77whS984Qtf+MIXvvCFL3zhC1/4+pv7
Ag5wgAMc7mj4whe+8IUvfPHDCjgsTPjCF3CAw8KELxYm4LAw4Qtf+MIXvvCFL3zhC1/4whe+8IUv
fOELX/jCF77whS984Qtf+MIXvvCFL3zhC1/4whe+8IUvfOELX/jCF77whS984Qtf+MIXvvD1V/Hl
J+t1mA+OkvoaRpFbHq8V1YZv2WCfZv+0+brq5kn1kO+usVtRo8Ii4X3M3dagDvK+uvBl3T2gb+/D
Odmo62+UP4xI2VhrK/Jj2PrEsh3dmBjXpmUOWroaxi/Jk5jvodzEQa2aks1orLjSRBFYelPErrw4
iMT+e9WFTHb8YSXkAuPJj7yEqWVOHVvXNiIO5IAp1gK3DeXpmuC2TKjWHA47yszTm0WS9ky9pbz4
eSwDNpHIRUs/aqtH1xXJ5MbViuN6sS+iSATHvZJL8eZopPVrx3COy/hRkomTQlfO9LjQ2vu6EG5R
8m439U8jTL0z9Q2WZUXB5Rd2lKTdtQ27T/wfUEsDBBQAAgAIAOGNGEk6kHObTgUAADQdAAA2ABwA
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2hhbmRsZS11c2VyLWRlbGV0ZS1zdGRlcnIudHh0VVQJ
AAMFQL5XBUC+V3V4CwABBPUBAAAEFAAAAO1ZS3PiOBC+c8pP0G2gKqmSH9jALYFkiqqpJZvHztnY
gnhjJFY2yeayv31bNrZlW7IhkJrLHKYylvul7q8/tcV8dvNI+BvhkwnbEjq7eSD/7EicTD3qkygi
Qe+ZhrAyn93MvMRbejHRSaIrdNGbl/aCvfyUUUr8JGR0GrE4lTNs7Fq2gw3XNIYmbvoodSYTv6Z/
x9lmGoWEJsJjzZrtmr3+xgvpACkC7zDVlyzhkeEMVJsP6Rt7JYst4Z4wdE2DJ+7R2EvNPoUbwvsD
OQ1nSat+S6wlkLuQgycpFl/sumFEFct/jbX+APXxv+5qtRpaK8MxHDzI6n0HHhn/gIKTiCQkl8/h
UJbyiRXQUEq2vFVE2BGgawVpgPrMvXg0iMgsddYttn8u6h5DXE8vhBPkwT8AzsiyLNMyERQxCOm6
d5ype7bdQq09ioqCXiLK3lHS5qMr6umOcwB34alFAURWjG/2GllWCr0Mg8FSqZmV68bzXyGkR4AC
6T3++SNMhJS8OpmsSbLgtzEoRmH8kluY0xUDBzldgCeNetMRSpfgCa3CiKBvF98QBBuE8WvLToMw
mDVD/pIuccsuUbZBHknhAwQXMgtMJnxPB2yzFZKBQoTRqpXHne+TOIZQrpCf1ROBv1gUMoxlusRj
2xYGC1OQuq2X+C+3bwUnSj1vLfGg0vGCsXSbS9lM6mHUv4Dc2M7QAa9YkGudJFsS3dnsJM2zjlQb
p8q5+t0efX2/Sz6+rN8Fospur2TWgprrWl8kt9KPoGmYDnHw0AW1E2mgtYUXNdfnqahhOL8y287S
ENnWmoGc8eSvrJWnEMSaSEd+xxTFiZcQnW5jkjLc8dD89Pijw8uSrEMqyc9pnYM1NLmQ+UEDq7rx
fKw4gFDLCKUH0J+KpInjpUQleg+Tl4JOZS51RiNUDpioZDpR4RXGY2+EV4GLLT8wB73D65rtQlpI
o+zeKKPP2zX3AvIHIQEJDjkORiMMLETeFesnjaDn6E1z5Ni46M3jDy3pKyBthcXyb6hURltXcDih
i0Ejzw3JNM3lIzT2DrjsOggaqnuY3UvvK4pAgjqd7yR5ID7jn1eqCBTlKQtSSZDt4wN2vqBZO+qa
VJkq/csGFDry3vJN15TVsE9Owg0FDaGocOIFAn5o8ZgzwXyG7LHtDl0HY9x+ZN3r/B+ZDNT3vSha
QqyDds4Hn1NVWTQkq5SthKISkoFxOu7yfuqCm9x3jbX2fBZiLcd1IdIOpaK7W79YHgShA3Z4+vfi
ErE0eyhOi5mhx7aw3WEl7W4w80o+NEYs09EaAeAeYmFsHgbi++NyLUNWD8B7HZlK72RgSEfd/pvn
iHPBNhTw+xRm1zn1doF2LXN0c7E9laWcvj6STDtwy9NCP6NX4NKG3aHlHAaa78du9TDY6I8++aUS
OLF4G++iBAwmfOcnO6j4NGKUnA1fv+gA/w1KByu/XzYbEoRwhKU3wHeMP8eEZ/cnYuDPbl3FEd9P
p05jNBybl0j+v+UY8I0LU/ElurLNMRz8tjNAOVDjjox5S8aTnzA5sF0y3eu0JC8Vr8/6n+iejtRf
H+RGfYGeYaZ+gY5hWtdfASi31X0F17GLZwrxBaEw6EWzg68lz3ev2OC5Q6SvNbk4P9sxess5420j
YNoURVF79ZBr72s/vhjOqKeBS+7lB4uTqpb4oaX5+dGKs5N2XlFchWKATSug/bBhFKQ2M2VyjjwL
ThlNKir1wsjWpCY0nLG4gK7YJieMPdp73ubvW3UXwM3bvHbyxUe6KtHG2FHAQa2ckkRNe1iH4Mb7
WGZcP6cK0IIGTLzHbe1/UEsDBBQAAgAIAOGNGElHpGwGGwYAAME0AABSABwAc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2lkYmRhdGFiYXNlLWRlbGV0ZW9iamVjdHN0b3JlLWZhaWx1cmVzLXByaXZh
dGUtc3RkZXJyLnR4dFVUCQADBUC+VwVAvld1eAsAAQT1AQAABBQAAADtW0tz4jgQvufET/ARqjZV
foAx3BKYzFJbO6Qmmb0LSxDvGJuVTTK57G/flo1t2ZZkm5AJU8shB6x+qdX9qVtSFvPbB0KfCZ1O
3TBYe3Q79/DMDyNyR8NtOnT1LfD+2ZPF/HaOYrRCEZmFQUDc2AsDBZt2rfXgzxjqY2to68bYNIZj
sy6sSUSfl2BNzMHVojA63JFgfvuVgMgonqHAJb5PcDuKO+TGIX2dTjHxSUwye5hSNlxM8jHMhIkp
FaOC2dY+9QdaX/8xXq/XI2ttjC2sD4Czv0VeMNAEAp5QgH0yT5Q1kx1+L3eEIjaZCOx6fCKUaAj+
wLeOZVmmZWrgJ+wFm6tuou7D3Y5gDQVamH3+TQvCFy1W6WiyeranlARxrknBACTrkG4PHKlXcr5k
Dfp4JeRMl+sWud/BpAcIBZU3sYfndXpu8V0WujVGkTf/bYoAw04iQBaDmSW5DiBc8lE+ndJDuIfb
HaPEApIwKEt52LsuiSIw5VpzU2dqoC9iXvQiPo31yXDIBOaisBftUOw+fXpmTEnOFrOxrZU+KKUb
y0jZ5JJs5RJI6/fAN0N7ZINW3bDrya9wdGOmkcTPAk5ecmHmqZJt6Lx/snE63i3ZWEQVqVbyrAVr
Lss75lw+ixinYSKMRqMxY1Pl4LLCe5olMQz7I91lrwzlvKMY0fivNBdnYMSGPFIURCgNSvXuTAmK
iYy3tkUb48nIlC7cimy8gGNflJdCwOEFz+H3wvc3AebYH70tof3B1Z9kC7gAfLy0ujaFg0KFgjuP
Av6dIkxMxx7qeZjI0XnJw1I7bC7M4X6ABTO2fKBNw9m3nvbixU85MvOwbDuO5uYmaQVoslhb6/oE
Ofoaj3XLxWkR1TLC0q2I+5BYWQkj4Q7zbbehCJMvhGCC2+wsjqMDoJEXwfcjdhyuwkzSYLn6G3yT
Ys417Cxab1CbWY0ymVjxE5J6Hy/pDcY11sPC3svG8ygt4rJk9tDVW9izDA5VuSQAhROQD9YyosEb
8kQS0EpwJIPFGoMECUSrhzDLQm35kGXEYq6NdOgPjAnsfQdJvJjSvID7C3nhJOYwpGL59MOLWDbW
TS4FyAv1Yp73gSWXEoMANO5lPum4QFrfRb6/glkM1DsD6JyJQkUCakLakikiIj5Y354LWeY1pQCf
obVvan/mZIpNPSdRh3eOA5KoTtuPrwxsRVHUbpi4IZVqgJAtEZQEFINt4vK+m/v4KJTHlBQpuTF+
rbmd5dCtdNgUhoYgoo6D5HC79eLyBvPi+f4s+a7eON+gsBH4q+pLwF8bbMCVdI4KtK9NVtVqZ4gv
ZJKhvoJYitIpU47mSly+8wIvemoLzEJr2jixEyKLtJQr9IlpmUeX2gp8F0VPDd8FkS+0uiehgZRe
hbQhR9Ye2ziy+vj8yv6KVzjQKc86VjhTXECXSADT0MqHCG1K/JywsnpCS0AVoCo7RICfz0SL1XB1
ojq40hmwFT4g+M06JrTUecwOKVw9XRVOU5lQIg7BqTSssCihSABf9qQx5dun3lE7QceeR5LeKdb9
zoIeolh6lnBeuSaXmAQvKqH5iQ4jGnawm0bFbU8z+HuDtuvTZgeU9ClNO4/CANFFju6crPNRaP65
yfarBH9RlNy8WxqoCxuwIFNd0SdHoCQWGuqLhKZWOlQ5lZdj51ATXJrbS3P7Mc1t9XJTdV5z6X0v
ve//qff9Va6PzrcT79D7Jq8hyos3tCy7TLRFryuSPPlZBPmDH57DdBypo2pBlAjC7/PSQKatUhaP
TL3xsVSJnz11mvleBun111IqEFKK6peuz9h03lBLt31wcXk2cYpnE2fwDsDUdevodwBtO+C3vRd4
x4u6y9X+T77aP7ut+eiHBi3KbsWR6obEstPUzyQ+dDQnKas3mbimynrD661/VBeBBZ18lTgadQFd
eEACMJsKQcm1z8jfk7uQ/kFem1asTUn8uasH2jWN8lXmB4VtY8RGo70fg8CY7t14D4EApUFALlen
l/bx0j5erk7P/ur0LbeE0hZP+K8ffHkU7kpRok9sw25qZvXJyHY6NbPAYeo1Fxy095QDH2hs1867
2ypIZ9xBzH9QSwMEFAACAAgA4Y0YSSve1S0hBgAAtTUAAEoAHABzdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vaWRiZGF0YWJhc2UtZGVsZXRlb2JqZWN0c3RvcmUtZmFpbHVyZXMtc3RkZXJyLnR4dFVU
CQADBkC+VwZAvld1eAsAAQT1AQAABBQAAADtW0tzozgQvueUn6Db2FWTKvEwxr4lzmTWVVvr7CTZ
OwbZYYOFF3Cyuexv3xYYECAJSJwZp8qHqSmLfqkfn7oRmV9f3ZHomUTTabgl9PrqB/lnR+Jk5lCX
BAHxzh6oDyvz66trJ3GWTkxklOgCnZ/NS3nenn4WUkrcxA/pLAjjlE4z8dgwLayNdW2k46aOkmc6
dWv8N1G4mQU+oQnTWJNmjvWzwcbx6RAJDG8RNeAkYVuzhqLN+/Q5fCKLLYkcJuiSeveRQ2MnFXvv
b0g0GPJuOLRbDyJP7qJQsbEbPwJNct5Hh3oByX8XLopB5f0jiQhy4B/42DZ02zIxAvs8n67Z7m5A
TRi9QtaQgCSFjHzzZT7ch0V+CSkVTwUWN5YGQzTA/45Xq9XIWGljw8NDpbv2W06VHcQzhqEbeuGZ
fqJuw+0WAuxQVETxK6LhC0pUOtqsnu2iCCqk0KRgAJJVGG32HJlXCr4s8bylkDML15XjPoFJd5AK
5Ozuz9/9hFHxq9PpmiSL6FsMjIEfP+YS5nQVgoIcc0CThL2pCKVL8Aut/ICgL+dfEBjr+fGTYqee
7103Tebyz2UA02AUBfS/tiTUrDQJZWWQW1LoAMIFX/rTabTHgHCzZZSegCSkVSl3O9clcQymXCA3
iycCfTELpB/zmIsnpskEFqLAdVsncR+/PRfAWu7GMpZ4WKl4BlOyzaUQxtUwGpyDb0xrZIFWzBC6
jowKR7cWO0n9LEPSxtF0qHo37Y+vd07Hh9U7y6iy2iueNSDmstJnzq3UI3BqukUsPBoD2zthQFnC
i5rqw0RU06xf6W1rqTFvS8WAz6Lkr6yUZ2DEmnDnfEsrFhEnITLeRjumjScj/c09lCxflmTtU45+
TusYLIHJBY8PkrSqC8/big6AWlrI/QD+GXMaO17KrEQvfvJYwCmPpZZto7JLRSXSsQivMJ44Nl55
Y2y4nj486x7XbBfcQmpl+0ZD+rBdR45H/iDEI16X48C2MaAQeRGsH1/f2fPQ4kaJtBQWy78hUhls
XcDhhM6HDT83KFM3lz+hsHeAZZee12Ddp9mt7HnhtNJNFbNNF3ewZ0GzIpGVjnAD8oeNALV4QzGu
NWklmJBDY4NBUuai6DkeSwq0uMvrc36NzIk5Ho0tjLH6ILmV6e/pDDRwnSBYgq1DNRKDzpkoLBLo
E9JWTBER8Ynx/rzLs7wt3fhqaKyp/VmQKQ7RgkSdSkXNKeeIHwxmIXei9P/zryhMvYfiNJhZ9pgG
NlukEDeM2GD+RF4lQgzdkgqBxO0iYaJ3S+Lbfr7mU1aegFII457xicEdQPtJpAdam5og/d6GleFm
4ydV5H/xg2CWrqvP13cobEXkuvoKIjcetoBQtkfVW7P6ZlWTfA7FQiYZHKuJ+5nLwbFQbBdv9MJh
kZZqHzzRDf097xJlqC5KgwaqC1JYaPW5hAZqcxlGLcm+8tlxkffDx9fn1bzCoUd114nCmeKGuUJC
8oG0rYILwlr0hJaAKoBHNunDz2eCEjXuHKjTrE0CLMJ7KL5cJSSqTBpZpqTTQeUtrHCbyoIScQje
80OERQVFKKzsSGvJdy+9N0F6z6lCUt43PgU//MaSHrJYOrEfV63JJabJCw2mfHQ/9JuC/VF02aq4
58uA3jESJ2HtHFGIEl10YVt9BirE/dx6+Cz5WfYNlx+WqereAyzIVXd+qXXH3vq0tAApTeN0r3Me
47Xgaeo82qkzE/JAdzHxroJweeMHe5HxaVDtOajW70FVL2pOc+xpjv2Uc+zRHS6fbqruMcemnx9U
g2cahlUl2jivS5J+CTXfF2qNQ7dtqaMkX3d9zNX+6VuyTl84nL5TOMR3Ckdwc65jDEj7xhvwtyZa
zym4yy376eb8dHP+hhZX8QZzTRLZy8vvJMnGi8O0sOtcXFsXu+b1NhfVfVpJJ48SR6NuVksPyL+a
qkxgqglyZFi4LXJdutfvfT3RbVCTR5t/KBzVYvY03gUJCEyinZvsICHgFKfkdPV4GtlOI9vp6vHn
XT2+55ZNOlY1/zykbgcA/TYXwzdC6WqZPnhiaVbbZIknI8vuNVkCh46VNvXb2i/cQd/Z+BAx+x9Q
SwMEFAACAAgA4Y0YSfDdB4+WBAAAMRkAAEwAHABzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRi
ZGF0YWJhc2UtdHJhbnNhY3Rpb24tZmFpbHVyZXMtcHJpdmF0ZS1zdGRlcnIudHh0VVQJAAMGQL5X
BkC+V3V4CwABBPUBAAAEFAAAAM1YS3PiOBC+c+In6AhVmyr5gW24JZBUcdiBGjJzF5YImjE2Izth
5rK/fSUb27ItyZCE2j1wwOqXur/+WtJy8bAh7I2w2Sw5knjx8JX8eiVpNkdxSKKI4MG3mPIvy8XD
AmVoi1KikwR3YDhY3s4ePsvPkzgmYUaTeB4laS5nudB3XA9avm1NbNj1UevMZmFL/4klh3lESZwJ
jy1rrm8PRgdE4zFQBN5jaiRZgoHljVWbp/Fb8pOsjoQhYeg+xs8MxSnKzT7TA2Gj8aenVb+lxBDI
E2XckxRLKHbdMaKK5Z/Ot9EYjOBvf7fbTZyd5VkeHBf1fuIeE/aHF5xEJCOlfAmHupTPSQUNpaRh
VRFhT4C+g/MA9ZnboxhHZJE76xc7/6/qnvK4nveEEYD4jwMncBzHdmzAi4hp/DK4ztQ6OR55rVEM
qoL+BeLkBDKTj76o56+McXBXngwKXGSXsMNZo8hKpVdgEG+VmkW5HlD4k4e04VAwZRNTvOjK3wSi
fg1RJQbLSCofXHAlt+Bsxs69mByOQhIrRJK4aWXzGoYkTXkodyAskgm4v1RkkaYyV8Gp6wqDlSlM
0yPKwv3jW0VIUsM5WzhutJugC93mciqRGgiMhjw3rjfxuFcomK3NUIZE93YayfOsY7QOpX9Ws7nB
7ZtN8nGzZhOIqlutkVmH11zXdyK5chcJTctGGE0mvlAz9eCqpfs5JbEs779Ml7e1jPtOM8Sy70Uv
znkQL0QamD1nEEZQRnS6nXOI5U8ntrZwW/JCY0l92SzFe88cf5MD5wWuJ1vrevvQWeIzYGIHngsr
mOjZeSXT0mXcXIcj/eERzEX5uDdQnkl5vU4021fMLNOyFwSgPiiCmjQF1nYQTlEAd9iHTojt8eBy
hBWjSPqQR9mCkXLCfDu+MITJF0IwwZdMliCAnNDISfH9HRNHOj/nbbDa/uC5KTjnjk8WMBx3dtaR
zDdW/+VN/Zqt2D3GHdVzYdfSeh1BJgG5rVjBtwZsYz9uCC8IdBUXGNQhU7kz/WKnVXrSZLi8dGU1
BFPyZUdBQxGqsiIs2hOsNmWrLBdgAi1nak35UDxbks009sW1v5CTZLHiJ5PK42+aijbthtxAzonR
TNbdiK4zkhNnk7UuJ1cWCIxCFEVbvouxeWRwn3MVVDRsp5RthKISksH68V4oW7KvBeTW7Xwz57MS
M0z7SsQM74ogNKgu7iVfBQurUHTZMgkTpvXAIdsQaBioFy/B5fq69Mko1GNqraNYaU2utTRyzteY
K6aFaykQ9T5KTg4HmjV5/0SjaJ5/N0/UDzjsJf62+wbxdxZ7eKXYo+mpqr1Z0x28ZHylko71DcJa
li6UKjY38vITjWm6v5SYldFcksSrGFnlpXl0n9qO/ZF3Px2/q9DT4XcF8pVRDzUyvKW3CevpkR0V
g6M8OP//7gOtrEikYzwL3mQhf45qAsS1bbcpdEB/tiR/UV6eOaSlYfmeFhqaV3JjfK0bgijoI2MJ
u99lhDXuH+cq8//5vWFofDDqvlK3q5FmyfF9ZuRLUm6jzg+cepbXl3Y4nXjBVWnnGjYc/AtQSwME
FAACAAgA4Y0YSRHN2EunBAAA/hgAAEQAHABzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRiZGF0
YWJhc2UtdHJhbnNhY3Rpb24tZmFpbHVyZXMtc3RkZXJyLnR4dFVUCQADBkC+VwZAvld1eAsAAQT1
AQAABBQAAADNWF1vozgUfc9TfoLfJpGmkvkIJHlrk1aKtNpkJ519J2ASpgRnDG23L/vb9xoCGLBN
Mm2181BVgfvlc889tlkt77aEvRA2nwde5u28lCxokhA/i2iyiGlKAnSDDBu7lu1gwzWNiYkH35Po
5zNZLe+WHZ/53G/5PzB6XMQRSTKINGxFs11zMDp6UTJGnaC9oUZCJDw1nPFAEiNKXugTWZ8I83ig
2yR4ZF6SennYx+hI2Gg8WNUw0BNJlnffCMRJs4WX+CSOSSCLLLfklX14PDVEVLOwh4hBJrXvwUuC
mJS/K4hSSPl4IIwgD/4A46llTh0bI6gviJI9X90DpKHsDVhDYpJVMcrF13x4pBW/pJaat5KKO49G
YzTC/7hhGE6s0HCtAI+1cJ2XnCf7EGQsy7TMCpnrQm3o6QQN9hJUdfErSugrynQ5+qpePDMGE1Jl
0jiASUjZ8exRoFL5FcQLdlLPol13nv8EJW2BCmSw/euPKONW4tP5fE+yNbtPwTGO0kMZYZWEFBKU
mgOZFO7dRCh/BL9QGMUEfRl+QVBsEKVPmpUGUbDslizwz+cC03GUNfTfPhIaTk5C1RiUlVQ5wHAt
jv58zs4aQI8nbhlITGjSjLJ99n2SplDKDfKLfiLIl/JGRqmouXhm2zxgFQqgO3mZf7h/qYS1Xo1j
7fC4MfFcplSLyyVMmGE0GgI2tjNxICvmCt1WRg3QvcNOcpxVStrZmj5q3u3p58+7kOPT5p0zqp72
BrIW9Fw1+hzcxjyCp2E6xMETF9zeKQPaEV63Un9MRw3D+T/RdnYGR1sZBjBj2d/FKC+giD0R9vme
oxgjXkZUvp3jmOHOJqay7zuyjxLBfdVsxa8evRR8aWfTniwKZlwpqHWdwg9Is+Cg8e2lZiV6jbJD
JaeiljrTKapPqahWOt7hEOOZN8Vh4GLLD8zx4PK+FosVHuRVSvDobAvfT3vmBeRPQgISXLIdTKcY
VIi8Sp7/fufOKzct4SqRj8J69wM6VcjWDWxOaDju4NyxzGGuf8JgP4OW3QZBx/VMs43wvq4gE6a2
7VihWePXWI/t4wsKXSfFRKjmRLoy9ctO53pg0tzjurYKkSk1s+OgkAlZW72AswWtt+XgrpbIntnu
xHUwxvodZqPKfyUYaOR7cbyDWsd6iYacC1lbFDontW2UIjMSifF+3pX076ObOCadZ3o8KzPN7lqZ
6KlUDaP2gvGN6y9wh+X/h18RzdFDad7Mgj22he2eKMSnjN/Yn8ibIohlOsogQNxLIszMy0i8uQ5r
kbJqAm5U2ie8E4kh7EznK8oVMm4bEvr9mlbS4zHKmoL8GsXxIn+u33jfkbBXkdvpG4rcedkjQsUa
dZ/T2ovVXfFLKZY6qeRYb3xduYIcS8NegsZVOizL0jwgz0zLfM9HRpWqy2jQUXUJhaVVDxU2MJs7
ynrIHkZ8uygPyr/fAbCFiqAe2tPWp7zIvxk1CWKbpt00OnpvO5J/vl6dxaDlYbiOkhqKT/La+lo3
At7Qe8Youw0zwhr3jXOX4Xd+Txhqv+p0P2FfbS3efeipAQOeOYbThy6eTZzpVeiCB2yWbdqcsw8H
/wFQSwMEFAACAAgA4Y0YSYf+xfFVBQAAnDQAAEUAHABzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
aWRiaW5kZXgtcHJvcGVydGllcy1iYXNpYy1wcml2YXRlLXN0ZGVyci50eHRVVAkAAwZAvlcGQL5X
dXgLAAEE9QEAAAQUAAAA7VtNc+I4EL1zyk/wEao2Vf4AY7gRmNRy2GFqyexdWCLRjpFZ2wmZy/72
bdlgy7YkmwQ2M1M+cMDubrVa7z3Jlrxc3K1J9EKi6RSjBG1QTOYhY8RPaMjmQRgTbNwa1tAcO0PX
tMa2NbLN3ldG/3kmy8XdouYznfoV//so3M0DSlgCkW4q0YZju9ffIcoGRi1oY6i+EMn0LHfQk8Sg
7CX8RlZ7EiEeaMbwQ4RYjNKwD3RHov6gtyzKEO4JW9z9SSBOnMwR80kQECyLLLfkmV08nrpEoaZj
9zSCloRcfF7FWhBZLv/WrvUHRt98HW+325GztVzLNQdZR++hxTD6DgAiAUnIyf5UhwIaD2EONaml
5q4kw4YExw5OE1RX7gkxHJBF2liz2fF/jqMY8np4IhExEPwAiJ7jOLZjGzCImLLH3nmhvoT7PYw1
YkY+oL8ZLDwYia6Npqznz1EEZMlb0jiAyTaMdkePrCq5X4ZBvJF6ZsN1h/xvkNIaoKCrJqZ4Ube/
CkTHBUSlGDxlkrcBhiuRgtNpdORiuNtzSywxCVk5yvrZ90kcQyq3hp8V04D2Yl5FGovaZ06GQx4w
D4VpvEeJ//TpJRc4gXDOxhyU6MblQtW5VEoEAhn9G6jN0B250KrJlbKqUJpCNzKNpHVWKVptirgU
2Ybe9ckmtHE1snFEFVQrVdaBMVfxjhdXZBH3tGyE0Wg05m46Dq4qvpcZEstyP7Jc7sbS9jtOUJT8
lXFxDkk8EmHCbFjTRAQlROVbW9dY48nIVg7chjxSJrgvy0Px1jXMH2QHugB+YrR6a+9aS1wCJrbn
Ds0cJmp1Xomy1E6bi3SEP5DBnA8ftGac1rgwXgeaPOXKLMqy63lGsfA0CtHkWNua5gR55haPTcfH
9qDXHmHZVCRcSLOswEg6w3zdP0YIk8+EYILbzCyeZ4KgkYPk+htmHGE9ntJgtfkbapNpzi3MLMbN
oNazmmXaseLvyWLJMHmVVEa423le17N0L5eAgvQlTAx9s8Vgr1jGYxW7pehQ36zJTQPUNA+UdVuF
SJ/mnJqDQmZl1ECYS5yxWp/kZrkwRqblTKwJLCyOkcQwpX6B92dyECLmGq9z+fRKYy519ZRLCDlE
NBF911y5tAIPivxFVZMzB8jo+ygINtCLgX7ahTbnMqgoZgypbSkVmZEI1ktxISVXOxbkPJRdblPY
zLIJ80erNmjPTLU4F01UytMO36npWchu6m8VqGdW8nxw5iOohaVcb8u3Oyh2UOyg2EGxg2IHxQ6K
HRQ7KHZQ7KDYQbGDYgfFDoofAMVwt6NJ+R34gQbBPL2uf7f/jgYbYV9tvgT+2s2Ggcv6qDuEU+2s
7jTAiQdSJxUjNMZKPGdOOe61bzfvKaPxU9vXm9Js2hTxLODLWilvIk5sx37PiSYVmWToqVFKgnxp
1jcKm1U024RRA0e2lL9+PW3h/Xg7k5WqCJtl5V4nmmLK9/hKJiSGQAEgtIn4uWFl9KSZQFMzjPk5
B/j7QoxEL1earToq3WT6qKvl3VEOoeOZm9k2IVFp93V+1IjqCTNpHbWMlXlIjjMChGSMJQyuPJNG
TWnP7TdNNWfu+yr0IxPT3zmrgCbK8xQ/FpnVEVN2oNJ0caEDGQ1T5KyxYfFMZNu66+bZ2lGQpklK
06TsLK/p6SdYTbj/lws/CzaLRcnsaijVL2wgg1PTdXAqBCLdS25YX6Q2taVD1fOdJ5+vvybonip+
1aeK7kmhe1K42JNC6W6chHvdxxGKD0YqBw3TGAUEzIlruZXDevwkfcVo5Hplox36viHpxzXLozxU
PWxTiRDFB0OX6vF/UEsDBBQAAgAIAOKNGElsSDb6ggUAAKg0AAA9ABwAc3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL2lkYmluZGV4LXByb3BlcnRpZXMtYmFzaWMtc3RkZXJyLnR4dFVUCQADB0C+VwdA
vld1eAsAAQT1AQAABBQAAADtW0tv2zgQvvvkn0D0UhtoAOphWfbNsRusgcW6u073LktUwkamvJKS
NJf97TuUrDdJ2Y2zTQEdchA1L858M0OZk/XqekuiJxLN5+GBsNX1X+SfRxInS4e5JAiIN/jKKKys
V9crJ3F2TkxklOgKDQfrUp53pF+GjBE3oSFbBmGc0mkmnhqmhbWprk103NZR8sznboP/Jgr3y4AS
lnCNDWnmVB+M9g5lYyQwvEPUqCIJ25o1Fm2esqfwgWwOJHK4oAXzbiOHxU4q9pbuSTQaV91wEbfK
txQqDLmhEWiS8947zAtI/lxsKQaVt/ckIsiBP/CJbei2ZWIE9nmU3fHd3YCaMHqBKJOAJIWMHANl
/G7DAg9CSsVbgcWtpdEYjfD3qe/7E8PXpoaHx0p3HbecKruIZwxDN/TCM+eJ+hIeDhBgh6Eiip8Q
C59RotLRZfXyMYoA0YUmBQOQ+GG0P3JkXin4MuB5OyFnFq5rx30Ak7YABTLY/vk7TThVdXU+vyPJ
JvocA2NA4/tcwpr5ISjIawRokrC3FaF0CZ6QTwOCPg4/IjDWo/GDYqce9VZtkyv4c3lBaDGKAvpv
Fwg1KwWhLA1ySwodQLippv58Hh1rQLg/cEpPQBKyupTto+uSOAZTrpCbxROBvpgHksbVGolnpskF
FqLAdQcnce8/PxWFsNyNZezwuJbxvEzJNpeWsEoOo9EQfGNaEwu0Yl5Rm5VR4ejOZCepn2WVtNVK
LpXvpv32+V7R8Wb5zhFVZnvNswbEXJb63Lm1fAROTbeIhSdTYHtlGVCm8Kah+jIR1TTrZ3rb2mnc
21Ix4LMo+TtL5SUYcUcqfb7j6BQRJyEy3tbxSZvOJro07jtyR1mFfV0PxY8elSR4aWpTniwyZJxZ
UEs7Kw+gZsmdxttLiUr0TJP7opxWa6ll26g8VaKy0vEI+xjPHBv73hQbrqePB6fHNdtsZSG1UuCP
Vlv4eriLHI/8QYhHvFPagW1jqELkWbD+/s6dZzatytE/TYXN7htEKitbV9Cc0HDc8nOLMnVz+ZhT
rJlHvgviVHnbc74tZ+1dgcgSgzVMmC4+IdgbllUVWa0RokP+soX+Dqgpvl3btJJCnfedFoOk1IpS
w/F4xqHNNi9+6xUyZ+Z0MrUwxuou/UWm/0xnoJHrBMEObB2r2xzoXIrCIukVQtqaKSKiKjAuhbsU
yKchrsC8aPkUx2aUXfg6Up2CrIxUiaksja9QNagZiiaWoX9C2ftyZVD0XuhZcRhl0AMVCCyBbw/0
YfhhsMxeQbfa0bQvoCB8JhF6IC/pxyA0F/QIB+1i5Qy0nunO8xFahFGJTXGBq7/u8djjscdjj8ce
jz0eezz2eOzx2OOxx2OPxx6PPR57PL47PIb7PU3qP0k/0yBYpuvqH/5fobAT+031tQxovewIXLZH
1fhNc7OqEYM8GYRMsrRQE59nbgW8QrGneOMsBIu01C/oZjok8SuGkmRZIYJBKzcEEBZaPZTQbKLF
Low6wO5T/lNrflH3/i6gGl6pXELVd50onCm+yauRkPymvCuDC8JG9ISWgKqF5/ERBHh8IihR1x3F
FRgVXt78rNX6HSiH0HEcZuEnJKrdsWZQTO9Fa/NnQj8qM1bEIZhIBAiJMpYwWHkknTXl9Nz+oZ5x
5n2qpH7cUAZ++I1nFaSJdFbhfSWzXGKaHXAOuPywQ0evW3Qqrk5Mnup3VcMUjll0NSqFWtFILrbV
TVYh7v/Nh18Fn+XBZPFmSFUfbsCCXHUboJIiseXzLh1njJSmdXxocr7Hgej+E6H/ROg/EfpPhM5P
hNrbOAkPqslGyT+PXE5MdRwxlVEiCc8szWoM0fEh+QbRxLLrRHvnZUfS/69ZH0tLk0PHUqBJ/mdo
8B9QSwMEFAACAAgA440YSddW1w6kCwAA38kFAEEAHABzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
aWRia2V5LWFycmF5LWVxdWFsaXR5LXByaXZhdGUtc3RkZXJyLnR4dFVUCQADCUC+VwlAvld1eAsA
AQT1AQAABBQAAADt3U1z2kgeB+C7T/4IOpqqTZV4MWDfJnhS5cOOU+PM3GXUTjTBwiNIPLnsZ18J
MAiDsPNWu4fn4INR/1qt7qdbuv0vL15fh+JzKM7Pp/chv3j9e/j7U5jNR0k+DpNJSI/+yLPyl8uL
1xfJPLlJZqGpZfQqOj66/Hn9pav2o2meh/E8m+ajyXS2aNfuxYNurx+3B532aSfevccmc34+fpJ/
U0zvRpMs5PPqjk966w06Ryd3SZa3oj0Df6ark1pP8bDdb+17+Cz/PP0Yru5DkVQd/ZKn74oknyWL
bt9ld6E4aR0YwvRA8E1WlBNem8JxNcqdTvaN6j87v520opP4n8Ht7e1p97bdb/fj1nJ93pR3nBZf
ygUKkzAPj+0fl28z9e+m66Xc2/LA1T0jfGaAg266GGDzzH1I8nQSLhY3e77Z6v/1Os3Kcb37EIoQ
JeVfudDDbrfb6Xai0nKa5e+Pvq6rt9P7+5JykkfrBf1XlE8fovmhezw36tGnoigxru90IFA2uZ0W
d6vEclbWucUanKQ3e5PL5XqdjD+WQ7ouKRyazTRLL3bb/xSigw3RvQYfR7K+R9nwqn4SnZ8XqyNp
endftUz3NJnm271cfxqPw2xWDuVVNF5OZlTeb1bNYjarny3xWa9XdbjuKs1m98l8/OHXz+sDpLbh
ujdxa2u7Vadm08MtTtTaBopOjsu56fVP++Vd4+okenpQH5joZ3daWMxz08G+cwT/qM3WG/78zVa7
x0/bbJWozVbbmtluueZN+66a3PouqpLtTpImp6eDuHV4D149yf6YJWm3+//L6erftA8+92yeFPM/
l3txVA7ifai9MJ/5ZihCMg9N2Z3vhvbg7LTTuHA34X2W1+KX20vxrd8I/w535blQ5uq97d7tu74l
fgSTzrDfi9dMmk/nq/qx9LKzeTOc2j/lCEbV8pV3ix6/Icv1esjmH9Ync/1Y7g+H0ebDLtocmpW1
2zg+S4bxbTqIu+O00zp6ubDlq6j2w2KUTxjtfcP8cf++SNLwWwhpSF/yZhkO4/JACw97fv+GN07t
e3exDa5u/irnZnnmvCrfLNFxa+fJdlouHmzzb7mpP82vil/SdCe6Wti3teuCgoKCgoKCgoKCgoKC
goKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKC
goKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgt8Z3Lq+LuC4Kdm4VdGvN45f
UKrvKl9WYWyqzbi3tl/zxZ1ikc8UCjxQbnu3bUOJzceKoTuBhiKZ+wobJmlVoDK6un4sFnl5EZ3G
7e5Z+6zTG656qnez9Vxl+rfwUOtxXaHzUOTXf7JZVahyd8hbQB6KbF7PXld1Jw+W50yz9G3TnHzl
AkUn42QyuSmfonW4aGp5z9E+Kg31Pve23RrKvkZ1rN+/Fx533nNboL5Dd347PJ/rZgfq3a6bHOa9
PgcaVH8MXxagZpf5C/bAso7371XV0n3mXnY5jKdF43hK4FsNtjrYXHyJ4rdfN9l1s80CG8/V2rW6
jFqJ1lXZ76+ortpr7/EHLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy20
0EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBC
Cy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgst
tNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQ
QgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EIL
LbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy20
0EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBC
Cy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgst
tNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQ
QgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EIL
LbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy20
0EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBC
Cy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgst
tNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQ
QgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EIL
LbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy20
0EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBC
Cy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgst
tNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQ
QgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EIL
LbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy20
0EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBC
Cy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgst
tNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQ
QgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EIL
LbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy20
0EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBC
Cy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgst
tNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQ
QgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBC+/+Edjy9u8vmR1sz9ZBNJqPF77Wm
0fF2o9l8el+Oq92LB91eP24P4rN+u7/dZjyZzsKTRqf94Xaju+TLTRhVLS9X0/M00Ykb533Vy+ba
oqO0qX05Rfl6kkdJPg6Tybe03prC1UwcH/0XUEsDBBQAAgAIAOWNGElj5/MdpA0AAJzbBgA5ABwA
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
EEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBA
AAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAAB
BBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQ
QAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAA
AQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEE
EEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBA
AAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAAB
BBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQ
QAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAA
AQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEE
EEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBA
AAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAAB
BBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQ
QAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAA
AQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEE
EEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBA
AAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAAB
BBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQ
QAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAA
AQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEE
EEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBA
AAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAAB
BBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQ
QAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAA
AQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEE
EEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBA
AAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAAB
BBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQ
QAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIH/FoFB
Ph4Pp0cbO/V1OBr1569XDo2ONw8qd/6+vK5GO+622p240Y3PO43O5jGDUT4Jjw466/Q2Dxon365D
f3bk5cP2PC7K21q37w+rrN+bL5TWHV9uUbba5H6SDcJoFLZv2cNnOz76E1BLAwQUAAIACADljRhJ
yZbaAPoGAADHcQAAQgAcAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1j
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
9ogV8tSm9KQoRbizthBl4QKCpcFYOsCwZkV34sORLWm8Nmk/D5x6wOOXmAQMKyb8zQyH3juxm7sn
jYa77KJoc8U6ebOmiq96oQaZ6VnbrT7vNCtyli23dFtHw6VwIlO7yq1qHupWziqLcU3T6KoYDOsH
xT23l+N7uyAjBn4flvnbyUq3GkX3PQea0e6G49euTW13y7E0x1RR+MrqnHzBFdGz0daLocA43Nrx
FnocLu58ckT3JpEv5Av5Qr6QL+QL+UK+kC/kC/lCvpAv5Av5Qr6QL+TrI/NlVx7nNCbNCR7/1M41
JIlVxQXJITXRhry5qjwvZa4iB45mMGjIZstXebzOAZ3y5Rj9wEtwY4jW8tsEGByEVHxO+4GVMAxh
GDqNMIQLsl94QYbgIDgIDoKD4CA4CA6Cg+AgOAgOgoPgIDgIDoKD4Pxi4Fh0S379vRQtduq/CLnE
XNaiie+kn0nbNSDi+cqq1KaIYe2cuIvS9gr2CFUb3uIVFROWDu8dK8zy2+zoYSm2aGuXW9ksG+X3
CJhDzXj5LqkT2QI0YeBW2+VUHzcsBx7gXRi5pZ/16omje2vDR/5K1+Ff5vIR9t3jFnrcQo9K76CE
29hxG/u7b2M/LnfjpnrcVI/3PjCpGPlCvpAv5Av5Qr6QL+QL+UK+kC/kC/lCvpAv5Av5Qr6QL/zg
DX7w5lg+eHMqT0eO9/M7jVlH3CSjLOKkCX5emmeyrxWE4k2pp+WRoRhNH76RRwPD7PThG9BQ5Zd8
+KbU7F1te91bzC3mhFxxMn3Mdvb/UEsDBBQAAgAIAOaNGEmOADynUQYAAImrAABCABwAc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNvdW50LTEtcHJpdmF0ZS1zdGRlcnIu
dHh0VVQJAAMPQL5XD0C+V3V4CwABBPUBAAAEFAAAAO2ZTXOjOBCG7z7lJ3C0qzZVfBnj3BI8SaW2
dpyaZOaOkRyzwcILJJ5c9revhG0QRgJnJqmZ2noPORi6pVb30y26czu7uqfZC80uLtINZbOrL/Sf
Z5oXQcgimiSUDL6ymD+5nV3NwiJchDnVSRrnxtngtl6P7OWDlDEaFXHKgiTNSznLNSeO65nWxLbG
ttneo9a5uIiO9K+zdB0kMWWF2PFoNXdiD4brMGYjQ2F4z1JDaSXTt7yR6vAxe0mf6HxDs1AsdMnI
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
1Bjo70R2v7jSyfv27FUYBWGGnppCqEjCl4n47ui7jpndciMxc9OeMuEFzzIUj/IlbSS3fEeslsvi
ygG0HpjOwwnNt7GVzdyqnsoKNvAIj/AIj/AIj/D4LfC46erdBWO5+7dyrT1vuVnL6ZjcpB3AvMe4
9YDgTXJ+QtEXpn8evRNBiqGIShwOB9pwhxdpB2Fy4jahqd7JQDcanahffPbxcKZrTR5Wvv0g7Ufp
qFWnO69+SU4OKmQj9bP0ZOE78a+9x+fxqFFHzPrZZ91Hfq4Pq6Gy8DSLyXVTq37pXrngSyeG1kdH
DzheM+xrPbQILUIV0CK0CC1Ci5gVLUKL0CJUAS1Ci9AitIhZ0SK0CC1CFdAitAgtQouYFS1Ci9Ai
VAEtQovQIrSIWdEitAgt+vZUgar+K1V9L+MsgbvKOjcs13VxsT2VhV3z/pRs2kv7UpY3vuVbErbw
+IJt8peH5mk/5i7Le7IN3WXdzuZ8RcndaOXFymEcrux4pXAxvcCXwAmcXxhOqIM6qIM6qIM6qOP1
DziRRKiDOqiDOqiDOqjj9Q84kUSogzqogzqogzqogzqogzqogzqogzqogzqogzqogzqogzqogzqo
gzqogzqogzqoozUFOIHz65LE9OtX94DO3HyHa+XazlRmZq3ErU12ApfZNaOWfZnscd1xd6Ovjz8T
eh9ubqY3E3Eex3KxjEUcCMt5snxbCkvYwWKZHOl31lN2Tj4F3moho5NkfScffr09+VXOfnDjk9tg
Fdoy+WSqqE9+CpyVp8zcpHqk48xOojTzJ/nqs0D/bS+XXX087omJmAWBJ9YOJpPSZm2NSf6LgDTA
7sr1Y2P437i3b/0csud7V49Z+wXBpXu8TqDYKDbUQR3UQR2/OgEncEId1EEd1EEd1EEdr3/AiSRC
HdRBHdRBHdRBHa9/wIkkQh3UQR3UQR3UQR3UQR3UQR3UQR3UQR3UQR3UQR3UQR3UQR3UQR3UQR3U
QR0H2DnAzgF2DrCj2Cg21EEd1EEd1EEd1EEd1EEd1EEd1EEd1EEd1EEd1EEd1EEd1EEd1EEd1EEd
1PHfawAnkgh1UIckAieSCHVQhyQCJ5IIdVAHdVAHdVAHdVAHdVAHdVAHdVDHAXYOsHOAnQPsKDaK
zV+JAyevE1AHdVAHdVAHdbz+8foHnEgi1EEd1EEd1EEdr3/ACZxIItRBHdRBHdRBHdRBHdRBHdRB
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
ZmOzlm359dLqNZmVNdXmVFYHzkXxULMsGpvDwQeRfX54p5M/5Gs/hlEQZqmnphBqJeH3S/Hu7F1n
ln3kRmLlpg+gCi94lqF4kN/TX51YviMed7vDOydk64nbeXqG5seozc28VX1WVtLm5/OxUl7bsrK2
Hjd/qN/SanvNkVXb6rN1Xumg/U1TuQ4G6SsRFVN3NBjph/jqP0bSufaC1Y3ryS/SDkInelUWzn92
407JyHndEWp/G9VSM+e6JMJqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZq
rMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZq
rMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZq
rMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZq
rMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZq
rMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZq
rMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZq
rMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZq
rMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZq
rMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZqrMZq
rMZqrMbqN6mZwXbrxp3S1j27njdL3y80FWdvOWFrfT6evlSlKx+2FJcsRk2ZrgR7rsJtK9i1nZpK
t77xacstFNjaYV+zGydV2bpZ1F9/ZEyGI9PoT/oXAwVNzVJd/yl4kMt9olz5TmGYNG26PV3lrkuD
Sv2uSeHaVZ81tFmGV6sgbEn2tZtcPdVhl9xHzekEmmDTO6Lpu1HOenL/Ot+2SG323UaqSmSpP7Xt
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
UhmDK0/hnrkp6A8GNZSjqrXRZHgG0UPRglIpaXiriFh6NLHEYjleZltMczDl2tl1KhNGjttW5jJT
X4rDgXUbEtB28TdAihdQmXwMRR0/UcrGqvVkUGAim4LuTxrHqrR6dQ8mWaLmsFr2DqaPLKQ1gwIa
rf/6A1dcSnw6n29RtaKfS6aYM8prLCzJpmAOGqJinjTqsiNQP2L/wAbnCHwafwIs2AyXj2bOXcgh
C/hLOStJiqqG/jcEQiesQagbgyaS1gcTXIl8MZ/TE3EU+wOXzBQiBelaWT+lKSpLFsoNSI/9BM/H
cwXgUiRqP3R9brA1xUp3gFW6+/zcsrHAP15iW52J59ymS67mPWGGwWTMauMHoR/6LvMr07Oh0IPD
juo66+hXOs+uNe/u7OPnXfDxYfPOEXWe9k5lPX7maEafF7czj0zTcV17ZgdTpvZOGjCO8Krn+jod
9Wf+z6y2nTjGE57VjFa65XVgf6MIVsi0+HZ3OCf0XG3fE7TFRFBfdlvx1n1Ng5e+N+NmcUTGhYR6
jlP4w9zEvGj8eDmjErzgatfSqcilXjgD59UWnJmOdzhjC3YYJHYEp2GwCT1r9PrGKjbF7v+mINK5
8PWwpTBDfyKUoew150EQ2oyG0Ivi+a+3eF54agkfIPUsrJJvrFVH3rphpxMYW1KdJUl5Z+++E0Q5
6DP0/W1b/mAgK3KEvG4QlJHrX0qdGSiD4etOltWwSEOKkoKGB1RtgxlHA1itm8lcLoA/C4OIMZjv
m4+QLzr/FxYDTFKY5wmL1Rq8PIhVbdEQWTwIPpWQCIwr4K7Y73HVHZ8XnOdx/dxMUu9wOIjuvvsO
uqWXAw095mi6sOgna/oeamCtVNJB2yx8WbgCtJVmX1ONizCt8tLdJlz21fqeaxzdhKhgIE2IAsLK
qMcamRW9TQo6APYN5qPXbBW/3mHZq4pwYCo2B57M6SvydlMh2tlMjkWpt4nxG45hTStfd0Fr/NiU
r+MulhY3suLQwfDUc6Owt0fwi4K+kD/rCu3hjwTVF53LE6n1NWxbWxfN5a3U0FO049H/UEsDBBQA
AgAIAAKOGEmDsAGVfAcAAI5rAAA+ABwAc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYXV0
b2luY3JlbWVudC1wcml2YXRlLXN0ZGVyci50eHRVVAkAA0RAvldEQL5XdXgLAAEE9QEAAAQUAAAA
7V1Lc+I4EL7nlJ/gI1TtVBljHOCWwGSW2t0hOyRzN7Yg3gGJlUUyuexvX8kvZOth85pJJjpM1WC3
WlL397VaUhMm45sZwE8AD4ehT/y5H4MRghAEJEJwtEIxCK0PVse1r7quN+h2+j3Hti8eYPTvFkzG
N2OhzXAYVNrfYrQerSIACdV0WdHW6TkXrbUfwbYlKK1V1eI0ue7Aa2tU+XOEyT32YewnCpmCi8lu
9mgD4PjmC6DtYjLyYQBWKxBetMK5VN0G4AXC62uZVom4XHsiPfv7z4gw6Rs/+BbB5YwgfPh49+tb
ba4wCu/2m2IEn9A3MKWG8ZnYNQy5RvfRGuBWm02Ae5qMLRVPBG4jTAfWsr9fLRaL3sDr2W5gi40S
00xhagnaTzqnbIIxE9/B8R7lBqsaVFBLpzzCwCdgOv+HNk78kPeisRTSzDiZEO+1gMFYUCIz53/C
s1a7ZJqOZ7fLkKidYVNr39IGCL9Qk4AVICAfQA5BmXXlkpq3kinXzLjTDZMZq13x6MNwBcZJZ/Vi
2ecCsTEd1/0jwMDy6b+OOxhcDbxBx7Eof0JKzIv9VN2hzYba14dWYfbfLIieLaLro27Uoy3GNPwV
PWkaZCEqa5FapWiX0l8R3FJ38fFIHynGovxZMN/ZYV6KwXwkRR9UcMpHv+EQZ2EQrTdMMpSIIFjW
MtsGAYhjOpQPVpAa06L9xcyKUcyvZq7nuExhoSqM4o1PgsePT8WSxdGtO6/QjUVq1eSSKM4RyGpd
Utu4Pc/1XIf22xYWB42ha5kGEjurFhNh0T8V2Zz++cnG9XE2sjFE7ahWsmyX+lzFO2ZcnkWsJY16
Tt/uXdltPQenlbancYnbd3+muex5RzvvmPiYfE25OKKDWAJ++dNnqclSr2orZqodr+soHTcHywhy
zSdlVxyaLf0F1jQuCKlhtbejkpOTwMTpOnYBE3V0nvJhqVls3g2H+0BHkGRqtDcr37VQfz1H5LGI
zHxY7np9a7eVsHZBk2EtpBsarze3B/6V11t43fZFc4ila1Epxyp/zhMhYYl52CyxH4LPAIQgbLK0
9DybRjTwLHl+wJLDbbGqKS9t07q0LsW0W5D8xRUdv1EJlNsJBUek41C/FEhbMynNRluU1W98hZ2S
KljJnOCHLFBY01lO2snY6nWdjm3blJiZJl5NefsXhp/BM6exiJS6Jh+/RzELGOKQuSfD4TOmm3Gu
7YzRXxsmdzvl0bEOslqBv1rN6Sza+sVLtlXVxN1RLby1e1/DBcMFwwXDBcMFwwXDBcMFw4VzcQGt
1xEpb2Keo9VqlDzX7zuP6LCWcdXuS4wTXtY4NJ2j7s6vOlndUXVONWkjFd00wkp6pI0KGmkJcRvB
KH6kjHgNso1YKbVIE0fuRUdZL+VTNmfQcY65XFSRW4ZggdwS9klHfamQmWLhrlTk6SJiUSM/43p9
R3cVq3CHSZJzLDaZ7HrkekEALp2TjTLG5GdgBx9REY3f5MdtJRHapz9fUTLUxblCsAIU6UhoV9dh
yO4c6McnYBF9dC6vKyXmbrYMOWEoNMrOQ++49wp8p2T/nXmdulF5IM6FbelctQSWtZAUdNh2X0Zg
AOmTLThhHcHe05d3WIlRGlWyyfb7+viqUfdzaygaNXpdwUlT28Mo6JeWvxPdwNSV/9R23PQK5+zJ
+dvv4K2gkSudOhsu9akZHUHe9aTppfDruilMfF6TryUyQipWbXmqrVK+StclEfxqLjzTu60Q09yb
FyL6wFTkDIr48w28JGyMJ7DB+URaD/QlWbUkhG32GgQIK8dDo0NJoKSg+lJovfZf5uBhE1K8/wFe
PgHI/Ivw5+16ri3d2zH1bj8P8bseNYjvVIkd946HE3c9nCXVe6TNbicF7cGppaFIGVTLFEYMURmQ
9uNSBNn/qTRVMIEEzQIcbchXf7V9/Tx7x5RZAqJiyydAMvuchC7LXF0dX5Z8v+JDvf13cmqncjJ6
zuwsoCQNUePriWH/FmFKiEYI+7TvFJthTO1G/qUUZTF7G29XhCokeBuQLfX0aIUgOBkYz3JsYGK7
SX9MLDex3MTyHxrLTbz+0bm4yaBN1DVR12TQe2fQJlS/79T6fcVrU6pkSpVM+dGJy4/eyt3a6y2G
qi0/MjVBkgzkrTZk33YebXGMsKrptCTx65QumUqc91yJY+pYTB2LqWMxl/Rmy/pjt6wG+Qb5BvkG
+Qb5BvkG+Qb5vzbyd6crddhH0lMW7qnempygdldWCOk5wJ35KACDqhIcYtLnw6HiRXF2ftSt6nR/
0zSD2lR9IlZ6W/JoNuMYpLfr7G6V+2tiNBJUvn15DCzzzgIESQSp0bYw3Zy2CEq7EoEYkSRmKeZ1
ELZLKuvgLfQvf6H3ZFlWDZKKnB7qk5KwAu2RREgC+EzMyv1wCpxPDjVQM7RPtMCoChjMG8wbzBvM
G8wbzBvMv2/MG1CbQi9T6HVgoZcpyDIFWScryCq9jQna5NVW/B9QT57unHrVdQZe5S91s58IqQq5
/bJQ8jW35HegJllwqLawbaWVFb9tpZ2D8mc4xJ9dOpGa/wFQSwMEFAACAAgAA44YSTbcNY1aBwAA
vGYAADYAHABzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1hdXRvaW5jcmVtZW50LXN0ZGVy
ci50eHRVVAkAA0VAvldFQL5XdXgLAAEE9QEAAAQUAAAA7V1Lc6M4EL7n5J+gmsvYVTNVGGP8uCXO
JOvarXF2nJk7Btlhg8ErIJlc9rdvCwwIkAROnEyS0SGVsmh1S93f13oaz8/PlpjcYTKdOlZkrawQ
zwLfx3bkBv7MC0LsoM+ob2ijgWFOBv3xUNe0k++++2+M5+dn57U606ldqX9Bgu3Mc7EfgaZORVt/
qJ90t5br91BNaaOqLqPJMCZm74Sjw/Xvglu82GFiUUWnvnNNLD+0ErXX7haTbu9kXrgh2GH//Owb
Bj1hNLN8G3sednia+ZK0ZUfXJ3ZRIOnYhUvAkrjujeU7Hs4+5y4KweT1DSYYWfDXNyaT0UQf6BqC
9jmuv6G9uwAzAXkA1GAPR7mOrPMFHq6DHF9cSclTTotrRd0e6mo/R+v1ejgxh/2Bo/Wk7tp3OTF2
HM+Yk76ee+YwVVfBbgcBtnyUR/ET8oN7FMlsNLV6FhMCDMktSSqAyDog232N1Ct5vRR4zopbMw3X
mWXfQpOWAAV8svz7LzeiUmzpdLrB0YJ8CaGi54Y3mYa5vw7AQJZzwJKget0QSorgE1q7HkYfOx8R
NNZxw1tJTx3XOa83mcGfTRNMrSIvoP81gbBvJiAU0SBrSW4DBBcs9adTss8BwXZHJR2OSOCXtSxj
28ZhCE35jOw0ngjshTSQbsjmXMPUDaowVwWu21mRffPlLk+sRW+0wUrrlRhP05Soc0kKYziMuh3w
jTE0DdPQwW4900oc3Uh2nPhZlElrQ9Ox+K6Pn5/vjI1n4ztFVMH2kmcHEHMR9alzS3yEmn1d18ba
cATVnpgGpBReVEwfJ6LG2PiV3tZWfeptoRrwGYl+pFSeQSM2mBnnG6ZiBFsRFtWtT8f65kAXxn2F
N67PVJ+XQ/HYqZcAL1Vr0plFiowDE2rRTuYDmJlRp9HhpUAlunejmzydsrl0YI5RMUtFRaajEXZg
rmwOV9rEGpnDtTnonbQPbNpbpiBpJschtXHh+25DLAd/xdjBTpvxYGhqkIbwPaf89U08Dxy1mLVE
woXF6h8IVZq3PsPohDq9mp9rku9cUUkiD2sRyJJjDVtroXbhp9wUMZbbDvHDGoQaOiVZUdZlBeku
y961CoKExQuC5VDYosUySyHzc2SMzeEEUq1hyMe6K5H9A52BurbleStoa08+WIDNGS8sgow7a4QS
T4gFhsKdwp3CncKdwp3CncLdq8ZdsN26UXnSee963iwpl69anmCwEd1V8yV01x42BDTto+wwotpZ
2QZpBmtuJRG05cKHNZeBNldtG28chGmelfL2gj7p6085ohExhAeDGkM4EOa2uiOQWZDTVUAawL52
KfWybYbXt3queIVZQXO2Emhn9tvKp+sIk9JWReqUZHuh86R1eSSJG3/HoySCsy3FpmSRC1aAwm0J
mDp1HLpXCx/vMIrkKa6cnJk0DHkgpshxnFql/ZbUFfNcgO8L14dm/0GjDmEU7gQyuY/bVymBeTU4
x7WaNuYRGPtQEuPGFHP4aWzr7vMNVnKURBWvs+OxPL9K1D2l708fPltVel3JSawxoSDMbo6/9dww
dp82Gj5k7/qtuLuYN5w+m+Plcw9oQWZ63va45xeNp4KMvaQ7+w0TkkSmNteo1jzWhDobhppGSXa4
qpXJw5aLSU7EchE58/JBUUCwW/zw5acbRuHcLy8E4QHqfELpgIzCpDRdCJr01Ft6x+DbfhggyX+B
FsMYN2jBdkAcaVOGhiZUAivZFhpMzRR2Zms9rPD3nQPs+RM/XGKfoiUgX+PtCsLehvdXh8WbXSSI
KXElmgcxz1hwMgda+znoAbNMo59S4NEzMUW46ul9AiOKqD2QjsxM16floA4szP0oWNrE3UU/LC/G
74u1vzEBNzgSce8SR6kDj0O+TaauiX0b1m69UO7/Qk4cVEZGzsDCA+ILNCWMyQA/Ar+0QtrloV1t
hzVxONmHXLSF9GkYexEojEhsRzFEfOYFPj4aKJ9l7a5GDDVFU1M0NUKoEeIdjBBqFHjpdYOazKtU
rVK1StUvM5lX+V3N8tUocAzCqdtE6jbRW7xN9FZOEl/v3abG20Tqig9nAvFWK9Ivfc5iEgZEVHVR
kng/N5F+54s1L3pB5n2kcnWxRl2sUef86pxfLQoVjxSPFI8UjxSPFI8UjxSPFI9+Rx4VG0dNTAq4
G0hMqdybjKB0NZsLyRnFbGflL4Syk8/pN8wBSQiqkocp+tD5cJKK0jcordxkEYu84B6TBE30DYWw
EkbxbleUtALS4vDOtwPTQrydV3paillSkhzqXmbnuszLpRLeHA14mTE78MH1Mb6I/XTZ3o2C1FQd
asBsmuME/XoUeksqmwBcs89/II9kWVYMkoqcHMzzkrAgCba1XMBz/th+tQPpXBrPqoCCqoKqgqqC
qoKqgqqCqoLqy0FV3YhSN6LUjSh1I6rxRpTwjfn1nwep6gqjYMe9HMU+OEw/+yLqREeBpNFAn5iV
dwzT30eoChnjslDyxbbkp1rm+9RSraFpwtAKfn5G3OP/AVBLAwQUAAIACAADjhhJYF0jbGUJAADk
jAAANwAcAHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1wcml2YXRlLXN0ZGVy
ci50eHRVVAkAA0VAvldFQL5XdXgLAAEE9QEAAAQUAAAA7V1Lc+I4EL7nlJ/gI1TNVPmFgdwIJLPU
1g6pSWb2bLAg3hibtU0yuexvX8kGW7YlWTImkESHHLBar+7+Wq1uSZlOru9B+AzCq6tgA/zJ9Q/w
7xZE8dj2F8DzgHPx03fhl+nkemLH9tyOAI1S+apcXkyP156zox8Hvg8WsRv4Yy+IEjrNVPuGaQ0N
bdDTVbXaR17n6mpRqn8bBuux5wI/Rj2WWtN6+kVnbbt+VyEMvKapDtaSaQ6tLmnyrv8cPIHZBoQ2
amjkOw+h7Ud20uyDuwZhp8sYQsCoeOuGkOEYCxdolJVGSKP6r/Kt01U66u/+crnsDa2eqllqN5XP
LewxCF+hgIAHYrCn34svZ/1DkImSSMkoJYywZoCa4SQDpHPu0fYdD0ySzurJdr8zOUVwXA+PIASK
Df80czjsD62hpitQlx3XX12INXUXbDZQlW1fyQT6RfGDFyVm9VE36vE2DKEyZj0xKkCSZRCudzVS
rmT1Ehl0nDmxZiqua3vxBId0D1WBxU3HdSZV+qOoqJarKFEH9yPJ+oCEM9wSXV2FO5MUrDeI0iGQ
BH6xlfvtYgGiCA7lq7JImanA/iLERTfCbYtp6SZqMGvKcaONHS8eb54zA4IBzpir3QLckNWkTS6x
qBiAlM4l5I3Zs0zL1GG/3YqhZjC6Fmkg4TPNsFdMcFtg0wfHBxvWx9HAhjQqh1qBswaUOQ13iLk4
ilBNaPX0gdrrq102Bmeluu2IxByYp2SXOteY845iO4x/pVgcw0GsALZg1vgMIbBjQKtb9Rs0y9Cp
gpuDletj1adFUTT1Ef4Ca2gXYD28tWpvB/kSraiJbuhqpiZ06zzDzRKfbc6Hg/2AIxgj8cHelL0P
CeX14saPmWXGzbJhDZTcsVNyo4l0zYHupdWbq0O7b/WWltG94FexdC3CPiTDLOkRcYn5uVmFtgO+
A+AAh2dp6VkqtGjghfC9wZKDObwJDmbzfyBzUqPzFS4tymW3MrMK5Xk2hP1EMHPA78rXtN4UlREk
iJVytpd9LbSTYS9HW0EW5kLlmNLMTwFEgxWRB/TCCs5rGMrYKVVpKdZxb+wrFSj2jaQAtoNsizK7
3+N8OlF6hq6pqgqxvGsJb6YwL1j7O3jBWsyMK6vKzW83QjamOuSC9F9CN8br3iOLwbSs0BTe0Xgi
KCCls7A9bw5n0WWvd7DPMUlVKKaaSFsYCokIV1aJBYkFiQWJBYkFiYVjYCFx0PhQkPlypM88jE0p
63R+R8Wj7SkpU89xEpr3yqffCamQZtfNt6yogpwUV85Mgky1nBL98GJxy6oYrNduXNy/vLieN06+
s3eKB3RYq/bl7gvKXymsEVw6R1bOpDxZVnB5jwNiJRoiGMRUfU4rZXrPtM23ru9Gj9A4H4uWC0vE
WfIIRwhQpF6KsS59qOmNg1YMkJK0sgJVAqKIo76k0MzC0TwIa7C3dNGitI80nV8ArcQVLKRDiCah
yeySFKNlDMJCtGq8Q8E+EnWy3ARFKVKE/IFYBedOjeUKJDfeLEWBJzh5J0KGdAmijKYICW11MGCb
F0Zzh6BcfDE7L5gdKcNU6OMEKRPNYHLaD2J3+ZorXDRblhUsV67+EIKYBl5kdgpVM/uU90amIUS7
8ZB237C+KLtkAGQ5laRpSL9o+fAjHaplqsVDESZQ2daLxoN6onorQOFd5USLal7QkM/Xc6YWqVT2
53ZKZ2FmKRSJY8KFM0xTEhSWJdvgkmknJ4KuvWDxlKaBmqc30MiLOq31rEGRaG2/zkEyx+nOsS7X
0Okzopxh+gTnnNrUGVOzGq9FpziCdQrDPjiTXHh/CAXWNBfOm9M+LGcuGr5r37sQCAhyJsybzYwj
zS4w1MZjOEUeX0wE7yvlf3Y7VsEVurh5YGTwhXL1RWVEYYBqaI4jOtAoMpd0tw/MQd6np553bIlo
ILdLoxGIXlKbYEeMUrbQdaDcHE8wb0SqQ7H0Np2WbldQnTOJ5LW8883Df0QmcshSJPhH6qMU+zvE
E3svB9FGHKgbVc0HiYGXQluJAVywGm0lBAKdAoMxByolNJrNnhBrvAnDICRGGpFDAX/n0UZ506Nb
H859pyHZswP72QWIP/IZ9gPQ0Cxo3uqx4opznl3yaG2zYhq6YITyvQfUD4nTxYzFmLy/KpDAPu25
B1WpLjOeEZZWf+JIYFcjx0GYhD+fgRKzdw2MXcxmi5Zrp+o97pTzDitnDpW5OpJqkBJG6oAEX+DD
L9v6ZNXnyRAxNklIIezCBqGlOx91O63ajnkDbG0HyuoF1MoZufZlie3AjiZV9jYO7St2XU95L3Gd
14aKlNQpTzGhqexlyjXbCsfsLW7dgrAhWN7sG1tsGRnDpcpI2LDO7D8FvU/gNUFjNPU5Dsqm93d/
JAl+Auj4isEiCKnjgdahQFBooFyYRK7gVMPg2UVuku3B6SYf/wSvXMC8ExMIHhGh6+wdbU3GynDt
qXqLAh6PqaU6SvUKGrsLEioSKp8LKhIREhHvGBFJ+LQBHuRmmYB1akXJLQK3Pg1TViCm8eMbiHcG
5hQ3QD5OcEfO5CME3N5ZpabXn842VyUvY8lLUx0Z937DuLfI/bSj3wU//wtwMjre2rU9GTuX4Q8Z
/mgeEJTX9aWHKK/Vy2v10qslerUM50Oe9ZDerDzrIf1V6a9Kf1X6q9Jflf6q9Felvyr9VemvnsRf
Xe2PINQttCv8rEL1I1tyOR2d2xgNG/n5qQkKwlclggKUnm1vC26DkNcH/CY6RT4vkH70Ay8k+oER
Ko22XgwbjMPtIt5CSY+9wAfHOe/4dgdYpDJKZaxRxnSXeLv1yfZzp5cTfC/Zimriu9M67XRKvRO/
1yx1OClDMwpkbE2dcOyv29/Bp3vwEP54Bjd+HLog+tuNH38hxefV+kkzvvHpPlNVSuXHPVcuVfud
qLbU2bJvIH6ViPksYr+vCz6L2LfS50Pae5DiZMdx5ZMRb/FvD9t5lHZgqpb5QR6lFX5W9ixCvJ/3
Tds3DnILBDXOJx5e+56v4GtrIm+KyPj6qePrAq+P9UyzyVNop4rgH+tJ39pzo/IZafmMtHxG+i1f
uTns8ekjvqR80neq3+I2hPzP0fIZafl/rFv8j9VcgaGPUlDgShQHG+Llda4CHMfJV2zhMvShVRtP
M3RTMJ5mIM+t0WCpAbc9ntLHyD0gwCWh59PFBiBGfUJJfKJpce+4zgEk/wNQSwMEFAACAAgABI4Y
SZlfXHoKCgAA0ZEAAC8AHABzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3Mtc3Rk
ZXJyLnR4dFVUCQADR0C+V0dAvld1eAsAAQT1AQAABBQAAADtXUFzo7gSrnrHnPwTVHtZu2qmCjAG
O7fEnuxzva11djKzd2zkhA0BP8CTyWV/+7bAxgIkgYid2I4OU1OGVktqdbe6PzXKdHI9DoMALxIv
DL6Fdzj6gaPLy0WEnQTP5n/Di7skjPDFlE3oOokzd2K8ezf2wxi7PPpwhYPJ9Vf8/zWOk7ETLLDv
nzY1X2TfAw/IgWSyEdK3yAliJ+XMou8+OV7QQ5VmnOWoWwL0GemmZvdNa9TXhwND0y667pzJf4Wj
ZRg9jeunsOsERlXq8CYKn8a+h4MEuu6UutcHxsXdn797CeF27SweveA+7YMxO2jquC4QoNkdMHr2
kgc0nSBzaA1G+lA3TZGoxIPqUmMyzZHVE7By5mGUUGtGGNCC5+hEjZCvWFwZ5GzuKTVHji3HK9f3
R+PHVw/Xc28b243Y9FF34fj+HFazJzY56HMs4Td2Q2yqdV7wI3zEM9BVh5BdBS7V6Jv3hKNuj7sX
yA0uFHRy40Ul70qMucKENYN/Ks+6PdTVftrL5XIwsgaabmm9TFFuoMcweoGRYx8neEu/1SPmHJmU
greMEdYMUO+76QD5kntwAtfHk7SzerLN73xNYxjXtwcMWufAP90cjeyRNdINBEZAnO6FHKvbcLUC
W3EClC/oJxSEzygR9VE36vE6isBn5z0JGmw3r6xFJpW8XWbDHI+cLRftRHmu9R4ns+hLDA19L37Y
cpgGyxA62G7AfM9c7Qilj8gWt/R8jH7t/IpgsK4XP4rNeVId8kGsRN9ZCcfUJwVdJ4Qz2oteXkYb
dxo+rQilyyAJgyKXu/VigeMYhvIZLbL1RNBfTBbSi+l4wrQMkzDMWYHoVk6yePjyI9/qKZvvz7Ve
weKJxxfGepQNo24HZGMOLNMyDei3V9lkBIKuNXacypm3KVX2gH3ZuzE8vL1TfRzM3olG7ay9INk+
rDnP9IlwC/YILXXD0IbawIZmr3QDQhOelbrez4qaQ/M9pa3NdU0US4PMouSvzJTHMIh7OiKqSTPS
mILXtppq6FbfaB3a8PRlju+9gKKfBmUfzHGTM9o/cNSqzHwbVjRwqLsRUj+gfRqIke1lp5VZHrV1
p7Qv7VtDtMub0M7TkRV2IXG0BnNt5NjWYGn1exfNFzabRiH2Lf7mzDQMvq/uI8fFf2DsYrfJfjCw
NHBD+Jnx/FUx6F6M0+gbWm6c8ruWAAiANt0O6vQqcmZCBsfHiPpJLNTFPytPs3ZT8o6hT9Tbhvzy
pwU+uSbs1r6wFuZCazClWZCZPs8hCIGct0WQpLGgt0Bvjianlklxy1rBIqIVQ+md0juld0rvlN7J
6V26yTfTuDweYD1uItiMsk6/NlRNNCsjFepUFuJ8RvSiZlpk27b1CWXvd08u8iAfYuM4jDLVgy4Q
jCR6uUS/dH65GGevICqee2n8ifzwGUfoEb+kqBMEsWgNGX3+REJbJcUpr6H5Mgp1c8oM6Iqv96yP
4dOTlxQD4WfP98fpc3EC9IoOa3W/3H3BAiovaxYum6PopK08WRHWujUGZiOeWYiJ5YZLKS+TbRNp
SGkwq5ciUmGMdOMQhzAsNajYBkOFmaPucGhmUeVMqarsS49sBVvE4vgS8ZJUqGScgUqQyWwQ6qtl
gqMC6pEJJUUqOu8KTHOU4sYLvPjhv0RUMHcuEieBbL8ZPk0fsDWdCNukSyYqYMWoYNCGQ7F7EbB7
jZXL7x7HZWYHOl4o9PEOgLfeF0o6CBNv+bJTuHi2LCvYTrnsERgxz3iJ2yk0zf3Trjc2DQM1paFR
uw9B5QZUBpFzSdpCw0XPR1feaJapFQ/lTayJvRdPBvVE9V6AI7tKCZNmXvAsv1nPuVpkq7ItOCmV
LM0yU2SOiV6ckaUJRHZHgPmSa2cfKFz74eIxO05oD0yTkRd1Wh9YwyLRk/Myx+kcp5tIttzC0NoU
GraohNtvYdsey9EOrDOmbrXei1qfqR1wOzqEYx8eyUmmPYIFa3si2XaxZI4oDxKSNzlHVWej6mx0
zoBJQsHhotQxYuFdWldbBXsapL+tsJ60uy3UA7LP6lE3Yol5JlIu/pXAw7gsxJBIJhbJ8uk2xdGS
5c77zJdkC2irApKBjFh9lBCj1+zfR2fqHFd/1UCVr6o2yRJgRyoAHYJrbxWASsBjEoMxhxoHUMtn
z0CovkRRGDHxKbIzwu8dRnXmcXMrgKUCAp4okHfMdfeqdvYkamdb467vU3S7/63/jCt1zz2GaJEu
VvKs/GuEvSWTZt+QTCZbA3KJIH5i55kFEry1t7oz55ywFLAxRwJdXbku8YDw8wdGiTh7EmRzqzWJ
sFy30mizsrfUe+FQhQENqwXrZEgbsgwKB/Bkjff41d2pHwUJkkWiEJCc7h/Qqss4azveDyJ2XOKm
8tqDCV6cHJNsbdP1tOkme1xbDOuApTzFlKaSIZZb7gs52jrFOp+9YjjH/Jl42XIyQRySk4gtL3fR
HAN7xC9ffnpxEk+DYrUlKVTrfELZ9oBiqk7OIl8FCr/B/Lo5e43S/zlcIPOu4YIXYeQKhzIwNS4T
x3UbcLA0izuZdbB4wOTQDoSY4nn/AzafIYXM+tY1s0e4/qdx+3w80KrZR++3cgpD42B8m7rlbevU
O1q7q9GaRNBk6pkNcQOL1hGHMmVlysqUj8mUlcUqi31ziz1F20uPD1pYnkIeGF6F21BJiyGtDyOU
e5zw5PEbTjLv9C4fqpwPUqZmcg7o5Yk1avuV1tHX6yfOI/4D/0y+roMAVKqkFJvoaBM/hYH/guL1
ahVGSYx02k1+Sr82fIae/Qg77gt6cMCP6uortfP9Sk2dP7zp+cN5fRSoTimO2meL66bUqYkCbhTU
er5Qq7pFQcWn6hYFdYvCR4ipBZHOR48DVfR+otG7is9VfK7icxWfq/hcxecqPlfx+VHF5+KYW1Xk
q4r804hd77flHHWb2j1d91F9KF65HR1f2hSN2Dh3FSj87zELcZ4o6LRBLo2U/jfZqTaLvPjlNPRL
ZuwVk7fx2k+AYRKtF8kaVnzshwE+TLXq2xUFKaVUStlQKbPE8AYSK6Y/3ejnhEof96OidEJap6Vu
qXfm85qtjyYVaEaBTKyxBZm8Onkf6rrx6uTd1uwaJt+DdYzdaz+c33j+hmXcyFQm7YTdzGCE+lV6
f9hPCpQ9nJs9KOUuRyDyn8MJrwG1bUPyGlDbyi4+2t9VOu9WSH00d2if9d943M8lzEOTQNPncQmz
9DXKRwHeftw7nN8YvpaAUA6PdNfeSy2EwiXvyFHI+Xsj5xIXIA5Ms81tjO+FzR/qLuraUlt1/7m6
/1zdf67uP1f3n6u/DX2ufxu6/V+BbgRhnMsLLkSy1avsNnm/7CHiJFwVnW/fGFm14E7fMCXBnT6J
PqQHWljszVg7whcnIwj5qXFfNJlFM65Sf/LgDTWkcdh/AB05DY36F1BLAwQUAAIACAADjhhJfoLB
54MKAACZkAAANwAcAHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy13b3JrZXJz
LXN0ZGVyci50eHRVVAkAA0ZAvldGQL5XdXgLAAEE9QEAAAQUAAAA7V1Pc6O4Eq/ao0/+CKq9rF2V
qQIbY5xb4kx2XbtvPW8ys3ds5IQNAS/gSXJ5n/01fwzCSEJgSOysDluzhpZaanW3ft1qlMXN9R32
f2D/8tLbYvfm+iv+Z4eDcG66a+w42Op9d214sri5vjFDc2UGmEWJPqF+byH7O6q/wZNpu0NEabT2
XBevQ9tz544XYOvW957mjo3dMGqIBqqmTMeaPhurhjYeKUNOV+bK88NvvukGZtzh4UyslHJ+wBLo
CC6TkaL0BtaKymKL/Y3nP13ROJXIcz6V0yyOQJ2Mev/BT57/Cr1dm+tH272/Cz2fNcd2pKvN9GHK
luRJMEvZD/Zky9Xf0Hk6smffDkniW9u1gwfQlK5oYaKFsYH6+Wb0v9/sJ+zf2j6s7EB5mW42m8lM
nyjaGrTnsFE8oaWbqMiVayVqm+pwEJHnq/jN22vS4SqUurVsa+5jM8TEVPZc3oN44Vr4hSRjzqSk
RGVx1TVBNjmM70sdi7q8tN0f3iNe7pcaVoxoFC/8YNhMM9ij9Djc4s44bR9M13Lw/nc27gDm9+0B
+xiZ8J+qzWbT2QjcGwIXaoHlRVO4BTZgDCAl7OAw62Pv1Wh6SafkvKWMuPRoMCSFpY4tZchd1HTK
MbN2JKPP1FEmmXpdffG2W1ht00XZKl4g13tGIY9H1ajnO98HH5px4jRId4y0RSKVrF1iHoy9Jlku
0hX37v77BzjD0qZwj8Ol/zmAhg64xn0PC3fjAYP9rgecGM3LjFD8CH6hje1g9Ev/FwSDtezgkW/M
N+UhE/q3jragUkPagv6vSglVPVZClhnsR5LxAMIliU4uL/0UpnhP24jSopB4brGXu916jYMAhvIJ
rZP1RMAviBbSDtBEU9SJOlNGWtRX1gtIbWuG64fPP7JdV3lRNXWjmZqW7EiZpUcIijWpGF0RtosG
fZCJNtE1XRvpI21YAm0cAVcaOY7lywJ5JYDTlp2PjO7tnODRmZ1HmpRbeUGy42ivYZh8JNyCHUaq
MhophjKZQrMjzZ9russD1u2sqGZo7yltZaVyd3aQmR/+lZjwHAZxj7lQqADoY1zFalsG9ao+HjHX
fYXvbZdovnBF3P5hq2MxE8OVLklfcgxKEnDCnQCpvBPiB7SLoXG0yeU2gp7t8CFz6olHN6a6gfJA
CuUuN1I1C8JFfbJSZuZUn2z08bAnrmHJDlaAqsXfewRX2pi+b+9908J/Ymxhi78hGTNdAVeIn4uP
6u5RREx5GH5Ag0Ef9cu4u0R5mh0Vwk07ipRKT9d5FEVZNOKtYH/ZU5E4JV0IUxGYDxnj0eyZKgD2
S340WKbnZCLKtPwcSynKZblB2uqbVmT8aHm3N+nFDdIMfTIDR6xpQhHp/FhhoMHadJwVjHXI30po
IT3HH1Npm+cIpNJJpZNKJ5VOKt2Qt7GLqVuGAWiPRaSaUFYpV0ololYJKVehEljzCZErmqjQdDrV
L1DyPn/Sy4AzgM7A8xO9AxYIRuK/XqKf+z/35skrwJwrO0biyPGesY8e8WucTwI4j3YQs2dPaqhq
TXHWV89sGbmKuaCCOHbO/Vhl9J6e7LCIfJ9tx5nHz/lhRVNulVp/yLug+6WXFUuWTJB3mnU4U17+
dG8G1EYsg+AT1xsuobbUbkWkUUt3aVyKWYjRTB11kCIocT42T1CyqCpZt5IeoMqwz6BZ+qUzq7Ld
bexoP9rnNygzI+JuSqAfNU+zzlebEPuFREIyjDj47x+dca7vLRrnqBk6lJzr/hatIywMMylXI8n9
Zqlq8oxNdCLVJQP8rihlA4ph8L0Rp7vGTuG0jk07OjQo8HiHNLY65qaxXS+0N6+57gTLzaGu5Hoy
nYE9suwwcjiFpplnyrnRaSgpyP2BmGFcoDTTC9KmvW2aXS16ukHapTYdDXN/FZ+c8NwOa8bVRNXm
y5BUqeBH0XoskxXjnClBsgb7IqyD8p9lYnjUMZGlQGl+mCGyuyinfeCT6Yn9a8dbPyY7esNcczRs
IEpWVploWvH9k/m6wvHcFilSzYlhFsxJMCrBGlaLtVv51WI1V8dqoql6433jFPebLjy3cSIHkNMZ
LFjTA8imi1Xn4LITbC+PNOWRJnObKcY8nDPBWqd/lHrJUspGIHKsn7GpLmXtLE8lWiP7plWnDUq4
Gf6q46rW8lzrZH1oPA6SPsfs02wneiVQBH1VsXJCHrYgWYrpdOxhORhzpihGzfRQXTgqNA7D0IyG
2JWesUrWrV1cS09vffZ9z6cmt6L9E36nCa4WUTE/C/cewLSTIlklL5KVqUFZ/3pK9a+NE6aycPYt
C2c7riVtWJSfleG3EQgZ41HNQEjYl57cB0V5JyEHtdHDtQIJ3psMGTVQe4fmV5YVOSb4+QOjkB/z
cGKw7S6CVJbFUq5sTDxEmurXF6Kv+rsblyMXMtFa0M5xAFRSVh678GSH2yr4Pi315AR3keaYhU9A
W8pOVUWIlYzbSW+dlriJ4LUzwfMj4CjIS1kvRHfWd/KoNQ5IDqcY05Rix8OWrSSG9q6zqpiHdLGl
Z/w1y8g4yCMj4Ztd5pwZ1vWIXz+/2EEYLNxiJWRUR9a/QMkmggKijE2H/Zz/8ePX9JjUj/9l9KJB
kM3vBa893+IOBWAHsxPTsgR60BWdOZmdu37A0YkbCDFO6/0O3XyCMCvhrSraMOr1J+H22XiglVjK
60s9hSEzXWyDYm7YxDtSu8toURi5pQbExB7MF+0DDWnE0oilEXdhxNJWpa2+ra2eo9XFqfm6Nvdh
kgxVPoLZ8NwkUCebUoe2sWTPWoXuccia4684TNzN2X0McpotxD5RqaPK3M9ZzjzfJ2dy0jP5t38s
dSJfC4TmI/4Tv4Rfd64LenKw0un8U3jouc4rCnbbreeHAVLJTeMi/r7xGTg7PjatV/Rgwq6iyo/F
qB+LNfngq37lEG1rfKsPyqjVQMeceVR8aHb00UY3NTLne2Bymq5CHtGc2qrJQyGZo5L55A+aT5YX
OMgLHCQml5j8nTB5W9ehF7G8xOQSk0tMLjG5xOQSk0tMLjG5xOQSk58WJq/C1S1C9iI0fjfELj8s
kB8WnAFevd8XtFTtaPdk5Uv5IX/Zcjq2qAkavs3mNTjsb0IL2I4HNKcTReyG5V/rTlUMbbELisiX
VLwVRG+DnRNCh6G/W4c7WO6547m4g9LbN6qJkuoo1VFEHZMY8BZiKN5HojdEpNiCcpKBZ5V+Wges
qc8r9jqSlKMTBTK+rhYEcnSQbqgAmo8N0qfKtKKT7+4uwNa1461ubSftMhAykptmwhYzFa5yHbzv
8JsIaQkfyhKkWhfwRv1v+FgXj+pTRfziUV1P7tdt4SKdk09VNb7Vh5vjOpmLvT/036Bs5zppQ4vS
3P+6BGW9+7ObpzNP6Obtj5NZZd/5XScVK9QhI1/b8p+daPUicuFLB6PFqcjN1rrUvHbNcdtXnp/j
3dL1koV1b5+svNa92Y2TwndoyZvV5c3q8mZ1ebM663LAN74HveNjUPnHos/sj0U3/7PQQumIj/Ki
yz/9SlqPt81v5h7r5butU4r+cdf0s5JEsBWMxG8OHyVRs9j43vpFhVBblcBH5UUX7v8BUEsDBBQA
AgAIAASOGEmjK78IBAcAAJ43AAA2ABwAc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY2xl
YXItcHJpdmF0ZS1zdGRlcnIudHh0VVQJAANHQL5XR0C+V3V4CwABBPUBAAAEFAAAAO1bS3ejNhTe
Z5WfwNI+p3MOYExs7xI8SX3ajtMk070MskODwRVyMtnMb68kXgI9AMeeR5vFnDOGT9LVvd99IWUx
v7qH6Bmi2SzZwXh+dQf/2cMUeyD2YRTB4OxzHJIni/nVHGCwAilUIY0PxvnZ4ueZL8jxXhLH0Mdh
EntRkjKc5ZgXI8edjqzJ2DZNcY1qzGzmN8Zfo2TrRSGMMV2xMZs1ts8GWxDGQ0MieMtUA24mx5m6
Q81UYJUg/IBAnAI2YUdtDoKVdLodROsEbS9ls/azwP2fv4eYoq+A/xTGm3ucoMPl7W19bgkGRYD+
9yHcQnQdIoIbmF8u1uv1eOqOTcc3h8IgJukyzgS7jINsiXy9lMIrdjwkhfzN/QnTBmHgIQgwXK7+
JoOZWopVvgd4EQfwCw9T7kSwgaiuvkRVw4l8t/24GMbPyRNcFqYmFuMGMcMPhocxQy1lolmNTcYr
1Ke+Lkwi28pX4dlgWBPLcs1hxvNrsmKCXonCYAQxLPCFG8goKkdq3kokbBHQGgVMQLXmHkEcRHDO
FmuH5b9L46ZErodHiKAByD/LmU4vpu7Usg0SEwISbM76TXWb7HbE8CA2SoP+YsTJi4F1a7RJ7e0R
IiG9XEkzIA+7+YhMK+W4zFMUATszFx9j9U41F/EnoahVUVTKwUKScg0CXPIRfTZDeWhPtjuKDCSQ
JK7Pcr/3fZimRJQPhp8p0yDrpVSLYcpnaMe1HTphOVUQpjuA/cePz2Ua5hxutMoyROluNPuoNscy
E+dAxuCc6MYZu47r2GTdoZDwNIpu9TTI9KxKkEIhcyxnsyendzZujZM5G2VU5Wo1zY5o7Ff4HVUu
70V0JIl69sQcX2hTBmH+sjH2OCZxJs73VJe5srT7TjFA+K/MFz0ixAZqa4ta5c0KFdVYsfq23JGt
NNwKbsKYG76om+LQwuIPuCVxQSh3m6tp4uGSDwTdomElI/eD6IJVdkQIo+h9iIZeQvxYxkI+EI7c
iVE1JEYVpqh1A9IWueOVOQUX7njtjoZn3Y0qKcTrv4vSQwjqn3cbBAL4CcIABl2C+dg1SQyBL5Ln
b6rejuKY9sg2S8fsn3K4trFZ3ZMxg3PjXCxrBSRTc/WzQLDiX2In7q0wcrfHS3QZBMKgnKG3qvcH
dWG+rqOReZJ06+qX+qZGxGuaehGrb7KFZk0VRGR2BwGlk7G8L1x7MTfGI9syTZO4bz4TP029WQuC
T/CFm7GMYLohH7+EKQ0rosg1grwg0vhzY+9pkNA6U9XseW81kDHwQRStyC6G+qQi65Y10VmKPbz9
foMvCA272gtKB5Y97qLYDNnG+RzVhe0ZVMtzHqIKWd34zaC9mN223yZRe2qyPzlLC2ppWaI6fuJ5
OxWLJNDGQz5ZCM/0eithmtK0hOi5V6YkBfGe4CtjQLqIO4TjrOW+o9WOjKbdXkM/QUp5CCNrgNoE
zZfMumSrKHkOaW0EIrJd9vA3+NqJy7f9DMKzWM1MZRnAvePZw5V/eRffo1ZyrFPWSu8Vz3vF817x
fI+K5z3N/ABp5v+VQuolZwQBUoV9j77U+cdh4b8xa2v0l0ihfNcSWppwTegXoC2Rv4lXBX45TmKU
TrH1bfvvFVklZlAF1jbeSDCnpTn9mO3tUZooub5UIw5iebViG7/rskme6m3KAbUfAkuQnsecHhQM
TpoITtPZ89lM8aLjgfiy/967xVuNkWtvaybLt5RCfAPxHUz3Eea+15KUl31ePD5pw6LpzRsgulvS
8bzz+EQ8ZmquM5h79M7dFu4eoTJIttsQ19vclzCKPPZcf/DyhgVbC5Dm8rUKRHjZkoKzPequzjU3
q7sdUVQf0kGqEkQDVvaK2aCyp9R2h9dhHKaPMOiF7VTuSCXvovBelY5slfoBrD217INPUn+48zpV
GSfjvVDHSXxWqsNzBYY0Oc37b6J3r0NaIRZHwxI5uAAlOXClw/PAdrnGENUOdL2c2cVh7cGnl1ij
Kfm5cA1C1gSriDhDWzwqgQ3TSCUhS5Emkl5HIT+foYH1UVTzkXADsaroYMmFtdJqNmWO/itlKaGd
8p4EF1ql+9Q6r2yE5O6yaU5kzgtj8mQPj3gTs/f25Qs24pNmKtlmJxN9bNVM921voX7zq6vHD6aa
28HU/UAt9R3pYk7bTffWhbve7PlZVM3drD6Z0vU1B5GgWHrR9SLcj5X72Qf+ltTPMEJWb448Vq2+
KXJMW3rc8MlIfKi3XIVTa5vD6F2vSosKF9s0ALV8+wyiPbxOUNdDzpu+W+zWd9Zye5MCNzKjlAVU
WvScZEKM9j7eE0t7URLD/0jTmeJkJ63l+BfKC9TiHwH1RvMXFdmKVea/GNlTt3FkTC+/N0HOpA7a
gtcVZH+1tcht2hxhmkq6KP4S7exfUEsDBBQAAgAIAASOGElTBfQYNAcAAFc2AAAuABwAc3RvcmFn
ZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY2xlYXItc3RkZXJyLnR4dFVUCQADR0C+V0dAvld1eAsA
AQT1AQAABBQAAADtG8lym0i0ao466RO6colUFVchhNBys3GcUc0iT+zMnBG0ZMYINA2yk8t8+7xm
begFsKWK4/Eh5dD9tn77g9by8uIGkwdMFotwj4PLi8/4nwOOYssOHOz72O19CTxYWV5eXNqxvbYj
LINEZ6jfW56OnpvBW2EQYCf2wsDywyiBGxnadGyY8/FoNtE1jedR4iwWTg3/ioQ7y/dwEFOONWqj
id4b7GwvGCKB4A2kBgwlw5ibQ16wW2IHkZ1JZq9DEv/lxXfhAdTg+2vbuVdwT8AZAonCBu5aCLzH
ZBOS3bkIBwArcoA9iE3/e+vtMLnyCCh5oH2dbjabydycaIajDXu/4V1IvgHqBUjpBdubOCQyoeoM
nHC38+JVkJo2I8XS4dUyGFIqpR1vw9wvUmIMBus0/KbaBCm80uQ1gqnWpfCu514rVC/A8IKH8B6v
chucBy6DlFgEdCFnGCoQE1MqcO/swPVx/lyIEIGot3eYYGTDv5Exn0/n+ljXEMStCyajCr8CNmBE
ODD2cVzQyM0vMpwYUrErkJhbGgxZVx2NXW2otE925ITZcTRjzkd6oZlupK7D/R5izQ5QYcUPKAgf
Uazi0SS1dSAEUlLBSYGQZYkMI9VKgafML6m52Bju3fzxqxdjLkNscbwiHyNA9L3oLqewDDYhMMiT
PHCSoPOMULIET2jj+Ri9779HIKzrRffquLzkRWYzB83oHKLIoP82OeHITJxQFga5JAUPAFyxJXGx
IFltDHd7CukKQMKgSuXm4Dg4ikCUM+Sk9kTAL6KG9CK2yBmmblCCBSlQ3d6OnbuPD0UlY7L/eK0N
KxFPy7fscElpZ2IYDfqgG2NiGqahA98h1zEoFN0Y7DjRs6zD4HqBY8W7Pjt9vDM8Thbv1KPKaK9o
dgw2l4U+VW4lHgFzpOvaTJtMAe2ZaUAZwqsa6+NY1JgZ31Pb2nqkqSo86IzEf6ahbIEQW6zsbyq9
L8F2jGW4fP87Msf603sUib+s8dYLGPhl0KZs1LGUnUXqGR0Taikh8wBsLKo0Wl5Kr0SP0KUX6ZTN
pWNzhsqxAJWZjlrYheHEnKy1uT01JxtzPOy1N6ygja4+5wrh6sKX/ZbYLv4dYxe7berBxNQgDeFH
wfrLazw7Vi2mk09iYbX+G0yV5q0zqE6oP+THlTpkoubyMYdYBi7+Khp3yl0Oc3+ANHjuuhxS5qHX
sv1WQ1rjSYoZTDZciY4u32wYrjh4xZzFw6onW4tDkCQSkd1tl7oTWt3kob28RMbMnMwhBRpGq/HO
eq4y0MDJZv6hOokDT0tkFkkmFMJWRBEBsY5xLL9LIqCdxxXBIlpuo9gUssm/Mqg2npWCKn0qjf8z
xBo19aLpdGp+QOl+udIrKgsk5CgkqesBCwSSQGeN3vXf9ax0C1Lx2kuSHvLDR0zQPf6WjDqQOdEB
2shipYO3dlRndw8tzKj0zQJK7JWc2zzfH/Os2+SMbHbm1tR6K8AU/WABonbAogZIvA8M//GrF8XR
MqimNeoR/Q8oTBZRxDikSWc+5YT9mfYfQIMkfyVUDGPWQAU7IXGVokwMTUoE8nILCqZmSg9zCJw7
7NxjF5SYONIvQAYKfcZ7pBlDSvWn1viFPIDV7sXfdTeHYaNMHjnSvoDZY72b6QezNwMdmidjdMrm
6a0FemuBXn8L9FZyXl3J+X8l/+rA62ObyBK2RTdV0fa0xF2j2pi3BVJI9xoSVR1ckbQ50IacXYeX
pewaHJhJ4JYzXW+Zqp+ngE6JWmAHWZ5uchwBzGn9nL7bTicwmbOv5BBPcvOSY5ODV2UTrKptygAq
X+oVQGpHZvTw/cbaVffDt8u4CitXdis2S1YWiwjHn3D8GUcHP2ZevibF5TRe6+UDdTKxpKeFuefN
kd8c+cU78hEahfQOT0Wzj57vW9zVnf4xGTb2Iy/hnlJDMyJEknUkauBu4jKdiZBsG210akpEXKrf
PvX5SH8997NkHZfIKbmWSxBQQh32JTAwkNQvv/Ght/FoM5d/kRXIwWQPwXdOip5lnfNNjEnlO2oq
RvLts/+sj4axQlPiz7EVEJzfd2hKFgVgzTRCSYAVDHz0Igk8PmAUq1Oc4lXcFsey9iDJ/HQuVnjT
lReAyD9TLwW3k15RYPKe8JzK4BVhCC7uajDhCyIIB7BywMe6hsneV2x7fDHDWn5SkBIddjZT51YF
ueec/ShNYjPSy0qmigvZNPzsGMvvthz7Kk1+q7uRcZdLNT+Kupmr1SdTvLrvAAly1su299BeVv2/
oVeOGsp/AsNV9jrmsZrpbV5nmkrkli1I/KLaciWcXNsMjDr8ytIov+tYeaesesE9Bb20cvpPXY/a
bkCs1Pm6K3wSGadopqJ8OASCMTk48QEsbvlhgH/c6ZC9nRfuK3V3OtbnZu2zKL00XgcyZlWgnf1t
jZMfDC0zLdYxNE1qIMmPoLhjZtL2lRez+V9nHYnMf1BLAwQUAAIACAAEjhhJYfRmtroIAAD/egEA
NgAcAHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNvdW50LXByaXZhdGUtc3RkZXJyLnR4
dFVUCQADSEC+V0hAvld1eAsAAQT1AQAABBQAAADt209zozgawOF7TvkIHO2q7SpsY2LnliaT3tT8
ce8kM3vGoCRs2+ABkkxf9rOvABsLI4TTSdf2TP8OXTUxeiUhPa9Aluf68v2NSJ9Een4e+rm/9DPh
JXEsgjxKYm+VZCK03lkjxz6bOO58MppNx7Z98lsc/fEori/fX7Zizs+Dg/irNFl7q0jEuazp9KC2
0XR8Mlj7UTy0WpX2VjVQanKcuTtsd+w29ePM3/bMXyZp/u8of0gec89frZZ+8MnQellcqaBo8+R6
P2DJRsSX738VMi6T9cWBWK1EeDIIl9rqNiK9S9L1ha7Wm3/9FOVF8feyS1F8f5MnaVcPNFXre3Jk
f19cX2NMZdHUL/7zNlqL9CpKZbmB/efZ3d3ddO5ObSewh62gIFmvo3wRVz0rLu8B3Sa7/lallED1
ZtoXzXNflTdaO6iwvN3u8mEUfjTMqCYiip+ST2KxG7CLOFSCyuEbDA0NJobActwbw1PkS6sSXa/+
2/psMGzM4Mi1h9XEX8kWk/SzvHexErnYld+50M2hvqThqqaHPR0cTcKyg90j9+DH4Upclo31F9v+
Xc9TJvt1+yBSYfny38iZz8/m7nw0tmSShDJXT15W1cdks5E54sdWPaH/sOLk2cpNbfT12ntMU7ks
1i0ZArbr0DaiGpU6rkLfsYJV06UuUeb8uGyX/ypER3uiWoO7ntRtyIILdYk7P0+3a12y3hQlQ02R
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
FNKGN76bZMUFL13C0fwsd3ZSdVb/3vnbQSs6aP9xdH19fXgyOGx3Bu3W8v68K46YZt+KGxSmIQ8P
2z/cvs2l/5iub2Xllg2vVpzhEyfY6Y0XJ1h/5T7HyXgazhYHe3qz1f+v79OsOK+Pn0MWorj4r9M/
OTk6GZx0ulFheTxJPu29bFfv09vbgnKcROsb+pcoSe+jvOkYT5318C7LCozrIzW8odjkOs1uVu9Y
XpX1+xb34GB8VfnO5e16G4++FKd0WVBouprjyfhsd/ufQrSzIVpp8OFM1scoNrwoJ9HpabaKpPTm
dr7luGKTNNney+XdaBRms+JU3kSj5cWMiuPN5ldxMitnS3/Q7c93uN7VeDK7jfPR51+/rgOk9MD1
rtqtrcdtnpp1H26RqKUHKDrYL65N/3DQH/S7xXFbO0HdcKGffNLC4jrXBftOBL/Ww9Y9/vkPW+kY
P+1hm4vaPGpbV7ZX3PO6525+cctP0fydRep1j9uHR+1W8zN48ei9r3NL+sf9P/Nyta86jZ97lsdZ
/o/lszgsTuJTKH1hPtEZshDnoe69u72hM+h1a2/cVfg0SUpvP9++Fd/bEf4ebopcKN5X3tvu0X6o
S7wKk26v214zqU/ni3IsPS+bN6dT+p/iDIbz21ccLXrokMX9up/kn9fJXI7l3uA42hS7aBOac2vj
ol4ODq/aJ/HR4PB60GvtPZ/Y8ruo9IfFaT5yVPkV8/vtpyweh99CGIfxc75aDgftItHCfcXfv+Mr
p1R4F8/BxdU/i4uzDJ03xVdLtN/a+WQ7Wy4+2OZ/l/lVPNKzNNt56fYuv8h+GY939rq66e/rXl8L
3pjd+kT9UfsZp3qRLBnW4az8bPUv7jwtT1yohvXG7rY1GfMQmTtvqEmJqhsbj+dPaHRx+fC0nJ9F
h71up91uF0/Eak/l3Wx9ruLdv4X70h7XEdX0ll//mMzmT+ruKW8Buc8mefm9l/PnrjGfikB5X3dN
XniDooNRPJ1eFZ+i1fytURxzWEWlJvAqt906laqNylh//Fl4ePKeegTKT+jO35qv53qzhi/89SbN
vNc5UKP6S/i2ADU7T57xDCwXMh/mqV1l7nkvh1Ga1Z5PAXxrg60dbF58juL3L7vYZbP1AmtztfRa
WUbpK2q17nnBt0u/s/T3JyY/7bTTTjvttNNOO+2000477bTTTjvtu4P6Ku8X9Vt8l/jNEZ8yv31u
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
GGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhi
iCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYogh
hhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYY
YoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKI
IYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGG
GGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhi
iCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYogh
hhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYvjsDLOkqDdNJnGyC+Im
Mk8xd7V5NHOB9XOUD2oG2d9E1oCJtyNyYhbXLy9rClqvq5B9HYynwZs4+UfwbS9m/ccPzX7U+oWZ
2MbWr57R5R1PgvTXIH0XTKbjGavhNElmwL4E37Kbfi6Wq8aGcZSGUTZo02jev9ZBGi+aKkMM05ne
oOa+nmS7UOUu3qX2qwuaZ7IYW49kK66Z+k0huEZ7WBFUAX4Z1lrNw3M4v3nqAO2n/aYRxnYA88wz
zzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM888
88wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPM
M88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPP
PPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzz
zDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wz
zzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM888
88wzzzzzzDPPPPPMM/8XMF8YwlEwDtI1+1Knk0XV1/Ood8EwTkYvaNmMct3atWpGW7dQeb2ZRCG0
wVshrHnFFAa2ZsEs6xtEn4KqRbBfcb4F5cqVK1euXLly5cqVK1euXLly5cqVK1euXLnyv075Ph8C
Xj/tA5/9PgLc/qBs+xPA65pPrJ7lgz2fQ/8Rn0P7oHlfj5uRSTf9K3W3+POsslJI1ubgdhxOPu8i
uQ78UGywsidZU1ejUbYsZj9+zWY4V1TuQ7yhUfoQ/X6a9pOsrrqPz9/myiVKlChRokSJEiVKlChR
okSJEiVKlChRokSJEiVKlChRokSJEiVKlChRokSJEiVKlChxlhjfB1HNl8KXqf36iCcdGBjGd3dh
WvyK9UM4Hvfm1z9sf6O68Xvapa/Jb77hXZ0x/+L5T61Ot3123D29OO6cn7Tb568qvpkfRNmVabD9
PfOqcwbR1/hL0F+NxVU0yiXNR+bgmc5afMd47/oa/HB79BsOLcQNtzrvVEPu50E0Ggern9eDNskG
98PnIAlag+xfp3txcXZxdHzUbmX4RmH0KS+h3NXm0xJLcPV9KlU4n+kdB0Z6lUk1B0eGDcH5yIp+
Z3YqjjA9JGGaj34TRhn0YL/jTNVd32cQ82dNGtde1lhlK8W1d3TROXryinpZPutrnB8VGRRm6ybK
T/rTR6BZ6NXOhmu03gafwii/vnZAHYxGv/weTtKsMId0H7bv00GSBqOGc0slRVVnl3oVj5RKga9r
YrJn422clEMLDX3M6PSjLOF+diBvr5V29cPmfscpxHC0anqrvRe3q2/1O3dIrEHF3M0OFPOY0nxv
Z1Yd23rKU3b1ArbrOZt/UStda57UdVj9PGxCmreG9evgH/X3Q0stZHtG/QHdTeE+i+zt44Zvv/OS
b+teqHNlL/A0LoYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYY
YoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKI
IYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGG
GGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhi
iCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYogh
hhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYY
YoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKI
IYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGG
GGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhi
iCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYogh
hhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYY
YoghhhhiWEyKetNkEie7IG4i8xRzV5tHMxdYP0f5oGaQ/U1kDZh4OyInZnH98rKmoPW6CtnXwXga
vImTfwTf9mLWf/zQ7EetX5iJbWz96hld3vEkSH8N0nfBZDqesRpOk2QG7EvwLbvp52K5amwYR2kY
ZYM2jeb9ax2k8aKpMsQwnekNau7rSbYLVe7iXWq/uqB5Joux9Ui24pqp3xSCa7SHFUEV4JdhrdU8
PIfzm6cO0H7abxphbAcwzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM888
88wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPM
M88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPP
PPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzz
zDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wz
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
rP399xf81/wT6MP0qralsNCHUfm568ZmgqpExY97tlqnVc0ESRrumSXP9bUJxe8X2PXpVxfc6Jdo
mKrqyZ6eNvd6NEz3Pc/9+1t5dgr9XI0SDT/aOm8H6K99o8cz9bBu+13XrYUf0wT777Ldha9C+WEb
39wHFVbwUPpi177xf1FvT80V++O8RXhLc1Q+ptT3tJl8rua+h9ewbR07xde60n3Nh205rKG1fjmk
+cxbvqI2frvIh8V1O8v/vf9LdN8TFE3y1tD7XtROu326ZZb8e4TCNF+SbzWTnLRbtZMsv4mocYZO
q7NbS+z7x+11sVmwnuP7ujcwhceKMApd6YtetEd0m7UPW6+YZZZZZplllllmmWWWWWaZZZZZZpll
lllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZ
ZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZ
ZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWW
WWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllm
mWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZpll
lllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZ
ZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZ
ZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWW
WWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllm
mWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZpll
lllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZ
ZplllllmmWWWWWaZZZZZZplldhlKu7NsMs62qV2NLLot3Nu8m4WB9ceoOKhZb281spsl4WmnV9Eg
vx3dDafXUZAUhWj27Tx6sf9i735oNJxEl8M0ng8eje+SLNf0cv9l1E/jaHZ7u7pnJ0i9xz/53TD1
1vZ6k1Ov+pjl95yfT5Lpn5Pph2QyG83hhE3J5oTy8+bZ4D0UG4zTsPWz5N0szdcXHUzH96XK1MKZ
HXwmNc/rSXrXptwGuFS/+oHmI7k+th7JxrhmzBdrg2sugrtWXvG8eOrz2g3pRePx3ByAKqqooooq
qqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqo
oooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKK
KqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqq
qKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqii
iiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooq
qqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqj+x1DtXf4RFr/YxDgZJdOl1tKis/up3+aj
PiSDcRb/RNrjwrK2YY83nkLl/c0k1oY2eFsb1gx9bWNrnC/m66dXSTimWf7v/V+icX4Yo8l8UNQ+
7ZycHZ4eHh7tdbMkbGR6Ndczp3s3nF5HYeooLCH7dh692H+xt1A9nESXwzSeDx6N75IsP3Qv919G
/TSOZre3q3u2rC1ff1hcfugrl/a69fqoeZLf09kkiX8bjS/fDUeLKSfqqquuuuqqq6666qqrrrrq
qquuuuqqq6666qqrrrrqqquuuuqqq6666qqrrrrqqquuuuqqq6666qqrrrrqqquuuuqqq6666qqr
rrrqqquuuuqqq6666qqrrrrqqquuuuqqq6666qqrrrrqqquuuuqqq666P13dXX4e4e3Tvgp/tx9H
2PwJgc3fRnhb813+z/KTB35Y4+k/rPFjfk/g8Qk/8LGr9tXOTFfrKy13/fZ8stKQULN/ORpOrreB
Xw78tF6wciWh1Js4Difd/ObXJCo+VF7DePVrJaUfL7mdTXtZmKvuZ0veFx4XFBQUFBQUFBQUFBQU
FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJwHx7dJWvOh8EW0Vz/iSe0Ig/HNzXC6/hHr
u+Fo1M3v/7T5ierGz2mXPia/+oR3dSL/4Pmv0WG79fq43Tk7Pjw9abVO9yo+mZ+k4Z5Zsvk586ou
hvTr+EvSe9iLN2lcCOU7c/BMnRzfsd/bPgY/2Nz9hqaFccNTzRfVkL3up/Eoebi93LRJ2NxP10mW
RP3wz2H77Oz12dHxUSsK+OYtFlX7Pu1/Sf6S/H36YZam4UBvHKpFX8iiA2mcjr5Fk9nt7TibTqLD
4gf3f8kbNu5C5VGW9ONv0XX/a1hC0V55c5r7MxbE63ehNGFua0sDTLcyVNMIM2ge/LjlrrpUqtew
y24U21QaT9tQrLLK+ml7dHZ49OST8eeiXT9j3mXSnxa38yItHuen70AztTdbC9d3GpUOXh3Ry+Rq
mG7r41lOuLcpsub1omJMeOW7DOf9p8Zmnc/h6PbSELidN/PtdDK8+WGHZ0sH4zB+KL1R7+eCXT6W
hRawBkEfp/21o1WFIh9TOt6byaqmrKe8hj68vdr2Klp8G1a6r/mgLofVH4fVkOazd/lmr7ljt59e
JeEQZvm/q1t2O+326Xf3/Z60W7WT9ON4hxk6rU57pzPy/eP2erfWyfd1760Lj/2Ebb/MMssss8wy
yyyzzDLLLLPMMssss8wyyyyzzDLLLLPMMssss8wyyyyzzDLLLLPMMssss8wyyyyzzDLLLLPMMsss
s8wyyyyzzDLLLLPMMssss8wyyyyzzDLLLLPMMssss8wyyyyzzDLLLLPMMssss8wyyyyzzDLLLLPM
Mssss8wyyyyzzDLLLLPMMssss8wyyyyzzDLLLLPMMssss8wyyyyzzDLLLLPMMssss8wyyyyzzDLL
LLPMMssss8wyyyyzzDLLLLPMMssss8wyyyyzzDLLLLPMMssss8wyyyyzzDLLLLPMMssss8wyyyyz
zDLLLLPMMssss8wyyyyzzDLLLLPMMssss8wyyyyzzDLLLLPMMssss8wyyyyzzDLLLLPMMssss8wy
yyyzzDLLLLPMMssss8wyyyyzzDLLLLPMMssss8wyyyyzzDLLLLPMMssss8wyyyyzzDLLLLPMMsss
s8wyyyyzzDLLLLPMMssss8wyyyyzzDLLLLPMMssss8wyyyyzzDLLLLPMMssss8wyyyyzzDLLLLPM
Mssss8wyyyyzzDLLLLPMMssss8wyyyyzzDLLLLPMMssss8wyyyyzzDLLLLPMMssss8wyyyyzzDLL
LLPMMssss8wyyyyzzDLLLLPMMssss8wyyyyzzDLLLLPMMssss8wyyyyzzDLLLLPMMssss8wyyyyz
zDLLLLPMMssss8wyyyyzzDLLLLPMMssss8wyyyyzzDLLLLPMMssss8wyyyyzzDLLLLPMMssss8wy
yyyzzDLLLLPMMssss8wyyyyzzDLLLLPMMssss8wyyyyzzDLLLLPMMssss8wyyyyzzDLLLLPMMsss
s8wyyyyzzDLLLLPMMssss8wyyyyzzDLLLLPMMssss8z++5sNobQ7yybjbJva1cii28K9zbtZGFh/
jIqDmvX2ViO7WRKednoVDfLb0d1weh0FSVGIZt/Ooxf7L/buh0bDSXQ5TOP54NH4LslyTS/3X0b9
NI5mt7ere3aC1Hv8k98NU29trzc59aqPWX7P+fkkmf45mX5IJrPRHE7YlGxOKD9vng3eQ7HBOA1b
P0vezdJ8fdHBdHxfqkwtnNnBZ1LzvJ6kd23KbYBL9asfaD6S62PrkWyMa8Z8sTa45iK4a+UVz4un
Pq/dkF40Hs/NAaiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqii
iiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooq
qqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqo
oooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKK
KqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqq
qKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKK6n8M1d7lH2Hx
i00cjJJ+ea3Z/Yzd+YOF4T8R9MHG0rZZH1Q8ldrHmmWUhtfTKw9tdl/a8Br6m/OGYz3Ob0WT/Gb7
tHNydnh6dNTe6bzoft8GFM+OUnJ1MPKKlaSqT6eqoZtnVLeBwbOcLC7JT78kd7Mk7FZ6Nb+OzS+i
d8PpdRSSUSiRfTuPXuy/2FtcX4eT6HKYxvPBo/FdkuVXkpf7L6N+Gkez29vVPU9IeGn452kfjG9u
htO9tV2+G45G3fz+wtD7Va9lw7Xrdr60un0MC0qXT6nbTwfJaJTE67UWcxy2W6+P252z48PXx0dn
nb2Nq/J4kmwOap+uD7rpf7tMuvORF4ujsZlotWoPeOnal08UNz7j59iK/wdQSwMEFAACAAgAFY4Y
Sco9Hx6lBgAA+FUAADIAHABzdG9yYWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1yYWNlLXByaXZhdGUt
c3RkZXJyLnR4dFVUCQADaUC+V2lAvld1eAsAAQT1AQAABBQAAADtXM1zozYUv+eUP4GjPdOdAYyJ
7VuCN62n7TqNs+0Zg5zQYOQKnGwu+7dX4lNCH2DH6aYTHTITo/chvfd7T3qSYDG/WgH0BNBsBncg
mV/dgn/2IM08PwlAHIPw7GsS4SeL+dXcz/y1nwIZpfHJOD9bNPLCkt6DSQKCLIKJF8M0p7Mc82Lk
uNORNRnbpsnraHhms6DFf43g1osjkGREY0uaNbbPBls/SoaGoOMdogaUJMeZukO+Y3fIT1K/7Jm/
hij7K8oe4B6bIY7XfvCo0J6TUwLaBpM4YBCuheJ2AG0g2l6KpB7mtNUfv0UZob7CA4iS+1UGkaK/
jA2wWOSTf++iLUDXEcIyB+a3i81mM566Y9MJzCHHFMDtNsqWSTFy0tw4/A5W9iioKEbaWHyj2lcF
vRIbLYH5cOX0YRTeHOaBKHmCj2BZGewyCSmm3HyDoUIhVDDmdmfMQ/DNCRH16jv3bDBkPGi55rBw
/DXWCNELHjuIQQYq+goXIh+KKRWtgh52dNAahXkH5ZZ78JMwBvNcWTdZ+bv2U4r7dfcAEDB8/Gc5
0+nF1J1atoEDKsTRcnaYqBu42+EY8ROjduhPRgKfjUylo6vX3h4hnMZqTQqGMm+UHIVVar4C9JKM
U7iLThLq+Jjz9G8CUauBqBCDVU9qHZhwSafD2QyVeRFud4QyFJDAhJWy2gcBSFPclU9GUBjTwPpS
YsUopWclx7UdIrAWFUbpzs+Ch89P9dRDBdxoXaTMOtxI6pYNLk/rVAAZg3NsG2fsOq5jY71DboZR
GLoz0kBuZ9nswk3epwo2e/L2wUbpeLNgI4hqQo2x7Aj7XBZ3xLh0FBFOnPXsiTm+MIfqGFy2eE/j
Emfi/EhzmWtLOe4081H2ZxGLHu7EPVAuFJjVJgJ+BmS8/IrTcke21HFrcB8lFPuCdcWxa4TfwRbn
BW691tb2qrXESWBij2yzhok8Oy/ptNQvNzfdoX7gHnjEfVibUVUf2F/PeIVeZ2Y6LY/cidGUBEaT
NAnWQlyYuOO1OfUv3PHGHQ3P+kNMsE5mf1cLIW6K+bq7R34IvgAQgrDP1DJ2TZzRwLPg+RFTDrUc
zuNguf4bG6dIOp/w1GKcCxbzbcp8YM1PHNX7bIkuw5BjLT17Q7V/BMYTFFBtm3fWUiInyRs7aimO
XlFW8bTqetbjGCTpToRQPySpxliuqrBfzI3xyLZM08ShXUqixbD1fBh+Ac+UxDrXqlg+f4tSknL4
LjMAeUa4xqZ4VySBKBNtU2F6r3WQMQjK/YmhevrDOj0RVCSZW0jLdEVERIP19bFQRV5XCNARyj1T
27MmU6xcahI1vOs8IEF1UWPdkglFhKJ+zSCASKoBQ5YhYAQ0jX1weXOY+WgUyjElzZRUG+1ravYs
S7IDJj7HEiBKw1DDUMNQw1DDUMNQw1DDUMNQw/AE553sBstzFMced+b48Q5YO3YDhEyyHQEFsbSC
L5jqSl9Zs19HSZQ+9C3ahb3pY8SDqnWRFnaL2p5a9tF7zYraX4QervYXIF/Y63MJDQ7p9vE6HyOb
iGwqVBvE72/fu2UVKukINoHJYMpkdbnJAGI2mb0SrdUG8tH7u5nCb+K9aoYE6/TXMQ6GrhxTE7aA
IuwJVoUTODmwwz+fgJGpM6Niy5kcmXl7lEIk25BdMhQSjBcB/wvxPHal9ESJSpvC8SqDWMQhuNlk
mhNREIMEP9mDU10/oS9n9B2+WGErTylEiQY7mahzrELca8b++pm3F9P7SlCKG2skDH1mCjzREWbX
pbZOxX3PQH/g/v378iV1X+3NvKpe3OAeVKoXfe8kvK+D6tznHSuenIZbzLQ5T7XQb+a5romYnREF
T9XOowiV3qqJ1AFOzb6SSIZtCioai+ezmaShXvQzAfzkx3twDdGv4KVXmCwPN02/InYpX5swrYxH
yxGnIPsZZLcg3ccZdTngEby01oOvKXgrZQFMcGLERtsnBWgHGSxU8UDEyRGjF0jGdRS2GZFd8Ob0
ixvUnmRp5SBp0amhvmCIJWiPBEQCwJdkRuWHU+B8cayB+qF9oQRGm0BjXmNeY/7/hHl90+tNb3rp
hKATwkebBPWpnT6104fHGoYahhqGGoYahhqGGoYahhqG7wiGuizXZbnem9aY15jXmNeY15jXmP9Y
mNeg1m9P6Lcn9NsTb/g1v//yYuP7fZej8+0J6UfR+C9pHkxNf+4H7hhcXIzsqdv6ZA75oF2byJmw
RFv/ZQ3yr48uyvzS5jBNqaMkX1TljFT29lze8C9QSwMEFAACAAgAFY4YSbRa/CqIBgAAtlMAACoA
HABzdG9yYWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1yYWNlLXN0ZGVyci50eHRVVAkAA2lAvldpQL5X
dXgLAAEE9QEAAAQUAAAA7VxLc6M4EL7n5J+gmsvYVTNVgDF+3BJ7suuqrXU2zuwdg5ywweAVONlc
5rdvCwwIkASO7ZmkokMqheiH1P11t2hh5rOrJSZPmEwm4RYHs6tb/O8OR/HUDhzs+9i9+B54MDKf
Xc3s2F7ZERZRoq+oczE/nzx3Tz8NgwA7sRcGUz+MEjrd1IZ90xr39dHA0LS6joJnMnEq/Nck3Ex9
Dwcx1ViRpg+Mi+7G9oIe4ky8QVSXkWSaY6vHW7wXPIWPeLHFxKaCLgP3jthBZCdi77wNJt2eZAqh
hPHaI2BwMe+DHbg+zq7zKUQw+bsHTDCy4U83x+Ph2OgbGgI3uV5wT51yDWpC8gJewT6OcxmZzwp7
34W5/7iUkrucGdeGuj3U1f4brtfrwdga6H1X6wFn45ITZaexjDXWjdwyh4m6CbdbwK8doNyLX1AQ
PqNYpqNp1tMdIYDAXJOEAUjWIdnsOVKr5HyJD7ruisuZuuvKdh5hSkuAAr5Y/vWHF1MqdnQyucfx
gnyLgNH3oodMwjxYh6Agi2nQJGCvK0LJEFyhtedj9LnzGcFkXS96lKzU9dxZfcoM/hwawDVGnkN/
NIFQtxIQisIgm0muAwgXbAacTMg+FYabLaV0OSRhUJay3DkOjiKYylfkpP5EoC+ijvQiNqeZlmFS
gbkoMN3Wjp2Hb0954ipWo/VXWq8U8TRbixaXZHImhlG3A7YxB5ZpmQbo7dUKhMTQjcGOEzuLCkot
9Z8q3o3R+eOd0XG2eKeIKqK9ZNk++FwU+tS4pXgETt0wtJE2GALbkWlAGsKLiurTeNQcmb/S2tpK
12QVHmxG4r/TUJ7CJO4xU+cbtjoE2zEW8da3O7rVN4R+X+F7L2DY52VXvHZrI8BLVZt0Z5Ei48CE
WsyTuQA1U2o0Wl4KVKJnL37I0ymbS/vWCBW7QFRkOuphF/ai1mClje2hNVhb/d5Fe8emq2UGkmly
DFKrC9+398R28Z8Yu9htUw8GlgZpCD9zxt/exvPAqsXs1ZNYWKz+AVeleesrVCfU6dXsXKNMzFxc
QmTvIJldum6NdY+zG+b+R2As3c+BUUCh5BrT0VrYfBGk0S2Kea6TxDdrIGzwuOSZr04rSJhZ/q8x
CFIeD6G2S4GPFsssCc1nyBxZgzEka9OUV8sbkf4DjYG6ju37K5hrT15uQOeU5xZBzubSlqbCI2KB
cTzuMpQ3wY2NhtqY3J45mWSnkJPIoZTHnPRh6ZaWEsAOSf53vqAwsR6KEmem6LFMc9QgBTshoc2V
R/wiEDIwNaEQAG4LCZZmtQPxzWG2ZiErBqAwhTH3WGAwRXb/uHVARTJ1DvwUZhVmFWYVZhVmFWYV
ZhVmFWYVZj8cZp1ws/Hicrfm2fP9aTIu74kdobCxw1BVX+ow1G42PFSna5QdJVcXKzt+y1oLXCZR
e0FOfNh0mfYCV2wbaxzUV+BpKTevjbFuvLoLLelS8GBQ61JwIMyddUdAA7G5CkkD2NcebX9kTey3
15utWIXJHpxGNV3MPutcrmNMSo3w1ChJ87pzVNc3lviN308vkeDswKopWeSEFaBwZwKqIBPTk0C4
fMIolqc4SSOansVNdyQKiahNuyhRCDB+7QUw9d+p58GVwrMmJv9x1ysNYh4H54UbDUowB5U4gJEd
bkwz7cP94OXzFVbylEQUb7GjkTzHSsQds/bjS2grpreVoMQSkzC0Y3z6w82G+n3ZqPiQ09H3Yu5i
73B5NsPL9x8wg0z1vO0LBb+opgoy9pKeHTdsShKa2n6jynmqTXVRippqZblocUblzmMIpd7KieQx
yBTI/OTfSa7TAzeIQASs5GWCPnU+XaSk9Kh85SVOQn74jEnyTEhfRQNPo912W4y0CoTF4Ytv90i4
EG8QSndLPktGJpMIx7/h+BZHOz9m3iJInn5P9viYKXPCAEy/w9e7IIVlNw5TVXWoQUYEfGLBul6F
3pLIJgDX9PNvyD1ZphWDpEInB/O8RCwoHm01F/Ccv3Zd7UA6l/qzSqCgqqCqoPoToKpeeTrrK08q
jlUcv5OSo06V1KmSOglVmFWYVZhVmFWYVZhVmFWYVZhVmP15mP247YLzHMuc5yBHtS1Up1x12BRU
FVQVVBVUFVQ/KFTVjwLUjwLe/48C3svLgG/3JwqNPwpgv4YTbku+G/aNsVX5hgv9SFuVyByViTb2
ywon32Oc74O5yqFpQmMKvjEp/d5Z/RuX1WXv19Y5lZj/AVBLAwQUAAIACAAVjhhJcd+puAMGAABS
PwAARgAcAHN0b3JhZ2UvaW5kZXhlZGRiL3ByaW1hcnkta2V5LXVuaXF1ZS10by1vYmplY3RzdG9y
ZS1wcml2YXRlLXN0ZGVyci50eHRVVAkAA2lAvldpQL5XdXgLAAEE9QEAAAQUAAAA7VtLc+I4EL5z
yk/wEap2qvzCPG6ETLLU1g7UJLN3YzfEGyOzsoHJZX/7yDbYsi3JNpBAMj5wQFK/uz9JrfLk7vYR
8BbwcGibgTk3fRh7CIEVOB4au54PtvRFUnS5p+nGQFP6XVWWWz+Q898GJne3dwWa4dDK0d9jbzV2
HUAB4XST46Z01VZ7ZTqoIxWYlrJqU5x0fWB0WgweDtp6LzBdAzZDRiNkP2ET+WbE9slZAW53WpPU
Dd4a0N3tdyB8/GBsIgtcF2wWZ/bKULOz8+O7yBMYdu9gIonSxQq9WGDC0uX/wli7I7Xln73FYtEd
GF1ZMeRObOg9kejh11j/cCBNhicv44U9pzh2N4Sf3jV0Q1cNVS+GQKBciW6KBpFuPBcXclbg3mcT
2S4c/idZ5BMbnp4Bg2SSn6IPBr2BMVD7EuFvO2jZqsdq5q3XJNImkpJw/iEhbycFIhllWo83GJNS
SSQJCMiShYdXKQVKqLKe1eROq23PeamIbk3rhej2SDICQkpFs9W+3O2FZFzptmNPc7TnCYne1y/p
LnmuCO32AxMH/wD2Q4AjSiyBquASkMVgBsCjLQKtYmgqN3BzWDqIIp9kQ/E3rEh9Ewp6tEh1NPie
Am5nSRNVU+UkTTgAts/RBJbIsimN18Mh3gO3t1q7EMTAm6pD/SEajMPwEWnSYdMl8do5wbO0jSNK
h07XjL6U7oRSCpphrtlkPza6c3lg9ozuwtA6reopFuM3NRCpmcsjhqUe+rFeYtOGbwA22AR9v0hW
XAuJAY6fsaFryATRYMcYDwUkrG3HX5uB9fx1m2zyVD1pczlnX1wH0/m/xDkx6HwhW4t00ylYVlh5
VkaZFUnapomaMUO35ApspyjOPV5GMvXgTxZKpMQowamsuJYDLAecLBBwIIUVBNMOy1KaPh5KZHIn
dTVVkWWZlMGeE80mYxeh/gY7iiPBm3KSrz8dPyzPosrUyHC4w05A0z6GxSYEJYIiM55PagZIalum
686JFR3xVkFkjlmpwkG5cWl6sxbRydrUQlMLTS2crRa81coJspvVznHdcTQu3s1PEFhacXnxmYor
TJYENLZR1AjIGxvdiktKjUnEKzfBYm55xERJGQkL4t5Bjv9MKqLO2krVw9S8isNrlQ1LSvaOoQ4U
9ZQODK8IWZlWKEJGlTC1vuGsmeLR3MMl9bRwwuo+nPCv7+KS8wp1lGac4kNjHjeWBb4/WgSAM7eE
8T6zDzeAow/ogSBu7MtGZgmRac5dUgxleJQszCUKUxMiamTbYceF/N2CFIhRNIv/mcpdb8LMse0C
0f42OKPmG6cwnMIp+hgB/wxLgeQ2t0dC7TlMW4WoxqJgtKhluc9CNUBkZAOluFu/A/15LKkcSLbA
3BYkYMUytt8Xb58CdqfYfvoB7O2IrmvD4nOMEMjMHIlyPcmje43iI+OoVHDVZugFL1ZNLD9PLNNj
/ujN/Ci+KhANDqInVZ9oPqbW1/XaEOVGya0nWlO40OQp49PbO4k5fSc7nB7LDrfcU+a7SS2MiXMy
WSZ4WBRxL8G7WU0tOOj3Aq8RmvkTVKFLaUN4E/4eHZoqmMXARJoDfxosD3NVJgCcWZBhkE5W9d87
OiYFytmZXFQt+HTn5zSn8pFlxqtPao6uNup5cd+WqOe4+pZX72voyrnO6TXbuW/n20v3iq/d800v
u0J/unlwKA/S8T38Nwlv3YeBOulw6UeE3+q55LdpJy8h4HWSHyBIzyGNQ2iHfJR77vU+731QnZsH
keuz5EKPAoUnYMFs009+t37yKa4+rhd9/gCdpbv9qWNZpwl+XFSPdU6N2DVvA83bwBW9DSwPx9uy
k/mSvhhcSm5xUJyYywqH9xIBJbj3UFsTDg7WU5UBOFvT3cC9h/+C1+pKV0GVh+qqV/RBSTeEtoRf
Sw/chKQnmT1bP5z1N25AGAZ4YwUbkrNj10NwQtv84RQvXIeZ9ZvI195zvornBc4Hy3lJfuCtD90T
+nuzaDS9ZPU0dWDkPrUKv0LOL9L72UUr83UO0Vffk32y5ClkmZuHnC/ZhTaca+IXUEsDBBQAAgAI
ABWOGEkPbxk3PQYAAMdGAAA+ABwAc3RvcmFnZS9pbmRleGVkZGIvcHJpbWFyeS1rZXktdW5pcXVl
LXRvLW9iamVjdHN0b3JlLXN0ZGVyci50eHRVVAkAA2lAvldpQL5XdXgLAAEE9QEAAAQUAAAA7VxL
c+I4EL7nxE/QEaoyVcYY87gl5LFU7Q7ZkNk9G1uAN0ZmZZFM/v20sTGyLckQSIYkOkzNYPdD6m51
f90aGF5djjF9wrTfD5eYXF3e4/9XOGIDh7g4CLB39oP48GR4dXnlMGfiRFhGib6h2tlwK89L6Qch
IdhlfkgGQRit6ZqW0WlZdq/V7LZNwyjr2PL0+26B/4aGi0HgY8JijQVpzbZ5Vl84PmkgwcIrRNU5
SZbVsxvlhT1Qh0ROujJnElL2r8/m4QrMEAQTx31UaF+TcwLWBnt7DXVvIiReYjoN6eJCxPMXXoT0
BcgvQaFPZmMWUpn8hJYnLG+h3kjJRpP/wAGpuGfqM574xid+NIeYA8U5GRBw1In/+eAvML3xKURR
3fjZmU6n7Z7dNizXaLxqn0VFbrhY+GxEkhjeywxAtY3ah3BzChKJHPGu9nqVDQ4xcmHvO++HO/Ll
l+rwTuiVB7YgsJhk3kmjnN7zvTtFgAk4fPIUPuLRxp0XxOOY1s4F75+QwlDBuA5DBe/cIV6AN5+z
JUSw1Ic5phg58Kdp9XqdntkyDQSFxYNTEXv4BtRALCfVRhaN60qUSk9SeK2B6lbbtmzLtE2rwccK
TyyyU+lRvcGfsGYLGw2xhXnJ22Uexy52z+xmdtlP1F24XEKWcAjKfHiOSPiMmEpH1aoHK0qhYmaa
FAxp6t1ykIwrb9mWIn/HxuWzZczZNE2ja7Q7wDb++09IcKUcPcNsRK8jEBJAuttIG5JpCIbZQJOq
kz0qqD6OR62u9TutbUyahuq8g80o+wfTKIZJsIgZVqbXHFSj2GFYxluGa027ZUr9PsEzn3Dsw7wr
XpvoJPFS1Kaq6WlkZLkEyEY8JO73aYqNw8UywCwpttt1ch9AzSA2GiyEi0r0DJAPPSV25A1mtewu
2qJYtM10sYc9wNJ2e2L0nI7dntqtxtnujhWAofznjUEKOw3Jj+WMOh7+jrGHPUiZ35CbRGC2AT/K
7aFtG5CG8LPg+emVoWyjnh8tHebOr5+ydoE7U62JUbB2chY4KAY89RqqlZFdifKogvYHkZViKzGi
aB3ylxWIrUSvAG9lWnVTMCgxSNKDyAmOFwcJGo03B3Z4hayu3e5BYrOsnSDc4FBjoLqbtoUNdWoG
nQORWyT5bVAZSiIiPjB03Om4+6Bxl/SIOdM9+0EwKLWGtWMq/Aidd1VYC5lkoa0m3m+5XGgLxe5i
jb1iWqQlD27NXtN8NUpVnBBRGJROiCCEhauuSWhGtDRdKAf71I+P3gbknh52K1iFw28CIBtvZrxy
XRxFF1OGaQ4oJ0ZZg9vaQaiQKfwmxts5ErxpaKuSRUZYCBThSkDVhefFkwL4+IQRU6e4fHLODRuX
qzhyvPJwMW2I7rj32igCo0gOfTK0/SM+ChDb0uacKwjCvSqzmohDcMNiGF1RVsMEnqzwscaRn3In
OztSrLBQghSiRJvtdtXlUyHukL0fjo7ejum0CpbiWi/OQE7uFudIw7CqO7NKxftM007L3AJRzHnE
3/FPdr8iBBJI4USmO0TRuv8JSfCCotVyCSgpQk2+PJwjWBJ6Bs0BNCreC5o7UD+au93pvJmr1QgY
VrBRPdx15P01vCYvyuN4nloBxNc0JYxd5DxWI7lBGlVAiEckpWfqQMnIFPcQGYk6u2S4R5JEHvHL
9U8/YtGQ5Acg8ALVzlGCuVLPJgMQ2zYtmTgPx13KfVof6fpviRTL6lZIwW5IPeVS2pYhFeJ43g4S
bMPebZpzt5/r+D5XHt13MtTKvePjjLsRSNuoPRolq3mswq+HN3p487uHNxpXviuu/FyzMo0Fjzbh
07hN4zaN2zRu07jtENz2lUb1M8xkU/pbzJKzrw0iMIi+djixnXypq3J9X6D7Ot3X6Rn/ATP+T9JJ
zjZFuQpPzETVe/tQHUlbOrn3ORp10tjiCPlXOXJdl6oF7IBddjqEt/tudbfuKweKiqFwK3JO1mlF
8dtoFTAQyOjKZSvw+CAICdZtmm7T9Hhd/99IDR33gI6Kgv4xQdo7wZDTnvFrUKRB0acCReCnpTBl
vdEL6bfoy7/8Uvjy6FrGtoZ3WmbPLnxTMf5RlSKR1c0TLZyXCV7//MowdXiRwzCksST5SZmzX1BL
AwQUAAIACAAVjhhJOpsMMsAEAABvHgAANAAcAHN0b3JhZ2UvaW5kZXhlZGRiL3F1ZXVlZC1jb21t
YW5kcy1wcml2YXRlLXN0ZGVyci50eHRVVAkAA2lAvldpQL5XdXgLAAEE9QEAAAQUAAAA7VlLb+M2
EL77lJ+gowU0gF6WH7dE3gBG23W6zrZnSqQTNbLoUkqcXPrbS+pJiQ/Ju0kXWOQQIBa/4QxnvnlQ
2qyvd4g8I7Ja4SNK19df0D9PKMsDkEYoSRCcfE1j+mSzvl6DHIQgQyqkcWlcTDbtfrDCBzhNUZTH
OA0SnBU427PmrucvXXsxcyxL1NHKrFZRT/6G4EOQxCjNmcbebvbMmUwPIE5NQ2L4wFZTbifPW/qm
aNgdAWkGKstAiEn+V5w/4CfqhiQJQfSo0V7AuQ0Kh01hKAUfEdljcriSyVBgxw4aDwLYv3fxAZGb
mFAnT62X+X6/ny39meVFljnZ/fFbnDMd19TKOL3f5ZiojOoriPDhEOfbtAwtW24DdIfrgJcoTpBn
g7io922J18ayt2HpTiUexvBW41OJRJw+40e0rZ17lUJOqHD11NQoxBrBIkYd9zA+CpvIrPpXeDY1
O9G2fcssY3hDNWLySs+OEpSjGl+HWBZDOVKzKrFwwEDbhYWBas89gBQmaF0oG4ZVv5s4ZdSuuwdE
kAHon+0tl/Olv7Qdg1YtSIk/OW+rW3w80nwCqdEE9BcjxScj1+kYsjp4IoSWnUaTRqCqBJVE6ZVG
TltDynDx+a7Pj7WIfxeK2i1FpRysLWl0UOCW7zmrFamaDz4cGRJKIDjt7rJ7iiKUZdSUSyMqnWlQ
fRnzYpzxXcTzHY9t2GwF4+wI8ujh03PTKriEc0NaXvl0Y/1Rdbiid3IJZEwvqG+8me/5nkP1mrzL
efA3ZRoq/Kxq4UKzfatkcxbvn2ycjndLNsaoNtU6nnVpzFV5x5zLZxGTpFXPWVizuWXqc3Dbk32b
kHgL70e6ywpt7bmzHJD8zzIXA2rEPdIOCp3pkCCQI5WsOCHavusoAxei+zjlxDfdUPyODjS/hRGq
L/VDZok3oYnjOlZDE3V13vJlaVxtbs3hflALAhY+qs2obws0Xic6UTeVmS/Lrr8w2hHeaIsm4xqk
Fwl/FlpLMPdne981J+MpJhl5u7/rQUhoMV+P9wRA9BkhiOCY1jLzLVrR0Eny/BtaDjcOF3mwDf+m
zimLziVtLcaFKQ7zfWRxsPZnjdikEL3ILgPtqiB5fMq35ApCQajixC23/v8Lnn9pGvTd4J1I5mz1
4sCdSMBrrkciVn/TDAQBRbmTMQ1AVjKM7a5O383amLmObVkWTdFqJ36b7j0aws/oxO1Ia+GwyKeX
OGOlQzS5Q5AToddeTnbHCoG2YLY3xeB7A2RMo+q9gKlvY1RnIKOKogJLsR1TZCCerG+VC0UdGJcF
TcmQPR7j2BI5xPkKNYbtJVTLcx6iKpLj+F1Az2L20Hn7RD3Tk+eTs4mglpYNSk5IgTHfT8W6CQzx
kG8WwjO93xqYZhhuIHruNS1JQbxH9FowINukI8pxecn/wiYaGU3HLaMIE6U9lJEdQGeD/mIRXXpU
gp9jNv+AhB63ePgreh3F5dvzAsKzWM1M5RjArfHs4Ua86r3BGdOZZ0s4+kHsD2J/EPvnJPYHVX9i
qlZfojqeOsVJEggfoMS7cpbjo+5zi+Kb69lo/j1HobF9tTB3naXfe1fA3uT3Qd6iCzqA1xAVn0k3
VUz6EpalDLbi0+/kP1BLAwQUAAIACAAVjhhJGFceyH0FAAB/IgAALAAcAHN0b3JhZ2UvaW5kZXhl
ZGRiL3F1ZXVlZC1jb21tYW5kcy1zdGRlcnIudHh0VVQJAANpQL5XaUC+V3V4CwABBPUBAAAEFAAA
AO1aS3PiRhCuypETP2FqLwtVdpUkJAG+rcGuojZZHNu7OevRGMVihoyEsS/57Wk9GT1mgBhnc+Dg
sjXql7q/fkmeTa8fgL8Av7pia6DT63v4awNRPHGoB2EIfuc7DfBkNr2eOrHjOhHIKMkl6XZmJ5bX
WzkB7ZMWJo9RCl4cMDoJWQT+LWerSRgAjRNG0tNNbTgw7fFAH5kDQ+srRDku4/Ejd2jkpALrT+Ln
lJOaSqQTtFiGpnV6vtuqYg18wfjqS5umBvlOz97HrFqgW8aJPGaO7X7nN1gx/oYyrh3vOaBPDzHj
MndltCKhQJHz9KQiOR6/wNz9E+1Lj24Z/wE8SmxdOvQJUsfl3AIZxgZCiOEePMb9Qjr14bWQeUNj
HkD0RxAvfzjhBr7CW5sYx/dzGWhbxXIEJ3eSPx+DFfDbgGPce9rrcLFYWGPb0kwPsVVn8thqFcRz
miHoVHajlh00HlkBz0yZoF/9gKczRm5AA30t3lFbqYJxTZuAv4qwLQ9iUfFtQINoCSrZfuDfHZOp
V1cBfWHPMC9A8oX6AlMKmZ6q9DAFY4o1BS8mhh9CcV2aEKGpj0vgQBz80c3xeDg2sAISrLI+plwS
uVtUg+4qIl/IKApfG8raKRV3WyxuHPX6Yi7pA1/rK4t+/sipstN4xh7rRumZ40TdsfUai4FDSRnF
C0LZlsQqHfusnmw4x5JcalIw5E0l58i8UvJl7VPSjrJwiTW48/D7r5gujcr8BPGc30TIGGLyFBJm
dMFQQdEYUZOEvamIpEd4RRZBCORz9zNBY/0gelbn5bRpsliCko7WYGwL6N/7QKjbKQhlaVBYUupA
wrk4wCRFM5tk2GqdUPotJIxWpTxsPA+iCE25JF4WT/KSNUASRGKTN23DTASWotB1ayf2ljcvZScX
2tPAzdpTmfHJsCV7uHQQE3KY9LroG9OyTds0UG+/Md8pHL032SH1s2webMxCp8p3Y/Tx+S7o+LB8
TxC1y/aKZwfJuCtJ/cS5lXxETt0wtJFmDZHtnWVAmcLzmurTRNQcmT/T25qrK5cL9BmPK7OsclCq
zP4cnBhkvM35X7cHhjTuLjwFVGCfVUPxb0cbCV7q2pSTRYaMIwvqzk7hAtVMEqcl7WWHSrLFwbUs
p5XF0B6R3VpEdpUuibCPC51tudrYGdrWwh70O4cHNnvaytRbvS4c0ugL39dP3PHhG4AP/iH9wLI1
LEOwbTn//w2eR3YtYepPc0GY75Gn1yXdlt2rTpm6WVwMMop0w2mJk3C3wbneYBn84je3xByhd8L9
/57xBHtr3XflCivbPducLb+5Zy9s0Cu2wCat+tXLpMEgKV1tSMO9NCkp84eimMymxBzZ1hiLrmke
tFBO3usM0vOcMHTR1r66baDOSVtYJLW3lbZiShuRCIxT4S7NucMQV6Zn2/Ehjs0o9+ErpzoEWRmp
ElNZxbkkYlAzFA2HQ/uCZPd3J52yl2ELiBjPoIcqCFqCszz51P3UmWS3sPi7QVpmSci2wMkzvKXL
FdZqssHBtTw5Aq1HuvN4hJZhVGKzpGpHZQM278djUXX3gVGszo0ztd9KMsUEWpKoAVj2AAn6MPA3
r0EURzNaLWsJIroXhKWHJBIAaSdbpnKnv08mHpTB098SKaY52iMlfdunNMUyNamQ8n2h+mE0W/ow
G+otwXsGH52YAukrisHRIteta2Y/kfrLwfylPcjVPSjX7o4DjJhl8syRzgXCPRHdwgSav4s4Ylwz
9ZYcOifeOfHOiXdOvJ+ReOdMOWfKR2VK/vWy4qltEIaTxnfJbv2FEVtXXtgNB8bYrr3mSL5j1IkQ
oRWilfPmQvoNf5a7p86haVK/S/6XQflJoPlfHEdTV1yYe6Lb+QdQSwMEFAACAAgAFY4YSTT8D39w
BQAA4R8AAC0AHABzdG9yYWdlL2luZGV4ZWRkYi9yZWFkb25seS1wcml2YXRlLXN0ZGVyci50eHRV
VAkAA2pAvldqQL5XdXgLAAEE9QEAAAQUAAAA5VlLb+M2EL77lJ+gow10Ab0sP26JvGmNtus0zvZO
S3SiRhZdSo6Ty/72knqS4kNS4qAFeggQk98MhzPfDIfUenWzhfgF4uUyBBnYgRT6KElgkEUo8WOU
wtD4YliuOXNcb+FY86ltmqPvSfT3Ca5XNytBZrkMWvK3GB38OIJJRjRdtbRZU3s0PoAomRiC0k5V
Y0aT6y68iUYV2CGcPWCQpCBXSBWM1s3u0REmq5t7SOTSzAdJAOMYhqNxuJOqO0K8R/hwLdO6/eO3
KKPwGxA8R8njNkNYZYFEtdySnvYO1scYlEMxoP8+RAeIbyNMcGPzdbbf76cLb2q6gTkRhAJ0OETZ
Jikso9MNGx5QZW+BYgTZzYiTwj4kS2qJ01KYb1eND6PwThNRiUSUvKBnuKkcdp2EjFDuvrGOjkgj
mPudcw8lv6BEZtUPYWw84SJoeeakCPwtWRHhN7J3GMMMVviKF7IYypGaWYmFHQZaTpgbqPbcE0jC
GK7yxbph5e86Timx6+EJYmgA8me5i8Vs4S0s2yBJEpJcHQ1TdYeOR5IjIDHqgP5kJOhsZLo1uqz2
TxiTGlevpBEo61ApUXillitIr6hgRbjYEqXPj5WI/xSKWg1FpRysLKnXIMANW+KWS1zWOnQ4UmQo
gaCE17I9BQFMU2LKFyMonGmQ9VLqxShljyzXs12qsFYVRukRZMHT15f6XGISztkVJbNON1qOVZvL
SzWTQMb4ivjGnXqu59pk3YlwAmgc3ZlpMPez6sQQTvZLJZs9//xkY9b4tGSjjGpSjfOsQ2Kuyjvq
XDaLqCSpevbcnM7MiT4HNy3Zy4TEnbv/prvMnaXdd5oBnP1Z5KJPjHiE2kaBa0UxBBlUyYrtqOU5
9vsPe0XAd/AxShj8mg/h7/BA6oLQLbalPtRLXIQmtmObNU3U1XnDlqV+tbkxh/lBLPBp+MhqRnU1
IfE6R9lTXZnZsux4c6O5LxhN0aRcC8mtxZvuzAWYedO950xG/Skm6ZP531UjJBwx34+PGITwG4Qh
DPscLVPPJBUNniXj7zhymHY4z4PN7i/inKLofCFHi3ElaebbyHxjzU+S1adsg6/DUBAtI3unmn/f
5aJtT+c9Q7YB9WTHPUPAa64cIlZ/d/QFAUUpkEUPhDQNjc22Son1ypg6tmWaJqF9qYlVw+2LSH+D
Z0YjKV/dIl9fo5Smo2gyR5AzJrdfRnZLk0tbhJrbl//RABnjAMTxjuxioj8ayJq+jCqKqibFcqbI
QCxZP54LVeZ1pQCbocKY3p81THOq1xA9ves6oGD1M3zLCZWukx45UNxW7mlplnGu3zQMEFbaQwjO
ATgFzWQfFt8NczbLWTUDlXWVmWOZwZxD5eVmwBHiWgX/OCfQzpU0cynCqtq/USPexfhmxS7O87ZJ
RvWhYIDaPqsG6bnP+EHBNtRGMJ4uxpdLxQRpNiQMfQHxCd4i/Ct868XRzXDX9OOphgPcLBfRcscp
zH6G2T1MT3HGdEukVBQd1uU5XRwg6ySEr5I+j5m9ZDuTK+zXyNRry4b7nI0FsqttKVF9GpYCqm1V
WIjK2/1alBw6qDnp2m+71xjoyeH9RR1BbWch5xg/fdluonxD55xzjuLYF57O/3/fCTryQCqkyggN
WMnnQqjmvba9vo2SKH3q219LrenjxEHEl63Cv7TYC+v9Ly2aZJKxR0gpCfOlVl8pMKTXan8lEnNk
H9H+v3rn+O8937S8wpyckrcMupnyxL3eZxBzbyV+ydbqHWTgM4UilAWvf6EbJBYr3/90L+ni59HB
aM5LaYaO1SbZx6N8tCH3zLEXXusBhn4eaYPcOQ86gLcdzD90r8si2ZYwTaXDFB/vR/8AUEsDBBQA
AgAIABWOGElYBL1eOAMAAOsOAAA4ABwAc3RvcmFnZS9pbmRleGVkZGIvcmVhZG9ubHktcHJvcGVy
dGllcy1wcml2YXRlLXN0ZGVyci50eHRVVAkAA2pAvldqQL5XdXgLAAEE9QEAAAQUAAAAzVdLc9ow
EL5zyk/QEc80M/ITm1uAMuXQ0mlI77K9gBojubIDzaW/vZIJRsavJE2mPfhgeV/6dvfb9WI2uQWx
BzEexzSeU0az7SfC4oSyzXcQGeVsuiVsAytBWEaiXB6ga3Q1uGP05wMsZpMZyUlIMphyxqD43mdK
6cvHdPDIdrzANn0X+/5guCOUGahmuM/coEGDsj2/h2UKgqiIblisxb+iOxBDY7A4352nwGaTbyDt
ZPmUsAiSBOImy82SBSTvaC+ugTxNeFbI6TBaGHcnJrrQnwu+myYUWN6QFNO1OpLSY2qoWXKcwDP+
Jk3aaYHYUbwQmFMhYRjiX6P1eu0GnoudCBsdcfMOb4WxDt2tqj84vZdxZ/LGqy0IQEQ+phMEo8Cy
LYxkbmNZruoKc+mGi0eZSkggL22cEn1O0oqXSW+U7PjaEHHtaGjoYJl2jA2p2XvlwtnbIOMFplUi
8zJTX3maymwThsosfkCMH1De5aMv6umDELJsS08dClJkzcXuSeOISqlX5GAYh80cVshOSHQvQ7qV
pQDdhDery2vJj1TL1RSb0PzdVwGmV1RAWw2eIil9SMGlzlnjsXgiL75LlWTcIMJZ1crtQxRBlslQ
rlF0BBPtj6SOaKazkONZjjJYmopplpI82n7cl1SjNb8dYqPSbopf2y5XcK/WQGh4JbFxXM/xHEv6
rY+IDqB7Ow0KnNtGQI2s36rZLP/9m03z8W7Npirq3GoVZG1F+C19p8DVu0hpStazfOyOOueErPzl
he7bpMTxnX8JFw7NzntnORF52+rXs10IIDl0rY3VDcP0bKs1cSFsKNPUF9VUvHab+Aw7yQtST7dW
9/b/LRAt7LzUael53HwOR3uREUxV+qQ3dNo2Zb4ONN+WzKzTsu356LwCojNpqlqL5SLquSEOyMhz
155tDJ5fYsdZVNn4qu+nRag2Yu7SjSAxfAGIIX7OaHE9LBkNDg3nrxg52mpc9MEy/CHBOZLOtRwt
6Kq+y9YkO0dV/Yfi0l6W8/SET+UDCbnIq1EeaJLcqOMa+HqmCntncEa2FXgXt1W7yKWQ41eFduQx
hOJHYcGOd7rUwLi1ylt+fl6I1R9QSwMEFAACAAgAFY4YSXDcKQuiAwAAFxEAADAAHABzdG9yYWdl
L2luZGV4ZWRkYi9yZWFkb25seS1wcm9wZXJ0aWVzLXN0ZGVyci50eHRVVAkAA2pAvldqQL5XdXgL
AAEE9QEAAAQUAAAAzVdLb9tGEL7rpJ+wt5BADfAtUbdYigEBSZXWTu5LciSxpnbVJW03l/72DN9L
LklHiYLkECCiZ+ab/ea93dzeg3gGsVrxM7DN7d/w7xOk2ZqyEJIEotknFuOX7eZ2QzMa0BTGJMkN
mc+0E42ZTgaUQs4YhFnM2TrhKUR3gp/WSQwsyxWJZjrGwnY83zaXjm0Z+oQpGnCRPQjKUloYLJC3
7UuiSnLdg0Q5CcW1DGOmRcEgxBnEnovT2yEkRbzFefWZXQ9M15p9gBMXX9DaLQ0fY3a4z7gYe+N1
2HV8T69gZUwJrILXdJnVq+QHynVwUFTQ/L8P8QnEXSxQTjP+W+z3e9f3XMMJDV1RKpzbsdKxtywq
ISq8NBdvI/LAa//7jCpmozhaC6AZ7IJ/ULkgpUaRiVAMKRSo3l6azePi6OXHS5JztYrZM3+EXc00
EiYpFbxr+vcFZtxLPoFWGJvQPVIWJVD/bvxO8X0PRxBAKP4zHd9f+BZ2CoLZFmES50+4QxhMa2QJ
EsgaG3XqDaXFsOTEXwc8Vj5pukyWaUeGPhnU6skF2HWY8XzTapi5zNRHfj5jtCkjTRT/IIy/kGwK
4zWv109CYDtqkCYUquZbaZSsNHpleYy07TJccleb3f/1Ps5A6a8HyHbiXYqKSZweawtbtucIUA8Q
RBpRV4FI8Ql/kX2cAHkzf0PQ2ShOH6eLeaO6LOVfmHdzRXEooP+/loSmVyThWBnUnjQYKLiTG/lq
JaqOzk/nXDIaEOGsa+X+KQwhTdGVGxKW8SSIl+aBjFN5GDqe5eQGG1NI3Zlm4fHdczPFpP5jB+Vg
aCo+HzpjjysGklTDRJsjN47rOZ5jIa465yaIfrXYoeB5bC4qO8O16t1a/vx6lzB+Wr3nGdVWe4dZ
O585I6Wfk9upR9Q0LctYGu4C1X6wDUyW8K4HfZ2IOkvnV7JtBObkhEfORPa5LOU1OnGAyZWosyMX
W9aYrronm55tjcY9gEPMJPVtNxTfuw+N5EsfbXKzKDPjwoba+in9QJhiNc3HS5uV5CXOjk077RxQ
3pK0JwFpO10e4QgPH88NDJ8uPHfv2frs2wM7sMJ3f9eEKHPh0/kgaAR/AkQQfcs8cD0D2xC8DHz/
/RbPC6eWdLj1Lw7U0eZkrm7kiqQikWb8PHhllSdIB/clThLlgJhPDlD19uvlTYHehmphW77Xe22+
zvSFnGVX6ES/BFCcsdvq+upr4OE+VnMjp/+FD/sKUEsDBBQAAgAIABWOGEmI7ULYtgUAAHcgAAAl
ABwAc3RvcmFnZS9pbmRleGVkZGIvcmVhZG9ubHktc3RkZXJyLnR4dFVUCQADakC+V2pAvld1eAsA
AQT1AQAABBQAAADNWUtz4jgQvnPiJ6jmMlCVVNnGGMgtgWSXqq0lGzJ7N7YI3hiblU0el/nt25Jf
ki3JJiE1e0ilkLrV6sfXD3m5uFlj8oLJ1VV8wNHi5gH/e8RJOncjD4ch9ns/ogBWloubhZu6GzfB
Kkp0ifq9wd4NoiGSMHlxFGEvDeJoHsYJ9u9IvJ+HAY5SyogGpm1MRrYzG5lTe2QZQ81R7iYm6SNx
o8RlBzLJy0oTP6ec10QCHSdlbBlGb+BvpCIOmGxjsr+WSVr/9UeQUvIb13sOoqd1GhPVrRpHV3dq
NYl4W3Nsncm69swZ8ub6Ysf7gX+vsaaEI4he4me8Ah+4lOw68jmmx2CPyYApwK2yu2XkjOAuIHCx
gfE22W6345kzNmzPaDIxn62izBIgJ9MpVzCh5JW/HuPCYHVPN44FlecEuylebf4BZhYghRSNpWKN
xkwh3mse9XPjEJk5fzbWBkPBNKZjDEUEtWrY1dp3wBCTdzAJDnGKiwsUiJVZV06p2ZWo3KKxOfKZ
xmpX7NzID/GCCWsny3+XEZvAvR53mGDkwp9pz2aTmTMzLQT48SFj9E476j4+HMC+boRKs1+gKH5F
qU5G263nR0IgP5SSNAx5Nsw5MquUfBn8FXk0cxefKFXp8wmnK3KbAGMYJLvihGW0jUFAkdHV2bcp
CLEl+IW2QYjR9/53BJf1g+RZn6wWzSt/CezMCnZSGBQ3KWUA4YpPwFdXJM/E8f5AKX0JSRyJp6yP
noeTBK5yibzMnwjkJdSRQcJXHNuxbHpgeRSY7uCm3u72pSwrHOJHmxriabFQKccKCYdhNOiDbeyx
Yzu2BXKb9Ulj6FawY2ZnVT1rFOZz4d2afj3eORlfhncaURXaBcuOaJ+mgD41roBH4DQty5ga4wmw
fTINaCG8qok+j0ftqf0rrW1sTG1XDDYj6d8ZlOdwiSfMF3B9I8qaFRVvsxk1nZGl9PsGPwURx74U
XfHRfk8RL3Vp2s4ii4wTE2p1T+4HiGEdHi0vVVSi1yDdlelUmGicKap6dFRlOuphHyYRZ7wxZu7E
GW+d0bDX3bGZtkJvJv4uDNKoCz8OT8T18Z8Y+9jvUg/GjgFpCL9K1j/V1J4FnBbMjCU4T69a3CRV
b9yBZ9BH/ebw0KBkZq5+ArKPkMyufb/BmsfZvWr/Q8OMpxw5FHiQKqDebDioxRqaabVJq5/DG9OU
Kh3IvOf6NCjQal0AdLlA9tQZzyCR2XanyXX+WWOggeeG4QbuOtSnYtnoqMlnUtrus+hZ4q6I8rZw
49HQWNPbsyTTVNGSRB9KJeYUEfSM32/fApj+l5EYRrCB+hcoZosoYatZGDm0U9bOJQ80a8MZhP1X
nGLb05ZTsBcTX3uVsW0oDwEcdDjBMZxumLg/zXU8AtTxrMyI3B4fZ1w9yyebE5K/bWbRLORs2rZC
K5bERJW1V2qKD+GnktiGIPFuklW9KzhCbb0uifRI4uxQ9kIe+52lWQhDBKwwC6Jv/W+9jJQ2D5uA
lWkUxq+YsFCkwznUenSEwadc6RSFq9OV7xaJGi8Lu4LP2Ap0bDj9DacPODmGKddXMdB9TdRmBWcZ
+fhN0hFyu+dsNdiB3ZqMUrZsuUstzSjbWoqcqkszkZFq24jMnJeIrwNZkpxMJs4FyvarlV8Ig/lH
zHl6U1K6UduOyANN3D5vC+LF+32Qio38axCGc7auH5c+IbA19uviBQQ0Nlscl+mo+wZUV1b3MluA
QcqkgoWe+LTrcsErPbaLNU6KYJkU8V3DmpnWZz5IqVAhC4MGNiQhLL11X0EDvVH9+1oz2LcB7f6L
943/39heswpXByVvGFSZvH5eb1NMhDeSzCjsXaP/gQcBhSvvgihIdr9TBeHGytc23bN380tr7bUn
PghRORlZM6f2RkE/QtSJYHoQiPbu+wazr8HLPE3VOQxDqaniC/rpigkOzXXr9/4DUEsDBBQAAgAI
ABWOGElVFKHMQwYAADcsAAA7ABwAc3RvcmFnZS9pbmRleGVkZGIvcmVxdWVzdC1jb250aW51ZS1h
Ym9ydC1wcml2YXRlLXN0ZGVyci50eHRVVAkAA2pAvldqQL5XdXgLAAEE9QEAAAQUAAAA7VpLc+JG
EL775J+gI1TFVZIQMnDDYCdUKovL9uY+SINRLEZkJPD6kt+eHgmJGc1DAuOsU7sHDkj9mu7+erob
ZtObR0x3mI5GYRTeRSRKV78hEsYRef4T0zRKyGSFyDN+ooikKMjggXVlXV58JdHfWzyb3kxRhhYo
xZOEEJy/bxLF+OHjePZ1z/OHPWfQtweDi84aRaRrSYKbxF0oOCKyS17wfIMpYhaNScjZ/xStMe10
L2aHsycbTKY3DxjkpNkEkQDHMQ5VktWUuUs4eaHklEmcpDkdf2zXts2ODGr8dzRZT+IIk0zhRKfv
GpzYIKrDSfK8od/9TG7ltOSkhfpc4V1Ega5jf7teLpf9od+3vcDuGvyQGKzPhfEHCJirJCGqA/wj
Pet0BbMc3+4Wp7kDjQl9gyzBMc5wSV8e9hD/p6TKJyWl4a3CwgYDnV6YG6j33IqhD09zZc1k++9V
sqRg19MKU2wh+DjecHg99IeOa0HkQ8D0xXGi7pPNBgKPiFUF9BeLJK9WZtLRZPVkSykgotJkYACS
ZULXe47CKxVfHoNOuFCXs5z2BgUvYNIjpAI2176pTP8hKeocUlSZg6UllQ4gnPO4HY3oHsDJesMo
QwVJQkQpj9sgwGkKplxZQeFMa1fUdytK+QLn+a7HBFaiwijdoCxY3e6qKsYBrrewuwLcWI3RHS6v
PxyArM4l+Mbr+57vuaBXLmsGRzciDed+1pVB6R44F9jcwceDjdPxYWBjGXWAmuDZHqv9Gtwx5/Io
YpxQ9dyB3b82XhmQ+fMa73lC4g287+kue+EYz51miGa6LrChcaEYZdjUQYrNi+P3XG3gFvg5Ihz7
TAzFqY3KH3gNdQH4eGmytnf1EmdJE7fn2lWa6KvznC9L7WrzwRzuC1gwYeEDbVbZyEK8XqNsVVVm
viz3/IF16C6tQ9FkuRZCj+v3F/YQXfv9pd/rXrRPMUXzJ34vGyHpivm6eaYoxF8wDnHY5mrp+zZU
NPyqeH7ClcN13TkO5ou/wDlF0bmCq8W67EonkyhPa3wbxc5JkTK6RFLaoX8pZXbDoQwDikyrqQdl
eZMYNIhWBQGFDE3W/LHM7NnU6vdcx7ZtyN69JF6McC7g/oJfOYlVOTGx3H6LUoYq2WTuyWj0SqOM
531kGDHWEgD/vc4nRwbI6gQojhdwim7jjD9RpYqmOE0a01tFxCfrGbCQrNdRJgL0NYrjSf7cXHje
obARcXX1AuKklw0BLc5o2gPUD2uaVUqoKZl0cDMQa+FRMFUwMgKiWAa1RYTSmjZOPAoKKi1ii+PC
IPqepYoOWKrskYClyHyl1ZcamjkdLxLagJFlxBBbNhifr2+qeYW7yRVNBDvMfjYdLzNMhSZlss/W
sgE5uT/IDHFT9zoCCehEixjA0FRjKsJaoigtAVXjMGQDH3zdYSszV0axpgvI3WxZ5oShxLRvRu+5
9+dhZEMezD1pQnWsc4FCg6p2m3C+UCs9bCwbKg7VbtweqMoGJvBk27yXP35r+yP+EPD+u/7D19Ln
L4l6iTnwkXDpnmnobmg0xo2K207t37Ed/1yxPLRC4w+LqrmdAgtK1bO2W7TPtVrJY97QY+U0UvtU
5zzXaFFekE0XP3+RSs/MYavIDIvGisQM6+q61qD3Bb/laExnpMU8X/yA8pDXfAVg273GQUK19kB1
EAgEAYeXbUB3f5yz+aFDn4/3uvaIe8dnBrca2/e0R3StnmN3fybtz6T9QZP2MFE0pa04eyiemr3J
ERrvxYrInL7cnKNJmKROwWVM8Xw00ryoFjpCku1QvMV3Cf0dv7VKs/nxrmmXanP9FCi8FSK6P3GK
s19x9oDTbZxxPxwA2muz/nvSslQWJARaUHDalhTtQSdLClVyIkIbCtmLNedCbD8j7zZbrG1OQkWu
rnQf9GjFf3b2Xkh1oUE1a1TRmfHH1NSDW0pFkEmCzflUOMsw/9S91mJHOlbx6Eq1nlY/sTAe9YJU
cTtoiv+5mbWr2f+iUreaeVSebpEcxyx/VTpqu1/P8U8fmf8nQ9K4BbjHcpVSOfAMa+hKk3nrq/0z
kPy3xbqsNEs25VaW/0U7f3oI/nXPHfq1X4XZf7bqRN5AJFqjtwXO/6s52xfBOodta6Oh+f/puU78
L1BLAwQUAAIACAAWjhhJF/jUIU4GAABKKgAAMwAcAHN0b3JhZ2UvaW5kZXhlZGRiL3JlcXVlc3Qt
Y29udGludWUtYWJvcnQtc3RkZXJyLnR4dFVUCQADa0C+V2tAvld1eAsAAQT1AQAABBQAAADtGktv
o0b4npN/wmgva0sbCWOMHzfHTlpLVZ3G2d4xjBMaPLgDTjaX/e39BgwMzAOInW5W2kMUefje729g
ubhaY/qM6XQa7jFZXN3hfw84iucOcXEQYO/iK/HhZLm4Wjixs3EirIJEl6hzsSzoeUf4eUgIdmM/
JPMgjBK4vmWMBpY9GfTHQ9MwRB4FznTqVvBvaLibBz4mMeNYodYfmhfdneOTHpIIXkOqy1GyrInd
kynvk+fwCa/2mDqM0Ix499QhkZOQvfd3mHZ7vBnOYla1SqFGkBufAic17qNDvABnv3OVImB5/4gp
Rg789a3JZDQxB6aBQD7PJw9MuxtgE9JX8DIOcJzTyGKg8N99mMeDFFLzVCKxcNTtoa7xbbTdbocT
e9gfeEZPa66jygmz81jGnvTN3DLtSN2G+z042CEo9+IXRMIXFOt41Ek9P1AKEZ1z0iAAyDakuyNG
apUcLw08byPFTN115bhPINIaQgFfrP/6w48ZFH86nT7geEWvI0AM/Ogxo7Ak2xAYZDUCOCnQRUYo
OYJfaOsHGH3ufEYgrOdHTxpNPd9biCJz8eeygiAgyhz6vS4I+3YShKo0yCTJeQDgik/96ZQea0C4
2zNITwISkjKV9cF1cRSBKJfITf2JgF/EHOlHfI20bNNiBHNSYLq9E7uP1895ISy0MQYbo1fKeFam
VMolJYzLYdTtgG2soW3Zlgl8xcqoMXRtsuPEzqpKKrSSc+W7OX7/fOd4vFu+s4gqsr1k2QH4XJX6
zLilfATMvmkaY2M4ArQTy4A2hVcV1ufxqDW2fqS1jU2fWVtJBmxG47/TVJ6DEA+Y6/M1oxPFToxV
uOL41LcHptLvG/zgEw59WXbFW0clRbxUuWknizQyWhbUQk7uB7CZM6Ox9lJEJXrx48e8nPK1dGCP
UTFVoqLSMQ97MNvaw40xcUb2cGsPehfNHZtqyx0kYkoMIvSFr/sH6nj4T4w97DXpB0PbgDKEXyTn
H2/wbNm1uNk/yYXV5h9wVVq3LqE7oU5PsLMAKUDkuhfalrhbrtGA7IqkAawKa6kc6oeCnWuU0qxJ
IqyiJmQlTkBQZLXMCY7HfItW6yzPlgtkje3hBOqRZekbwq2Kf0tjoK7rBMEGZO3pKyrwnMvcoihL
89pQkgHxgXGGuAt3Oz8uJ8OLHwTz5Fxfck5gWBvdVfal6BYe1jg01VG3+VeV1W03WVhLkVShrQdu
Jy4X2lKyTazRKqZlXMqzgQk76Cn3IaoMkYWBkCGSEJZK3VHArOhsE9KaYN/6LPWyGeHjtb6KVbj2
J5kDmDLHnXC2jTEtzRmpUZLZoHNSU401fpOPKyUQnO0DdcUiB6wEilQSYDXzPLZowc9njGJ9iSsX
Z64MQx04sMjxPAHpOE/ecs/Pg8iWK1gYopCqUFclCEVW3fgEjPU7izUIHuXywFVcqYW1ZUOGIbmR
NYyxrGxgAicHXFvY2l+4NlZfzrBSGTWkZMqOx/qqriF3iu6nN+1GSB+rJKopJokPM9X5t9WaiWFW
y7jNuvuzmLuYVmbvZnj9xAMSZKyXTW+IflAXV1TsNbsMqBmDEhhhwqlinmuMz3pYXW/me51wpndb
Dqa5RMtB9JmXd1RFgj3h1+tvfhRHS1JeP+EB6nxB6RiAouQ0XT9tdlGufS1xd2wDNPmvoGJZ4xoq
2A2ppxVlaBlKIrA/N6BgG3azXfq2nev4LUMd3beqeYh7xscZd511HGJbjKlW3+j9SoFfKfArBc4z
Fx7XjbokKK8uklO9NTlAbc/OgfTJwK1J+YW+m/xOLxkhkhCg0tcp+tT5dJGCshvwjZ+0ahSEL5gm
0cTeMEO/R4f9vjhpFEir9so3C6aVek0sPS35LDmZTiMc/4bjOxwdgph7OZDkzdkCL2PmhgRMf8A3
B5IOJ904TFmJoQaZDfGJFXo57AJHvMVscK/zprhP2GXmgwkx/R7naIVI5RqnIo3MO0teTUXGX1Na
TiOBsD6eUmNpFqSq1Rrchs5kOKqCLIP9P8pXoyVFJlwDe7a5UJXxqNynWn377WvoT7LVzBrkw0xM
bJkBz3C1m3PS36SWnsIAsde9e1Z83qcjw78BTk6LqBgNzIldeW/JPkyqAsE8VQLaOa8bnHzTuDwW
lCqGYSjdpPhOs6XG/wFQSwMEFAACAAgAFo4YSTVKzuQBBgAANUAAAD4AHABzdG9yYWdlL2luZGV4
ZWRkYi9yZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9uLXByaXZhdGUtc3RkZXJyLnR4dFVUCQADa0C+
V2tAvld1eAsAAQT1AQAABBQAAADtW0tzo0YQvvvkn8BRqoqrACH0uMmSXdEhK9fKm/sIRjYxAmXA
1vqS354engPzAD1cayccfBB0T7+/7sawXNyuMXnDZDoN9zhY3H7Hf7/iKJ6jwMG+j92rH4EHV5aL
2wWK0QZFWEap3WjXV8vyPDejn4dBgJ3YC4O5H0YJnWHpo4FlTwbGeGjqOi+j5JlOnRr/PQl3c9/D
QUwl1k4zhuZVb4e8oK8JFG84qsecZFkTuy8y3gvewhe82mOC6EGzwH0kKIhQcuyjt8Ok12fdcBG3
yk0KFYrcewQkMbo41GruEJEu/3DXen2tp/8cbbfb4cQe6oat99N434PEkLxDwLGPY5zT5+lQhvIx
LFJDSKm4K9CwQUFj4CYKyj33jALXx4tEWDNZ9ruIewR6PT5jgjUEf4Y1mYwm9sQwNQii6wVPV8cd
9RDu9xBrFGhFQH/TgvCgxSoZTVrPXwmB5C4kKRiAZBuSXcaReqXgS3PQ3Qg503DdIucFVFpDKqi8
6Xrugqf/kBQ1yhQV5mCuSSEDCFdsCU6nJKvFcLenlK6AJAyqp6xfHQdHEahyozmpMzWQF1EvehGL
VZZtWvTA4ijXi/Yodp7v3gpAYgpusNH7lXKjcCEzLoESpoC03jX4xhralm2ZIJdHKIWjGysNJ36W
IRoH6ZcqNnP88cXGyPiwYqMZVZZaxbMDiLms7qhz2SqinIB65lgfjiibqgZXNd7LhMQaW7/SXfrG
UNodxYjEf6a1OAclnjDTMBtmEIJRjGW8/Bxi2ANTGrgNfvIChn1ZDcWpM8cfeAe4AHzsaby0s2aJ
i6SJOTD1Ik3k6LxiYakdNpfqMD9AgzkNH0jT8pkU4nXw4ucCmVlYHthjrRwUtRI0aa65MK7aw40+
QSN7uLUH/av2KZb2IuZComYtj4Qt5sf+iSAXf8PYxW6b1jK0dUA0fBBcP6HlMAN0UgerzV/gnBR0
bqC1aNd9zjKOMjGs/AlV/RqvyMx1OdYssg+y+0WalolZUdty9Bb6rII012QZKDRAfpMriQZvKJYU
nlYCJDkucgwSKBBFD7m0DLXVOi+J5UIbDkxD13VI++wk9piKXcD9DR+YEwscUrHc/fQiWo68ypUE
ORAvZnnXtLiUIASo8SDzyZEB0noO8v0NWNFXtwaQOReligTVhLQVVUREbLKeXwt55TWVAFuh3DW1
PwsyRVcvSNTpXeCAJKtf8HuSUNEyaFED6bbynUKzKOfa3cZOSKT6QIJXCCoHlDfbZPHDcc5mc1ae
gVJcZe6xmcH0oWy5OaKFWIYg/04D8HC38+JqOzp4vj9Prqvb7BkCG9tEXXylTXA3G1AotVH1AKtu
rGozz/uDkEnWIxTEUkxPmQrsV6L4vRd40XNbGBdq08aJR+G3SEp1oDcnhnnO00BZNxBlD9cNBJkv
1PpaQgMlvQlJQ41sPdpm8nH6820JNa8woCMYmakxGVjNtjEmlZF8nmVrPm6fPA3HiriJJ/sKCchE
Gx+KoQljCsJaogg1AVEA4PTxBvx8w1qsRsYLDeiS/E6L/XcadQijdPdmIFNoq7KARRyC/wzo+lhU
wDiAK6+4EWKOf/Df2nyxwBpGKY4SGTseq/FVcdw5tp/fdVsxfS5wkp+YlCCqtL8LPexpaPmzRsFt
nxb9wm3uc8WyHEpmHxZV9WADGuSil22f3n6uR3pJzBumnYSGG2TqnJca8v8Xq/BXXDXvCAnJuYsm
omPvArp7eI88H7vZWWI6frVsMTWflHSJuNxuKMz0f/2ZcpHMn6imDZuK3D11FFN7FX2rbniLLXMm
4pE9IpHTyjsN5fmAFVOodwv3HbNgimTU9kvLsE8fBr4I/M8EGcx1OL4URQ68wKpbSFJvlt26J1j3
/jvbWrd8dMtHt3x0y0e3fHTLR7d8dMtHt3x0y0e3fHTLR7d8dMtHt3x0y0e3fHQvAXYvAXYvAXYv
AXYvAZ71EuBX6VSf95XEI7alKA73ldiNBubErn3LQr80rRNZ4yrRDr1vcPKx+DLDgDqHrkudKfkA
njMk0/b6wjekH4byX6MfR/0vUEsDBBQAAgAIABaOGElE6JHYGgYAAA8/AAA2ABwAc3RvcmFnZS9p
bmRleGVkZGIvcmVxdWVzdC1ldmVudC1wcm9wYWdhdGlvbi1zdGRlcnIudHh0VVQJAANrQL5Xa0C+
V3V4CwABBPUBAAAEFAAAAO1bS2+jSBC+++Sf0LexpYkEGOPHzbETraXVOjvO7B1D22GDwduQZHLZ
3z7VYKChH+DY2UlWHKKIputd9VU1huXieo3JMybTqWvH9saO8DwMAuzEXhjM/TDCLrpCuqmNBqY1
GejjoaFpne+B988TXi6uFxzNdOpU6G9JuJ/7Hg5i4NStcNOHRqe3t72gjzimtax6DCfTnFj9joCH
FzyHj3h1wMSmjGaBe0/sILITtvfeHpNev7Ms3BAecLC4/oaBTxTP7cDBvo9dEWfxTqrZxfnJXRQq
DLv1CEiS0z7Ygevj7Dp3UQQi7x8wwciGP92cTEYTY2BoCPRzvWBHrbsFMSF5hazBPo5zHpnxRT7c
h3l+CXcq7go05pZ6fdTTfoy22+1wYg31gav1le46mpwIu4xnrIlu5J45jdVdeDhAgO0A5VH8ioLw
BcUqGXVaz58IgQrJJSkIYMs2JPsjReqVnC5NPHcjpEzDdW07j6DSGlIBd9Z//u7FdBe7Op3ucLwi
NxEQ+l70kHFYBtsQBGSYA5Ik5LwglCzBFdp6PkZful8QKOt60aPCUtdzF7zKTP45FGA4QlFA/61L
Qt1KklBWBpkmuQzYuGJLfzolRwwI9we60xVsCYMyl/WT4+AoAlWukJPGE4G8iAbSi1jMNS3DpAxz
VuC6gx07DzfPObAW1miDjdYvVTyFKZlxCYQxNYx6XfCNObRMyzRALo+0CkfXFjtO/CxDUq41Xare
jfH71zsj493qnWZUUe0lzw4g5rLSp84t1SNQ6oahjbXhCMjOhAFlCa8qoi8TUXNs/kpvaxudelvK
BnxG4r/SUp6DEjvM9PmaUYxgO8YyWn4c062BIY37Bu+8gCFflkPx1tFLki9VacrJIs2MEwG10JO5
ADFz6jTaXoqsRC9e/JDDKYulA2uMiikVFUhHI+zCrGwNN9rEHlnDrTXod5oHNrWWWUjUFDiE6wvf
Dztiu/gPjF3sNukHQ0sDGMIvgvWPN3ie2LWYs0RSC6vN3xCqFLeuoDuhbp/zM7czcXNxCZX9BGA2
c12O9Jhnd7L7udMKN5XUNh2tgT6rIM18WT0IDZDf5AJU4w3FeY3fKwGTDBs5AgkciKJnuzQp0Gqd
FehygcyxNZwAkJmmupPcyeSf6AzUc2zf34CufTUUg8y5KCwSPBPuLaki2sQmxvl5l2V5Xbqx1cCt
qf2Zb1N00XyLOpXympNk0CN+vfnhRXG0DMppBDdQ9ysKk0UUJatpGll0UlaeS75R1AYeJPkv4WKa
4xou2AmJq1RlaGpSJlAHDThYmtWsJu5OCx1bAfJ8liIic4/NM6afHU82J4C/qQuy+W3QG+73Xlxu
JC+e78+TdXW7PkNgLcBXxZcAnrtZg2mpjaqncFVjVU8GMmQXEsnQXb35NHUZdBeybeKNk2BdJKU8
VxsT3Tjn2aSsSYjSgGsSghQWat2V7IHa3ISkJtm3Hu0+2Xz98cbGilcY9BDM0NSYI+rMtjEmpRk9
dUoyV3fPGkhjRdzEo35pC87O0nVgkW+sJIpQExAFSEwfUsDlM0axGuIuNCNL8vvWC0Dt32jUIYzS
IzCDfUJblQUsohD8TqFB+xVkJA5g5QnXQszpP0M0Nl8ssIJRClYiY8djNb4q2J1j+/ntsxHRxwIn
OcekBGHAv/wzl5rePasVfMpDm8/i7mJumL2b49WzB2iQiV42fc75i/qpBLHX9JFWzUCS7OFmjSrl
pQbq9hBLD7Gf8dx3Q0hIzj312XR0XUCHDm9tz8fukZd4H3/OazD5vikrE3GZ3VC56a/9R+UimT/t
ijZsrnL31FFM7VX0nqrhDY58MxGN7JmFkH8TbBYRNrD1lBOdSEblQGfq1tu77ycB85kg3bh+xdeN
yIEXOFvmktRHufZ8JThf/X+OR+2030777bTfTvvttN9O++2030777bTfTvvttN9O++2030777bTf
TvvtC2rtC2rtC2rtC2rtC2r/3Qtqn6WBfdzX5WrPOdJv7fgPi6u8AGIPqo9n3sCG/YQlWS0yaTQw
Jlblwwv6ZWV1E3Sc0qa9/brByUfeyyO0VCk0TRpayYfrShvEN34CUEsDBBQAAgAIABaOGEl8Yhlv
6QUAAAkpAAA5ABwAc3RvcmFnZS9pbmRleGVkZGIvcmVxdWVzdC1yZXN1bHQtY2FjaGUtcHJpdmF0
ZS1zdGRlcnIudHh0VVQJAANrQL5Xa0C+V3V4CwABBPUBAAAEFAAAAO1aS3PbOAy+55SfoKM9s5mR
ZFl+3BK76Xp2ts4k6d5piU7UyKSXkuPmsr+90JuUSEp+ZJpO95CDJYAAgQ8fQEaL+c0DZq+YTad0
i8n85h7/u8NRPEPEw2GI/YuvJIAni/nNHMVohSKskjSujMuLxfut5+fyM0oI9uKAkllIo1TOcszR
wHEnA2s8tE2zaaPSmU69mv4to5tZGGASJxZrq1lD+6K3QQHpGxLHW5bqcSs5zsTtyzYfkFf6gpdb
zFCy0DXxHxkiEUqXfQw2mPX6GheoRvE2YBBwLoRe4mVjEZlX/zWe9fpGz/w+Wq/Xw4k7NC3X7Gf5
uQWLlL1BgnCIY1zIF+mrQv9Iy1RKJTVvJR62OGgN/NRBdeSeEfFDPE+NtYvlv8s8ReDX4zNm2EDw
ZzmTyWjiTizbACz7AXm6OGypO7rdApQRMcqE/mEQujdinY02r2c7xgCMpSWNAoisKdvkGllUSr00
Bz1/JdXM0nWDvBdw6QGgoIumH/jzpvy7QNSqICrFYOFJaQMElzwTTacspyS62SaSvkSEEnGVh53n
4SgCV64MLwumAfaiJIpBxHOL49pOsmC5lB9EWxR7z59eSwLhCm6wMvtCuSWsqdpcyqhcARm9S4iN
M3Qd17HBbr9B1JpAt1YaTuOsIvYGBZ+r2Ozx+xcbZ+Pdii1BVFVqQmQHkHNV3SXB5aso0QTWs8fm
cGT29TW4rOmeJyXO2PmZ4TJXlnbfUYxY/E9WizNw4glzDbNlZmAYxVil25wbLHdgKxO3wk8B4dQX
YiqOnRH+xhvgBdDjV2taO2mWOAtM7IFtljBRs/OSp6Vu3Fy5w/0AD2ZJ+sCaUcyQkK99ED+XzMzT
8sAdG9VgZ1SkmWDNh/HSHa7MCRq5w7U76F90h1jWi7gHqZs1HElbzNftE0M+/oKxj/0urWXomsBo
eC95fkTL4QbetA6Wq28QnIx0rqC1GJf9xs4akunGqp9Q1bt4ya59v6GaZ/ZO9b6EaQVMwW3HMzv4
syQZ1lQIlG5A/bJREi3R0BwqmrIKIil4saGgoAJZ9pCflKGxfChKYjE3hgPbMk0TYJ+vxC8j7Au0
v+A9t2LJQzqVT9+DKCnHpssCQPYsiHndh6S4tCQErHGnismBCTJ6HgrDFeyir28NYHMmg4qC1aSy
gisyIR6sp9dCUXltJcBXaOOZPp6lmKarlyJ6eJc8oEB1dv64T8hWhqJur7FHmdICQFYQEBaoXnbB
5d1h4eNRqMaUkim5d3yuuc6SH1cOaAqOJUHUcZRMN5sgFhvMPgjDWfpc3zhPMNhK/HXzAvE3Xrbw
SrZH3RVSfbO6s3bB+FIlFetrhJUsnSmVbK7l5duABNFzV2KWetMliAcxssyKOKLbE8s+etbW8LsM
PQ1+lyBf6vWlQgZKekVZS42sg6RxFAPyx5v7a1HhSEcyBCebycnqeh1jJgzZsxytxQB99Hwba/Im
n9UFEbCJViEUQxvHlII1oEg9AVNA4MmFBfx8xUasZ0bNyJ1cGcApOqJMNXQvBQkFxrOC/zPJPKRS
eaLmaFO6X20RyzQk9/OmOZYVMSbwZIdbaaZ7uR+8fbnBGk9plpJtdjzWc6xmuVP2fnrn7aT0sQhK
vWJahkhogWe6wmlp+9ethn/NO6Auc8P1uwVdP3uAB4XpRdcr0491j5Yem1sGklSmMWvUNc81h1dt
qK1Pig1L8lSfPE5Qm61SSF9/XHNUFBqtS3DtN3s+nSpelDO50LFfUbjDt5T9hd86lcny8NB0O2Mu
1aOD8FbIaL7jCMefcXyPo10Yc3eXL/itNq6dch4tjHmUxAGBoO1IBtpeTDNTTSDCOQbQixX7Ogrb
wpJt8G7Yl7/QZ1KUVYOkJqeH+kIQVqA9kAhJAJ+LGUUeOgF5cWwEusF5oc18XeCngfr/S5bf4pLl
97k4+VWGpo97jdN6ccL/N5JuhdyNBvbErf1HL/nepi7kjEWhDXpb4fQTt0Ve13UN01QGU/HZnvbT
leZng/Vt53u7PNcyPwBQSwMEFAACAAgAFo4YSaGNl5MLBgAA1ygAADEAHABzdG9yYWdlL2luZGV4
ZWRkYi9yZXF1ZXN0LXJlc3VsdC1jYWNoZS1zdGRlcnIudHh0VVQJAANsQL5XbEC+V3V4CwABBPUB
AAAEFAAAAO1azW+jOBS/55Q/wZrLJNJUAkLIx61NpruRVptu09k7AadlS3DWkHZ7mb99n00AA7Yh
Taq20hyqCvM+7Pd+7+dnk8X8aoXpE6bTqe8m7tqN8YxEEfaSgESzkMTYRxfItI3RwHYmA3M8tAyj
8yMK/t3jxfxqXtOZTr2K/jUl21kY4CgBS92KNXNodXpbN4j6qGa00VRPsGTbE6ffkdgIoifyiJc7
TF1m6DLy76gbxS43exdsMe31O4siDGSHo/nVLQY7cTJzIw+HIfZlluWSbGZnt6cOEdEs7Dqg4Emt
++BGfoiz5zxEMbi8e8AUIxf+THsyGU2sgWUgmJ8fRPdsddfghtAXQA0OcZLbyBZf4OGO5PiSSmre
SmZcG+r1Uc/4b7TZbIYTZ2gOfKOvDddhydzZeSLjTEwrj8xxpm7IbgcJdiOUZ/EbisgzSnQ+mmY9
21MKFZJ70iiAyIbQ7UEjjUqulwLPX0s103Rdud4jTGkFUMCd1V9/BAmTEken03ucLOn3GBTDIH7I
LCyiDQEHGeeAJ4V63RHiQ/CENkGI0dfuVwST9YP4UbNSP/Dn9SkL+PMYwdQUZQn92QRC0+EgVJVB
NpPcBwguxdKfTumBA8h2xyR9iQiJylZWe8/DcQxTuUBemk8E/mKWyCAWOdd2LJsZzE1B6HZu4j18
f8qJtViNMVgb/VLFM5pSLY5TmFDDqNeF2NhDx3ZsC/zWmVYT6MZixzzOKiatbU3nqndr/Pb1Lvh4
s3pniCqqvRTZAeRcVfosuKV6BE3TsoyxMRyB2ok0oC3hZcX1eTJqj+33jLaxNlm0lWYgZjT5Oy3l
GUziHgv7fEMrRrGbYJVuvR0znYGlzPsa3weRoL4op+K1rZcCL1Vv2s4iRcaRhFrMU3gANzMWNLa9
FKhEz0HykNOpyKUDZ4yKLhUVTMcy7EOv7AzXxsQdOcONM+h32ic2Xa0wwKcpCUhtX/ixu6euj//E
2Md+m/1g6BhAQ/hZMv7xGs8jdy3hLMFrYbn+B1KV8tYF7E6o26/FuSbJw1w8QmXvgcwufb+mesDZ
jep9HrQiTKVp257RYj7LKEW+qh6kC1C/rCWoIRqa81pdVkEmGTfWFBR0IMue6zNQoOUqK9DFHNlj
ZzgBIrNt/U5yo/J/ZDBQz3PDcA1z7eupGHzOZGlR8JlUtjQVmZAIjNNxl6G8CW5iNdTG9PHMxTS7
aC6ih1Jec9qDxC2jWcAO5f+73xDh0UMxT2aKHse2xw1WsEcoO5k/4heFkaFtKI0AcFtYcAynHYhv
jou1CFk1AJUUJrwTgSFsQIejyBFsbZsS+L2OK8l2GyRl5n8OwnDGx/X76wkOGxm56r7EyLWXDSSU
rlF3bVZdrO4on1GxVElFx3rh46Yr0LHUbJtoHMXDMi/lRtiamNYpl4kqVpfBoMbqEghLZ91VyEBt
rgltAPsmYNtF1hB/vD6vEhWBPSRNL1vMgXUuNwmmpaY6DQpvhLsndZCJJm/y3rwkgrPDbxNZ5IIV
oEhnAq6AidmtAjw+YZToKU7T1LJzPZxVY0JVbe2yJKHA+HUQwdR/Z5mHVCrPrQL/SderLWKZhuTj
ggFbsASVOIKRPW6kmeO/HbRevtxhhac0pmSLHY/1HKsxd8raT99CWyl9LIJSW+RlCF35+S9KGvbv
y0bHx9y0fJZwF73D5ZsFXt9/wAwy14u2l5PvtKcqGHvF7qEamhIuU+s3qprnaqqLrahpryxvWpJR
ffIEQW22ciF9DQobZH6L6PHn9IICKhCBKn2Zoi/dL51UlF27rQOeJBSSZ0z5mZB91oJMo/1uV4y0
KoTl8YtvdyRcqhuE0ttSzvjIdBrj5Dec3OJ4HybCjSQ//Z7t+Jg580gEod/j632UwrKXkNRVHWrA
iIBPrFjXq9BbMtkE4Jp/+Qt9JsuyapBU5PRgXpSEFZtHW88FPBevXVc7kC60+awKvBtUf910/Lrp
+Pw3HZ+lw/m49y6NNx2lt3FCdroPoYrfmp3PjPjxktsokDQaWBOn8smN/aamKmSPy0Jb92WN+c/7
FgdqqWoYhjK1ip8sdv4HUEsDBBQAAgAIABaOGEmzbYMkmwQAABIgAAA4ABwAc3RvcmFnZS9pbmRl
eGVkZGIvc2V0X3ZlcnNpb25fYmxvY2tlZC1wcml2YXRlLXN0ZGVyci50eHRVVAkAA2xAvldsQL5X
dXgLAAEE9QEAAAQUAAAA7VnPc+o2EL5zen+Cj3jmvRn/FJhbMM2UQ8ubJq93YYvgiZGo7CTNpX97
JRvbsi3JQEKh0x5yQN7Vrna//bTaLBfzB0RfEZ3NyB7hxfw39McLyvIQ4gilKYpHP3DCVpaL+QLm
cA0zpJI0vhlfRsvL7Rcf5EOCMYryhOAwJVkhZ3vWxPVA4NpT37Gsvo1GZzaLOvr3lOzCNEE45xY7
u9m+MxrvYIJNQ+L4wFZjYSfPC4ApO3yCX8kzWu0RhXyjOxw/UogzWGz7mOwQHZsaF4hG8T6hLOBC
CCPuZW8TmVd/9dbGpjG2/pxsNhs/AL5lA8ss83PPLBL6zhKEUpSjSr5KXxP6R1KnUiqp+SrxcMBB
240LB9WR20Icp2hRGBsWO/yu85Qxvx63iCIDsj/bC4JJAALbMRiW4wQ/jU7b6jvZ7xmUITbqhH41
MHkzcp2NIa/DF0oZGGtLGgUmsiF0d9Aoo1LrFTkYx2upZpmuOYyemUsPDAq6aMZJvOjLXwSidgNR
KQYrT2obTHAlMtFsRg+URHZ7LhlLRAhu7/LwEkUoy5gr34yoDKbB7GU8ikkmcosHHI9vWG8VJ9ke
5tH2p9eaQISCc9eW2So3zpqqwxWMKhSQMf7CYuP5wAOew+yaPaLWBHqw0lARZxWx9yj4s4rNmV6+
2AQbFys2jqim1FqRdVnOVXXHgytWEddkrOdMLX9imfoaXHV0Pycl3tS7Zrista09d5ZDmv9e1mLI
nHhCwoU50DNQBHOk0u33DTZwHWXi1ugpwYL6sp2KX9CO1TfTEFf7WlfpJT4FJo7rWDVM1Oy8Emnp
OG5u3BF+MA9Cnj5mzah6SJavtyTf1sws0rILpkbT2BkNaXKsxay9BP7aCuAE+BvgmqPjIVbeRcJC
4WYHR9Ir5sf+icIY/YpQjOJjrhYfWIzR0Jtk/Ywrp+VyDZIGFi0lL5IoRWS3S/J2rN6SNA2LdX2M
PmBwhUs8qVAWdc23OpHexx7sZWfUvRa6h9W1VRXpSZUUHBFphEVJid/jgRvju86dYwJjjCOYpmvm
hannWmZMaqXNsA7rg8+mQDXphDJEtE5TC426IVKAWSKzondrQgdwv2FIX+GK326PtjtREYhEwmH8
MIfW+G6TI9riyPCAwIr/rtYRK0Bxn+Ak2/7MQ8XOruwgTmip/7HGWHxWH3sQeUl3SlSzlWSMYk2n
enrRbPeRKj/9IrmtMrvQu6Zl4wqNuu1qI41JnmzeG8Blq00XYA242LPDB6ri5bTTUq35qbEml5H0
WGIjNXHBV+PQgrKQK0XObSTbzCcOEi3gWe1RnIcsPXupYjAsNMwCitj15qiWN1JV/nGWa1iUWamm
xZ0J7KosRalPYnKCshFWhOyBt/Edapc/P+YpiZ7Lx8eJt5bQF3LP25i2fTBtC+3g+xoVZ1wemtqu
hqM+kWJy/h+Yrn8mZjwbnH0X3eJj/RLEPr2RCcwkYAk7dwJzbrKOndz8P0X5909Rbu459pGZTpaT
fRW21gfIn6n9sY389ap8dvX/CdxJd2FdKF7XCcDgHek63ol3pMtvrzPuyNMOdpq0Mg/Xis/fUEsD
BBQAAgAIABaOGEnTW3RWCwUAABkjAAAwABwAc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25f
YmxvY2tlZC1zdGRlcnIudHh0VVQJAANsQL5XbEC+V3V4CwABBPUBAAAEFAAAAO1ZSW/bRhS+6+Sf
wFtEIAG4S9TNlmNUQFulldM7RQ5twtSMOqTt+tLfnsd9yFkk2lYtFDkYMKm3fm+d4er6aoPoE6KL
BdkjfH31J/r7EWX5MsAhSlMUTb7jBN6srq+ugzzYBhmSUWpftIvJqpMX1fRLgjEK84TgZUqyks50
jJnteL5tzl3LMHgdHc9iEQ74byjZLdME4bzQOJBmutZkugsSrGsCww+ImjKSHMf3dIWoYEtofksD
nAWlwKH3743mu8ibRluhM3tEY0J3lxKfmFeleBoU/94mO0RvEgqyp8Y/sziOXd9zDSc09MlvaEfo
C7BeBeFDgu82OaEK0HoKSqI1rhy/xFHlQu1PVotm5fLcU72Q2iXRLWlgHFrAQsz9xiHFaxqbIXLy
KIm+KcIg4EjwE3lA6yYeABXDVEZnqspgomAsw6rgvQ9wlKLmuTUhA1Nv7xFFWgB/puP7M9+yLUOD
lIwgXAXaN6AGAggOoxTlrYwmFURBE1MqfhVYzL2a6mzamnZk6Mr41C6Xyt4HGc83rRaZcaK+kf0e
6i7AWhvFzxomz1qu0nHI6uUjpdALW00Khrpj1BwVKi2fstdU4WLrd7L549ckR1y3uEP5mn7NgDFN
svtGwgrHBBQ00wU0Sdh5RVr5Cp60OEmR9unikwbGRkn2oK7La95kJv/CYpRwjKKA/nsoCU2vTEJZ
GTSWtDqAcM12+8WC1m2f7PYFZSQgIbgvZfMYhijLwJQvWljFUwN9WRHIJGOnq+NZTiGwFQXQ7YM8
vP/61I5QZhLYW0PvVXwxmWTOlVOLqWFtegHYOK7neI4FenVuGCqAPljsqMRZNjy5JeS96t2an77e
GR0nq/cio7pq7yFrQ8xlpV+A26tH4DQty5gb7gzY3tgGlCW8Hqh+n4g6c+cj0Ta2pqGa8IAZzf+q
SnkJRtwh5XbTW7opCnIk4+UXb9OzLWnct+guwQz7qh+K1642knwZalNuFlVmjGyonZ3MA6hZFqAV
46XLSu05ye/bdsr2Utuba915ROs6XRHhCE5Fnrs1/GDmubFn65PjAytYqfvPDSDcXPi+v6NBhH5H
KELRMfPA9QxoQ+hZ8P78Fs+RU2v8oWfIFJLdLsn7kXtO0nRZvldH7A0Km6OTLOfDofreMsP9qD4E
1T6qjtxDZ484iC6FTJJ6D9XE48ztTmFiG45BQ5uGQZpuwUhd3WRBmVBLv7VasMK/ukfK+95SlAY9
b1qiyRAiSQYLaNaUO83yyR5Deq9x02LPr3MMUGG6h6CNFs7UK/VlnCPaa9MVKGVrvfjQTVqSFDcJ
hh3rlwIq8F26OoxYxf+zhZq9ETjWEXFJD0pUIUpwAWnM5+r2ohD3liofPz3Oq8xOdB7q6fiADd20
lUhjkifxS5dw2ToeJliXXHDecD1Z8RZtp8fa9qdOm5hGsOaxu9zM9j5r9RYMkEtJXrvL9jsfewVv
eI6h9/MWGeruJcPgMNHhLiDBjvsCYTgTWeUfp7lNiyoqzU3+4NvFuipFoU1scHzYxeWQbYqTxKC1
i09AVykJH6rzz8ipxSyDheX9nDZdb94n2gUvW1T6uKo32SGHJfdI8s3p//Zd6sQ545jeq2fROX6o
OEVjn5/J1cvMh4Cd89XLSVbyn5c5Py9zRowg6TmJ/6I+mpqNJNn3a9O2fI8LYE0m+fLN3xeJT9DK
qWpbzsipahfz7hVT9RjvT2SqFNRx8ROL+QFQSwMEFAACAAgAFo4YSYgeqO2IBAAAiScAAE4AHABz
dG9yYWdlL2luZGV4ZWRkYi9zZXR2ZXJzaW9uLWJsb2NrZWQtYnktdmVyc2lvbmNoYW5nZS1jbG9z
ZS1wcml2YXRlLXN0ZGVyci50eHRVVAkAA2xAvldsQL5XdXgLAAEE9QEAAAQUAAAA7VrLbts4FN17
1U/Q0gZaQG9b2SVygxqYjjuTtHtKomOhMuWhlGS6mW8fUi+TEklbseI4hRcBYvle3vfRuUwW85s7
iJ8gvrpKtxDNb/6G/zzCLPcBCmGSwGj0HcXkyWJ+Mwc5CEAGZZLaJ+3DaDHweeMNiNFEEyiFKUIw
zOMU+UmawegWpxs/iSHKqaI2Nmx9atmuZxkz2zL1ieIoEKQ4v8cAZaA4sLQcBULhLcSrFG+uRTpM
9FGl4LfcJHKMZ46p66O7v/6Ic2rkBoQ/Y/Rwl6dY5lXHod35e1PCWzYcc6Ds2p47OWHhozj6pqiB
QCNGT+lPuCSVA1TsGkWM0n28gXhcBMA8LXwrxQuB2xgTx8b6v9PVauV4rqPbod5VKmq2RGUmiJ0y
pirAjIrv6nWf1glrV1oRfKoIovCRLURIS9c5RJSh/zrPxhMuWsPVJ3yDd5wm392SX1P8i9QIJjCH
9Vn1bIhiF0sqvhV4v8d5w4oK5+VZXQMUJXBeGNsvVn1u+ikjft2vIYYaID+G7XlTz/UMUyPdHZF5
HvU76lu63ZJeA0hriv1RQ+mzlqts7PPaf8SYTG9jSaFQIVylUWal0VNiY1kuFsbUczzvyr9K+xq7
9hX2YO1JY4MILllsurrCFUilmy2VjAQiKeJPuXsMQ5hlxJVPWlgmUyP2MprFOGPB2HZNmx7YHBXF
2Rbk4frzU4O4zDBaQQk9zbhRHJUFV2AsM0Da+APJje24tmubxG4XuhWJ3jtpsMizDOo776yhhs2c
vf6wMTZebdhoR+1GjcusRSmMZO5octkpopoE9cyZ7kyVzId0/rKlO0xJ7Jn9lunSA0MZd5YDnP8o
Z9EnTjxA9k2mJlkYghzKdLtEy3At88WkRFbwAD7EiJFf8CX8CjcEFzqMsq11FM8YpE1MwsybNpGj
85KFpcOweecO84F44NPyEWtaTdBJvZ7jfN0gM7c3uDNtx4S1HWjSXosId3edQPfA1HVWrjUZHd5i
5buIo47855oIdV4x37cPGETwTwgjGB3yanFcnSAafBY8f8Er53iKHKabTZzzuXqOk8QvnqtzdITB
mpTLuixsm+eYSOfLTtuLYlStV+1gD1g5faGSZNZDhTArKfB7PDlo+xK7c0hitHEIkiQgXkzUWEuM
Ca3wCGsSHnzM2icBHV/UEVw0jdConSJJMwtklrizxXb7fkU6fYlqfDs/2G5lhQESAYbRYCpqfL3K
IeYw0q86sMa/N2PEw53ETD1daLjenRqOO+OFNuBXAItLl0UFWW0NU5d2reTSSdHltzGKs/UXWntS
TCkl6rEjnIzpn7lPPW4Az/ZW7whU7d1j9cj3f+OfFx6+0gLK2XiDjcqwzmSjmnqGbp96o7rsJqfe
Td7tDnvZqC4b1WWjumxUv8dGNdja0I8H7mtixVECVqzPZuoBVBx32j8oX6jsqajs8PD2AibYoVDN
3wwH44m2Zfbhie+dTkmvabr/kNJbmhvnLE+3NaayzLp4ymwrlum5e6+BLNPueQ1k0XuDF1wDSWPo
l4ozi/jdOCotzf9QSwMEFAACAAgAFo4YSWLTSL1gBAAAzicAAEYAHABzdG9yYWdlL2luZGV4ZWRk
Yi9zZXR2ZXJzaW9uLWJsb2NrZWQtYnktdmVyc2lvbmNoYW5nZS1jbG9zZS1zdGRlcnIudHh0VVQJ
AANsQL5XbEC+V3V4CwABBPUBAAAEFAAAAO1aS3PaSBC+c/JPmFugalOlN4ibLeJaqraWZO3sfSSN
YMpixI5ke3PZ374tAXrPCMUiJikOPjD0a/rxdffg5eLugfAXwufzaEfY4u4v8s8ziRMHM4+EIfFH
XxmFk+XiboET7OKYiCjRR3QzWp5Pnn+gdyLGiJfQiDlhFGd0qqFMdcOydXVmaorS1FHwzOdejf+e
R1snpIQlqcaaNNXURuMtpmyCWgzvEDUuSTIM25q0XZ6yl+iJrHaE41TQLfMfOWYxzsQ+0i3h48k5
3XoN03BhEpsQSRjvKQeHi3k3mPkhOX7OTYjB+McN4QRh+FMN257amq4pCMLkU7ZOg3IPaiL+DaJC
QpLkMo4xK/z9GOXxa6WUfNticeNoPEFj5d9pEASmbZmq7isT4Oy8cqZsGM9Ytqrlnukn6nO020H+
YobyKP6GWPSKEpmOLqudZ84hA3NNEgYgCSK+PXDsvZLzZTEY+24r5z5cd9h7ApMeIBXI6OHLHzRJ
qcqn8/maJCv+KQbGkMabo4QlCyJQcKxp0CRgbypC2RF8QgENCfpw8wGBsT6NnyQ39am/aJpcyj8v
LeAGY1tA/+tKQtXKklBUBkdLch1AuCoj4HzOD1AYbXcppd9CErGqlIdnzyNxDKZ8RN4+ngj0xWkg
aVzGNMPSjFRgLgpct8OJt/n0kgNXcRtFd5VJpeJTtBZdLkPyUg2j8Q34xjAtwzI00NtsOBJHdxY7
yfwsaigN6B+q3rXZ+eu9pONs9Z5mVFHtFc/qEHNR6afOrdQjcKqapswUcwpsb4QBaQmvaqqHiagx
M97T24qrKrIODz7jyd/7UnbAiDUp9fmOUYcTnBARb3PcUS1dE8bdJWvKSuxLdgr817lEnf3UaVUA
qasylpwGqIXu0gcwz0mdlraXIivRK002OZyWsVS3ZqiYAlGBdGmEfZhFLdNVbDy1zMDSJ6PTA7tv
IKWDzMy6I9v6wtfdmmOf/EmIT/xT+oFpKQBD5LXl/PIGz55dq+LA3OTCyAqT4bUwedF2S5Nq5F5p
GDrZuTxib1C4YvvsFuW8V1dfGWYaXzaC0HZH2aJTv6xsODwCXyuTACc8OXE/cwEQPstsOMUbaOzh
MHTByIkcZEFZq5YqtGowwp8B95y2NKjcJica1V0kyOAWmhW/dSPekewBpPeKHSH28pCj5pUSerTA
aHqZw0h9GySEV2B675QMWm/edZIeTlKp1NNFqJK7U9W0ZlWiLf7mkuzNY3nAqTqHpgizVvCOI8ny
e8pgaPw9jT0EUzgL9dgtftiGcOE2Xd8+++XYseT7t/nLwsMzLa4VHe+wSqn6haxSU1tVjO9dpb43
ofusYNdV6rpKXVep6yp1XaWuq9TPu0oNti/0GwC7klgiqmUcVmYzeQFKxL2lDq4z7OXOsBfxQt6Y
h/IfGQcb+gxd6zP0/VIzVJxEO9ksLvgHmuHElOfnTEZpf9E12+p8GNI1o+fDkJ6+JAz0MPRLXOzC
TBX49H9QSwMEFAACAAgAFo4YSb83LV6JBAAAByUAADsAHABzdG9yYWdlL2luZGV4ZWRkYi9zZXR2
ZXJzaW9uLW5vdC1ibG9ja2VkLXByaXZhdGUtc3RkZXJyLnR4dFVUCQADbEC+V2xAvld1eAsAAQT1
AQAABBQAAADtWktz2zYQvuuUn8CjNJPM8AmRutlUPNWhVaZ2eodI0OKEBFWQtutLf3vBh0iABKB3
rWR0yMH0vrD77YfFOov5/SMir4jMZtkG4fn9n+jvF5QXPsQBShIUjr7jmH5ZzO/nsIArmCOZpPZF
+zRaXM5e2Mj7GcYoKOIM+0mWV3KGrU8tG3iW4Tqmrg99dDqzWdDTfyBZ6icxwkXpsWfNcMzROIUx
nmiCwHeYGjOWbNsDE9HhY/ya/UDLDSKwNHSHwycCcQ4rs09xish4ckvrz5FW+ZEyRSAPMaGemFiC
8tQDI6JY/h18G0+0sf7PNIoixwOObgB9Utf7gXrMyDstOEpQgbbyWzh0pXzKWmgIJRW/FUS4I0DD
CqsA5ZlbQxwmaF452y3W/NzWPadxPa0RQRqk/wzb86Ye8AxTo0UMY/w8OszUt2yzobWGWGsL+lnD
2ZtWqHzsitp/IYSCu/WkUKAiUUbSRqPOSqtXYzBcCTXrct3D4AcN6ZFCQZXNMA7nQ/mLQNToICrE
4DaS1gcVXLItOJuRphezdFNKhgKRDPNWHl+CAOU5DeWLFtTJ1Ki/vMxinLNcZQPTLg22psI438Ai
WH99bQmJaThrpU+4divpQna4ikqYBtLGn2hubAfYwDap3yFDKRK9s9NQlWcZow0o/VzNZrqXbzbG
x8WarURU12pcZi1ac1nflcllu6jUpKxnurozLdVUPbjs6Z6nJLZrf2S69JWhPHdeQFL8VfeiT4N4
RsyFuWMGIQgWSKY7nEMMYJnSwq3Qc4wZ9QVfimNnjt9RSnmB6rHWht5OmiXOAhPTMvUWJnJ2XrK0
tB83d+EwP9AI/LJ81Ju2nUlpvd7iYt0yM0vLFnC1blDUOtIssRbScRU4K92DU+BEwJqM9odYfRcx
H6owezgSXjHfN88EhugPhEIU7nO1OECnjIbeBN+PuHK4kFuQdLDglOxAoBRkaRoXfK7e4iTxq+/q
HJ3gcIlrPMlQFvTdc5PI4JcD2IvOqHp99A+rGqu2pCdUkvR6oBBmJQVxj3fcGN9U4eyTGG0cwCRZ
0Sgmaq6lzoReeIY16Rx8yvNMQjq+CBHcaVqhUT9FEjALZJbkbpWRHbiPKNKXeMtv10fbvawwRCLg
sPIwzWh8FxWIcBzpNwjc8t+HTcQSUDzEOM7Xv5WpomeXThAHjNT/22DMPqv3PYi4pXstqjAlWMvo
rqumF4W5U7r88IvkutrsQu8azscHDOqGpcw0zoo4eu8Aly+jPsA6cNFnhwNkzVvSDqfa8lPnTSwj
mLHYQWpqgc9aM4LSlEtFjh0keeZjF5M6sHV+FWcjvaddLVH4LBmeqfNCKXxfoWoPumjGpJ6GOzWl
pCjZ7SpJVFaKX3xh3KC5BtN2u9uzu6wZRAhDzocBjqbDM+yy5WW8JG1egoDcK9kUTD1a1aNLc/4L
58idxZ6v+H1XFLfX/tle+1f3bLjtHm67h9vu4bZ7+DV2DydvDLiT5EW2Uf3dXPJ/CXqXUmWDGTEs
0wM73weWabuHvQ+schA/ONDDpKXZubLzSt9D/wFQSwMEFAACAAgAFo4YSYjoMTesBAAAiiUAADMA
HABzdG9yYWdlL2luZGV4ZWRkYi9zZXR2ZXJzaW9uLW5vdC1ibG9ja2VkLXN0ZGVyci50eHRVVAkA
A2xAvldsQL5XdXgLAAEE9QEAAAQUAAAA7VpLc6M4EL77lJ+g25iqmSpexuBbYk9qXbW1ntlk9o5B
2Kpg4RUk2Vz2t28DNkiARJzYk2TWBx8Q/VJ/rU9NJ/PZ1Q1mD5hNJiEJrwkl6fo3n4Yxoau/MEtJ
Qqdrn67wLfNp6gcZLKAv6GLwg5K/7/F8djXzM3/pp3iaUIqL932mcn34GbY+tmzHswx3pLvuYLjx
CdVQy3CfuUGHBqEPyR1ebDHz84guacjFf0s2mA21wbzee7LFdHb1JwY7aTb1aYDjGIddlrsli5R8
IHthC7RpnKSFHA+LqetqoIOG/jVLNtOYYJp1gGyMTAXIPaaGnCXb9hztNbBzq0XGSvFC4JowSMNQ
/2ccRdHIc0a6HeiaIu5E4a0wptBd5/WM989V3Cns+HaNGUY+/Azb88aeaZk6AmxDKP98C9fgJmFP
ACWOcVbZ2ANdg3SbVKB3SiredkTcWhpqfLIMK9Q10OzdcuHsOJlxPMOsMnOYqW/Jdgto+xRVKH5G
NHlEmcpHX9TTe8agbCtPCgUQiRK22WmUWan0CgyG4bKbEwvZKz+4g5BuoBTw4Ob77yTLpfjVyWSF
swX7moJiDBS6tzCnUQIO9kQAniTqbUeoWIInFJEYo08XnxAEG5L0Ts3hs3bIXP0F+alvKXYB+m9f
ERpOUYSyY7CPpPIBggueNicTtuPPZLPNJcMOkYSKVm7ugwCnKYTyBQUlnuihvKcQSXkitB3Tzg1W
piB1Wz8L1l8fKrbj+Mda6ppw4nOKl22uoH/uDKPhBeTGHjm2Y5vgt33rKRLde9hxkWfZLdS6L451
3k339Oed83Gy855XVH3ahcxa+Z0jOfp5coXzCJqGaequPhqD2itpQHmEFw3Xx0HUdu23zLa+NJQ3
POSMZbJmuKc/YtjPsKqRFnskw7FMKe5LvCKUU5+LULy0H5LUS9ObsrMoK+NAQq3j5B7AzTRPWn69
1FWJHkm2ruiU51LLcVHdOqKa6XKEQ2hgndFS9/yxM4ocSxs8H9hyt0KnKD7vE9K6F35sV8wP8R8Y
hzh8zn0wcnSgIfzYsf7+Gs8Db63DW+2mUpBsNiQTkXskcTwt1tWIvcLhgpbVLav5oOleaGZaL1sg
dO1R9XXU3KyqOdwTX6eS5LwHauHDwgVC+KaK4TnZQMPAj+MlBKn1Ths6vYjUakIL/5pvRgnvTbvK
QNhNJTRopkhSwR0yC3a5TFhPsUdQ3gu6p9j3xxyNrHDs0UGj+WZ2LfVllGEm0HSZlIJaL960k5YU
xfPmaIe04j+toZ7/vweCH30ydKLvIcHHG3TohqXMNE0yEj3VBZcuomaB1cUF3xsjR3Z4c9oRVCt+
qr11y3S0eXwvN7acz2jXBUPKpSIv7WVF5uOnpbpj65pYt1hvaBfDFzFLhmfqotDGf1riYjg73/VG
DQ13bEpJUTJwVpKoDIpffIq9q+aymPaT/IbdRckgnWUo+DCcF9PhEf6uIofxlLR5CgJy38mIYOwB
qu95RHCS1vE8dDgPHc5Dh/PQ4Tx0OA8dPujQ4dWjAumQov1/Ic19p1myVc3v5WaO5JS//opVrqGx
TM/p/RqxTNs97GvEytv+F3yNvFWo/wFQSwMEFAACAAgAGI4YSX6qorXLDgAAlmMEADUAHABzdG9y
YWdlL2luZGV4ZWRkYi9zdHJ1Y3R1cmVkLWNsb25lLXByaXZhdGUtc3RkZXJyLnR4dFVUCQADb0C+
V29Avld1eAsAAQT1AQAABBQAAADt3U1X4lgaAOB9reonsNRzps8BREprV4VdPZ45M9bpqu5ZI0Rl
GsEBtLo389snAYEgSUgkWlg+CxeSm8/7kfvkvbk5Pfn4JRjdBaP377u97qfeoDe++nt70O33Bpe/
B6NxbzhoXbUHl8HXUXswbncm4Q+Vnypv3/w26P33Njg9+XjSnrTP2+OgNRwMgunyTZuK1g//ao3q
u4NG8/igdnRYPTp6s3fd7g32K2sb3rS5Nwlr9AZ3wz+Cs5tg1I6O6MOgGzv+r73rYLS3/+Z0ee7D
m2Bw8vHXINzOeNJqDzpBvx90k7acnHJ6SV7Q9rprmdbqD8fTdPFsqVer2RndebD+p9HwutXvBYNJ
QibXDusZmbxhU3uxLTUax839bbI99uv0is2STxN86o3Cy7BX/fPdxcXF4XHzsNroVPczjnuYsbfp
xuLXvROd2tpGkk7lf2u/7e2vHFatWd2fZeqncI/D0V9hrgb9YBLM08/zfJlfX4eL/E9MmbE04Qg3
HGDtoDs9wPQrdxXV5uBkurPNye7/X2TuODyur1fBKKi0w79a4/j43XHzuFavhBWgG7YRb4pt6vPw
5ibM+PagssjQv1UGw2+VSdY+Nh1163Y0CkvwYk8ZK4RJLoaj6/s1Zldlsd40D/a658nN4zTtx3bn
j/CQvoRFIchuS0/W0z9JEa0ti2hiGZwfyWIfYcKzePP1/v3ovh0bXt9EKbsJSYaD1a18ue10gvE4
PJSfKp3Zxazcze4Xld443iA1mvVGtMHFprq98U170rn6+W7R6sQq3MF5dX+lukVNbdrJTZvhWAWq
7L0Nr03jsNloNurhftfvPhkXemNNC6bXOe1usNZul1XZ6kdPX9li+3iyyhaVqGVVW7myB1Hbn1Lv
oosbr0XRmmGrVz+qHr7LvGWEJf/swbrlZEnjqPE9L1f1vJZ53uNJezRJ61Vu6GiMgvYkyOqRrnY2
as2DemrGnQeXvUFs9dPVrHhsx+KfwXXYLoTrxbe2vret+hKlFJP6Qb26KCbprfNZvFnK1zYvDyf2
T3gErSj7wr1V5h3PML++9SZXi5Y53iwfNI8qy95gZdloRmWtG/ZJm4fn1eP2u+bhRfNg/03+Ija7
F610/lb/n3eE1m4xv91cjtrd4F9B0A26eW4th81q2KIF3xJ+f8QtJ9ZLntaDs/P/hBdn1uj8FN5a
Km/Xu7VrKacntvx3nuJ00A3+TLgysaWP6zJvPKCzwaywpRXBxDNIX7hWJzZcjgyKrKdNaUnmDePa
CiltQVL2tbtRPaycfZnXidOTyuFBvVatVsNyf7+l+GZWzitc+1/Bt9gWFw1R1io//9kbR/Vx/ZBX
Ssi3UW8SX/dLVLsyW6Gw2ficdk0KZlBlr9Pu98/Ds9jf+LShlVRUUpq1xLQrh5KUKF5Yy6oL08qV
rxYs6mHSz3ku7CzlpjJ/nypPaZ8lzSzn8SRpLU++8j1NWqhkbzrfhwW14JUsXjgXOZhZLJPb29XF
JRfF4fV1b7J6l/nW6/db09+z755b7HBjsX+4+5XCv7ZwQ8bNzjHr4dPDk80C97weJK6UViMyEqeW
59lKi3Kf2TbPnpDmbZwTjybPRSxU8JP2stpPrx/X6ts8yUurTEmlZ61KJZT8xKN+m5LmbPThfDja
UEcuetHNY95L3r3O/4OrEuuOJvSEo5O5f8Dy4WISjFZ62q370jrvRT+6kzvJyLfkDvtKknCf7fN+
WBk2tTGLhA8KSuKRhLv60O1GTy3Cf++CyiS7Zczod9/cRiWn211b6V5Un2PLU8p3vkBNvMlMPNfM
Cpy0RlLopnqUVIGDQfjL7eawUfFYzWuMU21/133yKEf5jVP6FqdVsL1y+yvpGc6GW/6HjTvO+xDo
Oxptt/Jy2Sn58GS5mt2xCY9gvuvTvA9ld+tJ3TTPN/R2pmnWOjIP1yyrkz+/x226BcfvhWu/ZWfb
IlnGc+tFkuxqvbjjptTeWYTt12krnlAF8y0OOsNR6h7C+r6SYGUDy4V5qtHnYpcv3qFPL2Gf0/os
sWXxvI49O73vLxboETZqsxK1chEug0lah+mXYHJ/fUopu5fzzW0qvJfx/a7/mH39l+nSMzWWJrsA
L69ASvm6fJBg5dLetfu3wafh6B/BX7lK2C9FTzFfGUvPxvjCxFI2jpaOb/uTcIOT0W1nchvmdKs/
HASlFUY8SeDJsz9++nE480xd+rKevu1cV8izQM8C43BD123pWuRxal7mpj92fRyA8zysLYDk53iu
C7ilPY3G3x+Ev1EYM+pQXg/vgp8Hk1EvGP+7N7n6PYJIpBBKpmRKpmRKpmRKpmRKpuRXEeAtbvC8
zt3x0U+UTMmUTMmUTMmUTMmUTMmUTMmULJYslkzJlEzJlEzJlEzJlEzJlEzJlEzJYsliyZRMyZRM
yZRMyZRMyZRMyZRMyZT8qpRcznSQYsmUTMmUTMmUTMmUTMmUTMmUTMmU/NqU/GgLZ9p6CwGLJVMy
JVMyJVMyJVMyJVMyJVMyJVPyd3svmZIpmZIpmZIpmZIpmZIpmZIpmZIpWSyZkimZkimZkimZkimZ
kimZkimZkimZkr2XTMmUTMmUTMmUTMmUTMmUTMmUTMnmuDbHNSVTMiVTMiVTMiVTMiVTMiVTMiWL
JRtxTcmUTMmUTMmUTMmUTMmUTMmUTMliycXlW8y3JQzppmRKpmRKpmRKpmRKpmRKpmRKpmRKpmRK
pmRKpmRKpmRKpmRKpmRKpmRKpmRKpmRKpmRKpmRKpmRKpmRKpmRKpmRK3vHvJZvjmpIpmZIpmZIp
mZIpmZIpmZIpmZLN3mX2LkqmZEqmZEqmZEqmZEqmZEqmZEo24tqIa0qmZEqmZEqmZEqmZEqmZEqm
ZEqmZN9LpmRKpmRKpmRKpmRKpmRKpmRKpmTvJT+ZqI24pmRKpmRKpmRKpmRKpmRKpmRKpmTvJVMy
JVMyJVMyJVMyJVMyJVMyJVMyJb/COa7zz1ZdzjzYifTdYmg3JVMyJVMyJVMyJVMyJVMyJVMyJT+L
krfW7mMvodm7xJIpmZIpmZIpmZIpmZIpmZIpmZLFko24pmRKpmRKpmRKpmRKpmRKpmRKpmRK9iUo
SqZkSqZkSqZkSqZkSqZkSqZkSqbk3Y8l+xIUJVMyJVMyJVMyJVMyJVMyJVMyJZf1XnJe7W73/rJY
MiVTMiVTMiVTMiVTMiVTMiVTMiWb49oc15RMyZRMyZRMyZRMyZRMyZRMyZRsxLUR15RMyZRMyZRM
yZRMyZRMyZRMyZRMyea4pmRKpmRKpmRKpmRKpmRKpmRKpmRKFkumZEqmZEqmZEqmZEqmZEqmZEqm
ZEr2JShKpmRKpmRKpmRKpmRKpmRKpmRKpuSgJJwWiEiXidhyhnY/oG8B2b8kb75M0T+Tknc7I5md
2Zmd2Zmd2Zmd2Zmd2Zmd2Z9nxu0yZ9PeZhptkW2RbZFtSqZkSqZkSqZkSqZkSqZkSjb+2/hvSqZk
SqZkSqZkSqZkSqZkSqZkShZLFkumZEqmZEqmZEqmZEqmZEqmZEqmZN+lEkumZEqmZEqmZEqmZEqm
ZEqmZEqmZN+lomRKpmRKpmRKpmRKpmRKpmRKpmRK/lFjyUZcUzIlUzIlUzIlUzIlUzIlUzIlU7L3
kh8XZRZLpmRKpmRKpmRKpmRKpmRKpmRKpmSzd4klUzIlUzIlUzIlUzIlUzIlUzIlU/JufwmquMG9
l0zJlEzJlEzJlEzJlEzJlEzJlEzJryWWnD8qXE68OZG+W3CckimZkimZkimZkimZkimZkimZkinZ
iGtKpmRKpmRKpmRKpmRKpmRKpmRKNuLa95IpmZIpmZIpmZIpmZIpmZIpmZIp+bsoeWvtPvYSPu17
ycV8m5vh3kumZEqmZEqmZEqmZEqmZEqmZEoWSzbi2ohrSqZkSqZkSqZkSqZkSqZkSqZkSjbi2ohr
SqZkSqZkSqZkSqZkSqZkSqZkSvYlKF+ComRKpmRKpmRKpmRKpmRKpmRKpuQXH0s24pqSKZmSKZmS
KZmSKZmSKZmSKZmSv4uSX+ScV7sd/96mUBWw+nN782WK/pmUvNsPDpid2Zmd2Zmd2Zmd2Zmd2V+s
2X+sWZpf3SzhOzPbd1ktOiVTMiVTMiVTMiVTMiVTMiVTssi2t6R9l8r4b+O/KZmSKZmSKZmSKZmS
KZmSKZmSzSVGyZRMyZRMyZRMyZRMyZRMyZRMyZRMyZRMyZRMyZRMyZRMyZRMyZRMyZRsxu0n/noz
JVMyJVMyJVMyJVMyJVMyJVMyJVOy95K9l0zJlEzJlEzJlEzJlEzJlEzJlEzJYsliyZRMyZRMyZRM
yZRMyZRMyZRMyZRMyZRMyZRMyZRMyZRMyZRMyZRMyZRMyWbvMnsXJVMyJVMyJVMyJVMyJVMyJVMy
JYslFxB1Cn2L+ZmSKZmSKZmSKZmSKZmSKZmSKZmSKdmIa7FkSqZkSqZkSqZkSqZkSqZkSqZkShZL
FkumZEqmZEqmZEqmZEqmZEqmZEqm5F1W8ibvPsLPG+m7taQpmZIpmZIpmZIpmZIpmZIpmZIpmZJf
RCx5VwLEu4fIAs8GiL6UzGB2Zmd2Zmd2Zmd2Zmd2Zmd2Zi/WpuSm9Na+3xSxziX/nDHqcqLfjzF7
KQ7ePd6/TLM/k5J3OyOZndmZndmZndmZndmZndmZXZz9ab6SVWyMeAnD3b2zbTS6yDYlUzIlUzIl
UzIlUzIlUzIlm/+bkimZkimZkimZkimZkimZkimZkil552PJxW1NyZRMyZRMyZRMyZRMyZRMyZRM
yc/yjrCJs34Y2eeZ7WsHxpC/lJz2lrS3pJmd2Zmd2Zmd2Zmd2Zmd2UW2d9e/BWPPucaKb/F45Mln
NtsihC6yLbJNyZRMyZRMya9ayc+xgLRJm7RJm7TNIf4Ec4gXNvO2Hxgzh7jo+I8XHS/Yx/p+nQy3
dbd1g96e+fHlytLxZHiTKF8LLLDAAgvKWpB0XwtvEIPF081We9AJ+v2EKJ8L+MIyaXkbv/912T96
d1A/bq6m6fSH4+BhosbRaqLr9l/nQStKeXrfz364RrWa2n1a68xNN5RxDv8HUEsDBBQAAgAIABmO
GElCB7zy/w0AAD1nBAAtABwAc3RvcmFnZS9pbmRleGVkZGIvc3RydWN0dXJlZC1jbG9uZS1zdGRl
cnIudHh0VVQJAANxQL5XcUC+V3V4CwABBPUBAAAEFAAAAO3dy1PbSB4A4Dsn/gTVXAaqkirbGPO4
JWQyS9XWkJ1k9m5sQbwxMiubPC7zt2/7LWNJtoNJSPY7TE0htbpb3b9+fJIC569evo3Tj3F6etq7
jZNXL/+M/3sX9wdnzaQVd7txe+evpBOOnL96+ao5aF42+3FRyuh5tLtz/nj5tSfpz3pJErcGnV5y
1u31R+mq9crRQb1xclA9PqxVKstlzK85PW3du/512rs563biZDAs8V5u1cPazt5Ns5PsRzkVX5HV
Xianev2ksZ93853kY+9DfHEbp81hRi+S9ru0mfSbo2zfdW7idG+/pAq9kgtfd9LQ4MXXvm8m7W48
/XlWhX6o/Lv3cRpHzfBftX5ycnRSO6hVotBN7U5yPeyU16GYXvol9ErcjQezPKZ9Nm/vd71Z/+Wm
LDmbU+OlQ3v70V7l89HV1dXhSeOwetCu7IcrV97yqLDttEzjpFqbtcxmWb3p3d6G+G0m0awXn0VJ
71M0KCtjVa3P7tI0ROCspJILQpKrXnozuWLcKrPrRn2w177MvXLcXS+brQ+hSm9DKMQ7b//1z85g
mCp79PT0Oh5cpL/1w4XdTv/9NIfz5KoXCpiO6VBSweXLBUWjQ+Gn6KrTjaNfd3+NQmXbnf6Hkjtt
d9qvlqucib/WcAAvXZjXoX+vCsJqYxSERcNgWpNZGSHhRXYGPD1NJ1Nh7+Z2mLKdk6SXLOby9q7V
ivv9UJXnUWvcn1Eorz/syE4/O6fVG7X6MMNZVqHpbpuD1vvfPs4mrvndVA4uK/sLI344Wxfd3Ggm
z4zhaG83tE39sFFv1Guh3P2lBaKkoVcO9njUzkULytLUv63xXjt+/PGeKePRxvswouajfaFlD0Kf
Fw39YeMujMdwZbVWqxxXDo/CZQ+cBkqH8MW9orfTo/Xj+vds7cpltVK2woc2Swf/Hg/ls1CJ6ziz
zq/Y6qRxcxAXXbu83ak2DmqF/X4ZX3eSzOXni13xtVubgni5X1rpzmIcGRtOqPN6Zn4IxZwNG224
vMyjMvrUGbyfTafZufSgcRzNd4HRfKYb9nA77EUbh5eVk+ZR4/CqcbC/s37Hju82c2BUzZwGWVoX
/rq9Tpvt+I84bsftddaDw0YlTEPxp5zjT2/jueGqldmrj8bCxeV/QleN563nYXWKdveX2nkp5aiZ
5z9OU5wn7fhzTj9lzi6dm7XavJ0W6l1vVdao0EUyDv2iAZF7B8Unl3poRXOUgGg5bcFsMp0cly4o
mA/yuq/ZHkZFdPF2OkLPX0X148bhSZjJ6vXypeRNUfkbNka012p2u5ehrvvlc3Eo8yyvWwomtNy0
C1XJS5QNjG3F3SiQ14u4WcznHV6nYccpV8XXJNU6kTVOWhpT42H8PMp26jiKjo6OGs+i8fn5kZ3Z
AhHm1X4vHYdeKCIKNQkb5OiX3V92zsanwox62RnNXVG39ylOow/xl5FYwgQY3YXd4OzIBtG6YXNu
HqGzbiyNzfwJbvH0luOxd3PTGSxO65863e7Z6Hj54vmAAlfG/v3iF0bA0skVHTe+x7JnTvdvtszp
08GQe1HRsChPvFl1M8Gbm+06rbFRBOeVsrjLrZ1Ua1+9XS0ZFXlhsDQ2ckI4t9a7BWku0heXvXRF
sF91hkvBdLf79DZx91ols5HL2dEOb2bydOPF1SBOF3bM40YZ7XJ3H7Q9HJT0W/7GeyFJPJXtqsli
lvBeoOTWJBT1ot0ePjIIP36Mo0H5FFeyY729G0ZOu7100URGbzLnC+L7dScJ1f7HsNdDNxaCNDP3
5d5r6QDOuyLnqXylcpw3gOMkHLmLV04x6w/1jW8/v8B7c1RJVnk3e3xcPr+WZPeQe3/48rnWRU9r
cirOcTQEw75m+09AVqzdL1YWvMkjlB+luef7hheP1vDle49Qg2nR5+s+dfxO62nBjP12+IBpxYZk
lGZpr3H/ym1tqKfL0KpVMrtcLR0r77ZZspIHs7Mk5SNvtiiWvpv6czJvp6P/7z6Lxutw1M9IslGv
H6/IJW710uG77KEH8zM5rFcKM2m222vk0Kg01nss8mazts5u0IvD8U3RHiRzLhsYmWeak/3fBju8
enUcfgu7oOt4ULQB+j0ejBtwO4F+Pc1uVaRfZ8tdPlje/vN0xZ2aSVMe7fMWKH6FsxBjZQF/FNpl
rUj7fdNbXS/WirszezI32vrDs/277iBkOEjvWoO70ONn3V4Sby0osSOHHd/8+dDPw5RvtFXf1uOx
p7V/yslq0PwQ/xF/Hvx5lySho+911WRWnMx3vaT7Jerf3d720kE/qmYHy7PRY95PoeRuGjfbX6L3
zTCaqh4P/ryPB2n2m2r253oay7xbe4ZMxP/vIh5n8ldy14/bL7u9y9ed7iTLPkRDNERDNERDNERD
NERD9OMg+sEY/r5f1UM0REM0REM0REM0REM0REM0REM0RHsTDdEQDdEQDdEQDdEQDdEQDdEQDdEQ
DdEQDdEQDdEQDdEQDdEQDdEQDdEQDdEQvSGiN4HxhuCGaIiGaIiGaIiGaIiGaIiGaIiGaIiGaIiG
aIiGaIiGaIiGaIiGaIiGaIiGaJ9z+5wboiEaoiEaoiEaoiEaoiEaoiEaoiEaoiEaoiEaoiEaoiEa
oiEaoiEaoiEaon3ODdEQDdEQDdEQDdEQDdEQDdEQDdEQ7U00REM0REM0REM0REM0REM0REM0REM0
REM0REM0REM0REM0REM0REM0REM0REM0REM0REM0REM0REM0REM0REM0REP0t0D0gzH8tU0I0RAN
0RAN0RAN0RAN0RAN0RAN0RDtTbRfLAbREA3REA3REA3REA3REA3REA3REO1z7u0g+ulxFPi30sJI
j/RIj/RIj/RIj/RIj/RIj/RI7+NyTPZeHKIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIh
GqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqL9wS2I
hmiIhmiIhmiIhmiIhmiIhmiIhmhvoiEaoiEaoiEaoiEaoiEaoiEaoiEaov3Van+1GqIhGqIhGqIh
GqIhGqIhGqIhGqK9ifYmGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIh
GqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqL9YjGIhmiIhmiI
hmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiI9jm3z7khGqIhGqIhGqIhGqIhGqIh
GqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIh
GqIhGqIhGqIhGqIhGqIh2i8Wg2iIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiI
hmiIhmifc/ucG6IhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIh+ikj+sEY
/tomhGiIhmiIhmiIhmiIhmiIhmiIhmiI9ibam2iIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiI
hmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiI
hmiI9nei/Z1oiIZoiIZoiIZoiIZoiIZoiIZoiPYm2ptoiIZoiIZoiIZoiIZoiIZoiIZoiIZoiIZo
iIZoiIZoiIZoiIZoiIZoiIZoiIZoiIZoiIZoiIZoiIZoiIZoiIZoiIZo/yYaoiEaoiEaoiEaoiEa
oiEaoiEaoiHam2iIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIfjRE
PxjDX9uEEA3REA3REA3REA3REA3REA3REA3R3kR7Ew3REA3REA3REA3REA3REA3REA3REA3REA3R
EA3REA3REA3REA3REA3REO1zbp9zQzREQzREQzREQzREQzREQzREQzREexMN0RAN0RAN0RAN0RAN
0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN
0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0Y+K6E1gvCG4IRqiIRqi
IRqiIRqiIRqiIRqiIRqivYn2JhqiIRqiIRqiIRqiIRqiIRqiIRqi/Z1oiIZoiIZoiIZoiIZoiIZo
iIZoiIZob6J9zg3REA3REA3REA3REA3REA3REA3REA3REA3REA3REA3REA3REA3REA3REA3REA3R
EA3REA3REA3REA3REA3REA3REO3fREM0REM0REM0REM0REM0REM0REM0RPvt3BAN0RAN0RAN0RAN
0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN
0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN
0d8f0d/iBIiDOIiDOIj/0BDfxMbfGu0gDuJPDOIb7lm+36Jt0fppF62f63Hmk5yPFs6GjeNt7pLk
hBM/0Im8SSOMvmT2TOWsmbTibjdua0AnjA1jYxsn5qv15Oh8G3R0UDtpLKZpdXv9+H6i+vFiopvm
l8v4bJjyfLIvvn9FpVK4S1ras40y+ppu/R9QSwMEFAACAAgAGY4YSZiC/NO+BQAAOiUAAC4AHABz
dG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hYm9ydC1zdGRlcnIudHh0VVQJAANxQL5XcUC+
V3V4CwABBPUBAAAEFAAAANVazXOiSBS/e/JP6Nto1aQKsEXxZjSptWprzY6ZvSO0hg2C25Bkctm/
fV6DQAPdDUTdzB5SKZr31e/j9143rpa3G0JfCZ3NwiMJlrffyD8vJIoXduAQ3ydu73vgwcpqebu0
Y3trR0RGiW5Qv7e6njz3RL8Ig4A4sRcGCz+MEjoda5MRNq2RPh0bmlbXUfDMZk6F/56Gh4XvkSBm
GivS9LHRGxxsLxgigeENogacJIwtcyjavBe8hs9kfSTUZoLmgftI7SCyE7GP3oHQwVBhQqhgvPco
OJxzocOsrAkRWfVvbW0wRAPtx2S3240tc6zppjZM43MPGkP6DgEiPolJRp+Fr3D9Y5iHUkipeCuw
sMFAfeQmBso992QHrk+WibJmstNzHqcI7Hp8IpQgG/50bFkTy7R0A0Euu16w73UT9RAej5DKdoDy
gH5FQfiGYpWOJqsXL5RCMuaaFAxAsgvp4cSReiXnS2IwcLdCzjRct7bzDCZtIBVIb/Pn717MqPjV
2WxP4jW9i4DR96KnTMIq2IWgICtv0CRhrytCyRI8oZ3nE/Sl/wWBsa4XPSt26nrusm7yVapEL6pE
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
cWwvVVQJAAP7P75X9UC+V3V4CwABBPUBAAAEFAAAAFBLAwQUAAIACADUjRhJKNl5NrAAAADuAAAA
LQAcAHN0b3JhZ2Uvd2Vic3FsL2FsdGVyLXRvLWluZm8tdGFibGUtc3RkZXJyLnR4dFVUCQAD7z++
V+8/vld1eAsAAQT1AQAABBQAAABlzkELgkAQBeB7v2JOoVBt0CHaW5RdIgQtPe/qGMI6I+Nu0b9P
o07d5vG+B5NkWZppuJGxDsEz+CAETNBSJdgheePABM/Lh6lC6CBaA7EHQ4AiLPFMFexCh4M6Gm9U
UuaqRHtuvco5SIVTOrCgunAd3MieaOtRWjPgZzIdq6rvo812F4MGy+zgO9L6J7TuURqWLu2R9lQX
KG3ziia8+NfJ9BrMx+Z60jr30tId5vHsDVBLAwQUAAIACADUjRhJKNl5NrAAAADuAAAANQAcAHN0
b3JhZ2Uvd2Vic3FsL2NoYW5nZS12ZXJzaW9uLWhhbmRsZS1yZXVzZS1zdGRlcnIudHh0VVQJAAPv
P75X7z++V3V4CwABBPUBAAAEFAAAAGXOQQuCQBAF4Hu/Yk6hUG3QIdpblF0iBC097+oYwjoj427R
v0+jTt3m8b4Hk2RZmmm4kbEOwTP4IARM0FIl2CF548AEz8uHqULoIFoDsQdDgCIs8UwV7EKHgzoa
b1RS5qpEe269yjlIhVM6sKC6cB3cyJ5o61FaM+BnMh2rqu+jzXYXgwbL7OA70vontO5RGpYu7ZH2
VBcobfOKJrz418n0GszH5nrSOvfS0h3m8ewNUEsDBBQAAgAIANSNGEko2Xk2sAAAAO4AAABGABwA
c3RvcmFnZS93ZWJzcWwvY2hhbmdlLXZlcnNpb24tbm8tY3Jhc2gtb24tcHJlZmxpZ2h0LWZhaWx1
cmUtc3RkZXJyLnR4dFVUCQAD7z++V+8/vld1eAsAAQT1AQAABBQAAABlzkELgkAQBeB7v2JOoVBt
0CHaW5RdIgQtPe/qGMI6I+Nu0b9Po07d5vG+B5NkWZppuJGxDsEz+CAETNBSJdgheePABM/Lh6lC
6CBaA7EHQ4AiLPFMFexCh4M6Gm9UUuaqRHtuvco5SIVTOrCgunAd3MieaOtRWjPgZzIdq6rvo812
F4MGy+zgO9L6J7TuURqWLu2R9lQXKG3ziia8+NfJ9BrMx+Z60jr30tId5vHsDVBLAwQUAAIACADU
jRhJx++ozroAAAC4AwAAKAAcAHN0b3JhZ2Uvd2Vic3FsL2NoYW5nZS12ZXJzaW9uLXN0ZGVyci50
eHRVVAkAA+8/vlfvP75XdXgLAAEE9QEAAAQUAAAA7Y8xCsJAEEV7TzGVJKCuYCFuJxobESHRpN5N
JhLYzIRxV/H2JqKVNxC7+cz78F+SpsdUw5mMdQiewQchYIKGSsEWyRsHJnie3kwZQgvRHIg9GAIU
YYlHKmcXWryqrfFGJUWmCrT7xquMg5Q4pA0LqgNXwfXYHW3Vk9Zc8VUZjlnZddFiuYpBg2V28C5p
/SG07lBqlvbYIa2pylGa+hEN8OSbToZpMO4/p53WmZeGLjCOR8nf9m/7E7ZPUEsDBBQAAgAIANSN
GEko2Xk2sAAAAO4AAAAyABwAc3RvcmFnZS93ZWJzcWwvY2xvc2UtZHVyaW5nLXN0cmVzcy10ZXN0
LXN0ZGVyci50eHRVVAkAA/A/vlfwP75XdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXge79iTqFQbdAh
2luUXSIELT3v6hjCOiPjbtG/T6NO3ebxvgeTZFmaabiRsQ7BM/ggBEzQUiXYIXnjwATPy4epQugg
WgOxB0OAIizxTBXsQoeDOhpvVFLmqkR7br3KOUiFUzqwoLpwHdzInmjrUVoz4GcyHauq76PNdheD
Bsvs4DvS+ie07lEali7tkfZUFyht84omvPjXyfQazMfmetI699LSHebx7A1QSwMEFAACAAgA1I0Y
SYbfZ3+2AAAA3AEAADQAHABzdG9yYWdlL3dlYnNxbC9kYXRhYmFzZS1sb2NrLWFmdGVyLXJlbG9h
ZC1zdGRlcnIudHh0VVQJAAPwP75X8D++V3V4CwABBPUBAAAEFAAAAOXPvwrCQAwG8N2nyCQtqCc4
iLeJ1kVEaP0z37WpHFyTkt4pvr2t6OQjuOUjvw+SLM+PuYYzGesRAkOIQsAEjkrBBikYDyYGnt5N
GWMDyRyIAxgCFGFJR+rCPjbYqa0JRmXXQl3R7l1QBUcpcUgbFlQHrqLv2QNt1UtrOnxXhmFWtm2y
WK5S0GCZPXxKWn+F1i1KzdIcW6Q1VRcUVz+TAU9+dTacBuN+c9ppXQRxdINxOsr+6tsXUEsDBBQA
AgAIANSNGEko2Xk2sAAAAO4AAAApABwAc3RvcmFnZS93ZWJzcWwvZW1wdHktc3RhdGVtZW50LXN0
ZGVyci50eHRVVAkAA/A/vlfwP75XdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXge79iTqFQbdAh2luU
XSIELT3v6hjCOiPjbtG/T6NO3ebxvgeTZFmaabiRsQ7BM/ggBEzQUiXYIXnjwATPy4epQuggWgOx
B0OAIizxTBXsQoeDOhpvVFLmqkR7br3KOUiFUzqwoLpwHdzInmjrUVoz4GcyHauq76PNdheDBsvs
4DvS+ie07lEali7tkfZUFyht84omvPjXyfQazMfmetI699LSHebx7A1QSwMEFAACAAgA1Y0YSSjZ
eTawAAAA7gAAACoAHABzdG9yYWdlL3dlYnNxbC9leGVjdXRlLXNxbC1hcmdzLXN0ZGVyci50eHRV
VAkAA/E/vlfxP75XdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXge79iTqFQbdAh2luUXSIELT3v6hjC
OiPjbtG/T6NO3ebxvgeTZFmaabiRsQ7BM/ggBEzQUiXYIXnjwATPy4epQuggWgOxB0OAIizxTBXs
QoeDOhpvVFLmqkR7br3KOUiFUzqwoLpwHdzInmjrUVoz4GcyHauq76PNdheDBsvs4DvS+ie07lEa
li7tkfZUFyht84omvPjXyfQazMfmetI699LSHebx7A1QSwMEFAACAAgA1Y0YSSjZeTawAAAA7gAA
ADIAHABzdG9yYWdlL3dlYnNxbC9leGVjdXRlLXNxbC1yb3dzQWZmZWN0ZWQtc3RkZXJyLnR4dFVU
CQAD8T++V/E/vld1eAsAAQT1AQAABBQAAABlzkELgkAQBeB7v2JOoVBt0CHaW5RdIgQtPe/qGMI6
I+Nu0b9Po07d5vG+B5NkWZppuJGxDsEz+CAETNBSJdgheePABM/Lh6lC6CBaA7EHQ4AiLPFMFexC
h4M6Gm9UUuaqRHtuvco5SIVTOrCgunAd3MieaOtRWjPgZzIdq6rvo812F4MGy+zgO9L6J7TuURqW
Lu2R9lQXKG3ziia8+NfJ9BrMx+Z60jr30tId5vHsDVBLAwQUAAIACADVjRhJKNl5NrAAAADuAAAA
PwAcAHN0b3JhZ2Uvd2Vic3FsL2V4ZWN1dGVzcWwtYWNjZXB0cy1vbmx5LW9uZS1zdGF0ZW1lbnQt
c3RkZXJyLnR4dFVUCQAD8T++V/E/vld1eAsAAQT1AQAABBQAAABlzkELgkAQBeB7v2JOoVBt0CHa
W5RdIgQtPe/qGMI6I+Nu0b9Po07d5vG+B5NkWZppuJGxDsEz+CAETNBSJdgheePABM/Lh6lC6CBa
A7EHQ4AiLPFMFexCh4M6Gm9UUuaqRHtuvco5SIVTOrCgunAd3MieaOtRWjPgZzIdq6rvo812F4MG
y+zgO9L6J7TuURqWLu2R9lQXKG3ziia8+NfJ9BrMx+Z60jr30tId5vHsDVBLAwQUAAIACADWjRhJ
KNl5NrAAAADuAAAALgAcAHN0b3JhZ2Uvd2Vic3FsL2hhc2gtY2hhbmdlLXdpdGgteGhyLXN0ZGVy
ci50eHRVVAkAA/M/vlfzP75XdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXge79iTqFQbdAh2luUXSIE
LT3v6hjCOiPjbtG/T6NO3ebxvgeTZFmaabiRsQ7BM/ggBEzQUiXYIXnjwATPy4epQuggWgOxB0OA
IizxTBXsQoeDOhpvVFLmqkR7br3KOUiFUzqwoLpwHdzInmjrUVoz4GcyHauq76PNdheDBsvs4DvS
+ie07lEali7tkfZUFyht84omvPjXyfQazMfmetI699LSHebx7A1QSwMEFAACAAgA1o0YSYbfZ3+2
AAAA3AEAAD8AHABzdG9yYWdlL3dlYnNxbC9tdWx0aXBsZS1kYXRhYmFzZXMtZ2FyYmFnZS1jb2xs
ZWN0aW9uLXN0ZGVyci50eHRVVAkAA/M/vlfzP75XdXgLAAEE9QEAAAQUAAAA5c+/CsJADAbw3afI
JC2oJziIt4nWRURo/TPftakcXJOS3im+va3o5CO45SO/D5Isz4+5hjMZ6xECQ4hCwASOSsEGKRgP
Jgae3k0ZYwPJHIgDGAIUYUlH6sI+NtiprQlGZddCXdHuXVAFRylxSBsWVAeuou/ZA23VS2s6fFeG
YVa2bbJYrlLQYJk9fEpaf4XWLUrN0hxbpDVVFxRXP5MBT351NpwG435z2mldBHF0g3E6yv7q2xdQ
SwMEFAACAAgA1o0YSUTqVta5AAAAygIAAEQAHABzdG9yYWdlL3dlYnNxbC9tdWx0aXBsZS10cmFu
c2FjdGlvbnMtb24tZGlmZmVyZW50LWhhbmRsZXMtc3RkZXJyLnR4dFVUCQAD9D++V/Q/vld1eAsA
AQT1AQAABBQAAADtz78KwkAMBvDdp8gkLagnOIi3idZFpND6Z75rUylck5LeKb69rejkG4hbQn4f
5EuyLM00nMhYh+AZfBACJqipEGyQvHFggufpzRQhNBDNgdiDIUARlnikzuxCg53aGm9UcsnVBe2+
9irnIAUO24YF1YHL4Hp2R1v20poOX5FhmBVtGy2Wqxg0WGYH75DWH6F1i1KxNGmLtKbyjFJXj2jA
k2+dDK/BuL8cd1rnXmq6wjgeJf+2P9v2CVBLAwQUAAIACADWjRhJKNl5NrAAAADuAAAALwAcAHN0
b3JhZ2Uvd2Vic3FsL211bHRpcGxlLXRyYW5zYWN0aW9ucy1zdGRlcnIudHh0VVQJAAP0P75X9D++
V3V4CwABBPUBAAAEFAAAAGXOQQuCQBAF4Hu/Yk6hUG3QIdpblF0iBC097+oYwjoj427Rv0+jTt3m
8b4Hk2RZmmm4kbEOwTP4IARM0FIl2CF548AEz8uHqULoIFoDsQdDgCIs8UwV7EKHgzoab1RS5qpE
e269yjlIhVM6sKC6cB3cyJ5o61FaM+BnMh2rqu+jzXYXgwbL7OA70vontO5RGpYu7ZH2VBcobfOK
Jrz418n0GszH5nrSOvfS0h3m8ewNUEsDBBQAAgAIANaNGEko2Xk2sAAAAO4AAAAoABwAc3RvcmFn
ZS93ZWJzcWwvbnVsbC1jYWxsYmFja3Mtc3RkZXJyLnR4dFVUCQAD9D++V/Q/vld1eAsAAQT1AQAA
BBQAAABlzkELgkAQBeB7v2JOoVBt0CHaW5RdIgQtPe/qGMI6I+Nu0b9Po07d5vG+B5NkWZppuJGx
DsEz+CAETNBSJdgheePABM/Lh6lC6CBaA7EHQ4AiLPFMFexCh4M6Gm9UUuaqRHtuvco5SIVTOrCg
unAd3MieaOtRWjPgZzIdq6rvo812F4MGy+zgO9L6J7TuURqWLu2R9lQXKG3ziia8+NfJ9BrMx+Z6
0jr30tId5vHsDVBLAwQUAAIACADWjRhJht9nf7YAAADcAQAASAAcAHN0b3JhZ2Uvd2Vic3FsL29w
ZW4tZGF0YWJhc2UtY3JlYXRpb24tY2FsbGJhY2staXNvbGF0ZWQtd29ybGQtc3RkZXJyLnR4dFVU
CQAD9D++V/Q/vld1eAsAAQT1AQAABBQAAADlz78KwkAMBvDdp8gkLagnOIi3idZFRGj9M9+1qRxc
k5LeKb69rejkI7jlI78PkizPj7mGMxnrEQJDiELABI5KwQYpGA8mBp7eTRljA8kciAMYAhRhSUfq
wj422KmtCUZl10Jd0e5dUAVHKXFIGxZUB66i79kDbdVLazp8V4ZhVrZtsliuUtBgmT18Slp/hdYt
Ss3SHFukNVUXFFc/kwFPfnU2nAbjfnPaaV0EcXSDcTrK/urbF1BLAwQUAAIACADWjRhJx++ozroA
AAC4AwAAOQAcAHN0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJhc2UtY3JlYXRpb24tY2FsbGJhY2st
c3RkZXJyLnR4dFVUCQAD9D++V/Q/vld1eAsAAQT1AQAABBQAAADtjzEKwkAQRXtPMZUkoK5gIW4n
GhsRIdGk3k0mEtjMhHFX8fYmopU3ELv5zPvwX5Kmx1TDmYx1CJ7BByFggoZKwRbJGwcmeJ7eTBlC
C9EciD0YAhRhiUcqZxdavKqt8UYlRaYKtPvGq4yDlDikDQuqA1fB9dgdbdWT1lzxVRmOWdl10WK5
ikGDZXbwLmn9IbTuUGqW9tghranKUZr6EQ3w5JtOhmkw7j+nndaZl4YuMI5Hyd/2b/sTtk9QSwME
FAACAAgA140YSSjZeTawAAAA7gAAADUAHABzdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLWVt
cHR5LXZlcnNpb24tc3RkZXJyLnR4dFVUCQAD9T++V/U/vld1eAsAAQT1AQAABBQAAABlzkELgkAQ
BeB7v2JOoVBt0CHaW5RdIgQtPe/qGMI6I+Nu0b9Po07d5vG+B5NkWZppuJGxDsEz+CAETNBSJdgh
eePABM/Lh6lC6CBaA7EHQ4AiLPFMFexCh4M6Gm9UUuaqRHtuvco5SIVTOrCgunAd3MieaOtRWjPg
ZzIdq6rvo812F4MGy+zgO9L6J7TuURqWLu2R9lQXKG3ziia8+NfJ9BrMx+Z60jr30tId5vHsDVBL
AwQUAAIACADXjRhJKNl5NrAAAADuAAAANAAcAHN0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJhc2Ut
ZXhwYW5kLXF1b3RhLXN0ZGVyci50eHRVVAkAA/U/vlf1P75XdXgLAAEE9QEAAAQUAAAAZc5BC4JA
EAXge79iTqFQbdAh2luUXSIELT3v6hjCOiPjbtG/T6NO3ebxvgeTZFmaabiRsQ7BM/ggBEzQUiXY
IXnjwATPy4epQuggWgOxB0OAIizxTBXsQoeDOhpvVFLmqkR7br3KOUiFUzqwoLpwHdzInmjrUVoz
4GcyHauq76PNdheDBsvs4DvS+ie07lEali7tkfZUFyht84omvPjXyfQazMfmetI699LSHebx7A1Q
SwMEFAACAAgA140YSYbfZ3+2AAAA3AEAADkAHABzdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNl
LXNldC1lbXB0eS12ZXJzaW9uLXN0ZGVyci50eHRVVAkAA/U/vlf1P75XdXgLAAEE9QEAAAQUAAAA
5c+/CsJADAbw3afIJC2oJziIt4nWRURo/TPftakcXJOS3im+va3o5CO45SO/D5Isz4+5hjMZ6xEC
Q4hCwASOSsEGKRgPJgae3k0ZYwPJHIgDGAIUYUlH6sI+NtiprQlGZddCXdHuXVAFRylxSBsWVAeu
ou/ZA23VS2s6fFeGYVa2bbJYrlLQYJk9fEpaf4XWLUrN0hxbpDVVFxRXP5MBT351NpwG435z2mld
BHF0g3E6yv7q2xdQSwMEFAACAAgA140YSYbfZ3+2AAAA3AEAAEUAHABzdG9yYWdlL3dlYnNxbC9v
cGVuLWRhdGFiYXNlLXdoaWxlLXRyYW5zYWN0aW9uLWluLXByb2dyZXNzLXN0ZGVyci50eHRVVAkA
A/Y/vlf2P75XdXgLAAEE9QEAAAQUAAAA5c+/CsJADAbw3afIJC2oJziIt4nWRURo/TPftakcXJOS
3im+va3o5CO45SO/D5Isz4+5hjMZ6xECQ4hCwASOSsEGKRgPJgae3k0ZYwPJHIgDGAIUYUlH6sI+
NtiprQlGZddCXdHuXVAFRylxSBsWVAeuou/ZA23VS2s6fFeGYVa2bbJYrlLQYJk9fEpaf4XWLUrN
0hxbpDVVFxRXP5MBT351NpwG435z2mldBHF0g3E6yv7q2xdQSwMEFAACAAgA140YSSjZeTawAAAA
7gAAADkAHABzdG9yYWdlL3dlYnNxbC9wcml2YXRlLWJyb3dzaW5nLW5vcmVhZC1ub3dyaXRlLXN0
ZGVyci50eHRVVAkAA/Y/vlf2P75XdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXge79iTqFQbdAh2luU
XSIELT3v6hjCOiPjbtG/T6NO3ebxvgeTZFmaabiRsQ7BM/ggBEzQUiXYIXnjwATPy4epQuggWgOx
B0OAIizxTBXsQoeDOhpvVFLmqkR7br3KOUiFUzqwoLpwHdzInmjrUVoz4GcyHauq76PNdheDBsvs
4DvS+ie07lEali7tkfZUFyht84omvPjXyfQazMfmetI699LSHebx7A1QSwMEFAACAAgA140YSUTq
Vta5AAAAygIAAEcAHABzdG9yYWdlL3dlYnNxbC9yZWFkLWFuZC13cml0ZS10cmFuc2FjdGlvbnMt
ZG9udC1ydW4tdG9nZXRoZXItc3RkZXJyLnR4dFVUCQAD9j++V/Y/vld1eAsAAQT1AQAABBQAAADt
z78KwkAMBvDdp8gkLagnOIi3idZFpND6Z75rUylck5LeKb69rejkG4hbQn4f5EuyLM00nMhYh+AZ
fBACJqipEGyQvHFggufpzRQhNBDNgdiDIUARlnikzuxCg53aGm9UcsnVBe2+9irnIAUO24YF1YHL
4Hp2R1v20poOX5FhmBVtGy2Wqxg0WGYH75DWH6F1i1KxNGmLtKbyjFJXj2jAk2+dDK/BuL8cd1rn
Xmq6wjgeJf+2P9v2CVBLAwQUAAIACADXjRhJht9nf7YAAADcAQAAQAAcAHN0b3JhZ2Uvd2Vic3Fs
L3JlYWQtdHJhbnNhY3Rpb25zLXJ1bm5pbmctY29uY3VycmVudGx5LXN0ZGVyci50eHRVVAkAA/Y/
vlf2P75XdXgLAAEE9QEAAAQUAAAA5c+/CsJADAbw3afIJC2oJziIt4nWRURo/TPftakcXJOS3im+
va3o5CO45SO/D5Isz4+5hjMZ6xECQ4hCwASOSsEGKRgPJgae3k0ZYwPJHIgDGAIUYUlH6sI+Ntip
rQlGZddCXdHuXVAFRylxSBsWVAeuou/ZA23VS2s6fFeGYVa2bbJYrlLQYJk9fEpaf4XWLUrN0hxb
pDVVFxRXP5MBT351NpwG435z2mldBHF0g3E6yv7q2xdQSwMEFAACAAgA140YSSjZeTawAAAA7gAA
ACgAHABzdG9yYWdlL3dlYnNxbC9zcWwtZGF0YS10eXBlcy1zdGRlcnIudHh0VVQJAAP2P75X9j++
V3V4CwABBPUBAAAEFAAAAGXOQQuCQBAF4Hu/Yk6hUG3QIdpblF0iBC097+oYwjoj427Rv0+jTt3m
8b4Hk2RZmmm4kbEOwTP4IARM0FIl2CF548AEz8uHqULoIFoDsQdDgCIs8UwV7EKHgzoab1RS5qpE
e269yjlIhVM6sKC6cB3cyJ5o61FaM+BnMh2rqu+jzXYXgwbL7OA70vontO5RGpYu7ZH2VBcobfOK
Jrz418n0GszH5nrSOvfS0h3m8ewNUEsDBBQAAgAIANiNGEmG32d/tgAAANwBAABBABwAc3RvcmFn
ZS93ZWJzcWwvc3RhdGVtZW50LWVycm9yLWNhbGxiYWNrLWlzb2xhdGVkLXdvcmxkLXN0ZGVyci50
eHRVVAkAA/c/vlf3P75XdXgLAAEE9QEAAAQUAAAA5c+/CsJADAbw3afIJC2oJziIt4nWRURo/TPf
takcXJOS3im+va3o5CO45SO/D5Isz4+5hjMZ6xECQ4hCwASOSsEGKRgPJgae3k0ZYwPJHIgDGAIU
YUlH6sI+NtiprQlGZddCXdHuXVAFRylxSBsWVAeuou/ZA23VS2s6fFeGYVa2bbJYrlLQYJk9fEpa
f4XWLUrN0hxbpDVVFxRXP5MBT351NpwG435z2mldBHF0g3E6yv7q2xdQSwMEFAACAAgA2I0YSSjZ
eTawAAAA7gAAADIAHABzdG9yYWdlL3dlYnNxbC9zdGF0ZW1lbnQtZXJyb3ItY2FsbGJhY2stc3Rk
ZXJyLnR4dFVUCQAD9z++V/c/vld1eAsAAQT1AQAABBQAAABlzkELgkAQBeB7v2JOoVBt0CHaW5Rd
IgQtPe/qGMI6I+Nu0b9Po07d5vG+B5NkWZppuJGxDsEz+CAETNBSJdgheePABM/Lh6lC6CBaA7EH
Q4AiLPFMFexCh4M6Gm9UUuaqRHtuvco5SIVTOrCgunAd3MieaOtRWjPgZzIdq6rvo812F4MGy+zg
O9L6J7TuURqWLu2R9lQXKG3ziia8+NfJ9BrMx+Z60jr30tId5vHsDVBLAwQUAAIACADYjRhJht9n
f7YAAADcAQAAQwAcAHN0b3JhZ2Uvd2Vic3FsL3N0YXRlbWVudC1zdWNjZXNzLWNhbGxiYWNrLWlz
b2xhdGVkLXdvcmxkLXN0ZGVyci50eHRVVAkAA/c/vlf3P75XdXgLAAEE9QEAAAQUAAAA5c+/CsJA
DAbw3afIJC2oJziIt4nWRURo/TPftakcXJOS3im+va3o5CO45SO/D5Isz4+5hjMZ6xECQ4hCwASO
SsEGKRgPJgae3k0ZYwPJHIgDGAIUYUlH6sI+NtiprQlGZddCXdHuXVAFRylxSBsWVAeuou/ZA23V
S2s6fFeGYVa2bbJYrlLQYJk9fEpaf4XWLUrN0hxbpDVVFxRXP5MBT351NpwG435z2mldBHF0g3E6
yv7q2xdQSwMEFAACAAgA2I0YSSjZeTawAAAA7gAAACoAHABzdG9yYWdlL3dlYnNxbC9zdWNjZXNz
LWNhbGxiYWNrLXN0ZGVyci50eHRVVAkAA/g/vlf4P75XdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXg
e79iTqFQbdAh2luUXSIELT3v6hjCOiPjbtG/T6NO3ebxvgeTZFmaabiRsQ7BM/ggBEzQUiXYIXnj
wATPy4epQuggWgOxB0OAIizxTBXsQoeDOhpvVFLmqkR7br3KOUiFUzqwoLpwHdzInmjrUVoz4Gcy
Hauq76PNdheDBsvs4DvS+ie07lEali7tkfZUFyht84omvPjXyfQazMfmetI699LSHebx7A1QSwME
FAACAAgA2I0YSSjZeTawAAAA7gAAAEMAHABzdG9yYWdlL3dlYnNxbC9zdWNjZXNzLWNhbGxiYWNr
LXdoZW4tcGFnZS1kZWZlcnMtbG9hZGluZy1zdGRlcnIudHh0VVQJAAP4P75X+D++V3V4CwABBPUB
AAAEFAAAAGXOQQuCQBAF4Hu/Yk6hUG3QIdpblF0iBC097+oYwjoj427Rv0+jTt3m8b4Hk2RZmmm4
kbEOwTP4IARM0FIl2CF548AEz8uHqULoIFoDsQdDgCIs8UwV7EKHgzoab1RS5qpEe269yjlIhVM6
sKC6cB3cyJ5o61FaM+BnMh2rqu+jzXYXgwbL7OA70vontO5RGpYu7ZH2VBcobfOKJrz418n0GszH
5nrSOvfS0h3m8ewNUEsDBBQAAgAIANmNGEko2Xk2sAAAAO4AAAApABwAc3RvcmFnZS93ZWJzcWwv
dGVzdC1hdXRob3JpemVyLXN0ZGVyci50eHRVVAkAA/k/vlf5P75XdXgLAAEE9QEAAAQUAAAAZc5B
C4JAEAXge79iTqFQbdAh2luUXSIELT3v6hjCOiPjbtG/T6NO3ebxvgeTZFmaabiRsQ7BM/ggBEzQ
UiXYIXnjwATPy4epQuggWgOxB0OAIizxTBXsQoeDOhpvVFLmqkR7br3KOUiFUzqwoLpwHdzInmjr
UVoz4GcyHauq76PNdheDBsvs4DvS+ie07lEali7tkfZUFyht84omvPjXyfQazMfmetI699LSHebx
7A1QSwMEFAACAAgA2Y0YSSjZeTawAAAA7gAAAD4AHABzdG9yYWdlL3dlYnNxbC90cmFuc2FjdGlv
bi1jYWxsYmFjay1leGNlcHRpb24tY3Jhc2gtc3RkZXJyLnR4dFVUCQAD+T++V/k/vld1eAsAAQT1
AQAABBQAAABlzkELgkAQBeB7v2JOoVBt0CHaW5RdIgQtPe/qGMI6I+Nu0b9Po07d5vG+B5NkWZpp
uJGxDsEz+CAETNBSJdgheePABM/Lh6lC6CBaA7EHQ4AiLPFMFexCh4M6Gm9UUuaqRHtuvco5SIVT
OrCgunAd3MieaOtRWjPgZzIdq6rvo812F4MGy+zgO9L6J7TuURqWLu2R9lQXKG3ziia8+NfJ9BrM
x+Z60jr30tId5vHsDVBLAwQUAAIACADZjRhJht9nf7YAAADcAQAAPQAcAHN0b3JhZ2Uvd2Vic3Fs
L3RyYW5zYWN0aW9uLWNhbGxiYWNrLWlzb2xhdGVkLXdvcmxkLXN0ZGVyci50eHRVVAkAA/k/vlf5
P75XdXgLAAEE9QEAAAQUAAAA5c+/CsJADAbw3afIJC2oJziIt4nWRURo/TPftakcXJOS3im+va3o
5CO45SO/D5Isz4+5hjMZ6xECQ4hCwASOSsEGKRgPJgae3k0ZYwPJHIgDGAIUYUlH6sI+NtiprQlG
ZddCXdHuXVAFRylxSBsWVAeuou/ZA23VS2s6fFeGYVa2bbJYrlLQYJk9fEpaf4XWLUrN0hxbpDVV
FxRXP5MBT351NpwG435z2mldBHF0g3E6yv7q2xdQSwMEFAACAAgA2Y0YSYbfZ3+2AAAA3AEAAEMA
HABzdG9yYWdlL3dlYnNxbC90cmFuc2FjdGlvbi1lcnJvci1jYWxsYmFjay1pc29sYXRlZC13b3Js
ZC1zdGRlcnIudHh0VVQJAAP6P75X+j++V3V4CwABBPUBAAAEFAAAAOXPvwrCQAwG8N2nyCQtqCc4
iLeJ1kVEaP0z37WpHFyTkt4pvr2t6OQjuOUjvw+SLM+PuYYzGesRAkOIQsAEjkrBBikYDyYGnt5N
GWMDyRyIAxgCFGFJR+rCPjbYqa0JRmXXQl3R7l1QBUcpcUgbFlQHrqLv2QNt1UtrOnxXhmFWtm2y
WK5S0GCZPXxKWn+F1i1KzdIcW6Q1VRcUVz+TAU9+dTacBuN+c9ppXQRxdINxOsr+6tsXUEsDBBQA
AgAIANmNGEko2Xk2sAAAAO4AAAA0ABwAc3RvcmFnZS93ZWJzcWwvdHJhbnNhY3Rpb24tZXJyb3It
Y2FsbGJhY2stc3RkZXJyLnR4dFVUCQAD+j++V/o/vld1eAsAAQT1AQAABBQAAABlzkELgkAQBeB7
v2JOoVBt0CHaW5RdIgQtPe/qGMI6I+Nu0b9Po07d5vG+B5NkWZppuJGxDsEz+CAETNBSJdgheePA
BM/Lh6lC6CBaA7EHQ4AiLPFMFexCh4M6Gm9UUuaqRHtuvco5SIVTOrCgunAd3MieaOtRWjPgZzId
q6rvo812F4MGy+zgO9L6J7TuURqWLu2R9lQXKG3ziia8+NfJ9BrMx+Z60jr30tId5vHsDVBLAwQU
AAIACADZjRhJKNl5NrAAAADuAAAALwAcAHN0b3JhZ2Uvd2Vic3FsL3RyYW5zYWN0aW9uLXByb3Rv
dHlwZS1zdGRlcnIudHh0VVQJAAP6P75X+j++V3V4CwABBPUBAAAEFAAAAGXOQQuCQBAF4Hu/Yk6h
UG3QIdpblF0iBC097+oYwjoj427Rv0+jTt3m8b4Hk2RZmmm4kbEOwTP4IARM0FIl2CF548AEz8uH
qULoIFoDsQdDgCIs8UwV7EKHgzoab1RS5qpEe269yjlIhVM6sKC6cB3cyJ5o61FaM+BnMh2rqu+j
zXYXgwbL7OA70vontO5RGpYu7ZH2VBcobfOKJrz418n0GszH5nrSOvfS0h3m8ewNUEsDBBQAAgAI
ANqNGEmG32d/tgAAANwBAABFABwAc3RvcmFnZS93ZWJzcWwvdHJhbnNhY3Rpb24tc3VjY2Vzcy1j
YWxsYmFjay1pc29sYXRlZC13b3JsZC1zdGRlcnIudHh0VVQJAAP7P75X+z++V3V4CwABBPUBAAAE
FAAAAOXPvwrCQAwG8N2nyCQtqCc4iLeJ1kVEaP0z37WpHFyTkt4pvr2t6OQjuOUjvw+SLM+PuYYz
GesRAkOIQsAEjkrBBikYDyYGnt5NGWMDyRyIAxgCFGFJR+rCPjbYqa0JRmXXQl3R7l1QBUcpcUgb
FlQHrqLv2QNt1UtrOnxXhmFWtm2yWK5S0GCZPXxKWn+F1i1KzdIcW6Q1VRcUVz+TAU9+dTacBuN+
c9ppXQRxdINxOsr+6tsXUEsDBAoAAAAAABuOGEkAAAAAAAAAAAAAAAAEABwAc3ZnL1VUCQADdUC+
V/VAvld1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAG44YSQAAAAAAAAAAAAAAAAsAHABzdmcvY3Vz
dG9tL1VUCQADdUC+V/VAvld1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAG44YSb3Awop/AAAAjQAA
ACQAHABzdmcvY3VzdG9tL3plcm8tZGFzaGFycmF5LXN0ZGVyci50eHRVVAkAA3VAvld1QL5XdXgL
AAEE9QEAAAQUAAAADcjNDsFAFAbQvaf4XkBjtEomIpFWbKywE4tLv9Bkekdup/6enuU56+GGaQE3
98XCz3Lw1TuXZyFeJaAeusee2tCORp7KonSTM5Ybs2grj2pbRU18pwPTrlXW0t89Wn1KaBs0f0HM
5OMhCYHSJ0QlGNhRE7rhHxdCo46/tJiNflBLAwQKAAAAAADrjRhJAAAAAAAAAAAAAAAACwAcAHN2
Zy9zdHJva2UvVVQJAAMaQL5X9UC+V3V4CwABBPUBAAAEFAAAAFBLAwQUAAIACADrjRhJa7KmaH8A
AACNAAAAJQAcAHN2Zy9zdHJva2UvemVyby13aWR0aC1oYW5nLXN0ZGVyci50eHRVVAkAAxpAvlca
QL5XdXgLAAEE9QEAAAQUAAAADcjNCoJAFAbQfU/xvUDCmCgMEYRKm1bVLlrc8qOE8U5cx/6ePpfn
bKc78gKu8kXl8xx8j86tshBvEtBMw/NA7WgnI89lUbrygnVrFm3jUe/qqImfdGTa98pGxodHry8J
fYduFsRMvh6SEChjQlSCgQM1YZjmuBIadfmjxWzxB1BLAwQKAAAAAAAkjhhJAAAAAAAAAAAAAAAA
BgAcAHdlYmdsL1VUCQADhEC+V/VAvld1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAJI4YSQAAAAAA
AAAAAAAAAAwAHAB3ZWJnbC8xLjAuMi9VVAkAA4RAvlf1QL5XdXgLAAEE9QEAAAQUAAAAUEsDBAoA
AAAAACSOGEkAAAAAAAAAAAAAAAAYABwAd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2UvVVQJAAOEQL5X
9UC+V3V4CwABBPUBAAAEFAAAAFBLAwQKAAAAAAAkjhhJAAAAAAAAAAAAAAAAIQAcAHdlYmdsLzEu
MC4yL2NvbmZvcm1hbmNlL3RleHR1cmVzL1VUCQADhEC+V/VAvld1eAsAAQT1AQAABBQAAABQSwME
FAACAAgAJI4YSaPuh6Z3AAAAdAEAADgAHAB3ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS90ZXh0dXJl
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
AABfd3B0X2NlcnRzL2luZGV4LnR4dC5hdHRyLm9sZFVUBQADPD6+V3V4CwABBPUBAAAEFAAAAFBL
AQIeAwoAAgAAAOyMGElwbM06NwAAADcAAAAYABgAAAAAAAEAAACkgR0kAABfd3B0X2NlcnRzL2lu
ZGV4LnR4dC5vbGRVVAUAAzw+vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADsjBhJaRg5bwYF
AACPBgAAGAAYAAAAAAABAAAApIGmJAAAX3dwdF9jZXJ0cy9sb2NhbGhvc3Qua2V5VVQFAAM8Pr5X
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA7IwYSZRXouXnCQAAOxIAABgAGAAAAAAAAQAAAKSB
/ikAAF93cHRfY2VydHMvbG9jYWxob3N0LnBlbVVUBQADPD6+V3V4CwABBPUBAAAEFAAAAFBLAQIe
AwoAAgAAAOyMGEl22LGkBwAAAAcAAAARABgAAAAAAAEAAACkgTc0AABfd3B0X2NlcnRzL3Nlcmlh
bFVUBQADPD6+V3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAAOyMGEm1i5yPBwAAAAcAAAAVABgA
AAAAAAEAAACkgYk0AABfd3B0X2NlcnRzL3NlcmlhbC5vbGRVVAUAAzw+vld1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACACHjRhJt4nNjSB5AQAlEw4ADgAYAAAAAAABAAAApIHfNAAAYWNjZXNzX2xv
Zy50eHRVVAUAA10/vld1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAAjRhJAAAAAAAAAAAAAAAA
DAAYAAAAAAAAABAA7UFHrgEAY29tcG9zaXRpbmcvVVQFAANgPr5XdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgAAAAAA8owYSQAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1Bja4BAGNvbXBvc2l0aW5nL3Jl
Z2lvbnMvVVQFAANIPr5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA8owYSTiedDKsAAAAFAMA
AEUAGAAAAAAAAQAAAKSB264BAGNvbXBvc2l0aW5nL3JlZ2lvbnMvd2Via2l0LWZsb3ctcmVuZGVy
ZXItbGF5ZXItY29tcG9zaXRpbmctc3RkZXJyLnR4dFVUBQADSD6+V3V4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAACNGElpqxBRvwAAAPIGAAA8ABgAAAAAAAEAAACkgQawAQBjb21wb3NpdGluZy9z
aG93LWNvbXBvc2l0ZWQtaWZyYW1lLW9uLWJhY2stYnV0dG9uLXN0ZGVyci50eHRVVAUAA2A+vld1
eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADwjBhJAAAAAAAAAAAAAAAAEgAYAAAAAAAAABAA7UE7
sQEAY29tcG9zaXRpbmcvdmlkZW8vVVQFAANEPr5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
8IwYSQD0r3fCAAAA8gYAADIAGAAAAAAAAQAAAKSBh7EBAGNvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVv
LWNsaXAtY2hhbmdlLXNyYy1zdGRlcnIudHh0VVQFAANEPr5XdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAA+IwYSQAAAAAAAAAAAAAAAA0AGAAAAAAAAAAQAO1BtbIBAGRpc3BsYXlsaXN0cy9VVAUA
A1Q+vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD4jBhJo1f96FAAAACOAAAAMgAYAAAAAAAB
AAAApIH8sgEAZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy10cmFuc2Zvcm1zLXN0ZGVyci50
eHRVVAUAA1Q+vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD4jBhJ8paV1UcAAABJAAAAKQAY
AAAAAAABAAAApIG4swEAZGlzcGxheWxpc3RzL2xheWVyLWRpc3BheS1saXN0LXN0ZGVyci50eHRV
VAUAA1Q+vld1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAALjRhJAAAAAAAAAAAAAAAACAAYAAAA
AAAAABAA7UFitAEAZWRpdGluZy9VVAUAA3U+vld1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAX
jRhJAAAAAAAAAAAAAAAAEwAYAAAAAAAAABAA7UGktAEAZWRpdGluZy9wYXN0ZWJvYXJkL1VUBQAD
jj6+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAAuNGEl+qfEg6QAAAIIBAAAwABgAAAAAAAEA
AACkgfG0AQBlZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1yZXNvbHZlcy11cmxzLXN0ZGVyci50eHRV
VAUAA3U+vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAXjRhJVxgTSdoAAABQAQAALAAYAAAA
AAABAAAApIFEtgEAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLW5vcGx1Z2luLXN0ZGVyci50eHRV
VAUAA40+vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAXjRhJVxgTSdoAAABQAQAAMgAYAAAA
AAABAAAApIGEtwEAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLW5vcGx1Z2luLXhodG1sLXN0ZGVy
ci50eHRVVAUAA40+vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAXjRhJd02LHeMAAAB3AQAA
LAAYAAAAAAABAAAApIHKuAEAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLW5vc2NyaXB0LXN0ZGVy
ci50eHRVVAUAA44+vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAXjRhJSi4+MOIAAAB7AQAA
MgAYAAAAAAABAAAApIETugEAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLW5vc2NyaXB0LXhodG1s
LXN0ZGVyci50eHRVVAUAA44+vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABIjhhJNkstDFwK
AACENgAADQAYAAAAAAABAAAApIFhuwEAZXJyb3JfbG9nLnR4dFVUBQADyEC+V3V4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAAGaNGEkAAAAAAAAAAAAAAAAFABgAAAAAAAAAEADtQQTGAQBmYXN0L1VU
BQADID++V3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAACWNGEkAAAAAAAAAAAAAAAAMABgAAAAA
AAAAEADtQUPGAQBmYXN0L2NhbnZhcy9VVAUAA6U+vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAAgjRhJWKN01q4AAADeAwAATAAYAAAAAAABAAAApIGJxgEAZmFzdC9jYW52YXMvY2FudmFzLWNz
cy1zaXplLWFmdGVyLWhlaWdodC1jaGFuZ2Utd2l0aC1kaXNwbGF5LWZsZXgtc3RkZXJyLnR4dFVU
BQADmz6+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACWNGEmFwLjThwAAABoBAAAmABgAAAAA
AAEAAACkgb3HAQBmYXN0L2NhbnZhcy9jYW52YXMtbGluZURhc2gtc3RkZXJyLnR4dFVUBQADpT6+
V3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAIWNGEkAAAAAAAAAAAAAAAAJABgAAAAAAAAAEADt
QaTIAQBmYXN0L2Nzcy9VVAUAA1o/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABbjRhJqTb7
v6cAAAAqAgAAKAAYAAAAAAABAAAApIHnyAEAZmFzdC9jc3MvcGFyc2luZy1jc3Mtbm9uYXNjaWkt
YWN0dWFsLnR4dFVUBQADDj++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFuNGEmbquwd8wAA
AMQBAAAmABgAAAAAAAEAAACkgfDJAQBmYXN0L2Nzcy9wYXJzaW5nLWNzcy1ub25hc2NpaS1kaWZm
LnR4dFVUBQADDj++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFuNGElz/MWnoQAAACgCAAAq
ABgAAAAAAAEAAACkgUPLAQBmYXN0L2Nzcy9wYXJzaW5nLWNzcy1ub25hc2NpaS1leHBlY3RlZC50
eHRVVAUAAw4/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABcjRhJGbTWKy4IAAAsHwAALgAY
AAAAAAABAAAApIFIzAEAZmFzdC9jc3MvcGFyc2luZy1jc3Mtbm9uYXNjaWktcHJldHR5LWRpZmYu
aHRtbFVUBQADDz++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHONGElC0Bh3sQAAAM4BAAA2
ABgAAAAAAAEAAACkgd7UAQBmYXN0L2Nzcy9wZXJzcGVjdGl2ZS1vcmlnaW4taW5pdGlhbC1pbmhl
cml0LXN0ZGVyci50eHRVVAUAAzo/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACFjRhJZTlq
Py8CAAB7CAAAKAAYAAAAAAABAAAApIH/1QEAZmFzdC9jc3Mvc2VsZWN0b3ItdGV4dC1lc2NhcGUt
YWN0dWFsLnR4dFVUBQADWj++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIWNGEkUzTd9DwEA
AFUDAAAmABgAAAAAAAEAAACkgZDYAQBmYXN0L2Nzcy9zZWxlY3Rvci10ZXh0LWVzY2FwZS1kaWZm
LnR4dFVUBQADWj++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIWNGElhsq96CgIAAEwIAAAq
ABgAAAAAAAEAAACkgf/ZAQBmYXN0L2Nzcy9zZWxlY3Rvci10ZXh0LWVzY2FwZS1leHBlY3RlZC50
eHRVVAUAA1o/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACFjRhJOV/SaXcIAADIHwAALgAY
AAAAAAABAAAApIFt3AEAZmFzdC9jc3Mvc2VsZWN0b3ItdGV4dC1lc2NhcGUtcHJldHR5LWRpZmYu
aHRtbFVUBQADWj++V3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAB2NGEkAAAAAAAAAAAAAAAAJ
ABgAAAAAAAAAEADtQUzlAQBmYXN0L2RvbS9VVAUAA5o+vld1eAsAAQT1AQAABBQAAABQSwECHgMK
AAAAAAAdjRhJAAAAAAAAAAAAAAAAGgAYAAAAAAAAABAA7UGP5QEAZmFzdC9kb20vTXV0YXRpb25P
YnNlcnZlci9VVAUAA5o+vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAdjRhJKNl5NrAAAADu
AAAAPwAYAAAAAAABAAAApIHj5QEAZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9kYXRhYmFzZS1j
YWxsYmFjay1kZWxpdmVyeS1zdGRlcnIudHh0VVQFAAOaPr5XdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAAJI0YSQAAAAAAAAAAAAAAAAsAGAAAAAAAAAAQAO1BDOcBAGZhc3QvZm9ybXMvVVQFAAOk
Pr5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAJI0YSS5f2O97AQAA+DkAADMAGAAAAAAAAQAA
AKSBUecBAGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0ZS1wYXR0ZXJuTWlzbWF0Y2gtc3RkZXJyLnR4
dFVUBQADpD6+V3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAGaNGEkAAAAAAAAAAAAAAAAMABgA
AAAAAAAAEADtQTnpAQBmYXN0L2ZyYW1lcy9VVAUAAyA/vld1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACABmjRhJKNl5NrAAAADuAAAALwAYAAAAAAABAAAApIF/6QEAZmFzdC9mcmFtZXMvc2FuZGJv
eGVkLWlmcmFtZS1zdG9yYWdlLXN0ZGVyci50eHRVVAUAAyA/vld1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAAAAAAtjRhJAAAAAAAAAAAAAAAADQAYAAAAAAAAABAA7UGY6gEAZmFzdC9oaXN0b3J5L1VU
BQADtT6+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAC2NGEko2Xk2sAAAAO4AAABAABgAAAAA
AAEAAACkgd/qAQBmYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS13ZWJkYXRhYmFzZS1uby10cmFuc2Fj
dGlvbi1kYi1zdGRlcnIudHh0VVQFAAO1Pr5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAMo0Y
SQAAAAAAAAAAAAAAAAwAGAAAAAAAAAAQAO1BCewBAGZhc3QvaW1hZ2VzL1VUBQADwD6+V3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIADKNGEkhj704MgAAADMAAAAsABgAAAAAAAEAAACkgU/sAQBm
YXN0L2ltYWdlcy9wZGYtYXMtaW1hZ2UtY3JvcC1ib3gtc3RkZXJyLnR4dFVUBQADwD6+V3V4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAAEKNGEkAAAAAAAAAAAAAAAAOABgAAAAAAAAAEADtQefsAQBm
YXN0L292ZXJmbG93L1VUBQAD2z6+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEGNGEnq/kak
6gAAADYBAAA1ABgAAAAAAAEAAACkgS/tAQBmYXN0L292ZXJmbG93L2hvcml6b250YWwtc2Nyb2xs
LWFmdGVyLWJhY2stYWN0dWFsLnR4dFVUBQAD2j6+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AEGNGEnDcxoCXgEAAEQCAAAzABgAAAAAAAEAAACkgYjuAQBmYXN0L292ZXJmbG93L2hvcml6b250
YWwtc2Nyb2xsLWFmdGVyLWJhY2stZGlmZi50eHRVVAUAA9o+vld1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAIAAABBjRhJ7nAgwgUAAAAFAAAANwAYAAAAAAABAAAApIFT8AEAZmFzdC9vdmVyZmxvdy9o
b3Jpem9udGFsLXNjcm9sbC1hZnRlci1iYWNrLWV4cGVjdGVkLnR4dFVUBQAD2j6+V3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAEKNGEncErtXJwgAAOgaAAA7ABgAAAAAAAEAAACkgcnwAQBmYXN0
L292ZXJmbG93L2hvcml6b250YWwtc2Nyb2xsLWFmdGVyLWJhY2stcHJldHR5LWRpZmYuaHRtbFVU
BQAD2z6+V3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAEWNGEkAAAAAAAAAAAAAAAAJABgAAAAA
AAAAEADtQWX5AQBmYXN0L3hzbC9VVAUAA+E+vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABD
jRhJcv1l8oUAAADpAAAAJQAYAAAAAAABAAAApIGo+QEAZmFzdC94c2wvdHJhbnNmb3JtLXhoci1k
b2Mtc3RkZXJyLnR4dFVUBQAD3j6+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAESNGEnOCSgC
jQAAAPAAAAAnABgAAAAAAAEAAACkgYz6AQBmYXN0L3hzbC94c2x0LWJhZC1pbXBvcnQtdXJpLXN0
ZGVyci50eHRVVAUAA98+vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABEjRhJz49mDlAAAACg
AAAAJAAYAAAAAAABAAAApIF6+wEAZmFzdC94c2wveHNsdC1jb250ZW50VHlwZS1zdGRlcnIudHh0
VVQFAAPfPr5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgARY0YSYFKd61LAAAArAAAADQAGAAA
AAAAAQAAAKSBKPwBAGZhc3QveHNsL3hzbHQtdHJhbnNmb3JtLXRvLWZyYWdtZW50LWNyYXNoLXN0
ZGVyci50eHRVVAUAA+E+vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABgjhhJrLjPRoQBAACK
AgAAEQAYAAAAAAABAAAApIHh/AEAZnVsbF9yZXN1bHRzLmpzb25VVAUAA/NAvld1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAABGjRhJAAAAAAAAAAAAAAAABQAYAAAAAAAAABAA7UGw/gEAaHR0cC9V
VAUAA+M+vld1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABljRhJAAAAAAAAAAAAAAAACwAYAAAA
AAAAABAA7UHv/gEAaHR0cC90ZXN0cy9VVAUAAx4/vld1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AABJjRhJAAAAAAAAAAAAAAAAEQAYAAAAAAAAABAA7UE0/wEAaHR0cC90ZXN0cy9jYWNoZS9VVAUA
A+k+vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABJjRhJ2grRbO8AAACJBAAAMAAYAAAAAAAB
AAAApIF//wEAaHR0cC90ZXN0cy9jYWNoZS9tZW1vcnktY2FjaGUtcHJ1bmluZy1zdGRlcnIudHh0
VVQFAAPpPr5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgASY0YSaimVzyEAAAAwAAAAD0AGAAA
AAAAAQAAAKSB2AACAGh0dHAvdGVzdHMvY2FjaGUvbmV0d29yay1lcnJvci1kdXJpbmctcmV2YWxp
ZGF0aW9uLXN0ZGVyci50eHRVVAUAA+k+vld1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABGjRhJ
AAAAAAAAAAAAAAAAEgAYAAAAAAAAABAA7UHTAQIAaHR0cC90ZXN0cy9jYW52YXMvVVQFAAPjPr5X
dXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAARo0YSQAAAAAAAAAAAAAAABgAGAAAAAAAAAAQAO1B
HwICAGh0dHAvdGVzdHMvY2FudmFzL3dlYmdsL1VUBQAD4z6+V3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAEaNGEnGLa/wywAAADcCAAA7ABgAAAAAAAEAAACkgXECAgBodHRwL3Rlc3RzL2NhbnZh
cy93ZWJnbC9vcmlnaW4tY2xlYW4tY29uZm9ybWFuY2Utc3RkZXJyLnR4dFVUBQAD4z6+V3V4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAAEeNGEkAAAAAAAAAAAAAAAAvABgAAAAAAAAAEADtQbEDAgBo
dHRwL3Rlc3RzL2NvbnRlbnRkaXNwb3NpdGlvbmF0dGFjaG1lbnRzYW5kYm94L1VUBQAD5j6+V3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEeNGEll0RmIfwAAAJUAAABRABgAAAAAAAEAAACkgRoE
AgBodHRwL3Rlc3RzL2NvbnRlbnRkaXNwb3NpdGlvbmF0dGFjaG1lbnRzYW5kYm94L3JlZmVyZXIt
aGVhZGVyLXN0cmlwcGVkLXN0ZGVyci50eHRVVAUAA+Y+vld1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACABGjRhJZdEZiH8AAACVAAAAagAYAAAAAAABAAAApIEkBQIAaHR0cC90ZXN0cy9jb250ZW50
ZGlzcG9zaXRpb25hdHRhY2htZW50c2FuZGJveC9yZWZlcmVyLWhlYWRlci1zdHJpcHBlZC13aXRo
LW1ldGEtcmVmZXJlci1hbHdheXMtc3RkZXJyLnR4dFVUBQAD5D6+V3V4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAEaNGEll0RmIfwAAAJUAAABrABgAAAAAAAEAAACkgUcGAgBodHRwL3Rlc3RzL2Nv
bnRlbnRkaXNwb3NpdGlvbmF0dGFjaG1lbnRzYW5kYm94L3JlZmVyZXItaGVhZGVyLXN0cmlwcGVk
LXdpdGgtbWV0YS1yZWZlcmVyLWRlZmF1bHQtc3RkZXJyLnR4dFVUBQAD5D6+V3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAEeNGEll0RmIfwAAAJUAAABpABgAAAAAAAEAAACkgWsHAgBodHRwL3Rl
c3RzL2NvbnRlbnRkaXNwb3NpdGlvbmF0dGFjaG1lbnRzYW5kYm94L3JlZmVyZXItaGVhZGVyLXN0
cmlwcGVkLXdpdGgtbWV0YS1yZWZlcmVyLW5ldmVyLXN0ZGVyci50eHRVVAUAA+U+vld1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABHjRhJZdEZiH8AAACVAAAAbwAYAAAAAAABAAAApIGNCAIAaHR0
cC90ZXN0cy9jb250ZW50ZGlzcG9zaXRpb25hdHRhY2htZW50c2FuZGJveC9yZWZlcmVyLWhlYWRl
ci1zdHJpcHBlZC13aXRoLW1ldGEtcmVmZXJlci1uby1yZWZlcnJlci1zdGRlcnIudHh0VVQFAAPl
Pr5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAR40YSWXRGYh/AAAAlQAAAH4AGAAAAAAAAQAA
AKSBtQkCAGh0dHAvdGVzdHMvY29udGVudGRpc3Bvc2l0aW9uYXR0YWNobWVudHNhbmRib3gvcmVm
ZXJlci1oZWFkZXItc3RyaXBwZWQtd2l0aC1tZXRhLXJlZmVyZXItbm8tcmVmZXJyZXItd2hlbi1k
b3duZ3JhZGUtc3RkZXJyLnR4dFVUBQAD5T6+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEeN
GEll0RmIfwAAAJUAAABqABgAAAAAAAEAAACkgewKAgBodHRwL3Rlc3RzL2NvbnRlbnRkaXNwb3Np
dGlvbmF0dGFjaG1lbnRzYW5kYm94L3JlZmVyZXItaGVhZGVyLXN0cmlwcGVkLXdpdGgtbWV0YS1y
ZWZlcmVyLW9yaWdpbi1zdGRlcnIudHh0VVQFAAPlPr5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAR40YSWXRGYh/AAAAlQAAAG4AGAAAAAAAAQAAAKSBDwwCAGh0dHAvdGVzdHMvY29udGVudGRp
c3Bvc2l0aW9uYXR0YWNobWVudHNhbmRib3gvcmVmZXJlci1oZWFkZXItc3RyaXBwZWQtd2l0aC1t
ZXRhLXJlZmVyZXItdW5zYWZlLXVybC1zdGRlcnIudHh0VVQFAAPmPr5XdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAARo0YSQAAAAAAAAAAAAAAAA8AGAAAAAAAAAAQAO1BNg0CAGh0dHAvdGVzdHMv
Y3NzL1VUBQAD5D6+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEaNGEnI+W+DgwAAAMAAAAAu
ABgAAAAAAAEAAACkgX8NAgBodHRwL3Rlc3RzL2Nzcy9ib3JkZXItaW1hZ2UtbG9hZGluZy1zdGRl
cnIudHh0VVQFAAPkPr5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAVo0YSQAAAAAAAAAAAAAA
ABEAGAAAAAAAAAAQAO1Bag4CAGh0dHAvdGVzdHMvbWVkaWEvVVQFAAMDP75XdXgLAAEE9QEAAAQU
AAAAUEsBAh4DCgAAAAAATI0YSQAAAAAAAAAAAAAAABoAGAAAAAAAAAAQAO1BtQ4CAGh0dHAvdGVz
dHMvbWVkaWEvY2xlYXJrZXkvVVQFAAPwPr5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgATI0Y
SXv7X7hSAQAAfwMAADkAGAAAAAAAAQAAAKSBCQ8CAGh0dHAvdGVzdHMvbWVkaWEvY2xlYXJrZXkv
Y2xlYXIta2V5LWhscy1hZXMxMjgtc3RkZXJyLnR4dFVUBQAD8D6+V3V4CwABBPUBAAAEFAAAAFBL
AQIeAwoAAAAAAFKNGEkAAAAAAAAAAAAAAAAVABgAAAAAAAAAEADtQc4QAgBodHRwL3Rlc3RzL21l
ZGlhL2hscy9VVAUAA/s+vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABNjRhJ5S/LSEkCAAC9
BQAARQAYAAAAAAABAAAApIEdEQIAaHR0cC90ZXN0cy9tZWRpYS9obHMvaGxzLWFjY2Vzc2libGl0
eS1kZXNjcmliZXMtdmlkZW8tbWVudS1zdGRlcnIudHh0VVQFAAPxPr5XdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgATY0YSchtun/IAQAAnwUAAEAAGAAAAAAAAQAAAKSB5RMCAGh0dHAvdGVzdHMv
bWVkaWEvaGxzL2hscy1hY2Nlc3NpYmxpdHktZGVzY3JpYmVzLXZpZGVvLXN0ZGVyci50eHRVVAUA
A/E+vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABNjRhJcAdVucYBAABFBQAAOgAYAAAAAAAB
AAAApIEnFgIAaHR0cC90ZXN0cy9tZWRpYS9obHMvaGxzLWF1ZGlvLXRyYWNrcy1oYXMtYXVkaW8t
c3RkZXJyLnR4dFVUBQAD8j6+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAE6NGEkkkWkbyQEA
AJ8FAABBABgAAAAAAAEAAACkgWEYAgBodHRwL3Rlc3RzL21lZGlhL2hscy9obHMtYXVkaW8tdHJh
Y2tzLWxvY2FsZS1zZWxlY3Rpb24tc3RkZXJyLnR4dFVUBQAD8z6+V3V4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAE6NGElfzTatxQEAAEUFAAAwABgAAAAAAAEAAACkgaUaAgBodHRwL3Rlc3RzL21l
ZGlhL2hscy9obHMtYXVkaW8tdHJhY2tzLXN0ZGVyci50eHRVVAUAA/M+vld1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACABOjRhJ/BuOOTABAADeAwAALAAYAAAAAAABAAAApIHUHAIAaHR0cC90ZXN0
cy9tZWRpYS9obHMvaGxzLXByb2dyZXNzLXN0ZGVyci50eHRVVAUAA/Q+vld1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACABPjRhJIuqLfisBAACEAwAAMAAYAAAAAAABAAAApIFqHgIAaHR0cC90ZXN0
cy9tZWRpYS9obHMvaGxzLXZpZGVvLXJlc2l6ZS1zdGRlcnIudHh0VVQFAAP1Pr5XdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAUI0YSa53l81+AQAAKgYAADoAGAAAAAAAAQAAAKSB/x8CAGh0dHAv
dGVzdHMvbWVkaWEvaGxzL3ZpZGVvLWNvbnRyb2xzLWxpdmUtc3RyZWFtLXN0ZGVyci50eHRVVAUA
A/c+vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABSjRhJtt/oza0CAACGPgAAPAAYAAAAAAAB
AAAApIHxIQIAaHR0cC90ZXN0cy9tZWRpYS9obHMvdmlkZW8tZHVyYXRpb24tYWNjZXNzaWJpbGl0
eS1zdGRlcnIudHh0VVQFAAP7Pr5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgATI0YSdfMBM3M
AAAANwIAADIAGAAAAAAAAQAAAKSBFCUCAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtZG9jdW1lbnQt
cmVmZXJlci1zdGRlcnIudHh0VVQFAAPwPr5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgATY0Y
SX62O0PgAAAArAIAACoAGAAAAAAAAQAAAKSBTCYCAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtZG9j
dW1lbnQtc3RkZXJyLnR4dFVUBQAD8T6+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAE6NGEn6
jA1T6gAAAMYDAAA5ABgAAAAAAAEAAACkgZAnAgBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXBsYXkt
c3RyZWFtLWNodW5rZWQtaWN5LXN0ZGVyci50eHRVVAUAA/M+vld1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAAAAABcjRhJAAAAAAAAAAAAAAAAHgAYAAAAAAAAABAA7UHtKAIAaHR0cC90ZXN0cy9tZWRp
YS9tZWRpYS1zb3VyY2UvVVQFAAMPP75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAUY0YSTJ2
/P9NAQAAnQQAAEIAGAAAAAAAAQAAAKSBRSkCAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNl
L21lZGlhc291cmNlLWFwcGVuZC1idWZmZXItc3RkZXJyLnR4dFVUBQAD+j6+V3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAFONGEmuNB5KPQEAAHsDAABQABgAAAAAAAEAAACkgQ4rAgBodHRwL3Rl
c3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLW1wNC12LWJp
dHJhdGUtc3RkZXJyLnR4dFVUBQAD/T6+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFSNGEke
Bf3aPQEAAHsDAABSABgAAAAAAAEAAACkgdUsAgBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJj
ZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLW1wNC12LWZyYW1lcmF0ZS1zdGRlcnIudHh0VVQF
AAP/Pr5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAWI0YSZPieS2LAAAAnAAAADkAGAAAAAAA
AQAAAKSBni4CAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXBsYXkt
c3RkZXJyLnR4dFVUBQADBz++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFqNGEmmnBgjqAAA
AAwDAAA7ABgAAAAAAAEAAACkgZwvAgBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRp
YXNvdXJjZS1yZW1vdmUtc3RkZXJyLnR4dFVUBQADCz++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAFyNGEnXlukipAAAANQBAABGABgAAAAAAAEAAACkgbkwAgBodHRwL3Rlc3RzL21lZGlhL21l
ZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1zb3VyY2VidWZmZXItbW9kZS1zdGRlcnIudHh0VVQFAAMP
P75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgATo0YSU2fjTjsAAAAXwEAAC0AGAAAAAAAAQAA
AKSB3TECAGh0dHAvdGVzdHMvbWVkaWEvcGRmLXNlcnZlZC1hcy1wZGYtc3RkZXJyLnR4dFVUBQAD
9D6+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAE+NGElMKvDgwAAAAJIBAAAvABgAAAAAAAEA
AACkgTAzAgBodHRwL3Rlc3RzL21lZGlhL3JlbG9hZC1hZnRlci1kaWFsb2ctc3RkZXJyLnR4dFVU
BQAD9T6+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAE+NGEnTbwOyRwEAAHQCAAAvABgAAAAA
AAEAAACkgVk0AgBodHRwL3Rlc3RzL21lZGlhL3RleHQtc2VydmVkLWFzLXRleHQtc3RkZXJyLnR4
dFVUBQAD9j6+V3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAE2NGEkAAAAAAAAAAAAAAAAXABgA
AAAAAAAAEADtQQk2AgBodHRwL3Rlc3RzL21lZGlhL3RyYWNrL1VUBQAD8j6+V3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAE2NGEnI8gkNhAAAAMAAAAA9ABgAAAAAAAEAAACkgVo2AgBodHRwL3Rl
c3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbG93LWxvYWRpbmctMi1zdGRlcnIudHh0VVQF
AAPyPr5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAUI0YSXSv1EoFAQAAeAMAADYAGAAAAAAA
AQAAAKSBVTcCAGh0dHAvdGVzdHMvbWVkaWEvdHJhY2staW4tYmFuZC1obHMtbWV0YWRhdGEtc3Rk
ZXJyLnR4dFVUBQAD+D6+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFKNGEmDHHQUfAEAAHAH
AAAmABgAAAAAAAEAAACkgco4AgBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWF1dGgtc3RkZXJyLnR4
dFVUBQAD+z6+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFONGElRP+3G4QAAAKwCAAAtABgA
AAAAAAEAAACkgaY6AgBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWVycm9yLWFib3J0LXN0ZGVyci50
eHRVVAUAA/0+vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABTjRhJQeE9KRMBAADjAQAANgAY
AAAAAAABAAAApIHuOwIAaHR0cC90ZXN0cy9tZWRpYS92aWRlby1lcnJvci1kb2VzLW5vdC1leGlz
dC1zdGRlcnIudHh0VVQFAAP9Pr5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAU40YScGLwhfD
AAAAJAMAACwAGAAAAAAAAQAAAKSBcT0CAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tbG9hZC10d2lj
ZS1zdGRlcnIudHh0VVQFAAP+Pr5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAU40YSakBGczi
AAAAbAMAAC8AGAAAAAAAAQAAAKSBmj4CAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcGxheS1wcm9n
cmVzcy1zdGRlcnIudHh0VVQFAAP+Pr5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAVY0YSZYi
NOaEAAAAwAAAAD0AGAAAAAAAAQAAAKSB5T8CAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcGxheS1z
dGFsbC1iZWZvcmUtbWV0YS1kYXRhLXN0ZGVyci50eHRVVAUAAwI/vld1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACABVjRhJ6Fn+D7cAAACSAQAAKwAYAAAAAAABAAAApIHgQAIAaHR0cC90ZXN0cy9t
ZWRpYS92aWRlby1xdWVyeS11cmwtc3RkZXJyLnR4dFVUBQADAj++V3V4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAFaNGEndR2Aa8wAAAFgFAAAqABgAAAAAAAEAAACkgfxBAgBodHRwL3Rlc3RzL21l
ZGlhL3ZpZGVvLXJlZGlyZWN0LXN0ZGVyci50eHRVVAUAAwM/vld1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABWjRhJW5Mc0d0AAABSAgAAKwAYAAAAAAABAAAApIFTQwIAaHR0cC90ZXN0cy9tZWRp
YS92aWRlby11c2VyYWdlbnQtc3RkZXJyLnR4dFVUBQADAz++V3V4CwABBPUBAAAEFAAAAFBLAQIe
AwoAAAAAAHaNGEkAAAAAAAAAAAAAAAAQABgAAAAAAAAAEADtQZVEAgBodHRwL3Rlc3RzL21pc2Mv
VVQFAAM/P75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAVY0YSV6E9GnmAAAAYgEAAC0AGAAA
AAAAAQAAAKSB30QCAGh0dHAvdGVzdHMvbWlzYy9jb3B5LXJlc29sdmVzLXVybHMtc3RkZXJyLnR4
dFVUBQADAj++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFaNGEkbyE17xQAAAP8AAAA/ABgA
AAAAAAEAAACkgSxGAgBodHRwL3Rlc3RzL21pc2MvZGVsZXRlLWZyYW1lLWR1cmluZy1yZWFkeXN0
YXRlY2hhbmdlLXN0ZGVyci50eHRVVAUAAwM/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABW
jRhJntMhcMQAAAD/AAAAWwAYAAAAAAABAAAApIFqRwIAaHR0cC90ZXN0cy9taXNjL2RlbGV0ZS1m
cmFtZS1kdXJpbmctcmVhZHlzdGF0ZWNoYW5nZS13aXRoLWdjLWFmdGVyLXZpZGVvLXJlbW92YWwt
c3RkZXJyLnR4dFVUBQADAz++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHaNGEkVNTWSegAA
ALwAAAAqABgAAAAAAAEAAACkgcNIAgBodHRwL3Rlc3RzL21pc2MveHNsdC1iYWQtaW1wb3J0LXN0
ZGVyci50eHRVVAUAAz8/vld1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABujRhJAAAAAAAAAAAA
AAAAFAAYAAAAAAAAABAA7UGhSQIAaHR0cC90ZXN0cy9zZWN1cml0eS9VVAUAAzA/vld1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABQjRhJowjJ0MoAAADdAQAAVQAYAAAAAAABAAAApIHvSQIAaHR0
cC90ZXN0cy9zZWN1cml0eS9jYW52YXMtcmVtb3RlLXJlYWQtcmVtb3RlLXZpZGVvLWJsb2NrZWQt
bm8tY3Jvc3NvcmlnaW4tc3RkZXJyLnR4dFVUBQAD+D6+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAFCNGEk3h5fm2gAAAKwCAABIABgAAAAAAAEAAACkgUhLAgBodHRwL3Rlc3RzL3NlY3VyaXR5
L2NhbnZhcy1yZW1vdGUtcmVhZC1yZW1vdGUtdmlkZW8tbG9jYWxob3N0LXN0ZGVyci50eHRVVAUA
A/g+vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABRjRhJQ6SF9OIAAACsAgAARwAYAAAAAAAB
AAAApIGkTAIAaHR0cC90ZXN0cy9zZWN1cml0eS9jYW52YXMtcmVtb3RlLXJlYWQtcmVtb3RlLXZp
ZGVvLXJlZGlyZWN0LXN0ZGVyci50eHRVVAUAA/o+vld1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AABpjRhJAAAAAAAAAAAAAAAAKgAYAAAAAAAAABAA7UEHTgIAaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvVVQFAAMlP75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
UI0YSSHMuB7YAAAA+AEAAEsAGAAAAAAAAQAAAKSBa04CAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L2F1ZGlvLXJlZGlyZWN0LWFsbG93ZWQtc3RkZXJyLnR4dFVUBQAD
9z6+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFCNGEkhzLge2AAAAPgBAABMABgAAAAAAAEA
AACkgchPAgBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9hdWRpby1y
ZWRpcmVjdC1hbGxvd2VkMi1zdGRlcnIudHh0VVQFAAP3Pr5XdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAUI0YSdqpNXunAAAAigEAAFgAGAAAAAAAAQAAAKSBJlECAGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L2Jsb2ItdXJsLWRvZXMtbm90LW1hdGNoLXNvdXJjZS1z
ZWxmLXN0ZGVyci50eHRVVAUAA/c+vld1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABSjRhJAAAA
AAAAAAAAAAAARAAYAAAAAAAAABAA7UFfUgIAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvdXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0cy9VVAUAA/w+vld1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABSjRhJYGJeUegAAAAmAwAAeQAYAAAAAAABAAAApIHdUgIAaHR0cC90
ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXBncmFkZS1pbnNlY3VyZS1yZXF1
ZXN0cy91cGdyYWRlLWluc2VjdXJlLWF1ZGlvLXZpZGVvLWluLW1haW4tZnJhbWUtc3RkZXJyLnR4
dFVUBQAD/D6+V3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAFSNGEkAAAAAAAAAAAAAAAA9ABgA
AAAAAAAAEADtQXhUAgBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91
c2VyQWdlbnRTaGFkb3dET00vVVQFAAP/Pr5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAUY0Y
SVPALW42AQAA0QIAAFMAGAAAAAAAAQAAAKSB71QCAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9hbGxvdy1hdWRpby1zdGRlcnIudHh0
VVQFAAP6Pr5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAVI0YSWgTiAAAAQAA+wEAAFMAGAAA
AAAAAQAAAKSBslYCAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Vz
ZXJBZ2VudFNoYWRvd0RPTS9hbGxvdy12aWRlby1zdGRlcnIudHh0VVQFAAP/Pr5XdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAVI0YSSSEWfWEAAAAwAAAAIIAGAAAAAAAAQAAAKSBP1gCAGh0dHAv
dGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9i
bG9jay1sb2FkaW5nLXVzZXItYWdlbnQtaW1hZ2UtZnJvbS1ub24tdXNlci1hZ2VudC1jb250ZW50
LXN0ZGVyci50eHRVVAUAA/8+vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABmjRhJxyRY+94A
AABSAgAASwAYAAAAAAABAAAApIF/WQIAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvdmlkZW8tcmVkaXJlY3QtYWxsb3dlZC1zdGRlcnIudHh0VVQFAAMfP75XdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAZo0YSf1BZJS+AAAAkgEAAEwAGAAAAAAAAQAAAKSB4loCAGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3ZpZGVvLXJlZGlyZWN0LWFs
bG93ZWQyLXN0ZGVyci50eHRVVAUAAx8/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABmjRhJ
xyRY+94AAABSAgAAZgAYAAAAAAABAAAApIEmXAIAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvdmlkZW8td2l0aC1odHRwLXVybC1hbGxvd2VkLWJ5LWNzcC1tZWRpYS1z
cmMtc3Rhci1zdGRlcnIudHh0VVQFAAMfP75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZo0Y
SZXzPMGEAAAAwAAAAFkAGAAAAAAAAQAAAKSBpF0CAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L3dvcmtlci1ibG9iLWluaGVyaXRzLWNzcC1ibG9ja3MtZXZhbC1zdGRl
cnIudHh0VVQFAAMgP75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAaI0YSWOqrGyCAAAAqAAA
AEAAGAAAAAAAAQAAAKSBu14CAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L3hzbC1hbGxvd2VkLXN0ZGVyci50eHRVVAUAAyQ/vld1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACABpjRhJY6qsbIIAAACoAAAAUgAYAAAAAAABAAAApIG3XwIAaHR0cC90ZXN0cy9zZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kveHNsLXVuYWZmZWN0ZWQtYnktc3R5bGUtc3JjLTItc3Rk
ZXJyLnR4dFVUBQADJT++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFGNGEn2RWSChAAAABoB
AAA1ABgAAAAAAAEAAACkgcVgAgBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvcnMtcG9zdC1yZWRpcmVj
dC0zMDEtc3RkZXJyLnR4dFVUBQAD+j6+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFmNGEmG
32d/tgAAANwBAAA6ABgAAAAAAAEAAACkgbhhAgBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9y
aWdpbi13ZWJzcWwtYWxsb3dlZC1zdGRlcnIudHh0VVQFAAMKP75XdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAWY0YSSjZeTawAAAA7gAAADIAGAAAAAAAAQAAAKSB4mICAGh0dHAvdGVzdHMvc2Vj
dXJpdHkvY3Jvc3Mtb3JpZ2luLXdlYnNxbC1zdGRlcnIudHh0VVQFAAMKP75XdXgLAAEE9QEAAAQU
AAAAUEsBAh4DCgAAAAAAUo0YSQAAAAAAAAAAAAAAACQAGAAAAAAAAAAQAO1B/mMCAGh0dHAvdGVz
dHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL1VUBQAD/D6+V3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAFKNGEmGnr+HLgEAACkPAABKABgAAAAAAAEAAACkgVxkAgBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1hc3NpZ24tc3RkZXJyLnR4
dFVUBQAD/D6+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFyNGEndiN+k/wAAAPsBAAA9ABgA
AAAAAAEAAACkgQ5mAgBodHRwL3Rlc3RzL3NlY3VyaXR5L2xvY2FsLXZpZGVvLXNvdXJjZS1mcm9t
LXJlbW90ZS1zdGRlcnIudHh0VVQFAAMQP75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAXI0Y
Sa32LT+DAAAAwAAAADoAGAAAAAAAAQAAAKSBhGcCAGh0dHAvdGVzdHMvc2VjdXJpdHkvbG9jYWwt
dmlkZW8tc3JjLWZyb20tcmVtb3RlLXN0ZGVyci50eHRVVAUAAxA/vld1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAABUjRhJAAAAAAAAAAAAAAAAIQAYAAAAAAAAABAA7UF7aAIAaHR0cC90ZXN0cy9z
ZWN1cml0eS9taXhlZENvbnRlbnQvVVQFAAP/Pr5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
VI0YSdAXfwDiAAAAPgQAAE4AGAAAAAAAAQAAAKSB1mgCAGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4
ZWRDb250ZW50L2luc2VjdXJlLWF1ZGlvLXZpZGVvLWluLW1haW4tZnJhbWUtc3RkZXJyLnR4dFVU
BQAD/z6+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFSNGEk8ljQYhAAAAMAAAABCABgAAAAA
AAEAAACkgUBqAgBodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1jc3Mt
aW4taWZyYW1lLXN0ZGVyci50eHRVVAUAA/8+vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABn
jRhJKNl5NrAAAADuAAAAPwAYAAAAAAABAAAApIFAawIAaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9y
YWdlLWJsb2NraW5nLWxvb3NlbmVkLXdlYnNxbC1zdGRlcnIudHh0VVQFAAMhP75XdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAZ40YSSjZeTawAAAA7gAAAEMAGAAAAAAAAQAAAKSBaWwCAGh0dHAv
dGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtd2Vic3FsLXN0ZGVy
ci50eHRVVAUAAyI/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABojRhJMLSImu8AAACYBAAA
OQAYAAAAAAABAAAApIGWbQIAaHR0cC90ZXN0cy9zZWN1cml0eS92aWRlby1jcm9zcy1vcmlnaW4t
Y2FjaGluZy1zdGRlcnIudHh0VVQFAAMkP75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAaI0Y
SUpCxEkUAQAA5wEAAD8AGAAAAAAAAQAAAKSB+G4CAGh0dHAvdGVzdHMvc2VjdXJpdHkvdmlkZW8t
cG9zdGVyLWNyb3NzLW9yaWdpbi1jcmFzaDItc3RkZXJyLnR4dFVUBQADJD++V3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAG6NGElgS2YQkQAAAPsBAABFABgAAAAAAAEAAACkgYVwAgBodHRwL3Rl
c3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQteHNsLWRvY3VtZW50LXNlY3VyaXR5T3JpZ2luLXN0ZGVy
ci50eHRVVAUAAzA/vld1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABVjRhJAAAAAAAAAAAAAAAA
EwAYAAAAAAAAABAA7UGVcQIAaHR0cC90ZXN0cy9zdG9yYWdlL1VUBQADAj++V3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAFWNGEko2Xk2sAAAAO4AAABFABgAAAAAAAEAAACkgeJxAgBodHRwL3Rl
c3RzL3N0b3JhZ2UvY2FsbGJhY2tzLWFyZS1jYWxsZWQtaW4tY29ycmVjdC1jb250ZXh0LXN0ZGVy
ci50eHRVVAUAAwI/vld1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABWjRhJAAAAAAAAAAAAAAAA
EwAYAAAAAAAAABAA7UERcwIAaHR0cC90ZXN0cy93b3JrZXJzL1VUBQADBD++V3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAFaNGEkqoKcchAAAAMAAAAAvABgAAAAAAAEAAACkgV5zAgBodHRwL3Rl
c3RzL3dvcmtlcnMvbG9jYXRpb24tcmVhZG9ubHktc3RkZXJyLnR4dFVUBQADBD++V3V4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAAGaNGEkAAAAAAAAAAAAAAAAaABgAAAAAAAAAEADtQUt0AgBodHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L1VUBQADHz++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AGWNGEl+f+0XsQAAAAEBAABBABgAAAAAAAEAAACkgZ90AgBodHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3Bvc3QtYmxvYi1jb250ZW50LXR5cGUtYXN5bmMtc3RkZXJyLnR4dFVUBQADHj++V3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAGaNGEl+f+0XsQAAAAEBAABAABgAAAAAAAEAAACkgct1AgBo
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Bvc3QtYmxvYi1jb250ZW50LXR5cGUtc3luYy1zdGRl
cnIudHh0VVQFAAMfP75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA64wYSVsEWA6iBQAATRAA
AAoAGAAAAAAAAQAAAKSB9nYCAGh0dHBkLmNvbmZVVAUAAzk+vld1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAAAAAB6jRhJAAAAAAAAAAAAAAAACQAYAAAAAAAAABAA7UHcfAIAaW1wb3J0ZWQvVVQFAANI
P75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAeo0YSQAAAAAAAAAAAAAAAA0AGAAAAAAAAAAQ
AO1BH30CAGltcG9ydGVkL3czYy9VVAUAA0g/vld1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACH
jRhJAAAAAAAAAAAAAAAAIAAYAAAAAAAAABAA7UFmfQIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9VVAUAA14/vld1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACHjRhJAAAAAAAAAAAA
AAAAJQAYAAAAAAAAABAA7UHAfQIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L1VUBQADXj++V3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAIeNGEkAAAAAAAAAAAAAAAAvABgA
AAAAAAAAEADtQR9+AgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL1VUBQADXj++V3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAImNGEkAAAAAAAAAAAAAAABA
ABgAAAAAAAAAEADtQYh+AgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2Vt
YW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvVVQFAANhP75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAA
AAAAmo0YSQAAAAAAAAAAAAAAAE8AGAAAAAAAAAAQAO1BAn8CAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50
cy9VVAUAA4Q/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACHjRhJomeqnOMAAABMBQAAZwAY
AAAAAAABAAAApIGLfwIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2NhbnBsYXktc3RkZXJy
LnR4dFVUBQADXj++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIiNGEnRTEmv7AAAAKQEAABy
ABgAAAAAAAEAAACkgQ+BAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2Vt
YW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfY2FucGxheV9ub2F1
dG9wbGF5LXN0ZGVyci50eHRVVAUAA18/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACIjRhJ
O3Qed/AAAAAMBgAAbgAYAAAAAAABAAAApIGnggIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50
X2NhbnBsYXl0aHJvdWdoLXN0ZGVyci50eHRVVAUAA2A/vld1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACACJjRhJbomTUO0AAAD+BAAAeQAYAAAAAAABAAAApIE/hAIAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1l
bnRzL2V2ZW50X2NhbnBsYXl0aHJvdWdoX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUBQADYT++V3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAImNGEm2FTeC8AAAAAwGAABqABgAAAAAAAEAAACkgd+F
AgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZGVkZGF0YS1zdGRlcnIudHh0VVQFAANi
P75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAio0YSTWynbLtAAAApAQAAHUAGAAAAAAAAQAA
AKSBc4cCAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1i
ZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2FkZWRkYXRhX25vYXV0b3BsYXkt
c3RkZXJyLnR4dFVUBQADYz++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIqNGEnOwEOF7QAA
AKQEAABuABgAAAAAAAEAAACkgQ+JAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZGVk
bWV0YWRhdGEtc3RkZXJyLnR4dFVUBQADZD++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIuN
GEmlmm+g7AAAAKQEAAB5ABgAAAAAAAEAAACkgaSKAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZl
bnRfbG9hZGVkbWV0YWRhdGFfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQFAANlP75XdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAi40YSX0aWdfvAAAApAQAAGkAGAAAAAAAAQAAAKSBQ4wCAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2Fkc3RhcnQtc3RkZXJyLnR4dFVUBQADZj++V3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAIyNGEm0TRkT7AAAAKQEAAB0ABgAAAAAAAEAAACkgdWNAgBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNv
bnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZHN0YXJ0X25vYXV0b3BsYXktc3RkZXJyLnR4
dFVUBQADZz++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIyNGEkdW4pN8QAAAAwGAAB8ABgA
AAAAAAEAAACkgW+PAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfb3JkZXJfY2FucGxheV9j
YW5wbGF5dGhyb3VnaC1zdGRlcnIudHh0VVQFAANoP75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAjY0YSTcbYRfxAAAADAYAAHUAGAAAAAAAAQAAAKSBFpECAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50
cy9ldmVudF9vcmRlcl9jYW5wbGF5X3BsYXlpbmctc3RkZXJyLnR4dFVUBQADaT++V3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAI6NGEkqVlLW6wAAAAwGAAB/ABgAAAAAAAEAAACkgbaSAgBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfb3JkZXJfbG9hZGVkbWV0YWRhdGFfbG9hZGVkZGF0YS1z
dGRlcnIudHh0VVQFAANrP75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAjo0YSVBjRDTuAAAA
ZgYAAHgAGAAAAAAAAQAAAKSBWpQCAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9vcmRlcl9s
b2Fkc3RhcnRfcHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUBQADbD++V3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAI+NGEkrTq4Y8AAAAAwGAABlABgAAAAAAAEAAACkgfqVAgBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxl
bWVudHMvZXZlbnRfcGF1c2Utc3RkZXJyLnR4dFVUBQADbT++V3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAI+NGEkXvX327QAAAKQEAABwABgAAAAAAAEAAACkgYmXAgBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxl
bWVudHMvZXZlbnRfcGF1c2Vfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQFAANuP75XdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAkI0YSYK+SUfxAAAADAYAAGQAGAAAAAAAAQAAAKSBIJkCAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9ldmVudF9wbGF5LXN0ZGVyci50eHRVVAUAA28/vld1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACACQjRhJ6DUHhucAAACkBAAAbwAYAAAAAAABAAAApIGvmgIAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BsYXlfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQFAANwP75X
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAkY0YScgNk3brAAAADAYAAGcAGAAAAAAAAQAAAKSB
P5wCAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRk
ZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wbGF5aW5nLXN0ZGVyci50eHRVVAUAA3I/
vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACSjRhJ7NzSYe8AAAAMBgAAcgAYAAAAAAABAAAA
pIHLnQIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BsYXlpbmdfbm9hdXRvcGxheS1zdGRl
cnIudHh0VVQFAANzP75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAko0YSV/76WvvAAAAZgYA
AGgAGAAAAAAAAQAAAKSBZp8CAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wcm9ncmVzcy1z
dGRlcnIudHh0VVQFAAN0P75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAk40YSUxxuyjtAAAA
/gQAAHMAGAAAAAAAAQAAAKSB96ACAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wcm9ncmVz
c19ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA3U/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CACTjRhJ3/k9FvAAAAAMBgAAagAYAAAAAAABAAAApIGRogIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L2V2ZW50X3RpbWV1cGRhdGUtc3RkZXJyLnR4dFVUBQADdj++V3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAJSNGEkM7rg67AAAAKYFAAB1ABgAAAAAAAEAAACkgSWkAgBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxl
bWVudHMvZXZlbnRfdGltZXVwZGF0ZV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA3g/vld1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACACUjRhJA9vnC4sAAACAAQAAbAAYAAAAAAABAAAApIHApQIA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3ZvbHVtZWNoYW5nZS1zdGRlcnIudHh0VVQFAAN4
P75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAh40YSQAAAAAAAAAAAAAAAFoAGAAAAAAAAAAQ
AO1B8aYCAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1i
ZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9pbnRlcmZhY2VzL1VUBQADXj++V3V4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAAIiNGEkAAAAAAAAAAAAAAABkABgAAAAAAAAAEADtQYWnAgBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvbWVkaWEtZWxlbWVudHMvaW50ZXJmYWNlcy9UZXh0VHJhY2svVVQFAANfP75XdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAh40YSeNeTFTKAAAA3QEAAHkAGAAAAAAAAQAAAKSBI6gCAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9pbnRlcmZhY2VzL1RleHRUcmFjay9hY3RpdmVDdWVzLXN0ZGVyci50
eHRVVAUAA14/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACIjRhJPcw29oQAAADAAAAAdQAY
AAAAAAABAAAApIGgqQIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2ludGVyZmFjZXMvVGV4dFRyYWNr
L2FkZEN1ZS1zdGRlcnIudHh0VVQFAANfP75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAlY0Y
SXK7xi7fAAAA5AMAAHcAGAAAAAAAAQAAAKSB06oCAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9uZXR3
b3JrU3RhdGVfZHVyaW5nX2xvYWRzdGFydC1zdGRlcnIudHh0VVQFAAN5P75XdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAlY0YSa2xZf2DAAAAwAAAAG4AGAAAAAAAAQAAAKSBY6wCAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9t
ZWRpYS1lbGVtZW50cy9uZXR3b3JrU3RhdGVfaW5pdGlhbC1zdGRlcnIudHh0VVQFAAN5P75XdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAlY0YSf9wN0jkAAAATAUAAHIAGAAAAAAAAQAAAKSBjq0C
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC9tZWRpYS1lbGVtZW50cy9wYXVzZWRfZmFsc2VfZHVyaW5nX3BsYXktc3RkZXJyLnR4
dFVUBQADej++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJaNGElFBdYs6gAAAKQEAAByABgA
AAAAAAEAAACkgR6vAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGF1c2VkX3RydWVfZHVyaW5nX3Bh
dXNlLXN0ZGVyci50eHRVVAUAA3w/vld1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACJjRhJAAAA
AAAAAAAAAAAAagAYAAAAAAAAABAA7UG0sAIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlpbmct
dGhlLW1lZGlhLXJlc291cmNlL1VUBQADYT++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIiN
GElArzVn/gAAAPsBAACRABgAAAAAAAEAAACkgVixAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGxh
eWluZy10aGUtbWVkaWEtcmVzb3VyY2UvcGF1c2UtbW92ZS10by1vdGhlci1kb2N1bWVudC1zdGRl
cnIudHh0VVQFAANgP75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAiY0YSRsgwlgkAQAAuwIA
AI8AGAAAAAAAAQAAAKSBIbMCAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wbGF5aW5nLXRoZS1tZWRp
YS1yZXNvdXJjZS9wYXVzZS1tb3ZlLXdpdGhpbi1kb2N1bWVudC1zdGRlcnIudHh0VVQFAANhP75X
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAiY0YSZ5s9DkjAQAAbwMAAI8AGAAAAAAAAQAAAKSB
DrUCAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRk
ZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wbGF5aW5nLXRoZS1tZWRpYS1yZXNvdXJjZS9wYXVz
ZS1yZW1vdmUtZnJvbS1kb2N1bWVudC1zdGRlcnIudHh0VVQFAANhP75XdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAiY0YSfo4yEeDAAAAwAAAAIEAGAAAAAAAAQAAAKSB+rYCAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRp
YS1lbGVtZW50cy9wbGF5aW5nLXRoZS1tZWRpYS1yZXNvdXJjZS9wbGF5YmFja1JhdGUtc3RkZXJy
LnR4dFVUBQADYT++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJaNGEmlM4FNhAAAAMAAAAB4
ABgAAAAAAAEAAACkgTi4AgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2Vt
YW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcHJlbG9hZF9yZWZsZWN0c19u
b25lX2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA3w/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CACXjRhJAqhiGOQAAABMBQAAcwAYAAAAAAABAAAApIFuuQIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L3JlYWR5U3RhdGVfZHVyaW5nX2NhbnBsYXktc3RkZXJyLnR4dFVUBQADfT++V3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAJeNGEnjqc8e8gAAAGYGAAB6ABgAAAAAAAEAAACkgf+6AgBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvcmVhZHlTdGF0ZV9kdXJpbmdfY2FucGxheXRocm91Z2gtc3RkZXJyLnR4
dFVUBQADfj++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJiNGEmOzdN79AAAAAwGAAB2ABgA
AAAAAAEAAACkgaW8AgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcmVhZHlTdGF0ZV9kdXJpbmdfbG9h
ZGVkZGF0YS1zdGRlcnIudHh0VVQFAAOAP75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAmY0Y
SdIErczpAAAApAQAAHoAGAAAAAAAAQAAAKSBSb4CAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFk
eVN0YXRlX2R1cmluZ19sb2FkZWRtZXRhZGF0YS1zdGRlcnIudHh0VVQFAAOBP75XdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAmY0YSeAmWqfuAAAADAYAAHMAGAAAAAAAAQAAAKSB5r8CAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19wbGF5aW5nLXN0ZGVyci50eHRVVAUA
A4I/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACajRhJX4QsAIQAAADAAAAAbAAYAAAAAAAB
AAAApIGBwQIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfaW5pdGlhbC1zdGRlcnIu
dHh0VVQFAAODP75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAmo0YSbXNV/3WAAAAwgIAAIQA
GAAAAAAAAQAAAKSBq8ICAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9zcmNfcmVmbGVjdHNfYXR0cmli
dXRlX25vdF9zb3VyY2VfZWxlbWVudHMtc3RkZXJyLnR4dFVUBQADgz++V3V4CwABBPUBAAAEFAAA
AFBLAQIeAwoAAAAAAImNGEkAAAAAAAAAAAAAAABVABgAAAAAAAAAEADtQT/EAgBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVk
aWEtZWxlbWVudHMvdHJhY2svVVQFAANhP75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAiY0Y
SQAAAAAAAAAAAAAAAGMAGAAAAAAAAAAQAO1BzsQCAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy90cmFj
ay90cmFjay1lbGVtZW50L1VUBQADYT++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAImNGEkC
TRYM/AAAAOwBAACCABgAAAAAAAEAAACkgWvFAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvdHJhY2sv
dHJhY2stZWxlbWVudC90cmFjay1hcGktdGV4dHRyYWNrcy1zdGRlcnIudHh0VVQFAANhP75XdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAmo0YSbmHxT29AAAA7AEAAGMAGAAAAAAAAQAAAKSBI8cC
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC9tZWRpYS1lbGVtZW50cy92aWRlb18wMDgtc3RkZXJyLnR4dFVUBQADgz++V3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAJqNGEnIBp2ThAAAAMAAAABsABgAAAAAAAEAAACkgX3IAgBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNv
bnRlbnQvbWVkaWEtZWxlbWVudHMvdmlkZW9fdm9sdW1lX2NoZWNrLXN0ZGVyci50eHRVVAUAA4Q/
vld1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACJjRhJAAAAAAAAAAAAAAAAUgAYAAAAAAAAABAA
7UGnyQIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L3RoZS1hdWRpby1lbGVtZW50L1VUBQADYT++V3V4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAImNGElSenOr3QAAANACAABuABgAAAAAAAEAAACkgTPKAgBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWF1
ZGlvLWVsZW1lbnQvYXVkaW9fY29uc3RydWN0b3Itc3RkZXJyLnR4dFVUBQADYT++V3V4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAAImNGEkAAAAAAAAAAAAAAABTABgAAAAAAAAAEADtQbjLAgBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvdGhlLWNhbnZhcy1lbGVtZW50L1VUBQADYT++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AImNGEko8M2XgwAAAMAAAABwABgAAAAAAAEAAACkgUXMAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWNhbnZhcy1lbGVt
ZW50LzJkLmNhbnZhcy5yZWFkb25seS1zdGRlcnIudHh0VVQFAANhP75XdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAAiY0YSQAAAAAAAAAAAAAAACoAGAAAAAAAAAAQAO1Bcs0CAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL1VUBQADYT++V3V4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAHqNGEnCF/UVogAAAE8CAABGABgAAAAAAAEAAACkgdbNAgBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJmYWN0b3J5X29wZW4xMS1zdGRlcnIudHh0
VVQFAANIP75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAe40YSbxxbNWZAAAAxQAAAEMAGAAA
AAAAAQAAAKSB+M4CAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lk
YmluZGV4X2NvdW50LXN0ZGVyci50eHRVVAUAA0o/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAB7jRhJvHFs1ZkAAADFAAAARAAYAAAAAAABAAAApIEO0AIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRiaW5kZXhfY291bnQyLXN0ZGVyci50eHRVVAUAA0k/vld1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB7jRhJvHFs1ZkAAADFAAAARAAYAAAAAAABAAAApIEl
0QIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRiaW5kZXhfY291
bnQzLXN0ZGVyci50eHRVVAUAA0k/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACBjRhJvHFs
1ZkAAADFAAAASQAYAAAAAAABAAAApIE80gIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9JbmRleGVkREIvaWRib2JqZWN0c3RvcmVfY291bnQtc3RkZXJyLnR4dFVUBQADUT++V3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAICNGEm8cWzVmQAAAMUAAABKABgAAAAAAAEAAACkgVjTAgBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJvYmplY3RzdG9yZV9j
b3VudDItc3RkZXJyLnR4dFVUBQADUD++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAICNGEkE
iukDnwAAAIoBAABKABgAAAAAAAEAAACkgXXUAgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL0luZGV4ZWREQi9pZGJvYmplY3RzdG9yZV9jb3VudDMtc3RkZXJyLnR4dFVUBQADUD++V3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIKNGEm8cWzVmQAAAMUAAABLABgAAAAAAAEAAACkgZjV
AgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJvYmplY3RzdG9y
ZV9kZWxldGU1LXN0ZGVyci50eHRVVAUAA1M/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACE
jRhJvHFs1ZkAAADFAAAATgAYAAAAAAABAAAApIG21gIAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9JbmRleGVkREIvaWRidHJhbnNhY3Rpb24tb25jb21wbGV0ZS1zdGRlcnIudHh0VVQF
AANYP75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAiI0YSQSK6QOfAAAAigEAAFgAGAAAAAAA
AQAAAKSB19cCAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL3RyYW5z
YWN0aW9uLWNyZWF0ZV9pbl92ZXJzaW9uY2hhbmdlLXN0ZGVyci50eHRVVAUAA18/vld1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACACJjRhJvHFs1ZkAAADFAAAARgAYAAAAAAABAAAApIEI2QIAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvd3JpdGVyLXN0YXJ2YXRpb24t
c3RkZXJyLnR4dFVUBQADYT++V3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAJSNGEkAAAAAAAAA
AAAAAAAKABgAAAAAAAAAEADtQSHaAgBpbnNwZWN0b3IvVVQFAAN4P75XdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAAlI0YSQAAAAAAAAAAAAAAABMAGAAAAAAAAAAQAO1BZdoCAGluc3BlY3Rvci9k
ZWJ1Z2dlci9VVAUAA3g/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACUjRhJTICOSZgLAADz
4QAAQQAYAAAAAAABAAAApIGy2gIAaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrLW9uLWV4Y2VwdGlv
bi10aHJvdy1pbi1wcm9taXNlLXN0ZGVyci50eHRVVAUAA3g/vld1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAAAAAChjRhJAAAAAAAAAAAAAAAAAwAYAAAAAAAAABAA7UHF5gIAanMvVVQFAAONP75XdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAuo0YSQAAAAAAAAAAAAAAAAcAGAAAAAAAAAAQAO1BAucC
AGpzL2RvbS9VVAUAA78/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAChjRhJKNl5NrAAAADu
AAAANQAYAAAAAAABAAAApIFD5wIAanMvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLXdpdGgtaGFuZGxl
LWV2ZW50LXN0ZGVyci50eHRVVAUAA40/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAC6jRhJ
KNl5NrAAAADuAAAAMAAYAAAAAAABAAAApIFi6AIAanMvZG9tL2V4Y2VwdGlvbnMtdGhyb3duLWlu
LWNhbGxiYWNrcy1zdGRlcnIudHh0VVQFAAO/P75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA
Go4YSQAAAAAAAAAAAAAAAAYAGAAAAAAAAAAQAO1BfOkCAG1lZGlhL1VUBQADc0C+V3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAKGNGEn/5kPA2wAAAFICAAAfABgAAAAAAAEAAACkgbzpAgBtZWRp
YS9hdWRpby1kYXRhLXVybC1zdGRlcnIudHh0VVQFAAOOP75XdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAAqo0YSQAAAAAAAAAAAAAAABMAGAAAAAAAAAAQAO1B8OoCAG1lZGlhL21lZGlhLXNvdXJj
ZS9VVAUAA58/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACqjRhJgOihso0AAACcAAAASAAY
AAAAAAABAAAApIE96wIAbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1zdGFsbGVkLWhv
bGRzLXNsZWVwLWFzc2VydGlvbi1zdGRlcnIudHh0VVQFAAOfP75XdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAzY0YSbpzHenEAAAAJAMAACgAGAAAAAAAAQAAAKSBTOwCAG1lZGlhL3NvdXJjZXMt
ZmFsbGJhY2stY29kZWNzLXN0ZGVyci50eHRVVAUAA+I/vld1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACADNjRhJwXeL/ooAAACAAQAAMAAYAAAAAAABAAAApIFy7QIAbWVkaWEvc3ZnLWFzLWltYWdl
LXdpdGgtbWVkaWEtYmxvY2tlZC1zdGRlcnIudHh0VVQFAAPiP75XdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAz40YSc9OKdKQAAAAvQAAACEAGAAAAAAAAQAAAKSBZu4CAG1lZGlhL3Vuc3VwcG9y
dGVkLXJ0c3Atc3RkZXJyLnR4dFVUBQAD5T++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANCN
GEl/s0uHuAAAAOoAAAAjABgAAAAAAAEAAACkgVHvAgBtZWRpYS92aWRlby1hc3BlY3QtcmF0aW8t
c3RkZXJyLnR4dFVUBQAD5z++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABqOGEkDozdAvgAA
AJIBAAAfABgAAAAAAAEAAACkgWbwAgBtZWRpYS92aWRlby1zcmMtYmxvYi1zdGRlcnIudHh0VVQF
AANzQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAGo4YSTbvPn+EAAAAwAAAACEAGAAAAAAA
AQAAAKSBffECAG1lZGlhL3ZpZGVvLXNyYy1jaGFuZ2Utc3RkZXJyLnR4dFVUBQADc0C+V3V4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAAK6NGEkAAAAAAAAAAAAAAAAIABgAAAAAAAAAEADtQVzyAgBw
bHVnaW5zL1VUBQADqD++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAK6NGEl8ULaargAAAPEA
AAAvABgAAAAAAAEAAACkgZ7yAgBwbHVnaW5zL21vdXNlLWNsaWNrLWlmcmFtZS10by1wbHVnaW4t
c3RkZXJyLnR4dFVUBQADqD++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGeNGEmvoVCqaAIA
AKIVAAAaABgAAAAAAAEAAACkgbXzAgBweXdlYnNvY2tldC53cy5sb2ctZXJyLnR4dFVUBQADIT++
V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGeNGElnEjLhCQEAAI8CAAAaABgAAAAAAAEAAACk
gXH2AgBweXdlYnNvY2tldC53cy5sb2ctb3V0LnR4dFVUBQADIT++V3V4CwABBPUBAAAEFAAAAFBL
AQIeAwoAAAAAAOyMGEkAAAAAAAAAAAAAAAAbABgAAAAAAAAAAACkgc73AgBweXdlYnNvY2tldC53
c3MubG9nLWVyci50eHRVVAUAAzs+vld1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADsjBhJAAAA
AAAAAAAAAAAAGwAYAAAAAAAAAAAApIEj+AIAcHl3ZWJzb2NrZXQud3NzLmxvZy1vdXQudHh0VVQF
AAM7Pr5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAYI4YSUUmHTnRJwAAy6oAAAwAGAAAAAAA
AQAAAKSBePgCAHJlc3VsdHMuaHRtbFVUBQAD80C+V3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAA
AF2OGEkAAAAAAAAAAAAAAAAIABgAAAAAAAAAEADtQY8gAwByZXRyaWVzL1VUBQAD8kC+V3V4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAAF2OGEkAAAAAAAAAAAAAAAANABgAAAAAAAAAEADtQdEgAwBy
ZXRyaWVzL2Zhc3QvVVQFAAPyQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAXY4YSQAAAAAA
AAAAAAAAABEAGAAAAAAAAAAQAO1BGCEDAHJldHJpZXMvZmFzdC9jc3MvVVQFAAPyQL5XdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAXY4YSak2+7+nAAAAKgIAADAAGAAAAAAAAQAAAKSBYyEDAHJl
dHJpZXMvZmFzdC9jc3MvcGFyc2luZy1jc3Mtbm9uYXNjaWktYWN0dWFsLnR4dFVUBQAD8kC+V3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAF2OGEmfXRHn9wAAANQBAAAuABgAAAAAAAEAAACkgXQi
AwByZXRyaWVzL2Zhc3QvY3NzL3BhcnNpbmctY3NzLW5vbmFzY2lpLWRpZmYudHh0VVQFAAPyQL5X
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAXY4YSXP8xaehAAAAKAIAADIAGAAAAAAAAQAAAKSB
0yMDAHJldHJpZXMvZmFzdC9jc3MvcGFyc2luZy1jc3Mtbm9uYXNjaWktZXhwZWN0ZWQudHh0VVQF
AAPyQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAXY4YSfNnOJkzCAAANB8AADYAGAAAAAAA
AQAAAKSB4CQDAHJldHJpZXMvZmFzdC9jc3MvcGFyc2luZy1jc3Mtbm9uYXNjaWktcHJldHR5LWRp
ZmYuaHRtbFVUBQAD8kC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAF2OGEllOWo/LwIAAHsI
AAAwABgAAAAAAAEAAACkgYMtAwByZXRyaWVzL2Zhc3QvY3NzL3NlbGVjdG9yLXRleHQtZXNjYXBl
LWFjdHVhbC50eHRVVAUAA/JAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABdjhhJ3tE6mRQB
AABlAwAALgAYAAAAAAABAAAApIEcMAMAcmV0cmllcy9mYXN0L2Nzcy9zZWxlY3Rvci10ZXh0LWVz
Y2FwZS1kaWZmLnR4dFVUBQAD8kC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAF2OGElhsq96
CgIAAEwIAAAyABgAAAAAAAEAAACkgZgxAwByZXRyaWVzL2Zhc3QvY3NzL3NlbGVjdG9yLXRleHQt
ZXNjYXBlLWV4cGVjdGVkLnR4dFVUBQAD8kC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAF2O
GEne8JqUewgAANAfAAA2ABgAAAAAAAEAAACkgQ40AwByZXRyaWVzL2Zhc3QvY3NzL3NlbGVjdG9y
LXRleHQtZXNjYXBlLXByZXR0eS1kaWZmLmh0bWxVVAUAA/JAvld1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABgjhhJ/3N3qmWyCAAXei4ACgAYAAAAAAABAAAApIH5PAMAc3RhdHMuanNvblVUBQAD
80C+V3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAANSNGEkAAAAAAAAAAAAAAAAIABgAAAAAAAAA
EADtQaLvCwBzdG9yYWdlL1VUBQAD7z++V3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAACGOGEkA
AAAAAAAAAAAAAAASABgAAAAAAAAAEADtQeTvCwBzdG9yYWdlL2luZGV4ZWRkYi9VVAUAA31Avld1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADtjRhJwhf1FaIAAABPAgAAKQAYAAAAAAABAAAApIEw
8AsAc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLXN0ZGVyci50eHRVVAUAAx1Avld1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACADsjRhJwhf1FaIAAABPAgAAMQAYAAAAAAABAAAApIE18QsA
c3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLXdvcmtlcnMtc3RkZXJyLnR4dFVUBQADHEC+
V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAO2NGEm2CwzbrwAAAAEKAAAoABgAAAAAAAEAAACk
gULyCwBzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3VudC1zdGRlcnIudHh0VVQFAAMeQL5XdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA8I0YSfz9f16jAAAAFAMAAC0AGAAAAAAAAQAAAKSBU/ML
AHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LW11bHRpZW50cnktc3RkZXJyLnR4dFVUBQADJEC+V3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPGNGEm8cWzVmQAAAMUAAAAtABgAAAAAAAEAAACkgV30
CwBzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1wb3B1bGF0aW9uLXN0ZGVyci50eHRVVAUAAyVAvld1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADzjRhJNtEFebQFAABMMAAARQAYAAAAAAAAAAAApIFd
9QsAc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vcGVuLWluLXVwZ3JhZGVuZWVkZWQtcHJp
dmF0ZS1zdGRlcnIudHh0VVQFAAMqQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA9I0YSdLp
bELBBQAAYjMAAD0AGAAAAAAAAAAAAKSBkPsLAHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24t
b3Blbi1pbi11cGdyYWRlbmVlZGVkLXN0ZGVyci50eHRVVAUAAytAvld1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAD0jRhJRas5k0AEAAAkFwAAQQAYAAAAAAAAAAAApIHIAQwAc3RvcmFnZS9pbmRl
eGVkZGIvaW50dmVyc2lvbi1vcGVuLXdpdGgtdmVyc2lvbi1wcml2YXRlLXN0ZGVyci50eHRVVAUA
AytAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD0jRhJLT1waz4EAADEFgAAOQAYAAAAAAAA
AAAApIGDBgwAc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vcGVuLXdpdGgtdmVyc2lvbi1z
dGRlcnIudHh0VVQFAAMrQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA9I0YSS9xe8X6BAAA
fzgAAFEAGAAAAAAAAAAAAKSBNAsMAHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tcGVuZGlu
Zy12ZXJzaW9uLWNoYW5nZXMtYXNjZW5kaW5nLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADK0C+V3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPSNGEnT6zEiHgUAAME5AABJABgAAAAAAAAAAACkgbkQ
DABzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLXBlbmRpbmctdmVyc2lvbi1jaGFuZ2VzLWFz
Y2VuZGluZy1zdGRlcnIudHh0VVQFAAMrQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA9I0Y
SUEWbWbUBAAACiwAAFIAGAAAAAAAAAAAAKSBWhYMAHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNp
b24tcGVuZGluZy12ZXJzaW9uLWNoYW5nZXMtZGVzY2VuZGluZy1wcml2YXRlLXN0ZGVyci50eHRV
VAUAAyxAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD0jRhJHwL3JO4EAAD4KQAASgAYAAAA
AAAAAAAApIG6GwwAc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1wZW5kaW5nLXZlcnNpb24t
Y2hhbmdlcy1kZXNjZW5kaW5nLXN0ZGVyci50eHRVVAUAAyxAvld1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAD0jRhJq3U2F7YEAAAmKQAATAAYAAAAAAAAAAAApIEsIQwAc3RvcmFnZS9pbmRleGVk
ZGIvaW50dmVyc2lvbi1wZW5kaW5nLXZlcnNpb24tY2hhbmdlcy1zYW1lLXByaXZhdGUtc3RkZXJy
LnR4dFVUBQADLEC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPSNGElMBg7j+AQAAC4tAABE
ABgAAAAAAAAAAACkgWgmDABzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLXBlbmRpbmctdmVy
c2lvbi1jaGFuZ2VzLXNhbWUtc3RkZXJyLnR4dFVUBQADLEC+V3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAPWNGEkasFK6DwQAADcaAAA7ABgAAAAAAAAAAACkgd4rDABzdG9yYWdlL2luZGV4ZWRk
Yi9pbnR2ZXJzaW9uLXBlcnNpc3RlbmNlLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADLUC+V3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAPWNGElArbEl5AMAAP0XAAAzABgAAAAAAAAAAACkgWIwDABz
dG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLXBlcnNpc3RlbmNlLXN0ZGVyci50eHRVVAUAAy1A
vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD1jRhJi4XHViwFAAAcKgAAPwAYAAAAAAAAAAAA
pIGzNAwAc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1yZXZlcnQtb24tYWJvcnQtcHJpdmF0
ZS1zdGRlcnIudHh0VVQFAAMtQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA9Y0YSS0GeVc2
BQAArysAADcAGAAAAAAAAAAAAKSBWDoMAHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tcmV2
ZXJ0LW9uLWFib3J0LXN0ZGVyci50eHRVVAUAAy1Avld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAD1jRhJHwlGzeYDAACWGAAARQAYAAAAAAAAAAAApIH/PwwAc3RvcmFnZS9pbmRleGVkZGIvaW50
dmVyc2lvbi10d28tb3BlbnMtbm8tdmVyc2lvbnMtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMuQL5X
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA9Y0YSdHL98cVBAAA/RkAAD0AGAAAAAAAAAAAAKSB
ZEQMAHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tdHdvLW9wZW5zLW5vLXZlcnNpb25zLXN0
ZGVyci50eHRVVAUAAy5Avld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD1jRhJjuAxDRoFAADP
QQAAOAAYAAAAAAAAAAAApIHwSAwAc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi11cGdyYWRl
cy1wcml2YXRlLXN0ZGVyci50eHRVVAUAAy5Avld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD1
jRhJ7u1YlUsFAABdRAAAMAAYAAAAAAAAAAAApIF8TgwAc3RvcmFnZS9pbmRleGVkZGIvaW50dmVy
c2lvbi11cGdyYWRlcy1zdGRlcnIudHh0VVQFAAMuQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgA9o0YSf9UbYIjAwAA5RAAADEAGAAAAAAAAAAAAKSBMVQMAHN0b3JhZ2UvaW5kZXhlZGRiL2lu
dmFsaWQta2V5cy1wcml2YXRlLXN0ZGVyci50eHRVVAUAAy9Avld1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAD2jRhJsnKQ57ADAAB1EgAAKQAYAAAAAAAAAAAApIG/VwwAc3RvcmFnZS9pbmRleGVk
ZGIvaW52YWxpZC1rZXlzLXN0ZGVyci50eHRVVAUAAy9Avld1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAD2jRhJ70NwDbYLAADbmAEAMgAYAAAAAAAAAAAApIHSWwwAc3RvcmFnZS9pbmRleGVkZGIv
a2V5LWdlbmVyYXRvci1wcml2YXRlLXN0ZGVyci50eHRVVAUAAzBAvld1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAD3jRhJwEtRFwAMAADlnQEAKgAYAAAAAAAAAAAApIH0ZwwAc3RvcmFnZS9pbmRl
eGVkZGIva2V5LWdlbmVyYXRvci1zdGRlcnIudHh0VVQFAAMxQL5XdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgA940YSRVHL7QBBQAANzUAAEAAGAAAAAAAAAAAAKSBWHQMAHN0b3JhZ2UvaW5kZXhl
ZGRiL2tleS1zb3J0LW9yZGVyLWFjcm9zcy10eXBlcy1wcml2YXRlLXN0ZGVyci50eHRVVAUAAzJA
vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD3jRhJq25vFLQFAADhNAAAOAAYAAAAAAAAAAAA
pIHTeQwAc3RvcmFnZS9pbmRleGVkZGIva2V5LXNvcnQtb3JkZXItYWNyb3NzLXR5cGVzLXN0ZGVy
ci50eHRVVAUAAzJAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD3jRhJC/xbnCgFAAD8LAAA
OAAYAAAAAAAAAAAApIH5fwwAc3RvcmFnZS9pbmRleGVkZGIva2V5LXNvcnQtb3JkZXItZGF0ZS1w
cml2YXRlLXN0ZGVyci50eHRVVAUAAzJAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD4jRhJ
AbHiQKgFAAAILwAAMAAYAAAAAAAAAAAApIGThQwAc3RvcmFnZS9pbmRleGVkZGIva2V5LXNvcnQt
b3JkZXItZGF0ZS1zdGRlcnIudHh0VVQFAAMzQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
+I0YSZTc/4fUBwAAJrUAADMAGAAAAAAAAAAAAKSBpYsMAHN0b3JhZ2UvaW5kZXhlZGRiL2tleS10
eXBlLWFycmF5LXByaXZhdGUtc3RkZXJyLnR4dFVUBQADM0C+V3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAPmNGEkir8CPpAcAAJy4AAArABgAAAAAAAAAAACkgeaTDABzdG9yYWdlL2luZGV4ZWRk
Yi9rZXktdHlwZS1hcnJheS1zdGRlcnIudHh0VVQFAAM1QL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgA+Y0YSbsP2yLbBAAArCMAADQAGAAAAAAAAAAAAKSB75sMAHN0b3JhZ2UvaW5kZXhlZGRi
L2tleS10eXBlLWJpbmFyeS1wcml2YXRlLXN0ZGVyci50eHRVVAUAAzZAvld1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAD5jRhJLtpUFuoEAABaJAAALAAYAAAAAAAAAAAApIE4oQwAc3RvcmFnZS9p
bmRleGVkZGIva2V5LXR5cGUtYmluYXJ5LXN0ZGVyci50eHRVVAUAAzZAvld1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAD6jRhJuwXnnSsEAACgFwAANgAYAAAAAAAAAAAApIGIpgwAc3RvcmFnZS9p
bmRleGVkZGIva2V5LXR5cGUtaW5maW5pdHktcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAM3QL5XdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA+o0YSXTGmRO3BAAAaRoAAC4AGAAAAAAAAAAAAKSBI6sM
AHN0b3JhZ2UvaW5kZXhlZGRiL2tleS10eXBlLWluZmluaXR5LXN0ZGVyci50eHRVVAUAAzdAvld1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD6jRhJvjcXmsQGAACoNwAAMwAYAAAAAAAAAAAApIFC
sAwAc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1hcnJheXMtcHJpdmF0ZS1zdGRlcnIudHh0VVQF
AAM3QL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA+o0YSV6YxlutBgAAdTUAACsAGAAAAAAA
AAAAAKSBc7cMAHN0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtYXJyYXlzLXN0ZGVyci50eHRVVAUA
AzdAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD7jRhJYGg4AaUDAAC5TwAAMwAYAAAAAAAA
AAAApIGFvgwAc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1iYXNpY3MtcHJpdmF0ZS1zdGRlcnIu
dHh0VVQFAAM5QL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA/I0YSUFubReNBAAAxXMAACsA
GAAAAAAAAAAAAKSBl8IMAHN0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtYmFzaWNzLXN0ZGVyci50
eHRVVAUAAztAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD8jRhJzO8Dpk4GAABdWwAAMgAY
AAAAAAAAAAAApIGJxwwAc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1lZGdlcy1wcml2YXRlLXN0
ZGVyci50eHRVVAUAAztAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD8jRhJdAfovrAFAACx
NgAAKgAYAAAAAAAAAAAApIFDzgwAc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1lZGdlcy1zdGRl
cnIudHh0VVQFAAM7QL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA/I0YSbSN7hf/BAAA1zkA
ADYAGAAAAAAAAAAAAKSBV9QMAHN0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtZmV0Y2gta2V5LXBy
aXZhdGUtc3RkZXJyLnR4dFVUBQADPEC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPyNGEmq
HUm/2AUAAK4+AAAuABgAAAAAAAAAAACkgcbZDABzdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWZl
dGNoLWtleS1zdGRlcnIudHh0VVQFAAM8QL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA/I0Y
SaxaBlfqBgAAHVoAAEEAGAAAAAAAAAAAAKSBBuAMAHN0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgt
aW50cmluc2ljLXByb3BlcnRpZXMtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAM8QL5XdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgA/Y0YSdxcUJXuBgAAlFkAADkAGAAAAAAAAAAAAKSBa+cMAHN0b3Jh
Z2UvaW5kZXhlZGRiL2tleXBhdGgtaW50cmluc2ljLXByb3BlcnRpZXMtc3RkZXJyLnR4dFVUBQAD
PUC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAP2NGEmm7iTI1QAAAEACAAAtABgAAAAAAAAA
AACkgczuDABzdG9yYWdlL2luZGV4ZWRkYi9rZXlyYW5nZS1wcml2YXRlLXN0ZGVyci50eHRVVAUA
Az1Avld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD9jRhJwoQi2PUHAACdgAAAOgAYAAAAAAAA
AAAApIEI8AwAc3RvcmFnZS9pbmRleGVkZGIvbGF6eS1pbmRleC1wb3B1bGF0aW9uLXByaXZhdGUt
c3RkZXJyLnR4dFVUBQADPkC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAACOGEkc2yQuJggA
AEZ/AAAyABgAAAAAAAAAAACkgXH4DABzdG9yYWdlL2luZGV4ZWRkYi9sYXp5LWluZGV4LXBvcHVs
YXRpb24tc3RkZXJyLnR4dFVUBQADP0C+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAACOGEle
qeSqcgYAAPZZAAA1ABgAAAAAAAAAAACkgQMBDQBzdG9yYWdlL2luZGV4ZWRkYi9sYXp5LWluZGV4
LXR5cGVzLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADP0C+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAACOGElAWuwgZQcAAGFkAAAtABgAAAAAAAAAAACkgeQHDQBzdG9yYWdlL2luZGV4ZWRkYi9s
YXp5LWluZGV4LXR5cGVzLXN0ZGVyci50eHRVVAUAA0BAvld1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAAAjhhJ92rayNcAAABAAgAANQAYAAAAAAAAAAAApIGwDw0Ac3RvcmFnZS9pbmRleGVkZGIv
bGVnYWN5LWNvbnN0YW50cy1wcml2YXRlLXN0ZGVyci50eHRVVAUAA0BAvld1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAAAjhhJz/iMOx4FAABPhAAAMgAYAAAAAAAAAAAApIH2EA0Ac3RvcmFnZS9p
bmRleGVkZGIvbGlzdC1vcmRlcmluZy1wcml2YXRlLXN0ZGVyci50eHRVVAUAA0BAvld1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACAABjhhJ8TDlq4cFAACKegAAKgAYAAAAAAAAAAAApIGAFg0Ac3Rv
cmFnZS9pbmRleGVkZGIvbGlzdC1vcmRlcmluZy1zdGRlcnIudHh0VVQFAANBQL5XdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAAY4YSZezWYb9BQAAUlEAAC0AGAAAAAAAAAAAAKSBaxwNAHN0b3Jh
Z2UvaW5kZXhlZGRiL21ldGFkYXRhLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADQUC+V3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAAGOGElWjLiW9gQAABMfAAAyABgAAAAAAAAAAACkgc8iDQBzdG9y
YWdlL2luZGV4ZWRkYi9tZXRhZGF0YS1yYWNlLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADQUC+V3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAAGOGEnuatL/nwUAANMiAAAqABgAAAAAAAAAAACkgTEo
DQBzdG9yYWdlL2luZGV4ZWRkYi9tZXRhZGF0YS1yYWNlLXN0ZGVyci50eHRVVAUAA0FAvld1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAABjhhJwX6q5oQGAACGUgAAJQAYAAAAAAAAAAAApIE0Lg0A
c3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEtc3RkZXJyLnR4dFVUBQADQkC+V3V4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAAPWNGEkAAAAAAAAAAAAAAAAZABgAAAAAAAAAEADtQRc1DQBzdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vVVQFAAMtQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA0o0Y
SeLkb+R8BgAApkYAAEQAGAAAAAAAAAAAAKSBajUNAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9h
Ym9ydC1yZXF1ZXN0cy1jYW5jZWxsZWQtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAPsP75XdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgA040YSfiAssZsBgAAY00AADcAGAAAAAAAAAAAAKSBZDwNAHN0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9hYm9ydGVkLXB1dC1wcml2YXRlLXN0ZGVyci50eHRVVAUA
A+0/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADTjRhJ636Ta3cGAACzTAAALwAYAAAAAAAA
AAAApIFBQw0Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Fib3J0ZWQtcHV0LXN0ZGVyci50eHRV
VAUAA+0/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADTjRhJC17qiX8GAAD2awAANwAYAAAA
AAAAAAAApIEhSg0Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2F1dG9pbmNyZW1lbnQtYWJvcnQt
c3RkZXJyLnR4dFVUBQAD7j++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANONGEkVuRbj8QQA
APkcAAA1ABgAAAAAAAAAAACkgRFRDQBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vYmFzaWMtYWRk
LXByaXZhdGUtc3RkZXJyLnR4dFVUBQAD7j++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANON
GElgg2uCAgUAABIdAAAtABgAAAAAAAAAAACkgXFWDQBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
YmFzaWMtYWRkLXN0ZGVyci50eHRVVAUAA+4/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADT
jRhJYAF8Sc0EAAAxGgAANQAYAAAAAAAAAAAApIHaWw0Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L2Jhc2ljLXB1dC1wcml2YXRlLXN0ZGVyci50eHRVVAUAA+4/vld1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACADUjRhJz0Ims+UEAACkGgAALQAYAAAAAAAAAAAApIEWYQ0Ac3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL2Jhc2ljLXB1dC1zdGRlcnIudHh0VVQFAAPvP75XdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgA1I0YSUmG77yLBgAAmzwAAC8AGAAAAAAAAAAAAKSBYmYNAHN0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9ibG9iLWN1cnNvci1zdGRlcnIudHh0VVQFAAPvP75XdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgA1Y0YSev9j2n8CAAApaYAAC8AGAAAAAAAAAAAAKSBVm0NAHN0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9ibG9iLXNpbXBsZS1zdGRlcnIudHh0VVQFAAPxP75XdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgA1I0YSfwHbSs9CgAAqaQAADcAGAAAAAAAAAAAAKSBu3YNAHN0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9ibG9iLXNpbXBsZS13b3JrZXJzLXN0ZGVyci50eHRVVAUAA/A/vld1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADVjRhJM7ZWEAcGAAAaNAAAMgAYAAAAAAAAAAAApIFp
gQ0Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Jsb2Itc3ZnLWltYWdlLXN0ZGVyci50eHRVVAUA
A/I/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADVjRhJl9DeAU8GAABHMgAARAAYAAAAAAAA
AAAApIHchw0Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Jsb2NrZWQtb3Blbi1kYi1yZXF1ZXN0
cy1wcml2YXRlLXN0ZGVyci50eHRVVAUAA/I/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADV
jRhJ5Qn4SKUGAABUMwAAPAAYAAAAAAAAAAAApIGpjg0Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L2Jsb2NrZWQtb3Blbi1kYi1yZXF1ZXN0cy1zdGRlcnIudHh0VVQFAAPyP75XdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgA1o0YSd3GwxsYBgAAGS8AAEEAGAAAAAAAAAAAAKSBxJUNAHN0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9jcmVhdGUtaW5kZXgtZmFpbHVyZXMtcHJpdmF0ZS1zdGRlcnIudHh0
VVQFAAPzP75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA1o0YSRh+52IgBgAA/CsAADkAGAAA
AAAAAAAAAKSBV5wNAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jcmVhdGUtaW5kZXgtZmFpbHVy
ZXMtc3RkZXJyLnR4dFVUBQAD8z++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANaNGElkFAIu
EAYAAHdDAABDABgAAAAAAAAAAACkgeqiDQBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3JlYXRl
b2JqZWN0c3RvcmUtYmFzaWMtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAPzP75XdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgA1o0YSdZLWqlPBgAAJEUAADsAGAAAAAAAAAAAAKSBd6kNAHN0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9jcmVhdGVvYmplY3RzdG9yZS1iYXNpYy1zdGRlcnIudHh0VVQFAAP0
P75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA1o0YSYwv/Z2ZBAAAZBsAAEYAGAAAAAAAAAAA
AKSBO7ANAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jcmVhdGVvYmplY3RzdG9yZS1mYWlsdXJl
cy1wcml2YXRlLXN0ZGVyci50eHRVVAUAA/Q/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADW
jRhJ/AZdtk8EAAA7GAAAPgAYAAAAAAAAAAAApIFUtQ0Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L2NyZWF0ZW9iamVjdHN0b3JlLWZhaWx1cmVzLXN0ZGVyci50eHRVVAUAA/Q/vld1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACADWjRhJVeDcJNsFAADPVgAANAAYAAAAAAAAAAAApIEbug0Ac3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNvci0xLXByaXZhdGUtc3RkZXJyLnR4dFVUBQAD9D++V3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANeNGEllSiRwEwYAAPVYAAAsABgAAAAAAAAAAACkgWTA
DQBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTEtc3RkZXJyLnR4dFVUBQAD9T++V3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANeNGEkvwikUAQYAANR5AAA0ABgAAAAAAAAAAACkgd3G
DQBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTItcHJpdmF0ZS1zdGRlcnIudHh0VVQF
AAP1P75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA140YSbGPCisLBgAAIXUAACwAGAAAAAAA
AAAAAKSBTM0NAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jdXJzb3ItMi1zdGRlcnIudHh0VVQF
AAP2P75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA140YSebAH1HNBQAAFFYAADQAGAAAAAAA
AAAAAKSBvdMNAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jdXJzb3ItMy1wcml2YXRlLXN0ZGVy
ci50eHRVVAUAA/Y/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADYjRhJX4dWC90FAADNVAAA
LAAYAAAAAAAAAAAApIH42Q0Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNvci0zLXN0ZGVy
ci50eHRVVAUAA/c/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADYjRhJlvgGD8EFAABgUAAA
NAAYAAAAAAAAAAAApIE74A0Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNvci00LXByaXZh
dGUtc3RkZXJyLnR4dFVUBQAD9z++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANiNGEmwjKHn
0wUAADVPAAAsABgAAAAAAAAAAACkgWrmDQBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29y
LTQtc3RkZXJyLnR4dFVUBQAD+D++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANiNGEmFDXvh
pQUAAFYuAAA0ABgAAAAAAAAAAACkgaPsDQBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29y
LTUtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAP4P75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
2I0YSTEiyerjBQAAii8AACwAGAAAAAAAAAAAAKSBtvINAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9jdXJzb3ItNS1zdGRlcnIudHh0VVQFAAP4P75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
2I0YSbTZzcaeBQAACC4AADQAGAAAAAAAAAAAAKSB//gNAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9jdXJzb3ItNi1wcml2YXRlLXN0ZGVyci50eHRVVAUAA/g/vld1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACADZjRhJK+6Y+uoFAAA0LwAALAAYAAAAAAAAAAAApIEL/w0Ac3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL2N1cnNvci02LXN0ZGVyci50eHRVVAUAA/k/vld1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACADZjRhJPBFT+4kFAACTKAAANAAYAAAAAAAAAAAApIFbBQ4Ac3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL2N1cnNvci03LXByaXZhdGUtc3RkZXJyLnR4dFVUBQAD+T++V3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIANmNGEmIKa6TuAUAAKcpAAAsABgAAAAAAAAAAACkgVILDgBzdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTctc3RkZXJyLnR4dFVUBQAD+T++V3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIANmNGElOlgEIkwUAAOEoAAA0ABgAAAAAAAAAAACkgXARDgBzdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTgtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAP6P75XdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA2Y0YSbSBrhO0BQAAUSkAACwAGAAAAAAAAAAAAKSBcRcO
AHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jdXJzb3ItOC1zdGRlcnIudHh0VVQFAAP6P75XdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA2Y0YSfZNYMPxBQAAbUAAADYAGAAAAAAAAAAAAKSBix0O
AHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kYXRlLWJhc2ljLXByaXZhdGUtc3RkZXJyLnR4dFVU
BQAD+j++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANqNGEnpYXsu+wUAAJRBAAAuABgAAAAA
AAAAAACkgewjDgBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGF0ZS1iYXNpYy1zdGRlcnIudHh0
VVQFAAP7P75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA2o0YSW7iy8loBQAAxywAADwAGAAA
AAAAAAAAAKSBTyoOAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVkYXRhYmFzZS0xLXBy
aXZhdGUtc3RkZXJyLnR4dFVUBQAD+z++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANqNGEmc
hVcvhwUAALItAAA0ABgAAAAAAAAAAACkgS0wDgBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVs
ZXRlZGF0YWJhc2UtMS1zdGRlcnIudHh0VVQFAAP7P75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgA2o0YSaTaWJUjBgAAijAAADwAGAAAAAAAAAAAAKSBIjYOAHN0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9kZWxldGVkYXRhYmFzZS0yLXByaXZhdGUtc3RkZXJyLnR4dFVUBQAD/D++V3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIANqNGEnOLEh5KQYAACsxAAA0ABgAAAAAAAAAAACkgbs8DgBzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlZGF0YWJhc2UtMi1zdGRlcnIudHh0VVQFAAP8P75X
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA2o0YSW81Ao3OAAAAkgIAAE4AGAAAAAAAAAAAAKSB
UkMOAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVkYXRhYmFzZS1udWxsLW5hbWUtZXhj
ZXB0aW9uLXByaXZhdGUtc3RkZXJyLnR4dFVUBQAD/D++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIANqNGElakqOjTgEAAJ0DAABIABgAAAAAAAAAAACkgahEDgBzdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vZGVsZXRlZGF0YWJhc2UtcmVxdWVzdC1ldmVudC1wcml2YXRlLXN0ZGVyci50eHRVVAUA
A/w/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADbjRhJEapcbIsBAABCBAAAQAAYAAAAAAAA
AAAApIF4Rg4Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWRhdGFiYXNlLXJlcXVlc3Qt
ZXZlbnQtc3RkZXJyLnR4dFVUBQAD/T++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANuNGElg
NvQyVgAAAJkAAABCABgAAAAAAAAAAACkgX1IDgBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVs
ZXRlZGF0YWJhc2UtcmVxdWVzdC1wcml2YXRlLXN0ZGVyci50eHRVVAUAA/0/vld1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACADbjRhJcmPB3w8BAAAhAwAAOgAYAAAAAAAAAAAApIFPSQ4Ac3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWRhdGFiYXNlLXJlcXVlc3Qtc3RkZXJyLnR4dFVUBQAD
/T++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANuNGEmYwDWWIgcAANs3AAA5ABgAAAAAAAAA
AACkgdJKDgBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlaW5kZXgtMS1wcml2YXRlLXN0
ZGVyci50eHRVVAUAA/0/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADbjRhJ899tjKQHAAAL
OAAAMQAYAAAAAAAAAAAApIFnUg4Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWluZGV4
LTEtc3RkZXJyLnR4dFVUBQAD/T++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANuNGEmoWLgs
dgcAAMRPAAA5ABgAAAAAAAAAAACkgXZaDgBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRl
aW5kZXgtMi1wcml2YXRlLXN0ZGVyci50eHRVVAUAA/4/vld1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACADbjRhJ5gkgbvEHAAB/UAAAMQAYAAAAAAAAAAAApIFfYg4Ac3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL2RlbGV0ZWluZGV4LTItc3RkZXJyLnR4dFVUBQAD/j++V3V4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIANyNGEk3kFX/MgUAALIjAAA5ABgAAAAAAAAAAACkgbtqDgBzdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vZGVsZXRlaW5kZXgtMy1wcml2YXRlLXN0ZGVyci50eHRVVAUAA/8/vld1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACADcjRhJjRk0EJAFAAD3JAAAMQAYAAAAAAAAAAAApIFgcA4A
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWluZGV4LTMtc3RkZXJyLnR4dFVUBQAD/z++
V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANyNGEmqrH0SfQUAAMcsAAA5ABgAAAAAAAAAAACk
gVt2DgBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlaW5kZXgtNC1wcml2YXRlLXN0ZGVy
ci50eHRVVAUAA/8/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADcjRhJs+cvQA0HAAAhaAAA
PwAYAAAAAAAAAAAApIFLfA4Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZW9iamVjdHN0
b3JlLTEtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAP/P75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgA3I0YSeexKlAJBwAAsWoAADcAGAAAAAAAAAAAAKSB0YMOAHN0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9kZWxldGVvYmplY3RzdG9yZS0xLXN0ZGVyci50eHRVVAUAAwBAvld1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACADcjRhJfKO5aL0DAACbFAAAOAAYAAAAAAAAAAAApIFLiw4Ac3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2RvdWJsZS1hYm9ydC1wcml2YXRlLXN0ZGVyci50eHRVVAUAAwBAvld1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADcjRhJ1PrP+bMDAADTEQAAMAAYAAAAAAAAAAAApIF6
jw4Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RvdWJsZS1hYm9ydC1zdGRlcnIudHh0VVQFAAMA
QL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA3I0YSXj2USqZAwAAxRQAADcAGAAAAAAAAAAA
AKSBl5MOAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kb3VibGUtb3Blbi1wcml2YXRlLXN0ZGVy
ci50eHRVVAUAAwBAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADdjRhJLOOhDJcDAACLFQAA
LwAYAAAAAAAAAAAApIGhlw4Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RvdWJsZS1vcGVuLXN0
ZGVyci50eHRVVAUAAwFAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADdjRhJlWi5Jo8EAABR
JAAAPgAYAAAAAAAAAAAApIGhmw4Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2djLWNsb3Nlcy1k
YXRhYmFzZS1wcml2YXRlLXN0ZGVyci50eHRVVAUAAwFAvld1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACADdjRhJ4RMD+LgEAAAkJQAANgAYAAAAAAAAAAAApIGooA4Ac3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL2djLWNsb3Nlcy1kYXRhYmFzZS1zdGRlcnIudHh0VVQFAAMCQL5XdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgA3Y0YSasQkFMqBgAAHDcAAD4AGAAAAAAAAAAAAKSB0KUOAHN0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9nZXQtaW5kZXgtZmFpbHVyZXMtcHJpdmF0ZS1zdGRlcnIudHh0VVQF
AAMCQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA3Y0YSZ7PBy9hBgAAwzUAADYAGAAAAAAA
AAAAAKSBcqwOAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9nZXQtaW5kZXgtZmFpbHVyZXMtc3Rk
ZXJyLnR4dFVUBQADAkC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOCNGEkxiKXHlAkAAMXv
AQA4ABgAAAAAAAAAAACkgUOzDgBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZ2V0LWtleXJhbmdl
LXByaXZhdGUtc3RkZXJyLnR4dFVUBQADA0C+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOGN
GEm2e7FGyAkAAPYEAgAwABgAAAAAAAAAAACkgUm9DgBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
Z2V0LWtleXJhbmdlLXN0ZGVyci50eHRVVAUAAwVAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CADhjRhJOpBzm04FAAA0HQAANgAYAAAAAAAAAAAApIF7xw4Ac3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2hhbmRsZS11c2VyLWRlbGV0ZS1zdGRlcnIudHh0VVQFAAMFQL5XdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgA4Y0YSUekbAYbBgAAwTQAAFIAGAAAAAAAAAAAAKSBOc0OAHN0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9pZGJkYXRhYmFzZS1kZWxldGVvYmplY3RzdG9yZS1mYWlsdXJlcy1wcml2
YXRlLXN0ZGVyci50eHRVVAUAAwVAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADhjRhJK97V
LSEGAAC1NQAASgAYAAAAAAAAAAAApIHg0w4Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmRh
dGFiYXNlLWRlbGV0ZW9iamVjdHN0b3JlLWZhaWx1cmVzLXN0ZGVyci50eHRVVAUAAwZAvld1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACADhjRhJ8N0Hj5YEAAAxGQAATAAYAAAAAAAAAAAApIGF2g4A
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmRhdGFiYXNlLXRyYW5zYWN0aW9uLWZhaWx1cmVz
LXByaXZhdGUtc3RkZXJyLnR4dFVUBQADBkC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOGN
GEkRzdhLpwQAAP4YAABEABgAAAAAAAAAAACkgaHfDgBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
aWRiZGF0YWJhc2UtdHJhbnNhY3Rpb24tZmFpbHVyZXMtc3RkZXJyLnR4dFVUBQADBkC+V3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAOGNGEmH/sXxVQUAAJw0AABFABgAAAAAAAAAAACkgcbkDgBz
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRiaW5kZXgtcHJvcGVydGllcy1iYXNpYy1wcml2YXRl
LXN0ZGVyci50eHRVVAUAAwZAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADijRhJbEg2+oIF
AACoNAAAPQAYAAAAAAAAAAAApIGa6g4Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmluZGV4
LXByb3BlcnRpZXMtYmFzaWMtc3RkZXJyLnR4dFVUBQADB0C+V3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAOONGEnXVtcOpAsAAN/JBQBBABgAAAAAAAAAAACkgZPwDgBzdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vaWRia2V5LWFycmF5LWVxdWFsaXR5LXByaXZhdGUtc3RkZXJyLnR4dFVUBQADCUC+
V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOWNGElj5/MdpA0AAJzbBgA5ABgAAAAAAAAAAACk
gbL8DgBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRia2V5LWFycmF5LWVxdWFsaXR5LXN0ZGVy
ci50eHRVVAUAAw1Avld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADljRhJyZbaAPoGAADHcQAA
QgAYAAAAAAAAAAAApIHJCg8Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3Jl
LWNsZWFyLTEtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMNQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgA5Y0YSagAlCXeBgAAMnIAADoAGAAAAAAAAAAAAKSBPxIPAHN0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9pZGJvYmplY3RzdG9yZS1jbGVhci0xLXN0ZGVyci50eHRVVAUAAw1Avld1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACADljRhJdkzIxq0HAACGmAAAQgAYAAAAAAAAAAAApIGRGQ8Ac3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNsZWFyLTItcHJpdmF0ZS1zdGRl
cnIudHh0VVQFAAMOQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA5Y0YSYoB0FSxBwAAypoA
ADoAGAAAAAAAAAAAAKSBuiEPAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9y
ZS1jbGVhci0yLXN0ZGVyci50eHRVVAUAAw5Avld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADm
jRhJjgA8p1EGAACJqwAAQgAYAAAAAAAAAAAApIHfKQ8Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L2lkYm9iamVjdHN0b3JlLWNvdW50LTEtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMPQL5XdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgA5o0YSUD9Xd1hBwAAFOEAADoAGAAAAAAAAAAAAKSBrDAPAHN0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jb3VudC0xLXN0ZGVyci50eHRV
VAUAAw9Avld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADmjRhJR1RSMfAFAADbLgAASQAYAAAA
AAAAAAAApIGBOA8Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNvdW50
LWZhaWx1cmVzLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADD0C+V3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAOaNGEnjMIDpBQYAALMuAABBABgAAAAAAAAAAACkgfQ+DwBzdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY291bnQtZmFpbHVyZXMtc3RkZXJyLnR4dFVUBQADEEC+
V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOaNGEltiIA8JQkAAH6dAQBDABgAAAAAAAAAAACk
gXRFDwBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtZGVsZXRlLTEtcHJp
dmF0ZS1zdGRlcnIudHh0VVQFAAMQQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA540YSYxL
uMWICgAA/eMBADsAGAAAAAAAAAAAAKSBFk8PAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJv
YmplY3RzdG9yZS1kZWxldGUtMS1zdGRlcnIudHh0VVQFAAMRQL5XdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgA540YSbujCYhuBgAAgTUAAEMAGAAAAAAAAAAAAKSBE1oPAHN0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1kZWxldGUtMi1wcml2YXRlLXN0ZGVyci50eHRVVAUA
AxJAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADnjRhJrDBJs3oGAAAWNQAAOwAYAAAAAAAA
AAAApIH+YA8Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWRlbGV0ZS0y
LXN0ZGVyci50eHRVVAUAAxJAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADnjRhJKp8DIiwG
AADOOAAASgAYAAAAAAAAAAAApIHtZw8Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVj
dHN0b3JlLWRlbGV0ZS1mYWlsdXJlcy1wcml2YXRlLXN0ZGVyci50eHRVVAUAAxJAvld1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACADnjRhJTjMU8nIGAAD2OAAAQgAYAAAAAAAAAAAApIGdbg8Ac3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWRlbGV0ZS1mYWlsdXJlcy1zdGRl
cnIudHh0VVQFAAMSQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA6I0YSRG/pcrxBQAA2S4A
AEcAGAAAAAAAAAAAAKSBi3UPAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9y
ZS1nZXQtZmFpbHVyZXMtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMTQL5XdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgA6I0YSbZZ7sf+BQAAsS4AAD8AGAAAAAAAAAAAAKSB/XsPAHN0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1nZXQtZmFpbHVyZXMtc3RkZXJyLnR4dFVUBQAD
E0C+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOiNGEliaeaXLAYAANU4AABRABgAAAAAAAAA
AACkgXSCDwBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtcHV0LWFuZC1j
bGVhci1mYWlsdXJlcy1wcml2YXRlLXN0ZGVyci50eHRVVAUAAxNAvld1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACADojRhJheC+CnwGAAD9OAAASQAYAAAAAAAAAAAApIEriQ8Ac3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLXB1dC1hbmQtY2xlYXItZmFpbHVyZXMtc3RkZXJy
LnR4dFVUBQADE0C+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOiNGEkmbcezggMAABIRAABP
ABgAAAAAAAAAAACkgSqQDwBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRidHJhbnNhY3Rpb24t
b2JqZWN0c3RvcmUtZmFpbHVyZXMtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMUQL5XdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgA6I0YSfxD6a0IBAAAxBMAAEcAGAAAAAAAAAAAAKSBNZQPAHN0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9pZGJ0cmFuc2FjdGlvbi1vYmplY3RzdG9yZS1mYWlsdXJlcy1z
dGRlcnIudHh0VVQFAAMUQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA6I0YSenLiNZrAQAA
rAQAAEUAGAAAAAAAAAAAAKSBvpgPAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJ2ZXJzaW9u
Y2hhbmdlZXZlbnQtY29uc3RydWN0b3Itc3RkZXJyLnR4dFVUBQADFEC+V3V4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAOmNGElFQtDrGQgAAHxWAQAzABgAAAAAAAAAAACkgaiaDwBzdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtMS1wcml2YXRlLXN0ZGVyci50eHRVVAUAAxVAvld1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACADpjRhJSmWxkxIJAABvaQEAKwAYAAAAAAAAAAAApIEuow8Ac3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LTEtc3RkZXJyLnR4dFVUBQADFkC+V3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAOqNGElmi1+BtwsAAKtuAQAzABgAAAAAAAAAAACkgaWsDwBzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtMi1wcml2YXRlLXN0ZGVyci50eHRVVAUAAxdAvld1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADqjRhJqEWxYEwMAAD0eAEAKwAYAAAAAAAAAAAApIHJ
uA8Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LTItc3RkZXJyLnR4dFVUBQADF0C+V3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOqNGElkctfTJAYAAEdLAAAzABgAAAAAAAAAAACkgXrF
DwBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtMy1wcml2YXRlLXN0ZGVyci50eHRVVAUA
AxhAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADqjRhJKdulDNUGAAAYUAAAKwAYAAAAAAAA
AAAApIELzA8Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LTMtc3RkZXJyLnR4dFVUBQAD
GEC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOuNGEkpHhZzWgYAAEqCAAAzABgAAAAAAAAA
AACkgUXTDwBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtNC1wcml2YXRlLXN0ZGVyci50
eHRVVAUAAxlAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADrjRhJcrYkPKkHAABokAAAKwAY
AAAAAAAAAAAApIEM2g8Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LTQtc3RkZXJyLnR4
dFVUBQADGUC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOuNGElLSxbdnAUAAKEjAAAzABgA
AAAAAAAAAACkgRriDwBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtNS1wcml2YXRlLXN0
ZGVyci50eHRVVAUAAxlAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADrjRhJoGCKarwFAAAU
IQAAKwAYAAAAAAAAAAAApIEj6A8Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LTUtc3Rk
ZXJyLnR4dFVUBQADGUC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOyNGEnKcVGVKgcAAF0N
AQA6ABgAAAAAAAAAAACkgUTuDwBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtY3Vyc29y
LTEtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMbQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
7I0YSeEZ0qKtCAAA4hQBADIAGAAAAAAAAAAAAKSB4vUPAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9pbmRleC1jdXJzb3ItMS1zdGRlcnIudHh0VVQFAAMcQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgA7Y0YSReeL9nPBwAAqygBADoAGAAAAAAAAAAAAKSB+/4PAHN0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9pbmRleC1jdXJzb3ItMi1wcml2YXRlLXN0ZGVyci50eHRVVAUAAx1Avld1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACADtjRhJrZDDVNQIAACIJwEAMgAYAAAAAAAAAAAApIE+BxAAc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWN1cnNvci0yLXN0ZGVyci50eHRVVAUAAx5Avld1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADujRhJr0N6oqcLAAANEgIAOgAYAAAAAAAAAAAApIF+
EBAAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWN1cnNvci0zLXByaXZhdGUtc3RkZXJy
LnR4dFVUBQADH0C+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAO6NGEmLwv/84Q4AABA/AgAy
ABgAAAAAAAAAAACkgZkcEABzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtY3Vyc29yLTMt
c3RkZXJyLnR4dFVUBQADIEC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAO6NGElBkUFX3wUA
AC4lAABBABgAAAAAAAAAAACkgeYrEABzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtZ2V0
LWNvdW50LWJhc2ljLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADIEC+V3V4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAO+NGEmCW70KUwYAAHUkAAA5ABgAAAAAAAAAAACkgUAyEABzdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vaW5kZXgtZ2V0LWNvdW50LWJhc2ljLXN0ZGVyci50eHRVVAUAAyFAvld1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACADvjRhJHhc/5XwGAABxNAAARAAYAAAAAAAAAAAApIEGORAA
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWdldC1jb3VudC1mYWlsdXJlcy1wcml2YXRl
LXN0ZGVyci50eHRVVAUAAyFAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADvjRhJnX4n0C8H
AADnNAAAPAAYAAAAAAAAAAAApIEAQBAAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWdl
dC1jb3VudC1mYWlsdXJlcy1zdGRlcnIudHh0VVQFAAMhQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgA740YSYShVMmlBAAAsyMAADkAGAAAAAAAAAAAAKSBpUcQAHN0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9rZXlwYXRoLWJhc2ljLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADIUC+V3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAO+NGEmtm2GxtQQAAJcjAAAxABgAAAAAAAAAAACkgb1MEABzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4va2V5cGF0aC1iYXNpYy1zdGRlcnIudHh0VVQFAAMiQL5XdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA740YSXuYhpoHBQAA+CEAACoAGAAAAAAAAAAAAKSB3VEQ
AHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9sZWFrLTEtc3RkZXJyLnR4dFVUBQADIkC+V3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAPCNGEkucdecHwgAAH/KAQBVABgAAAAAAAAAAACkgUhXEABz
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vbWVtb3J5LWluZGV4LW5vdC1kZWxldGVkLXdpdGgtb2Jq
ZWN0c3RvcmUtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMjQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgA8I0YSfNCNVtPCAAA4rkBAE0AGAAAAAAAAAAAAKSB9l8QAHN0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9tZW1vcnktaW5kZXgtbm90LWRlbGV0ZWQtd2l0aC1vYmplY3RzdG9yZS1zdGRlcnIu
dHh0VVQFAAMkQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA8I0YSfEvFS+bBQAAhyYAAEIA
GAAAAAAAAAAAAKSBzGgQAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9uZXctZGF0YWJhc2UtYWZ0
ZXItdXNlci1kZWxldGUtc3RkZXJyLnR4dFVUBQADJEC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAPCNGEnfCazBegUAAC8uAABCABgAAAAAAAAAAACkgeNuEABzdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vb2JqZWN0c3RvcmUtYXR0cmlidXRlcy1wcml2YXRlLXN0ZGVyci50eHRVVAUAAyRAvld1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADwjRhJd8WuWGIFAACnKwAAOgAYAAAAAAAAAAAApIHZ
dBAAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29iamVjdHN0b3JlLWF0dHJpYnV0ZXMtc3RkZXJy
LnR4dFVUBQADJEC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPGNGEnDeyzOcwcAAMiKAABP
ABgAAAAAAAAAAACkga96EABzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb2JqZWN0c3RvcmUtY3Vy
c29yLWFkdmFuY2UtZmFpbHVyZXMtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMlQL5XdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgA8Y0YSW0bN+6iBwAAKY4AAEcAGAAAAAAAAAAAAKSBq4IQAHN0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9vYmplY3RzdG9yZS1jdXJzb3ItYWR2YW5jZS1mYWlsdXJlcy1z
dGRlcnIudHh0VVQFAAMlQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA8Y0YSdn+g5FpBwAA
Jo4AAFAAGAAAAAAAAAAAAKSBzooQAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vYmplY3RzdG9y
ZS1jdXJzb3ItY29udGludWUtZmFpbHVyZXMtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMlQL5XdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA8Y0YSScYFdumBwAAaZEAAEgAGAAAAAAAAAAAAKSBwZIQ
AHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vYmplY3RzdG9yZS1jdXJzb3ItY29udGludWUtZmFp
bHVyZXMtc3RkZXJyLnR4dFVUBQADJkC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPGNGEks
LXZHdAYAAEY2AAA/ABgAAAAAAAAAAACkgemaEABzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3Bl
bmN1cnNvci1mYWlsdXJlcy1wcml2YXRlLXN0ZGVyci50eHRVVAUAAyZAvld1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACADxjRhJr9ytw80GAACtNgAANwAYAAAAAAAAAAAApIHWoRAAc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL29wZW5jdXJzb3ItZmFpbHVyZXMtc3RkZXJyLnR4dFVUBQADJkC+V3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPKNGEmFiES2kgIAAAgKAABGABgAAAAAAAAAAACkgRSp
EABzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLXJlcXVlc3QtZXZlbnQtcHJp
dmF0ZS1zdGRlcnIudHh0VVQFAAMnQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA8o0YSWXY
KjLvAgAAwQsAAD4AGAAAAAAAAAAAAKSBJqwQAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVu
ZGF0YWJhc2UtcmVxdWVzdC1ldmVudC1zdGRlcnIudHh0VVQFAAMnQL5XdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgA8o0YSb3ID6xOAQAAYQQAAEAAGAAAAAAAAAAAAKSBja8QAHN0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtcmVxdWVzdC1wcml2YXRlLXN0ZGVyci50eHRVVAUA
AydAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADyjRhJUBmMIjIBAABjBgAAOAAYAAAAAAAA
AAAApIFVsRAAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1yZXF1ZXN0LXN0
ZGVyci50eHRVVAUAAydAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADyjRhJcI76iRMEAADE
IwAAVAAYAAAAAAAAAAAApIH5shAAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFz
ZS1zdWNjZXNzLWFmdGVyLXZlcnNpb25jaGFuZ2UtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMnQL5X
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA8o0YSatLBvRMBAAAIiQAAEwAGAAAAAAAAAAAAKSB
mrcQAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2Utc3VjY2Vzcy1hZnRlci12
ZXJzaW9uY2hhbmdlLXN0ZGVyci50eHRVVAUAAydAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CADyjRhJpA1Y7V4EAACNLAAAQQAYAAAAAAAAAAAApIFsvBAAc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL29wZW5kYXRhYmFzZS12ZXJzaW9ucy1wcml2YXRlLXN0ZGVyci50eHRVVAUAAyhAvld1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACADyjRhJSKEyM3AEAAC7KQAAOQAYAAAAAAAAAAAApIFFwRAA
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS12ZXJzaW9ucy1zdGRlcnIudHh0
VVQFAAMoQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA8o0YSeh2Y9a8BAAAtRsAAD4AGAAA
AAAAAAAAAKSBKMYQAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXF1ZXN0LXJlYWR5c3RhdGUt
cHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMoQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA8o0Y
SVwvs0TTBAAAnxsAADYAGAAAAAAAAAAAAKSBXMsQAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9y
ZXF1ZXN0LXJlYWR5c3RhdGUtc3RkZXJyLnR4dFVUBQADKEC+V3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAPKNGEnoOPipJgYAAGszAABDABgAAAAAAAAAAACkgZ/QEABzdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTEtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMo
QL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA840YScIpIwXbBgAAM0QAAEMAGAAAAAAAAAAA
AKSBQtcQAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi90cmFuc2FjdGlvbi1zY2hlZHVsZXItMi1w
cml2YXRlLXN0ZGVyci50eHRVVAUAAylAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADzjRhJ
OeKdVaMGAABgQgAAQwAYAAAAAAAAAAAApIGa3hAAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Ry
YW5zYWN0aW9uLXNjaGVkdWxlci0zLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADKUC+V3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAPONGElC2y6daQYAAGU7AAA7ABgAAAAAAAAAAACkgbrlEABzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTMtc3RkZXJyLnR4dFVU
BQADKUC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPONGEnwaacfOQYAAM1lAABDABgAAAAA
AAAAAACkgZjsEABzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb24tc2NoZWR1bGVy
LTQtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMqQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
840YSUaU7/aPBgAAC20AADsAGAAAAAAAAAAAAKSBTvMQAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi90cmFuc2FjdGlvbi1zY2hlZHVsZXItNC1zdGRlcnIudHh0VVQFAAMqQL5XdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgA840YSTskBtOlBgAACk0AAEMAGAAAAAAAAAAAAKSBUvoQAHN0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi90cmFuc2FjdGlvbi1zY2hlZHVsZXItNS1wcml2YXRlLXN0ZGVyci50
eHRVVAUAAypAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD0jRhJyhayy5QGAABpQgAAQwAY
AAAAAAAAAAAApIF0AREAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9uLXNjaGVk
dWxlci02LXByaXZhdGUtc3RkZXJyLnR4dFVUBQADK0C+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAPSNGElqednE/wQAANktAABLABgAAAAAAAAAAACkgYUIEQBzdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vdHJhbnNhY3Rpb25zLXN0b3Atb24tbmF2aWdhdGlvbi1wcml2YXRlLXN0ZGVyci50eHRV
VAUAAytAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD0jRhJyzdjxq0GAAC1YwAAQwAYAAAA
AAAAAAAApIEJDhEAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9ucy1zdG9wLW9u
LW5hdmlnYXRpb24tc3RkZXJyLnR4dFVUBQADLEC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
APSNGElTbg8svAQAAFwzAABLABgAAAAAAAAAAACkgTMVEQBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vdmVyc2lvbmNoYW5nZS1hYm9ydC10aGVuLXJlb3Blbi1wcml2YXRlLXN0ZGVyci50eHRVVAUA
AyxAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD0jRhJq/VKqDIFAABBPAAAQwAYAAAAAAAA
AAAApIF0GhEAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3ZlcnNpb25jaGFuZ2UtYWJvcnQtdGhl
bi1yZW9wZW4tc3RkZXJyLnR4dFVUBQADLEC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPSN
GEk8hH3i8wQAAAApAAA/ABgAAAAAAAAAAACkgSMgEQBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
dmVyc2lvbmNoYW5nZS1ldmVudC1wcml2YXRlLXN0ZGVyci50eHRVVAUAAyxAvld1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAD1jRhJcRXrHDAFAADWKQAANwAYAAAAAAAAAAAApIGPJREAc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL3ZlcnNpb25jaGFuZ2UtZXZlbnQtc3RkZXJyLnR4dFVUBQADLUC+
V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPWNGEmXgYgOPgEAAJsEAAA0ABgAAAAAAAAAAACk
gTArEQBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vd29ya2Vycy1kaXNhYmxlZC1zdGRlcnIudHh0
VVQFAAMtQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAAY4YSeaQAq63BgAAXmQAADQAGAAA
AAAAAAAAAKSB3CwRAHN0b3JhZ2UvaW5kZXhlZGRiL211dGF0aW5nLWN1cnNvci1wcml2YXRlLXN0
ZGVyci50eHRVVAUAA0JAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAACjhhJnlde3soGAACL
YQAALAAYAAAAAAAAAAAApIEBNBEAc3RvcmFnZS9pbmRleGVkZGIvbXV0YXRpbmctY3Vyc29yLXN0
ZGVyci50eHRVVAUAA0NAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAACjhhJb61lvC8EAADV
FQAARAAYAAAAAAAAAAAApIExOxEAc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0LWxvb2t1cHMtaW4t
dmVyc2lvbmNoYW5nZS1wcml2YXRlLXN0ZGVyci50eHRVVAUAA0NAvld1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAACjhhJUdO6SUQEAAD2FgAAPAAYAAAAAAAAAAAApIHePxEAc3RvcmFnZS9pbmRl
eGVkZGIvb2JqZWN0LWxvb2t1cHMtaW4tdmVyc2lvbmNoYW5nZS1zdGRlcnIudHh0VVQFAANDQL5X
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAAo4YSYOwAZV8BwAAjmsAAD4AGAAAAAAAAAAAAKSB
mEQRAHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQtcHJpdmF0ZS1z
dGRlcnIudHh0VVQFAANEQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAA44YSTbcNY1aBwAA
vGYAADYAGAAAAAAAAAAAAKSBjEwRAHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWF1dG9p
bmNyZW1lbnQtc3RkZXJyLnR4dFVUBQADRUC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAAOO
GElgXSNsZQkAAOSMAAA3ABgAAAAAAAAAAACkgVZUEQBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3Rz
dG9yZS1iYXNpY3MtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAANFQL5XdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgABI4YSZlfXHoKCgAA0ZEAAC8AGAAAAAAAAAAAAKSBLF4RAHN0b3JhZ2UvaW5kZXhl
ZGRiL29iamVjdHN0b3JlLWJhc2ljcy1zdGRlcnIudHh0VVQFAANHQL5XdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAA44YSX6CweeDCgAAmZAAADcAGAAAAAAAAAAAAKSBn2gRAHN0b3JhZ2UvaW5k
ZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy13b3JrZXJzLXN0ZGVyci50eHRVVAUAA0ZAvld1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAAEjhhJoyu/CAQHAACeNwAANgAYAAAAAAAAAAAApIGTcxEA
c3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY2xlYXItcHJpdmF0ZS1zdGRlcnIudHh0VVQF
AANHQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgABI4YSVMF9Bg0BwAAVzYAAC4AGAAAAAAA
AAAAAKSBB3sRAHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNsZWFyLXN0ZGVyci50eHRV
VAUAA0dAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAEjhhJYfRmtroIAAD/egEANgAYAAAA
AAAAAAAApIGjghEAc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY291bnQtcHJpdmF0ZS1z
dGRlcnIudHh0VVQFAANIQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgABY4YSQpC9+p0CQAA
RaUBAC4AGAAAAAAAAAAAAKSBzYsRAHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNvdW50
LXN0ZGVyci50eHRVVAUAA0pAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAIjhhJBS6kjfUN
AAAxrAUANwAYAAAAAAAAAAAApIGplREAc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vy
c29yLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADT0C+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AAuOGElh44qJ7w0AAH1GBQAvABgAAAAAAAAAAACkgQ+kEQBzdG9yYWdlL2luZGV4ZWRkYi9vYmpl
Y3RzdG9yZS1jdXJzb3Itc3RkZXJyLnR4dFVUBQADVUC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAAuOGEljHnbp7gYAAFpHAABCABgAAAAAAAAAAACkgWeyEQBzdG9yYWdlL2luZGV4ZWRkYi9v
YmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS1wcml2YXRlLXN0ZGVyci50eHRVVAUAA1VAvld1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAALjhhJPQZXDWgHAACARwAAOgAYAAAAAAAAAAAApIHR
uREAc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUtc3RkZXJy
LnR4dFVUBQADVkC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAAKOGEl8b78JPAMAAA8PAABD
ABgAAAAAAAAAAACkga3BEQBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RTdG9yZS1yZXF1aXJlZC1h
cmd1bWVudHMtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAANDQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAAo4YSTD1hMyaAwAA5RAAADsAGAAAAAAAAAAAAKSBZsURAHN0b3JhZ2UvaW5kZXhlZGRi
L29iamVjdFN0b3JlLXJlcXVpcmVkLWFyZ3VtZW50cy1zdGRlcnIudHh0VVQFAANEQL5XdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAC44YSZOUFY3OCAAAX/AAADAAGAAAAAAAAAAAAKSBdckRAHN0
b3JhZ2UvaW5kZXhlZGRiL29kZC1zdHJpbmdzLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADVkC+V3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAAyOGEmXkQKeIAQAAGAvAAA2ABgAAAAAAAAAAACkga3S
EQBzdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWJhZC12ZXJzaW9ucy1wcml2YXRlLXN0ZGVyci50eHRV
VAUAA1dAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAANjhhJFaMeF9kDAABNIAAALgAYAAAA
AAAAAAAApIE91xEAc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1iYWQtdmVyc2lvbnMtc3RkZXJyLnR4
dFVUBQADWUC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAA2OGEkxKdW8mAQAAAYfAAAwABgA
AAAAAAAAAACkgX7bEQBzdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWN1cnNvci1wcml2YXRlLXN0ZGVy
ci50eHRVVAUAA1lAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAANjhhJK01ms0cFAABhIgAA
KAAYAAAAAAAAAAAApIGA4BEAc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3Itc3RkZXJyLnR4
dFVUBQADWUC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAA2OGElK4f70FwYAAKs8AAA8ABgA
AAAAAAAAAACkgSnmEQBzdG9yYWdlL2luZGV4ZWRkYi9vcGVuLWR1cmluZy10cmFuc2FjdGlvbi1w
cml2YXRlLXN0ZGVyci50eHRVVAUAA1lAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAANjhhJ
Xg+tjREGAAADPAAANAAYAAAAAAAAAAAApIG27BEAc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1kdXJp
bmctdHJhbnNhY3Rpb24tc3RkZXJyLnR4dFVUBQADWkC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAA2OGEkIk7R6ywQAACY1AAAyABgAAAAAAAAAAACkgTXzEQBzdG9yYWdlL2luZGV4ZWRkYi9v
cGVuLW9yZGVyaW5nLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADWkC+V3V4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAA2OGElctNRUBQUAAFk2AAAqABgAAAAAAAAAAACkgWz4EQBzdG9yYWdlL2luZGV4
ZWRkYi9vcGVuLW9yZGVyaW5nLXN0ZGVyci50eHRVVAUAA1pAvld1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAAOjhhJF8AhHsMDAABmHwAALwAYAAAAAAAAAAAApIHV/REAc3RvcmFnZS9pbmRleGVk
ZGIvb3Blbi10d2ljZS13b3JrZXJzLXN0ZGVyci50eHRVVAUAA1tAvld1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAOjhhJT0Mr8JYHAACpiQAAMwAYAAAAAAAAAAAApIEBAhIAc3RvcmFnZS9pbmRl
eGVkZGIvb3BlbmN1cnNvci1rZXktcHJpdmF0ZS1zdGRlcnIudHh0VVQFAANbQL5XdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgADo4YScH5CBO7BwAAlpMAACsAGAAAAAAAAAAAAKSBBAoSAHN0b3Jh
Z2UvaW5kZXhlZGRiL29wZW5jdXJzb3Ita2V5LXN0ZGVyci50eHRVVAUAA1tAvld1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAAOjhhJ7gJQzVYJAACH5wAANwAYAAAAAAAAAAAApIEkEhIAc3RvcmFn
ZS9pbmRleGVkZGIvb3B0aW9uYWwtYXJndW1lbnRzLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADXEC+
V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAA+OGEnTb+DIowkAAH3iAAAvABgAAAAAAAAAAACk
gesbEgBzdG9yYWdlL2luZGV4ZWRkYi9vcHRpb25hbC1hcmd1bWVudHMtc3RkZXJyLnR4dFVUBQAD
XUC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAA+OGEnk/4w1fQYAAGE6AAA1ABgAAAAAAAAA
AACkgfclEgBzdG9yYWdlL2luZGV4ZWRkYi9wZW5kaW5nLWFjdGl2aXR5LXByaXZhdGUtc3RkZXJy
LnR4dFVUBQADXkC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABGOGEnykp+j5AYAAI48AAAt
ABgAAAAAAAAAAACkgeMsEgBzdG9yYWdlL2luZGV4ZWRkYi9wZW5kaW5nLWFjdGl2aXR5LXN0ZGVy
ci50eHRVVAUAA2FAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAQjhhJetX3szQHAAAFPQAA
NQAYAAAAAAAAAAAApIEuNBIAc3RvcmFnZS9pbmRleGVkZGIvcGVuZGluZy1hY3Rpdml0eS13b3Jr
ZXJzLXN0ZGVyci50eHRVVAUAA19Avld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAARjhhJVGpw
t9IEAADKIQAAQwAYAAAAAAAAAAAApIHROxIAc3RvcmFnZS9pbmRleGVkZGIvcGVuZGluZy12ZXJz
aW9uLWNoYW5nZS1vbi1leGl0LXByaXZhdGUtc3RkZXJyLnR4dFVUBQADYUC+V3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIABGOGEn6+zr1xwQAAJMeAAA7ABgAAAAAAAAAAACkgSBBEgBzdG9yYWdl
L2luZGV4ZWRkYi9wZW5kaW5nLXZlcnNpb24tY2hhbmdlLW9uLWV4aXQtc3RkZXJyLnR4dFVUBQAD
YUC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABGOGEl71+EAZQQAAGoeAABBABgAAAAAAAAA
AACkgVxGEgBzdG9yYWdlL2luZGV4ZWRkYi9wZW5kaW5nLXZlcnNpb24tY2hhbmdlLXN0dWNrLXBy
aXZhdGUtc3RkZXJyLnR4dFVUBQADYkC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABKOGEkl
JG8PlQQAACIiAAA5ABgAAAAAAAAAAACkgTxLEgBzdG9yYWdlL2luZGV4ZWRkYi9wZW5kaW5nLXZl
cnNpb24tY2hhbmdlLXN0dWNrLXN0ZGVyci50eHRVVAUAA2NAvld1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAARjhhJki8dXZYEAABkIAAAVgAYAAAAAAAAAAAApIFEUBIAc3RvcmFnZS9pbmRleGVk
ZGIvcGVuZGluZy12ZXJzaW9uLWNoYW5nZS1zdHVjay13b3Jrcy13aXRoLXRlcm1pbmF0ZS1wcml2
YXRlLXN0ZGVyci50eHRVVAUAA2JAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAASjhhJErI6
Lc8EAADSIgAATgAYAAAAAAAAAAAApIFqVRIAc3RvcmFnZS9pbmRleGVkZGIvcGVuZGluZy12ZXJz
aW9uLWNoYW5nZS1zdHVjay13b3Jrcy13aXRoLXRlcm1pbmF0ZS1zdGRlcnIudHh0VVQFAANjQL5X
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAEo4YSWiCZvrwBQAABmAAADAAGAAAAAAAAAAAAKSB
wVoSAHN0b3JhZ2UvaW5kZXhlZGRiL3BlcnNpc3RlbmNlLXByaXZhdGUtc3RkZXJyLnR4dFVUBQAD
Y0C+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABKOGEnlvAXMEQYAAKtfAAAoABgAAAAAAAAA
AACkgRthEgBzdG9yYWdlL2luZGV4ZWRkYi9wZXJzaXN0ZW5jZS1zdGRlcnIudHh0VVQFAANkQL5X
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAEo4YSScc1BKCBwAAmGYAADsAGAAAAAAAAAAAAKSB
jmcSAHN0b3JhZ2UvaW5kZXhlZGRiL3ByZWZldGNoLWJ1Z2ZpeC0xMDgwNzEtcHJpdmF0ZS1zdGRl
cnIudHh0VVQFAANkQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAEo4YSX0NDMqkBwAAomQA
ADMAGAAAAAAAAAAAAKSBhW8SAHN0b3JhZ2UvaW5kZXhlZGRiL3ByZWZldGNoLWJ1Z2ZpeC0xMDgw
NzEtc3RkZXJyLnR4dFVUBQADZEC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABOOGEnqKJZo
VRIAAI7lBgA6ABgAAAAAAAAAAACkgZZ3EgBzdG9yYWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1pbnZh
bGlkYXRpb24tcHJpdmF0ZS1zdGRlcnIudHh0VVQFAANmQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAFI4YSbFcKMysFAAAWWoHADIAGAAAAAAAAAAAAKSBX4oSAHN0b3JhZ2UvaW5kZXhlZGRi
L3ByZWZldGNoLWludmFsaWRhdGlvbi1zdGRlcnIudHh0VVQFAANoQL5XdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAFY4YSco9Hx6lBgAA+FUAADIAGAAAAAAAAAAAAKSBd58SAHN0b3JhZ2UvaW5k
ZXhlZGRiL3ByZWZldGNoLXJhY2UtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAANpQL5XdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAFY4YSbRa/CqIBgAAtlMAACoAGAAAAAAAAAAAAKSBiKYSAHN0b3Jh
Z2UvaW5kZXhlZGRiL3ByZWZldGNoLXJhY2Utc3RkZXJyLnR4dFVUBQADaUC+V3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIABWOGElx36m4AwYAAFI/AABGABgAAAAAAAAAAACkgXStEgBzdG9yYWdl
L2luZGV4ZWRkYi9wcmltYXJ5LWtleS11bmlxdWUtdG8tb2JqZWN0c3RvcmUtcHJpdmF0ZS1zdGRl
cnIudHh0VVQFAANpQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAFY4YSQ9vGTc9BgAAx0YA
AD4AGAAAAAAAAAAAAKSB97MSAHN0b3JhZ2UvaW5kZXhlZGRiL3ByaW1hcnkta2V5LXVuaXF1ZS10
by1vYmplY3RzdG9yZS1zdGRlcnIudHh0VVQFAANpQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAFY4YSTqbDDLABAAAbx4AADQAGAAAAAAAAAAAAKSBrLoSAHN0b3JhZ2UvaW5kZXhlZGRiL3F1
ZXVlZC1jb21tYW5kcy1wcml2YXRlLXN0ZGVyci50eHRVVAUAA2lAvld1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAVjhhJGFceyH0FAAB/IgAALAAYAAAAAAAAAAAApIHavxIAc3RvcmFnZS9pbmRl
eGVkZGIvcXVldWVkLWNvbW1hbmRzLXN0ZGVyci50eHRVVAUAA2lAvld1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAVjhhJNPwPf3AFAADhHwAALQAYAAAAAAAAAAAApIG9xRIAc3RvcmFnZS9pbmRl
eGVkZGIvcmVhZG9ubHktcHJpdmF0ZS1zdGRlcnIudHh0VVQFAANqQL5XdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAFY4YSVgEvV44AwAA6w4AADgAGAAAAAAAAAAAAKSBlMsSAHN0b3JhZ2UvaW5k
ZXhlZGRiL3JlYWRvbmx5LXByb3BlcnRpZXMtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAANqQL5XdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAFY4YSXDcKQuiAwAAFxEAADAAGAAAAAAAAAAAAKSBPs8S
AHN0b3JhZ2UvaW5kZXhlZGRiL3JlYWRvbmx5LXByb3BlcnRpZXMtc3RkZXJyLnR4dFVUBQADakC+
V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABWOGEmI7ULYtgUAAHcgAAAlABgAAAAAAAAAAACk
gUrTEgBzdG9yYWdlL2luZGV4ZWRkYi9yZWFkb25seS1zdGRlcnIudHh0VVQFAANqQL5XdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAFY4YSVUUocxDBgAANywAADsAGAAAAAAAAAAAAKSBX9kSAHN0
b3JhZ2UvaW5kZXhlZGRiL3JlcXVlc3QtY29udGludWUtYWJvcnQtcHJpdmF0ZS1zdGRlcnIudHh0
VVQFAANqQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAFo4YSRf41CFOBgAASioAADMAGAAA
AAAAAAAAAKSBF+ASAHN0b3JhZ2UvaW5kZXhlZGRiL3JlcXVlc3QtY29udGludWUtYWJvcnQtc3Rk
ZXJyLnR4dFVUBQADa0C+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABaOGEk1Ss7kAQYAADVA
AAA+ABgAAAAAAAAAAACkgdLmEgBzdG9yYWdlL2luZGV4ZWRkYi9yZXF1ZXN0LWV2ZW50LXByb3Bh
Z2F0aW9uLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADa0C+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIABaOGElE6JHYGgYAAA8/AAA2ABgAAAAAAAAAAACkgUvtEgBzdG9yYWdlL2luZGV4ZWRkYi9y
ZXF1ZXN0LWV2ZW50LXByb3BhZ2F0aW9uLXN0ZGVyci50eHRVVAUAA2tAvld1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAAWjhhJfGIZb+kFAAAJKQAAOQAYAAAAAAAAAAAApIHV8xIAc3RvcmFnZS9p
bmRleGVkZGIvcmVxdWVzdC1yZXN1bHQtY2FjaGUtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAANrQL5X
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAFo4YSaGNl5MLBgAA1ygAADEAGAAAAAAAAAAAAKSB
MfoSAHN0b3JhZ2UvaW5kZXhlZGRiL3JlcXVlc3QtcmVzdWx0LWNhY2hlLXN0ZGVyci50eHRVVAUA
A2xAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAWjhhJs22DJJsEAAASIAAAOAAYAAAAAAAA
AAAApIGnABMAc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fYmxvY2tlZC1wcml2YXRlLXN0
ZGVyci50eHRVVAUAA2xAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAWjhhJ01t0VgsFAAAZ
IwAAMAAYAAAAAAAAAAAApIG0BRMAc3RvcmFnZS9pbmRleGVkZGIvc2V0X3ZlcnNpb25fYmxvY2tl
ZC1zdGRlcnIudHh0VVQFAANsQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAFo4YSYgeqO2I
BAAAiScAAE4AGAAAAAAAAAAAAKSBKQsTAHN0b3JhZ2UvaW5kZXhlZGRiL3NldHZlcnNpb24tYmxv
Y2tlZC1ieS12ZXJzaW9uY2hhbmdlLWNsb3NlLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADbEC+V3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABaOGEli00i9YAQAAM4nAABGABgAAAAAAAAAAACkgTkQ
EwBzdG9yYWdlL2luZGV4ZWRkYi9zZXR2ZXJzaW9uLWJsb2NrZWQtYnktdmVyc2lvbmNoYW5nZS1j
bG9zZS1zdGRlcnIudHh0VVQFAANsQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAFo4YSb83
LV6JBAAAByUAADsAGAAAAAAAAAAAAKSBGRUTAHN0b3JhZ2UvaW5kZXhlZGRiL3NldHZlcnNpb24t
bm90LWJsb2NrZWQtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAANsQL5XdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAFo4YSYjoMTesBAAAiiUAADMAGAAAAAAAAAAAAKSBFxoTAHN0b3JhZ2UvaW5kZXhl
ZGRiL3NldHZlcnNpb24tbm90LWJsb2NrZWQtc3RkZXJyLnR4dFVUBQADbEC+V3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIABiOGEl+qqK1yw4AAJZjBAA1ABgAAAAAAAAAAACkgTAfEwBzdG9yYWdl
L2luZGV4ZWRkYi9zdHJ1Y3R1cmVkLWNsb25lLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADb0C+V3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABmOGElCB7zy/w0AAD1nBAAtABgAAAAAAAAAAACkgWou
EwBzdG9yYWdlL2luZGV4ZWRkYi9zdHJ1Y3R1cmVkLWNsb25lLXN0ZGVyci50eHRVVAUAA3FAvld1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAZjhhJmIL8074FAAA6JQAALgAYAAAAAAAAAAAApIHQ
PBMAc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtc3RkZXJyLnR4dFVUBQADcUC+
V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABmOGElx/zXUzwkAAHrUAAA8ABgAAAAAAAAAAACk
gfZCEwBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hY3RpdmUtZmxhZy1wcml2YXRlLXN0
ZGVyci50eHRVVAUAA3FAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAZjhhJXF313n8KAABN
4wAANAAYAAAAAAAAAAAApIE7TRMAc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWN0aXZl
LWZsYWctc3RkZXJyLnR4dFVUBQADckC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABmOGEmX
SrpztwUAAKQ5AAA8ABgAAAAAAAAAAACkgShYEwBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlv
bi1hZnRlci1jbG9zZS1wcml2YXRlLXN0ZGVyci50eHRVVAUAA3JAvld1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAZjhhJ3lDEAMcFAABDOQAANAAYAAAAAAAAAAAApIFVXhMAc3RvcmFnZS9pbmRl
eGVkZGIvdHJhbnNhY3Rpb24tYWZ0ZXItY2xvc2Utc3RkZXJyLnR4dFVUBQADckC+V3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIABqOGEl8jhzyAQcAAHFwAABGABgAAAAAAAAAAACkgYpkEwBzdG9y
YWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hbmQtb2JqZWN0c3RvcmUtY2FsbHMtcHJpdmF0ZS1z
dGRlcnIudHh0VVQFAANzQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAGo4YSddlLBjkBgAA
X30AAD4AGAAAAAAAAAAAAKSBC2wTAHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFuZC1v
YmplY3RzdG9yZS1jYWxscy1zdGRlcnIudHh0VVQFAANzQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAGo4YSddDgRM/CAAAZKAAADcAGAAAAAAAAAAAAKSBZ3MTAHN0b3JhZ2UvaW5kZXhlZGRi
L3RyYW5zYWN0aW9uLWJhc2ljcy1wcml2YXRlLXN0ZGVyci50eHRVVAUAA3NAvld1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAAajhhJeE1tkKYIAAAzqAAALwAYAAAAAAAAAAAApIEXfBMAc3RvcmFn
ZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLXN0ZGVyci50eHRVVAUAA3RAvld1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACAAajhhJk8rG6QAFAACzKAAAVwAYAAAAAAAAAAAApIEmhRMAc3Rv
cmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUtd2l0aC1qcy1yZWN1cnNpb24tY3Jv
c3MtZnJhbWUtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAN0QL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAGo4YSWlo7OV7BQAAcycAAE8AGAAAAAAAAAAAAKSBt4oTAHN0b3JhZ2UvaW5kZXhlZGRi
L3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWNyb3NzLWZyYW1lLXN0ZGVy
ci50eHRVVAUAA3RAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAajhhJFlQnekIFAABWJwAA
SwAYAAAAAAAAAAAApIG7kBMAc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUt
d2l0aC1qcy1yZWN1cnNpb24tcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAN0QL5XdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAGo4YSVjWdF1yBQAAjCcAAEMAGAAAAAAAAAAAAKSBgpYTAHN0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLXN0ZGVyci50
eHRVVAUAA3RAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAbjhhJW4jQdj8GAAA+UAAAQQAY
AAAAAAAAAAAApIFxnBMAc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29tcGxldGUtd29y
a2Vycy1wcml2YXRlLXN0ZGVyci50eHRVVAUAA3VAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAAbjhhJU1zdF9QFAAAWTgAAOQAYAAAAAAAAAAAApIEroxMAc3RvcmFnZS9pbmRleGVkZGIvdHJh
bnNhY3Rpb24tY29tcGxldGUtd29ya2Vycy1zdGRlcnIudHh0VVQFAAN1QL5XdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAG44YSd76cQRBBgAAcEwAAE4AGAAAAAAAAAAAAKSBcqkTAHN0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi1hY3Jvc3MtZGF0YWJhc2VzLXByaXZh
dGUtc3RkZXJyLnR4dFVUBQADdUC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABuOGEkCjPDY
XQYAAGhNAABGABgAAAAAAAAAAACkgTuwEwBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1j
b29yZGluYXRpb24tYWNyb3NzLWRhdGFiYXNlcy1zdGRlcnIudHh0VVQFAAN1QL5XdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAG44YSf9/YUYTBgAA3DUAAE0AGAAAAAAAAAAAAKSBGLcTAHN0b3Jh
Z2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvb3JkaW5hdGlvbi13aXRoaW4tZGF0YWJhc2UtcHJp
dmF0ZS1zdGRlcnIudHh0VVQFAAN2QL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAG44YSbsV
b5oHAQAAJQMAAD8AGAAAAAAAAAAAAKSBsr0TAHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9u
LWNyYXNoLWluLXRhc2tzLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADdkC+V3V4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIABuOGEmNhgwtJwEAADMEAAA3ABgAAAAAAAAAAACkgTK/EwBzdG9yYWdlL2lu
ZGV4ZWRkYi90cmFuc2FjdGlvbi1jcmFzaC1pbi10YXNrcy1zdGRlcnIudHh0VVQFAAN2QL5XdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAG44YSXItIFNXBAAAyhcAAD8AGAAAAAAAAAAAAKSBysAT
AHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNyYXNoLW9uLWFib3J0LXByaXZhdGUtc3Rk
ZXJyLnR4dFVUBQADdkC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABuOGEmw+8MvdQQAACAY
AAA3ABgAAAAAAAAAAACkgZrFEwBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jcmFzaC1v
bi1hYm9ydC1zdGRlcnIudHh0VVQFAAN2QL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAHI4Y
SYKXMlgtBwAAa14AADYAGAAAAAAAAAAAAKSBgMoTAHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0
aW9uLWVycm9yLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADd0C+V3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAByOGEkOr7vHfgcAALFcAAAuABgAAAAAAAAAAACkgR3SEwBzdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1lcnJvci1zdGRlcnIudHh0VVQFAAN3QL5XdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAHI4YSfIfkyrsBQAAXTQAAEIAGAAAAAAAAAAAAKSBA9oTAHN0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLWV2ZW50LXByb3BhZ2F0aW9uLXByaXZhdGUtc3RkZXJyLnR4dFVUBQAD
d0C+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAByOGEkGTvlK+gUAAAgzAAA6ABgAAAAAAAAA
AACkgWvgEwBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1ldmVudC1wcm9wYWdhdGlvbi1z
dGRlcnIudHh0VVQFAAN3QL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAHI4YSb5XDNBiBQAA
Ni8AADkAGAAAAAAAAAAAAKSB2eYTAHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLW9yZGVy
aW5nLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADd0C+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AByOGElOmkMPmQUAAPIuAAAxABgAAAAAAAAAAACkga7sEwBzdG9yYWdlL2luZGV4ZWRkYi90cmFu
c2FjdGlvbi1vcmRlcmluZy1zdGRlcnIudHh0VVQFAAN3QL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAHI4YSVcFAwULBgAAnDMAADwAGAAAAAAAAAAAAKSBsvITAHN0b3JhZ2UvaW5kZXhlZGRi
L3RyYW5zYWN0aW9uLW92ZXJsYXBwaW5nLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADeEC+V3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAByOGElIc7EgVQYAAL1KAAA0ABgAAAAAAAAAAACkgTP5EwBz
dG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1vdmVybGFwcGluZy1zdGRlcnIudHh0VVQFAAN4
QL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAHI4YSXQZyy4OBgAABzMAADoAGAAAAAAAAAAA
AKSB9v8TAHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJlYWQtb25seS1wcml2YXRlLXN0
ZGVyci50eHRVVAUAA3hAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAcjhhJp1RgXIEGAAAN
OQAAMgAYAAAAAAAAAAAApIF4BhQAc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZC1v
bmx5LXN0ZGVyci50eHRVVAUAA3hAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAcjhhJu75i
gQYGAAA5QgAARAAYAAAAAAAAAAAApIFlDRQAc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24t
cmVhZHdyaXRlLWV4Y2x1c2l2ZS1wcml2YXRlLXN0ZGVyci50eHRVVAUAA3hAvld1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAAdjhhJz1X2HxsGAACTQgAAPAAYAAAAAAAAAAAApIHpExQAc3RvcmFn
ZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZHdyaXRlLWV4Y2x1c2l2ZS1zdGRlcnIudHh0VVQF
AAN5QL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAHY4YSWO01TJgBgAAuzAAADkAGAAAAAAA
AAAAAKSBehoUAHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJvbGxiYWNrLXByaXZhdGUt
c3RkZXJyLnR4dFVUBQADeUC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAB2OGEk9o1eEsgYA
ALQwAAAxABgAAAAAAAAAAACkgU0hFABzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1yb2xs
YmFjay1zdGRlcnIudHh0VVQFAAN5QL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAHY4YSflq
jqEQBgAA+0UAAEEAGAAAAAAAAAAAAKSBaigUAHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9u
LXNjb3BlLXNlcXVlbmNpbmctcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAN5QL5XdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAHY4YSYwe0hLJBQAA/T8AADkAGAAAAAAAAAAAAKSB9S4UAHN0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLXNjb3BlLXNlcXVlbmNpbmctc3RkZXJyLnR4dFVUBQADeUC+
V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAB2OGEmi6ZVm+QIAAJUNAABEABgAAAAAAAAAAACk
gTE1FABzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zdG9yZU5hbWVzLXJlcXVpcmVkLXBy
aXZhdGUtc3RkZXJyLnR4dFVUBQADeUC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAB2OGElQ
2Ww6eQMAACEQAAA8ABgAAAAAAAAAAACkgag4FABzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlv
bi1zdG9yZU5hbWVzLXJlcXVpcmVkLXN0ZGVyci50eHRVVAUAA3lAvld1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAdjhhJx1LcXpQEAAA+IQAAPgAYAAAAAAAAAAAApIGXPBQAc3RvcmFnZS9pbmRl
eGVkZGIvdW5ibG9ja2VkLXZlcnNpb24tY2hhbmdlcy1wcml2YXRlLXN0ZGVyci50eHRVVAUAA3pA
vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAdjhhJLxidaaMEAAA+IQAANgAYAAAAAAAAAAAA
pIGjQRQAc3RvcmFnZS9pbmRleGVkZGIvdW5ibG9ja2VkLXZlcnNpb24tY2hhbmdlcy1zdGRlcnIu
dHh0VVQFAAN6QL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAHY4YSQvIb64QAQAAwQMAAC0A
GAAAAAAAAAAAAKSBtkYUAHN0b3JhZ2UvaW5kZXhlZGRiL3VucHJlZml4LXByaXZhdGUtc3RkZXJy
LnR4dFVUBQADekC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAB2OGEmLf78wcAQAABcXAAA0
ABgAAAAAAAAAAACkgS1IFABzdG9yYWdlL2luZGV4ZWRkYi92YWx1ZS11bmRlZmluZWQtcHJpdmF0
ZS1zdGRlcnIudHh0VVQFAAN6QL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAHY4YSaAgNHBe
BQAAOxwAACwAGAAAAAAAAAAAAKSBC00UAHN0b3JhZ2UvaW5kZXhlZGRiL3ZhbHVlLXVuZGVmaW5l
ZC1zdGRlcnIudHh0VVQFAAN6QL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAHY4YSYNtprs/
BQAA6y0AADUAGAAAAAAAAAAAAKSBz1IUAHN0b3JhZ2UvaW5kZXhlZGRiL3ZhbHVlcy1vZGQtdHlw
ZXMtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAN6QL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
II4YST7YqLW0BQAArC8AAC0AGAAAAAAAAAAAAKSBfVgUAHN0b3JhZ2UvaW5kZXhlZGRiL3ZhbHVl
cy1vZGQtdHlwZXMtc3RkZXJyLnR4dFVUBQADe0C+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
ACCOGEmDem59kAUAADctAAA5ABgAAAAAAAAAAACkgZheFABzdG9yYWdlL2luZGV4ZWRkYi92ZXJz
aW9uLWNoYW5nZS1hYm9ydC1wcml2YXRlLXN0ZGVyci50eHRVVAUAA3tAvld1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAAgjhhJ4iJBmm0FAADILAAAMQAYAAAAAAAAAAAApIGbZBQAc3RvcmFnZS9p
bmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtYWJvcnQtc3RkZXJyLnR4dFVUBQADe0C+V3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIACCOGEmQp/ft4QIAAAAaAAA/ABgAAAAAAAAAAACkgXNqFABzdG9y
YWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1ldmVudC1iYXNpYy1wcml2YXRlLXN0ZGVyci50
eHRVVAUAA3tAvld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAgjhhJhagPL70DAADZJQAANwAY
AAAAAAAAAAAApIHNbRQAc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtZXZlbnQtYmFz
aWMtc3RkZXJyLnR4dFVUBQADe0C+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACCOGEmSCu4f
hAUAADQwAAA5ABgAAAAAAAAAAACkgftxFABzdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5n
ZS1ldmVudC1wcml2YXRlLXN0ZGVyci50eHRVVAUAA3tAvld1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAAgjhhJ4WroVQgFAABLKAAAMQAYAAAAAAAAAAAApIHydxQAc3RvcmFnZS9pbmRleGVkZGIv
dmVyc2lvbi1jaGFuZ2UtZXZlbnQtc3RkZXJyLnR4dFVUBQADe0C+V3V4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIACCOGEljo49FMAUAAJE4AAA9ABgAAAAAAAAAAACkgWV9FABzdG9yYWdlL2luZGV4
ZWRkYi92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAN8QL5X
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAII4YSSxKWLJCBQAAGToAADUAGAAAAAAAAAAAAKSB
DIMUAHN0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV4Y2x1c2l2ZS1zdGRlcnIudHh0
VVQFAAN8QL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAII4YSdfpfGOhAwAAeRMAAEkAGAAA
AAAAAAAAAKSBvYgUAHN0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb25jaGFuZ2VyZXF1ZXN0LWFjdGl2
ZWRvbW9iamVjdC1wcml2YXRlLXN0ZGVyci50eHRVVAUAA3xAvld1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAAhjhhJ3ZGsWdoDAAADFAAAQQAYAAAAAAAAAAAApIHhjBQAc3RvcmFnZS9pbmRleGVk
ZGIvdmVyc2lvbmNoYW5nZXJlcXVlc3QtYWN0aXZlZG9tb2JqZWN0LXN0ZGVyci50eHRVVAUAA31A
vld1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADajRhJAAAAAAAAAAAAAAAADwAYAAAAAAAAABAA
7UE2kRQAc3RvcmFnZS93ZWJzcWwvVVQFAAP7P75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
1I0YSSjZeTawAAAA7gAAAC0AGAAAAAAAAQAAAKSBf5EUAHN0b3JhZ2Uvd2Vic3FsL2FsdGVyLXRv
LWluZm8tdGFibGUtc3RkZXJyLnR4dFVUBQAD7z++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
ANSNGEko2Xk2sAAAAO4AAAA1ABgAAAAAAAEAAACkgZaSFABzdG9yYWdlL3dlYnNxbC9jaGFuZ2Ut
dmVyc2lvbi1oYW5kbGUtcmV1c2Utc3RkZXJyLnR4dFVUBQAD7z++V3V4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIANSNGEko2Xk2sAAAAO4AAABGABgAAAAAAAEAAACkgbWTFABzdG9yYWdlL3dlYnNx
bC9jaGFuZ2UtdmVyc2lvbi1uby1jcmFzaC1vbi1wcmVmbGlnaHQtZmFpbHVyZS1zdGRlcnIudHh0
VVQFAAPvP75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA1I0YScfvqM66AAAAuAMAACgAGAAA
AAAAAQAAAKSB5ZQUAHN0b3JhZ2Uvd2Vic3FsL2NoYW5nZS12ZXJzaW9uLXN0ZGVyci50eHRVVAUA
A+8/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADUjRhJKNl5NrAAAADuAAAAMgAYAAAAAAAB
AAAApIEBlhQAc3RvcmFnZS93ZWJzcWwvY2xvc2UtZHVyaW5nLXN0cmVzcy10ZXN0LXN0ZGVyci50
eHRVVAUAA/A/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADUjRhJht9nf7YAAADcAQAANAAY
AAAAAAABAAAApIEdlxQAc3RvcmFnZS93ZWJzcWwvZGF0YWJhc2UtbG9jay1hZnRlci1yZWxvYWQt
c3RkZXJyLnR4dFVUBQAD8D++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANSNGEko2Xk2sAAA
AO4AAAApABgAAAAAAAEAAACkgUGYFABzdG9yYWdlL3dlYnNxbC9lbXB0eS1zdGF0ZW1lbnQtc3Rk
ZXJyLnR4dFVUBQAD8D++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANWNGEko2Xk2sAAAAO4A
AAAqABgAAAAAAAEAAACkgVSZFABzdG9yYWdlL3dlYnNxbC9leGVjdXRlLXNxbC1hcmdzLXN0ZGVy
ci50eHRVVAUAA/E/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADVjRhJKNl5NrAAAADuAAAA
MgAYAAAAAAABAAAApIFomhQAc3RvcmFnZS93ZWJzcWwvZXhlY3V0ZS1zcWwtcm93c0FmZmVjdGVk
LXN0ZGVyci50eHRVVAUAA/E/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADVjRhJKNl5NrAA
AADuAAAAPwAYAAAAAAABAAAApIGEmxQAc3RvcmFnZS93ZWJzcWwvZXhlY3V0ZXNxbC1hY2NlcHRz
LW9ubHktb25lLXN0YXRlbWVudC1zdGRlcnIudHh0VVQFAAPxP75XdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgA1o0YSSjZeTawAAAA7gAAAC4AGAAAAAAAAQAAAKSBrZwUAHN0b3JhZ2Uvd2Vic3Fs
L2hhc2gtY2hhbmdlLXdpdGgteGhyLXN0ZGVyci50eHRVVAUAA/M/vld1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACADWjRhJht9nf7YAAADcAQAAPwAYAAAAAAABAAAApIHFnRQAc3RvcmFnZS93ZWJz
cWwvbXVsdGlwbGUtZGF0YWJhc2VzLWdhcmJhZ2UtY29sbGVjdGlvbi1zdGRlcnIudHh0VVQFAAPz
P75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA1o0YSUTqVta5AAAAygIAAEQAGAAAAAAAAQAA
AKSB9J4UAHN0b3JhZ2Uvd2Vic3FsL211bHRpcGxlLXRyYW5zYWN0aW9ucy1vbi1kaWZmZXJlbnQt
aGFuZGxlcy1zdGRlcnIudHh0VVQFAAP0P75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA1o0Y
SSjZeTawAAAA7gAAAC8AGAAAAAAAAQAAAKSBK6AUAHN0b3JhZ2Uvd2Vic3FsL211bHRpcGxlLXRy
YW5zYWN0aW9ucy1zdGRlcnIudHh0VVQFAAP0P75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
1o0YSSjZeTawAAAA7gAAACgAGAAAAAAAAQAAAKSBRKEUAHN0b3JhZ2Uvd2Vic3FsL251bGwtY2Fs
bGJhY2tzLXN0ZGVyci50eHRVVAUAA/Q/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADWjRhJ
ht9nf7YAAADcAQAASAAYAAAAAAABAAAApIFWohQAc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFz
ZS1jcmVhdGlvbi1jYWxsYmFjay1pc29sYXRlZC13b3JsZC1zdGRlcnIudHh0VVQFAAP0P75XdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA1o0YScfvqM66AAAAuAMAADkAGAAAAAAAAQAAAKSBjqMU
AHN0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJhc2UtY3JlYXRpb24tY2FsbGJhY2stc3RkZXJyLnR4
dFVUBQAD9D++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANeNGEko2Xk2sAAAAO4AAAA1ABgA
AAAAAAEAAACkgbukFABzdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLWVtcHR5LXZlcnNpb24t
c3RkZXJyLnR4dFVUBQAD9T++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANeNGEko2Xk2sAAA
AO4AAAA0ABgAAAAAAAEAAACkgdqlFABzdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLWV4cGFu
ZC1xdW90YS1zdGRlcnIudHh0VVQFAAP1P75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA140Y
SYbfZ3+2AAAA3AEAADkAGAAAAAAAAQAAAKSB+KYUAHN0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJh
c2Utc2V0LWVtcHR5LXZlcnNpb24tc3RkZXJyLnR4dFVUBQAD9T++V3V4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIANeNGEmG32d/tgAAANwBAABFABgAAAAAAAEAAACkgSGoFABzdG9yYWdlL3dlYnNx
bC9vcGVuLWRhdGFiYXNlLXdoaWxlLXRyYW5zYWN0aW9uLWluLXByb2dyZXNzLXN0ZGVyci50eHRV
VAUAA/Y/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADXjRhJKNl5NrAAAADuAAAAOQAYAAAA
AAABAAAApIFWqRQAc3RvcmFnZS93ZWJzcWwvcHJpdmF0ZS1icm93c2luZy1ub3JlYWQtbm93cml0
ZS1zdGRlcnIudHh0VVQFAAP2P75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA140YSUTqVta5
AAAAygIAAEcAGAAAAAAAAQAAAKSBeaoUAHN0b3JhZ2Uvd2Vic3FsL3JlYWQtYW5kLXdyaXRlLXRy
YW5zYWN0aW9ucy1kb250LXJ1bi10b2dldGhlci1zdGRlcnIudHh0VVQFAAP2P75XdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgA140YSYbfZ3+2AAAA3AEAAEAAGAAAAAAAAQAAAKSBs6sUAHN0b3Jh
Z2Uvd2Vic3FsL3JlYWQtdHJhbnNhY3Rpb25zLXJ1bm5pbmctY29uY3VycmVudGx5LXN0ZGVyci50
eHRVVAUAA/Y/vld1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADXjRhJKNl5NrAAAADuAAAAKAAY
AAAAAAABAAAApIHjrBQAc3RvcmFnZS93ZWJzcWwvc3FsLWRhdGEtdHlwZXMtc3RkZXJyLnR4dFVU
BQAD9j++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANiNGEmG32d/tgAAANwBAABBABgAAAAA
AAEAAACkgfWtFABzdG9yYWdlL3dlYnNxbC9zdGF0ZW1lbnQtZXJyb3ItY2FsbGJhY2staXNvbGF0
ZWQtd29ybGQtc3RkZXJyLnR4dFVUBQAD9z++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANiN
GEko2Xk2sAAAAO4AAAAyABgAAAAAAAEAAACkgSavFABzdG9yYWdlL3dlYnNxbC9zdGF0ZW1lbnQt
ZXJyb3ItY2FsbGJhY2stc3RkZXJyLnR4dFVUBQAD9z++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIANiNGEmG32d/tgAAANwBAABDABgAAAAAAAEAAACkgUKwFABzdG9yYWdlL3dlYnNxbC9zdGF0
ZW1lbnQtc3VjY2Vzcy1jYWxsYmFjay1pc29sYXRlZC13b3JsZC1zdGRlcnIudHh0VVQFAAP3P75X
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA2I0YSSjZeTawAAAA7gAAACoAGAAAAAAAAQAAAKSB
dbEUAHN0b3JhZ2Uvd2Vic3FsL3N1Y2Nlc3MtY2FsbGJhY2stc3RkZXJyLnR4dFVUBQAD+D++V3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANiNGEko2Xk2sAAAAO4AAABDABgAAAAAAAEAAACkgYmy
FABzdG9yYWdlL3dlYnNxbC9zdWNjZXNzLWNhbGxiYWNrLXdoZW4tcGFnZS1kZWZlcnMtbG9hZGlu
Zy1zdGRlcnIudHh0VVQFAAP4P75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA2Y0YSSjZeTaw
AAAA7gAAACkAGAAAAAAAAQAAAKSBtrMUAHN0b3JhZ2Uvd2Vic3FsL3Rlc3QtYXV0aG9yaXplci1z
dGRlcnIudHh0VVQFAAP5P75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA2Y0YSSjZeTawAAAA
7gAAAD4AGAAAAAAAAQAAAKSBybQUAHN0b3JhZ2Uvd2Vic3FsL3RyYW5zYWN0aW9uLWNhbGxiYWNr
LWV4Y2VwdGlvbi1jcmFzaC1zdGRlcnIudHh0VVQFAAP5P75XdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgA2Y0YSYbfZ3+2AAAA3AEAAD0AGAAAAAAAAQAAAKSB8bUUAHN0b3JhZ2Uvd2Vic3FsL3Ry
YW5zYWN0aW9uLWNhbGxiYWNrLWlzb2xhdGVkLXdvcmxkLXN0ZGVyci50eHRVVAUAA/k/vld1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACADZjRhJht9nf7YAAADcAQAAQwAYAAAAAAABAAAApIEetxQA
c3RvcmFnZS93ZWJzcWwvdHJhbnNhY3Rpb24tZXJyb3ItY2FsbGJhY2staXNvbGF0ZWQtd29ybGQt
c3RkZXJyLnR4dFVUBQAD+j++V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANmNGEko2Xk2sAAA
AO4AAAA0ABgAAAAAAAEAAACkgVG4FABzdG9yYWdlL3dlYnNxbC90cmFuc2FjdGlvbi1lcnJvci1j
YWxsYmFjay1zdGRlcnIudHh0VVQFAAP6P75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA2Y0Y
SSjZeTawAAAA7gAAAC8AGAAAAAAAAQAAAKSBb7kUAHN0b3JhZ2Uvd2Vic3FsL3RyYW5zYWN0aW9u
LXByb3RvdHlwZS1zdGRlcnIudHh0VVQFAAP6P75XdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
2o0YSYbfZ3+2AAAA3AEAAEUAGAAAAAAAAQAAAKSBiLoUAHN0b3JhZ2Uvd2Vic3FsL3RyYW5zYWN0
aW9uLXN1Y2Nlc3MtY2FsbGJhY2staXNvbGF0ZWQtd29ybGQtc3RkZXJyLnR4dFVUBQAD+z++V3V4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAABuOGEkAAAAAAAAAAAAAAAAEABgAAAAAAAAAEADtQb27
FABzdmcvVVQFAAN1QL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAG44YSQAAAAAAAAAAAAAA
AAsAGAAAAAAAAAAQAO1B+7sUAHN2Zy9jdXN0b20vVVQFAAN1QL5XdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAG44YSb3Awop/AAAAjQAAACQAGAAAAAAAAQAAAKSBQLwUAHN2Zy9jdXN0b20vemVy
by1kYXNoYXJyYXktc3RkZXJyLnR4dFVUBQADdUC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAA
AOuNGEkAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQR29FABzdmcvc3Ryb2tlL1VUBQADGkC+V3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOuNGElrsqZofwAAAI0AAAAlABgAAAAAAAEAAACkgWK9
FABzdmcvc3Ryb2tlL3plcm8td2lkdGgtaGFuZy1zdGRlcnIudHh0VVQFAAMaQL5XdXgLAAEE9QEA
AAQUAAAAUEsBAh4DCgAAAAAAJI4YSQAAAAAAAAAAAAAAAAYAGAAAAAAAAAAQAO1BQL4UAHdlYmds
L1VUBQADhEC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAACSOGEkAAAAAAAAAAAAAAAAMABgA
AAAAAAAAEADtQYC+FAB3ZWJnbC8xLjAuMi9VVAUAA4RAvld1eAsAAQT1AQAABBQAAABQSwECHgMK
AAAAAAAkjhhJAAAAAAAAAAAAAAAAGAAYAAAAAAAAABAA7UHGvhQAd2ViZ2wvMS4wLjIvY29uZm9y
bWFuY2UvVVQFAAOEQL5XdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAJI4YSQAAAAAAAAAAAAAA
ACEAGAAAAAAAAAAQAO1BGL8UAHdlYmdsLzEuMC4yL2NvbmZvcm1hbmNlL3RleHR1cmVzL1VUBQAD
hEC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACSOGEmj7oemdwAAAHQBAAA4ABgAAAAAAAEA
AACkgXO/FAB3ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS90ZXh0dXJlcy90ZXh0dXJlLW5wb3Qtc3Rk
ZXJyLnR4dFVUBQADhEC+V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEeOGEk66T4vwGcBAKl4
IwAZABgAAAAAAAEAAACkgVzAFAB3cHR3a19wcm9jZXNzX2xvZy5vdXQudHh0VVQFAAPFQL5XdXgL
AAEE9QEAAAQUAAAAUEsFBgAAAAClAqUC4lABAG8oFgAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286990</attachid>
            <date>2016-08-25 11:34:03 -0700</date>
            <delta_ts>2016-08-25 11:44:34 -0700</delta_ts>
            <desc>Patch to fix layout tests and style stuff</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>452233</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDk0MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3NiBAQAorMjAxNi0wOC0yNCAgRGF2ZSBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBJbml0aWFsIGxhbmRpbmcgb2YgQ1NT
IFBhcnNlciBUb2tlbml6YXRpb24gKGFuZCBmaWxlcyB0byBzdXBwb3J0IHRoYXQpLiBOb3QgdXNl
ZCB5ZXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjExNzQKKworICAgICAgICBUaGlzIGNvZGUgaXMgaW1wb3J0ZWQgZnJvbSBCbGluayBhbmQgaXMg
dGhlaXIgQ1NTIHBhcnNlciAobW9kaWZpZWQgdG8gd29yayBpbiBXZWJLaXQpLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGNzcy9DU1NNYXJrdXAuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQ1NTVG9rZW5p
emVySWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVDaGFyYWN0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplQ2hhcmFjdGVyQXNDb2RlUG9pbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6c2VyaWFsaXplSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpzZXJp
YWxpemVTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplVVJJKToKKyAgICAgICAg
KFdlYkNvcmU6OnNlcmlhbGl6ZUZvbnRGYW1pbHkpOgorICAgICAgICAqIGNzcy9DU1NNYXJrdXAu
aDogQWRkZWQuCisgICAgICAgICogY3NzL0NTU09NVXRpbHMuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIGNzcy9DU1NPTVV0aWxzLmg6IFJlbW92ZWQuCisgICAgICAgICogY3NzL0NTU1NlbGVjdG9y
LmNwcDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHA6IEFkZGVk
LgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmg6IEFkZGVkLgorICAg
ICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6aXNDU1NTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjppc05hbWVTdGFydENvZGVQb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjppc05hbWVDb2RlUG9pbnQpOgorICAgICAgICAqIGNzcy9w
YXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJPYnNlcnZlcjo6fkNTU1BhcnNlck9ic2VydmVyKToKKyAgICAgICAgKiBjc3MvcGFyc2Vy
L0NTU1BhcnNlck9ic2VydmVyV3JhcHBlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyOjpzdGFydE9mZnNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OnByZXZpb3VzVG9rZW5TdGFydE9mZnNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OmVuZE9mZnNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OnNraXBDb21tZW50c0Jl
Zm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OnlpZWxk
Q29tbWVudHNCZWZvcmUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXJX
cmFwcGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyT2JzZXJ2ZXJXcmFw
cGVyOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyT2JzZXJ2ZXJXcmFwcGVyOjpvYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXJPYnNlcnZlcldyYXBwZXI6OmFkZENvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyT2JzZXJ2ZXJXcmFwcGVyOjphZGRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXJPYnNlcnZlcldyYXBwZXI6OmZpbmFsaXplQ29uc3RydWN0aW9uKToKKyAgICAgICAgKiBjc3Mv
cGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjc3NQ
cmltaXRpdmVWYWx1ZVVuaXRGcm9tVHJpZSk6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdUb1Vu
aXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpDU1NQYXJzZXJUb2tl
bik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6Y29udmVydFRvRGltZW5zaW9u
V2l0aFVuaXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OmNvbnZlcnRUb1Bl
cmNlbnRhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OmRlbGltaXRlcik6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6bnVtZXJpY1NpZ24pOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46Om51bWVyaWNWYWx1ZVR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46Om51bWVyaWNWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXJUb2tlbjo6cGFyc2VBc1VucmVzb2x2ZWRDU1NQcm9wZXJ0eUlEKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjppZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJUb2tlbjo6ZnVuY3Rpb25JZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tl
bjo6aGFzU3RyaW5nQmFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6
Y29weVdpdGhVcGRhdGVkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2Vu
Ojp2YWx1ZURhdGFDaGFyUmF3RXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9r
ZW46Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OnNlcmlh
bGl6ZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlclRva2VuOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clRva2VuOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6Z2V0SGFz
aFRva2VuVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6Z2V0QmxvY2tU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjp1bml0VHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6dW5pY29kZVJhbmdlU3RhcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OnVuaWNvZGVSYW5nZUVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6aW5pdFZhbHVlRnJvbVN0cmluZ1ZpZXcpOgorICAgICAg
ICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW5SYW5nZS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6ZW9mVG9rZW4pOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6bWFrZVN1YlJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlclRva2VuUmFuZ2U6OmNvbnN1bWVCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXJUb2tlblJhbmdlOjpjb25zdW1lQ29tcG9uZW50VmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6c2VyaWFsaXplKToKKyAgICAgICAgKiBjc3MvcGFy
c2VyL0NTU1BhcnNlclRva2VuUmFuZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJUb2tlblJhbmdlOjpDU1NQYXJzZXJUb2tlblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlclRva2VuUmFuZ2U6OmF0RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clRva2VuUmFuZ2U6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlblJhbmdl
OjpwZWVrKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuUmFuZ2U6OmNvbnN1bWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6Y29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6Y29u
c3VtZVdoaXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6
YmVnaW4pOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Omhhc1ByZWZpeCk6CisgICAgICAgIChXZWJDb3JlOjpjc3NQ
cm9wZXJ0eUlEKToKKyAgICAgICAgKFdlYkNvcmU6OmNzc1Byb3BlcnR5TmFtZUlPU0FsaWFzaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzQXBwbGVMZWdhY3lDc3NWYWx1ZUtleXdvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6Y3NzVmFsdWVLZXl3b3JkSUQpOgorICAgICAgICAoV2ViQ29yZTo6dW5y
ZXNvbHZlZENTU1Byb3BlcnR5SUQpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQ
YXJzZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6aW5R
dWlya3NNb2RlKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVy
cy5jcHA6IEFkZGVkLgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
OjppZGVudE1hdGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzOjpjb25zdW1lSWRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzOjppc0NTU1dpZGVLZXl3b3JkKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Rva2Vu
aXplci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpTY29wZTo6
U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpTY29wZTo6dG9rZW5SYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OlNjb3BlOjp0b2tlbkNvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OmlzTmV3TGluZSk6CisgICAgICAgIChXZWJDb3JlOjp0d29DaGFy
c0FyZVZhbGlkRXNjYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Q1NTVG9r
ZW5pemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6cmVjb25zdW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb2tlbml6ZXI6OndoaXRlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5p
emVyOjpibG9ja1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6YmxvY2tF
bmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpsZWZ0UGFyZW50aGVzaXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpyaWdodFBhcmVudGhlc2lzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6bGVmdEJyYWNrZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9rZW5pemVyOjpyaWdodEJyYWNrZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9r
ZW5pemVyOjpsZWZ0QnJhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpyaWdo
dEJyYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6cGx1c09yRnVsbFN0b3Ap
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjphc3Rlcmlzayk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb2tlbml6ZXI6Omxlc3NUaGFuKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rv
a2VuaXplcjo6Y29tbWEpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpoeXBoZW5N
aW51cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OnNvbGlkdXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb2xvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXI6OnNlbWlDb2xvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6Omhh
c2gpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjaXJjdW1mbGV4QWNjZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6ZG9sbGFyU2lnbik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb2tlbml6ZXI6OnZlcnRpY2FsTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NUb2tlbml6ZXI6OnRpbGRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29t
bWVyY2lhbEF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6cmV2ZXJzZVNvbGlk
dXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjphc2NpaURpZ2l0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6bGV0dGVyVSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NUb2tlbml6ZXI6Om5hbWVTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6
OnN0cmluZ1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6ZW5kT2ZGaWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6bmV4dFRva2VuKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZU51bWJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVOdW1lcmljVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVG9rZW5pemVyOjpjb25zdW1lSWRlbnRMaWtlVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVG9rZW5pemVyOjpjb25zdW1lU3RyaW5nVG9rZW5VbnRpbCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVVbmljb2RlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
aXNOb25QcmludGFibGVDb2RlUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVy
Ojpjb25zdW1lVXJsVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb25z
dW1lQmFkVXJsUmVtbmFudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb25z
dW1lU2luZ2xlV2hpdGVzcGFjZUlmTmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6
ZXI6OmNvbnN1bWVVbnRpbENvbW1lbnRFbmRGb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXI6OmNvbnN1bWVJZk5leHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVy
Ojpjb25zdW1lTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVF
c2NhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpuZXh0VHdvQ2hhcnNBcmVW
YWxpZEVzY2FwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6Om5leHRDaGFyc0Fy
ZU51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6Om5leHRDaGFyc0FyZUlk
ZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpyZWdpc3RlclN0cmlu
Zyk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OlNjb3BlOjpzdG9yZVN0cmluZyk6CisgICAgICAgICog
Y3NzL3BhcnNlci9DU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVG9rZW5pemVySW5wdXRTdHJlYW06OkNTU1Rva2VuaXplcklucHV0U3RyZWFt
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcklucHV0U3RyZWFtOjphZHZhbmNlVW50
aWxOb25XaGl0ZXNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcklucHV0U3Ry
ZWFtOjpnZXREb3VibGUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRT
dHJlYW0uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXJJbnB1dFN0cmVh
bTo6bmV4dElucHV0Q2hhcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXJJbnB1dFN0
cmVhbTo6cGVla1dpdGhvdXRSZXBsYWNlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tl
bml6ZXJJbnB1dFN0cmVhbTo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6
ZXJJbnB1dFN0cmVhbTo6cHVzaEJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVy
SW5wdXRTdHJlYW06OnNraXBXaGlsZVByZWRpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXJJbnB1dFN0cmVhbTo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2Vu
aXplcklucHV0U3RyZWFtOjpvZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVy
SW5wdXRTdHJlYW06OnJhbmdlQXQpOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5oOgorCiAy
MDE2LTA4LTI0ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAg
IFJlYmFzZWxpbmUgYmluZGluZ3MgdGVzdHMgYWZ0ZXIgcjIwNDkyMy4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAyMDQ5MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTM0MSw5ICsxMzQxLDkgQEAgc2V0KFdlYkNvcmVfU09V
UkNFUwogICAgIGNzcy9DU1NLZXlmcmFtZVJ1bGUuY3BwCiAgICAgY3NzL0NTU0tleWZyYW1lc1J1
bGUuY3BwCiAgICAgY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuY3BwCisgICAgY3NzL0NTU01h
cmt1cC5jcHAKICAgICBjc3MvQ1NTTWVkaWFSdWxlLmNwcAogICAgIGNzcy9DU1NOYW1lZEltYWdl
VmFsdWUuY3BwCi0gICAgY3NzL0NTU09NVXRpbHMuY3BwCiAgICAgY3NzL0NTU1BhZ2VSdWxlLmNw
cAogICAgIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKICAgICBjc3MvQ1NTUHJvcGVydHkuY3Bw
CkBAIC0xNDEwLDcgKzE0MTAsMTUgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGNzcy9XZWJL
aXRDU1NWaWV3cG9ydFJ1bGUuY3BwCiAKICAgICBjc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKKyAg
ICBjc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHAKKyAgICBjc3MvcGFyc2VyL0NTU1Bh
cnNlck9ic2VydmVyV3JhcHBlci5jcHAKKyAgICBjc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmNw
cAorICAgIGNzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW5SYW5nZS5jcHAKICAgICBjc3MvcGFyc2Vy
L0NTU1BhcnNlclZhbHVlcy5jcHAKKyAgICBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNw
cAorICAgIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAorICAgIGNzcy9w
YXJzZXIvQ1NTVG9rZW5pemVyLmNwcAorICAgIGNzcy9wYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRT
dHJlYW0uY3BwCiAgICAgY3NzL3BhcnNlci9TVkdDU1NQYXJzZXIuY3BwCiAKICAgICBjc3NqaXQv
U2VsZWN0b3JDb21waWxlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwNDkwNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMzMzNiw2ICszMzM2LDI2IEBACiAJCTk0NkQzNzMwMUQ2Q0IyOTQwMDc3MDg0RiAvKiBDU1NQ
YXJzZXJWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTQ2RDM3MkIxRDZDQjI4QjAwNzcwODRGIC8qIENTU1BhcnNlclZhbHVlcy5jcHAgKi87
IH07CiAJCTk0NkQzNzMxMUQ2Q0IyOTQwMDc3MDg0RiAvKiBDU1NQYXJzZXJWYWx1ZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzJDMUQ2Q0Iy
OEIwMDc3MDg0RiAvKiBDU1NQYXJzZXJWYWx1ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NDZEMzczMzFENkNDNDJCMDA3NzA4NEYgLyogU1ZH
Q1NTUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk0NkQzNzMyMUQ2Q0MzNzIwMDc3MDg0RiAvKiBTVkdDU1NQYXJzZXIuY3BwICovOyB9Owor
CQk5NDZEMzczOTFENkNERkMwMDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzM0MUQ2Q0RGOTgwMDc3
MDg0RiAvKiBDU1NUb2tlbml6ZXIuY3BwICovOyB9OworCQk5NDZEMzczQTFENkNERkMwMDA3NzA4
NEYgLyogQ1NTVG9rZW5pemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NDZEMzczNzFENkNERjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmggKi87
IH07CisJCTk0NkQzNzNCMUQ2Q0RGQzAwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXJJbnB1dFN0cmVh
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZE
MzczNTFENkNERjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwICovOyB9
OworCQk5NDZEMzczQzFENkNERkMwMDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzM4
MUQ2Q0RGOTgwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5oICovOyB9OworCQk5
NDZEMzczRjFENkNFM0MyMDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW4uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3M0UxRDZDRTMxQTAwNzcw
ODRGIC8qIENTU1BhcnNlclRva2VuLmNwcCAqLzsgfTsKKwkJOTQ2RDM3NDAxRDZDRTNDMjAwNzcw
ODRGIC8qIENTU1BhcnNlclRva2VuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NDZEMzczRDFENkNFMzFBMDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW4u
aCAqLzsgfTsKKwkJOTQ2RDM3NDQxRDZDRjdCMjAwNzcwODRGIC8qIENTU1BhcnNlcklkaW9tcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3NDMx
RDZDRjc4ODAwNzcwODRGIC8qIENTU1BhcnNlcklkaW9tcy5oICovOyB9OworCQk5NDZEMzc0NTFE
NkQwMUQ0MDA3NzA4NEYgLyogQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3NDExRDZDRjYzMjAwNzcwODRGIC8q
IENTU1Byb3BlcnR5UGFyc2VyLmNwcCAqLzsgfTsKKwkJOTQ2RDM3NDYxRDZEMDFENDAwNzcwODRG
IC8qIENTU1Byb3BlcnR5UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NDZEMzc0MjFENkNGNjMyMDA3NzA4NEYgLyogQ1NTUHJvcGVydHlQYXJz
ZXIuaCAqLzsgfTsKKwkJOTQ2RDM3NDkxRDZEMDYyODAwNzcwODRGIC8qIENTU01hcmt1cC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzc0NzFE
NkQwNjBDMDA3NzA4NEYgLyogQ1NTTWFya3VwLmNwcCAqLzsgfTsKKwkJOTQ2RDM3NEExRDZEMDYy
ODAwNzcwODRGIC8qIENTU01hcmt1cC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTQ2RDM3NDgxRDZEMDYwQzAwNzcwODRGIC8qIENTU01hcmt1cC5oICov
OyB9OworCQk5NDZEMzc0RDFENkQwOEE2MDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW5SYW5nZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzc0
QjFENkQwN0Y1MDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW5SYW5nZS5jcHAgKi87IH07CisJCTk0
NkQzNzRFMUQ2RDA4QUEwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJhbmdlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzc0QzFENkQwN0Y1MDA3
NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW5SYW5nZS5oICovOyB9OworCQk5NDlDNzcwMDFENkUxRDk4
MDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0OUM3NkZFMUQ2RTFEOEMwMEMwREU0RiAvKiBDU1NQ
YXJzZXJGYXN0UGF0aHMuY3BwICovOyB9OworCQk5NDlDNzcwMTFENkUxRDk4MDBDMERFNEYgLyog
Q1NTUGFyc2VyRmFzdFBhdGhzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NDlDNzZGRjFENkUxRDhDMDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhz
LmggKi87IH07CisJCTk0OUM3NzA0MUQ2RTM5RUEwMEMwREU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTQ5Qzc3MDIxRDZFMzkzNTAwQzBERTRGIC8qIENTU1Byb3BlcnR5UGFyc2VySGVscGVycy5j
cHAgKi87IH07CisJCTk0OUM3NzA1MUQ2RTM5RUEwMEMwREU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk0OUM3NzAzMUQ2RTM5MzUwMEMwREU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaCAq
LzsgfTsKKwkJOTQ5Qzc3MDgxRDZFNDk4NzAwQzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyV3Jh
cHBlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NDlDNzcwNjFENkU0OEVEMDBDMERFNEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmNwcCAq
LzsgfTsKKwkJOTQ5Qzc3MDkxRDZFNDk4NzAwQzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyV3Jh
cHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5
Qzc3MDcxRDZFNDhFRDAwQzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5oICovOyB9
OworCQk5NDlDNzcwQjFENkU0OUVEMDBDMERFNEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0OUM3NzBBMUQ2RTQ5
QzMwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlci5oICovOyB9OwogCQk5NkFCQTQyMzE0QkNC
ODBFMDBENTYyMDQgLyogR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTZBQkE0MjIxNEJDQjgwRTAw
RDU2MjA0IC8qIEdyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCAqLzsgfTsKIAkJOTcw
M0UxQkYxNURDNEUzNzAwMUYyNEM4IC8qIEpTVm9pZENhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RTlFQzhCMTVEQzQ5MkYwMDRGMkU3
MSAvKiBKU1ZvaWRDYWxsYmFjay5jcHAgKi87IH07CiAJCTk3MDU5OTc3MTA3RDk3NTIwMEE1MEE3
QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NzA1OTk3MzEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2su
Y3BwICovOyB9OwpAQCAtNjMxNSw4ICs2MzM1LDYgQEAKIAkJRjVFMEM2NUMxNjQzQzQyQzAwRDZD
QjY5IC8qIEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNUUwQzY1QTE2NDNDNDJDMDBENkNC
NjkgLyogQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUuaCAqLzsgfTsKIAkJRjkx
NkM0OEQwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5MTZDNDhC
MERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgKi87
IH07CiAJCUY5MTZDNDhFMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jl
c3NFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjkxNkM0OEMwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50
LmggKi87IH07Ci0JCUY5OEZGRjQ0MTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5OEZGRjQyMTFB
MjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmNwcCAqLzsgfTsKLQkJRjk4RkZGNDUxMUEyNjc2
MjAwRjU0OEU4IC8qIENTU09NVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY5OEZGRjQzMTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmgg
Ki87IH07CiAJCUY5RjBFRDdBMERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dy
ZXNzRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY5RjBFRDc3MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQu
aCAqLzsgfTsKIAkJRkE2NTRBNkIxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRva2VuRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQTY1
NEE2OTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVG9rZW5FbGVtZW50LmNwcCAqLzsgfTsKIAkJ
RkE2NTRBNkIxMTA4QUJFRDAwMjYxNkYxIC8qIE1hdGhNTE9wZXJhdG9yRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQTY1NEE2OTExMDhB
QkVEMDAyNjE2RjEgLyogTWF0aE1MT3BlcmF0b3JFbGVtZW50LmNwcCAqLzsgfTsKQEAgLTEwNDQ2
LDYgKzEwNDY0LDI2IEBACiAJCTk0NkQzNzJCMUQ2Q0IyOEIwMDc3MDg0RiAvKiBDU1NQYXJzZXJW
YWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUGFyc2Vy
VmFsdWVzLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJWYWx1ZXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5NDZEMzcyQzFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2Vy
VmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENTU1BhcnNlclZhbHVl
cy5oOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlclZhbHVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5NDZEMzczMjFENkNDMzcyMDA3NzA4NEYgLyogU1ZHQ1NTUGFyc2VyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNWR0NTU1BhcnNlci5jcHA7IHBh
dGggPSBwYXJzZXIvU1ZHQ1NTUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTQ2RDM3MzQxRDZDREY5ODAwNzcwODRGIC8qIENTU1Rva2VuaXplci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDU1NUb2tlbml6ZXIuY3BwOyBwYXRoID0gcGFy
c2VyL0NTU1Rva2VuaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NkQz
NzM1MUQ2Q0RGOTgwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5j
cHA7IHBhdGggPSBwYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5NDZEMzczNzFENkNERjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5p
emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENTU1Rva2VuaXplci5oOyBw
YXRoID0gcGFyc2VyL0NTU1Rva2VuaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5NDZEMzczODFENkNERjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0u
aDsgcGF0aCA9IHBhcnNlci9DU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5NDZEMzczRDFENkNFMzFBMDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9r
ZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ1NTUGFyc2VyVG9rZW4uaDsg
cGF0aCA9IHBhcnNlci9DU1NQYXJzZXJUb2tlbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5NDZEMzczRTFENkNFMzFBMDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW4uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUGFyc2VyVG9rZW4uY3BwOyBwYXRo
ID0gcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTQ2RDM3NDExRDZDRjYzMjAwNzcwODRGIC8qIENTU1Byb3BlcnR5UGFyc2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1Byb3BlcnR5UGFyc2VyLmNwcDsg
cGF0aCA9IHBhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTk0NkQzNzQyMUQ2Q0Y2MzIwMDc3MDg0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQcm9wZXJ0eVBhcnNlci5oOyBw
YXRoID0gcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk0NkQzNzQzMUQ2Q0Y3ODgwMDc3MDg0RiAvKiBDU1NQYXJzZXJJZGlvbXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ1NTUGFyc2VySWRpb21zLmg7IHBhdGggPSBw
YXJzZXIvQ1NTUGFyc2VySWRpb21zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0
NkQzNzQ3MUQ2RDA2MEMwMDc3MDg0RiAvKiBDU1NNYXJrdXAuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTTWFya3VwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTQ2RDM3NDgxRDZEMDYwQzAwNzcwODRGIC8qIENTU01hcmt1cC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NNYXJrdXAuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTQ2RDM3NEIxRDZEMDdGNTAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuUmFu
Z2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUGFyc2VyVG9r
ZW5SYW5nZS5jcHA7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyVG9rZW5SYW5nZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NkQzNzRDMUQ2RDA3RjUwMDc3MDg0RiAvKiBDU1NQ
YXJzZXJUb2tlblJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENTU1Bh
cnNlclRva2VuUmFuZ2UuaDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJUb2tlblJhbmdlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0OUM3NkZFMUQ2RTFEOEMwMEMwREU0RiAvKiBD
U1NQYXJzZXJGYXN0UGF0aHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJGYXN0UGF0
aHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDlDNzZGRjFENkUxRDhDMDBD
MERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IENTU1BhcnNlckZhc3RQYXRocy5oOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlckZhc3RQ
YXRocy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDlDNzcwMjFENkUzOTM1MDBD
MERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IENTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHA7IHBhdGggPSBw
YXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTQ5Qzc3MDMxRDZFMzkzNTAwQzBERTRGIC8qIENTU1Byb3BlcnR5UGFyc2VySGVs
cGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnMuaDsgcGF0aCA9IHBhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ5Qzc3MDYxRDZFNDhFRDAwQzBERTRGIC8qIENT
U1BhcnNlck9ic2VydmVyV3JhcHBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3BwOyBwYXRoID0gcGFyc2VyL0NTU1Bh
cnNlck9ic2VydmVyV3JhcHBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0
OUM3NzA3MUQ2RTQ4RUQwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmg7
IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTk0OUM3NzBBMUQ2RTQ5QzMwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNl
cnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQYXJzZXJPYnNlcnZl
ci5oOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlck9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk1MEM0QzAyQkVEODkzNkY4MThFMkY5OSAvKiBKU1NWR0dyYXBoaWNzRWxl
bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdHcmFwaGljc0Vs
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTZBQkE0MjIxNEJDQjgwRTAw
RDU2MjA0IC8qIEdyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcwNTk5NzMxMDdEOTc1MjAwQTUwQTdD
IC8qIFBvbGljeUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBvbGljeUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEz
ODg3LDggKzEzOTI1LDYgQEAKIAkJRjgyMTYyOTkwMjlGNEZCNTAxMDAwMTMxIC8qIEphdmFTY3Jp
cHRDb3JlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRoID0gSmF2YVNjcmlwdENvcmUuZnJhbWV3
b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlGOTE2QzQ4QjBEQjUx
MEY4MDA3NkNEODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjkxNkM0OEMwREI1MTBGODAw
NzZDRDgzIC8qIEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGOThGRkY0MjExQTI2NzYyMDBGNTQ4RTggLyogQ1NT
T01VdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NPTVV0
aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjk4RkZGNDMxMUEyNjc2MjAw
RjU0OEU4IC8qIENTU09NVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q1NTT01VdGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGOUYwRUQ3NzBEQjUw
Q0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjlGMEVENzgwREI1MENBMjAwRDE2REI5IC8qIFhN
TEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFhN
TEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZBNjU0QTYzMTEwOEFCQjcwMDI2MTVFMCAvKiBtYXRobWwuY3NzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5jc3M7IHBhdGggPSBtYXRobWwuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTgwNjIsMTIgKzE4MDk4LDMwIEBACiAJCTk0NkQzNzI3MUQ2Q0IyMjUwMDc3MDg0RiAvKiBwYXJz
ZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTk0NkQz
NzMyMUQ2Q0MzNzIwMDc3MDg0RiAvKiBTVkdDU1NQYXJzZXIuY3BwICovLAogCQkJCTk0NkQzNzI4
MUQ2Q0IyOEIwMDc3MDg0RiAvKiBDU1NQYXJzZXIuY3BwICovLAogCQkJCTk0NkQzNzI5MUQ2Q0Iy
OEIwMDc3MDg0RiAvKiBDU1NQYXJzZXIuaCAqLywKKwkJCQk5NDlDNzZGRTFENkUxRDhDMDBDMERF
NEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcCAqLywKKwkJCQk5NDlDNzZGRjFENkUxRDhDMDBD
MERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmggKi8sCisJCQkJOTQ2RDM3NDMxRDZDRjc4ODAw
NzcwODRGIC8qIENTU1BhcnNlcklkaW9tcy5oICovLAogCQkJCTk0NkQzNzJBMUQ2Q0IyOEIwMDc3
MDg0RiAvKiBDU1NQYXJzZXJNb2RlLmggKi8sCisJCQkJOTQ5Qzc3MEExRDZFNDlDMzAwQzBERTRG
IC8qIENTU1BhcnNlck9ic2VydmVyLmggKi8sCisJCQkJOTQ5Qzc3MDYxRDZFNDhFRDAwQzBERTRG
IC8qIENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5jcHAgKi8sCisJCQkJOTQ5Qzc3MDcxRDZFNDhF
RDAwQzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5oICovLAorCQkJCTk0NkQzNzNF
MUQ2Q0UzMUEwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlbi5jcHAgKi8sCisJCQkJOTQ2RDM3M0Qx
RDZDRTMxQTAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuLmggKi8sCisJCQkJOTQ2RDM3NEIxRDZE
MDdGNTAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuUmFuZ2UuY3BwICovLAorCQkJCTk0NkQzNzRD
MUQ2RDA3RjUwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJhbmdlLmggKi8sCiAJCQkJOTQ2RDM3
MkIxRDZDQjI4QjAwNzcwODRGIC8qIENTU1BhcnNlclZhbHVlcy5jcHAgKi8sCiAJCQkJOTQ2RDM3
MkMxRDZDQjI4QjAwNzcwODRGIC8qIENTU1BhcnNlclZhbHVlcy5oICovLAorCQkJCTk0NkQzNzQx
MUQ2Q0Y2MzIwMDc3MDg0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlci5jcHAgKi8sCisJCQkJOTQ2RDM3
NDIxRDZDRjYzMjAwNzcwODRGIC8qIENTU1Byb3BlcnR5UGFyc2VyLmggKi8sCisJCQkJOTQ5Qzc3
MDIxRDZFMzkzNTAwQzBERTRGIC8qIENTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAgKi8sCisJ
CQkJOTQ5Qzc3MDMxRDZFMzkzNTAwQzBERTRGIC8qIENTU1Byb3BlcnR5UGFyc2VySGVscGVycy5o
ICovLAorCQkJCTk0NkQzNzM0MUQ2Q0RGOTgwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXIuY3BwICov
LAorCQkJCTk0NkQzNzM3MUQ2Q0RGOTgwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXIuaCAqLywKKwkJ
CQk5NDZEMzczNTFENkNERjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3Bw
ICovLAorCQkJCTk0NkQzNzM4MUQ2Q0RGOTgwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXJJbnB1dFN0
cmVhbS5oICovLAorCQkJCTk0NkQzNzMyMUQ2Q0MzNzIwMDc3MDg0RiAvKiBTVkdDU1NQYXJzZXIu
Y3BwICovLAogCQkJKTsKIAkJCW5hbWUgPSBwYXJzZXI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpAQCAtMjA5MzUsOCArMjA5ODksOCBAQAogCQkJCUJFNkRGNzEwMTcxQ0EyREEwMERENTJC
OCAvKiBKU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCAqLywKIAkJCQlGRDhBQTYzQjE2OTUxNDhF
MDBEMkVBNjggLyogSlNCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcCAqLywKIAkJCQk4OTMxREU1
QTE0QzQ0QzQ0MDAwREM5RDIgLyogSlNCbG9iQ3VzdG9tLmNwcCAqLywKLQkJCQk0OUVFRDE0QjEw
NTE5NzE5MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwICov
LAogCQkJCTQ2NTlEMjcwMUQ2QjkwOUYwMDk2RkQ4NiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaCAqLywKKwkJCQk0OUVFRDE0QjEwNTE5NzE5MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRDdXN0b20uY3BwICovLAogCQkJCTdDMzNGMzU4MUI0QTA0NDgwMDUwMkNBRiAv
KiBKU0NoYXJhY3RlckRhdGFDdXN0b20uY3BwICovLAogCQkJCTQ2QTU4QUM0MUQ0NkIzRkEwMDQz
MjAzNiAvKiBKU0NsaWVudFJlY3RDdXN0b20uY3BwICovLAogCQkJCUE1ODRGRTM3MTg2NERBQzEw
MDg0M0IxMCAvKiBKU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAgKi8sCkBAIC0yMjIyOSwx
MyArMjIyODMsMTMgQEAKIAkJCQkzMTZGRTA5MjBFNkNDRDdGMDBCRjYwODggLyogQ1NTS2V5ZnJh
bWVzUnVsZS5pZGwgKi8sCiAJCQkJQkM3NzJFMTUxMzMxNjJDMjAwMUVDOUNFIC8qIENTU0xpbmVC
b3hDb250YWluVmFsdWUuY3BwICovLAogCQkJCUJDNzcyRTEyMTMzMTYyMEMwMDFFQzlDRSAvKiBD
U1NMaW5lQm94Q29udGFpblZhbHVlLmggKi8sCisJCQkJOTQ2RDM3NDcxRDZEMDYwQzAwNzcwODRG
IC8qIENTU01hcmt1cC5jcHAgKi8sCisJCQkJOTQ2RDM3NDgxRDZEMDYwQzAwNzcwODRGIC8qIENT
U01hcmt1cC5oICovLAogCQkJCUE4MEU2Q0QyMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NNZWRpYVJ1
bGUuY3BwICovLAogCQkJCUE4MEU2Q0Q5MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NNZWRpYVJ1bGUu
aCAqLywKIAkJCQk4NUM1NkNBMjBBQTg5QzEwMDBEOTU3NTUgLyogQ1NTTWVkaWFSdWxlLmlkbCAq
LywKIAkJCQkzMTRCRTNBMjFCMzBGNkQxMDAxNDE5ODIgLyogQ1NTTmFtZWRJbWFnZVZhbHVlLmNw
cCAqLywKIAkJCQkzMTRCRTNBMDFCMzBGNkI3MDAxNDE5ODIgLyogQ1NTTmFtZWRJbWFnZVZhbHVl
LmggKi8sCi0JCQkJRjk4RkZGNDIxMUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMuY3BwICov
LAotCQkJCUY5OEZGRjQzMTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmggKi8sCiAJCQkJ
QTgwRTZDQ0IwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1BhZ2VSdWxlLmNwcCAqLywKIAkJCQlBODBF
NkNENjBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUGFnZVJ1bGUuaCAqLywKIAkJCQk4NUM1NkNBNjBB
QTg5RDVGMDBEOTU3NTUgLyogQ1NTUGFnZVJ1bGUuaWRsICovLApAQCAtMjMxNDIsOCArMjMxOTYs
NiBAQAogCQkJCUZBQkU3MkVFMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50LmggKi8s
CiAJCQkJMEJDRjgzRUYxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEZyYWN0aW9uRWxlbWVudC5j
cHAgKi8sCiAJCQkJMEJDRjgzRjAxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEZyYWN0aW9uRWxl
bWVudC5oICovLAotCQkJCUZBQkU3MkVGMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxQcmVzZW50
YXRpb25FbGVtZW50LmNwcCAqLywKLQkJCQlGQUJFNzJGMDEwNTlDMUVCMDBEOTk5REQgLyogTWF0
aE1MUHJlc2VudGF0aW9uRWxlbWVudC5oICovLAogCQkJCUZBQkU3MkYxMTA1OUMxRUIwMEQ5OTlE
RCAvKiBNYXRoTUxNYXRoRWxlbWVudC5jcHAgKi8sCiAJCQkJRkFCRTcyRjIxMDU5QzFFQjAwRDk5
OUREIC8qIE1hdGhNTE1hdGhFbGVtZW50LmggKi8sCiAJCQkJQzNFNjFDNjUzQTY0ODA3QTgzRTc2
RkI4IC8qIE1hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHAgKi8sCkBAIC0yMzE1NCw2ICsyMzIwNiwx
MCBAQAogCQkJCUZBNjU0QTZBMTEwOEFCRUQwMDI2MTZGMSAvKiBNYXRoTUxPcGVyYXRvckVsZW1l
bnQuaCAqLywKIAkJCQlCNTlDQTU5QUYxNzBEOEZBQTVCOENBQkUgLyogTWF0aE1MUGFkZGVkRWxl
bWVudC5jcHAgKi8sCiAJCQkJQjU5Q0E4NDlENDFFNkY2NUQ4MTE5OEJDIC8qIE1hdGhNTFBhZGRl
ZEVsZW1lbnQuaCAqLywKKwkJCQlGQUJFNzJFRjEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MUHJl
c2VudGF0aW9uRWxlbWVudC5jcHAgKi8sCisJCQkJRkFCRTcyRjAxMDU5QzFFQjAwRDk5OUREIC8q
IE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuaCAqLywKKwkJCQlGQTc2NUE2OTExMDhBQkVEMDAy
NjE1RTAgLyogTWF0aE1MUm93RWxlbWVudC5jcHAgKi8sCisJCQkJRkE3NjVBNkExMTA4QUJFRDAw
MjYxNUUwIC8qIE1hdGhNTFJvd0VsZW1lbnQuaCAqLywKIAkJCQlCNTlDQTU5QUYxNzBEOEZBQTVC
OEM5QUQgLyogTWF0aE1MU2NyaXB0c0VsZW1lbnQuY3BwICovLAogCQkJCUI1OUNBODQ5RDQxRTZG
NjVEODExOTdBQiAvKiBNYXRoTUxTY3JpcHRzRWxlbWVudC5oICovLAogCQkJCUY3NUEwNTlBRjE3
MEQ4RkFBNUI4Q0FCRSAvKiBNYXRoTUxTZWxlY3RFbGVtZW50LmNwcCAqLywKQEAgLTIzMTYyLDgg
KzIzMjE4LDYgQEAKIAkJCQk0RkE2NUE2QTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MU3BhY2VF
bGVtZW50LmggKi8sCiAJCQkJRkE2NTRBNjkxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRva2Vu
RWxlbWVudC5jcHAgKi8sCiAJCQkJRkE2NTRBNkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRv
a2VuRWxlbWVudC5oICovLAotCQkJCUZBNzY1QTY5MTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxS
b3dFbGVtZW50LmNwcCAqLywKLQkJCQlGQTc2NUE2QTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1M
Um93RWxlbWVudC5oICovLAogCQkJCUZBNjU0QTY5MTEwOEFCRUQwMDI2MjZGMSAvKiBNYXRoTUxV
bmRlck92ZXJFbGVtZW50LmNwcCAqLywKIAkJCQlGQTY1NEE2QTExMDhBQkVEMDAyNjI2RjEgLyog
TWF0aE1MVW5kZXJPdmVyRWxlbWVudC5oICovLAogCQkJCUZBQkU3MkYzMTA1OUMxRUIwMEQ5OTlE
RCAvKiBtYXRodGFncy5pbiAqLywKQEAgLTIzNTI1LDggKzIzNTc5LDYgQEAKIAkJCWlzYSA9IFBC
WEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJ
CWZpbGVzID0gKAotCQkJCTUxMDU4QURFMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFBy
b3ZpZGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTA1OEFEQzFENjc5MkMxMDA5QTUzOEMgLyog
TW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNzE0RUFEMUNGNjU5NTEwMDQ3MjND
NCAvKiBHQ09ic2VydmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTdEQTZEQTEzNzM0RTZF
MDA3QzU3RkIgLyogSW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0JGN0VFMDE0Qzkx
NzVBMDAxNDQ4OUQgLyogSW50ZXJuYWxTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzU0
Miw2ICsyMzU5NCw4IEBACiAJCQkJQ0RDMjZCNDExNjBBOENDRTAwMjY3NTdCIC8qIE1vY2tDRE0u
aCBpbiBIZWFkZXJzICovLAogCQkJCUExQkY2QjgzMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29u
dGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFCNUIyOUYxQUFBODQ2RjAwOEI2MDQy
IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMDU4
QURDMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTEwNThBREUxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJENkYzRTkxMUMxRUNCMkYwMDYxREJENCAvKiBNb2NrUGFnZU92ZXJsYXku
aCBpbiBIZWFkZXJzICovLAogCQkJCTJEOTdGMDQ4MTlERDQxNDAwMDFFRTlDMyAvKiBNb2NrUGFn
ZU92ZXJsYXlDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBNUYzQjhEMTZDQzMzRDEwMDQ1
NUVCMCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yMzY3Myw3ICsyMzcyNyw2IEBACiAJCQkJQkVGMjlFRUIxNzE1REQwOTAwQzRCNEM5IC8qIEF1
ZGlvVHJhY2tQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREUzQTg1NDE3RjVGQ0U2MDBD
NUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkYuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERTNB
ODU4MTdGNjAyMDQwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTUxMDU4QUUyMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDU0QTc2MzE4MEY5RjcwMDBCMDc2QzkgLyogQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3
RDZBNEY4MUJGMjMwN0QwMDE3NDE0NiAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA4QjEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9VdGls
aXRpZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMjM5NTMsNyArMjQwMDYsNiBAQAogCQkJCTMxQkM3
NDJFMUFBRkY0NUMwMDZCNDM0MCAvKiBDU1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUNBRTlGOTEwMTQ2NDQxRjAwMEMyNDVCMCAvKiBDU1NBc3BlY3RS
YXRpb1ZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkQ2QUY4ODE1RUYyNUM5MDA4QjcxMTAg
LyogQ1NTQmFzaWNTaGFwZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxMDU4QUUwMUQ2N0MyMjkw
MDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE2QTg0RkExNEM4
NUNDQzAwMjk3N0RGIC8qIENTU0JvcmRlckltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzI3
NEIyRjE0MEVCRUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0OUFFMkQ4RjEzNEVFNTBDMDA3MjkyMEEgLyogQ1NTQ2FsY3VsYXRpb25W
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzk5MywxNiArMjQwNDUsMjcgQEAKIAkJCQkzMTI4
OEU3MzBFMzAwNUQ2MDAzNjE5QUUgLyogQ1NTS2V5ZnJhbWVSdWxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkzMTI4OEU3NTBFMzAwNUQ2MDAzNjE5QUUgLyogQ1NTS2V5ZnJhbWVzUnVsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM3NzJFMTMxMzMxNjIwQzAwMUVDOUNFIC8qIENTU0xpbmVCb3hDb250
YWluVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTk0NkQzNzRBMUQ2RDA2MjgwMDc3MDg0RiAv
KiBDU1NNYXJrdXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2RDAzMEExOTg5Q0EwMDdGQjhD
NSAvKiBDU1NNZWRpYVJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNEJFM0ExMUIzMEY2Qjcw
MDE0MTk4MiAvKiBDU1NOYW1lZEltYWdlVmFsdWUuaCBpbiBIZWFkZXJzICovLAotCQkJCUY5OEZG
RjQ1MTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
ODBFNkQwMDBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUGFnZVJ1bGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTk0NkQzNzJFMUQ2Q0IyOTQwMDc3MDg0RiAvKiBDU1NQYXJzZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTk0OUM3NzAxMUQ2RTFEOTgwMEMwREU0RiAvKiBDU1NQYXJzZXJGYXN0UGF0aHMuaCBp
biBIZWFkZXJzICovLAorCQkJCTk0NkQzNzQ0MUQ2Q0Y3QjIwMDc3MDg0RiAvKiBDU1NQYXJzZXJJ
ZGlvbXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTk0NkQzNzJGMUQ2Q0IyOTQwMDc3MDg0RiAvKiBD
U1NQYXJzZXJNb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDlDNzcwQjFENkU0OUVEMDBDMERF
NEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTk0OUM3NzA5MUQ2
RTQ5ODcwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTk0NkQzNzQwMUQ2Q0UzQzIwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlbi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJOTQ2RDM3NEUxRDZEMDhBQTAwNzcwODRGIC8qIENTU1BhcnNlclRva2Vu
UmFuZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTk0NkQzNzMxMUQ2Q0IyOTQwMDc3MDg0RiAvKiBD
U1NQYXJzZXJWYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0IzODYzMTIyODgzRTkwMEI4
MUZGOCAvKiBDU1NQcmVsb2FkU2Nhbm5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZDRTYw
QTE5ODlDQTAwN0ZCOEM1IC8qIENTU1ByaW1pdGl2ZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMUVEOEFDMzBDQzQ5QkUwMDBCRkM1NTcgLyogQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZDRkYwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1Byb3Bl
cnR5LmggaW4gSGVhZGVycyAqLywKIAkJCQk3OEQwMkJDNjE1NEExOERGMDBCNjJEMDUgLyogQ1NT
UHJvcGVydHlBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NjU4MEY0MDlEMTJCMjAw
MDBFNjFENyAvKiBDU1NQcm9wZXJ0eU5hbWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZEMzc0
NjFENkQwMUQ0MDA3NzA4NEYgLyogQ1NTUHJvcGVydHlQYXJzZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTk0OUM3NzA1MUQ2RTM5RUEwMEMwREU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTgyRTNEOERGMTIyRUEwRDEwMDNBRTVCQyAvKiBDU1NQcm9w
ZXJ0eVNvdXJjZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNjI2NDBCMERFMTEzN0QwMDlE
NUEwMCAvKiBDU1NSZWZsZWN0aW9uRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVB
MTJFMDBEQzA0MTQ4MDBDOUFGQUQgLyogQ1NTUmVmbGVjdFZhbHVlLmggaW4gSGVhZGVycyAqLywK
QEAgLTI0MDE4LDYgKzI0MDgxLDggQEAKIAkJCQlBOEVBODAwNzBBMTk1MTZFMDBBOEVGNUYgLyog
Q1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkM1NEQwNTcxNkE3NjczMTAwNTc1
RTREIC8qIENTU1N1cHBvcnRzUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4MEM5ODgwQ0Qy
OTRFRTAwQTBCN0IzIC8qIENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTk0NkQzNzNBMUQ2Q0RGQzAwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTk0NkQzNzNDMUQ2Q0RGQzAwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXJJbnB1dFN0
cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUFCMUYzODAxOEUyNDg5QTAwNTM0NzQzIC8qIENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4ODJEQTIzMTU5
Mzg0OEQwMDAxMTVFRCAvKiBDU1NUb1N0eWxlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzFG
NTNFOTBEMjcwNEY5MDBFQ0UwRDUgLyogQ1NTVW5pY29kZVJhbmdlVmFsdWUuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjQ3MzYsNiArMjQ4MDEsNyBAQAogCQkJCTY1REYzMjNDMDlEMURFNjUwMDBCRTMy
NSAvKiBKU0NhbnZhc1BhdHRlcm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTY1REYzMjNDMDlEMURF
NjUwMDFCRTMyNSAvKiBKU0NhbnZhc1Byb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUVFRDE0
MzEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0LmggaW4gSGVhZGVy
cyAqLywKKwkJCQk0NjU5RDI3MTFENkI5MEE1MDA5NkZEODYgLyogSlNDYW52YXNSZW5kZXJpbmdD
b250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUVFRDE0NTEwNTE5Njk0MDAwOTlGQUIgLyog
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjlCN0Ex
MEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkRBMTVFQTIxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQ2hhbm5lbE1lcmdlck5vZGUuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjQ5NjYsNyArMjUwMzIsNiBAQAogCQkJCUZEMjNBMTI2MTNGNUZBNTkwMEY2
NzAwMSAvKiBKU01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTQ0NjE0MTkwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTTWVkaWFFcnJvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMzQzM5QjcwQzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmggaW4gSGVh
ZGVycyAqLywKLQkJCQk0NjU5RDI3MTFENkI5MEE1MDA5NkZEODYgLyogSlNDYW52YXNSZW5kZXJp
bmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q0MzdBMzFENTdCN0UyMDBBQjg1RUEg
LyogSlNNZWRpYUxpc3RDdXN0b20uaCBpbiBIZWFkZXJzICovLAogCQkJCUQzQTk0QTQ3MTIyREM0
MEYwMEEzN0JCQyAvKiBKU01lZGlhUXVlcnlMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzUz
NDNGRDE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI1MTczLDcgKzI1MjM4LDYgQEAKIAkJCQlCMkZBM0RCNTBBQjc1QTZGMDAw
RTVBQzQgLyogSlNTVkdQYXRoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEQjcw
QUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJG
QTNEQjkwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0FyY0Ficy5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJOTQ2RDM3MkUxRDZDQjI5NDAwNzcwODRGIC8qIENTU1BhcnNlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjJGQTNEQkIwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0FyY1Jl
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEQkQwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZH
UGF0aFNlZ0Nsb3NlUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEQkYwQUI3NUE2RjAw
MEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNTM0Niw3ICsyNTQxMCw2IEBACiAJCQkJRTRFMzlBRkIxMzMwRUZBODAwM0FCMjc0IC8qIExl
Z2FjeVRpbGVMYXllclBvb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkREOEY1MEQ5MUU2QUYw
MDBGODlFRSAvKiBMZWdhY3lXZWJBcmNoaXZlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0U2NUJF
QjBFQUNERjE2MDA3RTQ1MzMgLyogTGVuZ3RoLmggaW4gSGVhZGVycyAqLywKLQkJCQk5NDZEMzcy
RjFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNGRjY0OTEwRUFEMTVDMjAwQzFENkY3IC8qIExlbmd0aEJveC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTVCQTdENjMxNTE0MzdDQTAwRkUxRTNGIC8qIExlbmd0aEZ1bmN0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY4NzE2NzAxQzg2OUQ4MzAwNEZGMERFIC8qIExlbmd0aFBvaW50LmggaW4g
SGVhZGVycyAqLywKQEAgLTI1MzkzLDE0ICsyNTQ1NiwxNCBAQAogCQkJCUZBQkU3MkY1MTA1OUMx
RUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NEEyOEFB
QzEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBCQ0Y4M0Y3MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxGcmFjdGlvbkVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAotCQkJCUZBQkU3MkY3MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxQ
cmVzZW50YXRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGQUJFNzJGOTEwNTlDMUVC
MDBEOTk5REQgLyogTWF0aE1MTWF0aEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0QTI4
QUFGMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkE2NTRBNkMxMTA4QUJFRDAwMjYxNkYxIC8qIE1hdGhNTE9wZXJhdG9yRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRkFCRTcyRjcxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTFByZXNlbnRh
dGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUZBNzY1QTZDMTEwOEFCRUQwMDI2MTVF
MCAvKiBNYXRoTUxSb3dFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0RkE2NUE2QzExMDhB
QkVEMDAyNjE1RTAgLyogTWF0aE1MU3BhY2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MzkxNzZFMDEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZBNjU0QTZDMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUb2tlbkVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUZBNzY1QTZDMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxSb3dFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGQTY1NEE2QzExMDhBQkVEMDAyNjI2RjEgLyogTWF0
aE1MVW5kZXJPdmVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5MDQ2RUExMkRBMjVF
ODEyQUY4MEFDIC8qIE1hdGhPcGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlENURDMkMw
RjQyM0E3MzAwOEYyMEZEIC8qIE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVy
cyAqLywKQEAgLTI1NTIxLDYgKzI1NTg0LDggQEAKIAkJCQk1MkYxMDg2NjE2MkI2REE4MDA5QUM4
MUUgLyogTWl4ZWRDb250ZW50Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxMjUyNDkx
QTE2QzNCQzAwODY0NDgwIC8qIE1vYmlsZUdlc3RhbHRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNERjJCMDExMTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrQm94LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MTA1OEFFMDFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTUxMDU4QUUyMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1RUEzRDZERjFDODU5RDdGMDAzMDBCQkIgLyogTW9ja01lZGlh
RW5kcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjJCMDEzMTgyMDU0MDYwMEYyQjQyNCAv
KiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGMkIw
MTUxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVNvdXJjZVByaXZhdGUuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjY1MjYsNyArMjY1OTEsNiBAQAogCQkJCTA4MTNBNEVBMTI4NDEzMjYwMDk5MjUx
MSAvKiBTVkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3
QUE5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdG9wRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjIyMjdBQUMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0cmluZ0xpc3QuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTk0NkQzNzMxMUQ2Q0IyOTQwMDc3MDg0RiAvKiBDU1NQYXJzZXJWYWx1ZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCUIyMjI3QUI4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdHlsZUVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUJCMEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdTVkdFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FCRTBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHU3dpdGNoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzI1OSw3ICsyNzMy
Myw2IEBACiAJCQkJNDE3REE2RDkxMzczNEU2RTAwN0M1N0ZCIC8qIEludGVybmFscy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFMTc5RjBEQTFCOTc3NEZFMDBFRDBBMjcgLyogSW50ZXJuYWxzLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTdCRjdFREYxNEM5MTc1QTAwMTQ0ODlEIC8qIEludGVybmFs
U2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTEwNThBREQxRDY3OTJDMTAwOUE1MzhD
IC8qIE1vY2tHYW1lcGFkUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTNFMjlFNUUx
NjdBOEExOTAwNTg2RDNEIC8qIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTE3MTRFQjAxQ0Y2NjVDRTAwNDcyM0M0IC8qIEpTR0NPYnNlcnZhdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTdEQTcxRDEzNzM1REZBMDA3QzU3RkIgLyogSlNJbnRl
cm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzI2OSwxMiArMjczMzIsMTMgQEAKIAkJCQlD
RDUzOTNEMzE3NUUwMTg2MDBDMDcxMjMgLyogSlNNZW1vcnlJbmZvLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUExOUFFQTIyMUFBQTgwOEEwMEI1MkIyNSAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFFNUIzMUYxQUFEMURBNDAwNkVCRUZCIC8q
IEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQk1MTA1OEFEQjFENjc5MkMxMDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkQ0MTUwREUxQzFGODY4QzAwMEEzQkEyIC8qIEpTTW9ja1BhZ2VPdmVybGF5LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUVCRjUxMjFDMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVD
b252ZXJzaW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREMyNkI0MDE2MEE4Q0M2MDAyNjc1
N0IgLyogTW9ja0NETS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUJGNkI4MjFBQTk2QzdEMDBB
RjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFCNUIy
OUUxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNTEwNThBREIxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2Ft
ZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJENkYzRTkwMUMxRUNCMjcwMDYx
REJENCAvKiBNb2NrUGFnZU92ZXJsYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5N0YwNDcx
OURENDEzQzAwMUVFOUMzIC8qIE1vY2tQYWdlT3ZlcmxheUNsaWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBQTVGM0I4RjE2Q0M0QjM5MDA0NTVFQjAgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplck1vY2suY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzY2MCwxNSArMjc3MjQsMjMgQEAKIAkJ
CQkzMTI4OEU3MjBFMzAwNUQ2MDAzNjE5QUUgLyogQ1NTS2V5ZnJhbWVSdWxlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTMxMjg4RTc0MEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFtZXNSdWxl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNzcyRTE2MTMzMTYyQzIwMDFFQzlDRSAvKiBDU1NM
aW5lQm94Q29udGFpblZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0NkQzNzQ5MUQ2RDA2
MjgwMDc3MDg0RiAvKiBDU1NNYXJrdXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgwRTZDRkMw
QTE5ODlDQTAwN0ZCOEM1IC8qIENTU01lZGlhUnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkz
MTRCRTNBMzFCMzBGNkQxMDAxNDE5ODIgLyogQ1NTTmFtZWRJbWFnZVZhbHVlLmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCUY5OEZGRjQ0MTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE4MEU2Q0Y1MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQYWdlUnVs
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NDZEMzcyRDFENkNCMjk0MDA3NzA4NEYgLyogQ1NT
UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0OUM3NzAwMUQ2RTFEOTgwMEMwREU0RiAv
KiBDU1NQYXJzZXJGYXN0UGF0aHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTQ5Qzc3MDgxRDZF
NDk4NzAwQzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk5NDZEMzczRjFENkNFM0MyMDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW4uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJOTQ2RDM3NEQxRDZEMDhBNjAwNzcwODRGIC8qIENTU1BhcnNlclRv
a2VuUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTQ2RDM3MzAxRDZDQjI5NDAwNzcwODRG
IC8qIENTU1BhcnNlclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdCMzg2MjEyMjg4
M0U5MDBCODFGRjggLyogQ1NTUHJlbG9hZFNjYW5uZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTgwRTZEMDUwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1ByaW1pdGl2ZVZhbHVlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4MEU2Q0Y3MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQcm9wZXJ0eS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3OEQwMkJDNTE1NEExOERGMDBCNjJEMDUgLyogQ1NTUHJvcGVy
dHlBbmltYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCQTc2Q0ExMUQyMEU1MDAwNEMy
MDFDIC8qIENTU1Byb3BlcnR5TmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTQ2RDM3NDUx
RDZEMDFENDAwNzcwODRGIC8qIENTU1Byb3BlcnR5UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTk0OUM3NzA0MUQ2RTM5RUEwMEMwREU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODJFM0Q4REUxMjJFQTBEMTAwM0FFNUJDIC8qIENTU1By
b3BlcnR5U291cmNlRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzVBMTJERjBEQzA0MTQ4
MDBDOUFGQUQgLyogQ1NTUmVmbGVjdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDN0Q4
RkYzMUJEMUE0NzkwMEZGRTU0MCAvKiBDU1NSZXZlcnRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTI3NjgyLDYgKzI3NzU0LDggQEAKIAkJCQlBOEVBODAwODBBMTk1MTZFMDBBOEVGNUYgLyog
Q1NTU3R5bGVTaGVldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDY3NzczOTE5NUNBRkJBMDA3
MkUwRDMgLyogQ1NTU3VwcG9ydHNSdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDODBDOTg3
MENEMjk0RUUwMEEwQjdCMyAvKiBDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTk0NkQzNzM5MUQ2Q0RGQzAwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJOTQ2RDM3M0IxRDZDREZDMDAwNzcwODRGIC8qIENTU1Rva2VuaXpl
cklucHV0U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlBQjFGMzgxMThFMjQ4OUEwMDUz
NDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4ODJEQTIwMTU5Mzg0NkEwMDAxMTVFRCAvKiBDU1NUb1N0eWxlTWFwLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTM3MUY1M0VBMEQyNzA0RjkwMEVDRTBENSAvKiBDU1NVbmljb2RlUmFuZ2VWYWx1
ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4MzU0LDYgKzI4NDI4LDcgQEAKIAkJCQk5NzVDQTJB
MTEzMDM2NzlEMDBFOTlBRDkgLyogSlNDcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE1
N0E4RjAxODE4NTQyNTAwOUY4MjFEIC8qIEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFMUM2NTcxMjE4MTVGOUREMDAyNTZDREQgLyogSlNDcnlwdG9BbGdv
cml0aG1EaWN0aW9uYXJ5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDRUYyNjE5MUQ2QTkzMTcw
MEJFOTA1RCAvKiBKU0NyeXB0b0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTU3QThF
MDE4MTczMzFDMDA5RjgyMUQgLyogSlNDcnlwdG9LZXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTE1N0E4RTgxODE4NEM2NzAwOUY4MjFEIC8qIEpTQ3J5cHRvS2V5Q3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUUxRjgwQjhEMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODY3MSw3ICsyODc0Niw2IEBACiAJCQkJMUE3NTBEOEQw
QTkwRTUyMTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBNzUwREQ0MEE5MEU3MjkwMDBGRjIxNSAvKiBKU05vZGVJdGVyYXRvckN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQ0Q5QzJDMjBDMTdCNjlFMDA1QzkwQTIgLyogSlNOb2RlTGlzdC5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQk5NDZEMzczMDFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFy
c2VyVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRDlDMjY1MEMxN0FBNjcwMDVDOTBB
MiAvKiBKU05vZGVMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDOTFBMzhGMUI0
OThBQkUwMDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkz
MzUwM0NBMzEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0yOTA4OCwxOSArMjkxNjIsMTkgQEAKIAkJCQlGQUJFNzJGNDEwNTlDMUVCMDBEOTk5
REQgLyogTWF0aE1MRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGQUJFNzJGRDEwNTlD
MjExMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEJDRjgzRjYxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEZyYWN0aW9uRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlGQUJFNzJGNjEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MUHJl
c2VudGF0aW9uRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGQUJFNzJGODEwNTlDMUVC
MDBEOTk5REQgLyogTWF0aE1MTWF0aEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDVE
OTEzQ0VFQUIyQTYwNTM0MjE4QUNGIC8qIE1hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGQUJFNzJGRTEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1MTmFtZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMTZFQTI0Q0VFQUIyQTYwNTM0MjE4QUNGIC8qIE1hdGhNTE9w
ZXJhdG9yRGljdGlvbmFyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGQTY1NEE2QjExMDhBQkVE
MDAyNjE2RjEgLyogTWF0aE1MT3BlcmF0b3JFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUI1OUNBMzkwQ0VENjZDMzI1NUY3MkM1OSAvKiBNYXRoTUxQYWRkZWRFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUZBQkU3MkY2MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxQcmVzZW50
YXRpb25FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZBNzY1QTZCMTEwOEFCRUQwMDI2
MTVFMCAvKiBNYXRoTUxSb3dFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1OUNBMzkw
Q0VENjZDMzI1NUY3MkI0OCAvKiBNYXRoTUxTY3JpcHRzRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGRUQ0ODM5MENFRDY2QzMyNTVGNzJDNTkgLyogTWF0aE1MU2VsZWN0RWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0RkE2NUE2QjExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1M
U3BhY2VFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzOTE3NkRGMTJEQTI1RTE3QkFG
ODBBMiAvKiBNYXRoTUxTdHlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGQTY1NEE2QjExMDhB
QkVEMDAyNjE1RTAgLyogTWF0aE1MVG9rZW5FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CUZBNzY1QTZCMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxSb3dFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUZBNjU0QTZCMTEwOEFCRUQwMDI2MjZGMSAvKiBNYXRoTUxVbmRlck92ZXJF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzOTA0NkU5MTJEQTI1RTgxMkFGODBBQyAv
KiBNYXRoT3BlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlENURDMkIwRjQyM0E3MzAw
OEYyMEZEIC8qIE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMjkyMDIsNiArMjkyNzYsOCBAQAogCQkJCUM1M0QzOTM0MUM5NzhBNDUwMDdGM0FFOSAvKiBN
SU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MkYxMDg2NTE2MkI2
REE0MDA5QUM4MUUgLyogTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDREYyQjAxMDE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja0JveC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk1MTA1OEFERjFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNTEwNThBRTExRDY3QzIyOTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkUHJvdmlk
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUVBM0Q2RTAxQzg1OUQ4NDAwMzAwQkJCIC8qIE1v
Y2tNZWRpYUVuZHBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERjJCMDEyMTgyMDU0MDYw
MEYyQjQyNCAvKiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDREYyQjAxNDE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhU291cmNlUHJpdmF0ZS5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTI5MjQ0LDcgKzI5MzIwLDYgQEAKIAkJCQk0NDNGMDQyNzBF
NzVDOEZCMDA3RTU0MDcgLyogTmV0d29ya1N0YXRlTm90aWZpZXJJT1MubW0gaW4gU291cmNlcyAq
LywKIAkJCQkxQTdGQTY0OTBEREEzQ0JBMDAyOEY4QTUgLyogTmV0d29ya1N0YXRlTm90aWZpZXJN
YWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMzQzg1NkQxRDVBN0FERTAwODhCOUVDIC8qIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTA1OEFERjFENjdD
MjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEzRUYz
NDkxNjg1MEM0NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTI2OTM5NzI2MUE0QTVGQkQwMEU4MzQ5RCAvKiBORkEuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMjY3NzI2MDAxQTVCM0FEOTAwM0MyNEREIC8qIE5GQVRvREZBLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMjkyNzgsNyArMjkzNTMsNiBAQAogCQkJCUZEQTkzMjVEMTY3MDNC
MkEwMDg5ODJEQyAvKiBPZmZsaW5lQXVkaW9Db250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUZEQTNFOTVCMTM0QTQ5RUYwMDhENEI1QSAvKiBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJEM0RBNjQwRDAwNkNENjAwRUY2RjNBIC8qIE9wZW5U
eXBlQ0cuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTEwNThBRTExRDY3QzIyOTAwOUE1MzhDIC8q
IE1vY2tHYW1lcGFkUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJEM0RBNjQwRDAw
NkNENjAwRUY2RjI3IC8qIE9wZW5UeXBlTWF0aERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0RFN0ZDNDQxODE5MDRCMTAwMkJCQjc3IC8qIE9yZGVySXRlcmF0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMDAxNDYyOEExMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMjkzMzcsNyArMjk0MTEsNiBAQAogCQkJCTBGNDNDODVEMTg5
RTEwQ0YwMDAxOUFFMiAvKiBQZXJmb3JtYW5jZVRpbWluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGRDU4MUZCNDE1MjBGOTNCMDAzQTdBNzUgLyogUGVyaW9kaWNXYXZlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQ5RDVEQzJEMEY0MjNBNzMwMDhGMjBGRCAvKiBQZXJzcGVjdGl2ZVRyYW5zZm9y
bU9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5NDZEMzczMzFENkNDNDJCMDA3NzA4
NEYgLyogU1ZHQ1NTUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQwRkYyQTVEMTFGOEM0
NUEwMDdFNzRFMCAvKiBQaW5nTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEN0QzMzQz
MUM3QTEyM0YwMDA0MTI5MyAvKiBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGREY0NUE3MUJEMUM2RkQwMEU0RkE4QyAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9u
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk3NTUsNyArMjk4MjgsNiBAQAogCQkJCTkzMzA5RTE1
MDk5RTY0OTIwMDU2RTU4MSAvKiBTcGxpdFRleHROb2RlQ29udGFpbmluZ0VsZW1lbnRDb21tYW5k
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExRTExNTQ4MTMwMTVDNUQwMDU0QUM4QyAvKiBTcG90
TGlnaHRTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCQzZBM0UxNTA1RjA4MTAwMUI3
NEFDIC8qIFNRTEV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3Q0VGMjYxOTFENkE5
MzE3MDBCRTkwNUQgLyogSlNDcnlwdG9DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEy
RTZFN0EwQ0M1NTZENTAwNEEyMDYyIC8qIFNRTGl0ZUF1dGhvcml6ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUEyMjQ2NDkwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZURhdGFiYXNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTdFNDc0RTIwMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRh
YmFzZVRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTg3MCw2ICsyOTk0Miw3IEBACiAJ
CQkJQjIyMjc5QTEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0NvbG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyMjI3OUE0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0IwNTBEMDBCRkYxMDA3
MUI3ODIgLyogU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTk0NkQzNzMzMUQ2Q0M0MkIwMDc3MDg0RiAvKiBTVkdDU1NQYXJzZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjIyMjc5QTcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0N1cnNvckVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5QUQwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R0RlZnNFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUIwMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdEZXNjRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwMDcyLDcgKzMw
MTQ1LDYgQEAKIAkJCQk3QUEzQTY5OTE5NEE2NEU3MDAxQ0JEMjQgLyogVGlsZUNvbnRyb2xsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUY3MkJGMEExODdGRDQ0OTAwMDlCQ0IzIC8qIFRpbGVD
b250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QUEzQTZB
MzE5NEI1QzIyMDAxQ0JEMjQgLyogVGlsZUNvdmVyYWdlTWFwLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTk0NkQzNzJEMUQ2Q0IyOTQwMDc3MDg0RiAvKiBDU1NQYXJzZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0FBM0E2OUIxOTRBNjRFNzAwMUNCRDI0IC8qIFRpbGVHcmlkLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQ5ODc3MEYyMTI0MkM1MzUwMDIyMjZCQSAvKiBUaWxpbmdEYXRhLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUY1NUIzRERCMTI1MUYxMkQwMDNFRjI2OSAvKiBUaW1lSW5wdXRU
eXBlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU01hcmt1
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU01hcmt1cC5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU01hcmt1cC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgTGFycyBL
bm9sbCAoa25vbGxAa2RlLm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwNSBBbGxhbiBTYW5kZmVs
ZCBKZW5zZW4gKGtkZUBjYXJld29sZi5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3IE5pY2hvbGFzIFNoYW5rcyA8
d2Via2l0QG5pY2tzaGFua3MuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVs
IDxlcmljQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNTU01hcmt1
cC5oIgorCisjaW5jbHVkZSAiQ1NTUGFyc2VySWRpb21zLmgiCisjaW5jbHVkZSA8d3RmL0hleE51
bWJlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0NTU1Rva2Vu
aXplcklkZW50aWZpZXIoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoKQoreworICAgIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCA9IGNoYXJhY3RlcnMgKyBs
ZW5ndGg7CisKKyAgICAvLyAtPworICAgIGlmIChjaGFyYWN0ZXJzICE9IGVuZCAmJiBjaGFyYWN0
ZXJzWzBdID09ICctJykKKyAgICAgICAgKytjaGFyYWN0ZXJzOworCisgICAgLy8ge25tc3RhcnR9
CisgICAgaWYgKGNoYXJhY3RlcnMgPT0gZW5kIHx8ICFpc05hbWVTdGFydENvZGVQb2ludChjaGFy
YWN0ZXJzWzBdKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICsrY2hhcmFjdGVyczsKKwor
ICAgIC8vIHtubWNoYXJ9KgorICAgIGZvciAoOyBjaGFyYWN0ZXJzICE9IGVuZDsgKytjaGFyYWN0
ZXJzKSB7CisgICAgICAgIGlmICghaXNOYW1lQ29kZVBvaW50KGNoYXJhY3RlcnNbMF0pKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCisv
LyAiaWRlbnQiIGZyb20gdGhlIENTUyB0b2tlbml6ZXIsIG1pbnVzIGJhY2tzbGFzaC1lc2NhcGUg
c2VxdWVuY2VzCitzdGF0aWMgYm9vbCBpc0NTU1Rva2VuaXplcklkZW50aWZpZXIoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwor
CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChzdHJp
bmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBpc0NTU1Rva2VuaXplcklkZW50aWZpZXIoc3Ry
aW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7CisgICAgcmV0dXJuIGlzQ1NTVG9rZW5pemVySWRl
bnRpZmllcihzdHJpbmcuY2hhcmFjdGVyczE2KCksIGxlbmd0aCk7Cit9CisKK3N0YXRpYyB2b2lk
IHNlcmlhbGl6ZUNoYXJhY3RlcihVQ2hhcjMyIGMsIFN0cmluZ0J1aWxkZXImIGFwcGVuZFRvKQor
eworICAgIGFwcGVuZFRvLmFwcGVuZCgnXFwnKTsKKyAgICBhcHBlbmRUby5hcHBlbmQoYyk7Cit9
CisKK3N0YXRpYyB2b2lkIHNlcmlhbGl6ZUNoYXJhY3RlckFzQ29kZVBvaW50KFVDaGFyMzIgYywg
U3RyaW5nQnVpbGRlciYgYXBwZW5kVG8pCit7CisgICAgYXBwZW5kVG8uYXBwZW5kKCdcXCcpOwor
ICAgIGFwcGVuZFVuc2lnbmVkQXNIZXgoYywgYXBwZW5kVG8sIExvd2VyY2FzZSk7CisgICAgYXBw
ZW5kVG8uYXBwZW5kKCcgJyk7Cit9CisKK3ZvaWQgc2VyaWFsaXplSWRlbnRpZmllcihjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIFN0cmluZ0J1aWxkZXImIGFwcGVuZFRvLCBib29sIHNraXBTdGFy
dENoZWNrcykKK3sKKyAgICBib29sIGlzRmlyc3QgPSAhc2tpcFN0YXJ0Q2hlY2tzOworICAgIGJv
b2wgaXNTZWNvbmQgPSBmYWxzZTsKKyAgICBib29sIGlzRmlyc3RDaGFySHlwaGVuID0gZmFsc2U7
CisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIHdoaWxlIChpbmRleCA8IGlkZW50aWZpZXIu
bGVuZ3RoKCkpIHsKKyAgICAgICAgVUNoYXIzMiBjID0gaWRlbnRpZmllci5jaGFyYWN0ZXJTdGFy
dGluZ0F0KGluZGV4KTsKKyAgICAgICAgaWYgKCFjKSB7CisgICAgICAgICAgICAvLyBDaGVjayBm
b3IgbG9uZSBzdXJyb2dhdGUgd2hpY2ggY2hhcmFjdGVyU3RhcnRpbmdBdCBkb2VzIG5vdCByZXR1
cm4uCisgICAgICAgICAgICBjID0gaWRlbnRpZmllcltpbmRleF07CisgICAgICAgIH0KKworICAg
ICAgICBpbmRleCArPSBVMTZfTEVOR1RIKGMpOworCisgICAgICAgIGlmICghYykKKyAgICAgICAg
ICAgIGFwcGVuZFRvLmFwcGVuZCgweGZmZmQpOworICAgICAgICBlbHNlIGlmIChjIDw9IDB4MWYg
fHwgYyA9PSAweDdmIHx8ICgweDMwIDw9IGMgJiYgYyA8PSAweDM5ICYmIChpc0ZpcnN0IHx8IChp
c1NlY29uZCAmJiBpc0ZpcnN0Q2hhckh5cGhlbikpKSkKKyAgICAgICAgICAgIHNlcmlhbGl6ZUNo
YXJhY3RlckFzQ29kZVBvaW50KGMsIGFwcGVuZFRvKTsKKyAgICAgICAgZWxzZSBpZiAoYyA9PSAw
eDJkICYmIGlzRmlyc3QgJiYgaW5kZXggPT0gaWRlbnRpZmllci5sZW5ndGgoKSkKKyAgICAgICAg
ICAgIHNlcmlhbGl6ZUNoYXJhY3RlcihjLCBhcHBlbmRUbyk7CisgICAgICAgIGVsc2UgaWYgKDB4
ODAgPD0gYyB8fCBjID09IDB4MmQgfHwgYyA9PSAweDVmIHx8ICgweDMwIDw9IGMgJiYgYyA8PSAw
eDM5KSB8fCAoMHg0MSA8PSBjICYmIGMgPD0gMHg1YSkgfHwgKDB4NjEgPD0gYyAmJiBjIDw9IDB4
N2EpKQorICAgICAgICAgICAgYXBwZW5kVG8uYXBwZW5kKGMpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBzZXJpYWxpemVDaGFyYWN0ZXIoYywgYXBwZW5kVG8pOworCisgICAgICAgIGlmIChp
c0ZpcnN0KSB7CisgICAgICAgICAgICBpc0ZpcnN0ID0gZmFsc2U7CisgICAgICAgICAgICBpc1Nl
Y29uZCA9IHRydWU7CisgICAgICAgICAgICBpc0ZpcnN0Q2hhckh5cGhlbiA9IChjID09IDB4MmQp
OworICAgICAgICB9IGVsc2UgaWYgKGlzU2Vjb25kKQorICAgICAgICAgICAgaXNTZWNvbmQgPSBm
YWxzZTsKKyAgICB9Cit9CisKK3ZvaWQgc2VyaWFsaXplU3RyaW5nKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBTdHJpbmdCdWlsZGVyJiBhcHBlbmRUbykKK3sKKyAgICBhcHBlbmRUby5hcHBlbmQoJ1wi
Jyk7CisKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgd2hpbGUgKGluZGV4IDwgc3RyaW5n
Lmxlbmd0aCgpKSB7CisgICAgICAgIFVDaGFyMzIgYyA9IHN0cmluZy5jaGFyYWN0ZXJTdGFydGlu
Z0F0KGluZGV4KTsKKyAgICAgICAgaW5kZXggKz0gVTE2X0xFTkdUSChjKTsKKworICAgICAgICBp
ZiAoYyA8PSAweDFmIHx8IGMgPT0gMHg3ZikKKyAgICAgICAgICAgIHNlcmlhbGl6ZUNoYXJhY3Rl
ckFzQ29kZVBvaW50KGMsIGFwcGVuZFRvKTsKKyAgICAgICAgZWxzZSBpZiAoYyA9PSAweDIyIHx8
IGMgPT0gMHg1YykKKyAgICAgICAgICAgIHNlcmlhbGl6ZUNoYXJhY3RlcihjLCBhcHBlbmRUbyk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFwcGVuZFRvLmFwcGVuZChjKTsKKyAgICB9CisK
KyAgICBhcHBlbmRUby5hcHBlbmQoJ1wiJyk7Cit9CisKK1N0cmluZyBzZXJpYWxpemVTdHJpbmco
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAg
IHNlcmlhbGl6ZVN0cmluZyhzdHJpbmcsIGJ1aWxkZXIpOworICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7Cit9CisKK1N0cmluZyBzZXJpYWxpemVVUkkoY29uc3QgU3RyaW5nJiBzdHJpbmcp
Cit7CisgICAgcmV0dXJuICJ1cmwoIiArIHNlcmlhbGl6ZVN0cmluZyhzdHJpbmcpICsgIikiOwor
fQorCitTdHJpbmcgc2VyaWFsaXplRm9udEZhbWlseShjb25zdCBTdHJpbmcmIHN0cmluZykKK3sK
KyAgICByZXR1cm4gaXNDU1NUb2tlbml6ZXJJZGVudGlmaWVyKHN0cmluZykgPyBzdHJpbmcgOiBz
ZXJpYWxpemVTdHJpbmcoc3RyaW5nKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL0NTU01hcmt1cC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NNYXJrdXAuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTTWFya3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwMyBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3
ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5IC0gMjAxMCAgVG9yY2ggTW9iaWxlIChC
ZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIENTU01hcmt1cF9o
CisjZGVmaW5lIENTU01hcmt1cF9oCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworLy8gSGVscGVyIGZ1bmN0aW9ucyBmb3IgY29udmVydGluZyBmcm9tIENTU1ZhbHVlcyB0byB0
ZXh0LgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIENvbW1vbiBzZXJpYWxpemluZyBtZXRo
b2RzLiBTZWU6IGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzc29tLyNjb21tb24tc2VyaWFsaXpp
bmctaWRpb21zCit2b2lkIHNlcmlhbGl6ZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyLCBTdHJpbmdCdWlsZGVyJiBhcHBlbmRUbywgYm9vbCBza2lwU3RhcnRDaGVja3MgPSBmYWxz
ZSk7Cit2b2lkIHNlcmlhbGl6ZVN0cmluZyhjb25zdCBTdHJpbmcmLCBTdHJpbmdCdWlsZGVyJiBh
cHBlbmRUbyk7CitTdHJpbmcgc2VyaWFsaXplU3RyaW5nKGNvbnN0IFN0cmluZyYpOworU3RyaW5n
IHNlcmlhbGl6ZVVSSShjb25zdCBTdHJpbmcmKTsKK1N0cmluZyBzZXJpYWxpemVGb250RmFtaWx5
KGNvbnN0IFN0cmluZyYpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBD
U1NNYXJrdXBfaApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU09NVXRpbHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NPTVV0aWxzLmNwcAkocmV2aXNpb24gMjA0
OTA1KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU09NVXRpbHMuY3BwCShub25leGlzdGVudCkK
QEAgLTEsMTAwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ1NTT01VdGls
cy5oIgotCi0jaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIHNlcmlhbGl6ZUNo
YXJhY3RlcihVQ2hhcjMyIGMsIFN0cmluZ0J1aWxkZXImIGFwcGVuZFRvKQotewotICAgIGFwcGVu
ZFRvLmFwcGVuZCgnXFwnKTsKLSAgICBhcHBlbmRUby5hcHBlbmQoYyk7Ci19Ci0KLXZvaWQgc2Vy
aWFsaXplQ2hhcmFjdGVyQXNDb2RlUG9pbnQoVUNoYXIzMiBjLCBTdHJpbmdCdWlsZGVyJiBhcHBl
bmRUbykKLXsKLSAgICBhcHBlbmRUby5hcHBlbmQoJ1xcJyk7Ci0gICAgYXBwZW5kVW5zaWduZWRB
c0hleChjLCBhcHBlbmRUbywgTG93ZXJjYXNlKTsKLSAgICBhcHBlbmRUby5hcHBlbmQoJyAnKTsK
LX0KLQotdm9pZCBzZXJpYWxpemVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
U3RyaW5nQnVpbGRlciYgYXBwZW5kVG8pCi17Ci0gICAgYm9vbCBpc0ZpcnN0ID0gdHJ1ZTsKLSAg
ICBib29sIGlzU2Vjb25kID0gZmFsc2U7Ci0gICAgYm9vbCBpc0ZpcnN0Q2hhckh5cGhlbiA9IGZh
bHNlOwotICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKLSAgICB3aGlsZSAoaW5kZXggPCBpZGVudGlm
aWVyLmxlbmd0aCgpKSB7Ci0gICAgICAgIFVDaGFyMzIgYyA9IGlkZW50aWZpZXIuY2hhcmFjdGVy
U3RhcnRpbmdBdChpbmRleCk7Ci0gICAgICAgIGluZGV4ICs9IFUxNl9MRU5HVEgoYyk7Ci0KLSAg
ICAgICAgaWYgKGMgPD0gMHgxZiB8fCAoMHgzMCA8PSBjICYmIGMgPD0gMHgzOSAmJiAoaXNGaXJz
dCB8fCAoaXNTZWNvbmQgJiYgaXNGaXJzdENoYXJIeXBoZW4pKSkpCi0gICAgICAgICAgICBzZXJp
YWxpemVDaGFyYWN0ZXJBc0NvZGVQb2ludChjLCBhcHBlbmRUbyk7Ci0gICAgICAgIGVsc2UgaWYg
KGMgPT0gMHgyZCAmJiBpc1NlY29uZCAmJiBpc0ZpcnN0Q2hhckh5cGhlbikKLSAgICAgICAgICAg
IHNlcmlhbGl6ZUNoYXJhY3RlcihjLCBhcHBlbmRUbyk7Ci0gICAgICAgIGVsc2UgaWYgKDB4ODAg
PD0gYyB8fCBjID09IDB4MmQgfHwgYyA9PSAweDVmIHx8ICgweDMwIDw9IGMgJiYgYyA8PSAweDM5
KSB8fCAoMHg0MSA8PSBjICYmIGMgPD0gMHg1YSkgfHwgKDB4NjEgPD0gYyAmJiBjIDw9IDB4N2Ep
KQotICAgICAgICAgICAgYXBwZW5kVG8uYXBwZW5kKGMpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBzZXJpYWxpemVDaGFyYWN0ZXIoYywgYXBwZW5kVG8pOwotCi0gICAgICAgIGlmIChpc0Zp
cnN0KSB7Ci0gICAgICAgICAgICBpc0ZpcnN0ID0gZmFsc2U7Ci0gICAgICAgICAgICBpc1NlY29u
ZCA9IHRydWU7Ci0gICAgICAgICAgICBpc0ZpcnN0Q2hhckh5cGhlbiA9IChjID09IDB4MmQpOwot
ICAgICAgICB9IGVsc2UgaWYgKGlzU2Vjb25kKSB7Ci0gICAgICAgICAgICBpc1NlY29uZCA9IGZh
bHNlOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIHNlcmlhbGl6ZVN0cmluZyhjb25zdCBT
dHJpbmcmIHN0cmluZywgU3RyaW5nQnVpbGRlciYgYXBwZW5kVG8pCi17Ci0gICAgYXBwZW5kVG8u
YXBwZW5kKCdcIicpOwotCi0gICAgdW5zaWduZWQgaW5kZXggPSAwOwotICAgIHdoaWxlIChpbmRl
eCA8IHN0cmluZy5sZW5ndGgoKSkgewotICAgICAgICBVQ2hhcjMyIGMgPSBzdHJpbmcuY2hhcmFj
dGVyU3RhcnRpbmdBdChpbmRleCk7Ci0gICAgICAgIGluZGV4ICs9IFUxNl9MRU5HVEgoYyk7Ci0g
ICAgICAgIGlmIChjIDw9IDB4MWYpCi0gICAgICAgICAgICBzZXJpYWxpemVDaGFyYWN0ZXJBc0Nv
ZGVQb2ludChjLCBhcHBlbmRUbyk7Ci0gICAgICAgIGVsc2UgaWYgKGMgPT0gMHgyMiB8fCBjID09
IDB4NWMpCi0gICAgICAgICAgICBzZXJpYWxpemVDaGFyYWN0ZXIoYywgYXBwZW5kVG8pOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBhcHBlbmRUby5hcHBlbmQoYyk7Ci0gICAgfQotCi0gICAg
YXBwZW5kVG8uYXBwZW5kKCdcIicpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTT01VdGlscy5jcHAKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTT01V
dGlscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NPTVV0aWxzLmgJKHJl
dmlzaW9uIDIwNDkwNSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NPTVV0aWxzLmgJKG5vbmV4
aXN0ZW50KQpAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx1bmljb2Rl
L3VtYWNoaW5lLmg+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotLy8gVXRpbGl0aWVzIGZv
ciBDU1NPTSBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3NvbS8KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi0vLyBDb21tb24gc2VyaWFsaXppbmcgbWV0aG9kcy4gU2VlOiBodHRwOi8vZGV2Lncz
Lm9yZy9jc3N3Zy9jc3NvbS8jY29tbW9uLXNlcmlhbGl6aW5nLWlkaW9tcwotdm9pZCBzZXJpYWxp
emVDaGFyYWN0ZXIoVUNoYXIzMiwgU3RyaW5nQnVpbGRlciYpOwotdm9pZCBzZXJpYWxpemVDaGFy
YWN0ZXJBc0NvZGVQb2ludChVQ2hhcjMyLCBTdHJpbmdCdWlsZGVyJik7Ci12b2lkIHNlcmlhbGl6
ZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBTdHJpbmdCdWlsZGVyJik7Ci12
b2lkIHNlcmlhbGl6ZVN0cmluZyhjb25zdCBTdHJpbmcmLCBTdHJpbmdCdWlsZGVyJik7Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NPTVV0aWxzLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0x
ICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDIwNDkwNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogCi0jaW5j
bHVkZSAiQ1NTT01VdGlscy5oIgorI2luY2x1ZGUgIkNTU01hcmt1cC5oIgogI2luY2x1ZGUgIkNT
U1NlbGVjdG9yTGlzdC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIlNlbGVj
dG9yUHNldWRvVHlwZU1hcC5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJGYXN0UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMTE3IEBACisvLyBDb3B5cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8v
IG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisv
LworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNTU1BhcnNlckZhc3RQYXRocy5o
IgorCisvLyBGSVhNRS1ORVdQQVJTRVI6ICNpbmNsdWRlICJDU1NDb2xvclZhbHVlLmgiCisjaW5j
bHVkZSAiQ1NTRnVuY3Rpb25WYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0luaGVyaXRlZFZhbHVlLmgi
CisjaW5jbHVkZSAiQ1NTSW5pdGlhbFZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VySWRpb21z
LmgiCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0
eVBhcnNlci5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJSdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisvLyBGSVhNRS1ORVdQQVJTRVI6ICNpbmNsdWRlICJTdHls
ZUNvbG9yLmgiCisjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNob3J0aGFuZC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKy8qIEZJWE1FLU5FV1BBUlNFUjogVHVybiBvZmYgZm9yIG5vdy4KKyAK
K3N0YXRpYyBpbmxpbmUgYm9vbCBpc1NpbXBsZUxlbmd0aFByb3BlcnR5SUQoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eUlkLCBib29sJiBhY2NlcHRzTmVnYXRpdmVOdW1iZXJzKQoreworICAgIHN3aXRj
aCAocHJvcGVydHlJZCkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U2l6ZToKKyAgICBjYXNl
IENTU1Byb3BlcnR5R3JpZENvbHVtbkdhcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZFJvd0dh
cDoKKyAgICBjYXNlIENTU1Byb3BlcnR5SGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXaWR0
aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWluSGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlN
aW5XaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ0JvdHRvbToKKyAgICBjYXNlIENT
U1Byb3BlcnR5UGFkZGluZ0xlZnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1RvcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TG9naWNhbFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMb2dpY2FsSGVpZ2h0
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsV2lkdGg6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxIZWlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFBhZGRpbmdBZnRlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0JlZm9y
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0VuZDoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0UGFkZGluZ1N0YXJ0OgorICAvLyAgY2FzZSBDU1NQcm9wZXJ0eVNoYXBlTWFy
Z2luOgorICAgIGNhc2UgQ1NTUHJvcGVydHlSOgorICAgIGNhc2UgQ1NTUHJvcGVydHlSeDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Unk6CisgICAgICAgIGFjY2VwdHNOZWdhdGl2ZU51bWJlcnMgPSBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvdHRvbToK
KyAgICBjYXNlIENTU1Byb3BlcnR5Q3g6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUN5OgorICAgIGNh
c2UgQ1NTUHJvcGVydHlMZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b206Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdp
blJpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5Ub3A6CisgLy8gICBjYXNlIENTU1By
b3BlcnR5TW90aW9uT2Zmc2V0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlSaWdodDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5VG9wOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlcjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXJnaW5FbmQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblN0
YXJ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlYOgorICAgIGNhc2UgQ1NTUHJvcGVydHlZOgorICAg
ICAgICBhY2NlcHRzTmVnYXRpdmVOdW1iZXJzID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgaW5saW5lIGJvb2wgcGFyc2VTaW1w
bGVMZW5ndGgoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3Ro
LCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzJiB1bml0LCBkb3VibGUmIG51bWJlcikKK3sK
KyAgICBpZiAobGVuZ3RoID4gMiAmJiAoY2hhcmFjdGVyc1tsZW5ndGggLSAyXSB8IDB4MjApID09
ICdwJyAmJiAoY2hhcmFjdGVyc1tsZW5ndGggLSAxXSB8IDB4MjApID09ICd4JykgeworICAgICAg
ICBsZW5ndGggLT0gMjsKKyAgICAgICAgdW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZXM6OkNTU19QWDsKKyAgICB9IGVsc2UgaWYgKGxlbmd0aCA+IDEgJiYgY2hhcmFjdGVyc1tsZW5n
dGggLSAxXSA9PSAnJScpIHsKKyAgICAgICAgbGVuZ3RoIC09IDE7CisgICAgICAgIHVuaXQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUEVSQ0VOVEFHRTsKKyAgICB9CisKKyAg
ICAvLyBXZSByZWx5IG9uIGNoYXJhY3RlcnNUb0RvdWJsZSBmb3IgdmFsaWRhdGlvbiBhcyB3ZWxs
LiBUaGUgZnVuY3Rpb24KKyAgICAvLyB3aWxsIHNldCAib2siIHRvICJmYWxzZSIgaWYgdGhlIGVu
dGlyZSBwYXNzZWQtaW4gY2hhcmFjdGVyIHJhbmdlIGRvZXMKKyAgICAvLyBub3QgcmVwcmVzZW50
IGEgZG91YmxlLgorICAgIGJvb2wgb2s7CisgICAgbnVtYmVyID0gY2hhcmFjdGVyc1RvRG91Ymxl
KGNoYXJhY3RlcnMsIGxlbmd0aCwgJm9rKTsKKyAgICBpZiAoIW9rKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgbnVtYmVyID0gY2xhbXBUbzxkb3VibGU+KG51bWJlciwgLXN0ZDo6bnVtZXJp
Y19saW1pdHM8ZmxvYXQ+OjptYXgoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgp
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBwYXJzZVNpbXBsZUxl
bmd0aFZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcs
IENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBBU1NFUlQoIXN0cmluZy5pc0Vt
cHR5KCkpOworICAgIGJvb2wgYWNjZXB0c05lZ2F0aXZlTnVtYmVycyA9IGZhbHNlOworCisgICAg
Ly8gSW4gQHZpZXdwb3J0LCB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBzaG9ydGhhbmRzLCBub3Qgc2lt
cGxlIGxlbmd0aCB2YWx1ZXMuCisgICAgaWYgKGlzQ1NTVmlld3BvcnRQYXJzaW5nRW5hYmxlZEZv
ck1vZGUoY3NzUGFyc2VyTW9kZSkgfHwgIWlzU2ltcGxlTGVuZ3RoUHJvcGVydHlJRChwcm9wZXJ0
eUlkLCBhY2NlcHRzTmVnYXRpdmVOdW1iZXJzKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgZG91YmxlIG51bWJl
cjsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHVuaXQgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6VW5pdFR5cGVzOjpOdW1iZXI7CisKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKSB7Cisg
ICAgICAgIGlmICghcGFyc2VTaW1wbGVMZW5ndGgoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0
aCwgdW5pdCwgbnVtYmVyKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGlmICghcGFyc2VTaW1wbGVMZW5ndGgoc3RyaW5nLmNoYXJhY3RlcnMxNigp
LCBsZW5ndGgsIHVuaXQsIG51bWJlcikpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisKKyAgICBpZiAodW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpOdW1i
ZXIpIHsKKyAgICAgICAgaWYgKGNzc1BhcnNlck1vZGUgPT0gU1ZHQXR0cmlidXRlTW9kZSkKKyAg
ICAgICAgICAgIHVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpVc2VyVW5pdHM7
CisgICAgICAgIGVsc2UgaWYgKCFudW1iZXIpCisgICAgICAgICAgICB1bml0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlczo6UGl4ZWxzOworICAgICAgICBlbHNlCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAobnVtYmVyIDwgMCAmJiAhYWNjZXB0c05l
Z2F0aXZlTnVtYmVycykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShudW1iZXIsIHVuaXQpOworfQorCitzdGF0aWMgaW5saW5l
IGJvb2wgaXNDb2xvclByb3BlcnR5SUQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkKQoreworICAg
IHN3aXRjaCAocHJvcGVydHlJZCkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvcjoKKyAgICBj
YXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJCb3R0b21Db2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJUb3BDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5RmlsbDoKKyAgICBjYXNlIENTU1By
b3BlcnR5Rmxvb2RDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlnaHRpbmdDb2xvcjoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlTdG9w
Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZToKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyQWZ0ZXJDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
QmVmb3JlQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZENvbG9yOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydENvbG9yOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlDb2x1bW5SdWxlQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRF
bXBoYXNpc0NvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3I6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVRleHREZWNvcmF0aW9uQ29sb3I6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKKy8vIFJldHVybnMgdGhl
IG51bWJlciBvZiBjaGFyYWN0ZXJzIHdoaWNoIGZvcm0gYSB2YWxpZCBkb3VibGUKKy8vIGFuZCBh
cmUgdGVybWluYXRlZCBieSB0aGUgZ2l2ZW4gdGVybWluYXRvciBjaGFyYWN0ZXIKK3RlbXBsYXRl
IDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGludCBjaGVja0ZvclZhbGlkRG91Ymxl
KGNvbnN0IENoYXJhY3RlclR5cGUqIHN0cmluZywgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kLCBj
b25zdCBjaGFyIHRlcm1pbmF0b3IpCit7CisgICAgaW50IGxlbmd0aCA9IGVuZCAtIHN0cmluZzsK
KyAgICBpZiAobGVuZ3RoIDwgMSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBib29sIGRlY2lt
YWxNYXJrU2VlbiA9IGZhbHNlOworICAgIGludCBwcm9jZXNzZWRMZW5ndGggPSAwOworCisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBpZiAoc3RyaW5nW2ld
ID09IHRlcm1pbmF0b3IpIHsKKyAgICAgICAgICAgIHByb2Nlc3NlZExlbmd0aCA9IGk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdChzdHJp
bmdbaV0pKSB7CisgICAgICAgICAgICBpZiAoIWRlY2ltYWxNYXJrU2VlbiAmJiBzdHJpbmdbaV0g
PT0gJy4nKQorICAgICAgICAgICAgICAgIGRlY2ltYWxNYXJrU2VlbiA9IHRydWU7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpZiAoZGVjaW1hbE1hcmtTZWVuICYmIHByb2Nlc3NlZExlbmd0aCA9PSAxKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIHJldHVybiBwcm9jZXNzZWRMZW5ndGg7Cit9CisKKy8vIFJldHVy
bnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGNvbnN1bWVkIGZvciBwYXJzaW5nIGEgdmFsaWQg
ZG91YmxlCisvLyB0ZXJtaW5hdGVkIGJ5IHRoZSBnaXZlbiB0ZXJtaW5hdG9yIGNoYXJhY3Rlcgor
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgaW50IHBhcnNlRG91Ymxl
KGNvbnN0IENoYXJhY3RlclR5cGUqIHN0cmluZywgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kLCBj
b25zdCBjaGFyIHRlcm1pbmF0b3IsIGRvdWJsZSYgdmFsdWUpCit7CisgICAgaW50IGxlbmd0aCA9
IGNoZWNrRm9yVmFsaWREb3VibGUoc3RyaW5nLCBlbmQsIHRlcm1pbmF0b3IpOworICAgIGlmICgh
bGVuZ3RoKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGludCBwb3NpdGlvbiA9IDA7CisgICAg
ZG91YmxlIGxvY2FsVmFsdWUgPSAwOworCisgICAgLy8gVGhlIGNvbnN1bWVkIGNoYXJhY3RlcnMg
aGVyZSBhcmUgZ3VhcmFudGVlZCB0byBiZQorICAgIC8vIEFTQ0lJIGRpZ2l0cyB3aXRoIG9yIHdp
dGhvdXQgYSBkZWNpbWFsIG1hcmsKKyAgICBmb3IgKDsgcG9zaXRpb24gPCBsZW5ndGg7ICsrcG9z
aXRpb24pIHsKKyAgICAgICAgaWYgKHN0cmluZ1twb3NpdGlvbl0gPT0gJy4nKQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGxvY2FsVmFsdWUgPSBsb2NhbFZhbHVlICogMTAgKyBzdHJpbmdb
cG9zaXRpb25dIC0gJzAnOworICAgIH0KKworICAgIGlmICgrK3Bvc2l0aW9uID09IGxlbmd0aCkg
eworICAgICAgICB2YWx1ZSA9IGxvY2FsVmFsdWU7CisgICAgICAgIHJldHVybiBsZW5ndGg7Cisg
ICAgfQorCisgICAgZG91YmxlIGZyYWN0aW9uID0gMDsKKyAgICBkb3VibGUgc2NhbGUgPSAxOwor
CisgICAgY29uc3QgZG91YmxlIG1heFNjYWxlID0gMTAwMDAwMDsKKyAgICB3aGlsZSAocG9zaXRp
b24gPCBsZW5ndGggJiYgc2NhbGUgPCBtYXhTY2FsZSkgeworICAgICAgICBmcmFjdGlvbiA9IGZy
YWN0aW9uICogMTAgKyBzdHJpbmdbcG9zaXRpb24rK10gLSAnMCc7CisgICAgICAgIHNjYWxlICo9
IDEwOworICAgIH0KKworICAgIHZhbHVlID0gbG9jYWxWYWx1ZSArIGZyYWN0aW9uIC8gc2NhbGU7
CisgICAgcmV0dXJuIGxlbmd0aDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+CitzdGF0aWMgYm9vbCBwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlKGNvbnN0IENoYXJhY3Rl
clR5cGUqJiBzdHJpbmcsIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCwgY29uc3QgY2hhciB0ZXJt
aW5hdG9yLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzJiBleHBlY3QsIGludCYgdmFsdWUp
Cit7CisgICAgY29uc3QgQ2hhcmFjdGVyVHlwZSogY3VycmVudCA9IHN0cmluZzsKKyAgICBkb3Vi
bGUgbG9jYWxWYWx1ZSA9IDA7CisgICAgYm9vbCBuZWdhdGl2ZSA9IGZhbHNlOworICAgIHdoaWxl
IChjdXJyZW50ICE9IGVuZCAmJiBpc0hUTUxTcGFjZTxDaGFyYWN0ZXJUeXBlPigqY3VycmVudCkp
CisgICAgICAgIGN1cnJlbnQrKzsKKyAgICBpZiAoY3VycmVudCAhPSBlbmQgJiYgKmN1cnJlbnQg
PT0gJy0nKSB7CisgICAgICAgIG5lZ2F0aXZlID0gdHJ1ZTsKKyAgICAgICAgY3VycmVudCsrOwor
ICAgIH0KKyAgICBpZiAoY3VycmVudCA9PSBlbmQgfHwgIWlzQVNDSUlEaWdpdCgqY3VycmVudCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB3aGlsZSAoY3VycmVudCAhPSBlbmQgJiYgaXNB
U0NJSURpZ2l0KCpjdXJyZW50KSkgeworICAgICAgICBkb3VibGUgbmV3VmFsdWUgPSBsb2NhbFZh
bHVlICogMTAgKyAqY3VycmVudCsrIC0gJzAnOworICAgICAgICBpZiAobmV3VmFsdWUgPj0gMjU1
KSB7CisgICAgICAgICAgICAvLyBDbGFtcCB2YWx1ZXMgYXQgMjU1LgorICAgICAgICAgICAgbG9j
YWxWYWx1ZSA9IDI1NTsKKyAgICAgICAgICAgIHdoaWxlIChjdXJyZW50ICE9IGVuZCAmJiBpc0FT
Q0lJRGlnaXQoKmN1cnJlbnQpKQorICAgICAgICAgICAgICAgICsrY3VycmVudDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGxvY2FsVmFsdWUgPSBuZXdWYWx1ZTsKKyAg
ICB9CisKKyAgICBpZiAoY3VycmVudCA9PSBlbmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmIChleHBlY3QgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6TnVtYmVyICYm
ICgqY3VycmVudCA9PSAnLicgfHwgKmN1cnJlbnQgPT0gJyUnKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKCpjdXJyZW50ID09ICcuJykgeworICAgICAgICAvLyBXZSBhbHJlYWR5
IHBhcnNlZCB0aGUgaW50ZWdyYWwgcGFydCwgdHJ5IHRvIHBhcnNlCisgICAgICAgIC8vIHRoZSBm
cmFjdGlvbiBwYXJ0IG9mIHRoZSBwZXJjZW50YWdlIHZhbHVlLgorICAgICAgICBkb3VibGUgcGVy
Y2VudGFnZSA9IDA7CisgICAgICAgIGludCBudW1DaGFyYWN0ZXJzUGFyc2VkID0gcGFyc2VEb3Vi
bGUoY3VycmVudCwgZW5kLCAnJScsIHBlcmNlbnRhZ2UpOworICAgICAgICBpZiAoIW51bUNoYXJh
Y3RlcnNQYXJzZWQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGN1cnJlbnQg
Kz0gbnVtQ2hhcmFjdGVyc1BhcnNlZDsKKyAgICAgICAgaWYgKCpjdXJyZW50ICE9ICclJykKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbG9jYWxWYWx1ZSArPSBwZXJjZW50YWdl
OworICAgIH0KKworICAgIGlmIChleHBlY3QgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBl
czo6UGVyY2VudGFnZSAmJiAqY3VycmVudCAhPSAnJScpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICgqY3VycmVudCA9PSAnJScpIHsKKyAgICAgICAgZXhwZWN0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlczo6UGVyY2VudGFnZTsKKyAgICAgICAgbG9jYWxWYWx1ZSA9IGxv
Y2FsVmFsdWUgLyAxMDAuMCAqIDI1Ni4wOworICAgICAgICAvLyBDbGFtcCB2YWx1ZXMgYXQgMjU1
IGZvciBwZXJjZW50YWdlcyBvdmVyIDEwMCUKKyAgICAgICAgaWYgKGxvY2FsVmFsdWUgPiAyNTUp
CisgICAgICAgICAgICBsb2NhbFZhbHVlID0gMjU1OworICAgICAgICBjdXJyZW50Kys7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgZXhwZWN0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6
TnVtYmVyOworICAgIH0KKworICAgIHdoaWxlIChjdXJyZW50ICE9IGVuZCAmJiBpc0hUTUxTcGFj
ZTxDaGFyYWN0ZXJUeXBlPigqY3VycmVudCkpCisgICAgICAgIGN1cnJlbnQrKzsKKyAgICBpZiAo
Y3VycmVudCA9PSBlbmQgfHwgKmN1cnJlbnQrKyAhPSB0ZXJtaW5hdG9yKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgLy8gQ2xhbXAgbmVnYXRpdmUgdmFsdWVzIGF0IHplcm8uCisgICAgdmFs
dWUgPSBuZWdhdGl2ZSA/IDAgOiBzdGF0aWNfY2FzdDxpbnQ+KGxvY2FsVmFsdWUpOworICAgIHN0
cmluZyA9IGN1cnJlbnQ7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGlubGluZSBib29sIGlzVGVudGhBbHBoYShjb25zdCBD
aGFyYWN0ZXJUeXBlKiBzdHJpbmcsIGNvbnN0IGludCBsZW5ndGgpCit7CisgICAgLy8gIjAuWCIK
KyAgICBpZiAobGVuZ3RoID09IDMgJiYgc3RyaW5nWzBdID09ICcwJyAmJiBzdHJpbmdbMV0gPT0g
Jy4nICYmIGlzQVNDSUlEaWdpdChzdHJpbmdbMl0pKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIC8vICIuWCIKKyAgICBpZiAobGVuZ3RoID09IDIgJiYgc3RyaW5nWzBdID09ICcuJyAmJiBp
c0FTQ0lJRGlnaXQoc3RyaW5nWzFdKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGlj
IGlubGluZSBib29sIHBhcnNlQWxwaGFWYWx1ZShjb25zdCBDaGFyYWN0ZXJUeXBlKiYgc3RyaW5n
LCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBlbmQsIGNvbnN0IGNoYXIgdGVybWluYXRvciwgaW50JiB2
YWx1ZSkKK3sKKyAgICB3aGlsZSAoc3RyaW5nICE9IGVuZCAmJiBpc0hUTUxTcGFjZTxDaGFyYWN0
ZXJUeXBlPigqc3RyaW5nKSkKKyAgICAgICAgc3RyaW5nKys7CisKKyAgICBib29sIG5lZ2F0aXZl
ID0gZmFsc2U7CisKKyAgICBpZiAoc3RyaW5nICE9IGVuZCAmJiAqc3RyaW5nID09ICctJykgewor
ICAgICAgICBuZWdhdGl2ZSA9IHRydWU7CisgICAgICAgIHN0cmluZysrOworICAgIH0KKworICAg
IHZhbHVlID0gMDsKKworICAgIGludCBsZW5ndGggPSBlbmQgLSBzdHJpbmc7CisgICAgaWYgKGxl
bmd0aCA8IDIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChzdHJpbmdbbGVuZ3Ro
IC0gMV0gIT0gdGVybWluYXRvciB8fCAhaXNBU0NJSURpZ2l0KHN0cmluZ1tsZW5ndGggLSAyXSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChzdHJpbmdbMF0gIT0gJzAnICYmIHN0
cmluZ1swXSAhPSAnMScgJiYgc3RyaW5nWzBdICE9ICcuJykgeworICAgICAgICBpZiAoY2hlY2tG
b3JWYWxpZERvdWJsZShzdHJpbmcsIGVuZCwgdGVybWluYXRvcikpIHsKKyAgICAgICAgICAgIHZh
bHVlID0gbmVnYXRpdmUgPyAwIDogMjU1OworICAgICAgICAgICAgc3RyaW5nID0gZW5kOworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGlmIChsZW5ndGggPT0gMiAmJiBzdHJpbmdbMF0gIT0gJy4nKSB7CisgICAg
ICAgIHZhbHVlID0gIW5lZ2F0aXZlICYmIHN0cmluZ1swXSA9PSAnMScgPyAyNTUgOiAwOworICAg
ICAgICBzdHJpbmcgPSBlbmQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlm
IChpc1RlbnRoQWxwaGEoc3RyaW5nLCBsZW5ndGggLSAxKSkgeworICAgICAgICBzdGF0aWMgY29u
c3QgaW50IHRlbnRoQWxwaGFWYWx1ZXNbXSA9IHsgMCwgMjUsIDUxLCA3NiwgMTAyLCAxMjcsIDE1
MywgMTc5LCAyMDQsIDIzMCB9OworICAgICAgICB2YWx1ZSA9IG5lZ2F0aXZlID8gMCA6IHRlbnRo
QWxwaGFWYWx1ZXNbc3RyaW5nW2xlbmd0aCAtIDJdIC0gJzAnXTsKKyAgICAgICAgc3RyaW5nID0g
ZW5kOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBkb3VibGUgYWxwaGEgPSAw
OworICAgIGlmICghcGFyc2VEb3VibGUoc3RyaW5nLCBlbmQsIHRlcm1pbmF0b3IsIGFscGhhKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHZhbHVlID0gbmVnYXRpdmUgPyAwIDogc3RhdGlj
X2Nhc3Q8aW50PihhbHBoYSAqIG5leHRhZnRlcigyNTYuMCwgMC4wKSk7CisgICAgc3RyaW5nID0g
ZW5kOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4KK3N0YXRpYyBpbmxpbmUgYm9vbCBtaWdodEJlUkdCQShjb25zdCBDaGFyYWN0ZXJUeXBl
KiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgaWYgKGxlbmd0aCA8IDUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gY2hhcmFjdGVyc1s0XSA9PSAnKCcKKyAg
ICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChjaGFyYWN0ZXJzWzBdLCAncicpCisg
ICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoY2hhcmFjdGVyc1sxXSwgJ2cnKQor
ICAgICAgICAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKGNoYXJhY3RlcnNbMl0sICdiJykK
KyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChjaGFyYWN0ZXJzWzNdLCAnYScp
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBpbmxpbmUg
Ym9vbCBtaWdodEJlUkdCKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlbmd0aCkKK3sKKyAgICBpZiAobGVuZ3RoIDwgNCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiBjaGFyYWN0ZXJzWzNdID09ICcoJworICAgICAgICAmJiBpc0FTQ0lJQWxwaGFD
YXNlbGVzc0VxdWFsKGNoYXJhY3RlcnNbMF0sICdyJykKKyAgICAgICAgJiYgaXNBU0NJSUFscGhh
Q2FzZWxlc3NFcXVhbChjaGFyYWN0ZXJzWzFdLCAnZycpCisgICAgICAgICYmIGlzQVNDSUlBbHBo
YUNhc2VsZXNzRXF1YWwoY2hhcmFjdGVyc1syXSwgJ2InKTsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgYm9vbCBmYXN0UGFyc2VDb2xvckludGVybmFsKFJH
QkEzMiYgcmdiLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgsIGJvb2wgcXVpcmtzTW9kZSkKK3sKKyAgICBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVz
IGV4cGVjdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OlVua25vd247CisKKyAgICBp
ZiAobGVuZ3RoID49IDQgJiYgY2hhcmFjdGVyc1swXSA9PSAnIycpCisgICAgICAgIHJldHVybiBD
b2xvcjo6cGFyc2VIZXhDb2xvcihjaGFyYWN0ZXJzICsgMSwgbGVuZ3RoIC0gMSwgcmdiKTsKKwor
ICAgIGlmIChxdWlya3NNb2RlICYmIChsZW5ndGggPT0gMyB8fCBsZW5ndGggPT0gNikpIHsKKyAg
ICAgICAgaWYgKENvbG9yOjpwYXJzZUhleENvbG9yKGNoYXJhY3RlcnMsIGxlbmd0aCwgcmdiKSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIFRyeSByZ2JhKCkgc3lu
dGF4LgorICAgIGlmIChtaWdodEJlUkdCQShjaGFyYWN0ZXJzLCBsZW5ndGgpKSB7CisgICAgICAg
IGNvbnN0IENoYXJhY3RlclR5cGUqIGN1cnJlbnQgPSBjaGFyYWN0ZXJzICsgNTsKKyAgICAgICAg
Y29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kID0gY2hhcmFjdGVycyArIGxlbmd0aDsKKyAgICAgICAg
aW50IHJlZDsKKyAgICAgICAgaW50IGdyZWVuOworICAgICAgICBpbnQgYmx1ZTsKKyAgICAgICAg
aW50IGFscGhhOworCisgICAgICAgIGlmICghcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjdXJy
ZW50LCBlbmQsICcsJywgZXhwZWN0LCByZWQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBpZiAoIXBhcnNlQ29sb3JJbnRPclBlcmNlbnRhZ2UoY3VycmVudCwgZW5kLCAnLCcs
IGV4cGVjdCwgZ3JlZW4pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAo
IXBhcnNlQ29sb3JJbnRPclBlcmNlbnRhZ2UoY3VycmVudCwgZW5kLCAnLCcsIGV4cGVjdCwgYmx1
ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghcGFyc2VBbHBoYVZh
bHVlKGN1cnJlbnQsIGVuZCwgJyknLCBhbHBoYSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIGlmIChjdXJyZW50ICE9IGVuZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgcmdiID0gbWFrZVJHQkEocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBUcnkgcmdiKCkgc3ludGF4LgorICAgIGlm
IChtaWdodEJlUkdCKGNoYXJhY3RlcnMsIGxlbmd0aCkpIHsKKyAgICAgICAgY29uc3QgQ2hhcmFj
dGVyVHlwZSogY3VycmVudCA9IGNoYXJhY3RlcnMgKyA0OworICAgICAgICBjb25zdCBDaGFyYWN0
ZXJUeXBlKiBlbmQgPSBjaGFyYWN0ZXJzICsgbGVuZ3RoOworICAgICAgICBpbnQgcmVkOworICAg
ICAgICBpbnQgZ3JlZW47CisgICAgICAgIGludCBibHVlOworICAgICAgICBpZiAoIXBhcnNlQ29s
b3JJbnRPclBlcmNlbnRhZ2UoY3VycmVudCwgZW5kLCAnLCcsIGV4cGVjdCwgcmVkKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFwYXJzZUNvbG9ySW50T3JQZXJjZW50
YWdlKGN1cnJlbnQsIGVuZCwgJywnLCBleHBlY3QsIGdyZWVuKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgaWYgKCFwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlKGN1cnJlbnQs
IGVuZCwgJyknLCBleHBlY3QsIGJsdWUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBpZiAoY3VycmVudCAhPSBlbmQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHJnYiA9IG1ha2VSR0IocmVkLCBncmVlbiwgYmx1ZSk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworQ1NTVmFsdWUqIENTU1BhcnNlckZh
c3RQYXRoczo6cGFyc2VDb2xvcihjb25zdCBTdHJpbmcmIHN0cmluZywgQ1NTUGFyc2VyTW9kZSBw
YXJzZXJNb2RlKQoreworICAgIEFTU0VSVCghc3RyaW5nLmlzRW1wdHkoKSk7CisgICAgQ1NTVmFs
dWVJRCB2YWx1ZUlEID0gY3NzVmFsdWVLZXl3b3JkSUQoc3RyaW5nKTsKKyAgICBpZiAoU3R5bGVD
b2xvcjo6aXNDb2xvcktleXdvcmQodmFsdWVJRCkpIHsKKyAgICAgICAgaWYgKCFpc1ZhbHVlQWxs
b3dlZEluTW9kZSh2YWx1ZUlELCBwYXJzZXJNb2RlKSkKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIo
dmFsdWVJRCk7CisgICAgfQorCisgICAgUkdCQTMyIGNvbG9yOworICAgIGJvb2wgcXVpcmtzTW9k
ZSA9IGlzUXVpcmtzTW9kZUJlaGF2aW9yKHBhcnNlck1vZGUpOworCisgICAgLy8gRmFzdCBwYXRo
IGZvciBoZXggY29sb3JzIGFuZCByZ2IoKS9yZ2JhKCkgY29sb3JzCisgICAgYm9vbCBwYXJzZVJl
c3VsdDsKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICBwYXJzZVJlc3VsdCA9IGZh
c3RQYXJzZUNvbG9ySW50ZXJuYWwoY29sb3IsIHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcu
bGVuZ3RoKCksIHF1aXJrc01vZGUpOworICAgIGVsc2UKKyAgICAgICAgcGFyc2VSZXN1bHQgPSBm
YXN0UGFyc2VDb2xvckludGVybmFsKGNvbG9yLCBzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmlu
Zy5sZW5ndGgoKSwgcXVpcmtzTW9kZSk7CisgICAgaWYgKCFwYXJzZVJlc3VsdCkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIENTU0NvbG9yVmFsdWU6OmNyZWF0ZShjb2xvcik7
Cit9CisKK2Jvb2wgQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5k
VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkLCBDU1NWYWx1ZUlEIHZhbHVlSUQsIENTU1Bh
cnNlck1vZGUgcGFyc2VyTW9kZSkKK3sKKyAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUludmFs
aWQgfHwgIWlzVmFsdWVBbGxvd2VkSW5Nb2RlKHZhbHVlSUQsIHBhcnNlck1vZGUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKKyAgICBjYXNlIENT
U1Byb3BlcnR5QWxpZ25tZW50QmFzZWxpbmU6CisgICAgICAgIC8vIGF1dG8gfCBiYXNlbGluZSB8
IGJlZm9yZS1lZGdlIHwgdGV4dC1iZWZvcmUtZWRnZSB8IG1pZGRsZSB8CisgICAgICAgIC8vIGNl
bnRyYWwgfCBhZnRlci1lZGdlIHwgdGV4dC1hZnRlci1lZGdlIHwgaWRlb2dyYXBoaWMgfCBhbHBo
YWJldGljIHwKKyAgICAgICAgLy8gaGFuZ2luZyB8IG1hdGhlbWF0aWNhbAorICAgICAgICByZXR1
cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUFscGhhYmV0
aWMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJhc2VsaW5lCisgICAgICAgICAgICB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlTWlkZGxlIHx8ICh2YWx1ZUlEID49IENTU1ZhbHVlQmVmb3JlRWRnZSAmJiB2
YWx1ZUlEIDw9IENTU1ZhbHVlTWF0aGVtYXRpY2FsKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QWxs
OgorICAgICAgICByZXR1cm4gZmFsc2U7IC8vIE9ubHkgYWNjZXB0cyBjc3Mtd2lkZSBrZXl3b3Jk
cworICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WDogLy8gcmVwZWF0IHwgbm8t
cmVwZWF0CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZOiAvLyByZXBlYXQg
fCBuby1yZXBlYXQKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVSZXBlYXQgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZU5vUmVwZWF0OworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJD
b2xsYXBzZTogLy8gY29sbGFwc2UgfCBzZXBhcmF0ZQorICAgICAgICByZXR1cm4gdmFsdWVJRCA9
PSBDU1NWYWx1ZUNvbGxhcHNlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTZXBhcmF0ZTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGU6IC8vIDxib3JkZXItc3R5bGU+CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGU6IC8vIERlZmluZWQgYXM6IG5vbmUgfCBoaWRk
ZW4gfCBkb3R0ZWQgfCBkYXNoZWQgfAorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21T
dHlsZTogLy8gc29saWQgfCBkb3VibGUgfCBncm9vdmUgfCByaWRnZSB8IGluc2V0IHwgb3V0c2V0
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyQmVmb3JlU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0eWxl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlDb2x1bW5SdWxlU3R5bGU6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID49IENT
U1ZhbHVlTm9uZSAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlRG91YmxlOworICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3hTaXppbmc6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQm9yZGVy
Qm94IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDb250ZW50Qm94OworICAgIGNhc2UgQ1NTUHJvcGVy
dHlCdWZmZXJlZFJlbmRlcmluZzoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVB
dXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEeW5hbWljIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVT
dGF0aWM7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNhcHRpb25TaWRlOiAvLyB0b3AgfCBib3R0b20g
fCBsZWZ0IHwgcmlnaHQKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVMZWZ0IHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVSaWdodCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVG9wIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVCb3R0b207CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNsZWFyOiAvLyBu
b25lIHwgbGVmdCB8IHJpZ2h0IHwgYm90aAorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NW
YWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZVJpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCb3RoOworICAgIGNhc2UgQ1NTUHJvcGVydHlD
bGlwUnVsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5RmlsbFJ1bGU6CisgICAgICAgIHJldHVybiB2
YWx1ZUlEID09IENTU1ZhbHVlTm9uemVybyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRXZlbm9kZDsK
KyAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3JJbnRlcnBvbGF0aW9uOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlDb2xvckludGVycG9sYXRpb25GaWx0ZXJzOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9
PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNSR0IgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUxpbmVhclJHQjsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3JSZW5kZXJpbmc6Cisg
ICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlT3B0aW1pemVTcGVlZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlT3B0aW1pemVRdWFsaXR5Owor
ICAgIGNhc2UgQ1NTUHJvcGVydHlEaXJlY3Rpb246IC8vIGx0ciB8IHJ0bAorICAgICAgICByZXR1
cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUx0ciB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUnRsOworICAg
IGNhc2UgQ1NTUHJvcGVydHlEaXNwbGF5OgorICAgICAgICAvLyBpbmxpbmUgfCBibG9jayB8IGxp
c3QtaXRlbSB8IGlubGluZS1ibG9jayB8IHRhYmxlIHwKKyAgICAgICAgLy8gaW5saW5lLXRhYmxl
IHwgdGFibGUtcm93LWdyb3VwIHwgdGFibGUtaGVhZGVyLWdyb3VwIHwgdGFibGUtZm9vdGVyLWdy
b3VwIHwgdGFibGUtcm93IHwKKyAgICAgICAgLy8gdGFibGUtY29sdW1uLWdyb3VwIHwgdGFibGUt
Y29sdW1uIHwgdGFibGUtY2VsbCB8IHRhYmxlLWNhcHRpb24gfCAtd2Via2l0LWJveCB8IC13ZWJr
aXQtaW5saW5lLWJveCB8IG5vbmUKKyAgICAgICAgLy8gZmxleCB8IGlubGluZS1mbGV4IHwgLXdl
YmtpdC1mbGV4IHwgLXdlYmtpdC1pbmxpbmUtZmxleCB8IGdyaWQgfCBpbmxpbmUtZ3JpZAorICAg
ICAgICByZXR1cm4gKHZhbHVlSUQgPj0gQ1NTVmFsdWVJbmxpbmUgJiYgdmFsdWVJRCA8PSBDU1NW
YWx1ZUlubGluZUZsZXgpIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRGbGV4IHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVXZWJraXRJbmxpbmVGbGV4IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25l
CisgICAgICAgICAgICB8fCAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzR3JpZExheW91dEVu
YWJsZWQoKSAmJiAodmFsdWVJRCA9PSBDU1NWYWx1ZUdyaWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUlubGluZUdyaWQpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5RG9taW5hbnRCYXNlbGluZToKKyAg
ICAgICAgLy8gYXV0byB8IHVzZS1zY3JpcHQgfCBuby1jaGFuZ2UgfCByZXNldC1zaXplIHwgaWRl
b2dyYXBoaWMgfAorICAgICAgICAvLyBhbHBoYWJldGljIHwgaGFuZ2luZyB8IG1hdGhlbWF0aWNh
bCB8IGNlbnRyYWwgfCBtaWRkbGUgfAorICAgICAgICAvLyB0ZXh0LWFmdGVyLWVkZ2UgfCB0ZXh0
LWJlZm9yZS1lZGdlCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlQWxwaGFiZXRpYyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTWlkZGxl
CisgICAgICAgICAgICB8fCAodmFsdWVJRCA+PSBDU1NWYWx1ZVVzZVNjcmlwdCAmJiB2YWx1ZUlE
IDw9IENTU1ZhbHVlUmVzZXRTaXplKQorICAgICAgICAgICAgfHwgKHZhbHVlSUQgPj0gQ1NTVmFs
dWVDZW50cmFsICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVNYXRoZW1hdGljYWwpOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlFbXB0eUNlbGxzOiAvLyBzaG93IHwgaGlkZQorICAgICAgICByZXR1cm4gdmFs
dWVJRCA9PSBDU1NWYWx1ZVNob3cgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhpZGU7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUZsb2F0OiAvLyBsZWZ0IHwgcmlnaHQgfCBub25lCisgICAgICAgIHJldHVy
biB2YWx1ZUlEID09IENTU1ZhbHVlTGVmdCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmlnaHQgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHlsZTog
Ly8gbm9ybWFsIHwgaXRhbGljIHwgb2JsaXF1ZQorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBD
U1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlSXRhbGljIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVPYmxpcXVlOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3RyZXRjaDogLy8gbm9y
bWFsIHwgdWx0cmEtY29uZGVuc2VkIHwgZXh0cmEtY29uZGVuc2VkIHwgY29uZGVuc2VkIHwgc2Vt
aS1jb25kZW5zZWQgfCBzZW1pLWV4cGFuZGVkIHwgZXhwYW5kZWQgfCBleHRyYS1leHBhbmRlZCB8
IHVsdHJhLWV4cGFuZGVkCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFs
IHx8ICh2YWx1ZUlEID49IENTU1ZhbHVlVWx0cmFDb25kZW5zZWQgJiYgdmFsdWVJRCA8PSBDU1NW
YWx1ZVVsdHJhRXhwYW5kZWQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlJbWFnZVJlbmRlcmluZzog
Ly8gYXV0byB8IG9wdGltaXplQ29udHJhc3QgfCBwaXhlbGF0ZWQKKyAgICAgICAgcmV0dXJuIHZh
bHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRPcHRpbWl6
ZUNvbnRyYXN0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVQaXhlbGF0ZWQ7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUlzb2xhdGlvbjogLy8gYXV0byB8IGlzb2xhdGUKKyAgICAgICAgcmV0dXJuIHZhbHVl
SUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVJc29sYXRlOworICAgIGNh
c2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbjogLy8gaW5zaWRlIHwgb3V0c2lkZQorICAg
ICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUluc2lkZSB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlT3V0c2lkZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZToKKyAgICAgICAg
Ly8gU2VlIHNlY3Rpb24gQ1NTX1BST1BfTElTVF9TVFlMRV9UWVBFIG9mIGZpbGUgQ1NTVmFsdWVL
ZXl3b3Jkcy5pbgorICAgICAgICAvLyBmb3IgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGxpc3Qtc3R5
bGUtdHlwZXMuCisgICAgICAgIHJldHVybiAodmFsdWVJRCA+PSBDU1NWYWx1ZURpc2MgJiYgdmFs
dWVJRCA8PSBDU1NWYWx1ZUthdGFrYW5hSXJvaGEpIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25l
OworICAgIGNhc2UgQ1NTUHJvcGVydHlNYXNrVHlwZToKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQg
PT0gQ1NTVmFsdWVMdW1pbmFuY2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUFscGhhOworICAgIGNh
c2UgQ1NTUHJvcGVydHlPYmplY3RGaXQ6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1Zh
bHVlRmlsbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ29udGFpbiB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlQ292ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZVNjYWxlRG93bjsKKyAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlOiAvLyAoPGJvcmRl
ci1zdHlsZT4gZXhjZXB0IGhpZGRlbikgfCBhdXRvCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09
IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCAodmFsdWVJRCA+PSBD
U1NWYWx1ZUluc2V0ICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVEb3VibGUpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlPdmVyZmxvd0FuY2hvcjoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFs
dWVWaXNpYmxlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVBdXRvOworICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1dyYXA6IC8vIG5vcm1hbCB8IGJy
ZWFrLXdvcmQKKyAgICBjYXNlIENTU1Byb3BlcnR5V29yZFdyYXA6CisgICAgICAgIHJldHVybiB2
YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCcmVha1dvcmQ7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93WDogLy8gdmlzaWJsZSB8IGhpZGRlbiB8IHNj
cm9sbCB8IGF1dG8gfCBvdmVybGF5CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVl
VmlzaWJsZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlSGlkZGVuIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVTY3JvbGwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZU92ZXJsYXk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93WTogLy8gdmlzaWJsZSB8IGhp
ZGRlbiB8IHNjcm9sbCB8IGF1dG8gfCBvdmVybGF5IHwgLXdlYmtpdC1wYWdlZC14IHwgLXdlYmtp
dC1wYWdlZC15CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlVmlzaWJsZSB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlSGlkZGVuIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTY3JvbGwgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU92ZXJsYXkgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZVdlYmtpdFBhZ2VkWCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Vi
a2l0UGFnZWRZOworICAgIGNhc2UgQ1NTUHJvcGVydHlCcmVha0FmdGVyOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlCcmVha0JlZm9yZToKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVB
dXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdm9pZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXZv
aWRQYWdlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVQYWdlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVM
ZWZ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSaWdodCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmVj
dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVZlcnNvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdm9p
ZENvbHVtbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ29sdW1uOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlCcmVha0luc2lkZToKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdm9pZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXZvaWRQYWdl
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdm9pZENvbHVtbjsKKyAgICBjYXNlIENTU1Byb3BlcnR5
UG9pbnRlckV2ZW50czoKKyAgICAgICAgLy8gbm9uZSB8IHZpc2libGVQYWludGVkIHwgdmlzaWJs
ZUZpbGwgfCB2aXNpYmxlU3Ryb2tlIHwgdmlzaWJsZSB8CisgICAgICAgIC8vIHBhaW50ZWQgfCBm
aWxsIHwgc3Ryb2tlIHwgYXV0byB8IGFsbCB8IGJvdW5kaW5nLWJveAorICAgICAgICByZXR1cm4g
dmFsdWVJRCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUFsbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCAodmFs
dWVJRCA+PSBDU1NWYWx1ZVZpc2libGVQYWludGVkICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVCb3Vu
ZGluZ0JveCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBvc2l0aW9uOiAvLyBzdGF0aWMgfCByZWxh
dGl2ZSB8IGFic29sdXRlIHwgZml4ZWQgfCBzdGlja3kKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQg
PT0gQ1NTVmFsdWVTdGF0aWMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJlbGF0aXZlIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVBYnNvbHV0ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRml4ZWQgfHwgKFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc1N0aWNreVBvc2l0aW9uRW5hYmxlZCgpICYmIHZhbHVl
SUQgPT0gQ1NTVmFsdWVTdGlja3kpOworICAgIGNhc2UgQ1NTUHJvcGVydHlSZXNpemU6IC8vIG5v
bmUgfCBib3RoIHwgaG9yaXpvbnRhbCB8IHZlcnRpY2FsIHwgYXV0bworICAgICAgICByZXR1cm4g
dmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJvdGggfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZUhvcml6b250YWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVZlcnRpY2Fs
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvOworICAgIGNhc2UgQ1NTUHJvcGVydHlTY3JvbGxC
ZWhhdmlvcjogLy8gYXV0byB8IHNtb290aAorICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6Y3Nzb21TbW9vdGhTY3JvbGxFbmFibGVkKCkpOworICAgICAgICByZXR1cm4gdmFs
dWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNtb290aDsKKyAgICBj
YXNlIENTU1Byb3BlcnR5U2hhcGVSZW5kZXJpbmc6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09
IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlT3B0aW1pemVTcGVlZCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlQ3Jpc3BFZGdlcyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlR2VvbWV0cmlj
UHJlY2lzaW9uOworICAgIGNhc2UgQ1NTUHJvcGVydHlTcGVhazogLy8gbm9uZSB8IG5vcm1hbCB8
IHNwZWxsLW91dCB8IGRpZ2l0cyB8IGxpdGVyYWwtcHVuY3R1YXRpb24gfCBuby1wdW5jdHVhdGlv
bgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3BlbGxPdXQgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZURpZ2l0cyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTGl0ZXJhbFB1bmN0dWF0aW9u
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb1B1bmN0dWF0aW9uOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlTdHJva2VMaW5lam9pbjoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVNaXRl
ciB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUm91bmQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJldmVs
OworICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2VMaW5lY2FwOgorICAgICAgICByZXR1cm4gdmFs
dWVJRCA9PSBDU1NWYWx1ZUJ1dHQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJvdW5kIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVTcXVhcmU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0OiAv
LyBhdXRvIHwgZml4ZWQKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVGaXhlZDsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEFsaWdu
OgorICAgICAgICByZXR1cm4gKHZhbHVlSUQgPj0gQ1NTVmFsdWVXZWJraXRBdXRvICYmIHZhbHVl
SUQgPD0gQ1NTVmFsdWVJbnRlcm5hbENlbnRlcikgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVN0YXJ0
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFbmQ7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRBbGln
bkxhc3Q6CisgICAgICAgIC8vIGF1dG8gfCBzdGFydCB8IGVuZCB8IGxlZnQgfCByaWdodCB8IGNl
bnRlciB8IGp1c3RpZnkKKyAgICAgICAgcmV0dXJuICh2YWx1ZUlEID49IENTU1ZhbHVlTGVmdCAm
JiB2YWx1ZUlEIDw9IENTU1ZhbHVlSnVzdGlmeSkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVN0YXJ0
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFbmQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG87Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRBbmNob3I6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09
IENTU1ZhbHVlU3RhcnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1pZGRsZSB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlRW5kOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0Q29tYmluZVVwcmlnaHQ6Cisg
ICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlQWxsOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblN0eWxlOgorICAgICAg
ICAvLyBzb2xpZCB8IGRvdWJsZSB8IGRvdHRlZCB8IGRhc2hlZCB8IHdhdnkKKyAgICAgICAgQVNT
RVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzczNUZXh0RGVjb3JhdGlvbnNFbmFibGVkKCkp
OworICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVNvbGlkIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVEb3VibGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURvdHRlZCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlRGFzaGVkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXYXZ5OworICAgIGNhc2UgQ1NT
UHJvcGVydHlUZXh0SnVzdGlmeToKKyAgICAgICAgLy8gYXV0byB8IG5vbmUgfCBpbnRlci13b3Jk
IHwgZGlzdHJpYnV0ZQorICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3Nz
M1RleHRFbmFibGVkKCkpOworICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUludGVy
V29yZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRGlzdHJpYnV0ZSB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
VGV4dE9yaWVudGF0aW9uOiAvLyBtaXhlZCB8IHVwcmlnaHQgfCBzaWRld2F5cyB8IHNpZGV3YXlz
LXJpZ2h0CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTWl4ZWQgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZVVwcmlnaHQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNpZGV3YXlzIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVTaWRld2F5c1JpZ2h0OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0T3JpZW50YXRpb246CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlU2lk
ZXdheXMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNpZGV3YXlzUmlnaHQgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZVZlcnRpY2FsUmlnaHQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVVwcmlnaHQ7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVyZmxvdzogLy8gY2xpcCB8IGVsbGlwc2lzCisgICAgICAg
IHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQ2xpcCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRWxs
aXBzaXM7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmc6IC8vIGF1dG8gfCBvcHRp
bWl6ZVNwZWVkIHwgb3B0aW1pemVMZWdpYmlsaXR5IHwgZ2VvbWV0cmljUHJlY2lzaW9uCisgICAg
ICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
T3B0aW1pemVTcGVlZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlT3B0aW1pemVMZWdpYmlsaXR5IHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVHZW9tZXRyaWNQcmVjaXNpb247CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRleHRUcmFuc2Zvcm06IC8vIGNhcGl0YWxpemUgfCB1cHBlcmNhc2UgfCBsb3dlcmNhc2Ug
fCBub25lCisgICAgICAgIHJldHVybiAodmFsdWVJRCA+PSBDU1NWYWx1ZUNhcGl0YWxpemUgJiYg
dmFsdWVJRCA8PSBDU1NWYWx1ZUxvd2VyY2FzZSkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmU7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpOgorICAgICAgICByZXR1cm4gdmFsdWVJ
RCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRW1iZWQKKyAgICAgICAg
ICAgIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCaWRpT3ZlcnJpZGUgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZVdlYmtpdElzb2xhdGUKKyAgICAgICAgICAgIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJr
aXRJc29sYXRlT3ZlcnJpZGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdlYmtpdFBsYWludGV4dAor
ICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUlzb2xhdGUgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUlzb2xhdGVPdmVycmlkZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUGxhaW50ZXh0Owor
ICAgIGNhc2UgQ1NTUHJvcGVydHlWZWN0b3JFZmZlY3Q6CisgICAgICAgIHJldHVybiB2YWx1ZUlE
ID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uU2NhbGluZ1N0cm9rZTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5VmlzaWJpbGl0eTogLy8gdmlzaWJsZSB8IGhpZGRlbiB8IGNv
bGxhcHNlCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlVmlzaWJsZSB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlSGlkZGVuIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2xsYXBzZTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXBwUmVnaW9uOgorICAgICAgICByZXR1cm4gdmFsdWVJ
RCA+PSBDU1NWYWx1ZURyYWcgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZU5vRHJhZzsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZToKKyAgICAgICAgcmV0dXJuICh2YWx1ZUlEID49
IENTU1ZhbHVlQ2hlY2tib3ggJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZVRleHRhcmVhKSB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlTm9uZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2ZhY2VWaXNpYmls
aXR5OgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUhpZGRlbjsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWl4QmxlbmRNb2RlOgor
ICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlTXVsdGlwbHkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNjcmVlbiB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlT3ZlcmxheQorICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURhcmtl
biB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTGlnaHRlbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ29s
b3JEb2RnZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ29sb3JCdXJuCisgICAgICAgICAgICB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlSGFyZExpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTb2Z0TGln
aHQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURpZmZlcmVuY2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUV4Y2x1c2lvbgorICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUh1ZSB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlU2F0dXJhdGlvbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ29sb3IgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUx1bWlub3NpdHk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJveEFsaWduOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVN0cmV0Y2ggfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFbmQgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZUNlbnRlciB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQmFzZWxpbmU7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveERlY29yYXRpb25CcmVhazoKKyAgICAgICAgcmV0
dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVDbG9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2xpY2U7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveERpcmVjdGlvbjoKKyAgICAgICAgcmV0dXJu
IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJldmVyc2U7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzOgorICAgICAgICByZXR1cm4gdmFs
dWVJRCA9PSBDU1NWYWx1ZVNpbmdsZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTXVsdGlwbGU7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveE9yaWVudDoKKyAgICAgICAgcmV0dXJuIHZhbHVl
SUQgPT0gQ1NTVmFsdWVIb3Jpem9udGFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVWZXJ0aWNhbCB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlSW5saW5lQXhpcyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQmxv
Y2tBeGlzOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrOgorICAgICAgICByZXR1
cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFbmQgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUNlbnRlciB8fCB2YWx1ZUlEID09IENTU1ZhbHVlSnVzdGlmeTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1uRmlsbDoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQg
PT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCYWxhbmNlOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlBbGlnbkNvbnRlbnQ6CisgICAgICAgIC8vIEZJWE1FOiBQZXIgQ1NTIGFsaWdu
bWVudCwgdGhpcyBwcm9wZXJ0eSBzaG91bGQgYWNjZXB0IGFuIG9wdGlvbmFsIDxvdmVyZmxvdy1w
b3NpdGlvbj4uIFdlIHNob3VsZCBzaGFyZSB0aGlzIHBhcnNpbmcgY29kZSB3aXRoICdqdXN0aWZ5
LXNlbGYnLgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUZsZXhTdGFydCB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlRmxleEVuZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ2VudGVyIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVTcGFjZUJldHdlZW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNw
YWNlQXJvdW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdHJldGNoOworICAgIGNhc2UgQ1NTUHJv
cGVydHlBbGlnbkl0ZW1zOgorICAgICAgICAvLyBGSVhNRTogUGVyIENTUyBhbGlnbm1lbnQsIHRo
aXMgcHJvcGVydHkgc2hvdWxkIGFjY2VwdCB0aGUgc2FtZSBhcmd1bWVudHMgYXMgJ2p1c3RpZnkt
c2VsZicgc28gd2Ugc2hvdWxkIHNoYXJlIGl0cyBwYXJzaW5nIGNvZGUuCisgICAgICAgIHJldHVy
biB2YWx1ZUlEID09IENTU1ZhbHVlRmxleFN0YXJ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVGbGV4
RW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJh
c2VsaW5lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdHJldGNoOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlBbGlnblNlbGY6CisgICAgICAgIC8vIEZJWE1FOiBQZXIgQ1NTIGFsaWdubWVudCwgdGhpcyBw
cm9wZXJ0eSBzaG91bGQgYWNjZXB0IHRoZSBzYW1lIGFyZ3VtZW50cyBhcyAnanVzdGlmeS1zZWxm
JyBzbyB3ZSBzaG91bGQgc2hhcmUgaXRzIHBhcnNpbmcgY29kZS4KKyAgICAgICAgcmV0dXJuIHZh
bHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVGbGV4U3RhcnQgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUZsZXhFbmQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNlbnRlciB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlQmFzZWxpbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVN0cmV0
Y2g7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsZXhEaXJlY3Rpb246CisgICAgICAgIHJldHVybiB2
YWx1ZUlEID09IENTU1ZhbHVlUm93IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSb3dSZXZlcnNlIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2x1bW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbHVtblJl
dmVyc2U7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsZXhXcmFwOgorICAgICAgICByZXR1cm4gdmFs
dWVJRCA9PSBDU1NWYWx1ZU5vd3JhcCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV3JhcCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlV3JhcFJldmVyc2U7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUh5cGhlbnM6
CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTWFudWFsOworICAgIGNhc2UgQ1NTUHJv
cGVydHlKdXN0aWZ5Q29udGVudDoKKyAgICAgICAgLy8gRklYTUU6IFBlciBDU1MgYWxpZ25tZW50
LCB0aGlzIHByb3BlcnR5IHNob3VsZCBhY2NlcHQgYW4gb3B0aW9uYWwgPG92ZXJmbG93LXBvc2l0
aW9uPi4gV2Ugc2hvdWxkIHNoYXJlIHRoaXMgcGFyc2luZyBjb2RlIHdpdGggJ2p1c3RpZnktc2Vs
ZicuCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlRmxleFN0YXJ0IHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVGbGV4RW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZVNwYWNlQmV0d2VlbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3BhY2VB
cm91bmQ7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRLZXJuaW5nOgorICAgICAgICByZXR1cm4g
dmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlTm9uZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFNt
b290aGluZzoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBbnRpYWxpYXNlZCB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlU3VicGl4ZWxBbnRpYWxpYXNlZDsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TGluZUJyZWFrOiAvLyBhdXRvIHwgbG9vc2UgfCBub3JtYWwgfCBzdHJpY3QgfCBh
ZnRlci13aGl0ZS1zcGFjZQorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8g
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUxvb3NlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVN0cmljdCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQWZ0ZXJX
aGl0ZVNwYWNlOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcmdpblRvcENvbGxhcHNlOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9
PSBDU1NWYWx1ZUNvbGxhcHNlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTZXBhcmF0ZSB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlRGlzY2FyZDsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UHJpbnRD
b2xvckFkanVzdDoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVFeGFjdCB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlRWNvbm9teTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UnRs
T3JkZXJpbmc6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTG9naWNhbCB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlVmlzdWFsOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSdWJ5
UG9zaXRpb246CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQmVmb3JlIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVBZnRlcjsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dENv
bWJpbmU6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlSG9yaXpvbnRhbDsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVt
cGhhc2lzUG9zaXRpb246CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlT3ZlciB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlVW5kZXI7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRTZWN1cml0eTogLy8gZGlzYyB8IGNpcmNsZSB8IHNxdWFyZSB8IG5vbmUKKyAgICAgICAgcmV0
dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVEaXNjIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDaXJjbGUg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNxdWFyZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNmb3JtU3R5bGU6CisgICAgICAgIHJldHVybiB2YWx1
ZUlEID09IENTU1ZhbHVlRmxhdCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUHJlc2VydmUzZDsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWc6IC8vIGF1dG8gfCBub25lIHwgZWxlbWVu
dAorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVsZW1lbnQ7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnk6IC8vIHJlYWQtb25seSB8IHJlYWQtd3JpdGUKKyAgICAg
ICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVSZWFkT25seSB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlUmVhZFdyaXRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSZWFkV3JpdGVQbGFpbnRleHRPbmx5
OworICAgIGNhc2UgQ1NTUHJvcGVydHlVc2VyU2VsZWN0OiAvLyBhdXRvIHwgbm9uZSB8IHRleHQg
fCBhbGwKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVUZXh0IHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVBbGw7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyaXRpbmdNb2RlOgorICAg
ICAgICByZXR1cm4gdmFsdWVJRCA+PSBDU1NWYWx1ZUhvcml6b250YWxUYiAmJiB2YWx1ZUlEIDw9
IENTU1ZhbHVlVmVydGljYWxMcjsKKyAgICBjYXNlIENTU1Byb3BlcnR5V3JpdGluZ01vZGU6Cisg
ICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlSG9yaXpvbnRhbFRiCisgICAgICAgICAg
ICB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVmVydGljYWxSbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
VmVydGljYWxMcgorICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUxyVGIgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZVJsVGIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVRiUmwKKyAgICAgICAg
ICAgIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVMciB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmwgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZVRiOworICAgIGNhc2UgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlOiAv
LyBub3JtYWwgfCBwcmUgfCBub3dyYXAKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFs
dWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVByZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
UHJlV3JhcCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUHJlTGluZSB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlTm93cmFwOworICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkQnJlYWs6IC8vIG5vcm1hbCB8IGJy
ZWFrLWFsbCB8IGtlZXAtYWxsIHwgYnJlYWstd29yZCAodGhpcyBpcyBhIGN1c3RvbSBleHRlbnNp
b24pCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVCcmVha0FsbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlS2VlcEFsbCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlQnJlYWtXb3JkOworICAgIGNhc2UgQ1NTUHJvcGVydHlTY3JvbGxTbmFw
VHlwZTogLy8gbm9uZSB8IG1hbmRhdG9yeSB8IHByb3hpbWl0eQorICAgICAgICBBU1NFUlQoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzU2Nyb2xsU25hcFBvaW50c0VuYWJsZWQoKSk7CisgICAg
ICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
TWFuZGF0b3J5IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVQcm94aW1pdHk7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9Cit9CisKK2Jvb2wgQ1NTUGFyc2VyRmFzdFBhdGhzOjppc0tleXdvcmRQcm9wZXJ0eUlEKENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJZCkKK3sKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5QWxpZ25tZW50QmFzZWxpbmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUFsbDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWl4QmxlbmRNb2RlOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlJc29sYXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGU6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0U3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3hTaXppbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJ1
ZmZlcmVkUmVuZGVyaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDYXB0aW9uU2lkZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5Q2xlYXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNsaXBSdWxlOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlDb2xvckludGVycG9sYXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yUmVu
ZGVyaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlEaXJlY3Rpb246CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eURpc3BsYXk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eURvbWluYW50QmFzZWxpbmU6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUVtcHR5Q2VsbHM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGxSdWxl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9hdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0
eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3RyZXRjaDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5SHlwaGVuczoKKyAgICBjYXNlIENTU1Byb3BlcnR5SW1hZ2VSZW5kZXJpbmc6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0
U3R5bGVUeXBlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXNrVHlwZToKKyAgICBjYXNlIENTU1By
b3BlcnR5T2JqZWN0Rml0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lU3R5bGU6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93QW5jaG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVy
Zmxvd1dyYXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93WDoKKyAgICBjYXNlIENTU1By
b3BlcnR5T3ZlcmZsb3dZOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCcmVha0FmdGVyOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlCcmVha0JlZm9yZToKKyAgICBjYXNlIENTU1Byb3BlcnR5QnJlYWtJbnNp
ZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHM6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVBvc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlSZXNpemU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVNjcm9sbEJlaGF2aW9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlTaGFwZVJlbmRlcmlu
ZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5U3BlYWs6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9r
ZUxpbmVjYXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZUxpbmVqb2luOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlUYWJsZUxheW91dDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEFsaWduOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0QWxpZ25MYXN0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlU
ZXh0QW5jaG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0Q29tYmluZVVwcmlnaHQ6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVRleHRKdXN0aWZ5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3JpZW50YXRpb246CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRPcmllbnRhdGlvbjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5VGV4dE92ZXJmbG93OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtOgorICAgIGNhc2UgQ1NTUHJvcGVydHlVbmlj
b2RlQmlkaToKKyAgICBjYXNlIENTU1Byb3BlcnR5VmVjdG9yRWZmZWN0OgorICAgIGNhc2UgQ1NT
UHJvcGVydHlWaXNpYmlsaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBSZWdpb246
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2U6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJhY2tmYWNlVmlzaWJpbGl0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
QWZ0ZXJTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGU6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0eWxlOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3hBbGlnbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RGVjb3JhdGlvbkJyZWFr
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb246CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJveExpbmVzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hPcmll
bnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2s6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUNvbHVtbkZpbGw6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVtblJ1bGVTdHlsZToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5RmxleERpcmVjdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Rmxl
eFdyYXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRLZXJuaW5nOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRGb250U21vb3RoaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5l
QnJlYWs6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2U6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBy
aW50Q29sb3JBZGp1c3Q6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSdWJ5UG9zaXRpb246CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRDb21iaW5lOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1w
aGFzaXNQb3NpdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFNlY3VyaXR5Ogor
ICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2Zvcm1TdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VXNlckRyYWc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnk6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVVzZXJTZWxlY3Q6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFdyaXRpbmdNb2RlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXb3JkQnJlYWs6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRXcmFwOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXcml0aW5nTW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xs
U25hcFR5cGU6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQ1NTUHJvcGVydHlKdXN0
aWZ5Q29udGVudDoKKyAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25Db250ZW50OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlBbGlnbkl0ZW1zOgorICAgIGNhc2UgQ1NTUHJvcGVydHlBbGlnblNlbGY6Cisg
ICAgICAgIHJldHVybiAhUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzR3JpZExheW91dEVuYWJs
ZWQoKTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitz
dGF0aWMgQ1NTVmFsdWUqIHBhcnNlS2V5d29yZFZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
ZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIENTU1BhcnNlck1vZGUgcGFyc2VyTW9kZSkKK3sKKyAg
ICBBU1NFUlQoIXN0cmluZy5pc0VtcHR5KCkpOworCisgICAgaWYgKCFDU1NQYXJzZXJGYXN0UGF0
aHM6OmlzS2V5d29yZFByb3BlcnR5SUQocHJvcGVydHlJZCkpIHsKKyAgICAgICAgLy8gQWxsIHBy
b3BlcnRpZXMgYWNjZXB0IHRoZSB2YWx1ZXMgb2YgImluaXRpYWwiIGFuZCAiaW5oZXJpdCIuCisg
ICAgICAgIGlmICghZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJpbml0aWFsIikgJiYg
IWVxdWFsSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAiaW5oZXJpdCIpKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgLy8gUGFyc2UgaW5pdGlhbC9pbmhlcml0IHNob3J0
aGFuZHMgdXNpbmcgdGhlIENTU1Byb3BlcnR5UGFyc2VyLgorICAgICAgICBpZiAoc2hvcnRoYW5k
Rm9yUHJvcGVydHkocHJvcGVydHlJZCkubGVuZ3RoKCkpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgICAgICAvLyBEZXNjcmlwdG9ycyBkbyBub3Qgc3VwcG9ydCBjc3Mgd2lkZSBr
ZXl3b3Jkcy4KKyAgICAgICAgaWYgKENTU1Byb3BlcnR5TWV0YWRhdGE6OmlzRGVzY3JpcHRvck9u
bHkocHJvcGVydHlJZCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAg
ICBDU1NWYWx1ZUlEIHZhbHVlSUQgPSBjc3NWYWx1ZUtleXdvcmRJRChzdHJpbmcpOworCisgICAg
aWYgKCF2YWx1ZUlEKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICh2YWx1ZUlE
ID09IENTU1ZhbHVlSW5oZXJpdCkKKyAgICAgICAgcmV0dXJuIENTU0luaGVyaXRlZFZhbHVlOjpj
cmVhdGUoKTsKKyAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUluaXRpYWwpCisgICAgICAgIHJl
dHVybiBDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZSgpOworICAgIGlmIChDU1NQYXJzZXJGYXN0UGF0
aHM6OmlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRWYWx1ZShwcm9wZXJ0eUlkLCB2YWx1ZUlELCBw
YXJzZXJNb2RlKSkKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVu
dGlmaWVyKHZhbHVlSUQpOworICAgIHJldHVybiBudWxscHRyOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhclR5cGU+CitzdGF0aWMgYm9vbCBwYXJzZVRyYW5zZm9ybVRyYW5zbGF0ZUFyZ3Vt
ZW50cyhDaGFyVHlwZSomIHBvcywgQ2hhclR5cGUqIGVuZCwgdW5zaWduZWQgZXhwZWN0ZWRDb3Vu
dCwgQ1NTRnVuY3Rpb25WYWx1ZSogdHJhbnNmb3JtVmFsdWUpCit7CisgICAgd2hpbGUgKGV4cGVj
dGVkQ291bnQpIHsKKyAgICAgICAgc2l6ZV90IGRlbGltaXRlciA9IFdURjo6ZmluZChwb3MsIGVu
ZCAtIHBvcywgZXhwZWN0ZWRDb3VudCA9PSAxID8gJyknIDogJywnKTsKKyAgICAgICAgaWYgKGRl
bGltaXRlciA9PSBrTm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHVuc2lnbmVkIGFyZ3VtZW50TGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlbGltaXRl
cik7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgdW5pdCA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZXM6Ok51bWJlcjsKKyAgICAgICAgZG91YmxlIG51bWJlcjsKKyAg
ICAgICAgaWYgKCFwYXJzZVNpbXBsZUxlbmd0aChwb3MsIGFyZ3VtZW50TGVuZ3RoLCB1bml0LCBu
dW1iZXIpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAodW5pdCAhPSBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpQaXhlbHMgJiYgKG51bWJlciB8fCB1bml0ICE9
IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6Ok51bWJlcikpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoKkNTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUobnVtYmVyLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpQaXhlbHMp
KTsKKyAgICAgICAgcG9zICs9IGFyZ3VtZW50TGVuZ3RoICsgMTsKKyAgICAgICAgLS1leHBlY3Rl
ZENvdW50OworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IENoYXJUeXBlPgorc3RhdGljIGJvb2wgcGFyc2VUcmFuc2Zvcm1OdW1iZXJBcmd1bWVudHMoQ2hh
clR5cGUqJiBwb3MsIENoYXJUeXBlKiBlbmQsIHVuc2lnbmVkIGV4cGVjdGVkQ291bnQsIENTU0Z1
bmN0aW9uVmFsdWUqIHRyYW5zZm9ybVZhbHVlKQoreworICAgIHdoaWxlIChleHBlY3RlZENvdW50
KSB7CisgICAgICAgIHNpemVfdCBkZWxpbWl0ZXIgPSBXVEY6OmZpbmQocG9zLCBlbmQgLSBwb3Ms
IGV4cGVjdGVkQ291bnQgPT0gMSA/ICcpJyA6ICcsJyk7CisgICAgICAgIGlmIChkZWxpbWl0ZXIg
PT0ga05vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB1bnNpZ25l
ZCBhcmd1bWVudExlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZWxpbWl0ZXIpOworICAg
ICAgICBib29sIG9rOworICAgICAgICBkb3VibGUgbnVtYmVyID0gY2hhcmFjdGVyc1RvRG91Ymxl
KHBvcywgYXJndW1lbnRMZW5ndGgsICZvayk7CisgICAgICAgIGlmICghb2spCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoKkNTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGUobnVtYmVyLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpO
dW1iZXIpKTsKKyAgICAgICAgcG9zICs9IGFyZ3VtZW50TGVuZ3RoICsgMTsKKyAgICAgICAgLS1l
eHBlY3RlZENvdW50OworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGNvbnN0
IGludCBrU2hvcnRlc3RWYWxpZFRyYW5zZm9ybVN0cmluZ0xlbmd0aCA9IDEyOworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CitzdGF0aWMgQ1NTRnVuY3Rpb25WYWx1ZSogcGFyc2VTaW1w
bGVUcmFuc2Zvcm1WYWx1ZShDaGFyVHlwZSomIHBvcywgQ2hhclR5cGUqIGVuZCkKK3sKKyAgICBp
ZiAoZW5kIC0gcG9zIDwga1Nob3J0ZXN0VmFsaWRUcmFuc2Zvcm1TdHJpbmdMZW5ndGgpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgY29uc3QgYm9vbCBpc1RyYW5zbGF0ZSA9IHRvQVND
SUlMb3dlcihwb3NbMF0pID09ICd0JworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzFdKSA9
PSAncicKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1syXSkgPT0gJ2EnCisgICAgICAgICYm
IHRvQVNDSUlMb3dlcihwb3NbM10pID09ICduJworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9z
WzRdKSA9PSAncycKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1s1XSkgPT0gJ2wnCisgICAg
ICAgICYmIHRvQVNDSUlMb3dlcihwb3NbNl0pID09ICdhJworICAgICAgICAmJiB0b0FTQ0lJTG93
ZXIocG9zWzddKSA9PSAndCcKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1s4XSkgPT0gJ2Un
OworCisgICAgaWYgKGlzVHJhbnNsYXRlKSB7CisgICAgICAgIENTU1ZhbHVlSUQgdHJhbnNmb3Jt
VHlwZTsKKyAgICAgICAgdW5zaWduZWQgZXhwZWN0ZWRBcmd1bWVudENvdW50ID0gMTsKKyAgICAg
ICAgdW5zaWduZWQgYXJndW1lbnRTdGFydCA9IDExOworICAgICAgICBDaGFyVHlwZSBjOSA9IHRv
QVNDSUlMb3dlcihwb3NbOV0pOworICAgICAgICBpZiAoYzkgPT0gJ3gnICYmIHBvc1sxMF0gPT0g
JygnKSB7CisgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlID0gQ1NTVmFsdWVUcmFuc2xhdGVYOwor
ICAgICAgICB9IGVsc2UgaWYgKGM5ID09ICd5JyAmJiBwb3NbMTBdID09ICcoJykgeworICAgICAg
ICAgICAgdHJhbnNmb3JtVHlwZSA9IENTU1ZhbHVlVHJhbnNsYXRlWTsKKyAgICAgICAgfSBlbHNl
IGlmIChjOSA9PSAneicgJiYgcG9zWzEwXSA9PSAnKCcpIHsKKyAgICAgICAgICAgIHRyYW5zZm9y
bVR5cGUgPSBDU1NWYWx1ZVRyYW5zbGF0ZVo7CisgICAgICAgIH0gZWxzZSBpZiAoYzkgPT0gJygn
KSB7CisgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlID0gQ1NTVmFsdWVUcmFuc2xhdGU7CisgICAg
ICAgICAgICBleHBlY3RlZEFyZ3VtZW50Q291bnQgPSAyOworICAgICAgICAgICAgYXJndW1lbnRT
dGFydCA9IDEwOworICAgICAgICB9IGVsc2UgaWYgKGM5ID09ICczJyAmJiB0b0FTQ0lJTG93ZXIo
cG9zWzEwXSkgPT0gJ2QnICYmIHBvc1sxMV0gPT0gJygnKSB7CisgICAgICAgICAgICB0cmFuc2Zv
cm1UeXBlID0gQ1NTVmFsdWVUcmFuc2xhdGUzZDsKKyAgICAgICAgICAgIGV4cGVjdGVkQXJndW1l
bnRDb3VudCA9IDM7CisgICAgICAgICAgICBhcmd1bWVudFN0YXJ0ID0gMTI7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBw
b3MgKz0gYXJndW1lbnRTdGFydDsKKyAgICAgICAgQ1NTRnVuY3Rpb25WYWx1ZSogdHJhbnNmb3Jt
VmFsdWUgPSBDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUodHJhbnNmb3JtVHlwZSk7CisgICAgICAg
IGlmICghcGFyc2VUcmFuc2Zvcm1UcmFuc2xhdGVBcmd1bWVudHMocG9zLCBlbmQsIGV4cGVjdGVk
QXJndW1lbnRDb3VudCwgdHJhbnNmb3JtVmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIHJldHVybiB0cmFuc2Zvcm1WYWx1ZTsKKyAgICB9CisKKyAgICBjb25zdCBi
b29sIGlzTWF0cml4M2QgPSB0b0FTQ0lJTG93ZXIocG9zWzBdKSA9PSAnbScKKyAgICAgICAgJiYg
dG9BU0NJSUxvd2VyKHBvc1sxXSkgPT0gJ2EnCisgICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3Nb
Ml0pID09ICd0JworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzNdKSA9PSAncicKKyAgICAg
ICAgJiYgdG9BU0NJSUxvd2VyKHBvc1s0XSkgPT0gJ2knCisgICAgICAgICYmIHRvQVNDSUlMb3dl
cihwb3NbNV0pID09ICd4JworICAgICAgICAmJiBwb3NbNl0gPT0gJzMnCisgICAgICAgICYmIHRv
QVNDSUlMb3dlcihwb3NbN10pID09ICdkJworICAgICAgICAmJiBwb3NbOF0gPT0gJygnOworCisg
ICAgaWYgKGlzTWF0cml4M2QpIHsKKyAgICAgICAgcG9zICs9IDk7CisgICAgICAgIENTU0Z1bmN0
aW9uVmFsdWUqIHRyYW5zZm9ybVZhbHVlID0gQ1NTRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKENTU1Zh
bHVlTWF0cml4M2QpOworICAgICAgICBpZiAoIXBhcnNlVHJhbnNmb3JtTnVtYmVyQXJndW1lbnRz
KHBvcywgZW5kLCAxNiwgdHJhbnNmb3JtVmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIHJldHVybiB0cmFuc2Zvcm1WYWx1ZTsKKyAgICB9CisKKyAgICBjb25zdCBi
b29sIGlzU2NhbGUzZCA9IHRvQVNDSUlMb3dlcihwb3NbMF0pID09ICdzJworICAgICAgICAmJiB0
b0FTQ0lJTG93ZXIocG9zWzFdKSA9PSAnYycKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1sy
XSkgPT0gJ2EnCisgICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3NbM10pID09ICdsJworICAgICAg
ICAmJiB0b0FTQ0lJTG93ZXIocG9zWzRdKSA9PSAnZScKKyAgICAgICAgJiYgcG9zWzVdID09ICcz
JworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzZdKSA9PSAnZCcKKyAgICAgICAgJiYgcG9z
WzddID09ICcoJzsKKworICAgIGlmIChpc1NjYWxlM2QpIHsKKyAgICAgICAgcG9zICs9IDg7Cisg
ICAgICAgIENTU0Z1bmN0aW9uVmFsdWUqIHRyYW5zZm9ybVZhbHVlID0gQ1NTRnVuY3Rpb25WYWx1
ZTo6Y3JlYXRlKENTU1ZhbHVlU2NhbGUzZCk7CisgICAgICAgIGlmICghcGFyc2VUcmFuc2Zvcm1O
dW1iZXJBcmd1bWVudHMocG9zLCBlbmQsIDMsIHRyYW5zZm9ybVZhbHVlKSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gdHJhbnNmb3JtVmFsdWU7CisgICAgfQor
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4K
K3N0YXRpYyBib29sIHRyYW5zZm9ybUNhbkxpa2VseVVzZUZhc3RQYXRoKGNvbnN0IENoYXJUeXBl
KiBjaGFycywgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIC8vIFZlcnkgZmFzdCBzY2FuIHRoYXQg
YXR0ZW1wdHMgdG8gcmVqZWN0IG1vc3QgdHJhbnNmb3JtcyB0aGF0IGNvdWxkbid0CisgICAgLy8g
dGFrZSB0aGUgZmFzdCBwYXRoLiBUaGlzIGF2b2lkcyBkb2luZyB0aGUgbWFsbG9jIGFuZCBzdHJp
bmctPmRvdWJsZQorICAgIC8vIGNvbnZlcnNpb25zIGluIHBhcnNlU2ltcGxlVHJhbnNmb3JtVmFs
dWUgb25seSB0byBkaXNjYXJkIHRoZW0gd2hlbiB3ZQorICAgIC8vIHJ1biBpbnRvIGEgdHJhbnNm
b3JtIGNvbXBvbmVudCB3ZSBkb24ndCB1bmRlcnN0YW5kLgorICAgIHVuc2lnbmVkIGkgPSAwOwor
ICAgIHdoaWxlIChpIDwgbGVuZ3RoKSB7CisgICAgICAgIGlmIChpc0NTU1NwYWNlKGNoYXJzW2ld
KSkgeworICAgICAgICAgICAgKytpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGxlbmd0aCAtIGkgPCBrU2hvcnRlc3RWYWxpZFRyYW5zZm9ybVN0cmluZ0xl
bmd0aCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgc3dpdGNoICh0b0FTQ0lJ
TG93ZXIoY2hhcnNbaV0pKSB7CisgICAgICAgIGNhc2UgJ3QnOgorICAgICAgICAgICAgLy8gdHJh
bnNsYXRlLCB0cmFuc2xhdGVYLCB0cmFuc2xhdGVZLCB0cmFuc2xhdGVaLCB0cmFuc2xhdGUzZC4K
KyAgICAgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoY2hhcnNbaSArIDhdKSAhPSAnZScpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaSArPSA5OworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ20nOgorICAgICAgICAgICAgLy8gbWF0cml4M2QuCisg
ICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGNoYXJzW2kgKyA3XSkgIT0gJ2QnKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGkgKz0gODsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlICdzJzoKKyAgICAgICAgICAgIC8vIHNjYWxlM2QuCisgICAg
ICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGNoYXJzW2kgKyA2XSkgIT0gJ2QnKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGkgKz0gNzsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgLy8gQWxsIG90aGVyIHRoaW5ncywg
ZXguIHJvdGF0ZS4KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAg
ICBzaXplX3QgYXJndW1lbnRzRW5kID0gV1RGOjpmaW5kKGNoYXJzLCBsZW5ndGgsICcpJywgaSk7
CisgICAgICAgIGlmIChhcmd1bWVudHNFbmQgPT0ga05vdEZvdW5kKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAvLyBBZHZhbmNlIHRvIHRoZSBlbmQgb2YgdGhlIGFyZ3VtZW50
cy4KKyAgICAgICAgaSA9IGFyZ3VtZW50c0VuZCArIDE7CisgICAgfQorICAgIHJldHVybiBpID09
IGxlbmd0aDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgorc3RhdGljIENTU1Zh
bHVlTGlzdCogcGFyc2VTaW1wbGVUcmFuc2Zvcm1MaXN0KGNvbnN0IENoYXJUeXBlKiBjaGFycywg
dW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlmICghdHJhbnNmb3JtQ2FuTGlrZWx5VXNlRmFzdFBh
dGgoY2hhcnMsIGxlbmd0aCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGNvbnN0IENo
YXJUeXBlKiYgcG9zID0gY2hhcnM7CisgICAgY29uc3QgQ2hhclR5cGUqIGVuZCA9IGNoYXJzICsg
bGVuZ3RoOworICAgIENTU1ZhbHVlTGlzdCogdHJhbnNmb3JtTGlzdCA9IG51bGxwdHI7CisgICAg
d2hpbGUgKHBvcyA8IGVuZCkgeworICAgICAgICB3aGlsZSAocG9zIDwgZW5kICYmIGlzQ1NTU3Bh
Y2UoKnBvcykpCisgICAgICAgICAgICArK3BvczsKKyAgICAgICAgaWYgKHBvcyA+PSBlbmQpCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgQ1NTRnVuY3Rpb25WYWx1ZSogdHJhbnNmb3JtVmFs
dWUgPSBwYXJzZVNpbXBsZVRyYW5zZm9ybVZhbHVlKHBvcywgZW5kKTsKKyAgICAgICAgaWYgKCF0
cmFuc2Zvcm1WYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBpZiAo
IXRyYW5zZm9ybUxpc3QpCisgICAgICAgICAgICB0cmFuc2Zvcm1MaXN0ID0gQ1NTVmFsdWVMaXN0
OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICB0cmFuc2Zvcm1MaXN0LT5hcHBlbmQo
KnRyYW5zZm9ybVZhbHVlKTsKKyAgICB9CisgICAgcmV0dXJuIHRyYW5zZm9ybUxpc3Q7Cit9CisK
K3N0YXRpYyBDU1NWYWx1ZSogcGFyc2VTaW1wbGVUcmFuc2Zvcm0oQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eUlELCBjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBBU1NFUlQoIXN0cmluZy5pc0Vt
cHR5KCkpOworCisgICAgaWYgKHByb3BlcnR5SUQgIT0gQ1NTUHJvcGVydHlUcmFuc2Zvcm0pCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAg
IHJldHVybiBwYXJzZVNpbXBsZVRyYW5zZm9ybUxpc3Qoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0
cmluZy5sZW5ndGgoKSk7CisgICAgcmV0dXJuIHBhcnNlU2ltcGxlVHJhbnNmb3JtTGlzdChzdHJp
bmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7Cit9CisKK0NTU1ZhbHVlKiBDU1NQ
YXJzZXJGYXN0UGF0aHM6Om1heWJlUGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQs
IGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJzZXJNb2RlIHBhcnNlck1vZGUpCit7CisgICAg
aWYgKENTU1ZhbHVlKiBsZW5ndGggPSBwYXJzZVNpbXBsZUxlbmd0aFZhbHVlKHByb3BlcnR5SUQs
IHN0cmluZywgcGFyc2VyTW9kZSkpCisgICAgICAgIHJldHVybiBsZW5ndGg7CisgICAgaWYgKGlz
Q29sb3JQcm9wZXJ0eUlEKHByb3BlcnR5SUQpKQorICAgICAgICByZXR1cm4gcGFyc2VDb2xvcihz
dHJpbmcsIHBhcnNlck1vZGUpOworICAgIGlmIChDU1NWYWx1ZSoga2V5d29yZCA9IHBhcnNlS2V5
d29yZFZhbHVlKHByb3BlcnR5SUQsIHN0cmluZywgcGFyc2VyTW9kZSkpCisgICAgICAgIHJldHVy
biBrZXl3b3JkOworICAgIGlmIChDU1NWYWx1ZSogdHJhbnNmb3JtID0gcGFyc2VTaW1wbGVUcmFu
c2Zvcm0ocHJvcGVydHlJRCwgc3RyaW5nKSkKKyAgICAgICAgcmV0dXJuIHRyYW5zZm9ybTsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKworICAgICAqLworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFz
dFBhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorLy8gQ29weXJpZ2h0IDIw
MTQgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8g
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24u
CisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZm5kZWYgQ1NTUGFyc2VyRmFzdFBh
dGhzX2gKKyNkZWZpbmUgQ1NTUGFyc2VyRmFzdFBhdGhzX2gKKworI2luY2x1ZGUgIkNTU1BhcnNl
ck1vZGUuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiQ1NTVmFs
dWVLZXl3b3Jkcy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1ZhbHVlOworCitjbGFzcyBDU1NQYXJzZXJGYXN0UGF0
aHMgeworcHVibGljOgorICAgIC8vIFBhcnNlcyBzaW1wbGUgdmFsdWVzIGxpa2UgJzEwcHgnIG9y
ICdncmVlbicsIGJ1dCBtYWtlcyBubyBndWFyYW50ZWVzCisgICAgLy8gYWJvdXQgaGFuZGxpbmcg
YW55IHByb3BlcnR5IGNvbXBsZXRlbHkuCisgICAgc3RhdGljIENTU1ZhbHVlKiBtYXliZVBhcnNl
VmFsdWUoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiwgQ1NTUGFyc2VyTW9kZSk7CisKKyAg
ICAvLyBQcm9wZXJ0aWVzIGhhbmRsZWQgaGVyZSBzaG91bGRuJ3QgYmUgZXhwbGljaXRseSBoYW5k
bGVkIGluIENTU1Byb3BlcnR5UGFyc2VyCisgICAgc3RhdGljIGJvb2wgaXNLZXl3b3JkUHJvcGVy
dHlJRChDU1NQcm9wZXJ0eUlEKTsKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkS2V5d29yZFByb3Bl
cnR5QW5kVmFsdWUoQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWVJRCwgQ1NTUGFyc2VyTW9kZSk7CisK
KyAgICBzdGF0aWMgQ1NTVmFsdWUqIHBhcnNlQ29sb3IoY29uc3QgU3RyaW5nJiwgQ1NTUGFyc2Vy
TW9kZSk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NQYXJz
ZXJGYXN0UGF0aHNfaApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJ
ZGlvbXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNl
cklkaW9tcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VySWRpb21zLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ1NT
UGFyc2VySWRpb21zX2gKKyNkZWZpbmUgQ1NTUGFyc2VySWRpb21zX2gKKworI2luY2x1ZGUgPHd0
Zi9BU0NJSUNUeXBlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gU3BhY2UgY2hhcmFj
dGVycyBhcyBkZWZpbmVkIGJ5IHRoZSBDU1Mgc3BlY2lmaWNhdGlvbi4KKy8vIGh0dHA6Ly93d3cu
dzMub3JnL1RSL2NzczMtc3ludGF4LyN3aGl0ZXNwYWNlCitpbmxpbmUgYm9vbCBpc0NTU1NwYWNl
KFVDaGFyIGMpCit7CisgICAgcmV0dXJuIGMgPT0gJyAnIHx8IGMgPT0gJ1x0JyB8fCBjID09ICdc
bic7Cit9CisKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1zeW50YXgvI25hbWUtc3Rh
cnQtY29kZS1wb2ludAordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIGlz
TmFtZVN0YXJ0Q29kZVBvaW50KENoYXJhY3RlclR5cGUgYykKK3sKKyAgICByZXR1cm4gaXNBU0NJ
SUFscGhhKGMpIHx8IGMgPT0gJ18nIHx8ICFpc0FTQ0lJKGMpOworfQorCisvLyBodHRwOi8vZGV2
LnczLm9yZy9jc3N3Zy9jc3Mtc3ludGF4LyNuYW1lLWNvZGUtcG9pbnQKK3RlbXBsYXRlIDx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgorYm9vbCBpc05hbWVDb2RlUG9pbnQoQ2hhcmFjdGVyVHlwZSBj
KQoreworICAgIHJldHVybiBpc05hbWVTdGFydENvZGVQb2ludChjKSB8fCBpc0FTQ0lJRGlnaXQo
YykgfHwgYyA9PSAnLSc7Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlck9ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlci5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzIExhcnMgS25vbGwgKGtu
b2xsQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIw
MDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgLSAyMDEwICBUb3JjaCBNb2JpbGUgKEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpZm5kZWYgQ1NTUGFyc2VyT2JzZXJ2ZXJfaAorI2RlZmluZSBDU1NQYXJzZXJPYnNl
cnZlcl9oCisKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eVNvdXJjZURhdGEuaCIKKyNpbmNsdWRlICJT
dHlsZVJ1bGUuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgQ1NTUGFyc2VyVG9rZW47CitjbGFzcyBDU1NQYXJzZXJUb2tlblJhbmdlOwor
CisvLyBUaGlzIGlzIG9ubHkgZm9yIHRoZSBpbnNwZWN0b3IgYW5kIHNob3VsZG4ndCBiZSB1c2Vk
IGVsc2V3aGVyZS4KK2NsYXNzIENTU1BhcnNlck9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5DU1NQYXJzZXJPYnNlcnZlcigpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRSdWxl
SGVhZGVyKFN0eWxlUnVsZTo6VHlwZSwgdW5zaWduZWQgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGVuZFJ1bGVIZWFkZXIodW5zaWduZWQgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIG9ic2VydmVTZWxlY3Rvcih1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0UnVsZUJvZHkodW5zaWduZWQgb2Zmc2V0
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVuZFJ1bGVCb2R5KHVuc2lnbmVkIG9mZnNldCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBvYnNlcnZlUHJvcGVydHkodW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCwgYm9vbCBpc0ltcG9ydGFudCwgYm9vbCBpc1BhcnNlZCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBvYnNlcnZlQ29tbWVudCh1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KSA9IDA7CisgICAgLy8gVE9ETyh0aW1sb2gpOiBVbnVzZWQsIHNo
b3VsZCBiZSByZW1vdmVkCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0TWVkaWFRdWVyeUV4cCh1bnNp
Z25lZCBvZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kTWVkaWFRdWVyeUV4cCh1bnNp
Z25lZCBvZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRNZWRpYVF1ZXJ5KCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBlbmRNZWRpYVF1ZXJ5KCkgPSAwOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ1NTUGFyc2VyT2JzZXJ2ZXJfaApJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFw
cGVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Bh
cnNlck9ic2VydmVyV3JhcHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MSBAQAor
Ly8gQ29weXJpZ2h0IDIwMTUgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8g
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisv
LyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisv
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaCIKKworI2lu
Y2x1ZGUgIkNTU1BhcnNlclRva2VuUmFuZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1
bnNpZ25lZCBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OnN0YXJ0T2Zmc2V0KGNvbnN0IENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBtX3Rva2VuT2Zmc2V0c1tyYW5n
ZS5iZWdpbigpIC0gbV9maXJzdFBhcnNlclRva2VuXTsKK30KKwordW5zaWduZWQgQ1NTUGFyc2Vy
T2JzZXJ2ZXJXcmFwcGVyOjpwcmV2aW91c1Rva2VuU3RhcnRPZmZzZXQoY29uc3QgQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLmJlZ2luKCkgPT0gbV9maXJzdFBh
cnNlclRva2VuKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV90b2tlbk9mZnNldHNb
cmFuZ2UuYmVnaW4oKSAtIG1fZmlyc3RQYXJzZXJUb2tlbiAtIDFdOworfQorCit1bnNpZ25lZCBD
U1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OmVuZE9mZnNldChjb25zdCBDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4gbV90b2tlbk9mZnNldHNbcmFuZ2UuZW5kKCkgLSBt
X2ZpcnN0UGFyc2VyVG9rZW5dOworfQorCit2b2lkIENTU1BhcnNlck9ic2VydmVyV3JhcHBlcjo6
c2tpcENvbW1lbnRzQmVmb3JlKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBib29s
IGxlYXZlRGlyZWN0bHlCZWZvcmUpCit7CisgICAgdW5zaWduZWQgc3RhcnRJbmRleCA9IHJhbmdl
LmJlZ2luKCkgLSBtX2ZpcnN0UGFyc2VyVG9rZW47CisgICAgaWYgKCFsZWF2ZURpcmVjdGx5QmVm
b3JlKQorICAgICAgICBzdGFydEluZGV4Kys7CisgICAgd2hpbGUgKG1fY29tbWVudEl0ZXJhdG9y
IDwgbV9jb21tZW50T2Zmc2V0cy5lbmQoKSAmJiBtX2NvbW1lbnRJdGVyYXRvci0+dG9rZW5zQmVm
b3JlIDwgc3RhcnRJbmRleCkKKyAgICAgICAgbV9jb21tZW50SXRlcmF0b3IrKzsKK30KKwordm9p
ZCBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OnlpZWxkQ29tbWVudHNCZWZvcmUoY29uc3QgQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgdW5zaWduZWQgc3RhcnRJbmRleCA9IHJh
bmdlLmJlZ2luKCkgLSBtX2ZpcnN0UGFyc2VyVG9rZW47CisgICAgd2hpbGUgKG1fY29tbWVudEl0
ZXJhdG9yIDwgbV9jb21tZW50T2Zmc2V0cy5lbmQoKSAmJiBtX2NvbW1lbnRJdGVyYXRvci0+dG9r
ZW5zQmVmb3JlIDw9IHN0YXJ0SW5kZXgpIHsKKyAgICAgICAgbV9vYnNlcnZlci5vYnNlcnZlQ29t
bWVudChtX2NvbW1lbnRJdGVyYXRvci0+c3RhcnRPZmZzZXQsIG1fY29tbWVudEl0ZXJhdG9yLT5l
bmRPZmZzZXQpOworICAgICAgICBtX2NvbW1lbnRJdGVyYXRvcisrOworICAgIH0KK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJPYnNlcnZlcldyYXBwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlck9ic2VydmVyV3JhcHBlci5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw3OSBAQAorLy8gQ29weXJpZ2h0IDIwMTUgVGhlIENocm9taXVtIEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
Ky8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKyNpZm5kZWYgQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyX2gKKyNkZWZp
bmUgQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyX2gKKworI2luY2x1ZGUgIkNTU1BhcnNlck9ic2Vy
dmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTUGFyc2VyT2JzZXJ2ZXJX
cmFwcGVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIo
Q1NTUGFyc2VyT2JzZXJ2ZXImIG9ic2VydmVyKQorICAgICAgICA6IG1fb2JzZXJ2ZXIob2JzZXJ2
ZXIpCisgICAgeyB9CisKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldChjb25zdCBDU1NQYXJzZXJU
b2tlblJhbmdlJik7CisgICAgdW5zaWduZWQgcHJldmlvdXNUb2tlblN0YXJ0T2Zmc2V0KGNvbnN0
IENTU1BhcnNlclRva2VuUmFuZ2UmKTsKKyAgICB1bnNpZ25lZCBlbmRPZmZzZXQoY29uc3QgQ1NT
UGFyc2VyVG9rZW5SYW5nZSYpOyAvLyBJbmNsdWRlcyB0cmFpbGluZyBjb21tZW50cworCisgICAg
dm9pZCBza2lwQ29tbWVudHNCZWZvcmUoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGJvb2wg
bGVhdmVEaXJlY3RseUJlZm9yZSk7CisgICAgdm9pZCB5aWVsZENvbW1lbnRzQmVmb3JlKGNvbnN0
IENTU1BhcnNlclRva2VuUmFuZ2UmKTsKKworICAgIENTU1BhcnNlck9ic2VydmVyJiBvYnNlcnZl
cigpIHsgcmV0dXJuIG1fb2JzZXJ2ZXI7IH0KKyAgICB2b2lkIGFkZENvbW1lbnQodW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgdG9rZW5zQmVmb3JlKQor
ICAgIHsKKyAgICAgICAgQ29tbWVudFBvc2l0aW9uIHBvc2l0aW9uID0ge3N0YXJ0T2Zmc2V0LCBl
bmRPZmZzZXQsIHRva2Vuc0JlZm9yZX07CisgICAgICAgIG1fY29tbWVudE9mZnNldHMuYXBwZW5k
KHBvc2l0aW9uKTsKKyAgICB9CisgICAgdm9pZCBhZGRUb2tlbih1bnNpZ25lZCBzdGFydE9mZnNl
dCkgeyBtX3Rva2VuT2Zmc2V0cy5hcHBlbmQoc3RhcnRPZmZzZXQpOyB9CisgICAgdm9pZCBmaW5h
bGl6ZUNvbnN0cnVjdGlvbihDU1NQYXJzZXJUb2tlbiogZmlyc3RQYXJzZXJUb2tlbikKKyAgICB7
CisgICAgICAgIG1fZmlyc3RQYXJzZXJUb2tlbiA9IGZpcnN0UGFyc2VyVG9rZW47CisgICAgICAg
IG1fY29tbWVudEl0ZXJhdG9yID0gbV9jb21tZW50T2Zmc2V0cy5iZWdpbigpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBDU1NQYXJzZXJPYnNlcnZlciYgbV9vYnNlcnZlcjsKKyAgICBWZWN0b3I8
dW5zaWduZWQ+IG1fdG9rZW5PZmZzZXRzOworICAgIENTU1BhcnNlclRva2VuKiBtX2ZpcnN0UGFy
c2VyVG9rZW47CisKKyAgICBzdHJ1Y3QgQ29tbWVudFBvc2l0aW9uIHsKKyAgICAgICAgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQ7CisgICAgICAgIHVuc2lnbmVkIGVuZE9mZnNldDsKKyAgICAgICAgdW5z
aWduZWQgdG9rZW5zQmVmb3JlOworICAgIH07CisKKyAgICBWZWN0b3I8Q29tbWVudFBvc2l0aW9u
PiBtX2NvbW1lbnRPZmZzZXRzOworICAgIFZlY3RvcjxDb21tZW50UG9zaXRpb24+OjppdGVyYXRv
ciBtX2NvbW1lbnRJdGVyYXRvcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIENTU1BhcnNlck9ic2VydmVyV3JhcHBlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDQ3NiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgVGhlIENocm9taXVtIEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisv
LyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
Ly8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlbi5oIgor
CisjaW5jbHVkZSAiQ1NTTWFya3VwLmgiCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIK
KyNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNlci5oIgorI2luY2x1ZGUgPGxpbWl0cy5oPgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+CitDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIGNzc1ByaW1pdGl2ZVZhbHVlVW5pdEZy
b21UcmllKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAg
ICBBU1NFUlQoZGF0YSk7CisgICAgQVNTRVJUKGxlbmd0aCk7CisgICAgc3dpdGNoIChsZW5ndGgp
IHsKKyAgICBjYXNlIDE6CisgICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGRhdGFbMF0pKSB7
CisgICAgICAgIGNhc2UgJ3MnOgorICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZXM6OkNTU19TOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
MjoKKyAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVswXSkpIHsKKyAgICAgICAgY2Fz
ZSAnYyc6CisgICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkgeworICAg
ICAgICAgICAgY2FzZSAnaCc6CisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZXM6OkNTU19DSFM7CisgICAgICAgICAgICBjYXNlICdtJzoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0NNOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ2UnOgorICAgICAg
ICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkpIHsKKyAgICAgICAgICAgIGNhc2Ug
J20nOgorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVz
OjpDU1NfRU1TOworICAgICAgICAgICAgY2FzZSAneCc6CisgICAgICAgICAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19FWFM7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnZic6CisgICAgICAgICAgICBpZiAodG9B
U0NJSUxvd2VyKGRhdGFbMV0pID09ICdyJykKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0ZSOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgJ2gnOgorICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzFdKSA9PSAn
eicpCisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6
OkNTU19IWjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdpJzoKKyAgICAgICAg
ICAgIGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkgPT0gJ24nKQorICAgICAgICAgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfSU47CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSAnbSc6CisgICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dl
cihkYXRhWzFdKSkgeworICAgICAgICAgICAgY2FzZSAnbSc6CisgICAgICAgICAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19NTTsKKyAgICAgICAgICAgIGNh
c2UgJ3MnOgorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGVzOjpDU1NfTVM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSAncCc6CisgICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkgewor
ICAgICAgICAgICAgY2FzZSAnYyc6CisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19QQzsKKyAgICAgICAgICAgIGNhc2UgJ3QnOgorICAgICAg
ICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUFQ7Cisg
ICAgICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZl
VmFsdWU6OlVuaXRUeXBlczo6Q1NTX1BYOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgJ3YnOgorICAgICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIo
ZGF0YVsxXSkpIHsKKyAgICAgICAgICAgIGNhc2UgJ2gnOgorICAgICAgICAgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfVkg7CisgICAgICAgICAgICBjYXNl
ICd3JzoKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBl
czo6Q1NTX1ZXOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAzOgorICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dl
cihkYXRhWzBdKSkgeworICAgICAgICBjYXNlICdkJzoKKyAgICAgICAgICAgIHN3aXRjaCAodG9B
U0NJSUxvd2VyKGRhdGFbMV0pKSB7CisgICAgICAgICAgICBjYXNlICdlJzoKKyAgICAgICAgICAg
ICAgICBpZiAodG9BU0NJSUxvd2VyKGRhdGFbMl0pID09ICdnJykKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19ERUc7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdwJzoKKyAgICAgICAgICAgICAgICBp
ZiAodG9BU0NJSUxvd2VyKGRhdGFbMl0pID09ICdpJykKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19EUEk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdr
JzoKKyAgICAgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkgPT0gJ2gnICYmIHRvQVND
SUlMb3dlcihkYXRhWzJdKSA9PSAneicpCisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19LSFo7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSAncic6CisgICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkg
eworICAgICAgICAgICAgY2FzZSAnYSc6CisgICAgICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dl
cihkYXRhWzJdKSA9PSAnZCcpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUkFEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSAnZSc6CisgICAgICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRh
WzJdKSA9PSAnbScpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzOjpDU1NfUkVNUzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGJyZWFrOworICAgIGNhc2UgNDoKKyAg
ICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVswXSkpIHsKKyAgICAgICAgY2FzZSAnZCc6
CisgICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkgeworICAgICAgICAg
ICAgY2FzZSAncCc6CisgICAgICAgICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVsy
XSkpIHsKKyAgICAgICAgICAgICAgICBjYXNlICdjJzoKKyAgICAgICAgICAgICAgICAgICAgaWYg
KHRvQVNDSUlMb3dlcihkYXRhWzNdKSA9PSAnbScpCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0RQQ007CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgJ3AnOgorICAgICAgICAgICAg
ICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGRhdGFbM10pID09ICd4JykKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfRFBQWDsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ2cnOgor
ICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzFdKSA9PSAncicgJiYgdG9BU0NJSUxv
d2VyKGRhdGFbMl0pID09ICdhJyAmJiB0b0FTQ0lJTG93ZXIoZGF0YVszXSkgPT0gJ2QnKQorICAg
ICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfR1JB
RDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICd0JzoKKyAgICAgICAgICAgIGlm
ICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkgPT0gJ3UnICYmIHRvQVNDSUlMb3dlcihkYXRhWzJdKSA9
PSAncicgJiYgdG9BU0NJSUxvd2VyKGRhdGFbM10pID09ICduJykKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1RVUk47CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSAndic6CisgICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlM
b3dlcihkYXRhWzFdKSkgeworICAgICAgICAgICAgY2FzZSAnbSc6CisgICAgICAgICAgICAgICAg
c3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVsyXSkpIHsKKyAgICAgICAgICAgICAgICBjYXNlICdh
JzoKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzNdKSA9PSAneCcp
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlczo6Q1NTX1ZNQVg7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgJ2knOgorICAgICAgICAgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGRhdGFb
M10pID09ICduJykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVW
YWx1ZTo6VW5pdFR5cGVzOjpDU1NfVk1JTjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA1
OgorICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzBdKSkgeworICAgICAgICBjYXNl
ICdfJzoKKyAgICAgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkgPT0gJ18nICYmIHRv
QVNDSUlMb3dlcihkYXRhWzJdKSA9PSAncScgJiYgdG9BU0NJSUxvd2VyKGRhdGFbM10pID09ICdl
JyAmJiB0b0FTQ0lJTG93ZXIoZGF0YVs0XSkgPT0gJ20nKQorICAgICAgICAgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfRU1TOyAvLyBGSVhNRS1ORVdQQVJT
RVI6IE5lZWQgcXVpcmt5IGVtcy4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBl
czo6Q1NTX1VOS05PV047Cit9CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVz
IHN0cmluZ1RvVW5pdFR5cGUoU3RyaW5nVmlldyBzdHJpbmdWaWV3KQoreworICAgIGlmIChzdHJp
bmdWaWV3LmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gY3NzUHJpbWl0aXZlVmFsdWVVbml0RnJv
bVRyaWUoc3RyaW5nVmlldy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmdWaWV3Lmxlbmd0aCgpKTsKKyAg
ICByZXR1cm4gY3NzUHJpbWl0aXZlVmFsdWVVbml0RnJvbVRyaWUoc3RyaW5nVmlldy5jaGFyYWN0
ZXJzMTYoKSwgc3RyaW5nVmlldy5sZW5ndGgoKSk7Cit9CisKK0NTU1BhcnNlclRva2VuOjpDU1NQ
YXJzZXJUb2tlbihDU1NQYXJzZXJUb2tlblR5cGUgdHlwZSwgQmxvY2tUeXBlIGJsb2NrVHlwZSkK
KyAgICA6IG1fdHlwZSh0eXBlKQorICAgICwgbV9ibG9ja1R5cGUoYmxvY2tUeXBlKQoreworfQor
CisvLyBKdXN0IGEgaGVscGVyIHVzZWQgZm9yIERlbGltaXRlciB0b2tlbnMuCitDU1NQYXJzZXJU
b2tlbjo6Q1NTUGFyc2VyVG9rZW4oQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIFVDaGFyIGMpCisg
ICAgOiBtX3R5cGUodHlwZSkKKyAgICAsIG1fYmxvY2tUeXBlKE5vdEJsb2NrKQorICAgICwgbV9k
ZWxpbWl0ZXIoYykKK3sKKyAgICBBU1NFUlQobV90eXBlID09IERlbGltaXRlclRva2VuKTsKK30K
KworQ1NTUGFyc2VyVG9rZW46OkNTU1BhcnNlclRva2VuKENTU1BhcnNlclRva2VuVHlwZSB0eXBl
LCBTdHJpbmdWaWV3IHZhbHVlLCBCbG9ja1R5cGUgYmxvY2tUeXBlKQorICAgIDogbV90eXBlKHR5
cGUpCisgICAgLCBtX2Jsb2NrVHlwZShibG9ja1R5cGUpCit7CisgICAgaW5pdFZhbHVlRnJvbVN0
cmluZ1ZpZXcodmFsdWUpOworICAgIG1faWQgPSAtMTsKK30KKworQ1NTUGFyc2VyVG9rZW46OkNT
U1BhcnNlclRva2VuKENTU1BhcnNlclRva2VuVHlwZSB0eXBlLCBkb3VibGUgbnVtZXJpY1ZhbHVl
LCBOdW1lcmljVmFsdWVUeXBlIG51bWVyaWNWYWx1ZVR5cGUsIE51bWVyaWNTaWduIHNpZ24pCisg
ICAgOiBtX3R5cGUodHlwZSkKKyAgICAsIG1fYmxvY2tUeXBlKE5vdEJsb2NrKQorICAgICwgbV9u
dW1lcmljVmFsdWVUeXBlKG51bWVyaWNWYWx1ZVR5cGUpCisgICAgLCBtX251bWVyaWNTaWduKHNp
Z24pCisgICAgLCBtX3VuaXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZXM6OkNTU19OVU1CRVIpKQoreworICAgIEFTU0VSVCh0eXBlID09IE51bWJlclRv
a2VuKTsKKyAgICBtX251bWVyaWNWYWx1ZSA9IGNsYW1wVG88ZG91YmxlPihudW1lcmljVmFsdWUs
IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8
ZmxvYXQ+OjptYXgoKSk7Cit9CisKK0NTU1BhcnNlclRva2VuOjpDU1NQYXJzZXJUb2tlbihDU1NQ
YXJzZXJUb2tlblR5cGUgdHlwZSwgVUNoYXIzMiBzdGFydCwgVUNoYXIzMiBlbmQpCisgICAgOiBt
X3R5cGUoVW5pY29kZVJhbmdlVG9rZW4pCisgICAgLCBtX2Jsb2NrVHlwZShOb3RCbG9jaykKK3sK
KyAgICBBU1NFUlRfVU5VU0VEKHR5cGUsIHR5cGUgPT0gVW5pY29kZVJhbmdlVG9rZW4pOworICAg
IG1fdW5pY29kZVJhbmdlLnN0YXJ0ID0gc3RhcnQ7CisgICAgbV91bmljb2RlUmFuZ2UuZW5kID0g
ZW5kOworfQorCitDU1NQYXJzZXJUb2tlbjo6Q1NTUGFyc2VyVG9rZW4oSGFzaFRva2VuVHlwZSB0
eXBlLCBTdHJpbmdWaWV3IHZhbHVlKQorICAgIDogbV90eXBlKEhhc2hUb2tlbikKKyAgICAsIG1f
YmxvY2tUeXBlKE5vdEJsb2NrKQorICAgICwgbV9oYXNoVG9rZW5UeXBlKHR5cGUpCit7CisgICAg
aW5pdFZhbHVlRnJvbVN0cmluZ1ZpZXcodmFsdWUpOworfQorCit2b2lkIENTU1BhcnNlclRva2Vu
Ojpjb252ZXJ0VG9EaW1lbnNpb25XaXRoVW5pdChTdHJpbmdWaWV3IHVuaXQpCit7CisgICAgQVNT
RVJUKG1fdHlwZSA9PSBOdW1iZXJUb2tlbik7CisgICAgbV90eXBlID0gRGltZW5zaW9uVG9rZW47
CisgICAgaW5pdFZhbHVlRnJvbVN0cmluZ1ZpZXcodW5pdCk7CisgICAgbV91bml0ID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHN0cmluZ1RvVW5pdFR5cGUodW5pdCkpOworfQorCit2b2lkIENTU1Bh
cnNlclRva2VuOjpjb252ZXJ0VG9QZXJjZW50YWdlKCkKK3sKKyAgICBBU1NFUlQobV90eXBlID09
IE51bWJlclRva2VuKTsKKyAgICBtX3R5cGUgPSBQZXJjZW50YWdlVG9rZW47CisgICAgbV91bml0
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNT
U19QRVJDRU5UQUdFKTsKK30KKworVUNoYXIgQ1NTUGFyc2VyVG9rZW46OmRlbGltaXRlcigpIGNv
bnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBEZWxpbWl0ZXJUb2tlbik7CisgICAgcmV0dXJu
IG1fZGVsaW1pdGVyOworfQorCitOdW1lcmljU2lnbiBDU1NQYXJzZXJUb2tlbjo6bnVtZXJpY1Np
Z24oKSBjb25zdAoreworICAgIC8vIFRoaXMgaXMgdmFsaWQgZm9yIERpbWVuc2lvblRva2VuIGFu
ZCBQZXJjZW50YWdlVG9rZW4sIGJ1dCBvbmx5IHVzZWQKKyAgICAvLyBpbiA8YW4rYj4gcGFyc2lu
ZyBvbiBOdW1iZXJUb2tlbnMuCisgICAgQVNTRVJUKG1fdHlwZSA9PSBOdW1iZXJUb2tlbik7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PE51bWVyaWNTaWduPihtX251bWVyaWNTaWduKTsKK30KKwor
TnVtZXJpY1ZhbHVlVHlwZSBDU1NQYXJzZXJUb2tlbjo6bnVtZXJpY1ZhbHVlVHlwZSgpIGNvbnN0
Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBOdW1iZXJUb2tlbiB8fCBtX3R5cGUgPT0gUGVyY2Vu
dGFnZVRva2VuIHx8IG1fdHlwZSA9PSBEaW1lbnNpb25Ub2tlbik7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PE51bWVyaWNWYWx1ZVR5cGU+KG1fbnVtZXJpY1ZhbHVlVHlwZSk7Cit9CisKK2RvdWJs
ZSBDU1NQYXJzZXJUb2tlbjo6bnVtZXJpY1ZhbHVlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90
eXBlID09IE51bWJlclRva2VuIHx8IG1fdHlwZSA9PSBQZXJjZW50YWdlVG9rZW4gfHwgbV90eXBl
ID09IERpbWVuc2lvblRva2VuKTsKKyAgICByZXR1cm4gbV9udW1lcmljVmFsdWU7Cit9CisKK0NT
U1Byb3BlcnR5SUQgQ1NTUGFyc2VyVG9rZW46OnBhcnNlQXNVbnJlc29sdmVkQ1NTUHJvcGVydHlJ
RCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBJZGVudFRva2VuKTsKKyAgICByZXR1
cm4gdW5yZXNvbHZlZENTU1Byb3BlcnR5SUQodmFsdWUoKSk7Cit9CisKK0NTU1ZhbHVlSUQgQ1NT
UGFyc2VyVG9rZW46OmlkKCkgY29uc3QKK3sKKyAgICBpZiAobV90eXBlICE9IElkZW50VG9rZW4p
CisgICAgICAgIHJldHVybiBDU1NWYWx1ZUludmFsaWQ7CisgICAgaWYgKG1faWQgPCAwKQorICAg
ICAgICBtX2lkID0gY3NzVmFsdWVLZXl3b3JkSUQodmFsdWUoKSk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PENTU1ZhbHVlSUQ+KG1faWQpOworfQorCitDU1NWYWx1ZUlEIENTU1BhcnNlclRva2Vu
OjpmdW5jdGlvbklkKCkgY29uc3QKK3sKKyAgICBpZiAobV90eXBlICE9IEZ1bmN0aW9uVG9rZW4p
CisgICAgICAgIHJldHVybiBDU1NWYWx1ZUludmFsaWQ7CisgICAgaWYgKG1faWQgPCAwKQorICAg
ICAgICBtX2lkID0gY3NzVmFsdWVLZXl3b3JkSUQodmFsdWUoKSk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PENTU1ZhbHVlSUQ+KG1faWQpOworfQorCitib29sIENTU1BhcnNlclRva2VuOjpoYXNT
dHJpbmdCYWNraW5nKCkgY29uc3QKK3sKKyAgICBDU1NQYXJzZXJUb2tlblR5cGUgdG9rZW5UeXBl
ID0gdHlwZSgpOworICAgIHJldHVybiB0b2tlblR5cGUgPT0gSWRlbnRUb2tlbgorICAgICAgICB8
fCB0b2tlblR5cGUgPT0gRnVuY3Rpb25Ub2tlbgorICAgICAgICB8fCB0b2tlblR5cGUgPT0gQXRL
ZXl3b3JkVG9rZW4KKyAgICAgICAgfHwgdG9rZW5UeXBlID09IEhhc2hUb2tlbgorICAgICAgICB8
fCB0b2tlblR5cGUgPT0gVXJsVG9rZW4KKyAgICAgICAgfHwgdG9rZW5UeXBlID09IERpbWVuc2lv
blRva2VuCisgICAgICAgIHx8IHRva2VuVHlwZSA9PSBTdHJpbmdUb2tlbjsKK30KKworQ1NTUGFy
c2VyVG9rZW4gQ1NTUGFyc2VyVG9rZW46OmNvcHlXaXRoVXBkYXRlZFN0cmluZyhjb25zdCBTdHJp
bmdWaWV3JiBzdHJpbmcpIGNvbnN0Cit7CisgICAgQ1NTUGFyc2VyVG9rZW4gY29weSgqdGhpcyk7
CisgICAgY29weS5pbml0VmFsdWVGcm9tU3RyaW5nVmlldyhzdHJpbmcpOworICAgIHJldHVybiBj
b3B5OworfQorCitib29sIENTU1BhcnNlclRva2VuOjp2YWx1ZURhdGFDaGFyUmF3RXF1YWwoY29u
c3QgQ1NTUGFyc2VyVG9rZW4mIG90aGVyKSBjb25zdAoreworICAgIGlmIChtX3ZhbHVlTGVuZ3Ro
ICE9IG90aGVyLm1fdmFsdWVMZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
IChtX3ZhbHVlRGF0YUNoYXJSYXcgPT0gb3RoZXIubV92YWx1ZURhdGFDaGFyUmF3ICYmIG1fdmFs
dWVJczhCaXQgPT0gb3RoZXIubV92YWx1ZUlzOEJpdCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICBpZiAobV92YWx1ZUlzOEJpdCkKKyAgICAgICAgcmV0dXJuIG90aGVyLm1fdmFsdWVJczhC
aXQgPyBlcXVhbChzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KG1fdmFsdWVEYXRhQ2hhclJhdyks
IHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4ob3RoZXIubV92YWx1ZURhdGFDaGFyUmF3KSwgbV92
YWx1ZUxlbmd0aCkgOiBlcXVhbChzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KG1fdmFsdWVEYXRh
Q2hhclJhdyksIHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4ob3RoZXIubV92YWx1ZURhdGFDaGFy
UmF3KSwgbV92YWx1ZUxlbmd0aCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gb3RoZXIubV92
YWx1ZUlzOEJpdCA/IGVxdWFsKHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4obV92YWx1ZURhdGFD
aGFyUmF3KSwgc3RhdGljX2Nhc3Q8Y29uc3QgTENoYXIqPihvdGhlci5tX3ZhbHVlRGF0YUNoYXJS
YXcpLCBtX3ZhbHVlTGVuZ3RoKSA6IGVxdWFsKHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4obV92
YWx1ZURhdGFDaGFyUmF3KSwgc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPihvdGhlci5tX3ZhbHVl
RGF0YUNoYXJSYXcpLCBtX3ZhbHVlTGVuZ3RoKTsKK30KKworYm9vbCBDU1NQYXJzZXJUb2tlbjo6
b3BlcmF0b3I9PShjb25zdCBDU1NQYXJzZXJUb2tlbiYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYg
KG1fdHlwZSAhPSBvdGhlci5tX3R5cGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBzd2l0
Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgRGVsaW1pdGVyVG9rZW46CisgICAgICAgIHJldHVybiBk
ZWxpbWl0ZXIoKSA9PSBvdGhlci5kZWxpbWl0ZXIoKTsKKyAgICBjYXNlIEhhc2hUb2tlbjoKKyAg
ICAgICAgaWYgKG1faGFzaFRva2VuVHlwZSAhPSBvdGhlci5tX2hhc2hUb2tlblR5cGUpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgSWRl
bnRUb2tlbjoKKyAgICBjYXNlIEZ1bmN0aW9uVG9rZW46CisgICAgY2FzZSBTdHJpbmdUb2tlbjoK
KyAgICBjYXNlIFVybFRva2VuOgorICAgICAgICByZXR1cm4gdmFsdWVEYXRhQ2hhclJhd0VxdWFs
KG90aGVyKTsKKyAgICBjYXNlIERpbWVuc2lvblRva2VuOgorICAgICAgICBpZiAoIXZhbHVlRGF0
YUNoYXJSYXdFcXVhbChvdGhlcikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IEZBTExUSFJPVUdIOworICAgIGNhc2UgTnVtYmVyVG9rZW46CisgICAgY2FzZSBQZXJjZW50YWdl
VG9rZW46CisgICAgICAgIHJldHVybiBtX251bWVyaWNTaWduID09IG90aGVyLm1fbnVtZXJpY1Np
Z24gJiYgbV9udW1lcmljVmFsdWUgPT0gb3RoZXIubV9udW1lcmljVmFsdWUgJiYgbV9udW1lcmlj
VmFsdWVUeXBlID09IG90aGVyLm1fbnVtZXJpY1ZhbHVlVHlwZTsKKyAgICBjYXNlIFVuaWNvZGVS
YW5nZVRva2VuOgorICAgICAgICByZXR1cm4gbV91bmljb2RlUmFuZ2Uuc3RhcnQgPT0gb3RoZXIu
bV91bmljb2RlUmFuZ2Uuc3RhcnQgJiYgbV91bmljb2RlUmFuZ2UuZW5kID09IG90aGVyLm1fdW5p
Y29kZVJhbmdlLmVuZDsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
Cit9CisKK3ZvaWQgQ1NTUGFyc2VyVG9rZW46OnNlcmlhbGl6ZShTdHJpbmdCdWlsZGVyJiBidWls
ZGVyKSBjb25zdAoreworICAgIC8vIFRoaXMgaXMgY3VycmVudGx5IG9ubHkgdXNlZCBmb3IgQHN1
cHBvcnRzIENTU09NLiBUbyBrZWVwIG91ciBpbXBsZW1lbnRhdGlvbgorICAgIC8vIHNpbXBsZSB3
ZSBoYW5kbGUgc29tZSBvZiB0aGUgZWRnZSBjYXNlcyBpbmNvcnJlY3RseSAoc2VlIGNvbW1lbnRz
IGJlbG93KS4KKyAgICBzd2l0Y2ggKHR5cGUoKSkgeworICAgIGNhc2UgSWRlbnRUb2tlbjoKKyAg
ICAgICAgc2VyaWFsaXplSWRlbnRpZmllcih2YWx1ZSgpLnRvU3RyaW5nKCksIGJ1aWxkZXIpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEZ1bmN0aW9uVG9rZW46CisgICAgICAgIHNlcmlhbGl6
ZUlkZW50aWZpZXIodmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVyKTsKKyAgICAgICAgcmV0dXJu
IGJ1aWxkZXIuYXBwZW5kKCcoJyk7CisgICAgY2FzZSBBdEtleXdvcmRUb2tlbjoKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgc2VyaWFsaXplSWRlbnRpZmllcih2YWx1ZSgp
LnRvU3RyaW5nKCksIGJ1aWxkZXIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEhhc2hUb2tl
bjoKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgc2VyaWFsaXplSWRlbnRp
Zmllcih2YWx1ZSgpLnRvU3RyaW5nKCksIGJ1aWxkZXIsIChnZXRIYXNoVG9rZW5UeXBlKCkgPT0g
SGFzaFRva2VuVW5yZXN0cmljdGVkKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVXJsVG9r
ZW46CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ1cmwoIik7CisgICAgICAgIHNlcmlhbGl6ZUlk
ZW50aWZpZXIodmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVyKTsKKyAgICAgICAgcmV0dXJuIGJ1
aWxkZXIuYXBwZW5kKCcpJyk7CisgICAgY2FzZSBEZWxpbWl0ZXJUb2tlbjoKKyAgICAgICAgaWYg
KGRlbGltaXRlcigpID09ICdcXCcpCisgICAgICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQo
IlxcXG4iKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKGRlbGltaXRlcigpKTsKKyAg
ICBjYXNlIE51bWJlclRva2VuOgorICAgICAgICAvLyBUaGVzZSB3b24ndCBwcm9wZXJseSBwcmVz
ZXJ2ZSB0aGUgTnVtZXJpY1ZhbHVlVHlwZSBmbGFnCisgICAgICAgIHJldHVybiBidWlsZGVyLmFw
cGVuZE51bWJlcihudW1lcmljVmFsdWUoKSk7CisgICAgY2FzZSBQZXJjZW50YWdlVG9rZW46Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG51bWVyaWNWYWx1ZSgpKTsKKyAgICAgICAgcmV0
dXJuIGJ1aWxkZXIuYXBwZW5kKCclJyk7CisgICAgY2FzZSBEaW1lbnNpb25Ub2tlbjoKKyAgICAg
ICAgLy8gVGhpcyB3aWxsIGluY29ycmVjdGx5IHNlcmlhbGl6ZSBlLmcuIDRlM2UyIGFzIDQwMDBl
MgorICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihudW1lcmljVmFsdWUoKSk7CisgICAgICAg
IHNlcmlhbGl6ZUlkZW50aWZpZXIodmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVyKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBVbmljb2RlUmFuZ2VUb2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1
aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJVKyVYLSVYIiwgdW5pY29kZVJhbmdlU3RhcnQo
KSwgdW5pY29kZVJhbmdlRW5kKCkpKTsKKyAgICBjYXNlIFN0cmluZ1Rva2VuOgorICAgICAgICBy
ZXR1cm4gc2VyaWFsaXplU3RyaW5nKHZhbHVlKCkudG9TdHJpbmcoKSwgYnVpbGRlcik7CisKKyAg
ICBjYXNlIEluY2x1ZGVNYXRjaFRva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQo
In49Iik7CisgICAgY2FzZSBEYXNoTWF0Y2hUb2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIu
YXBwZW5kKCJ8PSIpOworICAgIGNhc2UgUHJlZml4TWF0Y2hUb2tlbjoKKyAgICAgICAgcmV0dXJu
IGJ1aWxkZXIuYXBwZW5kKCJePSIpOworICAgIGNhc2UgU3VmZml4TWF0Y2hUb2tlbjoKKyAgICAg
ICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCIkPSIpOworICAgIGNhc2UgU3Vic3RyaW5nTWF0Y2hU
b2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCIqPSIpOworICAgIGNhc2UgQ29s
dW1uVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgifHwiKTsKKyAgICBjYXNl
IENET1Rva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoIjwhLS0iKTsKKyAgICBj
YXNlIENEQ1Rva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoIi0tPiIpOworICAg
IGNhc2UgQmFkU3RyaW5nVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgiJ1xu
Iik7CisgICAgY2FzZSBCYWRVcmxUb2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5k
KCJ1cmwoKCkiKTsKKyAgICBjYXNlIFdoaXRlc3BhY2VUb2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1
aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgY2FzZSBDb2xvblRva2VuOgorICAgICAgICByZXR1cm4g
YnVpbGRlci5hcHBlbmQoJzonKTsKKyAgICBjYXNlIFNlbWljb2xvblRva2VuOgorICAgICAgICBy
ZXR1cm4gYnVpbGRlci5hcHBlbmQoJzsnKTsKKyAgICBjYXNlIENvbW1hVG9rZW46CisgICAgICAg
IHJldHVybiBidWlsZGVyLmFwcGVuZCgnLCcpOworICAgIGNhc2UgTGVmdFBhcmVudGhlc2lzVG9r
ZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgnKCcpOworICAgIGNhc2UgUmlnaHRQ
YXJlbnRoZXNpc1Rva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJyknKTsKKyAg
ICBjYXNlIExlZnRCcmFja2V0VG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgn
WycpOworICAgIGNhc2UgUmlnaHRCcmFja2V0VG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVy
LmFwcGVuZCgnXScpOworICAgIGNhc2UgTGVmdEJyYWNlVG9rZW46CisgICAgICAgIHJldHVybiBi
dWlsZGVyLmFwcGVuZCgneycpOworICAgIGNhc2UgUmlnaHRCcmFjZVRva2VuOgorICAgICAgICBy
ZXR1cm4gYnVpbGRlci5hcHBlbmQoJ30nKTsKKworICAgIGNhc2UgRU9GVG9rZW46CisgICAgY2Fz
ZSBDb21tZW50VG9rZW46CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW4uaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDE4MCBAQAorLy8gQ29weXJpZ2h0IDIwMTQgVGhlIENocm9taXVtIEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisv
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyNpZm5kZWYgQ1NTUGFyc2VyVG9rZW5faAorI2RlZmluZSBDU1NQYXJzZXJUb2tl
bl9oCisKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ1ZpZXcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIENTU1BhcnNlclRv
a2VuVHlwZSB7CisgICAgSWRlbnRUb2tlbiA9IDAsCisgICAgRnVuY3Rpb25Ub2tlbiwKKyAgICBB
dEtleXdvcmRUb2tlbiwKKyAgICBIYXNoVG9rZW4sCisgICAgVXJsVG9rZW4sCisgICAgQmFkVXJs
VG9rZW4sCisgICAgRGVsaW1pdGVyVG9rZW4sCisgICAgTnVtYmVyVG9rZW4sCisgICAgUGVyY2Vu
dGFnZVRva2VuLAorICAgIERpbWVuc2lvblRva2VuLAorICAgIEluY2x1ZGVNYXRjaFRva2VuLAor
ICAgIERhc2hNYXRjaFRva2VuLAorICAgIFByZWZpeE1hdGNoVG9rZW4sCisgICAgU3VmZml4TWF0
Y2hUb2tlbiwKKyAgICBTdWJzdHJpbmdNYXRjaFRva2VuLAorICAgIENvbHVtblRva2VuLAorICAg
IFVuaWNvZGVSYW5nZVRva2VuLAorICAgIFdoaXRlc3BhY2VUb2tlbiwKKyAgICBDRE9Ub2tlbiwK
KyAgICBDRENUb2tlbiwKKyAgICBDb2xvblRva2VuLAorICAgIFNlbWljb2xvblRva2VuLAorICAg
IENvbW1hVG9rZW4sCisgICAgTGVmdFBhcmVudGhlc2lzVG9rZW4sCisgICAgUmlnaHRQYXJlbnRo
ZXNpc1Rva2VuLAorICAgIExlZnRCcmFja2V0VG9rZW4sCisgICAgUmlnaHRCcmFja2V0VG9rZW4s
CisgICAgTGVmdEJyYWNlVG9rZW4sCisgICAgUmlnaHRCcmFjZVRva2VuLAorICAgIFN0cmluZ1Rv
a2VuLAorICAgIEJhZFN0cmluZ1Rva2VuLAorICAgIEVPRlRva2VuLAorICAgIENvbW1lbnRUb2tl
biwKK307CisKK2VudW0gTnVtZXJpY1NpZ24geworICAgIE5vU2lnbiwKKyAgICBQbHVzU2lnbiwK
KyAgICBNaW51c1NpZ24sCit9OworCitlbnVtIE51bWVyaWNWYWx1ZVR5cGUgeworICAgIEludGVn
ZXJWYWx1ZVR5cGUsCisgICAgTnVtYmVyVmFsdWVUeXBlLAorfTsKKworZW51bSBIYXNoVG9rZW5U
eXBlIHsKKyAgICBIYXNoVG9rZW5JZCwKKyAgICBIYXNoVG9rZW5VbnJlc3RyaWN0ZWQsCit9Owor
CitjbGFzcyBDU1NQYXJzZXJUb2tlbiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Citw
dWJsaWM6CisgICAgZW51bSBCbG9ja1R5cGUgeworICAgICAgICBOb3RCbG9jaywKKyAgICAgICAg
QmxvY2tTdGFydCwKKyAgICAgICAgQmxvY2tFbmQsCisgICAgfTsKKworICAgIENTU1BhcnNlclRv
a2VuKENTU1BhcnNlclRva2VuVHlwZSwgQmxvY2tUeXBlID0gTm90QmxvY2spOworICAgIENTU1Bh
cnNlclRva2VuKENTU1BhcnNlclRva2VuVHlwZSwgU3RyaW5nVmlldywgQmxvY2tUeXBlID0gTm90
QmxvY2spOworCisgICAgQ1NTUGFyc2VyVG9rZW4oQ1NTUGFyc2VyVG9rZW5UeXBlLCBVQ2hhcik7
IC8vIGZvciBEZWxpbWl0ZXJUb2tlbgorICAgIENTU1BhcnNlclRva2VuKENTU1BhcnNlclRva2Vu
VHlwZSwgZG91YmxlLCBOdW1lcmljVmFsdWVUeXBlLCBOdW1lcmljU2lnbik7IC8vIGZvciBOdW1i
ZXJUb2tlbgorICAgIENTU1BhcnNlclRva2VuKENTU1BhcnNlclRva2VuVHlwZSwgVUNoYXIzMiwg
VUNoYXIzMik7IC8vIGZvciBVbmljb2RlUmFuZ2VUb2tlbgorCisgICAgQ1NTUGFyc2VyVG9rZW4o
SGFzaFRva2VuVHlwZSwgU3RyaW5nVmlldyk7CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q1NTUGFyc2VyVG9rZW4mIG90aGVyKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
Q1NTUGFyc2VyVG9rZW4mIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsg
fQorCisgICAgLy8gQ29udmVydHMgTnVtYmVyVG9rZW4gdG8gRGltZW5zaW9uVG9rZW4uCisgICAg
dm9pZCBjb252ZXJ0VG9EaW1lbnNpb25XaXRoVW5pdChTdHJpbmdWaWV3KTsKKworICAgIC8vIENv
bnZlcnRzIE51bWJlclRva2VuIHRvIFBlcmNlbnRhZ2VUb2tlbi4KKyAgICB2b2lkIGNvbnZlcnRU
b1BlcmNlbnRhZ2UoKTsKKworICAgIENTU1BhcnNlclRva2VuVHlwZSB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyVG9rZW5UeXBlPihtX3R5cGUpOyB9CisgICAgU3Ry
aW5nVmlldyB2YWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV92YWx1ZUlzOEJpdCkK
KyAgICAgICAgICAgIHJldHVybiBTdHJpbmdWaWV3KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihtX3ZhbHVlRGF0YUNoYXJSYXcpLCBtX3ZhbHVlTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJu
IFN0cmluZ1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KG1fdmFsdWVEYXRhQ2hh
clJhdyksIG1fdmFsdWVMZW5ndGgpOworICAgIH0KKworICAgIFVDaGFyIGRlbGltaXRlcigpIGNv
bnN0OworICAgIE51bWVyaWNTaWduIG51bWVyaWNTaWduKCkgY29uc3Q7CisgICAgTnVtZXJpY1Zh
bHVlVHlwZSBudW1lcmljVmFsdWVUeXBlKCkgY29uc3Q7CisgICAgZG91YmxlIG51bWVyaWNWYWx1
ZSgpIGNvbnN0OworICAgIEhhc2hUb2tlblR5cGUgZ2V0SGFzaFRva2VuVHlwZSgpIGNvbnN0IHsg
QVNTRVJUKG1fdHlwZSA9PSBIYXNoVG9rZW4pOyByZXR1cm4gbV9oYXNoVG9rZW5UeXBlOyB9Cisg
ICAgQmxvY2tUeXBlIGdldEJsb2NrVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJs
b2NrVHlwZT4obV9ibG9ja1R5cGUpOyB9CisgICAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBl
cyB1bml0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZXM+KG1fdW5pdCk7IH0KKyAgICBVQ2hhcjMyIHVuaWNvZGVSYW5nZVN0YXJ0KCkg
Y29uc3QgeyBBU1NFUlQobV90eXBlID09IFVuaWNvZGVSYW5nZVRva2VuKTsgcmV0dXJuIG1fdW5p
Y29kZVJhbmdlLnN0YXJ0OyB9CisgICAgVUNoYXIzMiB1bmljb2RlUmFuZ2VFbmQoKSBjb25zdCB7
IEFTU0VSVChtX3R5cGUgPT0gVW5pY29kZVJhbmdlVG9rZW4pOyByZXR1cm4gbV91bmljb2RlUmFu
Z2UuZW5kOyB9CisgICAgQ1NTVmFsdWVJRCBpZCgpIGNvbnN0OworICAgIENTU1ZhbHVlSUQgZnVu
Y3Rpb25JZCgpIGNvbnN0OworCisgICAgYm9vbCBoYXNTdHJpbmdCYWNraW5nKCkgY29uc3Q7CisK
KyAgICBDU1NQcm9wZXJ0eUlEIHBhcnNlQXNVbnJlc29sdmVkQ1NTUHJvcGVydHlJRCgpIGNvbnN0
OworCisgICAgdm9pZCBzZXJpYWxpemUoU3RyaW5nQnVpbGRlciYpIGNvbnN0OworCisgICAgQ1NT
UGFyc2VyVG9rZW4gY29weVdpdGhVcGRhdGVkU3RyaW5nKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICB2b2lkIGluaXRWYWx1ZUZyb21TdHJpbmdWaWV3KFN0cmluZ1Zp
ZXcgc3RyaW5nKQorICAgIHsKKyAgICAgICAgbV92YWx1ZUxlbmd0aCA9IHN0cmluZy5sZW5ndGgo
KTsKKyAgICAgICAgbV92YWx1ZUlzOEJpdCA9IHN0cmluZy5pczhCaXQoKTsKKyAgICAgICAgbV92
YWx1ZURhdGFDaGFyUmF3ID0gbV92YWx1ZUlzOEJpdCA/IHN0YXRpY19jYXN0PGNvbnN0IHZvaWQq
PihzdHJpbmcuY2hhcmFjdGVyczgoKSkgOiBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oc3RyaW5n
LmNoYXJhY3RlcnMxNigpKTsKKyAgICB9CisgICAgdW5zaWduZWQgbV90eXBlIDogNjsgLy8gQ1NT
UGFyc2VyVG9rZW5UeXBlCisgICAgdW5zaWduZWQgbV9ibG9ja1R5cGUgOiAyOyAvLyBCbG9ja1R5
cGUKKyAgICB1bnNpZ25lZCBtX251bWVyaWNWYWx1ZVR5cGUgOiAxOyAvLyBOdW1lcmljVmFsdWVU
eXBlCisgICAgdW5zaWduZWQgbV9udW1lcmljU2lnbiA6IDI7IC8vIE51bWVyaWNTaWduCisgICAg
dW5zaWduZWQgbV91bml0IDogNzsgLy8gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcworCisg
ICAgYm9vbCB2YWx1ZURhdGFDaGFyUmF3RXF1YWwoY29uc3QgQ1NTUGFyc2VyVG9rZW4mIG90aGVy
KSBjb25zdDsKKworICAgIC8vIG1fdmFsdWUuLi4gaXMgYW4gdW5wYWNrZWQgU3RyaW5nVmlldyBz
byB0aGF0IHdlIGNhbiBwYWNrIGl0CisgICAgLy8gdGlnaHRseSB3aXRoIHRoZSByZXN0IG9mIHRo
aXMgb2JqZWN0IGZvciBhIHNtYWxsZXIgb2JqZWN0IHNpemUuCisgICAgYm9vbCBtX3ZhbHVlSXM4
Qml0IDogMTsKKyAgICB1bnNpZ25lZCBtX3ZhbHVlTGVuZ3RoOworICAgIGNvbnN0IHZvaWQqIG1f
dmFsdWVEYXRhQ2hhclJhdzsgLy8gRWl0aGVyIExDaGFyKiBvciBVQ2hhciouCisKKyAgICB1bmlv
biB7CisgICAgICAgIFVDaGFyIG1fZGVsaW1pdGVyOworICAgICAgICBIYXNoVG9rZW5UeXBlIG1f
aGFzaFRva2VuVHlwZTsKKyAgICAgICAgZG91YmxlIG1fbnVtZXJpY1ZhbHVlOworICAgICAgICBt
dXRhYmxlIGludCBtX2lkOworCisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBVQ2hhcjMy
IHN0YXJ0OworICAgICAgICAgICAgVUNoYXIzMiBlbmQ7CisgICAgICAgIH0gbV91bmljb2RlUmFu
Z2U7CisgICAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENT
U1NQYXJzZXJUb2tlbl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNl
clRva2VuUmFuZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VyVG9rZW5SYW5nZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlblJhbmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDk2IEBACisvLyBDb3B5cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
Ky8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLwor
Ly8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuUmFuZ2UuaCIK
KworI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDU1NQYXJzZXJUb2tlbiYg
Q1NTUGFyc2VyVG9rZW5SYW5nZTo6ZW9mVG9rZW4oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxDU1NQYXJzZXJUb2tlbj4gZW9mVG9rZW4oRU9GVG9rZW4pOworICAgIHJldHVybiBlb2ZU
b2tlbi5nZXQoKTsKK30KKworQ1NTUGFyc2VyVG9rZW5SYW5nZSBDU1NQYXJzZXJUb2tlblJhbmdl
OjptYWtlU3ViUmFuZ2UoY29uc3QgQ1NTUGFyc2VyVG9rZW4qIGZpcnN0LCBjb25zdCBDU1NQYXJz
ZXJUb2tlbiogbGFzdCkgY29uc3QKK3sKKyAgICBpZiAoZmlyc3QgPT0gJmVvZlRva2VuKCkpCisg
ICAgICAgIGZpcnN0ID0gbV9sYXN0OworICAgIGlmIChsYXN0ID09ICZlb2ZUb2tlbigpKQorICAg
ICAgICBsYXN0ID0gbV9sYXN0OworICAgIEFTU0VSVChmaXJzdCA8PSBsYXN0KTsKKyAgICByZXR1
cm4gQ1NTUGFyc2VyVG9rZW5SYW5nZShmaXJzdCwgbGFzdCk7Cit9CisKK0NTU1BhcnNlclRva2Vu
UmFuZ2UgQ1NTUGFyc2VyVG9rZW5SYW5nZTo6Y29uc3VtZUJsb2NrKCkKK3sKKyAgICBBU1NFUlQo
cGVlaygpLmdldEJsb2NrVHlwZSgpID09IENTU1BhcnNlclRva2VuOjpCbG9ja1N0YXJ0KTsKKyAg
ICBjb25zdCBDU1NQYXJzZXJUb2tlbiogc3RhcnQgPSAmcGVlaygpICsgMTsKKyAgICB1bnNpZ25l
ZCBuZXN0aW5nTGV2ZWwgPSAwOworICAgIGRvIHsKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9r
ZW4mIHRva2VuID0gY29uc3VtZSgpOworICAgICAgICBpZiAodG9rZW4uZ2V0QmxvY2tUeXBlKCkg
PT0gQ1NTUGFyc2VyVG9rZW46OkJsb2NrU3RhcnQpCisgICAgICAgICAgICBuZXN0aW5nTGV2ZWwr
KzsKKyAgICAgICAgZWxzZSBpZiAodG9rZW4uZ2V0QmxvY2tUeXBlKCkgPT0gQ1NTUGFyc2VyVG9r
ZW46OkJsb2NrRW5kKQorICAgICAgICAgICAgbmVzdGluZ0xldmVsLS07CisgICAgfSB3aGlsZSAo
bmVzdGluZ0xldmVsICYmIG1fZmlyc3QgPCBtX2xhc3QpOworCisgICAgaWYgKG5lc3RpbmdMZXZl
bCkKKyAgICAgICAgcmV0dXJuIG1ha2VTdWJSYW5nZShzdGFydCwgbV9maXJzdCk7IC8vIEVuZGVk
IGF0IEVPRgorICAgIHJldHVybiBtYWtlU3ViUmFuZ2Uoc3RhcnQsIG1fZmlyc3QgLSAxKTsKK30K
Kwordm9pZCBDU1NQYXJzZXJUb2tlblJhbmdlOjpjb25zdW1lQ29tcG9uZW50VmFsdWUoKQorewor
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIGdvaW5nIHRvIGRvIG11bHRpcGxlIHBhc3NlcyBvdmVyIGxh
cmdlIHNlY3Rpb25zIG9mIGEgc3R5bGVzaGVldC4KKyAgICAvLyBXZSBzaG91bGQgY29uc2lkZXIg
b3B0aW1pc2luZyB0aGlzIGJ5IHByZWNvbXB1dGluZyB3aGVyZSBlYWNoIGJsb2NrIGVuZHMuCisg
ICAgdW5zaWduZWQgbmVzdGluZ0xldmVsID0gMDsKKyAgICBkbyB7CisgICAgICAgIGNvbnN0IENT
U1BhcnNlclRva2VuJiB0b2tlbiA9IGNvbnN1bWUoKTsKKyAgICAgICAgaWYgKHRva2VuLmdldEJs
b2NrVHlwZSgpID09IENTU1BhcnNlclRva2VuOjpCbG9ja1N0YXJ0KQorICAgICAgICAgICAgbmVz
dGluZ0xldmVsKys7CisgICAgICAgIGVsc2UgaWYgKHRva2VuLmdldEJsb2NrVHlwZSgpID09IENT
U1BhcnNlclRva2VuOjpCbG9ja0VuZCkKKyAgICAgICAgICAgIG5lc3RpbmdMZXZlbC0tOworICAg
IH0gd2hpbGUgKG5lc3RpbmdMZXZlbCAmJiBtX2ZpcnN0IDwgbV9sYXN0KTsKK30KKworU3RyaW5n
IENTU1BhcnNlclRva2VuUmFuZ2U6OnNlcmlhbGl6ZSgpIGNvbnN0Cit7CisgICAgLy8gV2UncmUg
c3VwcG9zZWQgdG8gaW5zZXJ0IGNvbW1lbnRzIGJldHdlZW4gY2VydGFpbiBwYWlycyBvZiB0b2tl
biB0eXBlcworICAgIC8vIGFzIHBlciBzcGVjLCBidXQgc2luY2UgdGhpcyBpcyBjdXJyZW50bHkg
b25seSB1c2VkIGZvciBAc3VwcG9ydHMgQ1NTT00KKyAgICAvLyB3ZSBqdXN0IGdldCB0aGVzZSBj
YXNlcyB3cm9uZyBhbmQgYXZvaWQgdGhlIGFkZGl0aW9uYWwgY29tcGxleGl0eS4KKyAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgZm9yIChjb25zdCBDU1NQYXJzZXJUb2tlbiogaXQgPSBt
X2ZpcnN0OyBpdCA8IG1fbGFzdDsgKytpdCkKKyAgICAgICAgaXQtPnNlcmlhbGl6ZShidWlsZGVy
KTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuUmFu
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRv
a2VuUmFuZ2UuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlclRva2VuUmFuZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNSBAQAorLy8g
Q29weXJpZ2h0IDIwMTQgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBk
aXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
Ky8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZm5kZWYgQ1NT
UGFyc2VyVG9rZW5SYW5nZV9oCisjZGVmaW5lIENTU1BhcnNlclRva2VuUmFuZ2VfaAorCisjaW5j
bHVkZSAiQ1NTUGFyc2VyVG9rZW4uaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworLy8gQSBDU1NQYXJzZXJUb2tlblJhbmdlIGlzIGFuIGl0ZXJhdG9y
IG92ZXIgYSBzdWJyYW5nZSBvZiBhIHZlY3RvciBvZiBDU1NQYXJzZXJUb2tlbnMuCisvLyBBY2Nl
c3Npbmcgb3V0c2lkZSBvZiB0aGUgcmFuZ2Ugd2lsbCByZXR1cm4gYW4gZW5kbGVzcyBzdHJlYW0g
b2YgRU9GIHRva2Vucy4KKy8vIFRoaXMgY2xhc3MgcmVmZXJzIHRvIGhhbGYtb3BlbiBpbnRlcnZh
bHMgW2ZpcnN0LCBsYXN0KS4KK2NsYXNzIENTU1BhcnNlclRva2VuUmFuZ2UgeworcHVibGljOgor
ICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVCdWZmZXI+CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5n
ZShjb25zdCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4sIGlubGluZUJ1ZmZlcj4mIHZlY3RvcikKKyAg
ICAgICAgOiBtX2ZpcnN0KHZlY3Rvci5iZWdpbigpKQorICAgICAgICAsIG1fbGFzdCh2ZWN0b3Iu
ZW5kKCkpCisgICAgeworICAgIH0KKworICAgIC8vIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBvbiBh
IHJhbmdlIHdpdGggdG9rZW5zIHJldHVybmVkIGJ5IHRoYXQgcmFuZ2UuCisgICAgQ1NTUGFyc2Vy
VG9rZW5SYW5nZSBtYWtlU3ViUmFuZ2UoY29uc3QgQ1NTUGFyc2VyVG9rZW4qIGZpcnN0LCBjb25z
dCBDU1NQYXJzZXJUb2tlbiogbGFzdCkgY29uc3Q7CisKKyAgICBib29sIGF0RW5kKCkgY29uc3Qg
eyByZXR1cm4gbV9maXJzdCA9PSBtX2xhc3Q7IH0KKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiog
ZW5kKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0OyB9CisKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tl
biYgcGVlayh1bnNpZ25lZCBvZmZzZXQgPSAwKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1f
Zmlyc3QgKyBvZmZzZXQgPj0gbV9sYXN0KQorICAgICAgICAgICAgcmV0dXJuIGVvZlRva2VuKCk7
CisgICAgICAgIHJldHVybiAqKG1fZmlyc3QgKyBvZmZzZXQpOworICAgIH0KKworICAgIGNvbnN0
IENTU1BhcnNlclRva2VuJiBjb25zdW1lKCkKKyAgICB7CisgICAgICAgIGlmIChtX2ZpcnN0ID09
IG1fbGFzdCkKKyAgICAgICAgICAgIHJldHVybiBlb2ZUb2tlbigpOworICAgICAgICByZXR1cm4g
Km1fZmlyc3QrKzsKKyAgICB9CisKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgY29uc3VtZUlu
Y2x1ZGluZ1doaXRlc3BhY2UoKQorICAgIHsKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4m
IHJlc3VsdCA9IGNvbnN1bWUoKTsKKyAgICAgICAgY29uc3VtZVdoaXRlc3BhY2UoKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvLyBUaGUgcmV0dXJuZWQgcmFuZ2UgZG9l
c24ndCBpbmNsdWRlIHRoZSBicmFja2V0cworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgY29uc3Vt
ZUJsb2NrKCk7CisKKyAgICB2b2lkIGNvbnN1bWVDb21wb25lbnRWYWx1ZSgpOworCisgICAgdm9p
ZCBjb25zdW1lV2hpdGVzcGFjZSgpCisgICAgeworICAgICAgICB3aGlsZSAocGVlaygpLnR5cGUo
KSA9PSBXaGl0ZXNwYWNlVG9rZW4pCisgICAgICAgICAgICArK21fZmlyc3Q7CisgICAgfQorCisg
ICAgU3RyaW5nIHNlcmlhbGl6ZSgpIGNvbnN0OworCisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4q
IGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdDsgfQorCisgICAgc3RhdGljIENTU1BhcnNl
clRva2VuJiBlb2ZUb2tlbigpOworCitwcml2YXRlOgorICAgIENTU1BhcnNlclRva2VuUmFuZ2Uo
Y29uc3QgQ1NTUGFyc2VyVG9rZW4qIGZpcnN0LCBjb25zdCBDU1NQYXJzZXJUb2tlbiogbGFzdCkK
KyAgICAgICAgOiBtX2ZpcnN0KGZpcnN0KQorICAgICAgICAsIG1fbGFzdChsYXN0KQorICAgIHsg
fQorCisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4qIG1fZmlyc3Q7CisgICAgY29uc3QgQ1NTUGFy
c2VyVG9rZW4qIG1fbGFzdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIENTU1BhcnNlclRva2VuUmFuZ2VfaApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0NzgzIEBACisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
Ky8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8v
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisv
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2Vy
LmgiCisKKyNpbmNsdWRlICJDb3VudGVyLmgiCisjaW5jbHVkZSAiQ1NTQmFzaWNTaGFwZXMuaCIK
KyNpbmNsdWRlICJDU1NCb3JkZXJJbWFnZS5oIgorI2luY2x1ZGUgIkNTU0NvbnRlbnREaXN0cmli
dXRpb25WYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKKy8vIEZJWE1F
LU5FV1BBUlNFUiAjaW5jbHVkZSAiQ1NTQ3VzdG9tSWRlbnRWYWx1ZS5oIgorI2luY2x1ZGUgIkNT
U0ZvbnRGYWNlU3JjVmFsdWUuaCIKKy8vIEZJWE1FLU5FV1BBUlNFUiAjaW5jbHVkZSAiQ1NTRm9u
dEZhbWlseVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTRm9udEZlYXR1cmVWYWx1ZS5oIgorI2luY2x1
ZGUgIkNTU0Z1bmN0aW9uVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NHcmlkQXV0b1JlcGVhdFZhbHVl
LmgiCisjaW5jbHVkZSAiQ1NTR3JpZExpbmVOYW1lc1ZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTR3Jp
ZFRlbXBsYXRlQXJlYXNWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0luaGVyaXRlZFZhbHVlLmgiCisj
aW5jbHVkZSAiQ1NTSW5pdGlhbFZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyRmFzdFBhdGhz
LmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VySWRpb21zLmgiCisvLyBGSVhNRS1ORVdQQVJTRVIgI2lu
Y2x1ZGUgIkNTU1BhdGhWYWx1ZS5oIgorLy8gRklYTUUtTkVXUEFSU0VSICNpbmNsdWRlICJDU1NQ
ZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1h
cHBpbmdzLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmgiCisvLyBGSVhN
RS1ORVdQQVJTRVIgI2luY2x1ZGUgIkNTU1F1YWRWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1JlZmxl
Y3RWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1NoYWRvd1ZhbHVlLmgiCisvLyBGSVhNRS1ORVdQQVJT
RVIgI2luY2x1ZGUgIkNTU1N0cmluZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTVGltaW5nRnVuY3Rp
b25WYWx1ZS5oIgorLy8gRklYTUUtTkVXUEFSU0VSICNpbmNsdWRlICJDU1NVUklWYWx1ZS5oIgor
I2luY2x1ZGUgIkNTU1VuaWNvZGVSYW5nZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTVW5zZXRWYWx1
ZS5oIgorLy8gRklYTUUtTkVXUEFSU0VSICNpbmNsdWRlICJDU1NWYWx1ZVBhaXIuaCIKKy8vIEZJ
WE1FLU5FV1BBUlNFUiAjaW5jbHVkZSAiQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oIgorLy8g
RklYTUUtTkVXUEFSU0VSICNpbmNsdWRlICJDU1NWYXJpYWJsZVBhcnNlci5oIgorI2luY2x1ZGUg
IkZvbnRGYWNlLmgiCisjaW5jbHVkZSAiSGFzaFRvb2xzLmgiCisjaW5jbHVkZSAiUmVuZGVyVGhl
bWUuaCIKKyNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZC5oIgorI2luY2x1ZGUgIlNWR1BhdGhVdGlsaXRpZXMuaCIKKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8bWVtb3J5PgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBib29sIGhhc1ByZWZpeChjb25zdCBjaGFyKiBz
dHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgY2hhciogcHJlZml4KQoreworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBpZiAoIXByZWZpeFtp
XSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoc3RyaW5nW2ldICE9IHBy
ZWZpeFtpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworfQorICAgIAordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMg
Q1NTUHJvcGVydHlJRCBjc3NQcm9wZXJ0eUlEKGNvbnN0IENoYXJhY3RlclR5cGUqIHByb3BlcnR5
TmFtZSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGNoYXIgYnVmZmVyW21heENTU1Byb3BlcnR5
TmFtZUxlbmd0aCArIDEgKyAxXTsgLy8gMSB0byB0dXJuICJhcHBsZSIvImtodG1sIiBpbnRvICJ3
ZWJraXQiLCAxIGZvciBudWxsIGNoYXJhY3RlcgorICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgIT0gbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgQ2hhcmFjdGVyVHlwZSBjID0gcHJvcGVy
dHlOYW1lW2ldOworICAgICAgICBpZiAoIWMgfHwgYyA+PSAweDdGKQorICAgICAgICAgICAgcmV0
dXJuIENTU1Byb3BlcnR5SW52YWxpZDsgLy8gaWxsZWdhbCBjaGFyYWN0ZXIKKyAgICAgICAgYnVm
ZmVyW2ldID0gdG9BU0NJSUxvd2VyKGMpOworICAgIH0KKyAgICBidWZmZXJbbGVuZ3RoXSA9ICdc
MCc7CisgICAgCisgICAgY29uc3QgY2hhciogbmFtZSA9IGJ1ZmZlcjsKKyAgICBpZiAoYnVmZmVy
WzBdID09ICctJykgeworI2lmIEVOQUJMRShMRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykKKyAg
ICAgICAgLy8gSWYgdGhlIHByZWZpeCBpcyAtYXBwbGUtIG9yIC1raHRtbC0sIGNoYW5nZSBpdCB0
byAtd2Via2l0LS4KKyAgICAgICAgLy8gVGhpcyBtYWtlcyB0aGUgc3RyaW5nIG9uZSBjaGFyYWN0
ZXIgbG9uZ2VyLgorICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS5sZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQoKQorICAgICAgICAgICAgJiYg
KGhhc1ByZWZpeChidWZmZXIsIGxlbmd0aCwgIi1hcHBsZS0iKSB8fCBoYXNQcmVmaXgoYnVmZmVy
LCBsZW5ndGgsICIta2h0bWwtIikpKSB7CisgICAgICAgICAgICBtZW1tb3ZlKGJ1ZmZlciArIDcs
IGJ1ZmZlciArIDYsIGxlbmd0aCArIDEgLSA2KTsKKyAgICAgICAgICAgIG1lbWNweShidWZmZXIs
ICItd2Via2l0IiwgNyk7CisgICAgICAgICAgICArK2xlbmd0aDsKKyAgICAgICAgfQorI2VuZGlm
CisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICBjc3NQcm9wZXJ0eU5hbWVJT1NBbGlhc2luZyhi
dWZmZXIsIG5hbWUsIGxlbmd0aCk7CisjZW5kaWYKKyAgICB9CisgICAgCisgICAgY29uc3QgUHJv
cGVydHkqIGhhc2hUYWJsZUVudHJ5ID0gZmluZFByb3BlcnR5KG5hbWUsIGxlbmd0aCk7CisgICAg
cmV0dXJuIGhhc2hUYWJsZUVudHJ5ID8gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaGFzaFRh
YmxlRW50cnktPmlkKSA6IENTU1Byb3BlcnR5SW52YWxpZDsKK30KKworI2lmIFBMQVRGT1JNKElP
UykKK3ZvaWQgY3NzUHJvcGVydHlOYW1lSU9TQWxpYXNpbmcoY29uc3QgY2hhciogcHJvcGVydHlO
YW1lLCBjb25zdCBjaGFyKiYgcHJvcGVydHlOYW1lQWxpYXMsIHVuc2lnbmVkJiBuZXdMZW5ndGgp
Cit7CisgICAgaWYgKCFzdHJjbXAocHJvcGVydHlOYW1lLCAiLXdlYmtpdC1oeXBoZW5hdGUtbG9j
YWxlIikpIHsKKyAgICAgICAgLy8gV29ya2VkIGluIGlPUyA0LjIuCisgICAgICAgIHN0YXRpYyBj
b25zdCBjaGFyIHdlYmtpdExvY2FsZVtdID0gIi13ZWJraXQtbG9jYWxlIjsKKyAgICAgICAgcHJv
cGVydHlOYW1lQWxpYXMgPSB3ZWJraXRMb2NhbGU7CisgICAgICAgIG5ld0xlbmd0aCA9IHN0cmxl
bih3ZWJraXRMb2NhbGUpOworICAgIH0KK30KKyNlbmRpZgorCitzdGF0aWMgYm9vbCBpc0FwcGxl
TGVnYWN5Q3NzVmFsdWVLZXl3b3JkKGNvbnN0IGNoYXIqIHZhbHVlS2V5d29yZCwgdW5zaWduZWQg
bGVuZ3RoKQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyIGFwcGxlUHJlZml4W10gPSAiLWFwcGxl
LSI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgYXBwbGVTeXN0ZW1QcmVmaXhbXSA9ICItYXBwbGUt
c3lzdGVtIjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogYXBwbGVXaXJlbGVzc1BsYXliYWNrVGFy
Z2V0QWN0aXZlID0gZ2V0VmFsdWVOYW1lKENTU1ZhbHVlQXBwbGVXaXJlbGVzc1BsYXliYWNrVGFy
Z2V0QWN0aXZlKTsKKyAgICAKKyAgICByZXR1cm4gaGFzUHJlZml4KHZhbHVlS2V5d29yZCwgbGVu
Z3RoLCBhcHBsZVByZWZpeCkKKyAgICAmJiAhaGFzUHJlZml4KHZhbHVlS2V5d29yZCwgbGVuZ3Ro
LCBhcHBsZVN5c3RlbVByZWZpeCkKKyAgICAmJiAhV1RGOjplcXVhbChyZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4odmFsdWVLZXl3b3JkKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KGFwcGxlV2lyZWxlc3NQbGF5YmFja1RhcmdldEFjdGl2ZSksIGxlbmd0aCk7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIENTU1ZhbHVlSUQgY3NzVmFs
dWVLZXl3b3JkSUQoY29uc3QgQ2hhcmFjdGVyVHlwZSogdmFsdWVLZXl3b3JkLCB1bnNpZ25lZCBs
ZW5ndGgpCit7CisgICAgY2hhciBidWZmZXJbbWF4Q1NTVmFsdWVLZXl3b3JkTGVuZ3RoICsgMSAr
IDFdOyAvLyAxIHRvIHR1cm4gImFwcGxlIi8ia2h0bWwiIGludG8gIndlYmtpdCIsIDEgZm9yIG51
bGwgY2hhcmFjdGVyCisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBsZW5ndGg7
ICsraSkgeworICAgICAgICBDaGFyYWN0ZXJUeXBlIGMgPSB2YWx1ZUtleXdvcmRbaV07CisgICAg
ICAgIGlmICghYyB8fCBjID49IDB4N0YpCisgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVJbnZh
bGlkOyAvLyBpbGxlZ2FsIGtleXdvcmQuCisgICAgICAgIGJ1ZmZlcltpXSA9IFdURjo6dG9BU0NJ
SUxvd2VyKGMpOworICAgIH0KKyAgICBidWZmZXJbbGVuZ3RoXSA9ICdcMCc7CisgICAgCisgICAg
aWYgKGJ1ZmZlclswXSA9PSAnLScpIHsKKyAgICAgICAgLy8gSWYgdGhlIHByZWZpeCBpcyAtYXBw
bGUtIG9yIC1raHRtbC0sIGNoYW5nZSBpdCB0byAtd2Via2l0LS4KKyAgICAgICAgLy8gVGhpcyBt
YWtlcyB0aGUgc3RyaW5nIG9uZSBjaGFyYWN0ZXIgbG9uZ2VyLgorICAgICAgICAvLyBPbiBpT1Mg
d2UgZG9uJ3Qgd2FudCB0byBjaGFuZ2UgdmFsdWVzIHN0YXJ0aW5nIHdpdGggLWFwcGxlLXN5c3Rl
bSB0byAtd2Via2l0LXN5c3RlbS4KKyAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1hbmds
aW5nIHdpdGhvdXQgYnJlYWtpbmcgdGhlIHdlYi4KKyAgICAgICAgaWYgKGlzQXBwbGVMZWdhY3lD
c3NWYWx1ZUtleXdvcmQoYnVmZmVyLCBsZW5ndGgpIHx8IGhhc1ByZWZpeChidWZmZXIsIGxlbmd0
aCwgIi1raHRtbC0iKSkgeworICAgICAgICAgICAgbWVtbW92ZShidWZmZXIgKyA3LCBidWZmZXIg
KyA2LCBsZW5ndGggKyAxIC0gNik7CisgICAgICAgICAgICBtZW1jcHkoYnVmZmVyLCAiLXdlYmtp
dCIsIDcpOworICAgICAgICAgICAgKytsZW5ndGg7CisgICAgICAgIH0KKyAgICB9CisgICAgCisg
ICAgY29uc3QgVmFsdWUqIGhhc2hUYWJsZUVudHJ5ID0gZmluZFZhbHVlKGJ1ZmZlciwgbGVuZ3Ro
KTsKKyAgICByZXR1cm4gaGFzaFRhYmxlRW50cnkgPyBzdGF0aWNfY2FzdDxDU1NWYWx1ZUlEPiho
YXNoVGFibGVFbnRyeS0+aWQpIDogQ1NTVmFsdWVJbnZhbGlkOworfQorCitDU1NWYWx1ZUlEIGNz
c1ZhbHVlS2V5d29yZElEKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIHVuc2lnbmVkIGxlbmd0
aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIENT
U1ZhbHVlSW52YWxpZDsKKyAgICBpZiAobGVuZ3RoID4gbWF4Q1NTVmFsdWVLZXl3b3JkTGVuZ3Ro
KQorICAgICAgICByZXR1cm4gQ1NTVmFsdWVJbnZhbGlkOworICAgIAorICAgIHJldHVybiBzdHJp
bmcuaXM4Qml0KCkgPyBjc3NWYWx1ZUtleXdvcmRJRChzdHJpbmcuY2hhcmFjdGVyczgoKSwgbGVu
Z3RoKSA6IGNzc1ZhbHVlS2V5d29yZElEKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKTsK
K30KKworQ1NTUHJvcGVydHlJRCB1bnJlc29sdmVkQ1NTUHJvcGVydHlJRChTdHJpbmdWaWV3IHN0
cmluZykKK3sKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgCisg
ICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiBDU1NQcm9wZXJ0eUludmFsaWQ7CisgICAg
aWYgKGxlbmd0aCA+IG1heENTU1Byb3BlcnR5TmFtZUxlbmd0aCkKKyAgICAgICAgcmV0dXJuIENT
U1Byb3BlcnR5SW52YWxpZDsKKyAgICAKKyAgICByZXR1cm4gc3RyaW5nLmlzOEJpdCgpID8gY3Nz
UHJvcGVydHlJRChzdHJpbmcuY2hhcmFjdGVyczgoKSwgbGVuZ3RoKSA6IGNzc1Byb3BlcnR5SUQo
c3RyaW5nLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgpOworfQorICAgIAorLy8gRklYTUUtTkVXUEFS
U0VSCisvLyBDb21tZW50IG91dCBwcm9wZXJ0eSBwYXJzaW5nIGZvciBub3cuCisvKgordXNpbmcg
bmFtZXNwYWNlIENTU1Byb3BlcnR5UGFyc2VySGVscGVyczsKKworCitDU1NQcm9wZXJ0eVBhcnNl
cjo6Q1NTUHJvcGVydHlQYXJzZXIoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsCisg
ICAgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgVmVjdG9yPENTU1Byb3BlcnR5LCAy
NTY+KiBwYXJzZWRQcm9wZXJ0aWVzKQorICAgIDogbV9yYW5nZShyYW5nZSkKKyAgICAsIG1fY29u
dGV4dChjb250ZXh0KQorICAgICwgbV9wYXJzZWRQcm9wZXJ0aWVzKHBhcnNlZFByb3BlcnRpZXMp
Cit7CisgICAgbV9yYW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOworfQorCit2b2lkIENTU1Byb3Bl
cnR5UGFyc2VyOjphZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NQcm9wZXJ0
eUlEIGN1cnJlbnRTaG9ydGhhbmQsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgYm9vbCBpbXBvcnRh
bnQsIGJvb2wgaW1wbGljaXQpCit7CisgICAgQVNTRVJUKCFpc1Byb3BlcnR5QWxpYXMocHJvcGVy
dHkpKTsKKworICAgIGludCBzaG9ydGhhbmRJbmRleCA9IDA7CisgICAgYm9vbCBzZXRGcm9tU2hv
cnRoYW5kID0gZmFsc2U7CisKKyAgICBpZiAoY3VycmVudFNob3J0aGFuZCkgeworICAgICAgICBW
ZWN0b3I8U3R5bGVQcm9wZXJ0eVNob3J0aGFuZCwgND4gc2hvcnRoYW5kczsKKyAgICAgICAgZ2V0
TWF0Y2hpbmdTaG9ydGhhbmRzRm9yTG9uZ2hhbmQocHJvcGVydHksICZzaG9ydGhhbmRzKTsKKyAg
ICAgICAgc2V0RnJvbVNob3J0aGFuZCA9IHRydWU7CisgICAgICAgIGlmIChzaG9ydGhhbmRzLnNp
emUoKSA+IDEpCisgICAgICAgICAgICBzaG9ydGhhbmRJbmRleCA9IGluZGV4T2ZTaG9ydGhhbmRG
b3JMb25naGFuZChjdXJyZW50U2hvcnRoYW5kLCBzaG9ydGhhbmRzKTsKKyAgICB9CisKKyAgICBt
X3BhcnNlZFByb3BlcnRpZXMtPmFwcGVuZChDU1NQcm9wZXJ0eShwcm9wZXJ0eSwgdmFsdWUsIGlt
cG9ydGFudCwgc2V0RnJvbVNob3J0aGFuZCwgc2hvcnRoYW5kSW5kZXgsIGltcGxpY2l0KSk7Cit9
CisKK3ZvaWQgQ1NTUHJvcGVydHlQYXJzZXI6OmFkZEV4cGFuZGVkUHJvcGVydHlGb3JWYWx1ZShD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIGJvb2wgaW1wb3J0
YW50KQoreworICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCA9IHNo
b3J0aGFuZEZvclByb3BlcnR5KHByb3BlcnR5KTsKKyAgICB1bnNpZ25lZCBzaG9ydGhhbmRMZW5n
dGggPSBzaG9ydGhhbmQubGVuZ3RoKCk7CisgICAgQVNTRVJUKHNob3J0aGFuZExlbmd0aCk7Cisg
ICAgY29uc3QgQ1NTUHJvcGVydHlJRCogbG9uZ2hhbmRzID0gc2hvcnRoYW5kLnByb3BlcnRpZXMo
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2hvcnRoYW5kTGVuZ3RoOyArK2kpCisg
ICAgICAgIGFkZFByb3BlcnR5KGxvbmdoYW5kc1tpXSwgcHJvcGVydHksIHZhbHVlLCBpbXBvcnRh
bnQpOworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3BlcnR5
SUQgdW5yZXNvbHZlZFByb3BlcnR5LCBib29sIGltcG9ydGFudCwKKyAgICBjb25zdCBDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwKKyAg
ICBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4mIHBhcnNlZFByb3BlcnRpZXMsIFN0eWxlUnVsZTo6
VHlwZSBydWxlVHlwZSkKK3sKKyAgICBpbnQgcGFyc2VkUHJvcGVydGllc1NpemUgPSBwYXJzZWRQ
cm9wZXJ0aWVzLnNpemUoKTsKKworICAgIENTU1Byb3BlcnR5UGFyc2VyIHBhcnNlcihyYW5nZSwg
Y29udGV4dCwgJnBhcnNlZFByb3BlcnRpZXMpOworICAgIENTU1Byb3BlcnR5SUQgcmVzb2x2ZWRQ
cm9wZXJ0eSA9IHJlc29sdmVDU1NQcm9wZXJ0eUlEKHVucmVzb2x2ZWRQcm9wZXJ0eSk7CisgICAg
Ym9vbCBwYXJzZVN1Y2Nlc3M7CisKKyAgICBpZiAocnVsZVR5cGUgPT0gU3R5bGVSdWxlOjpWaWV3
cG9ydCkgeworICAgICAgICBwYXJzZVN1Y2Nlc3MgPSAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
Y3NzVmlld3BvcnRFbmFibGVkKCkgfHwgaXNVQVNoZWV0QmVoYXZpb3IoY29udGV4dC5tb2RlKCkp
KQorICAgICAgICAgICAgJiYgcGFyc2VyLnBhcnNlVmlld3BvcnREZXNjcmlwdG9yKHJlc29sdmVk
UHJvcGVydHksIGltcG9ydGFudCk7CisgICAgfSBlbHNlIGlmIChydWxlVHlwZSA9PSBTdHlsZVJ1
bGU6OkZvbnRGYWNlKSB7CisgICAgICAgIHBhcnNlU3VjY2VzcyA9IHBhcnNlci5wYXJzZUZvbnRG
YWNlRGVzY3JpcHRvcihyZXNvbHZlZFByb3BlcnR5KTsKKyAgICB9IGVsc2UgeworICAgICAgICBw
YXJzZVN1Y2Nlc3MgPSBwYXJzZXIucGFyc2VWYWx1ZVN0YXJ0KHVucmVzb2x2ZWRQcm9wZXJ0eSwg
aW1wb3J0YW50KTsKKyAgICB9CisKKyAgICAvLyBUaGlzIGRvZXNuJ3QgY291bnQgVUEgc3R5bGUg
c2hlZXRzCisgICAgaWYgKHBhcnNlU3VjY2VzcyAmJiBjb250ZXh0LnVzZUNvdW50ZXIoKSkKKyAg
ICAgICAgY29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KGNvbnRleHQubW9kZSgpLCB1bnJlc29s
dmVkUHJvcGVydHkpOworCisgICAgaWYgKCFwYXJzZVN1Y2Nlc3MpCisgICAgICAgIHBhcnNlZFBy
b3BlcnRpZXMuc2hyaW5rKHBhcnNlZFByb3BlcnRpZXNTaXplKTsKKworICAgIHJldHVybiBwYXJz
ZVN1Y2Nlc3M7Cit9CisKK2NvbnN0IENTU1ZhbHVlKiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VT
aW5nbGVWYWx1ZSgKKyAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAg
ICBDU1NQcm9wZXJ0eVBhcnNlciBwYXJzZXIocmFuZ2UsIGNvbnRleHQsIG51bGxwdHIpOworICAg
IGNvbnN0IENTU1ZhbHVlKiB2YWx1ZSA9IHBhcnNlci5wYXJzZVNpbmdsZVZhbHVlKHByb3BlcnR5
KTsKKyAgICBpZiAoIXZhbHVlIHx8ICFwYXJzZXIubV9yYW5nZS5hdEVuZCgpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQ
YXJzZXI6OnBhcnNlVmFsdWVTdGFydChDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0eSwg
Ym9vbCBpbXBvcnRhbnQpCit7CisgICAgaWYgKGNvbnN1bWVDU1NXaWRlS2V5d29yZCh1bnJlc29s
dmVkUHJvcGVydHksIGltcG9ydGFudCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgQ1NT
UGFyc2VyVG9rZW5SYW5nZSBvcmlnaW5hbFJhbmdlID0gbV9yYW5nZTsKKyAgICBDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SWQgPSByZXNvbHZlQ1NTUHJvcGVydHlJRCh1bnJlc29sdmVkUHJvcGVydHkp
OworICAgIGJvb2wgaXNTaG9ydGhhbmQgPSBpc1Nob3J0aGFuZFByb3BlcnR5KHByb3BlcnR5SWQp
OworCisgICAgaWYgKGlzU2hvcnRoYW5kKSB7CisgICAgICAgIC8vIFZhcmlhYmxlIHJlZmVyZW5j
ZXMgd2lsbCBmYWlsIHRvIHBhcnNlIGhlcmUgYW5kIHdpbGwgZmFsbCBvdXQgdG8gdGhlIHZhcmlh
YmxlIHJlZiBwYXJzZXIgYmVsb3cuCisgICAgICAgIGlmIChwYXJzZVNob3J0aGFuZCh1bnJlc29s
dmVkUHJvcGVydHksIGltcG9ydGFudCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
IGVsc2UgeworICAgICAgICBpZiAoY29uc3QgQ1NTVmFsdWUqIHBhcnNlZFZhbHVlID0gcGFyc2VT
aW5nbGVWYWx1ZSh1bnJlc29sdmVkUHJvcGVydHkpKSB7CisgICAgICAgICAgICBpZiAobV9yYW5n
ZS5hdEVuZCgpKSB7CisgICAgICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydHlJZCwgQ1NT
UHJvcGVydHlJbnZhbGlkLCAqcGFyc2VkVmFsdWUsIGltcG9ydGFudCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzVmFyaWFibGVzRW5hYmxlZCgpICYmIENTU1Zh
cmlhYmxlUGFyc2VyOjpjb250YWluc1ZhbGlkVmFyaWFibGVSZWZlcmVuY2VzKG9yaWdpbmFsUmFu
Z2UpKSB7CisgICAgICAgIENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUqIHZhcmlhYmxlID0gQ1NT
VmFyaWFibGVSZWZlcmVuY2VWYWx1ZTo6Y3JlYXRlKENTU1ZhcmlhYmxlRGF0YTo6Y3JlYXRlKG9y
aWdpbmFsUmFuZ2UpKTsKKworICAgICAgICBpZiAoaXNTaG9ydGhhbmQpIHsKKyAgICAgICAgICAg
IGNvbnN0IENTU1BlbmRpbmdTdWJzdGl0dXRpb25WYWx1ZSYgcGVuZGluZ1ZhbHVlID0gKkNTU1Bl
bmRpbmdTdWJzdGl0dXRpb25WYWx1ZTo6Y3JlYXRlKHByb3BlcnR5SWQsIHZhcmlhYmxlKTsKKyAg
ICAgICAgICAgIGFkZEV4cGFuZGVkUHJvcGVydHlGb3JWYWx1ZShwcm9wZXJ0eUlkLCBwZW5kaW5n
VmFsdWUsIGltcG9ydGFudCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhZGRQcm9w
ZXJ0eShwcm9wZXJ0eUlkLCBDU1NQcm9wZXJ0eUludmFsaWQsICp2YXJpYWJsZSwgaW1wb3J0YW50
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisgCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lQ1NTV2lkZUtleXdv
cmQoQ1NTUHJvcGVydHlJRCB1bnJlc29sdmVkUHJvcGVydHksIGJvb2wgaW1wb3J0YW50KQorewor
ICAgIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2VDb3B5ID0gbV9yYW5nZTsKKyAgICBDU1NWYWx1
ZUlEIGlkID0gcmFuZ2VDb3B5LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKKyAg
ICBpZiAoIXJhbmdlQ29weS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBD
U1NWYWx1ZSogdmFsdWUgPSBudWxscHRyOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZUluaXRpYWwp
CisgICAgICAgIHZhbHVlID0gQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGUoKTsKKyAgICBlbHNlIGlm
IChpZCA9PSBDU1NWYWx1ZUluaGVyaXQpCisgICAgICAgIHZhbHVlID0gQ1NTSW5oZXJpdGVkVmFs
dWU6OmNyZWF0ZSgpOworICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlVW5zZXQpCisgICAgICAg
IHZhbHVlID0gQ1NTVW5zZXRWYWx1ZTo6Y3JlYXRlKCk7CisgICAgZWxzZQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5ID0gcmVzb2x2ZUNTU1Byb3Bl
cnR5SUQodW5yZXNvbHZlZFByb3BlcnR5KTsKKyAgICBjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kJiBzaG9ydGhhbmQgPSBzaG9ydGhhbmRGb3JQcm9wZXJ0eShwcm9wZXJ0eSk7CisgICAgaWYg
KCFzaG9ydGhhbmQubGVuZ3RoKCkpIHsKKyAgICAgICAgaWYgKENTU1Byb3BlcnR5TWV0YWRhdGE6
OmlzRGVzY3JpcHRvck9ubHkodW5yZXNvbHZlZFByb3BlcnR5KSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydHksIENTU1Byb3BlcnR5SW52YWxp
ZCwgKnZhbHVlLCBpbXBvcnRhbnQpOworICAgIH0gZWxzZSB7CisgICAgICAgIGFkZEV4cGFuZGVk
UHJvcGVydHlGb3JWYWx1ZShwcm9wZXJ0eSwgKnZhbHVlLCBpbXBvcnRhbnQpOworICAgIH0KKyAg
ICBtX3JhbmdlID0gcmFuZ2VDb3B5OworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgQ1NT
VmFsdWVMaXN0KiBjb25zdW1lVHJhbnNmb3JtT3JpZ2luKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3Mp
Cit7CisgICAgQ1NTVmFsdWUqIHJlc3VsdFggPSBudWxscHRyOworICAgIENTU1ZhbHVlKiByZXN1
bHRZID0gbnVsbHB0cjsKKyAgICBpZiAoY29uc3VtZU9uZU9yVHdvVmFsdWVkUG9zaXRpb24ocmFu
Z2UsIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzLCByZXN1bHRYLCByZXN1bHRZKSkgeworICAgICAg
ICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVk
KCk7CisgICAgICAgIGxpc3QtPmFwcGVuZCgqcmVzdWx0WCk7CisgICAgICAgIGxpc3QtPmFwcGVu
ZCgqcmVzdWx0WSk7CisgICAgICAgIENTU1ZhbHVlKiByZXN1bHRaID0gY29uc3VtZUxlbmd0aChy
YW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGlmICghcmVzdWx0
WikKKyAgICAgICAgICAgIHJlc3VsdFogPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAsIENT
U1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGl4ZWxzKTsKKyAgICAgICAgbGlzdC0+YXBwZW5k
KCpyZXN1bHRaKTsKKyAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgfQorICAgIHJldHVybiBudWxs
cHRyOworfQorCisvLyBNZXRob2RzIGZvciBjb25zdW1pbmcgbm9uLXNob3J0aGFuZCBwcm9wZXJ0
aWVzIHN0YXJ0cyBoZXJlLgorc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lV2lsbENoYW5nZShDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0g
Q1NTVmFsdWVBdXRvKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAg
IENTU1ZhbHVlTGlzdCogdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRl
ZCgpOworICAgIC8vIEV2ZXJ5IGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGlkZW50aWZpZXJzIGlz
IGEgdmFsaWQgd2lsbC1jaGFuZ2UgdmFsdWUsCisgICAgLy8gdW5sZXNzIHRoZSBsaXN0IGluY2x1
ZGVzIGFuIGV4cGxpY2l0bHkgZGlzYWxsb3dlZCBpZGVudGlmaWVyLgorICAgIHdoaWxlICh0cnVl
KSB7CisgICAgICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgpICE9IElkZW50VG9rZW4pCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgQ1NTUHJvcGVydHlJRCB1bnJlc29sdmVk
UHJvcGVydHkgPSB1bnJlc29sdmVkQ1NTUHJvcGVydHlJRChyYW5nZS5wZWVrKCkudmFsdWUoKSk7
CisgICAgICAgIGlmICh1bnJlc29sdmVkUHJvcGVydHkpIHsKKyAgICAgICAgICAgIEFTU0VSVChD
U1NQcm9wZXJ0eU1ldGFkYXRhOjppc0VuYWJsZWRQcm9wZXJ0eSh1bnJlc29sdmVkUHJvcGVydHkp
KTsKKyAgICAgICAgICAgIC8vIE5vdyAiYWxsIiBpcyB1c2VkIGJ5IGJvdGggQ1NTVmFsdWUgYW5k
IENTU1Byb3BlcnR5VmFsdWUuCisgICAgICAgICAgICAvLyBOZWVkIHRvIHJldHVybiBudWxscHRy
IHdoZW4gY3VycmVudFZhbHVlIGlzIENTU1Byb3BlcnR5QWxsLgorICAgICAgICAgICAgaWYgKHVu
cmVzb2x2ZWRQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdpbGxDaGFuZ2UgfHwgdW5yZXNvbHZlZFBy
b3BlcnR5ID09IENTU1Byb3BlcnR5QWxsKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoKkNTU0N1c3RvbUlkZW50VmFsdWU6OmNyZWF0
ZSh1bnJlc29sdmVkUHJvcGVydHkpKTsKKyAgICAgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRp
bmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2ggKHJh
bmdlLnBlZWsoKS5pZCgpKSB7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTm9uZToKKyAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVBbGw6CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQXV0bzoK
KyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVEZWZhdWx0OgorICAgICAgICAgICAgY2FzZSBDU1NW
YWx1ZUluaXRpYWw6CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlSW5oZXJpdDoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVDb250ZW50
czoKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTY3JvbGxQb3NpdGlvbjoKKyAgICAgICAgICAg
ICAgICB2YWx1ZXMtPmFwcGVuZCgqY29uc3VtZUlkZW50KHJhbmdlKSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJhbmdlLmNv
bnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAocmFuZ2UuYXRFbmQoKSkKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3Bh
Y2UocmFuZ2UpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0
dXJuIHZhbHVlczsKK30KKworc3RhdGljIENTU0ZvbnRGZWF0dXJlVmFsdWUqIGNvbnN1bWVGb250
RmVhdHVyZVRhZyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICAvLyBGZWF0dXJl
IHRhZyBuYW1lIGNvbnNpc3RzIG9mIDQtbGV0dGVyIGNoYXJhY3RlcnMuCisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHRhZ05hbWVMZW5ndGggPSA0OworCisgICAgY29uc3QgQ1NTUGFyc2VyVG9r
ZW4mIHRva2VuID0gcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAvLyBG
ZWF0dXJlIHRhZyBuYW1lIGNvbWVzIGZpcnN0CisgICAgaWYgKHRva2VuLnR5cGUoKSAhPSBTdHJp
bmdUb2tlbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKHRva2VuLnZhbHVlKCku
bGVuZ3RoKCkgIT0gdGFnTmFtZUxlbmd0aCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
QXRvbWljU3RyaW5nIHRhZyA9IHRva2VuLnZhbHVlKCkudG9BdG9taWNTdHJpbmcoKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGFnTmFtZUxlbmd0aDsgKytpKSB7CisgICAgICAgIC8v
IExpbWl0cyB0aGUgcmFuZ2Ugb2YgY2hhcmFjdGVycyB0byAweDIwLTB4N0UsIGZvbGxvd2luZyB0
aGUgdGFnIG5hbWUgcnVsZXMgZGVmaWVuZCBpbiB0aGUgT3BlblR5cGUgc3BlY2lmaWNhdGlvbi4K
KyAgICAgICAgVUNoYXIgY2hhcmFjdGVyID0gdGFnW2ldOworICAgICAgICBpZiAoY2hhcmFjdGVy
IDwgMHgyMCB8fCBjaGFyYWN0ZXIgPiAweDdFKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCisgICAgaW50IHRhZ1ZhbHVlID0gMTsKKyAgICAvLyBGZWF0dXJlIHRhZyB2YWx1
ZXMgY291bGQgZm9sbG93OiA8aW50ZWdlcj4gfCBvbiB8IG9mZgorICAgIGlmIChyYW5nZS5wZWVr
KCkudHlwZSgpID09IE51bWJlclRva2VuICYmIHJhbmdlLnBlZWsoKS5udW1lcmljVmFsdWVUeXBl
KCkgPT0gSW50ZWdlclZhbHVlVHlwZSAmJiByYW5nZS5wZWVrKCkubnVtZXJpY1ZhbHVlKCkgPj0g
MCkgeworICAgICAgICB0YWdWYWx1ZSA9IGNsYW1wVG88aW50PihyYW5nZS5jb25zdW1lSW5jbHVk
aW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgpKTsKKyAgICAgICAgaWYgKHRhZ1ZhbHVlIDwg
MCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0gZWxzZSBpZiAocmFuZ2UucGVl
aygpLmlkKCkgPT0gQ1NTVmFsdWVPbiB8fCByYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU9m
ZikgeworICAgICAgICB0YWdWYWx1ZSA9IHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNl
KCkuaWQoKSA9PSBDU1NWYWx1ZU9uOworICAgIH0KKyAgICByZXR1cm4gQ1NTRm9udEZlYXR1cmVW
YWx1ZTo6Y3JlYXRlKHRhZywgdGFnVmFsdWUpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1
bWVGb250RmVhdHVyZVNldHRpbmdzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAg
IGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKKyAgICAgICAgcmV0dXJu
IGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgQ1NTVmFsdWVMaXN0KiBzZXR0aW5ncyA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICBkbyB7CisgICAgICAgIENTU0Zv
bnRGZWF0dXJlVmFsdWUqIGZvbnRGZWF0dXJlVmFsdWUgPSBjb25zdW1lRm9udEZlYXR1cmVUYWco
cmFuZ2UpOworICAgICAgICBpZiAoIWZvbnRGZWF0dXJlVmFsdWUpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgc2V0dGluZ3MtPmFwcGVuZCgqZm9udEZlYXR1cmVWYWx1ZSk7
CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpOwor
ICAgIHJldHVybiBzZXR0aW5nczsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lUGFnZShD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkg
PT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAg
ICByZXR1cm4gY29uc3VtZUN1c3RvbUlkZW50KHJhbmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVl
KiBjb25zdW1lUXVvdGVzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChy
YW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1l
SWRlbnQocmFuZ2UpOworICAgIENTU1ZhbHVlTGlzdCogdmFsdWVzID0gQ1NTVmFsdWVMaXN0Ojpj
cmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIHdoaWxlICghcmFuZ2UuYXRFbmQoKSkgeworICAg
ICAgICBDU1NTdHJpbmdWYWx1ZSogcGFyc2VkVmFsdWUgPSBjb25zdW1lU3RyaW5nKHJhbmdlKTsK
KyAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICB2YWx1ZXMtPmFwcGVuZCgqcGFyc2VkVmFsdWUpOworICAgIH0KKyAgICBpZiAodmFs
dWVzLT5sZW5ndGgoKSAmJiB2YWx1ZXMtPmxlbmd0aCgpICUgMiA9PSAwKQorICAgICAgICByZXR1
cm4gdmFsdWVzOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNv
bnN1bWVXZWJraXRIaWdobGlnaHQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAg
aWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVTdHJpbmcocmFuZ2UpOworfQor
CitjbGFzcyBGb250VmFyaWFudExpZ2F0dXJlc1BhcnNlciB7CisgICAgU1RBQ0tfQUxMT0NBVEVE
KCk7CisKK3B1YmxpYzoKKyAgICBGb250VmFyaWFudExpZ2F0dXJlc1BhcnNlcigpCisgICAgICAg
IDogbV9zYXdDb21tb25MaWdhdHVyZXNWYWx1ZShmYWxzZSkKKyAgICAgICAgLCBtX3Nhd0Rpc2Ny
ZXRpb25hcnlMaWdhdHVyZXNWYWx1ZShmYWxzZSkKKyAgICAgICAgLCBtX3Nhd0hpc3RvcmljYWxM
aWdhdHVyZXNWYWx1ZShmYWxzZSkKKyAgICAgICAgLCBtX3Nhd0NvbnRleHR1YWxMaWdhdHVyZXNW
YWx1ZShmYWxzZSkKKyAgICAgICAgLCBtX3Jlc3VsdChDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNl
U2VwYXJhdGVkKCkpCisgICAgeworICAgIH0KKworICAgIGVudW0gY2xhc3MgUGFyc2VSZXN1bHQg
eworICAgICAgICBDb25zdW1lZFZhbHVlLAorICAgICAgICBEaXNhbGxvd2VkVmFsdWUsCisgICAg
ICAgIFVua25vd25WYWx1ZQorICAgIH07CisKKyAgICBQYXJzZVJlc3VsdCBjb25zdW1lTGlnYXR1
cmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCisgICAgeworICAgICAgICBDU1NWYWx1ZUlE
IHZhbHVlSUQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICAgICAgc3dpdGNoICh2YWx1ZUlEKSB7
CisgICAgICAgIGNhc2UgQ1NTVmFsdWVOb0NvbW1vbkxpZ2F0dXJlczoKKyAgICAgICAgY2FzZSBD
U1NWYWx1ZUNvbW1vbkxpZ2F0dXJlczoKKyAgICAgICAgICAgIGlmIChtX3Nhd0NvbW1vbkxpZ2F0
dXJlc1ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBQYXJzZVJlc3VsdDo6RGlzYWxsb3dl
ZFZhbHVlOworICAgICAgICAgICAgbV9zYXdDb21tb25MaWdhdHVyZXNWYWx1ZSA9IHRydWU7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZU5vRGlzY3JldGlvbmFyeUxp
Z2F0dXJlczoKKyAgICAgICAgY2FzZSBDU1NWYWx1ZURpc2NyZXRpb25hcnlMaWdhdHVyZXM6Cisg
ICAgICAgICAgICBpZiAobV9zYXdEaXNjcmV0aW9uYXJ5TGlnYXR1cmVzVmFsdWUpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0OjpEaXNhbGxvd2VkVmFsdWU7CisgICAgICAgICAg
ICBtX3Nhd0Rpc2NyZXRpb25hcnlMaWdhdHVyZXNWYWx1ZSA9IHRydWU7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZU5vSGlzdG9yaWNhbExpZ2F0dXJlczoKKyAgICAg
ICAgY2FzZSBDU1NWYWx1ZUhpc3RvcmljYWxMaWdhdHVyZXM6CisgICAgICAgICAgICBpZiAobV9z
YXdIaXN0b3JpY2FsTGlnYXR1cmVzVmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFBhcnNl
UmVzdWx0OjpEaXNhbGxvd2VkVmFsdWU7CisgICAgICAgICAgICBtX3Nhd0hpc3RvcmljYWxMaWdh
dHVyZXNWYWx1ZSA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NW
YWx1ZU5vQ29udGV4dHVhbDoKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUNvbnRleHR1YWw6CisgICAg
ICAgICAgICBpZiAobV9zYXdDb250ZXh0dWFsTGlnYXR1cmVzVmFsdWUpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIFBhcnNlUmVzdWx0OjpEaXNhbGxvd2VkVmFsdWU7CisgICAgICAgICAgICBtX3Nh
d0NvbnRleHR1YWxMaWdhdHVyZXNWYWx1ZSA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBQYXJzZVJlc3VsdDo6VW5rbm93blZh
bHVlOworICAgICAgICB9CisgICAgICAgIG1fcmVzdWx0LT5hcHBlbmQoKmNvbnN1bWVJZGVudChy
YW5nZSkpOworICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHQ6OkNvbnN1bWVkVmFsdWU7CisgICAg
fQorCisgICAgQ1NTVmFsdWUqIGZpbmFsaXplVmFsdWUoKQorICAgIHsKKyAgICAgICAgaWYgKCFt
X3Jlc3VsdC0+bGVuZ3RoKCkpCisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpOworICAgICAgICByZXR1cm4gbV9yZXN1
bHQucmVsZWFzZSgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIG1fc2F3Q29tbW9uTGln
YXR1cmVzVmFsdWU7CisgICAgYm9vbCBtX3Nhd0Rpc2NyZXRpb25hcnlMaWdhdHVyZXNWYWx1ZTsK
KyAgICBib29sIG1fc2F3SGlzdG9yaWNhbExpZ2F0dXJlc1ZhbHVlOworICAgIGJvb2wgbV9zYXdD
b250ZXh0dWFsTGlnYXR1cmVzVmFsdWU7CisgICAgTWVtYmVyPENTU1ZhbHVlTGlzdD4gbV9yZXN1
bHQ7Cit9OworCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVGb250VmFyaWFudExpZ2F0dXJlcyhD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkg
PT0gQ1NTVmFsdWVOb3JtYWwgfHwgcmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQor
ICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIEZvbnRWYXJpYW50TGln
YXR1cmVzUGFyc2VyIGxpZ2F0dXJlc1BhcnNlcjsKKyAgICBkbyB7CisgICAgICAgIGlmIChsaWdh
dHVyZXNQYXJzZXIuY29uc3VtZUxpZ2F0dXJlKHJhbmdlKSAhPQorICAgICAgICAgICAgRm9udFZh
cmlhbnRMaWdhdHVyZXNQYXJzZXI6OlBhcnNlUmVzdWx0OjpDb25zdW1lZFZhbHVlKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpOworCisg
ICAgcmV0dXJuIGxpZ2F0dXJlc1BhcnNlci5maW5hbGl6ZVZhbHVlKCk7Cit9CisKK3N0YXRpYyBD
U1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUZvbnRWYXJpYW50Q2FwcyhDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlTm9ybWFsLCBD
U1NWYWx1ZVNtYWxsQ2FwcywgQ1NTVmFsdWVBbGxTbWFsbENhcHMsCisgICAgICAgIENTU1ZhbHVl
UGV0aXRlQ2FwcywgQ1NTVmFsdWVBbGxQZXRpdGVDYXBzLAorICAgICAgICBDU1NWYWx1ZVVuaWNh
c2UsIENTU1ZhbHVlVGl0bGluZ0NhcHM+KHJhbmdlKTsKK30KKworY2xhc3MgRm9udFZhcmlhbnRO
dW1lcmljUGFyc2VyIHsKKyAgICBTVEFDS19BTExPQ0FURUQoKTsKKworcHVibGljOgorICAgIEZv
bnRWYXJpYW50TnVtZXJpY1BhcnNlcigpCisgICAgICAgIDogbV9zYXdOdW1lcmljRmlndXJlVmFs
dWUoZmFsc2UpCisgICAgICAgICwgbV9zYXdOdW1lcmljU3BhY2luZ1ZhbHVlKGZhbHNlKQorICAg
ICAgICAsIG1fc2F3TnVtZXJpY0ZyYWN0aW9uVmFsdWUoZmFsc2UpCisgICAgICAgICwgbV9zYXdP
cmRpbmFsVmFsdWUoZmFsc2UpCisgICAgICAgICwgbV9zYXdTbGFzaGVkWmVyb1ZhbHVlKGZhbHNl
KQorICAgICAgICAsIG1fcmVzdWx0KENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQo
KSkKKyAgICB7CisgICAgfQorCisgICAgZW51bSBjbGFzcyBQYXJzZVJlc3VsdCB7CisgICAgICAg
IENvbnN1bWVkVmFsdWUsCisgICAgICAgIERpc2FsbG93ZWRWYWx1ZSwKKyAgICAgICAgVW5rbm93
blZhbHVlCisgICAgfTsKKworICAgIFBhcnNlUmVzdWx0IGNvbnN1bWVOdW1lcmljKENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlKQorICAgIHsKKyAgICAgICAgQ1NTVmFsdWVJRCB2YWx1ZUlEID0g
cmFuZ2UucGVlaygpLmlkKCk7CisgICAgICAgIHN3aXRjaCAodmFsdWVJRCkgeworICAgICAgICBj
YXNlIENTU1ZhbHVlTGluaW5nTnVtczoKKyAgICAgICAgY2FzZSBDU1NWYWx1ZU9sZHN0eWxlTnVt
czoKKyAgICAgICAgICAgIGlmIChtX3Nhd051bWVyaWNGaWd1cmVWYWx1ZSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gUGFyc2VSZXN1bHQ6OkRpc2FsbG93ZWRWYWx1ZTsKKyAgICAgICAgICAgIG1f
c2F3TnVtZXJpY0ZpZ3VyZVZhbHVlID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIENTU1ZhbHVlUHJvcG9ydGlvbmFsTnVtczoKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVRh
YnVsYXJOdW1zOgorICAgICAgICAgICAgaWYgKG1fc2F3TnVtZXJpY1NwYWNpbmdWYWx1ZSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHQ6OkRpc2FsbG93ZWRWYWx1ZTsKKyAgICAg
ICAgICAgIG1fc2F3TnVtZXJpY1NwYWNpbmdWYWx1ZSA9IHRydWU7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZURpYWdvbmFsRnJhY3Rpb25zOgorICAgICAgICBjYXNl
IENTU1ZhbHVlU3RhY2tlZEZyYWN0aW9uczoKKyAgICAgICAgICAgIGlmIChtX3Nhd051bWVyaWNG
cmFjdGlvblZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBQYXJzZVJlc3VsdDo6RGlzYWxs
b3dlZFZhbHVlOworICAgICAgICAgICAgbV9zYXdOdW1lcmljRnJhY3Rpb25WYWx1ZSA9IHRydWU7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZU9yZGluYWw6CisgICAg
ICAgICAgICBpZiAobV9zYXdPcmRpbmFsVmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFBh
cnNlUmVzdWx0OjpEaXNhbGxvd2VkVmFsdWU7CisgICAgICAgICAgICBtX3Nhd09yZGluYWxWYWx1
ZSA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVNsYXNo
ZWRaZXJvOgorICAgICAgICAgICAgaWYgKG1fc2F3U2xhc2hlZFplcm9WYWx1ZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHQ6OkRpc2FsbG93ZWRWYWx1ZTsKKyAgICAgICAgICAg
IG1fc2F3U2xhc2hlZFplcm9WYWx1ZSA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBQYXJzZVJlc3VsdDo6VW5rbm93blZhbHVl
OworICAgICAgICB9CisgICAgICAgIG1fcmVzdWx0LT5hcHBlbmQoKmNvbnN1bWVJZGVudChyYW5n
ZSkpOworICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHQ6OkNvbnN1bWVkVmFsdWU7CisgICAgfQor
CisgICAgQ1NTVmFsdWUqIGZpbmFsaXplVmFsdWUoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3Jl
c3VsdC0+bGVuZ3RoKCkpCisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpOworICAgICAgICByZXR1cm4gbV9yZXN1bHQu
cmVsZWFzZSgpOworICAgIH0KKworCitwcml2YXRlOgorICAgIGJvb2wgbV9zYXdOdW1lcmljRmln
dXJlVmFsdWU7CisgICAgYm9vbCBtX3Nhd051bWVyaWNTcGFjaW5nVmFsdWU7CisgICAgYm9vbCBt
X3Nhd051bWVyaWNGcmFjdGlvblZhbHVlOworICAgIGJvb2wgbV9zYXdPcmRpbmFsVmFsdWU7Cisg
ICAgYm9vbCBtX3Nhd1NsYXNoZWRaZXJvVmFsdWU7CisgICAgTWVtYmVyPENTU1ZhbHVlTGlzdD4g
bV9yZXN1bHQ7Cit9OworCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVGb250VmFyaWFudE51bWVy
aWMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5p
ZCgpID09IENTU1ZhbHVlTm9ybWFsKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdl
KTsKKworICAgIEZvbnRWYXJpYW50TnVtZXJpY1BhcnNlciBudW1lcmljUGFyc2VyOworICAgIGRv
IHsKKyAgICAgICAgaWYgKG51bWVyaWNQYXJzZXIuY29uc3VtZU51bWVyaWMocmFuZ2UpICE9Cisg
ICAgICAgICAgICBGb250VmFyaWFudE51bWVyaWNQYXJzZXI6OlBhcnNlUmVzdWx0OjpDb25zdW1l
ZFZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfSB3aGlsZSAoIXJhbmdl
LmF0RW5kKCkpOworCisgICAgcmV0dXJuIG51bWVyaWNQYXJzZXIuZmluYWxpemVWYWx1ZSgpOwor
fQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVGb250VmFyaWFudENTUzIxKENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBjb25zdW1lSWRlbnQ8Q1NT
VmFsdWVOb3JtYWwsIENTU1ZhbHVlU21hbGxDYXBzPihyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NW
YWx1ZSogY29uc3VtZUZvbnRWYXJpYW50TGlzdChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkK
K3sKKyAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFT
ZXBhcmF0ZWQoKTsKKyAgICBkbyB7CisgICAgICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBD
U1NWYWx1ZUFsbCkgeworICAgICAgICAgICAgLy8gRklYTUU6IENTU1Byb3BlcnR5UGFyc2VyOjpw
YXJzZUZvbnRWYXJpYW50KCkgaW1wbGVtZW50cworICAgICAgICAgICAgLy8gdGhlIG9sZCBjc3Mz
IGRyYWZ0OgorICAgICAgICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMi9XRC1jc3Mz
LXdlYmZvbnRzLTIwMDIwODAyLyNmb250LXZhcmlhbnQKKyAgICAgICAgICAgIC8vICdhbGwnIGlz
IG9ubHkgYWxsb3dlZCBpbiBAZm9udC1mYWNlIGFuZCB3aXRoIG5vIG90aGVyIHZhbHVlcy4KKyAg
ICAgICAgICAgIGlmICh2YWx1ZXMtPmxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgICAg
IH0KKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZvbnRWYXJpYW50ID0gY29uc3VtZUZvbnRW
YXJpYW50Q1NTMjEocmFuZ2UpOworICAgICAgICBpZiAoZm9udFZhcmlhbnQpCisgICAgICAgICAg
ICB2YWx1ZXMtPmFwcGVuZCgqZm9udFZhcmlhbnQpOworICAgIH0gd2hpbGUgKGNvbnN1bWVDb21t
YUluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKTsKKworICAgIGlmICh2YWx1ZXMtPmxlbmd0aCgp
KQorICAgICAgICByZXR1cm4gdmFsdWVzOworCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0
YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUZvbnRXZWlnaHQoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2Uu
cGVlaygpOworICAgIGlmICh0b2tlbi5pZCgpID49IENTU1ZhbHVlTm9ybWFsICYmIHRva2VuLmlk
KCkgPD0gQ1NTVmFsdWVMaWdodGVyKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdl
KTsKKyAgICBpZiAodG9rZW4udHlwZSgpICE9IE51bWJlclRva2VuIHx8IHRva2VuLm51bWVyaWNW
YWx1ZVR5cGUoKSAhPSBJbnRlZ2VyVmFsdWVUeXBlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBpbnQgd2VpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50Pih0b2tlbi5udW1lcmljVmFsdWUoKSk7
CisgICAgaWYgKCh3ZWlnaHQgJSAxMDApIHx8IHdlaWdodCA8IDEwMCB8fCB3ZWlnaHQgPiA5MDAp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0
ZXNwYWNlKCk7CisgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVy
KHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KENTU1ZhbHVlMTAwICsgd2VpZ2h0IC8gMTAwIC0gMSkp
OworfQorCitzdGF0aWMgU3RyaW5nIGNvbmNhdGVuYXRlRmFtaWx5TmFtZShDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSkKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYm9vbCBh
ZGRlZFNwYWNlID0gZmFsc2U7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIGZpcnN0VG9rZW4g
PSByYW5nZS5wZWVrKCk7CisgICAgd2hpbGUgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gSWRlbnRU
b2tlbikgeworICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICAgICAgYWRkZWRTcGFjZSA9IHRydWU7CisgICAg
ICAgIH0KKyAgICAgICAgYnVpbGRlci5hcHBlbmQocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRl
c3BhY2UoKS52YWx1ZSgpKTsKKyAgICB9CisgICAgaWYgKCFhZGRlZFNwYWNlICYmIGlzQ1NTV2lk
ZUtleXdvcmQoZmlyc3RUb2tlbi5pZCgpKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3Vt
ZUZhbWlseU5hbWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdl
LnBlZWsoKS50eXBlKCkgPT0gU3RyaW5nVG9rZW4pCisgICAgICAgIHJldHVybiBDU1NGb250RmFt
aWx5VmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVl
KCkudG9TdHJpbmcoKSk7CisgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgIT0gSWRlbnRUb2tl
bikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgU3RyaW5nIGZhbWlseU5hbWUgPSBjb25j
YXRlbmF0ZUZhbWlseU5hbWUocmFuZ2UpOworICAgIGlmIChmYW1pbHlOYW1lLmlzTnVsbCgpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gQ1NTRm9udEZhbWlseVZhbHVlOjpj
cmVhdGUoZmFtaWx5TmFtZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUdlbmVyaWNG
YW1pbHkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgcmV0dXJuIGNvbnN1bWVJ
ZGVudFJhbmdlKHJhbmdlLCBDU1NWYWx1ZVNlcmlmLCBDU1NWYWx1ZVdlYmtpdEJvZHkpOworfQor
CitzdGF0aWMgQ1NTVmFsdWVMaXN0KiBjb25zdW1lRm9udEZhbWlseShDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSkKK3sKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNy
ZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgZG8geworICAgICAgICBDU1NWYWx1ZSogcGFyc2Vk
VmFsdWUgPSBjb25zdW1lR2VuZXJpY0ZhbWlseShyYW5nZSk7CisgICAgICAgIGlmIChwYXJzZWRW
YWx1ZSkgeworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVGYW1pbHlOYW1lKHJh
bmdlKTsKKyAgICAgICAgICAgIGlmIChwYXJzZWRWYWx1ZSkgeworICAgICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZCgqcGFyc2VkVmFsdWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0g
d2hpbGUgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKTsKKyAgICByZXR1
cm4gbGlzdDsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lU3BhY2luZyhDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlm
IChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVJZGVudChyYW5nZSk7CisgICAgLy8gVE9ETyh0aW1sb2gpOiBhbGxvdyA8cGVyY2VudGFn
ZT5zIGluIHdvcmQtc3BhY2luZy4KKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aChyYW5nZSwgY3Nz
UGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOworfQorCitz
dGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVUYWJTaXplKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHBhcnNlZFZhbHVlID0gY29uc3VtZUludGVnZXIocmFuZ2UsIDApOworICAgIGlmIChwYXJzZWRW
YWx1ZSkKKyAgICAgICAgcmV0dXJuIHBhcnNlZFZhbHVlOworICAgIHJldHVybiBjb25zdW1lTGVu
Z3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworfQorCitz
dGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVUZXh0U2l6ZUFkanVzdChDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlmIChyYW5nZS5w
ZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQo
cmFuZ2UpOworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAg
ICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lUGVyY2Vu
dChyYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lRm9udFNpemUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUg
Y3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcyA9IFVuaXRsZXNzUXVpcms6OkZv
cmJpZCkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPj0gQ1NTVmFsdWVYeFNtYWxsICYm
IHJhbmdlLnBlZWsoKS5pZCgpIDw9IENTU1ZhbHVlTGFyZ2VyKQorICAgICAgICByZXR1cm4gY29u
c3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5n
ZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlLCB1bml0bGVzcyk7Cit9CisK
K3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUxpbmVIZWlnaHQoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAo
cmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb3JtYWwpCisgICAgICAgIHJldHVybiBjb25z
dW1lSWRlbnQocmFuZ2UpOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGxpbmVIZWlnaHQgPSBj
b25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgIGlmIChsaW5l
SGVpZ2h0KQorICAgICAgICByZXR1cm4gbGluZUhlaWdodDsKKyAgICByZXR1cm4gY29uc3VtZUxl
bmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZl
KTsKK30KKworc3RhdGljIENTU1ZhbHVlTGlzdCogY29uc3VtZVJvdGF0aW9uKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlKQoreworICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpj
c3NJbmRlcGVuZGVudFRyYW5zZm9ybVByb3BlcnRpZXNFbmFibGVkKCkpOworICAgIENTU1ZhbHVl
TGlzdCogbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKworICAg
IENTU1ZhbHVlKiByb3RhdGlvbiA9IGNvbnN1bWVBbmdsZShyYW5nZSk7CisgICAgaWYgKCFyb3Rh
dGlvbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgbGlzdC0+YXBwZW5kKCpyb3RhdGlv
bik7CisKKyAgICBpZiAocmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGxpc3Q7CisKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMzsgaSsrKSB7IC8vIDMgZGltZW5zaW9ucyBvZiBy
b3RhdGlvbgorICAgICAgICBDU1NWYWx1ZSogZGltZW5zaW9uID0gY29uc3VtZU51bWJlcihyYW5n
ZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGlmICghZGltZW5zaW9uKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIGxpc3QtPmFwcGVuZCgqZGltZW5zaW9uKTsKKyAgICB9
CisKKyAgICByZXR1cm4gbGlzdDsKK30KKworc3RhdGljIENTU1ZhbHVlTGlzdCogY29uc3VtZVNj
YWxlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIEFTU0VSVChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpjc3NJbmRlcGVuZGVudFRyYW5zZm9ybVByb3BlcnRpZXNFbmFibGVkKCkp
OworCisgICAgQ1NTVmFsdWUqIHNjYWxlID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5n
ZUFsbCk7CisgICAgaWYgKCFzY2FsZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NT
VmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwor
ICAgIGxpc3QtPmFwcGVuZCgqc2NhbGUpOworICAgIHNjYWxlID0gY29uc3VtZU51bWJlcihyYW5n
ZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKHNjYWxlKSB7CisgICAgICAgIGxpc3QtPmFwcGVu
ZCgqc2NhbGUpOworICAgICAgICBzY2FsZSA9IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFu
Z2VBbGwpOworICAgICAgICBpZiAoc2NhbGUpCisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoKnNj
YWxlKTsKKyAgICB9CisKKyAgICByZXR1cm4gbGlzdDsKK30KKworc3RhdGljIENTU1ZhbHVlTGlz
dCogY29uc3VtZVRyYW5zbGF0ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2Vy
TW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojpjc3NJbmRlcGVuZGVudFRyYW5zZm9ybVByb3BlcnRpZXNFbmFibGVkKCkpOworICAgIENTU1Zh
bHVlKiB0cmFuc2xhdGUgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJN
b2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBpZiAoIXRyYW5zbGF0ZSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVT
cGFjZVNlcGFyYXRlZCgpOworICAgIGxpc3QtPmFwcGVuZCgqdHJhbnNsYXRlKTsKKyAgICB0cmFu
c2xhdGUgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1
ZVJhbmdlQWxsKTsKKyAgICBpZiAodHJhbnNsYXRlKSB7CisgICAgICAgIGxpc3QtPmFwcGVuZCgq
dHJhbnNsYXRlKTsKKyAgICAgICAgdHJhbnNsYXRlID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY3Nz
UGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGlmICh0cmFuc2xhdGUpCisgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoKnRyYW5zbGF0ZSk7CisgICAgfQorCisgICAgcmV0dXJuIGxp
c3Q7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUNvdW50ZXIoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIGludCBkZWZhdWx0VmFsdWUpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5p
ZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7
CisKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2Vw
YXJhdGVkKCk7CisgICAgZG8geworICAgICAgICBDU1NDdXN0b21JZGVudFZhbHVlKiBjb3VudGVy
TmFtZSA9IGNvbnN1bWVDdXN0b21JZGVudChyYW5nZSk7CisgICAgICAgIGlmICghY291bnRlck5h
bWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaW50IGkgPSBkZWZhdWx0
VmFsdWU7CisgICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZSogY291bnRlclZhbHVlID0gY29u
c3VtZUludGVnZXIocmFuZ2UpKQorICAgICAgICAgICAgaSA9IGNsYW1wVG88aW50Pihjb3VudGVy
VmFsdWUtPmdldERvdWJsZVZhbHVlKCkpOworICAgICAgICBsaXN0LT5hcHBlbmQoKkNTU1ZhbHVl
UGFpcjo6Y3JlYXRlKGNvdW50ZXJOYW1lLAorICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShpLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkludGVnZXIpLAorICAgICAg
ICAgICAgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVzKSk7CisgICAgfSB3aGlsZSAo
IXJhbmdlLmF0RW5kKCkpOworICAgIHJldHVybiBsaXN0OworfQorCitzdGF0aWMgQ1NTVmFsdWUq
IGNvbnN1bWVQYWdlU2l6ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1
cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlQTMsIENTU1ZhbHVlQTQsIENTU1ZhbHVlQTUsIENTU1Zh
bHVlQjQsIENTU1ZhbHVlQjUsIENTU1ZhbHVlTGVkZ2VyLCBDU1NWYWx1ZUxlZ2FsLCBDU1NWYWx1
ZUxldHRlcj4ocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWVMaXN0KiBjb25zdW1lU2l6ZShD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQor
eworICAgIENTU1ZhbHVlTGlzdCogcmVzdWx0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNl
cGFyYXRlZCgpOworCisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykg
eworICAgICAgICByZXN1bHQtPmFwcGVuZCgqY29uc3VtZUlkZW50KHJhbmdlKSk7CisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgaWYgKENTU1ZhbHVlKiB3aWR0aCA9IGNvbnN1
bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSkpIHsK
KyAgICAgICAgQ1NTVmFsdWUqIGhlaWdodCA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNl
ck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgIHJlc3VsdC0+YXBwZW5kKCp3
aWR0aCk7CisgICAgICAgIGlmIChoZWlnaHQpCisgICAgICAgICAgICByZXN1bHQtPmFwcGVuZCgq
aGVpZ2h0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBDU1NWYWx1ZSog
cGFnZVNpemUgPSBjb25zdW1lUGFnZVNpemUocmFuZ2UpOworICAgIENTU1ZhbHVlKiBvcmllbnRh
dGlvbiA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZVBvcnRyYWl0LCBDU1NWYWx1ZUxhbmRzY2FwZT4o
cmFuZ2UpOworICAgIGlmICghcGFnZVNpemUpCisgICAgICAgIHBhZ2VTaXplID0gY29uc3VtZVBh
Z2VTaXplKHJhbmdlKTsKKworICAgIGlmICghb3JpZW50YXRpb24gJiYgIXBhZ2VTaXplKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAocGFnZVNpemUpCisgICAgICAgIHJlc3VsdC0+
YXBwZW5kKCpwYWdlU2l6ZSk7CisgICAgaWYgKG9yaWVudGF0aW9uKQorICAgICAgICByZXN1bHQt
PmFwcGVuZCgqb3JpZW50YXRpb24pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBD
U1NWYWx1ZSogY29uc3VtZVNuYXBIZWlnaHQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogdW5p
dCA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdh
dGl2ZSk7CisgICAgaWYgKCF1bml0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBDU1NW
YWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Cisg
ICAgbGlzdC0+YXBwZW5kKCp1bml0KTsKKworICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZSogcG9z
aXRpb24gPSBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyKHJhbmdlKSkgeworICAgICAgICBpZiAocG9z
aXRpb24tPmdldEludFZhbHVlKCkgPiAxMDApCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgbGlzdC0+YXBwZW5kKCpwb3NpdGlvbik7CisgICAgfQorCisgICAgcmV0dXJuIGxp
c3Q7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVRleHRJbmRlbnQoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICAvLyBb
IDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IF0gJiYgaGFuZ2luZz8gJiYgZWFjaC1saW5lPworICAg
IC8vIEtleXdvcmRzIG9ubHkgYWxsb3dlZCB3aGVuIGNzczNUZXh0IGlzIGVuYWJsZWQuCisgICAg
Q1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgp
OworCisgICAgYm9vbCBoYXNMZW5ndGhPclBlcmNlbnRhZ2UgPSBmYWxzZTsKKyAgICBib29sIGhh
c0VhY2hMaW5lID0gZmFsc2U7CisgICAgYm9vbCBoYXNIYW5naW5nID0gZmFsc2U7CisKKyAgICBk
byB7CisgICAgICAgIGlmICghaGFzTGVuZ3RoT3JQZXJjZW50YWdlKSB7CisgICAgICAgICAgICBp
ZiAoQ1NTVmFsdWUqIHRleHRJbmRlbnQgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBj
c3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsLCBVbml0bGVzc1F1aXJrOjpBbGxvdykpIHsKKyAg
ICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoKnRleHRJbmRlbnQpOworICAgICAgICAgICAgICAg
IGhhc0xlbmd0aE9yUGVyY2VudGFnZSA9IHRydWU7CisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6Y3NzM1RleHRFbmFibGVkKCkpIHsKKyAgICAgICAgICAgIENTU1ZhbHVlSUQgaWQg
PSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICAgICAgICAgIGlmICghaGFzRWFjaExpbmUgJiYgaWQg
PT0gQ1NTVmFsdWVFYWNoTGluZSkgeworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCgqY29u
c3VtZUlkZW50KHJhbmdlKSk7CisgICAgICAgICAgICAgICAgaGFzRWFjaExpbmUgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KCFoYXNIYW5naW5nICYmIGlkID09IENTU1ZhbHVlSGFuZ2luZykgeworICAgICAgICAgICAgICAg
IGxpc3QtPmFwcGVuZCgqY29uc3VtZUlkZW50KHJhbmdlKSk7CisgICAgICAgICAgICAgICAgaGFz
SGFuZ2luZyA9IHRydWU7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfSB3aGlsZSAoIXJhbmdl
LmF0RW5kKCkpOworCisgICAgaWYgKCFoYXNMZW5ndGhPclBlcmNlbnRhZ2UpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBib29sIHZhbGlk
V2lkdGhPckhlaWdodEtleXdvcmQoQ1NTVmFsdWVJRCBpZCwgY29uc3QgQ1NTUGFyc2VyQ29udGV4
dCYgY29udGV4dCkKK3sKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRNaW5Db250ZW50IHx8
IGlkID09IENTU1ZhbHVlV2Via2l0TWF4Q29udGVudCB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdEZp
bGxBdmFpbGFibGUgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRGaXRDb250ZW50CisgICAgICAgIHx8
IGlkID09IENTU1ZhbHVlTWluQ29udGVudCB8fCBpZCA9PSBDU1NWYWx1ZU1heENvbnRlbnQgfHwg
aWQgPT0gQ1NTVmFsdWVGaXRDb250ZW50KSB7CisgICAgICAgIGlmIChjb250ZXh0LnVzZUNvdW50
ZXIoKSkgeworICAgICAgICAgICAgc3dpdGNoIChpZCkgeworICAgICAgICAgICAgY2FzZSBDU1NW
YWx1ZVdlYmtpdE1pbkNvbnRlbnQ6CisgICAgICAgICAgICAgICAgY29udGV4dC51c2VDb3VudGVy
KCktPmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlUHJlZml4ZWRNaW5Db250ZW50KTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRNYXhDb250
ZW50OgorICAgICAgICAgICAgICAgIGNvbnRleHQudXNlQ291bnRlcigpLT5jb3VudChVc2VDb3Vu
dGVyOjpDU1NWYWx1ZVByZWZpeGVkTWF4Q29udGVudCk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlV2Via2l0RmlsbEF2YWlsYWJsZToKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291bnRlcjo6Q1NTVmFsdWVQ
cmVmaXhlZEZpbGxBdmFpbGFibGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEZpdENvbnRlbnQ6CisgICAgICAgICAgICAgICAgY29udGV4
dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlUHJlZml4ZWRGaXRDb250
ZW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIENTU1ZhbHVl
KiBjb25zdW1lTWF4V2lkdGhPckhlaWdodChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29u
c3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgVW5pdGxlc3NRdWlyayB1bml0bGVzcyA9IFVu
aXRsZXNzUXVpcms6OkZvcmJpZCkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NT
VmFsdWVOb25lIHx8IHZhbGlkV2lkdGhPckhlaWdodEtleXdvcmQocmFuZ2UucGVlaygpLmlkKCks
IGNvbnRleHQpKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1
cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY29udGV4dC5tb2RlKCksIFZhbHVlUmFu
Z2VOb25OZWdhdGl2ZSwgdW5pdGxlc3MpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVX
aWR0aE9ySGVpZ2h0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJD
b250ZXh0JiBjb250ZXh0LCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzID0gVW5pdGxlc3NRdWlyazo6
Rm9yYmlkKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8gfHwg
dmFsaWRXaWR0aE9ySGVpZ2h0S2V5d29yZChyYW5nZS5wZWVrKCkuaWQoKSwgY29udGV4dCkpCisg
ICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lTGVu
Z3RoT3JQZXJjZW50KHJhbmdlLCBjb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZl
LCB1bml0bGVzcyk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZU1hcmdpbk9yT2Zmc2V0
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUs
IFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09
IENTU1ZhbHVlQXV0bykKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAg
cmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVl
UmFuZ2VBbGwsIHVuaXRsZXNzKTsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25z
dW1lQ2xpcENvbXBvbmVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1
ZUF1dG8pCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBj
b25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsLCBVbml0bGVz
c1F1aXJrOjpBbGxvdyk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUNsaXAoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAg
ICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICByZXR1cm4g
Y29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgp
ICE9IENTU1ZhbHVlUmVjdCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBDU1NQYXJz
ZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2UpOworICAgIC8vIHJlY3Qo
dCwgciwgYiwgbCkgfHwgcmVjdCh0IHIgYiBsKQorICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0b3Ag
PSBjb25zdW1lQ2xpcENvbXBvbmVudChhcmdzLCBjc3NQYXJzZXJNb2RlKTsKKyAgICBpZiAoIXRv
cCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYm9vbCBuZWVkc0NvbW1hID0gY29uc3Vt
ZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSog
cmlnaHQgPSBjb25zdW1lQ2xpcENvbXBvbmVudChhcmdzLCBjc3NQYXJzZXJNb2RlKTsKKyAgICBp
ZiAoIXJpZ2h0IHx8IChuZWVkc0NvbW1hICYmICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNw
YWNlKGFyZ3MpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIGJvdHRvbSA9IGNvbnN1bWVDbGlwQ29tcG9uZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUpOwor
ICAgIGlmICghYm90dG9tIHx8IChuZWVkc0NvbW1hICYmICFjb25zdW1lQ29tbWFJbmNsdWRpbmdX
aGl0ZXNwYWNlKGFyZ3MpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIGxlZnQgPSBjb25zdW1lQ2xpcENvbXBvbmVudChhcmdzLCBjc3NQYXJzZXJNb2Rl
KTsKKyAgICBpZiAoIWxlZnQgfHwgIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIENTU1F1YWRWYWx1ZTo6Y3JlYXRlKHRvcCwgcmlnaHQsIGJvdHRvbSwg
bGVmdCwgQ1NTUXVhZFZhbHVlOjpTZXJpYWxpemVBc1JlY3QpOworfQorCitzdGF0aWMgYm9vbCBj
b25zdW1lUGFuKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NWYWx1ZSomIHBhblgsIENT
U1ZhbHVlKiYgcGFuWSkKK3sKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7
CisgICAgaWYgKChpZCA9PSBDU1NWYWx1ZVBhblggfHwgaWQgPT0gQ1NTVmFsdWVQYW5SaWdodCB8
fCBpZCA9PSBDU1NWYWx1ZVBhbkxlZnQpICYmICFwYW5YKSB7CisgICAgICAgIGlmIChpZCAhPSBD
U1NWYWx1ZVBhblggJiYgIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc1RvdWNoQWN0aW9uUGFu
RGlyZWN0aW9uc0VuYWJsZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cGFuWCA9IGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgfSBlbHNlIGlmICgoaWQgPT0gQ1NTVmFs
dWVQYW5ZIHx8IGlkID09IENTU1ZhbHVlUGFuRG93biB8fCBpZCA9PSBDU1NWYWx1ZVBhblVwKSAm
JiAhcGFuWSkgeworICAgICAgICBpZiAoaWQgIT0gQ1NTVmFsdWVQYW5ZICYmICFSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpjc3NUb3VjaEFjdGlvblBhbkRpcmVjdGlvbnNFbmFibGVkKCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHBhblkgPSBjb25zdW1lSWRlbnQocmFuZ2Up
OworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVRvdWNoQWN0aW9uKENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2Uu
cGVlaygpLmlkKCk7CisgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1
ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVNYW5pcHVsYXRpb24pIHsKKyAgICAgICAgbGlzdC0+YXBw
ZW5kKCpjb25zdW1lSWRlbnQocmFuZ2UpKTsKKyAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgfQor
CisgICAgQ1NTVmFsdWUqIHBhblggPSBudWxscHRyOworICAgIENTU1ZhbHVlKiBwYW5ZID0gbnVs
bHB0cjsKKyAgICBpZiAoIWNvbnN1bWVQYW4ocmFuZ2UsIHBhblgsIHBhblkpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIXJhbmdlLmF0RW5kKCkgJiYgIWNvbnN1bWVQYW4ocmFu
Z2UsIHBhblgsIHBhblkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChwYW5Y
KQorICAgICAgICBsaXN0LT5hcHBlbmQoKnBhblgpOworICAgIGlmIChwYW5ZKQorICAgICAgICBs
aXN0LT5hcHBlbmQoKnBhblkpOworICAgIHJldHVybiBsaXN0OworfQorCitzdGF0aWMgQ1NTUHJp
bWl0aXZlVmFsdWUqIGNvbnN1bWVMaW5lQ2xhbXAoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Up
Cit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgIT0gUGVyY2VudGFnZVRva2VuICYmIHJh
bmdlLnBlZWsoKS50eXBlKCkgIT0gTnVtYmVyVG9rZW4pCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjbGFtcFZhbHVlID0gY29uc3VtZVBlcmNlbnQocmFu
Z2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgaWYgKGNsYW1wVmFsdWUpCisgICAgICAg
IHJldHVybiBjbGFtcFZhbHVlOworICAgIC8vIFdoZW4gc3BlY2lmeWluZyBudW1iZXIgb2YgbGlu
ZXMsIGRvbid0IGFsbG93IDAgYXMgYSB2YWxpZCB2YWx1ZS4KKyAgICByZXR1cm4gY29uc3VtZVBv
c2l0aXZlSW50ZWdlcihyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUxvY2Fs
ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlk
KCkgPT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsK
KyAgICByZXR1cm4gY29uc3VtZVN0cmluZyhyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSog
Y29uc3VtZUNvbHVtbldpZHRoKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlm
IChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBjb25z
dW1lSWRlbnQocmFuZ2UpOworICAgIC8vIEFsd2F5cyBwYXJzZSBsZW5ndGhzIGluIHN0cmljdCBt
b2RlIGhlcmUsIHNpbmNlIGl0IHdvdWxkIGJlIGFtYmlndW91cyBvdGhlcndpc2Ugd2hlbiB1c2Vk
IGluCisgICAgLy8gdGhlICdjb2x1bW5zJyBzaG9ydGhhbmQgcHJvcGVydHkuCisgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIGNvbHVtbldpZHRoID0gY29uc3VtZUxlbmd0aChyYW5nZSwgSFRNTFN0YW5k
YXJkTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICBpZiAoIWNvbHVtbldpZHRoIHx8
ICghY29sdW1uV2lkdGgtPmlzQ2FsY3VsYXRlZCgpICYmIGNvbHVtbldpZHRoLT5nZXREb3VibGVW
YWx1ZSgpID09IDApKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY29sdW1u
V2lkdGg7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUNvbHVtbkNvdW50KENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NW
YWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVy
biBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyKHJhbmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lQ29sdW1uR2FwKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2Rl
IGNzc1BhcnNlck1vZGUpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVl
Tm9ybWFsKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4g
Y29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZl
KTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQ29sdW1uU3BhbihDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlQWxsLCBD
U1NWYWx1ZU5vbmU+KHJhbmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lWm9vbShD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4
dCkKK3sKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7Cisg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHpvb20gPSBudWxscHRyOworICAgIGlmICh0b2tlbi50eXBl
KCkgPT0gSWRlbnRUb2tlbikgeworICAgICAgICB6b29tID0gY29uc3VtZUlkZW50PENTU1ZhbHVl
Tm9ybWFsLCBDU1NWYWx1ZVJlc2V0LCBDU1NWYWx1ZURvY3VtZW50PihyYW5nZSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgem9vbSA9IGNvbnN1bWVQZXJjZW50KHJhbmdlLCBWYWx1ZVJhbmdlTm9u
TmVnYXRpdmUpOworICAgICAgICBpZiAoIXpvb20pCisgICAgICAgICAgICB6b29tID0gY29uc3Vt
ZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICB9CisgICAgaWYgKHpv
b20gJiYgY29udGV4dC51c2VDb3VudGVyKCkKKyAgICAgICAgJiYgISh0b2tlbi5pZCgpID09IENT
U1ZhbHVlTm9ybWFsCisgICAgICAgICAgICB8fCAodG9rZW4udHlwZSgpID09IE51bWJlclRva2Vu
ICYmIHpvb20tPmdldERvdWJsZVZhbHVlKCkgPT0gMSkKKyAgICAgICAgICAgIHx8ICh0b2tlbi50
eXBlKCkgPT0gUGVyY2VudGFnZVRva2VuICYmIHpvb20tPmdldERvdWJsZVZhbHVlKCkgPT0gMTAw
KSkpCisgICAgICAgIGNvbnRleHQudXNlQ291bnRlcigpLT5jb3VudChVc2VDb3VudGVyOjpDU1Na
b29tTm90RXF1YWxUb09uZSk7CisgICAgcmV0dXJuIHpvb207Cit9CisKK3N0YXRpYyBDU1NWYWx1
ZSogY29uc3VtZUFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUluZmluaXRlKQor
ICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZU51
bWJlcihyYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKK30KKworc3RhdGljIENTU1ZhbHVl
KiBjb25zdW1lQW5pbWF0aW9uTmFtZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3Qg
Q1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgYm9vbCBhbGxvd1F1b3RlZE5hbWUpCit7CisgICAg
aWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBpZiAoYWxsb3dRdW90ZWROYW1lICYmIHJhbmdlLnBl
ZWsoKS50eXBlKCkgPT0gU3RyaW5nVG9rZW4pIHsKKyAgICAgICAgLy8gTGVnYWN5IHN1cHBvcnQg
Zm9yIHN0cmluZ3MgaW4gcHJlZml4ZWQgYW5pbWF0aW9ucy4KKyAgICAgICAgaWYgKGNvbnRleHQu
dXNlQ291bnRlcigpKQorICAgICAgICAgICAgY29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVz
ZUNvdW50ZXI6OlF1b3RlZEFuaW1hdGlvbk5hbWUpOworCisgICAgICAgIGNvbnN0IENTU1BhcnNl
clRva2VuJiB0b2tlbiA9IHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAg
ICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRva2VuLnZhbHVlKCksICJub25lIikpCisg
ICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NT
VmFsdWVOb25lKTsKKyAgICAgICAgcmV0dXJuIENTU0N1c3RvbUlkZW50VmFsdWU6OmNyZWF0ZSh0
b2tlbi52YWx1ZSgpLnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIHJldHVybiBjb25zdW1lQ3Vz
dG9tSWRlbnQocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVUcmFuc2l0aW9u
UHJvcGVydHkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgY29uc3QgQ1NTUGFy
c2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOworICAgIGlmICh0b2tlbi50eXBlKCkgIT0g
SWRlbnRUb2tlbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKHRva2VuLmlkKCkg
PT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKwor
ICAgIGlmIChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5ID0gdG9rZW4ucGFyc2VBc1VucmVzb2x2ZWRD
U1NQcm9wZXJ0eUlEKCkpIHsKKyAgICAgICAgQVNTRVJUKENTU1Byb3BlcnR5TWV0YWRhdGE6Omlz
RW5hYmxlZFByb3BlcnR5KHByb3BlcnR5KSk7CisgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRp
bmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIHJldHVybiBDU1NDdXN0b21JZGVudFZhbHVlOjpjcmVh
dGUocHJvcGVydHkpOworICAgIH0KKyAgICByZXR1cm4gY29uc3VtZUN1c3RvbUlkZW50KHJhbmdl
KTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lU3RlcHMoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UpCit7CisgICAgQVNTRVJUKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NT
VmFsdWVTdGVwcyk7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSByYW5nZTsK
KyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2VDb3B5
KTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzdGVwcyA9IGNvbnN1bWVQb3NpdGl2ZUludGVn
ZXIoYXJncyk7CisgICAgaWYgKCFzdGVwcykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVwUG9zaXRpb24gcG9zaXRpb24gPSBTdGVwc1RpbWlu
Z0Z1bmN0aW9uOjpTdGVwUG9zaXRpb246OkVORDsKKyAgICBpZiAoY29uc3VtZUNvbW1hSW5jbHVk
aW5nV2hpdGVzcGFjZShhcmdzKSkgeworICAgICAgICBzd2l0Y2ggKGFyZ3MuY29uc3VtZUluY2x1
ZGluZ1doaXRlc3BhY2UoKS5pZCgpKSB7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVNaWRkbGU6Cisg
ICAgICAgICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYkFuaW1hdGlvbnNBUElF
bmFibGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBw
b3NpdGlvbiA9IFN0ZXBzVGltaW5nRnVuY3Rpb246OlN0ZXBQb3NpdGlvbjo6TUlERExFOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVTdGFydDoKKyAgICAgICAgICAg
IHBvc2l0aW9uID0gU3RlcHNUaW1pbmdGdW5jdGlvbjo6U3RlcFBvc2l0aW9uOjpTVEFSVDsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1ZhbHVlRW5kOgorICAgICAgICAgICAg
cG9zaXRpb24gPSBTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVwUG9zaXRpb246OkVORDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICByYW5nZSA9IHJhbmdlQ29weTsKKyAgICByZXR1cm4gQ1NT
U3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUoc3RlcHMtPmdldEludFZhbHVlKCksIHBv
c2l0aW9uKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQ3ViaWNCZXppZXIoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQVNTRVJUKHJhbmdlLnBlZWsoKS5mdW5jdGlv
bklkKCkgPT0gQ1NTVmFsdWVDdWJpY0Jlemllcik7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBy
YW5nZUNvcHkgPSByYW5nZTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1l
RnVuY3Rpb24ocmFuZ2VDb3B5KTsKKworICAgIGRvdWJsZSB4MSwgeTEsIHgyLCB5MjsKKyAgICBp
ZiAoY29uc3VtZU51bWJlclJhdyhhcmdzLCB4MSkKKyAgICAgICAgJiYgeDEgPj0gMCAmJiB4MSA8
PSAxCisgICAgICAgICYmIGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykKKyAg
ICAgICAgJiYgY29uc3VtZU51bWJlclJhdyhhcmdzLCB5MSkKKyAgICAgICAgJiYgY29uc3VtZUNv
bW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKQorICAgICAgICAmJiBjb25zdW1lTnVtYmVyUmF3
KGFyZ3MsIHgyKQorICAgICAgICAmJiB4MiA+PSAwICYmIHgyIDw9IDEKKyAgICAgICAgJiYgY29u
c3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKQorICAgICAgICAmJiBjb25zdW1lTnVt
YmVyUmF3KGFyZ3MsIHkyKQorICAgICAgICAmJiBhcmdzLmF0RW5kKCkpIHsKKyAgICAgICAgcmFu
Z2UgPSByYW5nZUNvcHk7CisgICAgICAgIHJldHVybiBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0
aW9uVmFsdWU6OmNyZWF0ZSh4MSwgeTEsIHgyLCB5Mik7CisgICAgfQorCisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUFuaW1hdGlvblRpbWluZ0Z1bmN0
aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIENTU1ZhbHVlSUQgaWQgPSBy
YW5nZS5wZWVrKCkuaWQoKTsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVFYXNlIHx8IGlkID09IENT
U1ZhbHVlTGluZWFyIHx8IGlkID09IENTU1ZhbHVlRWFzZUluCisgICAgICAgIHx8IGlkID09IENT
U1ZhbHVlRWFzZU91dCB8fCBpZCA9PSBDU1NWYWx1ZUVhc2VJbk91dCB8fCBpZCA9PSBDU1NWYWx1
ZVN0ZXBTdGFydAorICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVN0ZXBFbmQgfHwgaWQgPT0gQ1NT
VmFsdWVTdGVwTWlkZGxlKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKwor
ICAgIENTU1ZhbHVlSUQgZnVuY3Rpb24gPSByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpOworICAg
IGlmIChmdW5jdGlvbiA9PSBDU1NWYWx1ZVN0ZXBzKQorICAgICAgICByZXR1cm4gY29uc3VtZVN0
ZXBzKHJhbmdlKTsKKyAgICBpZiAoZnVuY3Rpb24gPT0gQ1NTVmFsdWVDdWJpY0JlemllcikKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVDdWJpY0JlemllcihyYW5nZSk7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUFuaW1hdGlvblZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHksIENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJz
ZXJDb250ZXh0JiBjb250ZXh0LCBib29sIHVzZUxlZ2FjeVBhcnNpbmcpCit7CisgICAgc3dpdGNo
IChwcm9wZXJ0eSkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25EZWxheToKKyAgICBj
YXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvbkRlbGF5OgorICAgICAgICByZXR1cm4gY29uc3VtZVRp
bWUocmFuZ2UsIFZhbHVlUmFuZ2VBbGwpOworICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25E
aXJlY3Rpb246CisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVOb3JtYWwsIENT
U1ZhbHVlQWx0ZXJuYXRlLCBDU1NWYWx1ZVJldmVyc2UsIENTU1ZhbHVlQWx0ZXJuYXRlUmV2ZXJz
ZT4ocmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25EdXJhdGlvbjoKKyAgICBj
YXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvbkR1cmF0aW9uOgorICAgICAgICByZXR1cm4gY29uc3Vt
ZVRpbWUocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUFuaW1hdGlvbkZpbGxNb2RlOgorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVl
Tm9uZSwgQ1NTVmFsdWVGb3J3YXJkcywgQ1NTVmFsdWVCYWNrd2FyZHMsIENTU1ZhbHVlQm90aD4o
cmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25JdGVyYXRpb25Db3VudDoKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVBbmltYXRpb25JdGVyYXRpb25Db3VudChyYW5nZSk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbk5hbWU6CisgICAgICAgIHJldHVybiBjb25zdW1lQW5p
bWF0aW9uTmFtZShyYW5nZSwgY29udGV4dCwgdXNlTGVnYWN5UGFyc2luZyk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUFuaW1hdGlvblBsYXlTdGF0ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVu
dDxDU1NWYWx1ZVJ1bm5pbmcsIENTU1ZhbHVlUGF1c2VkPihyYW5nZSk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVRyYW5zaXRpb25Qcm9wZXJ0eToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVUcmFuc2l0
aW9uUHJvcGVydHkocmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25UaW1pbmdG
dW5jdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOgor
ICAgICAgICByZXR1cm4gY29uc3VtZUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKHJhbmdlKTsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBpc1ZhbGlkQW5pbWF0aW9uUHJvcGVy
dHlMaXN0KENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IENTU1ZhbHVlTGlzdCYgdmFsdWVM
aXN0KQoreworICAgIGlmIChwcm9wZXJ0eSAhPSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25Qcm9wZXJ0
eSB8fCB2YWx1ZUxpc3QubGVuZ3RoKCkgPCAyKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBm
b3IgKGF1dG8mIHZhbHVlIDogdmFsdWVMaXN0KSB7CisgICAgICAgIGlmICh2YWx1ZS0+aXNQcmlt
aXRpdmVWYWx1ZSgpICYmIHRvQ1NTUHJpbWl0aXZlVmFsdWUoKnZhbHVlKS5pc1ZhbHVlSUQoKQor
ICAgICAgICAgICAgJiYgdG9DU1NQcmltaXRpdmVWYWx1ZSgqdmFsdWUpLmdldFZhbHVlSUQoKSA9
PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQorCitzdGF0aWMgQ1NTVmFsdWVMaXN0KiBjb25zdW1lQW5pbWF0aW9uUHJv
cGVydHlMaXN0KENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBib29sIHVzZUxlZ2FjeVBhcnNp
bmcpCit7CisgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21t
YVNlcGFyYXRlZCgpOworICAgIGRvIHsKKyAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gY29uc3Vt
ZUFuaW1hdGlvblZhbHVlKHByb3BlcnR5LCByYW5nZSwgY29udGV4dCwgdXNlTGVnYWN5UGFyc2lu
Zyk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgbGlzdC0+YXBwZW5kKCp2YWx1ZSk7CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5j
bHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpOworICAgIGlmICghaXNWYWxpZEFuaW1hdGlvblByb3Bl
cnR5TGlzdChwcm9wZXJ0eSwgKmxpc3QpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBB
U1NFUlQobGlzdC0+bGVuZ3RoKCkpOworICAgIHJldHVybiBsaXN0OworfQorCitib29sIENTU1By
b3BlcnR5UGFyc2VyOjpjb25zdW1lQW5pbWF0aW9uU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVy
dHlTaG9ydGhhbmQmIHNob3J0aGFuZCwgYm9vbCB1c2VMZWdhY3lQYXJzaW5nLCBib29sIGltcG9y
dGFudCkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBsb25naGFuZENvdW50ID0gc2hvcnRoYW5kLmxl
bmd0aCgpOworICAgIENTU1ZhbHVlTGlzdCogbG9uZ2hhbmRzWzhdOworICAgIEFTU0VSVChsb25n
aGFuZENvdW50IDw9IDgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbG9uZ2hhbmRDb3Vu
dDsgKytpKQorICAgICAgICBsb25naGFuZHNbaV0gPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1h
U2VwYXJhdGVkKCk7CisKKyAgICBkbyB7CisgICAgICAgIGJvb2wgcGFyc2VkTG9uZ2hhbmRbOF0g
PSB7IGZhbHNlIH07CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGJvb2wgZm91bmRQcm9wZXJ0
eSA9IGZhbHNlOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsb25naGFuZENv
dW50OyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VkTG9uZ2hhbmRbaV0pCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgaWYgKENTU1ZhbHVl
KiB2YWx1ZSA9IGNvbnN1bWVBbmltYXRpb25WYWx1ZShzaG9ydGhhbmQucHJvcGVydGllcygpW2ld
LCBtX3JhbmdlLCBtX2NvbnRleHQsIHVzZUxlZ2FjeVBhcnNpbmcpKSB7CisgICAgICAgICAgICAg
ICAgICAgIHBhcnNlZExvbmdoYW5kW2ldID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgZm91
bmRQcm9wZXJ0eSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGxvbmdoYW5kc1tpXS0+YXBw
ZW5kKCp2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghZm91bmRQcm9wZXJ0eSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0gd2hpbGUgKCFtX3JhbmdlLmF0RW5k
KCkgJiYgbV9yYW5nZS5wZWVrKCkudHlwZSgpICE9IENvbW1hVG9rZW4pOworCisgICAgICAgIC8v
IFRPRE8odGltbG9oKTogVGhpcyB3aWxsIG1ha2UgaW52YWxpZCBsb25naGFuZHMsIHNlZSBjcmJ1
Zy5jb20vMzg2NDU5CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbG9uZ2hhbmRDb3Vu
dDsgKytpKSB7CisgICAgICAgICAgICBpZiAoIXBhcnNlZExvbmdoYW5kW2ldKQorICAgICAgICAg
ICAgICAgIGxvbmdoYW5kc1tpXS0+YXBwZW5kKCpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2Fj
eUltcGxpY2l0KCkpOworICAgICAgICAgICAgcGFyc2VkTG9uZ2hhbmRbaV0gPSBmYWxzZTsKKyAg
ICAgICAgfQorICAgIH0gd2hpbGUgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UobV9y
YW5nZSkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsb25naGFuZENvdW50OyArK2kp
IHsKKyAgICAgICAgaWYgKCFpc1ZhbGlkQW5pbWF0aW9uUHJvcGVydHlMaXN0KHNob3J0aGFuZC5w
cm9wZXJ0aWVzKClbaV0sICpsb25naGFuZHNbaV0pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbG9uZ2hhbmRDb3VudDsgKytp
KQorICAgICAgICBhZGRQcm9wZXJ0eShzaG9ydGhhbmQucHJvcGVydGllcygpW2ldLCBzaG9ydGhh
bmQuaWQoKSwgKmxvbmdoYW5kc1tpXSwgaW1wb3J0YW50KTsKKworICAgIHJldHVybiBtX3Jhbmdl
LmF0RW5kKCk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVpJbmRleChDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFs
dWVBdXRvKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4g
Y29uc3VtZUludGVnZXIocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTU2hhZG93VmFsdWUqIHBhcnNl
U2luZ2xlU2hhZG93KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNz
c1BhcnNlck1vZGUsIGJvb2wgYWxsb3dJbnNldCwgYm9vbCBhbGxvd1NwcmVhZCkKK3sKKyAgICBD
U1NQcmltaXRpdmVWYWx1ZSogc3R5bGUgPSBudWxscHRyOworICAgIENTU1ZhbHVlKiBjb2xvciA9
IG51bGxwdHI7CisKKyAgICBpZiAocmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlSW5zZXQpIHsKKyAgICAg
ICAgaWYgKCFhbGxvd0luc2V0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IHN0eWxlID0gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICB9CisgICAgY29sb3IgPSBjb25zdW1l
Q29sb3IocmFuZ2UsIGNzc1BhcnNlck1vZGUpOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGhv
cml6b250YWxPZmZzZXQgPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1
ZVJhbmdlQWxsKTsKKyAgICBpZiAoIWhvcml6b250YWxPZmZzZXQpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZlcnRpY2FsT2Zmc2V0ID0gY29uc3Vt
ZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKCF2
ZXJ0aWNhbE9mZnNldCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBDU1NQcmltaXRp
dmVWYWx1ZSogYmx1clJhZGl1cyA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUs
IFZhbHVlUmFuZ2VBbGwpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzcHJlYWREaXN0YW5jZSA9
IG51bGxwdHI7CisgICAgaWYgKGJsdXJSYWRpdXMpIHsKKyAgICAgICAgLy8gQmx1ciByYWRpdXMg
bXVzdCBiZSBub24tbmVnYXRpdmUuCisgICAgICAgIGlmIChibHVyUmFkaXVzLT5nZXREb3VibGVW
YWx1ZSgpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBpZiAoYWxs
b3dTcHJlYWQpCisgICAgICAgICAgICBzcHJlYWREaXN0YW5jZSA9IGNvbnN1bWVMZW5ndGgocmFu
Z2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgIH0KKworICAgIGlmICghcmFu
Z2UuYXRFbmQoKSkgeworICAgICAgICBpZiAoIWNvbG9yKQorICAgICAgICAgICAgY29sb3IgPSBj
b25zdW1lQ29sb3IocmFuZ2UsIGNzc1BhcnNlck1vZGUpOworICAgICAgICBpZiAocmFuZ2UucGVl
aygpLmlkKCkgPT0gQ1NTVmFsdWVJbnNldCkgeworICAgICAgICAgICAgaWYgKCFhbGxvd0luc2V0
IHx8IHN0eWxlKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAg
c3R5bGUgPSBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVy
biBDU1NTaGFkb3dWYWx1ZTo6Y3JlYXRlKGhvcml6b250YWxPZmZzZXQsIHZlcnRpY2FsT2Zmc2V0
LCBibHVyUmFkaXVzLAorICAgICAgICBzcHJlYWREaXN0YW5jZSwgc3R5bGUsIGNvbG9yKTsKK30K
Kworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lU2hhZG93KENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIGJvb2wgaXNCb3hTaGFkb3dQcm9wZXJ0
eSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAg
ICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIENTU1ZhbHVlTGlzdCogc2hhZG93
VmFsdWVMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgIGRv
IHsKKyAgICAgICAgaWYgKENTU1NoYWRvd1ZhbHVlKiBzaGFkb3dWYWx1ZSA9IHBhcnNlU2luZ2xl
U2hhZG93KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBpc0JveFNoYWRvd1Byb3BlcnR5LCBpc0JveFNo
YWRvd1Byb3BlcnR5KSkKKyAgICAgICAgICAgIHNoYWRvd1ZhbHVlTGlzdC0+YXBwZW5kKCpzaGFk
b3dWYWx1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0gd2hpbGUgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKTsKKyAgICBy
ZXR1cm4gc2hhZG93VmFsdWVMaXN0OworfQorCitzdGF0aWMgQ1NTRnVuY3Rpb25WYWx1ZSogY29u
c3VtZUZpbHRlckZ1bmN0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQ
YXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIENTU1ZhbHVlSUQgZmlsdGVyVHlwZSA9IHJh
bmdlLnBlZWsoKS5mdW5jdGlvbklkKCk7CisgICAgaWYgKGZpbHRlclR5cGUgPCBDU1NWYWx1ZUlu
dmVydCB8fCBmaWx0ZXJUeXBlID4gQ1NTVmFsdWVEcm9wU2hhZG93KQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24o
cmFuZ2UpOworICAgIENTU0Z1bmN0aW9uVmFsdWUqIGZpbHRlclZhbHVlID0gQ1NTRnVuY3Rpb25W
YWx1ZTo6Y3JlYXRlKGZpbHRlclR5cGUpOworICAgIENTU1ZhbHVlKiBwYXJzZWRWYWx1ZSA9IG51
bGxwdHI7CisKKyAgICBpZiAoZmlsdGVyVHlwZSA9PSBDU1NWYWx1ZURyb3BTaGFkb3cpIHsKKyAg
ICAgICAgcGFyc2VkVmFsdWUgPSBwYXJzZVNpbmdsZVNoYWRvdyhhcmdzLCBjb250ZXh0Lm1vZGUo
KSwgZmFsc2UsIGZhbHNlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoYXJncy5hdEVuZCgp
KSB7CisgICAgICAgICAgICBpZiAoY29udGV4dC51c2VDb3VudGVyKCkpCisgICAgICAgICAgICAg
ICAgY29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkNTU0ZpbHRlckZ1bmN0
aW9uTm9Bcmd1bWVudHMpOworICAgICAgICAgICAgcmV0dXJuIGZpbHRlclZhbHVlOworICAgICAg
ICB9CisgICAgICAgIGlmIChmaWx0ZXJUeXBlID09IENTU1ZhbHVlQnJpZ2h0bmVzcykgeworICAg
ICAgICAgICAgLy8gRklYTUUgKGNyYnVnLmNvbS8zOTcwNjEpOiBTdXBwb3J0IGNhbGMgZXhwcmVz
c2lvbnMgbGlrZSBjYWxjKDEwJSArIDAuNSkKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29u
c3VtZVBlcmNlbnQoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgICAgICBpZiAoIXBhcnNl
ZFZhbHVlKQorICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZU51bWJlcihhcmdz
LCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXJUeXBlID09IENTU1Zh
bHVlSHVlUm90YXRlKSB7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVBbmdsZShh
cmdzKTsKKyAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXJUeXBlID09IENTU1ZhbHVlQmx1cikgewor
ICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lTGVuZ3RoKGFyZ3MsIEhUTUxTdGFuZGFy
ZE1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAvLyBGSVhNRSAoY3JidWcuY29tLzM5NzA2MSk6IFN1cHBvcnQgY2FsYyBleHByZXNzaW9u
cyBsaWtlIGNhbGMoMTAlICsgMC41KQorICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1l
UGVyY2VudChhcmdzLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICAgICAgaWYgKCFw
YXJzZWRWYWx1ZSkKKyAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVOdW1iZXIo
YXJncywgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgICAgIGlmIChwYXJzZWRWYWx1
ZSAmJiBmaWx0ZXJUeXBlICE9IENTU1ZhbHVlU2F0dXJhdGUgJiYgZmlsdGVyVHlwZSAhPSBDU1NW
YWx1ZUNvbnRyYXN0KSB7CisgICAgICAgICAgICAgICAgYm9vbCBpc1BlcmNlbnRhZ2UgPSB0b0NT
U1ByaW1pdGl2ZVZhbHVlKHBhcnNlZFZhbHVlKS0+aXNQZXJjZW50YWdlKCk7CisgICAgICAgICAg
ICAgICAgZG91YmxlIG1heEFsbG93ZWQgPSBpc1BlcmNlbnRhZ2UgPyAxMDAuMCA6IDEuMDsKKyAg
ICAgICAgICAgICAgICBpZiAodG9DU1NQcmltaXRpdmVWYWx1ZShwYXJzZWRWYWx1ZSktPmdldERv
dWJsZVZhbHVlKCkgPiBtYXhBbGxvd2VkKSB7CisgICAgICAgICAgICAgICAgICAgIHBhcnNlZFZh
bHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1heEFsbG93ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICBpc1BlcmNlbnRhZ2UgPyBDU1NQ
cmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBlcmNlbnRhZ2UgOiBDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGU6Ok51bWJlcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorICAgIGlmICghcGFyc2VkVmFsdWUgfHwgIWFyZ3MuYXRFbmQoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgZmlsdGVyVmFsdWUtPmFwcGVuZCgqcGFyc2VkVmFs
dWUpOworICAgIHJldHVybiBmaWx0ZXJWYWx1ZTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25z
dW1lRmlsdGVyKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250
ZXh0JiBjb250ZXh0KQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5v
bmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgQ1NTVmFsdWVM
aXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGRv
IHsKKyAgICAgICAgQ1NTVmFsdWUqIGZpbHRlclZhbHVlID0gY29uc3VtZVVybChyYW5nZSk7Cisg
ICAgICAgIGlmICghZmlsdGVyVmFsdWUpIHsKKyAgICAgICAgICAgIGZpbHRlclZhbHVlID0gY29u
c3VtZUZpbHRlckZ1bmN0aW9uKHJhbmdlLCBjb250ZXh0KTsKKyAgICAgICAgICAgIGlmICghZmls
dGVyVmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAg
ICAgICAgbGlzdC0+YXBwZW5kKCpmaWx0ZXJWYWx1ZSk7CisgICAgfSB3aGlsZSAoIXJhbmdlLmF0
RW5kKCkpOworICAgIHJldHVybiBsaXN0OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVU
ZXh0RGVjb3JhdGlvbkxpbmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NT
VmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5v
bmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgQ1NTVmFsdWVM
aXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIHdo
aWxlICh0cnVlKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBpZGVudCA9IGNvbnN1bWVJ
ZGVudDxDU1NWYWx1ZUJsaW5rLCBDU1NWYWx1ZVVuZGVybGluZSwgQ1NTVmFsdWVPdmVybGluZSwg
Q1NTVmFsdWVMaW5lVGhyb3VnaD4ocmFuZ2UpOworICAgICAgICBpZiAoIWlkZW50KQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGlmIChsaXN0LT5oYXNWYWx1ZSgqaWRlbnQpKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGxpc3QtPmFwcGVuZCgqaWRlbnQpOworICAg
IH0KKworICAgIGlmICghbGlzdC0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiBsaXN0OworfQorCisvLyBub25lIHwgc3RyaWN0IHwgY29udGVudCB8IFsgbGF5
b3V0IHx8IHN0eWxlIHx8IHBhaW50IHx8IHNpemUgXQorc3RhdGljIENTU1ZhbHVlKiBjb25zdW1l
Q29udGFpbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NWYWx1ZUlEIGlk
ID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgaWYgKGlkID09IENT
U1ZhbHVlU3RyaWN0IHx8IGlkID09IENTU1ZhbHVlQ29udGVudCkgeworICAgICAgICBsaXN0LT5h
cHBlbmQoKmNvbnN1bWVJZGVudChyYW5nZSkpOworICAgICAgICByZXR1cm4gbGlzdDsKKyAgICB9
CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGlkZW50ID0g
Y29uc3VtZUlkZW50PENTU1ZhbHVlUGFpbnQsIENTU1ZhbHVlTGF5b3V0LCBDU1NWYWx1ZVN0eWxl
LCBDU1NWYWx1ZVNpemU+KHJhbmdlKTsKKyAgICAgICAgaWYgKCFpZGVudCkKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBpZiAobGlzdC0+aGFzVmFsdWUoKmlkZW50KSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICBsaXN0LT5hcHBlbmQoKmlkZW50KTsKKyAgICB9CisK
KyAgICBpZiAoIWxpc3QtPmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gbGlzdDsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lUGF0aChDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIDx1cmw+
LCA8YmFzaWMtc2hhcGU+LCA8Z2VvbWV0cnktYm94Pi4KKyAgICBpZiAocmFuZ2UucGVlaygpLmZ1
bmN0aW9uSWQoKSAhPSBDU1NWYWx1ZVBhdGgpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBmdW5jdGlvblJhbmdlID0gcmFuZ2U7CisgICAgQ1NTUGFy
c2VyVG9rZW5SYW5nZSBmdW5jdGlvbkFyZ3MgPSBjb25zdW1lRnVuY3Rpb24oZnVuY3Rpb25SYW5n
ZSk7CisKKyAgICBpZiAoZnVuY3Rpb25BcmdzLnBlZWsoKS50eXBlKCkgIT0gU3RyaW5nVG9rZW4p
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIFN0cmluZyBwYXRoU3RyaW5nID0gZnVuY3Rp
b25BcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b1N0cmluZygpOwor
CisgICAgc3RkOjp1bmlxdWVfcHRyPFNWR1BhdGhCeXRlU3RyZWFtPiBieXRlU3RyZWFtID0gU1ZH
UGF0aEJ5dGVTdHJlYW06OmNyZWF0ZSgpOworICAgIGlmIChidWlsZEJ5dGVTdHJlYW1Gcm9tU3Ry
aW5nKHBhdGhTdHJpbmcsICpieXRlU3RyZWFtKSAhPSBTVkdQYXJzZVN0YXR1czo6Tm9FcnJvcgor
ICAgICAgICB8fCAhZnVuY3Rpb25BcmdzLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgcmFuZ2UgPSBmdW5jdGlvblJhbmdlOworICAgIGlmIChieXRlU3RyZWFtLT5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmll
cihDU1NWYWx1ZU5vbmUpOworICAgIHJldHVybiBDU1NQYXRoVmFsdWU6OmNyZWF0ZShzdGQ6Om1v
dmUoYnl0ZVN0cmVhbSkpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVQYXRoT3JOb25l
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5n
ZS5wZWVrKCkuaWQoKTsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1
cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIHJldHVybiBjb25zdW1lUGF0aChyYW5nZSk7
Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZU1vdGlvblJvdGF0aW9uKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlKQoreworICAgIENTU1ZhbHVlKiBhbmdsZSA9IGNvbnN1bWVBbmdsZShy
YW5nZSk7CisgICAgQ1NTVmFsdWUqIGtleXdvcmQgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBdXRv
LCBDU1NWYWx1ZVJldmVyc2U+KHJhbmdlKTsKKyAgICBpZiAoIWFuZ2xlICYmICFrZXl3b3JkKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICghYW5nbGUpCisgICAgICAgIGFuZ2xl
ID0gY29uc3VtZUFuZ2xlKHJhbmdlKTsKKworICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBpZiAoa2V5d29yZCkKKyAgICAg
ICAgbGlzdC0+YXBwZW5kKCprZXl3b3JkKTsKKyAgICBpZiAoYW5nbGUpCisgICAgICAgIGxpc3Qt
PmFwcGVuZCgqYW5nbGUpOworICAgIHJldHVybiBsaXN0OworfQorCitzdGF0aWMgQ1NTVmFsdWUq
IGNvbnN1bWVUZXh0RW1waGFzaXNTdHlsZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sK
KyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgaWYgKGlkID09IENT
U1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBp
ZiAoQ1NTVmFsdWUqIHRleHRFbXBoYXNpc1N0eWxlID0gY29uc3VtZVN0cmluZyhyYW5nZSkpCisg
ICAgICAgIHJldHVybiB0ZXh0RW1waGFzaXNTdHlsZTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBmaWxsID0gY29uc3VtZUlkZW50PENTU1ZhbHVlRmlsbGVkLCBDU1NWYWx1ZU9wZW4+KHJhbmdl
KTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2hhcGUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVE
b3QsIENTU1ZhbHVlQ2lyY2xlLCBDU1NWYWx1ZURvdWJsZUNpcmNsZSwgQ1NTVmFsdWVUcmlhbmds
ZSwgQ1NTVmFsdWVTZXNhbWU+KHJhbmdlKTsKKyAgICBpZiAoIWZpbGwpCisgICAgICAgIGZpbGwg
PSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVGaWxsZWQsIENTU1ZhbHVlT3Blbj4ocmFuZ2UpOworICAg
IGlmIChmaWxsICYmIHNoYXBlKSB7CisgICAgICAgIENTU1ZhbHVlTGlzdCogcGFyc2VkVmFsdWVz
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICBwYXJzZWRW
YWx1ZXMtPmFwcGVuZCgqZmlsbCk7CisgICAgICAgIHBhcnNlZFZhbHVlcy0+YXBwZW5kKCpzaGFw
ZSk7CisgICAgICAgIHJldHVybiBwYXJzZWRWYWx1ZXM7CisgICAgfQorICAgIGlmIChmaWxsKQor
ICAgICAgICByZXR1cm4gZmlsbDsKKyAgICBpZiAoc2hhcGUpCisgICAgICAgIHJldHVybiBzaGFw
ZTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lT3V0
bGluZUNvbG9yKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1Bh
cnNlck1vZGUpCit7CisgICAgLy8gQWxsb3cgdGhlIHNwZWNpYWwgZm9jdXMgY29sb3IgZXZlbiBp
biBIVE1MIFN0YW5kYXJkIHBhcnNpbmcgbW9kZS4KKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkg
PT0gQ1NTVmFsdWVXZWJraXRGb2N1c1JpbmdDb2xvcikKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJ
ZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVDb2xvcihyYW5nZSwgY3NzUGFyc2VyTW9k
ZSk7Cit9CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUxpbmVXaWR0aChDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0
bGVzc1F1aXJrIHVuaXRsZXNzKQoreworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCku
aWQoKTsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVUaGluIHx8IGlkID09IENTU1ZhbHVlTWVkaXVt
IHx8IGlkID09IENTU1ZhbHVlVGhpY2spCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFu
Z2UpOworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1
ZVJhbmdlTm9uTmVnYXRpdmUsIHVuaXRsZXNzKTsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZh
bHVlKiBjb25zdW1lQm9yZGVyV2lkdGgoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1Bh
cnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKK3sKKyAgICBy
ZXR1cm4gY29uc3VtZUxpbmVXaWR0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpOwor
fQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVUZXh0U3Ryb2tlV2lkdGgoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sK
KyAgICByZXR1cm4gY29uc3VtZUxpbmVXaWR0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVW5pdGxl
c3NRdWlyazo6Rm9yYmlkKTsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1l
Q29sdW1uUnVsZVdpZHRoKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2Rl
IGNzc1BhcnNlck1vZGUpCit7CisgICAgcmV0dXJuIGNvbnN1bWVMaW5lV2lkdGgocmFuZ2UsIGNz
c1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7Cit9CisKK3N0YXRpYyBib29sIGNv
bnN1bWVUcmFuc2xhdGUzZChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJNb2Rl
IGNzc1BhcnNlck1vZGUsIENTU0Z1bmN0aW9uVmFsdWUqJiB0cmFuc2Zvcm1WYWx1ZSkKK3sKKyAg
ICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cyA9IDI7CisgICAgQ1NTVmFsdWUqIHBhcnNlZFZh
bHVlID0gbnVsbHB0cjsKKyAgICBkbyB7CisgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUxl
bmd0aE9yUGVyY2VudChhcmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAg
ICAgaWYgKCFwYXJzZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
dHJhbnNmb3JtVmFsdWUtPmFwcGVuZCgqcGFyc2VkVmFsdWUpOworICAgICAgICBpZiAoIWNvbnN1
bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfSB3aGlsZSAoLS1udW1iZXJPZkFyZ3VtZW50cyk7CisgICAgcGFyc2VkVmFsdWUg
PSBjb25zdW1lTGVuZ3RoKGFyZ3MsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAg
IGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB0cmFuc2Zvcm1W
YWx1ZS0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRp
YyBib29sIGNvbnN1bWVOdW1iZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU0Z1bmN0
aW9uVmFsdWUqJiB0cmFuc2Zvcm1WYWx1ZSwgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHMpCit7
CisgICAgZG8geworICAgICAgICBDU1NWYWx1ZSogcGFyc2VkVmFsdWUgPSBjb25zdW1lTnVtYmVy
KGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKCpwYXJz
ZWRWYWx1ZSk7CisgICAgICAgIGlmICgtLW51bWJlck9mQXJndW1lbnRzICYmICFjb25zdW1lQ29t
bWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0gd2hpbGUgKG51bWJlck9mQXJndW1lbnRzKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
c3RhdGljIGJvb2wgY29uc3VtZVBlcnNwZWN0aXZlKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3Ms
IENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgQ1NTRnVuY3Rpb25WYWx1ZSomIHRyYW5zZm9y
bVZhbHVlLCBib29sIHVzZUxlZ2FjeVBhcnNpbmcpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHBhcnNlZFZhbHVlID0gY29uc3VtZUxlbmd0aChhcmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJh
bmdlTm9uTmVnYXRpdmUpOworICAgIGlmICghcGFyc2VkVmFsdWUgJiYgdXNlTGVnYWN5UGFyc2lu
ZykgeworICAgICAgICBkb3VibGUgcGVyc3BlY3RpdmU7CisgICAgICAgIGlmICghY29uc3VtZU51
bWJlclJhdyhhcmdzLCBwZXJzcGVjdGl2ZSkgfHwgcGVyc3BlY3RpdmUgPCAwKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBwYXJzZWRWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGUocGVyc3BlY3RpdmUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGl4ZWxz
KTsKKyAgICB9CisgICAgaWYgKCFwYXJzZWRWYWx1ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lVHJhbnNmb3JtVmFsdWUoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgYm9vbCB1c2VM
ZWdhY3lQYXJzaW5nKQoreworICAgIENTU1ZhbHVlSUQgZnVuY3Rpb25JZCA9IHJhbmdlLnBlZWso
KS5mdW5jdGlvbklkKCk7CisgICAgaWYgKGZ1bmN0aW9uSWQgPT0gQ1NTVmFsdWVJbnZhbGlkKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBj
b25zdW1lRnVuY3Rpb24ocmFuZ2UpOworICAgIGlmIChhcmdzLmF0RW5kKCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIENTU0Z1bmN0aW9uVmFsdWUqIHRyYW5zZm9ybVZhbHVlID0gQ1NT
RnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKGZ1bmN0aW9uSWQpOworICAgIENTU1ZhbHVlKiBwYXJzZWRW
YWx1ZSA9IG51bGxwdHI7CisgICAgc3dpdGNoIChmdW5jdGlvbklkKSB7CisgICAgY2FzZSBDU1NW
YWx1ZVJvdGF0ZToKKyAgICBjYXNlIENTU1ZhbHVlUm90YXRlWDoKKyAgICBjYXNlIENTU1ZhbHVl
Um90YXRlWToKKyAgICBjYXNlIENTU1ZhbHVlUm90YXRlWjoKKyAgICBjYXNlIENTU1ZhbHVlU2tl
d1g6CisgICAgY2FzZSBDU1NWYWx1ZVNrZXdZOgorICAgIGNhc2UgQ1NTVmFsdWVTa2V3OgorICAg
ICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVBbmdsZShhcmdzKTsKKyAgICAgICAgaWYgKCFwYXJz
ZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBpZiAoZnVuY3Rp
b25JZCA9PSBDU1NWYWx1ZVNrZXcgJiYgY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShh
cmdzKSkgeworICAgICAgICAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZCgqcGFyc2VkVmFsdWUp
OworICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lQW5nbGUoYXJncyk7CisgICAgICAg
ICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVTY2FsZVg6CisgICAg
Y2FzZSBDU1NWYWx1ZVNjYWxlWToKKyAgICBjYXNlIENTU1ZhbHVlU2NhbGVaOgorICAgIGNhc2Ug
Q1NTVmFsdWVTY2FsZToKKyAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lTnVtYmVyKGFyZ3Ms
IFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIGlmIChmdW5jdGlvbklkID09IENTU1ZhbHVlU2NhbGUg
JiYgY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkgeworICAgICAgICAgICAg
dHJhbnNmb3JtVmFsdWUtPmFwcGVuZCgqcGFyc2VkVmFsdWUpOworICAgICAgICAgICAgcGFyc2Vk
VmFsdWUgPSBjb25zdW1lTnVtYmVyKGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICAgICAg
aWYgKCFwYXJzZWRWYWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlUGVyc3BlY3RpdmU6CisgICAg
ICAgIGlmICghY29uc3VtZVBlcnNwZWN0aXZlKGFyZ3MsIGNzc1BhcnNlck1vZGUsIHRyYW5zZm9y
bVZhbHVlLCB1c2VMZWdhY3lQYXJzaW5nKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlVHJhbnNsYXRlWDoKKyAgICBjYXNlIENT
U1ZhbHVlVHJhbnNsYXRlWToKKyAgICBjYXNlIENTU1ZhbHVlVHJhbnNsYXRlOgorICAgICAgICBw
YXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9kZSwg
VmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKGZ1bmN0aW9uSWQgPT0gQ1NTVmFsdWVUcmFuc2xh
dGUgJiYgY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkgeworICAgICAgICAg
ICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZCgqcGFyc2VkVmFsdWUpOworICAgICAgICAgICAgcGFy
c2VkVmFsdWUgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUsIFZh
bHVlUmFuZ2VBbGwpOworICAgICAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1ZhbHVlVHJhbnNsYXRlWjoKKyAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lTGVuZ3Ro
KGFyZ3MsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIENTU1ZhbHVlTWF0cml4OgorICAgIGNhc2UgQ1NTVmFsdWVNYXRyaXgzZDoKKyAgICAg
ICAgaWYgKCFjb25zdW1lTnVtYmVycyhhcmdzLCB0cmFuc2Zvcm1WYWx1ZSwgKGZ1bmN0aW9uSWQg
PT0gQ1NTVmFsdWVNYXRyaXgzZCkgPyAxNiA6IDYpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVTY2FsZTNkOgorICAgICAgICBp
ZiAoIWNvbnN1bWVOdW1iZXJzKGFyZ3MsIHRyYW5zZm9ybVZhbHVlLCAzKSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlUm90YXRl
M2Q6CisgICAgICAgIGlmICghY29uc3VtZU51bWJlcnMoYXJncywgdHJhbnNmb3JtVmFsdWUsIDMp
IHx8ICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUFuZ2xlKGFyZ3Mp
OworICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVUcmFuc2xhdGUzZDoKKyAgICAgICAg
aWYgKCFjb25zdW1lVHJhbnNsYXRlM2QoYXJncywgY3NzUGFyc2VyTW9kZSwgdHJhbnNmb3JtVmFs
dWUpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBpZiAocGFyc2VkVmFs
dWUpCisgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICBp
ZiAoIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHRy
YW5zZm9ybVZhbHVlOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVUcmFuc2Zvcm0oQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgYm9v
bCB1c2VMZWdhY3lQYXJzaW5nKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NW
YWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgQ1NT
VmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwor
ICAgIGRvIHsKKyAgICAgICAgQ1NTVmFsdWUqIHBhcnNlZFRyYW5zZm9ybVZhbHVlID0gY29uc3Vt
ZVRyYW5zZm9ybVZhbHVlKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1c2VMZWdhY3lQYXJzaW5nKTsK
KyAgICAgICAgaWYgKCFwYXJzZWRUcmFuc2Zvcm1WYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICBsaXN0LT5hcHBlbmQoKnBhcnNlZFRyYW5zZm9ybVZhbHVlKTsKKyAg
ICB9IHdoaWxlICghcmFuZ2UuYXRFbmQoKSk7CisKKyAgICByZXR1cm4gbGlzdDsKK30KKwordGVt
cGxhdGUgPENTU1ZhbHVlSUQgc3RhcnQsIENTU1ZhbHVlSUQgZW5kPgorc3RhdGljIENTU1ZhbHVl
KiBjb25zdW1lUG9zaXRpb25Mb25naGFuZChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NT
UGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgp
ID09IElkZW50VG9rZW4pIHsKKyAgICAgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5p
ZCgpOworICAgICAgICBpbnQgcGVyY2VudDsKKyAgICAgICAgaWYgKGlkID09IHN0YXJ0KQorICAg
ICAgICAgICAgcGVyY2VudCA9IDA7CisgICAgICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlQ2Vu
dGVyKQorICAgICAgICAgICAgcGVyY2VudCA9IDUwOworICAgICAgICBlbHNlIGlmIChpZCA9PSBl
bmQpCisgICAgICAgICAgICBwZXJjZW50ID0gMTAwOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3Bh
Y2UoKTsKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocGVyY2VudCwg
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQZXJjZW50YWdlKTsKKyAgICB9CisgICAgcmV0
dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFu
Z2VBbGwpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVQb3NpdGlvblgoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBy
ZXR1cm4gY29uc3VtZVBvc2l0aW9uTG9uZ2hhbmQ8Q1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0
PihyYW5nZSwgY3NzUGFyc2VyTW9kZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVBv
c2l0aW9uWShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJz
ZXJNb2RlKQoreworICAgIHJldHVybiBjb25zdW1lUG9zaXRpb25Mb25naGFuZDxDU1NWYWx1ZVRv
cCwgQ1NTVmFsdWVCb3R0b20+KHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKK30KKworc3RhdGljIENT
U1ZhbHVlKiBjb25zdW1lUGFpbnRTdHJva2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkg
PT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAg
ICBDU1NVUklWYWx1ZSogdXJsID0gY29uc3VtZVVybChyYW5nZSk7CisgICAgaWYgKHVybCkgewor
ICAgICAgICBDU1NWYWx1ZSogcGFyc2VkVmFsdWUgPSBudWxscHRyOworICAgICAgICBpZiAocmFu
Z2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICAgICAgcGFyc2VkVmFsdWUg
PSBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwYXJzZWRW
YWx1ZSA9IGNvbnN1bWVDb2xvcihyYW5nZSwgY3NzUGFyc2VyTW9kZSk7CisgICAgICAgIGlmIChw
YXJzZWRWYWx1ZSkgeworICAgICAgICAgICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZXMgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAgICB2YWx1ZXMtPmFwcGVu
ZCgqdXJsKTsKKyAgICAgICAgICAgIHZhbHVlcy0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAg
ICAgICAgICByZXR1cm4gdmFsdWVzOworICAgICAgICB9CisgICAgICAgIHJldHVybiB1cmw7Cisg
ICAgfQorICAgIHJldHVybiBjb25zdW1lQ29sb3IocmFuZ2UsIGNzc1BhcnNlck1vZGUpOworfQor
CitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVQYWludE9yZGVyKENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBWZWN0b3I8Q1NTVmFs
dWVJRCwgMz4gcGFpbnRUeXBlTGlzdDsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogZmlsbCA9IG51
bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHN0cm9rZSA9IG51bGxwdHI7CisgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIG1hcmtlcnMgPSBudWxscHRyOworICAgIGRvIHsKKyAgICAgICAgQ1NT
VmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgICAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVGaWxsICYmICFmaWxsKQorICAgICAgICAgICAgZmlsbCA9IGNvbnN1bWVJZGVudChyYW5nZSk7
CisgICAgICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlU3Ryb2tlICYmICFzdHJva2UpCisgICAg
ICAgICAgICBzdHJva2UgPSBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgICAgICBlbHNlIGlmIChp
ZCA9PSBDU1NWYWx1ZU1hcmtlcnMgJiYgIW1hcmtlcnMpCisgICAgICAgICAgICBtYXJrZXJzID0g
Y29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIHBhaW50VHlwZUxpc3QuYXBwZW5kKGlkKTsKKyAgICB9IHdoaWxlICgh
cmFuZ2UuYXRFbmQoKSk7CisKKyAgICAvLyBBZnRlciBwYXJzaW5nIHdlIHNlcmlhbGl6ZSB0aGUg
cGFpbnQtb3JkZXIgbGlzdC4gU2luY2UgaXQgaXMgbm90IHBvc3NpYmxlIHRvCisgICAgLy8gcG9w
IGEgbGFzdCBsaXN0IGl0ZW1zIGZyb20gQ1NTVmFsdWVMaXN0IHdpdGhvdXQgYmlnZ2VyIGNvc3Qs
IHdlIGNyZWF0ZSB0aGUKKyAgICAvLyBsaXN0IGFmdGVyIHBhcnNpbmcuCisgICAgQ1NTVmFsdWVJ
RCBmaXJzdFBhaW50T3JkZXJUeXBlID0gcGFpbnRUeXBlTGlzdC5hdCgwKTsKKyAgICBDU1NWYWx1
ZUxpc3QqIHBhaW50T3JkZXJMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOworICAgIHN3aXRjaCAoZmlyc3RQYWludE9yZGVyVHlwZSkgeworICAgIGNhc2UgQ1NTVmFs
dWVGaWxsOgorICAgIGNhc2UgQ1NTVmFsdWVTdHJva2U6CisgICAgICAgIHBhaW50T3JkZXJMaXN0
LT5hcHBlbmQoZmlyc3RQYWludE9yZGVyVHlwZSA9PSBDU1NWYWx1ZUZpbGwgPyAqZmlsbCA6ICpz
dHJva2UpOworICAgICAgICBpZiAocGFpbnRUeXBlTGlzdC5zaXplKCkgPiAxKSB7CisgICAgICAg
ICAgICBpZiAocGFpbnRUeXBlTGlzdC5hdCgxKSA9PSBDU1NWYWx1ZU1hcmtlcnMpCisgICAgICAg
ICAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZCgqbWFya2Vycyk7CisgICAgICAgIH0KKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZU1hcmtlcnM6CisgICAgICAgIHBhaW50T3Jk
ZXJMaXN0LT5hcHBlbmQoKm1hcmtlcnMpOworICAgICAgICBpZiAocGFpbnRUeXBlTGlzdC5zaXpl
KCkgPiAxKSB7CisgICAgICAgICAgICBpZiAocGFpbnRUeXBlTGlzdC5hdCgxKSA9PSBDU1NWYWx1
ZVN0cm9rZSkKKyAgICAgICAgICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKCpzdHJva2Up
OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIHJldHVybiBwYWludE9yZGVyTGlzdDsKK30K
Kworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lTm9uZU9yVVJJKENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisg
ICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lVXJs
KHJhbmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lRmxleEJhc2lzKENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAg
Ly8gRklYTUU6IFN1cHBvcnQgaW50cmluc2ljIGRpbWVuc2lvbnMgdG9vLgorICAgIGlmIChyYW5n
ZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBjb25zdW1lSWRl
bnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQ
YXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworfQorCitzdGF0aWMgQ1NTVmFsdWUq
IGNvbnN1bWVTdHJva2VEYXNoYXJyYXkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7Cisg
ICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgIGlmIChpZCA9PSBDU1NW
YWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgQ1NT
VmFsdWVMaXN0KiBkYXNoZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7
CisgICAgZG8geworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogZGFzaCA9IGNvbnN1bWVMZW5n
dGhPclBlcmNlbnQocmFuZ2UsIFNWR0F0dHJpYnV0ZU1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2
ZSk7CisgICAgICAgIGlmICghZGFzaCB8fCAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFj
ZShyYW5nZSkgJiYgcmFuZ2UuYXRFbmQoKSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgZGFzaGVzLT5hcHBlbmQoKmRhc2gpOworICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVu
ZCgpKTsKKyAgICByZXR1cm4gZGFzaGVzOworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUq
IGNvbnN1bWVCYXNlbGluZVNoaWZ0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAg
IENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVCYXNlbGluZSB8fCBpZCA9PSBDU1NWYWx1ZVN1YiB8fCBpZCA9PSBDU1NWYWx1ZVN1cGVyKQor
ICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZUxl
bmd0aE9yUGVyY2VudChyYW5nZSwgU1ZHQXR0cmlidXRlTW9kZSwgVmFsdWVSYW5nZUFsbCk7Cit9
CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZVJ4T3JSeShDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVB
dXRvKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29u
c3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgU1ZHQXR0cmlidXRlTW9kZSwgVmFsdWVSYW5nZUFs
bCwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1l
Q3Vyc29yKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0
JiBjb250ZXh0LCBib29sIGluUXVpcmtzTW9kZSkKK3sKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3Qg
PSBudWxscHRyOworICAgIHdoaWxlIChDU1NWYWx1ZSogaW1hZ2UgPSBjb25zdW1lSW1hZ2UocmFu
Z2UsIGNvbnRleHQsIENvbnN1bWVHZW5lcmF0ZWRJbWFnZTo6Rm9yYmlkKSkgeworICAgICAgICBk
b3VibGUgbnVtOworICAgICAgICBJbnRQb2ludCBob3RTcG90KC0xLCAtMSk7CisgICAgICAgIGJv
b2wgaG90U3BvdFNwZWNpZmllZCA9IGZhbHNlOworICAgICAgICBpZiAoY29uc3VtZU51bWJlclJh
dyhyYW5nZSwgbnVtKSkgeworICAgICAgICAgICAgaG90U3BvdC5zZXRYKGludChudW0pKTsKKyAg
ICAgICAgICAgIGlmICghY29uc3VtZU51bWJlclJhdyhyYW5nZSwgbnVtKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGhvdFNwb3Quc2V0WShpbnQobnVtKSk7
CisgICAgICAgICAgICBob3RTcG90U3BlY2lmaWVkID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICghbGlzdCkKKyAgICAgICAgICAgIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNv
bW1hU2VwYXJhdGVkKCk7CisKKyAgICAgICAgbGlzdC0+YXBwZW5kKCpDU1NDdXJzb3JJbWFnZVZh
bHVlOjpjcmVhdGUoaW1hZ2UsIGhvdFNwb3RTcGVjaWZpZWQsIGhvdFNwb3QpKTsKKyAgICAgICAg
aWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVr
KCkuaWQoKTsKKyAgICBpZiAoIXJhbmdlLmF0RW5kKCkgJiYgY29udGV4dC51c2VDb3VudGVyKCkp
IHsKKyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0Wm9vbUluKQorICAgICAgICAgICAg
Y29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OlByZWZpeGVkQ3Vyc29yWm9v
bUluKTsKKyAgICAgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRab29tT3V0KQorICAg
ICAgICAgICAgY29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OlByZWZpeGVk
Q3Vyc29yWm9vbU91dCk7CisgICAgfQorICAgIENTU1ZhbHVlKiBjdXJzb3JUeXBlID0gbnVsbHB0
cjsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVIYW5kKSB7CisgICAgICAgIGlmICghaW5RdWlya3NN
b2RlKSAvLyBOb24tc3RhbmRhcmQgYmVoYXZpb3IKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICBjdXJzb3JUeXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZp
ZXIoQ1NTVmFsdWVQb2ludGVyKTsKKyAgICAgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRl
c3BhY2UoKTsKKyAgICB9IGVsc2UgaWYgKChpZCA+PSBDU1NWYWx1ZUF1dG8gJiYgaWQgPD0gQ1NT
VmFsdWVXZWJraXRab29tT3V0KSB8fCBpZCA9PSBDU1NWYWx1ZUNvcHkgfHwgaWQgPT0gQ1NTVmFs
dWVOb25lKSB7CisgICAgICAgIGN1cnNvclR5cGUgPSBjb25zdW1lSWRlbnQocmFuZ2UpOworICAg
IH0gZWxzZSB7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGlmICghbGlz
dCkKKyAgICAgICAgcmV0dXJuIGN1cnNvclR5cGU7CisgICAgbGlzdC0+YXBwZW5kKCpjdXJzb3JU
eXBlKTsKKyAgICByZXR1cm4gbGlzdDsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQXR0
cihDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MsIENTU1BhcnNlckNvbnRleHQgY29udGV4dCkKK3sK
KyAgICBpZiAoYXJncy5wZWVrKCkudHlwZSgpICE9IElkZW50VG9rZW4pCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgU3RyaW5nIGF0dHJOYW1lID0gYXJncy5jb25zdW1lSW5jbHVkaW5n
V2hpdGVzcGFjZSgpLnZhbHVlKCkudG9TdHJpbmcoKTsKKyAgICBpZiAoIWFyZ3MuYXRFbmQoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoY29udGV4dC5pc0hUTUxEb2N1bWVu
dCgpKQorICAgICAgICBhdHRyTmFtZSA9IGF0dHJOYW1lLmxvd2VyKCk7CisKKyAgICBDU1NGdW5j
dGlvblZhbHVlKiBhdHRyVmFsdWUgPSBDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUoQ1NTVmFsdWVB
dHRyKTsKKyAgICBhdHRyVmFsdWUtPmFwcGVuZCgqQ1NTQ3VzdG9tSWRlbnRWYWx1ZTo6Y3JlYXRl
KGF0dHJOYW1lKSk7CisgICAgcmV0dXJuIGF0dHJWYWx1ZTsKK30KKworc3RhdGljIENTU1ZhbHVl
KiBjb25zdW1lQ291bnRlckNvbnRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzLCBib29sIGNv
dW50ZXJzKQoreworICAgIENTU0N1c3RvbUlkZW50VmFsdWUqIGlkZW50aWZpZXIgPSBjb25zdW1l
Q3VzdG9tSWRlbnQoYXJncyk7CisgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIENTU1N0cmluZ1ZhbHVlKiBzZXBhcmF0b3IgPSBudWxscHRyOworICAg
IGlmICghY291bnRlcnMpIHsKKyAgICAgICAgc2VwYXJhdG9yID0gQ1NTU3RyaW5nVmFsdWU6OmNy
ZWF0ZShTdHJpbmcoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJ
bmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpIHx8IGFyZ3MucGVlaygpLnR5cGUoKSAhPSBTdHJpbmdU
b2tlbikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBzZXBhcmF0b3IgPSBD
U1NTdHJpbmdWYWx1ZTo6Y3JlYXRlKGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52
YWx1ZSgpLnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBsaXN0
U3R5bGUgPSBudWxscHRyOworICAgIGlmIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNl
KGFyZ3MpKSB7CisgICAgICAgIENTU1ZhbHVlSUQgaWQgPSBhcmdzLnBlZWsoKS5pZCgpOworICAg
ICAgICBpZiAoKGlkICE9IENTU1ZhbHVlTm9uZSAmJiAoaWQgPCBDU1NWYWx1ZURpc2MgfHwgaWQg
PiBDU1NWYWx1ZUthdGFrYW5hSXJvaGEpKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICBsaXN0U3R5bGUgPSBjb25zdW1lSWRlbnQoYXJncyk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgbGlzdFN0eWxlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NT
VmFsdWVEZWNpbWFsKTsKKyAgICB9CisKKyAgICBpZiAoIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIENTU0NvdW50ZXJWYWx1ZTo6Y3JlYXRlKGlkZW50
aWZpZXIsIGxpc3RTdHlsZSwgc2VwYXJhdG9yKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25z
dW1lQ29udGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyQ29udGV4dCBj
b250ZXh0KQoreworICAgIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVOb25lLCBDU1NWYWx1ZU5v
cm1hbD4ocmFuZ2UucGVlaygpLmlkKCkpKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJh
bmdlKTsKKworICAgIENTU1ZhbHVlTGlzdCogdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVT
cGFjZVNlcGFyYXRlZCgpOworCisgICAgZG8geworICAgICAgICBDU1NWYWx1ZSogcGFyc2VkVmFs
dWUgPSBjb25zdW1lSW1hZ2UocmFuZ2UsIGNvbnRleHQpOworICAgICAgICBpZiAoIXBhcnNlZFZh
bHVlKQorICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVPcGVu
UXVvdGUsIENTU1ZhbHVlQ2xvc2VRdW90ZSwgQ1NTVmFsdWVOb09wZW5RdW90ZSwgQ1NTVmFsdWVO
b0Nsb3NlUXVvdGU+KHJhbmdlKTsKKyAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkKKyAgICAgICAg
ICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZVN0cmluZyhyYW5nZSk7CisgICAgICAgIGlmICghcGFy
c2VkVmFsdWUpIHsKKyAgICAgICAgICAgIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09
IENTU1ZhbHVlQXR0cikKKyAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVBdHRy
KGNvbnN1bWVGdW5jdGlvbihyYW5nZSksIGNvbnRleHQpOworICAgICAgICAgICAgZWxzZSBpZiAo
cmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUNvdW50ZXIpCisgICAgICAgICAg
ICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lQ291bnRlckNvbnRlbnQoY29uc3VtZUZ1bmN0aW9u
KHJhbmdlKSwgZmFsc2UpOworICAgICAgICAgICAgZWxzZSBpZiAocmFuZ2UucGVlaygpLmZ1bmN0
aW9uSWQoKSA9PSBDU1NWYWx1ZUNvdW50ZXJzKQorICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVl
ID0gY29uc3VtZUNvdW50ZXJDb250ZW50KGNvbnN1bWVGdW5jdGlvbihyYW5nZSksIHRydWUpOwor
ICAgICAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgfQorICAgICAgICB2YWx1ZXMtPmFwcGVuZCgqcGFyc2VkVmFsdWUpOwor
ICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgpKTsKKworICAgIHJldHVybiB2YWx1ZXM7Cit9CisK
K3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZVBlcnNwZWN0aXZlKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU1Byb3BlcnR5
SUQgdW5yZXNvbHZlZFByb3BlcnR5KQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBD
U1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1Bh
cnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgIGlmICghcGFyc2VkVmFsdWUgJiYgKHVucmVz
b2x2ZWRQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUFsaWFzV2Via2l0UGVyc3BlY3RpdmUpKSB7Cisg
ICAgICAgIGRvdWJsZSBwZXJzcGVjdGl2ZTsKKyAgICAgICAgaWYgKCFjb25zdW1lTnVtYmVyUmF3
KHJhbmdlLCBwZXJzcGVjdGl2ZSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcGFyc2VkVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHBlcnNwZWN0aXZlLCBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBpeGVscyk7CisgICAgfQorICAgIGlmIChwYXJz
ZWRWYWx1ZSAmJiAocGFyc2VkVmFsdWUtPmlzQ2FsY3VsYXRlZCgpIHx8IHBhcnNlZFZhbHVlLT5n
ZXREb3VibGVWYWx1ZSgpID4gMCkpCisgICAgICAgIHJldHVybiBwYXJzZWRWYWx1ZTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIENTU1ZhbHVlTGlzdCogY29uc3VtZVBvc2l0aW9u
TGlzdChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJN
b2RlKQoreworICAgIENTU1ZhbHVlTGlzdCogcG9zaXRpb25zID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVDb21tYVNlcGFyYXRlZCgpOworICAgIGRvIHsKKyAgICAgICAgQ1NTVmFsdWUqIHBvc2l0aW9u
ID0gY29uc3VtZVBvc2l0aW9uKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrOjpG
b3JiaWQpOworICAgICAgICBpZiAoIXBvc2l0aW9uKQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIHBvc2l0aW9ucy0+YXBwZW5kKCpwb3NpdGlvbik7CisgICAgfSB3aGlsZSAo
Y29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpOworICAgIHJldHVybiBwb3Np
dGlvbnM7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVNjcm9sbFNuYXBDb29yZGluYXRl
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUp
Cit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAg
cmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVQb3NpdGlvbkxp
c3QocmFuZ2UsIGNzc1BhcnNlck1vZGUpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVT
Y3JvbGxTbmFwUG9pbnRzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2Rl
IGNzc1BhcnNlck1vZGUpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVl
Tm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgaWYgKHJhbmdl
LnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVSZXBlYXQpIHsKKyAgICAgICAgQ1NTUGFy
c2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlKTsKKyAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHBhcnNlZFZhbHVlID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdz
LCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICBpZiAoYXJn
cy5hdEVuZCgpICYmIHBhcnNlZFZhbHVlICYmIChwYXJzZWRWYWx1ZS0+aXNDYWxjdWxhdGVkKCkg
fHwgcGFyc2VkVmFsdWUtPmdldERvdWJsZVZhbHVlKCkgPiAwKSkgeworICAgICAgICAgICAgQ1NT
RnVuY3Rpb25WYWx1ZSogcmVzdWx0ID0gQ1NTRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKENTU1ZhbHVl
UmVwZWF0KTsKKyAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBudWxs
cHRyOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVCb3JkZXJSYWRpdXNDb3JuZXIoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sK
KyAgICBDU1NWYWx1ZSogcGFyc2VkVmFsdWUxID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5n
ZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICBpZiAoIXBhcnNl
ZFZhbHVlMSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIHBhcnNlZFZh
bHVlMiA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVl
UmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgaWYgKCFwYXJzZWRWYWx1ZTIpCisgICAgICAgIHBhcnNl
ZFZhbHVlMiA9IHBhcnNlZFZhbHVlMTsKKyAgICByZXR1cm4gQ1NTVmFsdWVQYWlyOjpjcmVhdGUo
cGFyc2VkVmFsdWUxLCBwYXJzZWRWYWx1ZTIsIENTU1ZhbHVlUGFpcjo6RHJvcElkZW50aWNhbFZh
bHVlcyk7Cit9CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZVZlcnRpY2FsQWxp
Z24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9k
ZSkKK3sKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcGFyc2VkVmFsdWUgPSBjb25zdW1lSWRlbnRS
YW5nZShyYW5nZSwgQ1NTVmFsdWVCYXNlbGluZSwgQ1NTVmFsdWVXZWJraXRCYXNlbGluZU1pZGRs
ZSk7CisgICAgaWYgKCFwYXJzZWRWYWx1ZSkKKyAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1l
TGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsLCBVbml0
bGVzc1F1aXJrOjpBbGxvdyk7CisgICAgcmV0dXJuIHBhcnNlZFZhbHVlOworfQorCitzdGF0aWMg
Q1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVTaGFwZVJhZGl1cyhDU1NQYXJzZXJUb2tlblJhbmdl
JiBhcmdzLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgaWYgKGlkZW50TWF0
Y2hlczxDU1NWYWx1ZUNsb3Nlc3RTaWRlLCBDU1NWYWx1ZUZhcnRoZXN0U2lkZT4oYXJncy5wZWVr
KCkuaWQoKSkpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQoYXJncyk7CisgICAgcmV0dXJu
IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5v
bk5lZ2F0aXZlKTsKK30KKworc3RhdGljIENTU0Jhc2ljU2hhcGVDaXJjbGVWYWx1ZSogY29uc3Vt
ZUJhc2ljU2hhcGVDaXJjbGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFy
c2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICAvLyBzcGVjOiBodHRwczovL2RyYWZ0cy5jc3N3
Zy5vcmcvY3NzLXNoYXBlcy8jc3VwcG9ydGVkLWJhc2ljLXNoYXBlcworICAgIC8vIGNpcmNsZSgg
WzxzaGFwZS1yYWRpdXM+XT8gW2F0IDxwb3NpdGlvbj5dPyApCisgICAgQ1NTQmFzaWNTaGFwZUNp
cmNsZVZhbHVlKiBzaGFwZSA9IENTU0Jhc2ljU2hhcGVDaXJjbGVWYWx1ZTo6Y3JlYXRlKCk7Cisg
ICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlKiByYWRpdXMgPSBjb25zdW1lU2hhcGVSYWRpdXMoYXJn
cywgY29udGV4dC5tb2RlKCkpKQorICAgICAgICBzaGFwZS0+c2V0UmFkaXVzKHJhZGl1cyk7Cisg
ICAgaWYgKGNvbnN1bWVJZGVudDxDU1NWYWx1ZUF0PihhcmdzKSkgeworICAgICAgICBDU1NWYWx1
ZSogY2VudGVyWCA9IG51bGxwdHI7CisgICAgICAgIENTU1ZhbHVlKiBjZW50ZXJZID0gbnVsbHB0
cjsKKyAgICAgICAgaWYgKCFjb25zdW1lUG9zaXRpb24oYXJncywgY29udGV4dC5tb2RlKCksIFVu
aXRsZXNzUXVpcms6OkZvcmJpZCwgY2VudGVyWCwgY2VudGVyWSkpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgc2hhcGUtPnNldENlbnRlclgoY2VudGVyWCk7CisgICAgICAg
IHNoYXBlLT5zZXRDZW50ZXJZKGNlbnRlclkpOworICAgIH0KKyAgICByZXR1cm4gc2hhcGU7Cit9
CisKK3N0YXRpYyBDU1NCYXNpY1NoYXBlRWxsaXBzZVZhbHVlKiBjb25zdW1lQmFzaWNTaGFwZUVs
bGlwc2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYg
Y29udGV4dCkKK3sKKyAgICAvLyBzcGVjOiBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXNo
YXBlcy8jc3VwcG9ydGVkLWJhc2ljLXNoYXBlcworICAgIC8vIGVsbGlwc2UoIFs8c2hhcGUtcmFk
aXVzPnsyfV0/IFthdCA8cG9zaXRpb24+XT8gKQorICAgIENTU0Jhc2ljU2hhcGVFbGxpcHNlVmFs
dWUqIHNoYXBlID0gQ1NTQmFzaWNTaGFwZUVsbGlwc2VWYWx1ZTo6Y3JlYXRlKCk7CisgICAgaWYg
KENTU1ByaW1pdGl2ZVZhbHVlKiByYWRpdXNYID0gY29uc3VtZVNoYXBlUmFkaXVzKGFyZ3MsIGNv
bnRleHQubW9kZSgpKSkgeworICAgICAgICBzaGFwZS0+c2V0UmFkaXVzWChyYWRpdXNYKTsKKyAg
ICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlKiByYWRpdXNZID0gY29uc3VtZVNoYXBlUmFkaXVz
KGFyZ3MsIGNvbnRleHQubW9kZSgpKSkKKyAgICAgICAgICAgIHNoYXBlLT5zZXRSYWRpdXNZKHJh
ZGl1c1kpOworICAgIH0KKyAgICBpZiAoY29uc3VtZUlkZW50PENTU1ZhbHVlQXQ+KGFyZ3MpKSB7
CisgICAgICAgIENTU1ZhbHVlKiBjZW50ZXJYID0gbnVsbHB0cjsKKyAgICAgICAgQ1NTVmFsdWUq
IGNlbnRlclkgPSBudWxscHRyOworICAgICAgICBpZiAoIWNvbnN1bWVQb3NpdGlvbihhcmdzLCBj
b250ZXh0Lm1vZGUoKSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBjZW50ZXJYLCBjZW50ZXJZKSkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBzaGFwZS0+c2V0Q2VudGVyWChj
ZW50ZXJYKTsKKyAgICAgICAgc2hhcGUtPnNldENlbnRlclkoY2VudGVyWSk7CisgICAgfQorICAg
IHJldHVybiBzaGFwZTsKK30KKworc3RhdGljIENTU0Jhc2ljU2hhcGVQb2x5Z29uVmFsdWUqIGNv
bnN1bWVCYXNpY1NoYXBlUG9seWdvbihDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBD
U1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIENTU0Jhc2ljU2hhcGVQb2x5Z29uVmFs
dWUqIHNoYXBlID0gQ1NTQmFzaWNTaGFwZVBvbHlnb25WYWx1ZTo6Y3JlYXRlKCk7CisgICAgaWYg
KGlkZW50TWF0Y2hlczxDU1NWYWx1ZUV2ZW5vZGQsIENTU1ZhbHVlTm9uemVybz4oYXJncy5wZWVr
KCkuaWQoKSkpIHsKKyAgICAgICAgc2hhcGUtPnNldFdpbmRSdWxlKGFyZ3MuY29uc3VtZUluY2x1
ZGluZ1doaXRlc3BhY2UoKS5pZCgpID09IENTU1ZhbHVlRXZlbm9kZCA/IFJVTEVfRVZFTk9ERCA6
IFJVTEVfTk9OWkVSTyk7CisgICAgICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVz
cGFjZShhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGRv
IHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHhMZW5ndGggPSBjb25zdW1lTGVuZ3RoT3JQ
ZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgaWYg
KCF4TGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiB5TGVuZ3RoID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjb250ZXh0
Lm1vZGUoKSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGlmICgheUxlbmd0aCkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICBzaGFwZS0+YXBwZW5kUG9pbnQoeExlbmd0aCwg
eUxlbmd0aCk7CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShh
cmdzKSk7CisgICAgcmV0dXJuIHNoYXBlOworfQorCitzdGF0aWMgdm9pZCBjb21wbGV0ZTRTaWRl
cyhDU1NQcmltaXRpdmVWYWx1ZSogc2lkZVs0XSkKK3sKKyAgICBpZiAoc2lkZVszXSkKKyAgICAg
ICAgcmV0dXJuOworICAgIGlmICghc2lkZVsyXSkgeworICAgICAgICBpZiAoIXNpZGVbMV0pCisg
ICAgICAgICAgICBzaWRlWzFdID0gc2lkZVswXTsKKyAgICAgICAgc2lkZVsyXSA9IHNpZGVbMF07
CisgICAgfQorICAgIHNpZGVbM10gPSBzaWRlWzFdOworfQorCitzdGF0aWMgYm9vbCBjb25zdW1l
UmFkaWkoQ1NTUHJpbWl0aXZlVmFsdWUqIGhvcml6b250YWxSYWRpaVs0XSwgQ1NTUHJpbWl0aXZl
VmFsdWUqIHZlcnRpY2FsUmFkaWlbNF0sIENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQ
YXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIGJvb2wgdXNlTGVnYWN5UGFyc2luZykKK3sKKyAgICB1
bnNpZ25lZCBpID0gMDsKKyAgICBmb3IgKDsgaSA8IDQgJiYgIXJhbmdlLmF0RW5kKCkgJiYgcmFu
Z2UucGVlaygpLnR5cGUoKSAhPSBEZWxpbWl0ZXJUb2tlbjsgKytpKSB7CisgICAgICAgIGhvcml6
b250YWxSYWRpaVtpXSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1v
ZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgIGlmICghaG9yaXpvbnRhbFJhZGlp
W2ldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAoIWhvcml6b250
YWxSYWRpaVswXSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChyYW5nZS5hdEVuZCgp
KSB7CisgICAgICAgIC8vIExlZ2FjeSBzeW50YXg6IC13ZWJraXQtYm9yZGVyLXJhZGl1czogbDEg
bDI7IGlzIGVxdWl2YWxlbnQgdG8gYm9yZGVyLXJhZGl1czogbDEgLyBsMjsKKyAgICAgICAgaWYg
KHVzZUxlZ2FjeVBhcnNpbmcgJiYgaSA9PSAyKSB7CisgICAgICAgICAgICB2ZXJ0aWNhbFJhZGlp
WzBdID0gaG9yaXpvbnRhbFJhZGlpWzFdOworICAgICAgICAgICAgaG9yaXpvbnRhbFJhZGlpWzFd
ID0gbnVsbHB0cjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbXBsZXRlNFNpZGVz
KGhvcml6b250YWxSYWRpaSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
NDsgKytpKQorICAgICAgICAgICAgICAgIHZlcnRpY2FsUmFkaWlbaV0gPSBob3Jpem9udGFsUmFk
aWlbaV07CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7
CisgICAgICAgIGlmICghY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCA0ICYmICFy
YW5nZS5hdEVuZCgpOyArK2kpIHsKKyAgICAgICAgICAgIHZlcnRpY2FsUmFkaWlbaV0gPSBjb25z
dW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVn
YXRpdmUpOworICAgICAgICAgICAgaWYgKCF2ZXJ0aWNhbFJhZGlpW2ldKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXZlcnRpY2FsUmFkaWlb
MF0gfHwgIXJhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIGNvbXBsZXRlNFNpZGVzKGhvcml6b250YWxSYWRpaSk7CisgICAgY29tcGxldGU0U2lkZXMo
dmVydGljYWxSYWRpaSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBDU1NCYXNpY1No
YXBlSW5zZXRWYWx1ZSogY29uc3VtZUJhc2ljU2hhcGVJbnNldChDU1NQYXJzZXJUb2tlblJhbmdl
JiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIENTU0Jhc2lj
U2hhcGVJbnNldFZhbHVlKiBzaGFwZSA9IENTU0Jhc2ljU2hhcGVJbnNldFZhbHVlOjpjcmVhdGUo
KTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogdG9wID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChh
cmdzLCBjb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKCF0b3ApCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiByaWdodCA9IGNvbnN1
bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VBbGwpOwor
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBib3R0b20gPSBudWxscHRyOworICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBsZWZ0ID0gbnVsbHB0cjsKKyAgICBpZiAocmlnaHQpIHsKKyAgICAgICAgYm90dG9t
ID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5n
ZUFsbCk7CisgICAgICAgIGlmIChib3R0b20pCisgICAgICAgICAgICBsZWZ0ID0gY29uc3VtZUxl
bmd0aE9yUGVyY2VudChhcmdzLCBjb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZUFsbCk7CisgICAg
fQorICAgIGlmIChsZWZ0KQorICAgICAgICBzaGFwZS0+dXBkYXRlU2hhcGVTaXplNFZhbHVlcyh0
b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQpOworICAgIGVsc2UgaWYgKGJvdHRvbSkKKyAgICAgICAg
c2hhcGUtPnVwZGF0ZVNoYXBlU2l6ZTNWYWx1ZXModG9wLCByaWdodCwgYm90dG9tKTsKKyAgICBl
bHNlIGlmIChyaWdodCkKKyAgICAgICAgc2hhcGUtPnVwZGF0ZVNoYXBlU2l6ZTJWYWx1ZXModG9w
LCByaWdodCk7CisgICAgZWxzZQorICAgICAgICBzaGFwZS0+dXBkYXRlU2hhcGVTaXplMVZhbHVl
KHRvcCk7CisKKyAgICBpZiAoY29uc3VtZUlkZW50PENTU1ZhbHVlUm91bmQ+KGFyZ3MpKSB7Cisg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBob3Jpem9udGFsUmFkaWlbNF0gPSB7IDAgfTsKKyAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZlcnRpY2FsUmFkaWlbNF0gPSB7IDAgfTsKKyAgICAg
ICAgaWYgKCFjb25zdW1lUmFkaWkoaG9yaXpvbnRhbFJhZGlpLCB2ZXJ0aWNhbFJhZGlpLCBhcmdz
LCBjb250ZXh0Lm1vZGUoKSwgZmFsc2UpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHNoYXBlLT5zZXRUb3BMZWZ0UmFkaXVzKENTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhvcml6
b250YWxSYWRpaVswXSwgdmVydGljYWxSYWRpaVswXSwgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRp
Y2FsVmFsdWVzKSk7CisgICAgICAgIHNoYXBlLT5zZXRUb3BSaWdodFJhZGl1cyhDU1NWYWx1ZVBh
aXI6OmNyZWF0ZShob3Jpem9udGFsUmFkaWlbMV0sIHZlcnRpY2FsUmFkaWlbMV0sIENTU1ZhbHVl
UGFpcjo6RHJvcElkZW50aWNhbFZhbHVlcykpOworICAgICAgICBzaGFwZS0+c2V0Qm90dG9tUmln
aHRSYWRpdXMoQ1NTVmFsdWVQYWlyOjpjcmVhdGUoaG9yaXpvbnRhbFJhZGlpWzJdLCB2ZXJ0aWNh
bFJhZGlpWzJdLCBDU1NWYWx1ZVBhaXI6OkRyb3BJZGVudGljYWxWYWx1ZXMpKTsKKyAgICAgICAg
c2hhcGUtPnNldEJvdHRvbUxlZnRSYWRpdXMoQ1NTVmFsdWVQYWlyOjpjcmVhdGUoaG9yaXpvbnRh
bFJhZGlpWzNdLCB2ZXJ0aWNhbFJhZGlpWzNdLCBDU1NWYWx1ZVBhaXI6OkRyb3BJZGVudGljYWxW
YWx1ZXMpKTsKKyAgICB9CisgICAgcmV0dXJuIHNoYXBlOworfQorCitzdGF0aWMgQ1NTVmFsdWUq
IGNvbnN1bWVCYXNpY1NoYXBlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQ
YXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIENTU1ZhbHVlKiBzaGFwZSA9IG51bGxwdHI7
CisgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgIT0gRnVuY3Rpb25Ub2tlbikKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5mdW5jdGlv
bklkKCk7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSByYW5nZTsKKyAgICBD
U1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2VDb3B5KTsKKyAg
ICBpZiAoaWQgPT0gQ1NTVmFsdWVDaXJjbGUpCisgICAgICAgIHNoYXBlID0gY29uc3VtZUJhc2lj
U2hhcGVDaXJjbGUoYXJncywgY29udGV4dCk7CisgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVF
bGxpcHNlKQorICAgICAgICBzaGFwZSA9IGNvbnN1bWVCYXNpY1NoYXBlRWxsaXBzZShhcmdzLCBj
b250ZXh0KTsKKyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVBvbHlnb24pCisgICAgICAgIHNo
YXBlID0gY29uc3VtZUJhc2ljU2hhcGVQb2x5Z29uKGFyZ3MsIGNvbnRleHQpOworICAgIGVsc2Ug
aWYgKGlkID09IENTU1ZhbHVlSW5zZXQpCisgICAgICAgIHNoYXBlID0gY29uc3VtZUJhc2ljU2hh
cGVJbnNldChhcmdzLCBjb250ZXh0KTsKKyAgICBpZiAoIXNoYXBlIHx8ICFhcmdzLmF0RW5kKCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJhbmdlID0gcmFuZ2VDb3B5OworICAgIHJl
dHVybiBzaGFwZTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lV2Via2l0Q2xpcFBhdGgo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRl
eHQpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgaWYgKENTU1VSSVZhbHVlKiB1cmwg
PSBjb25zdW1lVXJsKHJhbmdlKSkKKyAgICAgICAgcmV0dXJuIHVybDsKKyAgICByZXR1cm4gY29u
c3VtZUJhc2ljU2hhcGUocmFuZ2UsIGNvbnRleHQpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNv
bnN1bWVTaGFwZU91dHNpZGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1Bh
cnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgaWYgKENTU1ZhbHVlKiBpbWFnZVZhbHVlID0g
Y29uc3VtZUltYWdlT3JOb25lKHJhbmdlLCBjb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGltYWdl
VmFsdWU7CisgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFj
ZVNlcGFyYXRlZCgpOworICAgIGlmIChDU1NWYWx1ZSogYm94VmFsdWUgPSBjb25zdW1lSWRlbnQ8
Q1NTVmFsdWVDb250ZW50Qm94LCBDU1NWYWx1ZVBhZGRpbmdCb3gsIENTU1ZhbHVlQm9yZGVyQm94
LCBDU1NWYWx1ZU1hcmdpbkJveD4ocmFuZ2UpKQorICAgICAgICBsaXN0LT5hcHBlbmQoKmJveFZh
bHVlKTsKKyAgICBpZiAoQ1NTVmFsdWUqIHNoYXBlVmFsdWUgPSBjb25zdW1lQmFzaWNTaGFwZShy
YW5nZSwgY29udGV4dCkpIHsKKyAgICAgICAgbGlzdC0+YXBwZW5kKCpzaGFwZVZhbHVlKTsKKyAg
ICAgICAgaWYgKGxpc3QtPmxlbmd0aCgpIDwgMikgeworICAgICAgICAgICAgaWYgKENTU1ZhbHVl
KiBib3hWYWx1ZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUNvbnRlbnRCb3gsIENTU1ZhbHVlUGFk
ZGluZ0JveCwgQ1NTVmFsdWVCb3JkZXJCb3gsIENTU1ZhbHVlTWFyZ2luQm94PihyYW5nZSkpCisg
ICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKCpib3hWYWx1ZSk7CisgICAgICAgIH0KKyAgICB9
CisgICAgaWYgKCFsaXN0LT5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUNvbnRlbnREaXN0cmli
dXRpb25PdmVyZmxvd1Bvc2l0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAg
IGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlQmFzZWxpbmUsIENTU1Zh
bHVlTGFzdEJhc2VsaW5lPihyYW5nZS5wZWVrKCkuaWQoKSkpCisgICAgICAgIHJldHVybiBDU1ND
b250ZW50RGlzdHJpYnV0aW9uVmFsdWU6OmNyZWF0ZShDU1NWYWx1ZUludmFsaWQsIHJhbmdlLmNv
bnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKSwgQ1NTVmFsdWVJbnZhbGlkKTsKKworICAg
IENTU1ZhbHVlSUQgZGlzdHJpYnV0aW9uID0gQ1NTVmFsdWVJbnZhbGlkOworICAgIENTU1ZhbHVl
SUQgcG9zaXRpb24gPSBDU1NWYWx1ZUludmFsaWQ7CisgICAgQ1NTVmFsdWVJRCBvdmVyZmxvdyA9
IENTU1ZhbHVlSW52YWxpZDsKKyAgICBkbyB7CisgICAgICAgIENTU1ZhbHVlSUQgaWQgPSByYW5n
ZS5wZWVrKCkuaWQoKTsKKyAgICAgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZVNwYWNlQmV0
d2VlbiwgQ1NTVmFsdWVTcGFjZUFyb3VuZCwgQ1NTVmFsdWVTcGFjZUV2ZW5seSwgQ1NTVmFsdWVT
dHJldGNoPihpZCkpIHsKKyAgICAgICAgICAgIGlmIChkaXN0cmlidXRpb24gIT0gQ1NTVmFsdWVJ
bnZhbGlkKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgZGlz
dHJpYnV0aW9uID0gaWQ7CisgICAgICAgIH0gZWxzZSBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVl
U3RhcnQsIENTU1ZhbHVlRW5kLCBDU1NWYWx1ZUNlbnRlciwgQ1NTVmFsdWVGbGV4U3RhcnQsIENT
U1ZhbHVlRmxleEVuZCwgQ1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0PihpZCkpIHsKKyAgICAg
ICAgICAgIGlmIChwb3NpdGlvbiAhPSBDU1NWYWx1ZUludmFsaWQpCisgICAgICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBwb3NpdGlvbiA9IGlkOworICAgICAgICB9IGVs
c2UgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZVVuc2FmZSwgQ1NTVmFsdWVTYWZlPihpZCkpIHsK
KyAgICAgICAgICAgIGlmIChvdmVyZmxvdyAhPSBDU1NWYWx1ZUludmFsaWQpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBvdmVyZmxvdyA9IGlkOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAg
ICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICB9IHdoaWxlICghcmFu
Z2UuYXRFbmQoKSk7CisKKyAgICAvLyBUaGUgZ3JhbW1hciBzdGF0ZXMgdGhhdCB3ZSBzaG91bGQg
aGF2ZSBhdCBsZWFzdCA8Y29udGVudC1kaXN0cmlidXRpb24+IG9yIDxjb250ZW50LXBvc2l0aW9u
Pi4KKyAgICBpZiAocG9zaXRpb24gPT0gQ1NTVmFsdWVJbnZhbGlkICYmIGRpc3RyaWJ1dGlvbiA9
PSBDU1NWYWx1ZUludmFsaWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gVGhl
IGdyYW1tYXIgc3RhdGVzIHRoYXQgPG92ZXJmbG93LXBvc2l0aW9uPiBtdXN0IGJlIGFzc29jaWF0
ZWQgdG8gPGNvbnRlbnQtcG9zaXRpb24+LgorICAgIGlmIChvdmVyZmxvdyAhPSBDU1NWYWx1ZUlu
dmFsaWQgJiYgcG9zaXRpb24gPT0gQ1NTVmFsdWVJbnZhbGlkKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIHJldHVybiBDU1NDb250ZW50RGlzdHJpYnV0aW9uVmFsdWU6OmNyZWF0ZShk
aXN0cmlidXRpb24sIHBvc2l0aW9uLCBvdmVyZmxvdyk7Cit9CisKK3N0YXRpYyBDU1NQcmltaXRp
dmVWYWx1ZSogY29uc3VtZUJvcmRlckltYWdlUmVwZWF0S2V5d29yZChDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlU3RyZXRjaCwg
Q1NTVmFsdWVSZXBlYXQsIENTU1ZhbHVlU3BhY2UsIENTU1ZhbHVlUm91bmQ+KHJhbmdlKTsKK30K
Kworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQm9yZGVySW1hZ2VSZXBlYXQoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGhvcml6b250YWwgPSBj
b25zdW1lQm9yZGVySW1hZ2VSZXBlYXRLZXl3b3JkKHJhbmdlKTsKKyAgICBpZiAoIWhvcml6b250
YWwpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2ZXJ0
aWNhbCA9IGNvbnN1bWVCb3JkZXJJbWFnZVJlcGVhdEtleXdvcmQocmFuZ2UpOworICAgIGlmICgh
dmVydGljYWwpCisgICAgICAgIHZlcnRpY2FsID0gaG9yaXpvbnRhbDsKKyAgICByZXR1cm4gQ1NT
VmFsdWVQYWlyOjpjcmVhdGUoaG9yaXpvbnRhbCwgdmVydGljYWwsIENTU1ZhbHVlUGFpcjo6RHJv
cElkZW50aWNhbFZhbHVlcyk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUJvcmRlcklt
YWdlU2xpY2UoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UpCit7CisgICAgYm9vbCBmaWxsID0gY29uc3VtZUlkZW50PENTU1ZhbHVlRmlsbD4ocmFuZ2Up
OworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzbGljZXNbNF0gPSB7IDAgfTsKKworICAgIGZvciAo
c2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCA0OyArK2luZGV4KSB7CisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiB2YWx1ZSA9IGNvbnN1bWVQZXJjZW50KHJhbmdlLCBWYWx1ZVJhbmdlTm9uTmVn
YXRpdmUpOworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgdmFsdWUgPSBjb25zdW1l
TnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICBpZiAoIXZhbHVl
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHNsaWNlc1tpbmRleF0gPSB2YWx1ZTsKKyAg
ICB9CisgICAgaWYgKCFzbGljZXNbMF0pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlm
IChjb25zdW1lSWRlbnQ8Q1NTVmFsdWVGaWxsPihyYW5nZSkpIHsKKyAgICAgICAgaWYgKGZpbGwp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgZmlsbCA9IHRydWU7CisgICAg
fQorICAgIGNvbXBsZXRlNFNpZGVzKHNsaWNlcyk7CisgICAgLy8gRklYTUU6IEZvciBiYWNrd2Fy
ZHMgY29tcGF0aWJpbGl0eSwgLXdlYmtpdC1ib3JkZXItaW1hZ2UsIC13ZWJraXQtbWFzay1ib3gt
aW1hZ2UgYW5kIC13ZWJraXQtYm94LXJlZmxlY3QgaGF2ZSB0byBkbyBhIGZpbGwgYnkgZGVmYXVs
dC4KKyAgICAvLyBGSVhNRTogV2hhdCBkbyB3ZSBkbyB3aXRoIC13ZWJraXQtYm94LXJlZmxlY3Qg
YW5kIC13ZWJraXQtbWFzay1ib3gtaW1hZ2U/IFByb2JhYmx5IGp1c3QgaGF2ZSB0byBsZWF2ZSB0
aGVtIGZpbGxpbmcuLi4KKyAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJJbWFnZSB8fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSB8fCBw
cm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3QpCisgICAgICAgIGZpbGwgPSB0
cnVlOworICAgIHJldHVybiBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU6OmNyZWF0ZShDU1NRdWFk
VmFsdWU6OmNyZWF0ZShzbGljZXNbMF0sIHNsaWNlc1sxXSwgc2xpY2VzWzJdLCBzbGljZXNbM10s
IENTU1F1YWRWYWx1ZTo6U2VyaWFsaXplQXNRdWFkKSwgZmlsbCk7Cit9CisKK3N0YXRpYyBDU1NW
YWx1ZSogY29uc3VtZUJvcmRlckltYWdlT3V0c2V0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
KQoreworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBvdXRzZXRzWzRdID0geyAwIH07CisKKyAgICBD
U1NQcmltaXRpdmVWYWx1ZSogdmFsdWUgPSBudWxscHRyOworICAgIGZvciAoc2l6ZV90IGluZGV4
ID0gMDsgaW5kZXggPCA0OyArK2luZGV4KSB7CisgICAgICAgIHZhbHVlID0gY29uc3VtZU51bWJl
cihyYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAg
ICAgICAgICAgIHZhbHVlID0gY29uc3VtZUxlbmd0aChyYW5nZSwgSFRNTFN0YW5kYXJkTW9kZSwg
VmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBvdXRzZXRzW2luZGV4XSA9IHZhbHVlOworICAgIH0KKyAgICBpZiAo
IW91dHNldHNbMF0pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGNvbXBsZXRlNFNpZGVz
KG91dHNldHMpOworICAgIHJldHVybiBDU1NRdWFkVmFsdWU6OmNyZWF0ZShvdXRzZXRzWzBdLCBv
dXRzZXRzWzFdLCBvdXRzZXRzWzJdLCBvdXRzZXRzWzNdLCBDU1NRdWFkVmFsdWU6OlNlcmlhbGl6
ZUFzUXVhZCk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUJvcmRlckltYWdlV2lkdGgo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHdp
ZHRoc1s0XSA9IHsgMCB9OworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlID0gbnVsbHB0
cjsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgNDsgKytpbmRleCkgeworICAg
ICAgICB2YWx1ZSA9IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7
CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICB2YWx1ZSA9IGNvbnN1bWVMZW5ndGhP
clBlcmNlbnQocmFuZ2UsIEhUTUxTdGFuZGFyZE1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwg
VW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAg
IHZhbHVlID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQXV0bz4ocmFuZ2UpOworICAgICAgICBpZiAo
IXZhbHVlKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHdpZHRoc1tpbmRleF0gPSB2YWx1
ZTsKKyAgICB9CisgICAgaWYgKCF3aWR0aHNbMF0pCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIGNvbXBsZXRlNFNpZGVzKHdpZHRocyk7CisgICAgcmV0dXJuIENTU1F1YWRWYWx1ZTo6Y3Jl
YXRlKHdpZHRoc1swXSwgd2lkdGhzWzFdLCB3aWR0aHNbMl0sIHdpZHRoc1szXSwgQ1NTUXVhZFZh
bHVlOjpTZXJpYWxpemVBc1F1YWQpOworfQorCitzdGF0aWMgYm9vbCBjb25zdW1lQm9yZGVySW1h
Z2VDb21wb25lbnRzKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBDU1NWYWx1ZSomIHNvdXJj
ZSwKKyAgICBDU1NWYWx1ZSomIHNsaWNlLCBDU1NWYWx1ZSomIHdpZHRoLCBDU1NWYWx1ZSomIG91
dHNldCwgQ1NTVmFsdWUqJiByZXBlYXQpCit7CisgICAgZG8geworICAgICAgICBpZiAoIXNvdXJj
ZSkgeworICAgICAgICAgICAgc291cmNlID0gY29uc3VtZUltYWdlT3JOb25lKHJhbmdlLCBjb250
ZXh0KTsKKyAgICAgICAgICAgIGlmIChzb3VyY2UpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFyZXBlYXQpIHsKKyAgICAgICAgICAgIHJlcGVhdCA9
IGNvbnN1bWVCb3JkZXJJbWFnZVJlcGVhdChyYW5nZSk7CisgICAgICAgICAgICBpZiAocmVwZWF0
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICghc2xp
Y2UpIHsKKyAgICAgICAgICAgIHNsaWNlID0gY29uc3VtZUJvcmRlckltYWdlU2xpY2UocHJvcGVy
dHksIHJhbmdlKTsKKyAgICAgICAgICAgIGlmIChzbGljZSkgeworICAgICAgICAgICAgICAgIEFT
U0VSVCghd2lkdGggJiYgIW91dHNldCk7CisgICAgICAgICAgICAgICAgaWYgKGNvbnN1bWVTbGFz
aEluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKSB7CisgICAgICAgICAgICAgICAgICAgIHdpZHRo
ID0gY29uc3VtZUJvcmRlckltYWdlV2lkdGgocmFuZ2UpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG91dHNldCA9IGNvbnN1bWVCb3JkZXJJbWFnZU91dHNldChyYW5nZSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW91dHNldCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXdp
ZHRoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0gd2hpbGUgKCFy
YW5nZS5hdEVuZCgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lV2Via2l0Qm9yZGVySW1hZ2UoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7Cisg
ICAgQ1NTVmFsdWUqIHNvdXJjZSA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIHNsaWNlID0gbnVs
bHB0cjsKKyAgICBDU1NWYWx1ZSogd2lkdGggPSBudWxscHRyOworICAgIENTU1ZhbHVlKiBvdXRz
ZXQgPSBudWxscHRyOworICAgIENTU1ZhbHVlKiByZXBlYXQgPSBudWxscHRyOworICAgIGlmIChj
b25zdW1lQm9yZGVySW1hZ2VDb21wb25lbnRzKHByb3BlcnR5LCByYW5nZSwgY29udGV4dCwgc291
cmNlLCBzbGljZSwgd2lkdGgsIG91dHNldCwgcmVwZWF0KSkKKyAgICAgICAgcmV0dXJuIGNyZWF0
ZUJvcmRlckltYWdlVmFsdWUoc291cmNlLCBzbGljZSwgd2lkdGgsIG91dHNldCwgcmVwZWF0KTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lUmVmbGVj
dChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29u
dGV4dCkKK3sKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogZGlyZWN0aW9uID0gY29uc3VtZUlkZW50
PENTU1ZhbHVlQWJvdmUsIENTU1ZhbHVlQmVsb3csIENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdo
dD4ocmFuZ2UpOworICAgIGlmICghZGlyZWN0aW9uKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBvZmZzZXQgPSBudWxscHRyOworICAgIGlmIChyYW5n
ZS5hdEVuZCgpKSB7CisgICAgICAgIG9mZnNldCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
MCwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQaXhlbHMpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIG9mZnNldCA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNvbnRleHQubW9k
ZSgpLCBWYWx1ZVJhbmdlQWxsLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworICAgICAgICBpZiAo
IW9mZnNldCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIENTU1Zh
bHVlKiBtYXNrID0gbnVsbHB0cjsKKyAgICBpZiAoIXJhbmdlLmF0RW5kKCkpIHsKKyAgICAgICAg
bWFzayA9IGNvbnN1bWVXZWJraXRCb3JkZXJJbWFnZShDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxl
Y3QsIHJhbmdlLCBjb250ZXh0KTsKKyAgICAgICAgaWYgKCFtYXNrKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorICAgIHJldHVybiBDU1NSZWZsZWN0VmFsdWU6OmNyZWF0ZShk
aXJlY3Rpb24sIG9mZnNldCwgbWFzayk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUZv
bnRTaXplQWRqdXN0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5n
ZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRl
bnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlTm9u
TmVnYXRpdmUpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVJbWFnZU9yaWVudGF0aW9u
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQo
KSA9PSBDU1NWYWx1ZUZyb21JbWFnZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5n
ZSk7CisgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgIT0gTnVtYmVyVG9rZW4pIHsKKyAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGFuZ2xlID0gY29uc3VtZUFuZ2xlKHJhbmdlKTsKKyAgICAg
ICAgaWYgKGFuZ2xlICYmIGFuZ2xlLT5nZXREb3VibGVWYWx1ZSgpID09IDApCisgICAgICAgICAg
ICByZXR1cm4gYW5nbGU7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMg
Q1NTVmFsdWUqIGNvbnN1bWVCYWNrZ3JvdW5kQmxlbmRNb2RlKENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlKQoreworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICBp
ZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVPdmVybGF5IHx8IChpZCA+
PSBDU1NWYWx1ZU11bHRpcGx5ICYmIGlkIDw9IENTU1ZhbHVlTHVtaW5vc2l0eSkpCisgICAgICAg
IHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBudWxscHRyOworfQorCitz
dGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVCYWNrZ3JvdW5kQXR0YWNobWVudChDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlU2Nyb2xs
LCBDU1NWYWx1ZUZpeGVkLCBDU1NWYWx1ZUxvY2FsPihyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NW
YWx1ZSogY29uc3VtZUJhY2tncm91bmRCb3goQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7
CisgICAgcmV0dXJuIGNvbnN1bWVJZGVudDxDU1NWYWx1ZUJvcmRlckJveCwgQ1NTVmFsdWVQYWRk
aW5nQm94LCBDU1NWYWx1ZUNvbnRlbnRCb3g+KHJhbmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVl
KiBjb25zdW1lQmFja2dyb3VuZENvbXBvc2l0ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkK
K3sKKyAgICByZXR1cm4gY29uc3VtZUlkZW50UmFuZ2UocmFuZ2UsIENTU1ZhbHVlQ2xlYXIsIENT
U1ZhbHVlUGx1c0xpZ2h0ZXIpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVNYXNrU291
cmNlVHlwZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBBU1NFUlQoUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6Y3NzTWFza1NvdXJjZVR5cGVFbmFibGVkKCkpOworICAgIHJldHVy
biBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBdXRvLCBDU1NWYWx1ZUFscGhhLCBDU1NWYWx1ZUx1bWlu
YW5jZT4ocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVQcmVmaXhlZEJhY2tn
cm91bmRCb3goQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgLy8gVGhlIHZhbHVl
cyAnYm9yZGVyJywgJ3BhZGRpbmcnIGFuZCAnY29udGVudCcgYXJlIGRlcHJlY2F0ZWQgYW5kIGRv
IG5vdCBhcHBseSB0byB0aGUgdmVyc2lvbiBvZiB0aGUgcHJvcGVydHkgdGhhdCBoYXMgdGhlIC13
ZWJraXQtIHByZWZpeCByZW1vdmVkLgorICAgIGlmIChDU1NWYWx1ZSogdmFsdWUgPSBjb25zdW1l
SWRlbnRSYW5nZShyYW5nZSwgQ1NTVmFsdWVCb3JkZXIsIENTU1ZhbHVlUGFkZGluZ0JveCkpCisg
ICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBpZiAoKHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Vi
a2l0QmFja2dyb3VuZENsaXAgfHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xp
cCkgJiYgcmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVUZXh0KQorICAgICAgICByZXR1cm4g
Y29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIENT
U1ZhbHVlKiBjb25zdW1lQmFja2dyb3VuZFNpemUoQ1NTUHJvcGVydHlJRCB1bnJlc29sdmVkUHJv
cGVydHksIENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNl
ck1vZGUpCit7CisgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZUNvbnRhaW4sIENTU1ZhbHVl
Q292ZXI+KHJhbmdlLnBlZWsoKS5pZCgpKSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChy
YW5nZSk7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogaG9yaXpvbnRhbCA9IGNvbnN1bWVJZGVu
dDxDU1NWYWx1ZUF1dG8+KHJhbmdlKTsKKyAgICBpZiAoIWhvcml6b250YWwpCisgICAgICAgIGhv
cml6b250YWwgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBW
YWx1ZVJhbmdlQWxsLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworCisgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHZlcnRpY2FsID0gbnVsbHB0cjsKKyAgICBpZiAoIXJhbmdlLmF0RW5kKCkpIHsKKyAg
ICAgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykgLy8gYGF1dG8nIGlz
IHRoZSBkZWZhdWx0CisgICAgICAgICAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFj
ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2ZXJ0aWNhbCA9IGNvbnN1bWVMZW5ndGhP
clBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwsIFVuaXRsZXNzUXVp
cms6OkZvcmJpZCk7CisgICAgfSBlbHNlIGlmICh1bnJlc29sdmVkUHJvcGVydHkgPT0gQ1NTUHJv
cGVydHlBbGlhc1dlYmtpdEJhY2tncm91bmRTaXplKSB7CisgICAgICAgIC8vIExlZ2FjeSBzeW50
YXg6ICItd2Via2l0LWJhY2tncm91bmQtc2l6ZTogMTBweCIgaXMgZXF1aXZhbGVudCB0byAiYmFj
a2dyb3VuZC1zaXplOiAxMHB4IDEwcHgiLgorICAgICAgICB2ZXJ0aWNhbCA9IGhvcml6b250YWw7
CisgICAgfQorICAgIGlmICghdmVydGljYWwpCisgICAgICAgIHJldHVybiBob3Jpem9udGFsOwor
ICAgIHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsLCB2ZXJ0aWNhbCwgQ1NT
VmFsdWVQYWlyOjpLZWVwSWRlbnRpY2FsVmFsdWVzKTsKK30KKworc3RhdGljIENTU1ZhbHVlTGlz
dCogY29uc3VtZUdyaWRBdXRvRmxvdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcm93T3JDb2x1bW5WYWx1ZSA9IGNvbnN1bWVJZGVudDxDU1NW
YWx1ZVJvdywgQ1NTVmFsdWVDb2x1bW4+KHJhbmdlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSog
ZGVuc2VBbGdvcml0aG0gPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVEZW5zZT4ocmFuZ2UpOworICAg
IGlmICghcm93T3JDb2x1bW5WYWx1ZSkgeworICAgICAgICByb3dPckNvbHVtblZhbHVlID0gY29u
c3VtZUlkZW50PENTU1ZhbHVlUm93LCBDU1NWYWx1ZUNvbHVtbj4ocmFuZ2UpOworICAgICAgICBp
ZiAoIXJvd09yQ29sdW1uVmFsdWUgJiYgIWRlbnNlQWxnb3JpdGhtKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorICAgIENTU1ZhbHVlTGlzdCogcGFyc2VkVmFsdWVzID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGlmIChyb3dPckNvbHVtblZh
bHVlKQorICAgICAgICBwYXJzZWRWYWx1ZXMtPmFwcGVuZCgqcm93T3JDb2x1bW5WYWx1ZSk7Cisg
ICAgaWYgKGRlbnNlQWxnb3JpdGhtKQorICAgICAgICBwYXJzZWRWYWx1ZXMtPmFwcGVuZCgqZGVu
c2VBbGdvcml0aG0pOworICAgIHJldHVybiBwYXJzZWRWYWx1ZXM7Cit9CisKK3N0YXRpYyBDU1NW
YWx1ZSogY29uc3VtZUJhY2tncm91bmRDb21wb25lbnQoQ1NTUHJvcGVydHlJRCB1bnJlc29sdmVk
UHJvcGVydHksIENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250
ZXh0JiBjb250ZXh0KQoreworICAgIHN3aXRjaCAodW5yZXNvbHZlZFByb3BlcnR5KSB7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwOgorICAgICAgICByZXR1cm4gY29uc3VtZUJh
Y2tncm91bmRCb3gocmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQmxlbmRN
b2RlOgorICAgICAgICByZXR1cm4gY29uc3VtZUJhY2tncm91bmRCbGVuZE1vZGUocmFuZ2UpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudDoKKyAgICAgICAgcmV0dXJu
IGNvbnN1bWVCYWNrZ3JvdW5kQXR0YWNobWVudChyYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRPcmlnaW46CisgICAgICAgIHJldHVybiBjb25zdW1lQmFja2dyb3VuZEJveChy
YW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGU6CisgICAgICAg
IHJldHVybiBjb25zdW1lQmFja2dyb3VuZENvbXBvc2l0ZShyYW5nZSk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eU1hc2tTb3VyY2VUeXBlOgorICAgICAgICByZXR1cm4gY29uc3VtZU1hc2tTb3VyY2VU
eXBlKHJhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENsaXA6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRPcmlnaW46CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tDbGlwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrT3Jp
Z2luOgorICAgICAgICByZXR1cm4gY29uc3VtZVByZWZpeGVkQmFja2dyb3VuZEJveCh1bnJlc29s
dmVkUHJvcGVydHksIHJhbmdlLCBjb250ZXh0KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dy
b3VuZEltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2U6CisgICAgICAg
IHJldHVybiBjb25zdW1lSW1hZ2VPck5vbmUocmFuZ2UsIGNvbnRleHQpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
YXNrUG9zaXRpb25YOgorICAgICAgICByZXR1cm4gY29uc3VtZVBvc2l0aW9uWChyYW5nZSwgY29u
dGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZOgorICAgICAgICByZXR1cm4g
Y29uc3VtZVBvc2l0aW9uWShyYW5nZSwgY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kU2l6ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5QWxpYXNXZWJraXRCYWNr
Z3JvdW5kU2l6ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1NpemU6CisgICAgICAg
IHJldHVybiBjb25zdW1lQmFja2dyb3VuZFNpemUodW5yZXNvbHZlZFByb3BlcnR5LCByYW5nZSwg
Y29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3I6Cisg
ICAgICAgIHJldHVybiBjb25zdW1lQ29sb3IocmFuZ2UsIGNvbnRleHQubW9kZSgpKTsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9OworICAgIHJldHVybiBudWxscHRyOworfQor
CitzdGF0aWMgdm9pZCBhZGRCYWNrZ3JvdW5kVmFsdWUoQ1NTVmFsdWUqJiBsaXN0LCBDU1NWYWx1
ZSogdmFsdWUpCit7CisgICAgaWYgKGxpc3QpIHsKKyAgICAgICAgaWYgKCFsaXN0LT5pc0Jhc2VW
YWx1ZUxpc3QoKSkgeworICAgICAgICAgICAgQ1NTVmFsdWUqIGZpcnN0VmFsdWUgPSBsaXN0Owor
ICAgICAgICAgICAgbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsK
KyAgICAgICAgICAgIHRvQ1NTVmFsdWVMaXN0KGxpc3QpLT5hcHBlbmQoKmZpcnN0VmFsdWUpOwor
ICAgICAgICB9CisgICAgICAgIHRvQ1NTVmFsdWVMaXN0KGxpc3QpLT5hcHBlbmQoKnZhbHVlKTsK
KyAgICB9IGVsc2UgeworICAgICAgICAvLyBUbyBjb25zZXJ2ZSBtZW1vcnkgd2UgZG9uJ3QgYWN0
dWFsbHkgd3JhcCBhIHNpbmdsZSB2YWx1ZSBpbiBhIGxpc3QuCisgICAgICAgIGxpc3QgPSB2YWx1
ZTsKKyAgICB9Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUNvbW1hU2VwYXJhdGVkQmFj
a2dyb3VuZENvbXBvbmVudChDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0eSwgQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7
CisgICAgQ1NTVmFsdWUqIHJlc3VsdCA9IG51bGxwdHI7CisgICAgZG8geworICAgICAgICBDU1NW
YWx1ZSogdmFsdWUgPSBjb25zdW1lQmFja2dyb3VuZENvbXBvbmVudCh1bnJlc29sdmVkUHJvcGVy
dHksIHJhbmdlLCBjb250ZXh0KTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICBhZGRCYWNrZ3JvdW5kVmFsdWUocmVzdWx0LCB2YWx1ZSk7
CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3Vt
ZVNlbGZQb3NpdGlvbktleXdvcmQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAg
Q1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgIGlmIChpZCA9PSBDU1NWYWx1
ZVN0YXJ0IHx8IGlkID09IENTU1ZhbHVlRW5kIHx8IGlkID09IENTU1ZhbHVlQ2VudGVyCisgICAg
ICAgIHx8IGlkID09IENTU1ZhbHVlU2VsZlN0YXJ0IHx8IGlkID09IENTU1ZhbHVlU2VsZkVuZCB8
fCBpZCA9PSBDU1NWYWx1ZUZsZXhTdGFydAorICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZUZsZXhF
bmQgfHwgaWQgPT0gQ1NTVmFsdWVMZWZ0IHx8IGlkID09IENTU1ZhbHVlUmlnaHQpCisgICAgICAg
IHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBudWxscHRyOworfQorCitz
dGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVTZWxmUG9zaXRpb25PdmVyZmxvd1Bvc2l0aW9uKENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVB
dXRvLCBDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVTdHJldGNoLCBDU1NWYWx1ZUJhc2VsaW5lLCBD
U1NWYWx1ZUxhc3RCYXNlbGluZT4ocmFuZ2UucGVlaygpLmlkKCkpKQorICAgICAgICByZXR1cm4g
Y29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBvdmVyZmxvd1Bv
c2l0aW9uID0gY29uc3VtZUlkZW50PENTU1ZhbHVlVW5zYWZlLCBDU1NWYWx1ZVNhZmU+KHJhbmdl
KTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2VsZlBvc2l0aW9uID0gY29uc3VtZVNlbGZQb3Np
dGlvbktleXdvcmQocmFuZ2UpOworICAgIGlmICghc2VsZlBvc2l0aW9uKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBpZiAoIW92ZXJmbG93UG9zaXRpb24pCisgICAgICAgIG92ZXJmbG93
UG9zaXRpb24gPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVVbnNhZmUsIENTU1ZhbHVlU2FmZT4ocmFu
Z2UpOworICAgIGlmIChvdmVyZmxvd1Bvc2l0aW9uKQorICAgICAgICByZXR1cm4gQ1NTVmFsdWVQ
YWlyOjpjcmVhdGUoc2VsZlBvc2l0aW9uLCBvdmVyZmxvd1Bvc2l0aW9uLCBDU1NWYWx1ZVBhaXI6
OkRyb3BJZGVudGljYWxWYWx1ZXMpOworICAgIHJldHVybiBzZWxmUG9zaXRpb247Cit9CisKK3N0
YXRpYyBDU1NWYWx1ZSogY29uc3VtZUFsaWduSXRlbXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UpCit7CisgICAgLy8gYWxpZ24taXRlbXMgcHJvcGVydHkgZG9lcyBub3QgYWxsb3cgdGhlICdh
dXRvJyB2YWx1ZS4KKyAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlQXV0bz4ocmFuZ2UucGVl
aygpLmlkKCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY29uc3VtZVNl
bGZQb3NpdGlvbk92ZXJmbG93UG9zaXRpb24ocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWUq
IGNvbnN1bWVKdXN0aWZ5SXRlbXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAg
Q1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSByYW5nZTsKKyAgICBDU1NQcmltaXRpdmVW
YWx1ZSogbGVnYWN5ID0gY29uc3VtZUlkZW50PENTU1ZhbHVlTGVnYWN5PihyYW5nZUNvcHkpOwor
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwb3NpdGlvbktleXdvcmQgPSBjb25zdW1lSWRlbnQ8Q1NT
VmFsdWVDZW50ZXIsIENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodD4ocmFuZ2VDb3B5KTsKKyAg
ICBpZiAoIWxlZ2FjeSkKKyAgICAgICAgbGVnYWN5ID0gY29uc3VtZUlkZW50PENTU1ZhbHVlTGVn
YWN5PihyYW5nZUNvcHkpOworICAgIGlmIChsZWdhY3kgJiYgcG9zaXRpb25LZXl3b3JkKSB7Cisg
ICAgICAgIHJhbmdlID0gcmFuZ2VDb3B5OworICAgICAgICByZXR1cm4gQ1NTVmFsdWVQYWlyOjpj
cmVhdGUobGVnYWN5LCBwb3NpdGlvbktleXdvcmQsIENTU1ZhbHVlUGFpcjo6RHJvcElkZW50aWNh
bFZhbHVlcyk7CisgICAgfQorICAgIHJldHVybiBjb25zdW1lU2VsZlBvc2l0aW9uT3ZlcmZsb3dQ
b3NpdGlvbihyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NDdXN0b21JZGVudFZhbHVlKiBjb25zdW1l
Q3VzdG9tSWRlbnRGb3JHcmlkTGluZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAg
ICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBdXRvIHx8IHJhbmdlLnBlZWsoKS5p
ZCgpID09IENTU1ZhbHVlU3BhbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IGNvbnN1bWVDdXN0b21JZGVudChyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3Vt
ZUdyaWRMaW5lKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5w
ZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQo
cmFuZ2UpOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNwYW5WYWx1ZSA9IG51bGxwdHI7Cisg
ICAgQ1NTQ3VzdG9tSWRlbnRWYWx1ZSogZ3JpZExpbmVOYW1lID0gbnVsbHB0cjsKKyAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogbnVtZXJpY1ZhbHVlID0gY29uc3VtZUludGVnZXIocmFuZ2UpOworICAg
IGlmIChudW1lcmljVmFsdWUpIHsKKyAgICAgICAgZ3JpZExpbmVOYW1lID0gY29uc3VtZUN1c3Rv
bUlkZW50Rm9yR3JpZExpbmUocmFuZ2UpOworICAgICAgICBzcGFuVmFsdWUgPSBjb25zdW1lSWRl
bnQ8Q1NTVmFsdWVTcGFuPihyYW5nZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3BhblZhbHVl
ID0gY29uc3VtZUlkZW50PENTU1ZhbHVlU3Bhbj4ocmFuZ2UpOworICAgICAgICBpZiAoc3BhblZh
bHVlKSB7CisgICAgICAgICAgICBudW1lcmljVmFsdWUgPSBjb25zdW1lSW50ZWdlcihyYW5nZSk7
CisgICAgICAgICAgICBncmlkTGluZU5hbWUgPSBjb25zdW1lQ3VzdG9tSWRlbnRGb3JHcmlkTGlu
ZShyYW5nZSk7CisgICAgICAgICAgICBpZiAoIW51bWVyaWNWYWx1ZSkKKyAgICAgICAgICAgICAg
ICBudW1lcmljVmFsdWUgPSBjb25zdW1lSW50ZWdlcihyYW5nZSk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBncmlkTGluZU5hbWUgPSBjb25zdW1lQ3VzdG9tSWRlbnRGb3JHcmlkTGlu
ZShyYW5nZSk7CisgICAgICAgICAgICBpZiAoZ3JpZExpbmVOYW1lKSB7CisgICAgICAgICAgICAg
ICAgbnVtZXJpY1ZhbHVlID0gY29uc3VtZUludGVnZXIocmFuZ2UpOworICAgICAgICAgICAgICAg
IHNwYW5WYWx1ZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZVNwYW4+KHJhbmdlKTsKKyAgICAgICAg
ICAgICAgICBpZiAoIXNwYW5WYWx1ZSAmJiAhbnVtZXJpY1ZhbHVlKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZ3JpZExpbmVOYW1lOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIGlmIChzcGFuVmFsdWUgJiYgIW51bWVyaWNWYWx1ZSAmJiAhZ3JpZExpbmVOYW1lKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsgLy8gInNwYW4iIGtleXdvcmQgYWxvbmUgaXMgaW52YWxp
ZC4KKyAgICBpZiAoc3BhblZhbHVlICYmIG51bWVyaWNWYWx1ZSAmJiBudW1lcmljVmFsdWUtPmdl
dEludFZhbHVlKCkgPCAwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsgLy8gTmVnYXRpdmUgbnVt
YmVycyBhcmUgbm90IGFsbG93ZWQgZm9yIHNwYW4uCisgICAgaWYgKG51bWVyaWNWYWx1ZSAmJiBu
dW1lcmljVmFsdWUtPmdldEludFZhbHVlKCkgPT0gMCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
IC8vIEFuIDxpbnRlZ2VyPiB2YWx1ZSBvZiB6ZXJvIG1ha2VzIHRoZSBkZWNsYXJhdGlvbiBpbnZh
bGlkLgorCisgICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNw
YWNlU2VwYXJhdGVkKCk7CisgICAgaWYgKHNwYW5WYWx1ZSkKKyAgICAgICAgdmFsdWVzLT5hcHBl
bmQoKnNwYW5WYWx1ZSk7CisgICAgaWYgKG51bWVyaWNWYWx1ZSkKKyAgICAgICAgdmFsdWVzLT5h
cHBlbmQoKm51bWVyaWNWYWx1ZSk7CisgICAgaWYgKGdyaWRMaW5lTmFtZSkKKyAgICAgICAgdmFs
dWVzLT5hcHBlbmQoKmdyaWRMaW5lTmFtZSk7CisgICAgQVNTRVJUKHZhbHVlcy0+bGVuZ3RoKCkp
OworICAgIHJldHVybiB2YWx1ZXM7Cit9CisKK3N0YXRpYyBib29sIGlzR3JpZFRyYWNrRml4ZWRT
aXplZChjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0aXZlVmFsdWUpCit7CisgICAgQ1NT
VmFsdWVJRCB2YWx1ZUlEID0gcHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpOworICAgIGlmICh2
YWx1ZUlEID09IENTU1ZhbHVlTWluQ29udGVudCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTWF4Q29u
dGVudCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCBwcmltaXRpdmVWYWx1ZS5pc0ZsZXgo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRp
YyBib29sIGlzR3JpZFRyYWNrRml4ZWRTaXplZChjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCit7Cisg
ICAgaWYgKHZhbHVlLmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIGlzR3JpZFRy
YWNrRml4ZWRTaXplZCh0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKSk7CisKKyAgICBjb25zdCBD
U1NQcmltaXRpdmVWYWx1ZSYgbWluUHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVl
KHRvQ1NTRnVuY3Rpb25WYWx1ZSh2YWx1ZSkuaXRlbSgwKSk7CisgICAgY29uc3QgQ1NTUHJpbWl0
aXZlVmFsdWUmIG1heFByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh0b0NTU0Z1
bmN0aW9uVmFsdWUodmFsdWUpLml0ZW0oMSkpOworICAgIHJldHVybiBpc0dyaWRUcmFja0ZpeGVk
U2l6ZWQobWluUHJpbWl0aXZlVmFsdWUpIHx8IGlzR3JpZFRyYWNrRml4ZWRTaXplZChtYXhQcmlt
aXRpdmVWYWx1ZSk7Cit9CisKK3N0YXRpYyBWZWN0b3I8U3RyaW5nPiBwYXJzZUdyaWRUZW1wbGF0
ZUFyZWFzQ29sdW1uTmFtZXMoY29uc3QgU3RyaW5nJiBncmlkUm93TmFtZXMpCit7CisgICAgQVNT
RVJUKCFncmlkUm93TmFtZXMuaXNFbXB0eSgpKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBjb2x1bW5O
YW1lczsKKyAgICAvLyBVc2luZyBTdHJpbmdJbXBsIHRvIGF2b2lkIGNoZWNrcyBhbmQgaW5kaXJl
Y3Rpb24gaW4gZXZlcnkgY2FsbCB0byBTdHJpbmc6Om9wZXJhdG9yW10uCisgICAgU3RyaW5nSW1w
bCYgdGV4dCA9ICpncmlkUm93TmFtZXMuaW1wbCgpOworCisgICAgU3RyaW5nQnVpbGRlciBhcmVh
TmFtZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGV4dC5sZW5ndGgoKTsgKytpKSB7
CisgICAgICAgIGlmIChpc0NTU1NwYWNlKHRleHRbaV0pKSB7CisgICAgICAgICAgICBpZiAoIWFy
ZWFOYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIGNvbHVtbk5hbWVzLmFwcGVuZChh
cmVhTmFtZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBhcmVhTmFtZS5jbGVhcigpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKHRleHRbaV0gPT0gJy4nKSB7CisgICAgICAgICAgICBpZiAoYXJlYU5hbWUgPT0gIi4iKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKCFhcmVhTmFtZS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgICAgICAgICBjb2x1bW5OYW1lcy5hcHBlbmQoYXJlYU5hbWUudG9T
dHJpbmcoKSk7CisgICAgICAgICAgICAgICAgYXJlYU5hbWUuY2xlYXIoKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICghaXNOYW1lQ29kZVBvaW50KHRl
eHRbaV0pKQorICAgICAgICAgICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworICAgICAg
ICAgICAgaWYgKGFyZWFOYW1lID09ICIuIikgeworICAgICAgICAgICAgICAgIGNvbHVtbk5hbWVz
LmFwcGVuZChhcmVhTmFtZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBhcmVhTmFtZS5j
bGVhcigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgYXJlYU5hbWUuYXBw
ZW5kKHRleHRbaV0pOworICAgIH0KKworICAgIGlmICghYXJlYU5hbWUuaXNFbXB0eSgpKQorICAg
ICAgICBjb2x1bW5OYW1lcy5hcHBlbmQoYXJlYU5hbWUudG9TdHJpbmcoKSk7CisKKyAgICByZXR1
cm4gY29sdW1uTmFtZXM7Cit9CisKK3N0YXRpYyBib29sIHBhcnNlR3JpZFRlbXBsYXRlQXJlYXNS
b3coY29uc3QgU3RyaW5nJiBncmlkUm93TmFtZXMsIE5hbWVkR3JpZEFyZWFNYXAmIGdyaWRBcmVh
TWFwLCBjb25zdCBzaXplX3Qgcm93Q291bnQsIHNpemVfdCYgY29sdW1uQ291bnQpCit7CisgICAg
aWYgKGdyaWRSb3dOYW1lcy5pc0VtcHR5KCkgfHwgZ3JpZFJvd05hbWVzLmNvbnRhaW5zT25seVdo
aXRlc3BhY2UoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVmVjdG9yPFN0cmluZz4g
Y29sdW1uTmFtZXMgPSBwYXJzZUdyaWRUZW1wbGF0ZUFyZWFzQ29sdW1uTmFtZXMoZ3JpZFJvd05h
bWVzKTsKKyAgICBpZiAocm93Q291bnQgPT0gMCkgeworICAgICAgICBjb2x1bW5Db3VudCA9IGNv
bHVtbk5hbWVzLnNpemUoKTsKKyAgICAgICAgaWYgKGNvbHVtbkNvdW50ID09IDApCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfSBlbHNlIGlmIChjb2x1bW5Db3VudCAhPSBjb2x1bW5O
YW1lcy5zaXplKCkpIHsKKyAgICAgICAgLy8gVGhlIGRlY2xhcmF0aW9uIGlzIGludmFsaWQgaWYg
YWxsIHRoZSByb3dzIGRvbid0IGhhdmUgdGhlIG51bWJlciBvZiBjb2x1bW5zLgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZm9yIChzaXplX3QgY3VycmVudENvbHVtbiA9IDA7
IGN1cnJlbnRDb2x1bW4gPCBjb2x1bW5Db3VudDsgKytjdXJyZW50Q29sdW1uKSB7CisgICAgICAg
IGNvbnN0IFN0cmluZyYgZ3JpZEFyZWFOYW1lID0gY29sdW1uTmFtZXNbY3VycmVudENvbHVtbl07
CisKKyAgICAgICAgLy8gVW5hbWVkIGFyZWFzIGFyZSBhbHdheXMgdmFsaWQgKHdlIGNvbnNpZGVy
IHRoZW0gdG8gYmUgMXgxKS4KKyAgICAgICAgaWYgKGdyaWRBcmVhTmFtZSA9PSAiLiIpCisgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICBzaXplX3QgbG9va0FoZWFkQ29sdW1uID0gY3Vy
cmVudENvbHVtbiArIDE7CisgICAgICAgIHdoaWxlIChsb29rQWhlYWRDb2x1bW4gPCBjb2x1bW5D
b3VudCAmJiBjb2x1bW5OYW1lc1tsb29rQWhlYWRDb2x1bW5dID09IGdyaWRBcmVhTmFtZSkKKyAg
ICAgICAgICAgIGxvb2tBaGVhZENvbHVtbisrOworCisgICAgICAgIE5hbWVkR3JpZEFyZWFNYXA6
Oml0ZXJhdG9yIGdyaWRBcmVhSXQgPSBncmlkQXJlYU1hcC5maW5kKGdyaWRBcmVhTmFtZSk7Cisg
ICAgICAgIGlmIChncmlkQXJlYUl0ID09IGdyaWRBcmVhTWFwLmVuZCgpKSB7CisgICAgICAgICAg
ICBncmlkQXJlYU1hcC5hZGQoZ3JpZEFyZWFOYW1lLCBHcmlkQXJlYShHcmlkU3Bhbjo6dHJhbnNs
YXRlZERlZmluaXRlR3JpZFNwYW4ocm93Q291bnQsIHJvd0NvdW50ICsgMSksIEdyaWRTcGFuOjp0
cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihjdXJyZW50Q29sdW1uLCBsb29rQWhlYWRDb2x1bW4p
KSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBHcmlkQXJlYSYgZ3JpZEFyZWEgPSBn
cmlkQXJlYUl0LT52YWx1ZTsKKworICAgICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBjaGVja3Mg
dGVzdCB0aGF0IHRoZSBncmlkIGFyZWEgaXMgYSBzaW5nbGUgZmlsbGVkLWluIHJlY3RhbmdsZS4K
KyAgICAgICAgICAgIC8vIDEuIFRoZSBuZXcgcm93IGlzIGFkamFjZW50IHRvIHRoZSBwcmV2aW91
c2x5IHBhcnNlZCByb3cuCisgICAgICAgICAgICBpZiAocm93Q291bnQgIT0gZ3JpZEFyZWEucm93
cy5lbmRMaW5lKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAg
ICAvLyAyLiBUaGUgbmV3IGFyZWEgc3RhcnRzIGF0IHRoZSBzYW1lIHBvc2l0aW9uIGFzIHRoZSBw
cmV2aW91c2x5IHBhcnNlZCBhcmVhLgorICAgICAgICAgICAgaWYgKGN1cnJlbnRDb2x1bW4gIT0g
Z3JpZEFyZWEuY29sdW1ucy5zdGFydExpbmUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgICAgIC8vIDMuIFRoZSBuZXcgYXJlYSBlbmRzIGF0IHRoZSBzYW1lIHBv
c2l0aW9uIGFzIHRoZSBwcmV2aW91c2x5IHBhcnNlZCBhcmVhLgorICAgICAgICAgICAgaWYgKGxv
b2tBaGVhZENvbHVtbiAhPSBncmlkQXJlYS5jb2x1bW5zLmVuZExpbmUoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGdyaWRBcmVhLnJvd3MgPSBHcmlkU3Bh
bjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4oZ3JpZEFyZWEucm93cy5zdGFydExpbmUoKSwg
Z3JpZEFyZWEucm93cy5lbmRMaW5lKCkgKyAxKTsKKyAgICAgICAgfQorICAgICAgICBjdXJyZW50
Q29sdW1uID0gbG9va0FoZWFkQ29sdW1uIC0gMTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lR3JpZEJyZWFkdGgoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAg
ICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CisgICAgaWYgKGlk
ZW50TWF0Y2hlczxDU1NWYWx1ZU1pbkNvbnRlbnQsIENTU1ZhbHVlTWF4Q29udGVudCwgQ1NTVmFs
dWVBdXRvPih0b2tlbi5pZCgpKSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7
CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbiAmJiB0b2tlbi51bml0VHlw
ZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6RnJhY3Rpb24pIHsKKyAgICAgICAg
aWYgKHJhbmdlLnBlZWsoKS5udW1lcmljVmFsdWUoKSA8IDApCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFuZ2Uu
Y29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1lcmljVmFsdWUoKSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OlVuaXRUeXBlOjpGcmFjdGlvbik7CisgICAgfQorICAgIHJldHVybiBjb25zdW1lTGVu
Z3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUs
IFVuaXRsZXNzUXVpcms6OkFsbG93KTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lR3Jp
ZFRyYWNrU2l6ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQ
YXJzZXJNb2RlKQoreworICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBl
ZWsoKTsKKyAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlQXV0bz4odG9rZW4uaWQoKSkpCisg
ICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgaWYgKHRva2VuLmZ1bmN0
aW9uSWQoKSA9PSBDU1NWYWx1ZU1pbm1heCkgeworICAgICAgICBDU1NQYXJzZXJUb2tlblJhbmdl
IHJhbmdlQ29weSA9IHJhbmdlOworICAgICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBj
b25zdW1lRnVuY3Rpb24ocmFuZ2VDb3B5KTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIG1p
blRyYWNrQnJlYWR0aCA9IGNvbnN1bWVHcmlkQnJlYWR0aChhcmdzLCBjc3NQYXJzZXJNb2RlKTsK
KyAgICAgICAgaWYgKCFtaW5UcmFja0JyZWFkdGggfHwgbWluVHJhY2tCcmVhZHRoLT5pc0ZsZXgo
KSB8fCAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogbWF4VHJhY2tCcmVh
ZHRoID0gY29uc3VtZUdyaWRCcmVhZHRoKGFyZ3MsIGNzc1BhcnNlck1vZGUpOworICAgICAgICBp
ZiAoIW1heFRyYWNrQnJlYWR0aCB8fCAhYXJncy5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIHJhbmdlID0gcmFuZ2VDb3B5OworICAgICAgICBDU1NGdW5jdGlv
blZhbHVlKiByZXN1bHQgPSBDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUoQ1NTVmFsdWVNaW5tYXgp
OworICAgICAgICByZXN1bHQtPmFwcGVuZCgqbWluVHJhY2tCcmVhZHRoKTsKKyAgICAgICAgcmVz
dWx0LT5hcHBlbmQoKm1heFRyYWNrQnJlYWR0aCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorICAgIHJldHVybiBjb25zdW1lR3JpZEJyZWFkdGgocmFuZ2UsIGNzc1BhcnNlck1vZGUp
OworfQorCisvLyBBcHBlbmRzIHRvIHRoZSBwYXNzZWQgaW4gQ1NTR3JpZExpbmVOYW1lc1ZhbHVl
IGlmIGFueSwgb3RoZXJ3aXNlIGNyZWF0ZXMgYSBuZXcgb25lLgorc3RhdGljIENTU0dyaWRMaW5l
TmFtZXNWYWx1ZSogY29uc3VtZUdyaWRMaW5lTmFtZXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIENTU0dyaWRMaW5lTmFtZXNWYWx1ZSogbGluZU5hbWVzID0gbnVsbHB0cikKK3sKKyAgICBD
U1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlQ29weSA9IHJhbmdlOworICAgIGlmIChyYW5nZUNvcHku
Y29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS50eXBlKCkgIT0gTGVmdEJyYWNrZXRUb2tlbikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFsaW5lTmFtZXMpCisgICAgICAgIGxp
bmVOYW1lcyA9IENTU0dyaWRMaW5lTmFtZXNWYWx1ZTo6Y3JlYXRlKCk7CisgICAgd2hpbGUgKENT
U0N1c3RvbUlkZW50VmFsdWUqIGxpbmVOYW1lID0gY29uc3VtZUN1c3RvbUlkZW50Rm9yR3JpZExp
bmUocmFuZ2VDb3B5KSkKKyAgICAgICAgbGluZU5hbWVzLT5hcHBlbmQoKmxpbmVOYW1lKTsKKyAg
ICBpZiAocmFuZ2VDb3B5LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudHlwZSgpICE9IFJp
Z2h0QnJhY2tldFRva2VuKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByYW5nZSA9IHJh
bmdlQ29weTsKKyAgICByZXR1cm4gbGluZU5hbWVzOworfQorCitzdGF0aWMgYm9vbCBjb25zdW1l
R3JpZFRyYWNrUmVwZWF0RnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1Bh
cnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgQ1NTVmFsdWVMaXN0JiBsaXN0LCBib29sJiBpc0F1dG9S
ZXBlYXQsIGJvb2wmIGFsbFRyYWNrc0FyZUZpeGVkU2l6ZWQpCit7CisgICAgQ1NTUGFyc2VyVG9r
ZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlKTsKKyAgICAvLyBUaGUgbnVtYmVy
IG9mIHJlcGV0aXRpb25zIGZvciA8YXV0by1yZXBlYXQ+IGlzIG5vdCBpbXBvcnRhbnQgYXQgcGFy
c2luZyBsZXZlbAorICAgIC8vIGJlY2F1c2UgaXQgd2lsbCBiZSBjb21wdXRlZCBsYXRlciwgbGV0
J3Mgc2V0IGl0IHRvIDEuCisgICAgc2l6ZV90IHJlcGV0aXRpb25zID0gMTsKKyAgICBpc0F1dG9S
ZXBlYXQgPSBpZGVudE1hdGNoZXM8Q1NTVmFsdWVBdXRvRmlsbCwgQ1NTVmFsdWVBdXRvRml0Pihh
cmdzLnBlZWsoKS5pZCgpKTsKKyAgICBDU1NWYWx1ZUxpc3QqIHJlcGVhdGVkVmFsdWVzOworICAg
IGlmIChpc0F1dG9SZXBlYXQpIHsKKyAgICAgICAgcmVwZWF0ZWRWYWx1ZXMgPSBDU1NHcmlkQXV0
b1JlcGVhdFZhbHVlOjpjcmVhdGUoYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlk
KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFRPRE8ocm9iLmJ1aXMpOiBhIGNvbnN1bWVJ
bnRlZ2VyUmF3IHdvdWxkIGJlIG1vcmUgZWZmaWNpZW50IGhlcmUuCisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiByZXBldGl0aW9uID0gY29uc3VtZVBvc2l0aXZlSW50ZWdlcihhcmdzKTsKKyAg
ICAgICAgaWYgKCFyZXBldGl0aW9uKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICByZXBldGl0aW9ucyA9IGNsYW1wVG88c2l6ZV90PihyZXBldGl0aW9uLT5nZXREb3VibGVWYWx1
ZSgpLCAwLCBrR3JpZE1heFRyYWNrcyk7CisgICAgICAgIHJlcGVhdGVkVmFsdWVzID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIH0KKyAgICBpZiAoIWNvbnN1bWVD
b21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBDU1NHcmlkTGluZU5hbWVzVmFsdWUqIGxpbmVOYW1lcyA9IGNvbnN1bWVHcmlkTGluZU5hbWVz
KGFyZ3MpOworICAgIGlmIChsaW5lTmFtZXMpCisgICAgICAgIHJlcGVhdGVkVmFsdWVzLT5hcHBl
bmQoKmxpbmVOYW1lcyk7CisKKyAgICBzaXplX3QgbnVtYmVyT2ZUcmFja3MgPSAwOworICAgIHdo
aWxlICghYXJncy5hdEVuZCgpKSB7CisgICAgICAgIENTU1ZhbHVlKiB0cmFja1NpemUgPSBjb25z
dW1lR3JpZFRyYWNrU2l6ZShhcmdzLCBjc3NQYXJzZXJNb2RlKTsKKyAgICAgICAgaWYgKCF0cmFj
a1NpemUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChhbGxUcmFja3NB
cmVGaXhlZFNpemVkKQorICAgICAgICAgICAgYWxsVHJhY2tzQXJlRml4ZWRTaXplZCA9IGlzR3Jp
ZFRyYWNrRml4ZWRTaXplZCgqdHJhY2tTaXplKTsKKyAgICAgICAgcmVwZWF0ZWRWYWx1ZXMtPmFw
cGVuZCgqdHJhY2tTaXplKTsKKyAgICAgICAgKytudW1iZXJPZlRyYWNrczsKKyAgICAgICAgbGlu
ZU5hbWVzID0gY29uc3VtZUdyaWRMaW5lTmFtZXMoYXJncyk7CisgICAgICAgIGlmIChsaW5lTmFt
ZXMpCisgICAgICAgICAgICByZXBlYXRlZFZhbHVlcy0+YXBwZW5kKCpsaW5lTmFtZXMpOworICAg
IH0KKyAgICAvLyBXZSBzaG91bGQgaGF2ZSBmb3VuZCBhdCBsZWFzdCBvbmUgPHRyYWNrLXNpemU+
IG9yIGVsc2UgaXQgaXMgbm90IGEgdmFsaWQgPHRyYWNrLWxpc3Q+LgorICAgIGlmICghbnVtYmVy
T2ZUcmFja3MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChpc0F1dG9SZXBlYXQp
IHsKKyAgICAgICAgbGlzdC5hcHBlbmQoKnJlcGVhdGVkVmFsdWVzKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICAvLyBXZSBjbGFtcCB0aGUgcmVwZXRpdGlvbnMgdG8gYSBtdWx0aXBsZSBvZiB0aGUg
cmVwZWF0KCkgdHJhY2sgbGlzdCdzIHNpemUsIHdoaWxlIHN0YXlpbmcgYmVsb3cgdGhlIG1heCBn
cmlkIHNpemUuCisgICAgICAgIHJlcGV0aXRpb25zID0gc3RkOjptaW4ocmVwZXRpdGlvbnMsIGtH
cmlkTWF4VHJhY2tzIC8gbnVtYmVyT2ZUcmFja3MpOworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHJlcGV0aXRpb25zOyArK2kpIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAw
OyBqIDwgcmVwZWF0ZWRWYWx1ZXMtPmxlbmd0aCgpOyArK2opCisgICAgICAgICAgICAgICAgbGlz
dC5hcHBlbmQocmVwZWF0ZWRWYWx1ZXMtPml0ZW0oaikpOworICAgICAgICB9CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCitlbnVtIFRyYWNrTGlzdFR5cGUgeyBHcmlkVGVtcGxhdGUsIEdy
aWRUZW1wbGF0ZU5vUmVwZWF0LCBHcmlkQXV0byB9OworCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1
bWVHcmlkVHJhY2tMaXN0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2Rl
IGNzc1BhcnNlck1vZGUsIFRyYWNrTGlzdFR5cGUgdHJhY2tMaXN0VHlwZSkKK3sKKyAgICBib29s
IGFsbG93R3JpZExpbmVOYW1lcyA9IHRyYWNrTGlzdFR5cGUgIT0gR3JpZEF1dG87CisgICAgQ1NT
VmFsdWVMaXN0KiB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7
CisgICAgQ1NTR3JpZExpbmVOYW1lc1ZhbHVlKiBsaW5lTmFtZXMgPSBjb25zdW1lR3JpZExpbmVO
YW1lcyhyYW5nZSk7CisgICAgaWYgKGxpbmVOYW1lcykgeworICAgICAgICBpZiAoIWFsbG93R3Jp
ZExpbmVOYW1lcykKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB2YWx1ZXMt
PmFwcGVuZCgqbGluZU5hbWVzKTsKKyAgICB9CisKKyAgICBib29sIGFsbG93UmVwZWF0ID0gdHJh
Y2tMaXN0VHlwZSA9PSBHcmlkVGVtcGxhdGU7CisgICAgYm9vbCBzZWVuQXV0b1JlcGVhdCA9IGZh
bHNlOworICAgIGJvb2wgYWxsVHJhY2tzQXJlRml4ZWRTaXplZCA9IHRydWU7CisgICAgZG8gewor
ICAgICAgICBib29sIGlzQXV0b1JlcGVhdDsKKyAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS5mdW5j
dGlvbklkKCkgPT0gQ1NTVmFsdWVSZXBlYXQpIHsKKyAgICAgICAgICAgIGlmICghYWxsb3dSZXBl
YXQpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBpZiAoIWNv
bnN1bWVHcmlkVHJhY2tSZXBlYXRGdW5jdGlvbihyYW5nZSwgY3NzUGFyc2VyTW9kZSwgKnZhbHVl
cywgaXNBdXRvUmVwZWF0LCBhbGxUcmFja3NBcmVGaXhlZFNpemVkKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmIChpc0F1dG9SZXBlYXQgJiYgc2VlbkF1
dG9SZXBlYXQpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBz
ZWVuQXV0b1JlcGVhdCA9IHNlZW5BdXRvUmVwZWF0IHx8IGlzQXV0b1JlcGVhdDsKKyAgICAgICAg
fSBlbHNlIGlmIChDU1NWYWx1ZSogdmFsdWUgPSBjb25zdW1lR3JpZFRyYWNrU2l6ZShyYW5nZSwg
Y3NzUGFyc2VyTW9kZSkpIHsKKyAgICAgICAgICAgIGlmIChhbGxUcmFja3NBcmVGaXhlZFNpemVk
KQorICAgICAgICAgICAgICAgIGFsbFRyYWNrc0FyZUZpeGVkU2l6ZWQgPSBpc0dyaWRUcmFja0Zp
eGVkU2l6ZWQoKnZhbHVlKTsKKyAgICAgICAgICAgIHZhbHVlcy0+YXBwZW5kKCp2YWx1ZSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoc2VlbkF1dG9SZXBlYXQgJiYgIWFsbFRyYWNrc0FyZUZpeGVkU2l6ZWQpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgbGluZU5hbWVzID0gY29uc3VtZUdy
aWRMaW5lTmFtZXMocmFuZ2UpOworICAgICAgICBpZiAobGluZU5hbWVzKSB7CisgICAgICAgICAg
ICBpZiAoIWFsbG93R3JpZExpbmVOYW1lcykKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgICAgIHZhbHVlcy0+YXBwZW5kKCpsaW5lTmFtZXMpOworICAgICAgICB9Cisg
ICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5kKCkgJiYgcmFuZ2UucGVlaygpLnR5cGUoKSAhPSBEZWxp
bWl0ZXJUb2tlbik7CisgICAgcmV0dXJuIHZhbHVlczsKK30KKworc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lR3JpZFRlbXBsYXRlc1Jvd3NPckNvbHVtbnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygp
LmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdl
KTsKKyAgICByZXR1cm4gY29uc3VtZUdyaWRUcmFja0xpc3QocmFuZ2UsIGNzc1BhcnNlck1vZGUs
IEdyaWRUZW1wbGF0ZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUdyaWRUZW1wbGF0
ZUFyZWFzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVr
KCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFu
Z2UpOworCisgICAgTmFtZWRHcmlkQXJlYU1hcCBncmlkQXJlYU1hcDsKKyAgICBzaXplX3Qgcm93
Q291bnQgPSAwOworICAgIHNpemVfdCBjb2x1bW5Db3VudCA9IDA7CisKKyAgICB3aGlsZSAocmFu
Z2UucGVlaygpLnR5cGUoKSA9PSBTdHJpbmdUb2tlbikgeworICAgICAgICBpZiAoIXBhcnNlR3Jp
ZFRlbXBsYXRlQXJlYXNSb3cocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1
ZSgpLnRvU3RyaW5nKCksIGdyaWRBcmVhTWFwLCByb3dDb3VudCwgY29sdW1uQ291bnQpKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICsrcm93Q291bnQ7CisgICAgfQorCisg
ICAgaWYgKHJvd0NvdW50ID09IDApCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIEFTU0VS
VChjb2x1bW5Db3VudCk7CisgICAgcmV0dXJuIENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWU6OmNy
ZWF0ZShncmlkQXJlYU1hcCwgcm93Q291bnQsIGNvbHVtbkNvdW50KTsKK30KKworc3RhdGljIHZv
aWQgY291bnRLZXl3b3JkT25seVByb3BlcnR5VXNhZ2UoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwg
VXNlQ291bnRlciogY291bnRlciwgQ1NTVmFsdWVJRCB2YWx1ZUlEKQoreworICAgIGlmICghY291
bnRlcikKKyAgICAgICAgcmV0dXJuOworICAgIHN3aXRjaCAocHJvcGVydHkpIHsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZToKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NT
VmFsdWVOb25lKSB7CisgICAgICAgICAgICBjb3VudGVyLT5jb3VudChVc2VDb3VudGVyOjpDU1NW
YWx1ZUFwcGVhcmFuY2VOb25lKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvdW50
ZXItPmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5jZU5vdE5vbmUpOworICAgICAg
ICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVCdXR0b24pCisgICAgICAgICAgICAgICAgY291
bnRlci0+Y291bnQoVXNlQ291bnRlcjo6Q1NTVmFsdWVBcHBlYXJhbmNlQnV0dG9uKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVDYXJldCkKKyAgICAgICAgICAgICAg
ICBjb3VudGVyLT5jb3VudChVc2VDb3VudGVyOjpDU1NWYWx1ZUFwcGVhcmFuY2VDYXJldCk7Cisg
ICAgICAgICAgICBlbHNlIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlQ2hlY2tib3gpCisgICAgICAg
ICAgICAgICAgY291bnRlci0+Y291bnQoVXNlQ291bnRlcjo6Q1NTVmFsdWVBcHBlYXJhbmNlQ2hl
Y2tib3gpOworICAgICAgICAgICAgZWxzZSBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU1lbnVsaXN0
KQorICAgICAgICAgICAgICAgIGNvdW50ZXItPmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlQXBw
ZWFyYW5jZU1lbnVsaXN0KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlSUQgPT0gQ1NTVmFs
dWVNZW51bGlzdEJ1dHRvbikKKyAgICAgICAgICAgICAgICBjb3VudGVyLT5jb3VudChVc2VDb3Vu
dGVyOjpDU1NWYWx1ZUFwcGVhcmFuY2VNZW51bGlzdEJ1dHRvbik7CisgICAgICAgICAgICBlbHNl
IGlmICh2YWx1ZUlEID09IENTU1ZhbHVlTGlzdGJveCkKKyAgICAgICAgICAgICAgICBjb3VudGVy
LT5jb3VudChVc2VDb3VudGVyOjpDU1NWYWx1ZUFwcGVhcmFuY2VMaXN0Ym94KTsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVSYWRpbykKKyAgICAgICAgICAgICAgICBj
b3VudGVyLT5jb3VudChVc2VDb3VudGVyOjpDU1NWYWx1ZUFwcGVhcmFuY2VSYWRpbyk7CisgICAg
ICAgICAgICBlbHNlIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlU2VhcmNoZmllbGQpCisgICAgICAg
ICAgICAgICAgY291bnRlci0+Y291bnQoVXNlQ291bnRlcjo6Q1NTVmFsdWVBcHBlYXJhbmNlU2Vh
cmNoRmllbGQpOworICAgICAgICAgICAgZWxzZSBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVRleHRm
aWVsZCkKKyAgICAgICAgICAgICAgICBjb3VudGVyLT5jb3VudChVc2VDb3VudGVyOjpDU1NWYWx1
ZUFwcGVhcmFuY2VUZXh0RmllbGQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IGNvdW50ZXItPmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5jZU90aGVycyk7Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsK
KyAgICB9Cit9CisKK2NvbnN0IENTU1ZhbHVlKiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VTaW5n
bGVWYWx1ZShDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0eSwgQ1NTUHJvcGVydHlJRCBj
dXJyZW50U2hvcnRoYW5kKQoreworICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHkgPSByZXNvbHZl
Q1NTUHJvcGVydHlJRCh1bnJlc29sdmVkUHJvcGVydHkpOworICAgIGlmIChDU1NQYXJzZXJGYXN0
UGF0aHM6OmlzS2V5d29yZFByb3BlcnR5SUQocHJvcGVydHkpKSB7CisgICAgICAgIGlmICghQ1NT
UGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUocHJvcGVydHks
IG1fcmFuZ2UucGVlaygpLmlkKCksIG1fY29udGV4dC5tb2RlKCkpKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIGNvdW50S2V5d29yZE9ubHlQcm9wZXJ0eVVzYWdlKHByb3Bl
cnR5LCBtX2NvbnRleHQudXNlQ291bnRlcigpLCBtX3JhbmdlLnBlZWsoKS5pZCgpKTsKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVJZGVudChtX3JhbmdlKTsKKyAgICB9CisgICAgc3dpdGNoIChwcm9w
ZXJ0eSkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlXaWxsQ2hhbmdlOgorICAgICAgICByZXR1cm4g
Y29uc3VtZVdpbGxDaGFuZ2UobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2U6Cisg
ICAgICAgIHJldHVybiBjb25zdW1lUGFnZShtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
UXVvdGVzOgorICAgICAgICByZXR1cm4gY29uc3VtZVF1b3RlcyhtX3JhbmdlKTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0SGlnaGxpZ2h0OgorICAgICAgICByZXR1cm4gY29uc3VtZVdlYmtp
dEhpZ2hsaWdodChtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFZhcmlhbnRDYXBz
OgorICAgICAgICByZXR1cm4gY29uc3VtZUZvbnRWYXJpYW50Q2FwcyhtX3JhbmdlKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXM6CisgICAgICAgIHJldHVybiBjb25z
dW1lRm9udFZhcmlhbnRMaWdhdHVyZXMobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZv
bnRWYXJpYW50TnVtZXJpYzoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVGb250VmFyaWFudE51bWVy
aWMobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRGZWF0dXJlU2V0dGluZ3M6Cisg
ICAgICAgIHJldHVybiBjb25zdW1lRm9udEZlYXR1cmVTZXR0aW5ncyhtX3JhbmdlKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5Rm9udEZhbWlseToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVGb250RmFt
aWx5KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250V2VpZ2h0OgorICAgICAgICBy
ZXR1cm4gY29uc3VtZUZvbnRXZWlnaHQobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxl
dHRlclNwYWNpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nOgorICAgICAgICBy
ZXR1cm4gY29uc3VtZVNwYWNpbmcobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVRhYlNpemU6CisgICAgICAgIHJldHVybiBjb25zdW1lVGFiU2l6ZShtX3Jh
bmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFNpemVBZGp1
c3Q6CisgICAgICAgIHJldHVybiBjb25zdW1lVGV4dFNpemVBZGp1c3QobV9yYW5nZSwgbV9jb250
ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTaXplOgorICAgICAgICByZXR1
cm4gY29uc3VtZUZvbnRTaXplKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFVuaXRsZXNzUXVp
cms6OkFsbG93KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TGluZUhlaWdodDoKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVMaW5lSGVpZ2h0KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlSb3RhdGU6CisgICAgICAgIHJldHVybiBjb25zdW1lUm90YXRpb24obV9y
YW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNjYWxlOgorICAgICAgICByZXR1cm4gY29uc3Vt
ZVNjYWxlKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2xhdGU6CisgICAgICAg
IHJldHVybiBjb25zdW1lVHJhbnNsYXRlKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZzoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nOgorICAgICAgICByZXR1cm4g
Y29uc3VtZUxlbmd0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlTm9uTmVn
YXRpdmUpOworICAgIGNhc2UgQ1NTUHJvcGVydHlDb3VudGVySW5jcmVtZW50OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlDb3VudGVyUmVzZXQ6CisgICAgICAgIHJldHVybiBjb25zdW1lQ291bnRlciht
X3JhbmdlLCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUNvdW50ZXJJbmNyZW1lbnQgPyAxIDogMCk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNpemU6CisgICAgICAgIHJldHVybiBjb25zdW1lU2l6ZSht
X3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5U25hcEhlaWdo
dDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTbmFwSGVpZ2h0KG1fcmFuZ2UsIG1fY29udGV4dC5t
b2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0SW5kZW50OgorICAgICAgICByZXR1cm4g
Y29uc3VtZVRleHRJbmRlbnQobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eU1heFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhIZWlnaHQ6CisgICAg
ICAgIHJldHVybiBjb25zdW1lTWF4V2lkdGhPckhlaWdodChtX3JhbmdlLCBtX2NvbnRleHQsIFVu
aXRsZXNzUXVpcms6OkFsbG93KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWF4TG9naWNh
bFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsSGVpZ2h0OgorICAg
ICAgICByZXR1cm4gY29uc3VtZU1heFdpZHRoT3JIZWlnaHQobV9yYW5nZSwgbV9jb250ZXh0KTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5TWluV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbkhl
aWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUhl
aWdodDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVXaWR0aE9ySGVpZ2h0KG1fcmFuZ2UsIG1fY29u
dGV4dCwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
aW5Mb2dpY2FsV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxIZWln
aHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxXaWR0aDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TG9naWNhbEhlaWdodDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVXaWR0
aE9ySGVpZ2h0KG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdp
blRvcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQ6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eU1hcmdpbkJvdHRvbToKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luTGVmdDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5Qm90dG9tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlMZWZ0OgorICAgIGNh
c2UgQ1NTUHJvcGVydHlSaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VG9wOgorICAgICAgICBy
ZXR1cm4gY29uc3VtZU1hcmdpbk9yT2Zmc2V0KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFVu
aXRsZXNzUXVpcms6OkFsbG93KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luU3Rh
cnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVuZDoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5BZnRlcjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVNYXJnaW5Pck9mZnNldChtX3JhbmdlLCBt
X2NvbnRleHQubW9kZSgpLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlQYWRkaW5nVG9wOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQ6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b206CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRp
bmdMZWZ0OgorICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChtX3JhbmdlLCBt
X2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUsIFVuaXRsZXNzUXVpcms6OkFs
bG93KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ1N0YXJ0OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRQYWRkaW5nRW5kOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQ
YWRkaW5nQmVmb3JlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nQWZ0ZXI6Cisg
ICAgICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KG1fcmFuZ2UsIG1fY29udGV4dC5t
b2RlKCksIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Q2xpcDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDbGlwKG1fcmFu
Z2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlUb3VjaEFjdGlvbjoK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVUb3VjaEFjdGlvbihtX3JhbmdlKTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5U2Nyb2xsU25hcERlc3RpbmF0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPYmpl
Y3RQb3NpdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5UGVyc3BlY3RpdmVPcmlnaW46CisgICAg
ICAgIHJldHVybiBjb25zdW1lUG9zaXRpb24obV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVW5p
dGxlc3NRdWlyazo6Rm9yYmlkKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUNsYW1w
OgorICAgICAgICByZXR1cm4gY29uc3VtZUxpbmVDbGFtcChtX3JhbmdlKTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Rm9udFNpemVEZWx0YToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVMZW5n
dGgobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZUFsbCwgVW5pdGxlc3NRdWly
azo6QWxsb3cpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXI6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZToKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVMb2NhbGUobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVtbldpZHRoOgorICAg
ICAgICByZXR1cm4gY29uc3VtZUNvbHVtbldpZHRoKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlDb2x1bW5Db3VudDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb2x1bW5Db3VudChtX3Jh
bmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1uR2FwOgorICAgICAgICByZXR1cm4gY29u
c3VtZUNvbHVtbkdhcChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1By
b3BlcnR5Q29sdW1uU3BhbjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb2x1bW5TcGFuKG1fcmFu
Z2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlab29tOgorICAgICAgICByZXR1cm4gY29uc3VtZVpv
b20obV9yYW5nZSwgbV9jb250ZXh0KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uRGVs
YXk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25EZWxheToKKyAgICBjYXNlIENTU1By
b3BlcnR5QW5pbWF0aW9uRGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25E
dXJhdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvbkR1cmF0aW9uOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlBbmltYXRpb25GaWxsTW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5QW5p
bWF0aW9uSXRlcmF0aW9uQ291bnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbk5hbWU6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvblBsYXlTdGF0ZToKKyAgICBjYXNlIENTU1By
b3BlcnR5VHJhbnNpdGlvblByb3BlcnR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25U
aW1pbmdGdW5jdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvblRpbWluZ0Z1bmN0
aW9uOgorICAgICAgICByZXR1cm4gY29uc3VtZUFuaW1hdGlvblByb3BlcnR5TGlzdChwcm9wZXJ0
eSwgbV9yYW5nZSwgbV9jb250ZXh0LCB1bnJlc29sdmVkUHJvcGVydHkgPT0gQ1NTUHJvcGVydHlB
bGlhc1dlYmtpdEFuaW1hdGlvbk5hbWUpOworICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkQ29sdW1u
R2FwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkUm93R2FwOgorICAgICAgICByZXR1cm4gY29u
c3VtZUxlbmd0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlTm9uTmVnYXRp
dmUpOworICAgIGNhc2UgQ1NTUHJvcGVydHlTaGFwZU1hcmdpbjoKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVMZW5ndGhPclBlcmNlbnQobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5n
ZU5vbk5lZ2F0aXZlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5U2hhcGVJbWFnZVRocmVzaG9sZDoK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVOdW1iZXIobV9yYW5nZSwgVmFsdWVSYW5nZUFsbCk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveE9yZGluYWxHcm91cDoKKyAgICBjYXNlIENTU1By
b3BlcnR5T3JwaGFuczoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2lkb3dzOgorICAgICAgICByZXR1
cm4gY29uc3VtZVBvc2l0aXZlSW50ZWdlcihtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
VGV4dERlY29yYXRpb25Db2xvcjoKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OmNzczNUZXh0RGVjb3JhdGlvbnNFbmFibGVkKCkpOworICAgICAgICByZXR1cm4gY29uc3Vt
ZUNvbG9yKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRUZXh0U3Ryb2tlV2lkdGg6CisgICAgICAgIHJldHVybiBjb25zdW1lVGV4dFN0cm9rZVdp
ZHRoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RmlsbENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUYXBIaWdobGlnaHRD
b2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3I6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0Q29sb3I6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckVuZENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJCZWZvcmVDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJDb2xv
cjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlTdG9wQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsb29kQ29sb3I6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUxpZ2h0aW5nQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNv
bHVtblJ1bGVDb2xvcjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb2xvcihtX3JhbmdlLCBtX2Nv
bnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3I6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb2xvcihtX3Jh
bmdlLCBtX2NvbnRleHQubW9kZSgpLCBpblF1aXJrc01vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlclN0YXJ0V2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckVuZFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVXaWR0
aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aDoKKyAgICAgICAg
cmV0dXJuIGNvbnN1bWVCb3JkZXJXaWR0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBVbml0
bGVzc1F1aXJrOjpGb3JiaWQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xv
cjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJSaWdodENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xv
cjogeworICAgICAgICBib29sIGFsbG93UXVpcmt5Q29sb3JzID0gaW5RdWlya3NNb2RlKCkKKyAg
ICAgICAgICAgICYmIChjdXJyZW50U2hvcnRoYW5kID09IENTU1Byb3BlcnR5SW52YWxpZCB8fCBj
dXJyZW50U2hvcnRoYW5kID09IENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IpOworICAgICAgICByZXR1
cm4gY29uc3VtZUNvbG9yKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIGFsbG93UXVpcmt5Q29s
b3JzKTsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJv
cmRlclJpZ2h0V2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoOiB7Cisg
ICAgICAgIGJvb2wgYWxsb3dRdWlya3lMZW5ndGhzID0gaW5RdWlya3NNb2RlKCkKKyAgICAgICAg
ICAgICYmIChjdXJyZW50U2hvcnRoYW5kID09IENTU1Byb3BlcnR5SW52YWxpZCB8fCBjdXJyZW50
U2hvcnRoYW5kID09IENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgpOworICAgICAgICBVbml0bGVzc1F1
aXJrIHVuaXRsZXNzID0gYWxsb3dRdWlya3lMZW5ndGhzID8gVW5pdGxlc3NRdWlyazo6QWxsb3cg
OiBVbml0bGVzc1F1aXJrOjpGb3JiaWQ7CisgICAgICAgIHJldHVybiBjb25zdW1lQm9yZGVyV2lk
dGgobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgdW5pdGxlc3MpOworICAgIH0KKyAgICBjYXNl
IENTU1Byb3BlcnR5WkluZGV4OgorICAgICAgICByZXR1cm4gY29uc3VtZVpJbmRleChtX3Jhbmdl
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFNoYWRvdzogLy8gQ1NTMiBwcm9wZXJ0eSwgZHJv
cHBlZCBpbiBDU1MyLjEsIGJhY2sgaW4gQ1NTMywgc28gdHJlYXQgYXMgQ1NTMworICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3hTaGFkb3c6CisgICAgICAgIHJldHVybiBjb25zdW1lU2hhZG93KG1fcmFu
Z2UsIG1fY29udGV4dC5tb2RlKCksIHByb3BlcnR5ID09IENTU1Byb3BlcnR5Qm94U2hhZG93KTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5RmlsdGVyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZHJv
cEZpbHRlcjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVGaWx0ZXIobV9yYW5nZSwgbV9jb250ZXh0
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb246CisgICAgICAgIEFTU0VSVCgh
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzM1RleHREZWNvcmF0aW9uc0VuYWJsZWQoKSk7Cisg
ICAgICAgIC8vIGZhbGx0aHJvdWdoCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNv
cmF0aW9uc0luRWZmZWN0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkxpbmU6
CisgICAgICAgIHJldHVybiBjb25zdW1lVGV4dERlY29yYXRpb25MaW5lKG1fcmFuZ2UpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlEOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNb3Rpb25QYXRoOgorICAg
ICAgICByZXR1cm4gY29uc3VtZVBhdGhPck5vbmUobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eU1vdGlvbk9mZnNldDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQo
bV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZUFsbCk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eU1vdGlvblJvdGF0aW9uOgorICAgICAgICByZXR1cm4gY29uc3VtZU1vdGlvblJvdGF0
aW9uKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHls
ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVUZXh0RW1waGFzaXNTdHlsZShtX3JhbmdlKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yOgorICAgICAgICByZXR1cm4gY29uc3VtZU91
dGxpbmVDb2xvcihtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5T3V0bGluZU9mZnNldDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGgobV9yYW5nZSwg
bV9jb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZUFsbCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91
dGxpbmVXaWR0aDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVMaW5lV2lkdGgobV9yYW5nZSwgbV9j
b250ZXh0Lm1vZGUoKSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5VHJhbnNmb3JtOgorICAgICAgICByZXR1cm4gY29uc3VtZVRyYW5zZm9ybShtX3JhbmdlLCBt
X2NvbnRleHQubW9kZSgpLCB1bnJlc29sdmVkUHJvcGVydHkgPT0gQ1NTUHJvcGVydHlBbGlhc1dl
YmtpdFRyYW5zZm9ybSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdp
blg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWDoKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVQb3NpdGlvblgobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblk6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVQ
b3NpdGlvblkobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zZm9ybU9yaWdpblo6CisgICAgICAgIHJldHVybiBjb25zdW1lTGVuZ3RoKG1f
cmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VBbGwpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlGaWxsOgorICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2U6CisgICAgICAgIHJldHVybiBj
b25zdW1lUGFpbnRTdHJva2UobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVBhaW50T3JkZXI6CisgICAgICAgIHJldHVybiBjb25zdW1lUGFpbnRPcmRlciht
X3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFya2VyU3RhcnQ6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eU1hcmtlck1pZDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFya2VyRW5kOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlDbGlwUGF0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFzazoKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVOb25lT3JVUkkobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUZsZXhCYXNpczoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVGbGV4QmFzaXMobV9yYW5nZSwgbV9j
b250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsZXhHcm93OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlGbGV4U2hyaW5rOgorICAgICAgICByZXR1cm4gY29uc3VtZU51bWJlcihtX3Jh
bmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2VE
YXNoYXJyYXk6CisgICAgICAgIHJldHVybiBjb25zdW1lU3Ryb2tlRGFzaGFycmF5KG1fcmFuZ2Up
OworICAgIGNhc2UgQ1NTUHJvcGVydHlDb2x1bW5SdWxlV2lkdGg6CisgICAgICAgIHJldHVybiBj
b25zdW1lQ29sdW1uUnVsZVdpZHRoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlTdHJva2VPcGFjaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlGaWxsT3Bh
Y2l0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5U3RvcE9wYWNpdHk6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUZsb29kT3BhY2l0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5T3BhY2l0eToKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm94RmxleDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVOdW1iZXIo
bV9yYW5nZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhc2VsaW5lU2hp
ZnQ6CisgICAgICAgIHJldHVybiBjb25zdW1lQmFzZWxpbmVTaGlmdChtX3JhbmdlKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5U3Ryb2tlTWl0ZXJsaW1pdDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVO
dW1iZXIobV9yYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5U3Ryb2tlV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZURhc2hvZmZzZXQ6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUN4OgorICAgIGNhc2UgQ1NTUHJvcGVydHlDeToKKyAgICBjYXNl
IENTU1Byb3BlcnR5WDoKKyAgICBjYXNlIENTU1Byb3BlcnR5WToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5UjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQobV9yYW5nZSwgU1ZH
QXR0cmlidXRlTW9kZSwgVmFsdWVSYW5nZUFsbCwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Ung6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVJ5OgorICAgICAgICBy
ZXR1cm4gY29uc3VtZVJ4T3JSeShtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q3Vyc29y
OgorICAgICAgICByZXR1cm4gY29uc3VtZUN1cnNvcihtX3JhbmdlLCBtX2NvbnRleHQsIGluUXVp
cmtzTW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29udGFpbjoKKyAgICAgICAgcmV0dXJu
IGNvbnN1bWVDb250YWluKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2Zvcm1P
cmlnaW46CisgICAgICAgIHJldHVybiBjb25zdW1lVHJhbnNmb3JtT3JpZ2luKG1fcmFuZ2UsIG1f
Y29udGV4dC5tb2RlKCksIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUNvbnRlbnQ6CisgICAgICAgIHJldHVybiBjb25zdW1lQ29udGVudChtX3JhbmdlLCBtX2Nv
bnRleHQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVySW1hZ2VTb3VyY2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tCb3hJbWFnZVNvdXJjZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJbWFnZU9yTm9uZShtX3Jh
bmdlLCBtX2NvbnRleHQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlQZXJzcGVjdGl2ZToKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVQZXJzcGVjdGl2ZShtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCB1
bnJlc29sdmVkUHJvcGVydHkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlTY3JvbGxTbmFwQ29vcmRp
bmF0ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTY3JvbGxTbmFwQ29vcmRpbmF0ZShtX3Jhbmdl
LCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xsU25hcFBvaW50
c1g6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNjcm9sbFNuYXBQb2ludHNZOgorICAgICAgICByZXR1
cm4gY29uc3VtZVNjcm9sbFNuYXBQb2ludHMobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21MZWZ0UmFkaXVzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1
czoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCb3JkZXJSYWRpdXNDb3JuZXIobV9yYW5nZSwgbV9j
b250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXhHcm91cDoK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVJbnRlZ2VyKG1fcmFuZ2UsIDApOworICAgIGNhc2UgQ1NT
UHJvcGVydHlPcmRlcjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJbnRlZ2VyKG1fcmFuZ2UpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lUG9zaXRpb246CisgICAgICAgIC8vIGF1
dG8gfCBbIHVuZGVyIHx8IFsgbGVmdCB8IHJpZ2h0IF0gXSwgYnV0IHdlIG9ubHkgc3VwcG9ydCBh
dXRvIHwgdW5kZXIgZm9yIG5vdworICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6Y3NzM1RleHREZWNvcmF0aW9uc0VuYWJsZWQoKSk7CisgICAgICAgIHJldHVybiBjb25zdW1l
SWRlbnQ8Q1NTVmFsdWVBdXRvLCBDU1NWYWx1ZVVuZGVyPihtX3JhbmdlKTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5VmVydGljYWxBbGlnbjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVWZXJ0aWNhbEFs
aWduKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlTaGFw
ZU91dHNpZGU6CisgICAgICAgIHJldHVybiBjb25zdW1lU2hhcGVPdXRzaWRlKG1fcmFuZ2UsIG1f
Y29udGV4dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENsaXBQYXRoOgorICAgICAgICBy
ZXR1cm4gY29uc3VtZVdlYmtpdENsaXBQYXRoKG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUp1c3RpZnlDb250ZW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlBbGlnbkNv
bnRlbnQ6CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NHcmlkTGF5
b3V0RW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb250ZW50RGlzdHJpYnV0aW9u
T3ZlcmZsb3dQb3NpdGlvbihtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1h
Z2VSZXBlYXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVJlcGVhdDoK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVCb3JkZXJJbWFnZVJlcGVhdChtX3JhbmdlKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VTbGljZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFza0JveEltYWdlU2xpY2U6CisgICAgICAgIHJldHVybiBjb25zdW1lQm9yZGVySW1hZ2VT
bGljZShwcm9wZXJ0eSwgbV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdl
T3V0c2V0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VPdXRzZXQ6Cisg
ICAgICAgIHJldHVybiBjb25zdW1lQm9yZGVySW1hZ2VPdXRzZXQobV9yYW5nZSk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tCb3hJbWFnZVdpZHRoOgorICAgICAgICByZXR1cm4gY29uc3VtZUJvcmRlckltYWdlV2lk
dGgobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlOgorICAg
ICAgICByZXR1cm4gY29uc3VtZVdlYmtpdEJvcmRlckltYWdlKHByb3BlcnR5LCBtX3JhbmdlLCBt
X2NvbnRleHQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hSZWZsZWN0OgorICAgICAg
ICByZXR1cm4gY29uc3VtZVJlZmxlY3QobV9yYW5nZSwgbV9jb250ZXh0KTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5Rm9udFNpemVBZGp1c3Q6CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpjc3NGb250U2l6ZUFkanVzdEVuYWJsZWQoKSk7CisgICAgICAgIHJldHVybiBjb25z
dW1lRm9udFNpemVBZGp1c3QobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUltYWdlT3Jp
ZW50YXRpb246CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppbWFnZU9y
aWVudGF0aW9uRW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJbWFnZU9yaWVudGF0
aW9uKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZEJsZW5kTW9kZToKKyAgICBjYXNlIENTU1By
b3BlcnR5QmFja2dyb3VuZENsaXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFn
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbjoKKyAgICBjYXNlIENTU1By
b3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWDoKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFBvc2l0aW9uWToKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemU6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eU1hc2tTb3VyY2VUeXBlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
YWNrZ3JvdW5kQ2xpcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZE9yaWdp
bjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXA6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJ
bWFnZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbjoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWFza1Bvc2l0aW9uWToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1NpemU6CisgICAg
ICAgIHJldHVybiBjb25zdW1lQ29tbWFTZXBhcmF0ZWRCYWNrZ3JvdW5kQ29tcG9uZW50KHVucmVz
b2x2ZWRQcm9wZXJ0eSwgbV9yYW5nZSwgbV9jb250ZXh0KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TWFza1JlcGVhdFg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZ
OgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25JdGVt
czoKKyAgICAgICAgRENIRUNLKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRF
bmFibGVkKCkpOworICAgICAgICByZXR1cm4gY29uc3VtZUFsaWduSXRlbXMobV9yYW5nZSk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUp1c3RpZnlTZWxmOgorICAgIGNhc2UgQ1NTUHJvcGVydHlBbGln
blNlbGY6CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NHcmlkTGF5
b3V0RW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTZWxmUG9zaXRpb25PdmVyZmxv
d1Bvc2l0aW9uKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlKdXN0aWZ5SXRlbXM6Cisg
ICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NHcmlkTGF5b3V0RW5hYmxl
ZCgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVKdXN0aWZ5SXRlbXMobV9yYW5nZSk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUdyaWRDb2x1bW5FbmQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRD
b2x1bW5TdGFydDoKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZFJvd0VuZDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5R3JpZFJvd1N0YXJ0OgorICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6Y3NzR3JpZExheW91dEVuYWJsZWQoKSk7CisgICAgICAgIHJldHVybiBjb25zdW1lR3Jp
ZExpbmUobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRBdXRvQ29sdW1uczoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5R3JpZEF1dG9Sb3dzOgorICAgICAgICBBU1NFUlQoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6Y3NzR3JpZExheW91dEVuYWJsZWQoKSk7CisgICAgICAgIHJldHVybiBj
b25zdW1lR3JpZFRyYWNrTGlzdChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBHcmlkQXV0byk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZUNvbHVtbnM6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUdyaWRUZW1wbGF0ZVJvd3M6CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpjc3NHcmlkTGF5b3V0RW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVH
cmlkVGVtcGxhdGVzUm93c09yQ29sdW1ucyhtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQXJlYXM6CisgICAgICAgIEFTU0VSVChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NHcmlkTGF5b3V0RW5hYmxlZCgpKTsKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVHcmlkVGVtcGxhdGVBcmVhcyhtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5R3JpZEF1dG9GbG93OgorICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
Y3NzR3JpZExheW91dEVuYWJsZWQoKSk7CisgICAgICAgIHJldHVybiBjb25zdW1lR3JpZEF1dG9G
bG93KG1fcmFuZ2UpOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lRm9udERpc3BsYXkoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgcmV0dXJuIGNvbnN1bWVJZGVudDxDU1NW
YWx1ZUF1dG8sIENTU1ZhbHVlQmxvY2ssIENTU1ZhbHVlU3dhcCwgQ1NTVmFsdWVGYWxsYmFjaywg
Q1NTVmFsdWVPcHRpb25hbD4ocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWVMaXN0KiBjb25z
dW1lRm9udEZhY2VVbmljb2RlUmFuZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7Cisg
ICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJh
dGVkKCk7CisKKyAgICBkbyB7CisgICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9
IHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIGlmICh0b2tlbi50
eXBlKCkgIT0gVW5pY29kZVJhbmdlVG9rZW4pCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgICAgICBVQ2hhcjMyIHN0YXJ0ID0gdG9rZW4udW5pY29kZVJhbmdlU3RhcnQoKTsKKyAg
ICAgICAgVUNoYXIzMiBlbmQgPSB0b2tlbi51bmljb2RlUmFuZ2VFbmQoKTsKKyAgICAgICAgaWYg
KHN0YXJ0ID4gZW5kKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHZhbHVl
cy0+YXBwZW5kKCpDU1NVbmljb2RlUmFuZ2VWYWx1ZTo6Y3JlYXRlKHN0YXJ0LCBlbmQpKTsKKyAg
ICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSk7CisKKyAg
ICByZXR1cm4gdmFsdWVzOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVGb250RmFjZVNy
Y1VSSShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYg
Y29udGV4dCkKK3sKKyAgICBTdHJpbmcgdXJsID0gY29uc3VtZVVybEFzU3RyaW5nVmlldyhyYW5n
ZSkudG9TdHJpbmcoKTsKKyAgICBpZiAodXJsLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICBDU1NGb250RmFjZVNyY1ZhbHVlKiB1cmlWYWx1ZShDU1NGb250RmFjZVNyY1Zh
bHVlOjpjcmVhdGUodXJsLCBjb250ZXh0LmNvbXBsZXRlVVJMKHVybCksIGNvbnRleHQuc2hvdWxk
Q2hlY2tDb250ZW50U2VjdXJpdHlQb2xpY3koKSkpOworICAgIHVyaVZhbHVlLT5zZXRSZWZlcnJl
cihjb250ZXh0LnJlZmVycmVyKCkpOworCisgICAgaWYgKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklk
KCkgIT0gQ1NTVmFsdWVGb3JtYXQpCisgICAgICAgIHJldHVybiB1cmlWYWx1ZTsKKworICAgIC8v
IEZJWE1FOiBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWZvbnRzIHNheXMgdGhhdCBmb3Jt
YXQoKSBjb250YWlucyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHN0cmluZ3MsCisgICAgLy8g
YnV0IENTU0ZvbnRGYWNlU3JjVmFsdWUgc3RvcmVzIG9ubHkgb25lIGZvcm1hdC4gQWxsb3dpbmcg
b25lIGZvcm1hdCBmb3Igbm93LgorICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1
bWVGdW5jdGlvbihyYW5nZSk7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIGFyZyA9IGFyZ3Mu
Y29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICBpZiAoKGFyZy50eXBlKCkgIT0gU3Ry
aW5nVG9rZW4pIHx8ICFhcmdzLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IHVyaVZhbHVlLT5zZXRGb3JtYXQoYXJnLnZhbHVlKCkudG9TdHJpbmcoKSk7CisgICAgcmV0dXJu
IHVyaVZhbHVlOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVGb250RmFjZVNyY0xvY2Fs
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250
ZXh0KQoreworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihy
YW5nZSk7CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5RGlzcG9zaXRpb24gc2hvdWxkQ2hlY2tD
b250ZW50U2VjdXJpdHlQb2xpY3kgPSBjb250ZXh0LnNob3VsZENoZWNrQ29udGVudFNlY3VyaXR5
UG9saWN5KCk7CisgICAgaWYgKGFyZ3MucGVlaygpLnR5cGUoKSA9PSBTdHJpbmdUb2tlbikgewor
ICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgYXJnID0gYXJncy5jb25zdW1lSW5jbHVkaW5n
V2hpdGVzcGFjZSgpOworICAgICAgICBpZiAoIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gQ1NTRm9udEZhY2VTcmNWYWx1ZTo6Y3JlYXRl
TG9jYWwoYXJnLnZhbHVlKCkudG9TdHJpbmcoKSwgc2hvdWxkQ2hlY2tDb250ZW50U2VjdXJpdHlQ
b2xpY3kpOworICAgIH0KKyAgICBpZiAoYXJncy5wZWVrKCkudHlwZSgpID09IElkZW50VG9rZW4p
IHsKKyAgICAgICAgU3RyaW5nIGZhbWlseU5hbWUgPSBjb25jYXRlbmF0ZUZhbWlseU5hbWUoYXJn
cyk7CisgICAgICAgIGlmICghYXJncy5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIHJldHVybiBDU1NGb250RmFjZVNyY1ZhbHVlOjpjcmVhdGVMb2NhbChmYW1p
bHlOYW1lLCBzaG91bGRDaGVja0NvbnRlbnRTZWN1cml0eVBvbGljeSk7CisgICAgfQorICAgIHJl
dHVybiBudWxscHRyOworfQorCitzdGF0aWMgQ1NTVmFsdWVMaXN0KiBjb25zdW1lRm9udEZhY2VT
cmMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNv
bnRleHQpCit7CisgICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZUNvbW1hU2VwYXJhdGVkKCk7CisKKyAgICBkbyB7CisgICAgICAgIGNvbnN0IENTU1BhcnNlclRv
a2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICAgICAgQ1NTVmFsdWUqIHBhcnNlZFZhbHVl
ID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKHRva2VuLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUxv
Y2FsKQorICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lRm9udEZhY2VTcmNMb2NhbChy
YW5nZSwgY29udGV4dCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0g
Y29uc3VtZUZvbnRGYWNlU3JjVVJJKHJhbmdlLCBjb250ZXh0KTsKKyAgICAgICAgaWYgKCFwYXJz
ZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB2YWx1ZXMtPmFw
cGVuZCgqcGFyc2VkVmFsdWUpOworICAgIH0gd2hpbGUgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1do
aXRlc3BhY2UocmFuZ2UpKTsKKyAgICByZXR1cm4gdmFsdWVzOworfQorCitib29sIENTU1Byb3Bl
cnR5UGFyc2VyOjpwYXJzZUZvbnRGYWNlRGVzY3JpcHRvcihDU1NQcm9wZXJ0eUlEIHByb3BJZCkK
K3sKKyAgICBDU1NWYWx1ZSogcGFyc2VkVmFsdWUgPSBudWxscHRyOworICAgIHN3aXRjaCAocHJv
cElkKSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRGYW1pbHk6CisgICAgICAgIGlmIChjb25z
dW1lR2VuZXJpY0ZhbWlseShtX3JhbmdlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lRmFtaWx5TmFtZShtX3JhbmdlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNyYzogLy8gVGhpcyBpcyBhIGxpc3Qgb2YgdXJs
cyBvciBsb2NhbCByZWZlcmVuY2VzLgorICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVGb250
RmFjZVNyYyhtX3JhbmdlLCBtX2NvbnRleHQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENT
U1Byb3BlcnR5VW5pY29kZVJhbmdlOgorICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVGb250
RmFjZVVuaWNvZGVSYW5nZShtX3JhbmdlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUZvbnREaXNwbGF5OgorICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVGb250RGlz
cGxheShtX3JhbmdlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRT
dHJldGNoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3R5bGU6IHsKKyAgICAgICAgQ1NTVmFs
dWVJRCBpZCA9IG1fcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpOworICAg
ICAgICBpZiAoIUNTU1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZh
bHVlKHByb3BJZCwgaWQsIG1fY29udGV4dC5tb2RlKCkpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBwYXJzZWRWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVu
dGlmaWVyKGlkKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlG
b250VmFyaWFudDoKKyAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lRm9udFZhcmlhbnRMaXN0
KG1fcmFuZ2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFdlaWdo
dDoKKyAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lRm9udFdlaWdodChtX3JhbmdlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRGZWF0dXJlU2V0dGluZ3M6Cisg
ICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUZvbnRGZWF0dXJlU2V0dGluZ3MobV9yYW5nZSk7
CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIGlmICghcGFyc2VkVmFsdWUgfHwgIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgYWRkUHJvcGVydHkocHJvcElkLCBDU1NQcm9wZXJ0eUludmFsaWQsICpw
YXJzZWRWYWx1ZSwgZmFsc2UpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIENTU1Byb3Bl
cnR5UGFyc2VyOjpjb25zdW1lU3lzdGVtRm9udChib29sIGltcG9ydGFudCkKK3sKKyAgICBDU1NW
YWx1ZUlEIHN5c3RlbUZvbnRJRCA9IG1fcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2Uo
KS5pZCgpOworICAgIEFTU0VSVChzeXN0ZW1Gb250SUQgPj0gQ1NTVmFsdWVDYXB0aW9uICYmIHN5
c3RlbUZvbnRJRCA8PSBDU1NWYWx1ZVN0YXR1c0Jhcik7CisgICAgaWYgKCFtX3JhbmdlLmF0RW5k
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEZvbnRTdHlsZSBmb250U3R5bGUgPSBG
b250U3R5bGVOb3JtYWw7CisgICAgRm9udFdlaWdodCBmb250V2VpZ2h0ID0gRm9udFdlaWdodE5v
cm1hbDsKKyAgICBmbG9hdCBmb250U2l6ZSA9IDA7CisgICAgQXRvbWljU3RyaW5nIGZvbnRGYW1p
bHk7CisgICAgTGF5b3V0VGhlbWU6OnRoZW1lKCkuc3lzdGVtRm9udChzeXN0ZW1Gb250SUQsIGZv
bnRTdHlsZSwgZm9udFdlaWdodCwgZm9udFNpemUsIGZvbnRGYW1pbHkpOworCisgICAgYWRkUHJv
cGVydHkoQ1NTUHJvcGVydHlGb250U3R5bGUsIENTU1Byb3BlcnR5Rm9udCwgKkNTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKGZvbnRTdHlsZSA9PSBGb250U3R5bGVJdGFsaWMgPyBD
U1NWYWx1ZUl0YWxpYyA6IENTU1ZhbHVlTm9ybWFsKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsIENTU1Byb3BlcnR5Rm9udCwgKkNTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUoZm9udFdlaWdodCksIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHko
Q1NTUHJvcGVydHlGb250U2l6ZSwgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShmb250U2l6ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQaXhlbHMpLCBp
bXBvcnRhbnQpOworICAgIENTU1ZhbHVlTGlzdCogZm9udEZhbWlseUxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgZm9udEZhbWlseUxpc3QtPmFwcGVuZCgq
Q1NTRm9udEZhbWlseVZhbHVlOjpjcmVhdGUoZm9udEZhbWlseSkpOworICAgIGFkZFByb3BlcnR5
KENTU1Byb3BlcnR5Rm9udEZhbWlseSwgQ1NTUHJvcGVydHlGb250LCAqZm9udEZhbWlseUxpc3Qs
IGltcG9ydGFudCk7CisKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTdHJldGNoLCBD
U1NQcm9wZXJ0eUZvbnQsICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NW
YWx1ZU5vcm1hbCksIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250
VmFyaWFudENhcHMsIENTU1Byb3BlcnR5Rm9udCwgKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJ
ZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFsKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUZvbnRWYXJpYW50TGlnYXR1cmVzLCBDU1NQcm9wZXJ0eUZvbnQsICpDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vcm1hbCksIGltcG9ydGFudCk7
CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250VmFyaWFudE51bWVyaWMsIENTU1Byb3Bl
cnR5Rm9udCwgKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9y
bWFsKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpbmVIZWlnaHQs
IENTU1Byb3BlcnR5Rm9udCwgKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENT
U1ZhbHVlTm9ybWFsKSwgaW1wb3J0YW50KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBD
U1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUZvbnQoYm9vbCBpbXBvcnRhbnQpCit7CisgICAgLy8g
TGV0J3MgY2hlY2sgaWYgdGhlcmUgaXMgYW4gaW5oZXJpdCBvciBpbml0aWFsIHNvbWV3aGVyZSBp
biB0aGUgc2hvcnRoYW5kLgorICAgIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UgPSBtX3Jhbmdl
OworICAgIHdoaWxlICghcmFuZ2UuYXRFbmQoKSkgeworICAgICAgICBDU1NWYWx1ZUlEIGlkID0g
cmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpOworICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVJbmhlcml0IHx8IGlkID09IENTU1ZhbHVlSW5pdGlhbCkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgLy8gT3B0aW9uYWwgZm9udC1zdHlsZSwgZm9udC12
YXJpYW50LCBmb250LXN0cmV0Y2ggYW5kIGZvbnQtd2VpZ2h0LgorICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBmb250U3R5bGUgPSBudWxscHRyOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmb250VmFy
aWFudENhcHMgPSBudWxscHRyOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmb250V2VpZ2h0ID0g
bnVsbHB0cjsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogZm9udFN0cmV0Y2ggPSBudWxscHRyOwor
ICAgIHdoaWxlICghbV9yYW5nZS5hdEVuZCgpKSB7CisgICAgICAgIENTU1ZhbHVlSUQgaWQgPSBt
X3JhbmdlLnBlZWsoKS5pZCgpOworICAgICAgICBpZiAoIWZvbnRTdHlsZSAmJiBDU1NQYXJzZXJG
YXN0UGF0aHM6OmlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRWYWx1ZShDU1NQcm9wZXJ0eUZvbnRT
dHlsZSwgaWQsIG1fY29udGV4dC5tb2RlKCkpKSB7CisgICAgICAgICAgICBmb250U3R5bGUgPSBj
b25zdW1lSWRlbnQobV9yYW5nZSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoIWZvbnRWYXJpYW50Q2FwcyAmJiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwg
aWQgPT0gQ1NTVmFsdWVTbWFsbENhcHMpKSB7CisgICAgICAgICAgICAvLyBGb250IHZhcmlhbnQg
aW4gdGhlIHNob3J0aGFuZCBpcyBwYXJ0aWN1bGFyLCBpdCBvbmx5IGFjY2VwdHMgbm9ybWFsIG9y
IHNtYWxsLWNhcHMuCisgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3Jn
L2Nzcy1mb250cy8jcHJvcGRlZi1mb250CisgICAgICAgICAgICBmb250VmFyaWFudENhcHMgPSBj
b25zdW1lRm9udFZhcmlhbnRDU1MyMShtX3JhbmdlKTsKKyAgICAgICAgICAgIGlmIChmb250VmFy
aWFudENhcHMpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKCFmb250V2VpZ2h0KSB7CisgICAgICAgICAgICBmb250V2VpZ2h0ID0gY29uc3VtZUZvbnRX
ZWlnaHQobV9yYW5nZSk7CisgICAgICAgICAgICBpZiAoZm9udFdlaWdodCkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZvbnRTdHJldGNoICYmIENT
U1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKENTU1Byb3Bl
cnR5Rm9udFN0cmV0Y2gsIGlkLCBtX2NvbnRleHQubW9kZSgpKSkKKyAgICAgICAgICAgIGZvbnRT
dHJldGNoID0gY29uc3VtZUlkZW50KG1fcmFuZ2UpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBpZiAobV9yYW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgQ1NTUHJv
cGVydHlGb250LCBmb250U3R5bGUgPyAqZm9udFN0eWxlIDogKkNTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFsKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50Q2FwcywgQ1NTUHJvcGVydHlGb250LCBmb250VmFy
aWFudENhcHMgPyAqZm9udFZhcmlhbnRDYXBzIDogKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJ
ZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFsKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUZvbnRWYXJpYW50TGlnYXR1cmVzLCBDU1NQcm9wZXJ0eUZvbnQsICpDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vcm1hbCksIGltcG9ydGFudCk7
CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250VmFyaWFudE51bWVyaWMsIENTU1Byb3Bl
cnR5Rm9udCwgKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9y
bWFsKSwgaW1wb3J0YW50KTsKKworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFdlaWdo
dCwgQ1NTUHJvcGVydHlGb250LCBmb250V2VpZ2h0ID8gKmZvbnRXZWlnaHQgOiAqQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOwor
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFN0cmV0Y2gsIENTU1Byb3BlcnR5Rm9udCwg
Zm9udFN0cmV0Y2ggPyAqZm9udFN0cmV0Y2ggOiAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlk
ZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworCisgICAgLy8gTm93IGEgZm9u
dCBzaXplIF9tdXN0XyBjb21lLgorICAgIENTU1ZhbHVlKiBmb250U2l6ZSA9IGNvbnN1bWVGb250
U2l6ZShtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBpZiAoIWZvbnRTaXplIHx8IG1f
cmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYWRkUHJvcGVydHko
Q1NTUHJvcGVydHlGb250U2l6ZSwgQ1NTUHJvcGVydHlGb250LCAqZm9udFNpemUsIGltcG9ydGFu
dCk7CisKKyAgICBpZiAoY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShtX3JhbmdlKSkg
eworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogbGluZUhlaWdodCA9IGNvbnN1bWVMaW5lSGVp
Z2h0KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgICAgICBpZiAoIWxpbmVIZWlnaHQp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3Bl
cnR5TGluZUhlaWdodCwgQ1NTUHJvcGVydHlGb250LCAqbGluZUhlaWdodCwgaW1wb3J0YW50KTsK
KyAgICB9IGVsc2UgeworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpbmVIZWlnaHQs
IENTU1Byb3BlcnR5Rm9udCwgKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENT
U1ZhbHVlTm9ybWFsKSwgaW1wb3J0YW50KTsKKyAgICB9CisKKyAgICAvLyBGb250IGZhbWlseSBt
dXN0IGNvbWUgbm93LgorICAgIENTU1ZhbHVlKiBwYXJzZWRGYW1pbHlWYWx1ZSA9IGNvbnN1bWVG
b250RmFtaWx5KG1fcmFuZ2UpOworICAgIGlmICghcGFyc2VkRmFtaWx5VmFsdWUpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udEZhbWlseSwg
Q1NTUHJvcGVydHlGb250LCAqcGFyc2VkRmFtaWx5VmFsdWUsIGltcG9ydGFudCk7CisKKyAgICAv
LyBGSVhNRTogaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMS9XRC1jc3MzLWZvbnRzLTIwMTEwMzI0
LyNmb250LXByb3AgcmVxdWlyZXMgdGhhdAorICAgIC8vICJmb250LXN0cmV0Y2giLCAiZm9udC1z
aXplLWFkanVzdCIsIGFuZCAiZm9udC1rZXJuaW5nIiBiZSByZXNldCB0byB0aGVpciBpbml0aWFs
IHZhbHVlcworICAgIC8vIGJ1dCB3ZSBkb24ndCBzZWVtIHRvIHN1cHBvcnQgdGhlbSBhdCB0aGUg
bW9tZW50LiBUaGV5IHNob3VsZCBhbHNvIGJlIGFkZGVkIGhlcmUgb25jZSBpbXBsZW1lbnRlZC4K
KyAgICByZXR1cm4gbV9yYW5nZS5hdEVuZCgpOworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2Vy
Ojpjb25zdW1lRm9udFZhcmlhbnRTaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpCit7CisgICAgaWYg
KGlkZW50TWF0Y2hlczxDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVOb25lPihtX3JhbmdlLnBlZWso
KS5pZCgpKSkgeworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50TGln
YXR1cmVzLCBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LCAqY29uc3VtZUlkZW50KG1fcmFuZ2UpLCBp
bXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50Q2Fw
cywgQ1NTUHJvcGVydHlGb250VmFyaWFudCwgKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVu
dGlmaWVyKENTU1ZhbHVlTm9ybWFsKSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIG1fcmFu
Z2UuYXRFbmQoKTsKKyAgICB9CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogY2Fwc1ZhbHVlID0g
bnVsbHB0cjsKKyAgICBGb250VmFyaWFudExpZ2F0dXJlc1BhcnNlciBsaWdhdHVyZXNQYXJzZXI7
CisgICAgRm9udFZhcmlhbnROdW1lcmljUGFyc2VyIG51bWVyaWNQYXJzZXI7CisgICAgZG8gewor
ICAgICAgICBGb250VmFyaWFudExpZ2F0dXJlc1BhcnNlcjo6UGFyc2VSZXN1bHQgbGlnYXR1cmVz
UGFyc2VSZXN1bHQgPSBsaWdhdHVyZXNQYXJzZXIuY29uc3VtZUxpZ2F0dXJlKG1fcmFuZ2UpOwor
ICAgICAgICBGb250VmFyaWFudE51bWVyaWNQYXJzZXI6OlBhcnNlUmVzdWx0IG51bWVyaWNQYXJz
ZVJlc3VsdCA9IG51bWVyaWNQYXJzZXIuY29uc3VtZU51bWVyaWMobV9yYW5nZSk7CisgICAgICAg
IGlmIChsaWdhdHVyZXNQYXJzZVJlc3VsdCA9PSBGb250VmFyaWFudExpZ2F0dXJlc1BhcnNlcjo6
UGFyc2VSZXN1bHQ6OkNvbnN1bWVkVmFsdWUKKyAgICAgICAgICAgIHx8IG51bWVyaWNQYXJzZVJl
c3VsdCA9PSBGb250VmFyaWFudE51bWVyaWNQYXJzZXI6OlBhcnNlUmVzdWx0OjpDb25zdW1lZFZh
bHVlKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGxpZ2F0dXJlc1BhcnNl
UmVzdWx0ID09IEZvbnRWYXJpYW50TGlnYXR1cmVzUGFyc2VyOjpQYXJzZVJlc3VsdDo6RGlzYWxs
b3dlZFZhbHVlCisgICAgICAgICAgICB8fCBudW1lcmljUGFyc2VSZXN1bHQgPT0gRm9udFZhcmlh
bnROdW1lcmljUGFyc2VyOjpQYXJzZVJlc3VsdDo6RGlzYWxsb3dlZFZhbHVlKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIENTU1ZhbHVlSUQgaWQgPSBtX3JhbmdlLnBlZWso
KS5pZCgpOworICAgICAgICBzd2l0Y2ggKGlkKSB7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVTbWFs
bENhcHM6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVBbGxTbWFsbENhcHM6CisgICAgICAgIGNhc2Ug
Q1NTVmFsdWVQZXRpdGVDYXBzOgorICAgICAgICBjYXNlIENTU1ZhbHVlQWxsUGV0aXRlQ2FwczoK
KyAgICAgICAgY2FzZSBDU1NWYWx1ZVVuaWNhc2U6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVUaXRs
aW5nQ2FwczoKKyAgICAgICAgICAgIC8vIE9ubHkgb25lIGNhcHMgdmFsdWUgcGVybWl0dGVkIGlu
IGZvbnQtdmFyaWFudCBncmFtbWFyLgorICAgICAgICAgICAgaWYgKGNhcHNWYWx1ZSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBjYXBzVmFsdWUgPSBjb25zdW1l
SWRlbnQobV9yYW5nZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0gd2hpbGUgKCFtX3Jhbmdl
LmF0RW5kKCkpOworCisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250VmFyaWFudExpZ2F0
dXJlcywgQ1NTUHJvcGVydHlGb250VmFyaWFudCwgKmxpZ2F0dXJlc1BhcnNlci5maW5hbGl6ZVZh
bHVlKCksIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250VmFyaWFu
dE51bWVyaWMsIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsICpudW1lcmljUGFyc2VyLmZpbmFsaXpl
VmFsdWUoKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRWYXJp
YW50Q2FwcywgQ1NTUHJvcGVydHlGb250VmFyaWFudCwgY2Fwc1ZhbHVlID8gKmNhcHNWYWx1ZSA6
ICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vcm1hbCksIGlt
cG9ydGFudCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6
OmNvbnN1bWVCb3JkZXJTcGFjaW5nKGJvb2wgaW1wb3J0YW50KQoreworICAgIENTU1ZhbHVlKiBo
b3Jpem9udGFsU3BhY2luZyA9IGNvbnN1bWVMZW5ndGgobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUo
KSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlLCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7CisgICAgaWYg
KCFob3Jpem9udGFsU3BhY2luZykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIENTU1ZhbHVl
KiB2ZXJ0aWNhbFNwYWNpbmcgPSBob3Jpem9udGFsU3BhY2luZzsKKyAgICBpZiAoIW1fcmFuZ2Uu
YXRFbmQoKSkKKyAgICAgICAgdmVydGljYWxTcGFjaW5nID0gY29uc3VtZUxlbmd0aChtX3Jhbmdl
LCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUsIFVuaXRsZXNzUXVpcms6
OkFsbG93KTsKKyAgICBpZiAoIXZlcnRpY2FsU3BhY2luZyB8fCAhbV9yYW5nZS5hdEVuZCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJIb3Jpem9udGFsU3BhY2luZywgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nLCAqaG9yaXpv
bnRhbFNwYWNpbmcsIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcsIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZywgKnZlcnRp
Y2FsU3BhY2luZywgaW1wb3J0YW50KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIENT
U1ZhbHVlKiBjb25zdW1lU2luZ2xlVmlld3BvcnREZXNjcmlwdG9yKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBDU1NQcm9wZXJ0eUlEIHByb3BJZCwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJN
b2RlKQoreworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICBzd2l0
Y2ggKHByb3BJZCkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5XaWR0aDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5TWF4V2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbkhlaWdodDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5TWF4SGVpZ2h0OgorICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRv
IHx8IGlkID09IENTU1ZhbHVlSW50ZXJuYWxFeHRlbmRUb1pvb20pCisgICAgICAgICAgICByZXR1
cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBl
cmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eU1pblpvb206CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1heFpvb206Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVpvb206IHsKKyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0
bykKKyAgICAgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgICAgICBDU1NW
YWx1ZSogcGFyc2VkVmFsdWUgPSBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlTm9uTmVn
YXRpdmUpOworICAgICAgICBpZiAocGFyc2VkVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gcGFy
c2VkVmFsdWU7CisgICAgICAgIHJldHVybiBjb25zdW1lUGVyY2VudChyYW5nZSwgVmFsdWVSYW5n
ZU5vbk5lZ2F0aXZlKTsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eVVzZXJab29tOgorICAg
ICAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlWm9vbSwgQ1NTVmFsdWVGaXhlZD4ocmFu
Z2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlPcmllbnRhdGlvbjoKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVJZGVudDxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlUG9ydHJhaXQsIENTU1ZhbHVlTGFuZHNj
YXBlPihyYW5nZSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBudWxscHRyOworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVZpZXdw
b3J0RGVzY3JpcHRvcihDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCit7Cisg
ICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc1ZpZXdwb3J0RW5hYmxlZCgpIHx8
IGlzVUFTaGVldEJlaGF2aW9yKG1fY29udGV4dC5tb2RlKCkpKTsKKworICAgIHN3aXRjaCAocHJv
cElkKSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdpZHRoOiB7CisgICAgICAgIENTU1ZhbHVlKiBt
aW5XaWR0aCA9IGNvbnN1bWVTaW5nbGVWaWV3cG9ydERlc2NyaXB0b3IobV9yYW5nZSwgQ1NTUHJv
cGVydHlNaW5XaWR0aCwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgICAgIGlmICghbWluV2lkdGgp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIENTU1ZhbHVlKiBtYXhXaWR0aCA9
IG1pbldpZHRoOworICAgICAgICBpZiAoIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAgIG1h
eFdpZHRoID0gY29uc3VtZVNpbmdsZVZpZXdwb3J0RGVzY3JpcHRvcihtX3JhbmdlLCBDU1NQcm9w
ZXJ0eU1heFdpZHRoLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICAgICAgaWYgKCFtYXhXaWR0aCB8
fCAhbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBh
ZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1pbldpZHRoLCBDU1NQcm9wZXJ0eUludmFsaWQsICptaW5X
aWR0aCwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlNYXhXaWR0
aCwgQ1NTUHJvcGVydHlJbnZhbGlkLCAqbWF4V2lkdGgsIGltcG9ydGFudCk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5SGVpZ2h0OiB7CisgICAgICAg
IENTU1ZhbHVlKiBtaW5IZWlnaHQgPSBjb25zdW1lU2luZ2xlVmlld3BvcnREZXNjcmlwdG9yKG1f
cmFuZ2UsIENTU1Byb3BlcnR5TWluSGVpZ2h0LCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICAgICAg
aWYgKCFtaW5IZWlnaHQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIENTU1Zh
bHVlKiBtYXhIZWlnaHQgPSBtaW5IZWlnaHQ7CisgICAgICAgIGlmICghbV9yYW5nZS5hdEVuZCgp
KQorICAgICAgICAgICAgbWF4SGVpZ2h0ID0gY29uc3VtZVNpbmdsZVZpZXdwb3J0RGVzY3JpcHRv
cihtX3JhbmdlLCBDU1NQcm9wZXJ0eU1heEhlaWdodCwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAg
ICAgIGlmICghbWF4SGVpZ2h0IHx8ICFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5TWluSGVpZ2h0LCBDU1NQ
cm9wZXJ0eUludmFsaWQsICptaW5IZWlnaHQsIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3Bl
cnR5KENTU1Byb3BlcnR5TWF4SGVpZ2h0LCBDU1NQcm9wZXJ0eUludmFsaWQsICptYXhIZWlnaHQs
IGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBjYXNlIENTU1By
b3BlcnR5TWluV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1heFdpZHRoOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlNaW5IZWlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1heEhlaWdodDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5TWluWm9vbToKKyAgICBjYXNlIENTU1Byb3BlcnR5TWF4Wm9vbToK
KyAgICBjYXNlIENTU1Byb3BlcnR5Wm9vbToKKyAgICBjYXNlIENTU1Byb3BlcnR5VXNlclpvb206
CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9yaWVudGF0aW9uOiB7CisgICAgICAgIENTU1ZhbHVlKiBw
YXJzZWRWYWx1ZSA9IGNvbnN1bWVTaW5nbGVWaWV3cG9ydERlc2NyaXB0b3IobV9yYW5nZSwgcHJv
cElkLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSB8fCAhbV9y
YW5nZS5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhZGRQcm9w
ZXJ0eShwcm9wSWQsIENTU1Byb3BlcnR5SW52YWxpZCwgKnBhcnNlZFZhbHVlLCBpbXBvcnRhbnQp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KK30KKworc3RhdGljIGJvb2wgY29uc3VtZUNvbHVtbldpZHRoT3JD
b3VudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTVmFsdWUqJiBjb2x1bW5XaWR0aCwg
Q1NTVmFsdWUqJiBjb2x1bW5Db3VudCkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0g
Q1NTVmFsdWVBdXRvKSB7CisgICAgICAgIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoIWNvbHVtbldpZHRoKSB7CisgICAgICAgIGNvbHVt
bldpZHRoID0gY29uc3VtZUNvbHVtbldpZHRoKHJhbmdlKTsKKyAgICAgICAgaWYgKGNvbHVtbldp
ZHRoKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmICghY29sdW1uQ291
bnQpCisgICAgICAgIGNvbHVtbkNvdW50ID0gY29uc3VtZUNvbHVtbkNvdW50KHJhbmdlKTsKKyAg
ICByZXR1cm4gY29sdW1uQ291bnQ7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1
bWVDb2x1bW5zKGJvb2wgaW1wb3J0YW50KQoreworICAgIENTU1ZhbHVlKiBjb2x1bW5XaWR0aCA9
IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIGNvbHVtbkNvdW50ID0gbnVsbHB0cjsKKyAgICBpZiAo
IWNvbnN1bWVDb2x1bW5XaWR0aE9yQ291bnQobV9yYW5nZSwgY29sdW1uV2lkdGgsIGNvbHVtbkNv
dW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNvbnN1bWVDb2x1bW5XaWR0aE9yQ291
bnQobV9yYW5nZSwgY29sdW1uV2lkdGgsIGNvbHVtbkNvdW50KTsKKyAgICBpZiAoIW1fcmFuZ2Uu
YXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY29sdW1uV2lkdGgpCisg
ICAgICAgIGNvbHVtbldpZHRoID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIo
Q1NTVmFsdWVBdXRvKTsKKyAgICBpZiAoIWNvbHVtbkNvdW50KQorICAgICAgICBjb2x1bW5Db3Vu
dCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlQXV0byk7Cisg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlDb2x1bW5XaWR0aCwgQ1NTUHJvcGVydHlJbnZhbGlk
LCAqY29sdW1uV2lkdGgsIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlD
b2x1bW5Db3VudCwgQ1NTUHJvcGVydHlJbnZhbGlkLCAqY29sdW1uQ291bnQsIGltcG9ydGFudCk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVT
aG9ydGhhbmRHcmVlZGlseShjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQs
IGJvb2wgaW1wb3J0YW50KQoreworICAgIEFTU0VSVChzaG9ydGhhbmQubGVuZ3RoKCkgPD0gNik7
IC8vIEV4aXN0aW5nIHNob3J0aGFuZHMgaGF2ZSBhdCBtb3N0IDYgbG9uZ2hhbmRzLgorICAgIGNv
bnN0IENTU1ZhbHVlKiBsb25naGFuZHNbNl0gPSB7IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsKKyAgICBjb25zdCBDU1NQcm9wZXJ0eUlEKiBz
aG9ydGhhbmRQcm9wZXJ0aWVzID0gc2hvcnRoYW5kLnByb3BlcnRpZXMoKTsKKyAgICBkbyB7Cisg
ICAgICAgIGJvb2wgZm91bmRMb25naGFuZCA9IGZhbHNlOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgIWZvdW5kTG9uZ2hhbmQgJiYgaSA8IHNob3J0aGFuZC5sZW5ndGgoKTsgKytpKSB7Cisg
ICAgICAgICAgICBpZiAobG9uZ2hhbmRzW2ldKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgbG9uZ2hhbmRzW2ldID0gcGFyc2VTaW5nbGVWYWx1ZShzaG9ydGhhbmRQcm9w
ZXJ0aWVzW2ldLCBzaG9ydGhhbmQuaWQoKSk7CisgICAgICAgICAgICBpZiAobG9uZ2hhbmRzW2ld
KQorICAgICAgICAgICAgICAgIGZvdW5kTG9uZ2hhbmQgPSB0cnVlOworICAgICAgICB9CisgICAg
ICAgIGlmICghZm91bmRMb25naGFuZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
IHdoaWxlICghbV9yYW5nZS5hdEVuZCgpKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2hvcnRoYW5kLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKGxvbmdoYW5kc1tpXSkKKyAg
ICAgICAgICAgIGFkZFByb3BlcnR5KHNob3J0aGFuZFByb3BlcnRpZXNbaV0sIHNob3J0aGFuZC5p
ZCgpLCAqbG9uZ2hhbmRzW2ldLCBpbXBvcnRhbnQpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBhZGRQcm9wZXJ0eShzaG9ydGhhbmRQcm9wZXJ0aWVzW2ldLCBzaG9ydGhhbmQuaWQoKSwgKkNT
U0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICB9
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVG
bGV4KGJvb2wgaW1wb3J0YW50KQoreworICAgIHN0YXRpYyBjb25zdCBkb3VibGUgdW5zZXRWYWx1
ZSA9IC0xOworICAgIGRvdWJsZSBmbGV4R3JvdyA9IHVuc2V0VmFsdWU7CisgICAgZG91YmxlIGZs
ZXhTaHJpbmsgPSB1bnNldFZhbHVlOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmbGV4QmFzaXMg
PSBudWxscHRyOworCisgICAgaWYgKG1fcmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25l
KSB7CisgICAgICAgIGZsZXhHcm93ID0gMDsKKyAgICAgICAgZmxleFNocmluayA9IDA7CisgICAg
ICAgIGZsZXhCYXNpcyA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1Zh
bHVlQXV0byk7CisgICAgICAgIG1fcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsK
KyAgICB9IGVsc2UgeworICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAgIHdoaWxl
ICghbV9yYW5nZS5hdEVuZCgpICYmIGluZGV4KysgPCAzKSB7CisgICAgICAgICAgICBkb3VibGUg
bnVtOworICAgICAgICAgICAgaWYgKGNvbnN1bWVOdW1iZXJSYXcobV9yYW5nZSwgbnVtKSkgewor
ICAgICAgICAgICAgICAgIGlmIChudW0gPCAwKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKGZsZXhHcm93ID09IHVuc2V0VmFsdWUpCisgICAg
ICAgICAgICAgICAgICAgIGZsZXhHcm93ID0gbnVtOworICAgICAgICAgICAgICAgIGVsc2UgaWYg
KGZsZXhTaHJpbmsgPT0gdW5zZXRWYWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgZmxleFNocmlu
ayA9IG51bTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmICghbnVtKSAvLyBmbGV4IG9ubHkgYWxs
b3dzIGEgYmFzaXMgb2YgMCAoc2FucyB1bml0cykgaWYgZmxleC1ncm93IGFuZCBmbGV4LXNocmlu
ayB2YWx1ZXMgaGF2ZSBhbHJlYWR5IGJlZW4gc2V0LgorICAgICAgICAgICAgICAgICAgICBmbGV4
QmFzaXMgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAsIENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZTo6UGl4ZWxzKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIWZsZXhCYXNpcykgewor
ICAgICAgICAgICAgICAgIGlmIChtX3JhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykK
KyAgICAgICAgICAgICAgICAgICAgZmxleEJhc2lzID0gY29uc3VtZUlkZW50KG1fcmFuZ2UpOwor
ICAgICAgICAgICAgICAgIGlmICghZmxleEJhc2lzKQorICAgICAgICAgICAgICAgICAgICBmbGV4
QmFzaXMgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCks
IFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09IDIg
JiYgIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChpbmRleCA9PSAwKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoZmxleEdyb3cgPT0gdW5zZXRWYWx1ZSkK
KyAgICAgICAgICAgIGZsZXhHcm93ID0gMTsKKyAgICAgICAgaWYgKGZsZXhTaHJpbmsgPT0gdW5z
ZXRWYWx1ZSkKKyAgICAgICAgICAgIGZsZXhTaHJpbmsgPSAxOworICAgICAgICBpZiAoIWZsZXhC
YXNpcykKKyAgICAgICAgICAgIGZsZXhCYXNpcyA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
MCwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQZXJjZW50YWdlKTsKKyAgICB9CisKKyAg
ICBpZiAoIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkZFBy
b3BlcnR5KENTU1Byb3BlcnR5RmxleEdyb3csIENTU1Byb3BlcnR5RmxleCwgKkNTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUoY2xhbXBUbzxmbG9hdD4oZmxleEdyb3cpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGU6Ok51bWJlciksIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJv
cGVydHlGbGV4U2hyaW5rLCBDU1NQcm9wZXJ0eUZsZXgsICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKGNsYW1wVG88ZmxvYXQ+KGZsZXhTaHJpbmspLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGU6Ok51bWJlciksIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGbGV4
QmFzaXMsIENTU1Byb3BlcnR5RmxleCwgKmZsZXhCYXNpcywgaW1wb3J0YW50KTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUJvcmRlcihib29s
IGltcG9ydGFudCkKK3sKKyAgICBDU1NWYWx1ZSogd2lkdGggPSBudWxscHRyOworICAgIGNvbnN0
IENTU1ZhbHVlKiBzdHlsZSA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIGNvbG9yID0gbnVsbHB0
cjsKKworICAgIHdoaWxlICghd2lkdGggfHwgIXN0eWxlIHx8ICFjb2xvcikgeworICAgICAgICBp
ZiAoIXdpZHRoKSB7CisgICAgICAgICAgICB3aWR0aCA9IGNvbnN1bWVMaW5lV2lkdGgobV9yYW5n
ZSwgbV9jb250ZXh0Lm1vZGUoKSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKKyAgICAgICAgICAg
IGlmICh3aWR0aCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoIXN0eWxlKSB7CisgICAgICAgICAgICBzdHlsZSA9IHBhcnNlU2luZ2xlVmFsdWUoQ1NT
UHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyKTsKKyAgICAgICAgICAg
IGlmIChzdHlsZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoIWNvbG9yKSB7CisgICAgICAgICAgICBjb2xvciA9IGNvbnN1bWVDb2xvcihtX3Jhbmdl
LCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICAgICAgICAgIGlmIChjb2xvcikKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBp
ZiAoIXdpZHRoICYmICFzdHlsZSAmJiAhY29sb3IpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICghd2lkdGgpCisgICAgICAgIHdpZHRoID0gQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVM
ZWdhY3lJbXBsaWNpdCgpOworICAgIGlmICghc3R5bGUpCisgICAgICAgIHN0eWxlID0gQ1NTSW5p
dGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpOworICAgIGlmICghY29sb3IpCisgICAg
ICAgIGNvbG9yID0gQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpOworCisg
ICAgYWRkRXhwYW5kZWRQcm9wZXJ0eUZvclZhbHVlKENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsICp3
aWR0aCwgaW1wb3J0YW50KTsKKyAgICBhZGRFeHBhbmRlZFByb3BlcnR5Rm9yVmFsdWUoQ1NTUHJv
cGVydHlCb3JkZXJTdHlsZSwgKnN0eWxlLCBpbXBvcnRhbnQpOworICAgIGFkZEV4cGFuZGVkUHJv
cGVydHlGb3JWYWx1ZShDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCAqY29sb3IsIGltcG9ydGFudCk7
CisgICAgYWRkRXhwYW5kZWRQcm9wZXJ0eUZvclZhbHVlKENTU1Byb3BlcnR5Qm9yZGVySW1hZ2Us
ICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7CisK
KyAgICByZXR1cm4gbV9yYW5nZS5hdEVuZCgpOworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2Vy
Ojpjb25zdW1lNFZhbHVlcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQs
IGJvb2wgaW1wb3J0YW50KQoreworICAgIEFTU0VSVChzaG9ydGhhbmQubGVuZ3RoKCkgPT0gNCk7
CisgICAgY29uc3QgQ1NTUHJvcGVydHlJRCogbG9uZ2hhbmRzID0gc2hvcnRoYW5kLnByb3BlcnRp
ZXMoKTsKKyAgICBjb25zdCBDU1NWYWx1ZSogdG9wID0gcGFyc2VTaW5nbGVWYWx1ZShsb25naGFu
ZHNbMF0sIHNob3J0aGFuZC5pZCgpKTsKKyAgICBpZiAoIXRvcCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgY29uc3QgQ1NTVmFsdWUqIHJpZ2h0ID0gcGFyc2VTaW5nbGVWYWx1ZShsb25n
aGFuZHNbMV0sIHNob3J0aGFuZC5pZCgpKTsKKyAgICBjb25zdCBDU1NWYWx1ZSogYm90dG9tID0g
bnVsbHB0cjsKKyAgICBjb25zdCBDU1NWYWx1ZSogbGVmdCA9IG51bGxwdHI7CisgICAgaWYgKHJp
Z2h0KSB7CisgICAgICAgIGJvdHRvbSA9IHBhcnNlU2luZ2xlVmFsdWUobG9uZ2hhbmRzWzJdLCBz
aG9ydGhhbmQuaWQoKSk7CisgICAgICAgIGlmIChib3R0b20pCisgICAgICAgICAgICBsZWZ0ID0g
cGFyc2VTaW5nbGVWYWx1ZShsb25naGFuZHNbM10sIHNob3J0aGFuZC5pZCgpKTsKKyAgICB9CisK
KyAgICBpZiAoIXJpZ2h0KQorICAgICAgICByaWdodCA9IHRvcDsKKyAgICBpZiAoIWJvdHRvbSkK
KyAgICAgICAgYm90dG9tID0gdG9wOworICAgIGlmICghbGVmdCkKKyAgICAgICAgbGVmdCA9IHJp
Z2h0OworCisgICAgYWRkUHJvcGVydHkobG9uZ2hhbmRzWzBdLCBzaG9ydGhhbmQuaWQoKSwgKnRv
cCwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShsb25naGFuZHNbMV0sIHNob3J0aGFuZC5p
ZCgpLCAqcmlnaHQsIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkobG9uZ2hhbmRzWzJdLCBz
aG9ydGhhbmQuaWQoKSwgKmJvdHRvbSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShsb25n
aGFuZHNbM10sIHNob3J0aGFuZC5pZCgpLCAqbGVmdCwgaW1wb3J0YW50KTsKKworICAgIHJldHVy
biBtX3JhbmdlLmF0RW5kKCk7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVC
b3JkZXJJbWFnZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBib29sIGltcG9ydGFudCkKK3sKKyAg
ICBDU1NWYWx1ZSogc291cmNlID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogc2xpY2UgPSBudWxs
cHRyOworICAgIENTU1ZhbHVlKiB3aWR0aCA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIG91dHNl
dCA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIHJlcGVhdCA9IG51bGxwdHI7CisgICAgaWYgKGNv
bnN1bWVCb3JkZXJJbWFnZUNvbXBvbmVudHMocHJvcGVydHksIG1fcmFuZ2UsIG1fY29udGV4dCwg
c291cmNlLCBzbGljZSwgd2lkdGgsIG91dHNldCwgcmVwZWF0KSkgeworICAgICAgICBzd2l0Y2gg
KHByb3BlcnR5KSB7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2U6
CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVNv
dXJjZSwgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2UsIHNvdXJjZSA/ICpzb3VyY2UgOiAq
Q1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAg
ICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTbGljZSwg
Q1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2UsIHNsaWNlID8gKnNsaWNlIDogKkNTU0luaXRp
YWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAg
IGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlV2lkdGgsIENTU1Byb3Bl
cnR5V2Via2l0TWFza0JveEltYWdlLCB3aWR0aCA/ICp3aWR0aCA6ICpDU1NJbml0aWFsVmFsdWU6
OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7CisgICAgICAgICAgICBhZGRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZU91dHNldCwgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrQm94SW1hZ2UsIG91dHNldCA/ICpvdXRzZXQgOiAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVh
dGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgYWRkUHJvcGVydHko
Q1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VSZXBlYXQsIENTU1Byb3BlcnR5V2Via2l0TWFz
a0JveEltYWdlLCByZXBlYXQgPyAqcmVwZWF0IDogKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVn
YWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2U6CisgICAgICAgICAgICBhZGRQcm9wZXJ0
eShDU1NQcm9wZXJ0eUJvcmRlckltYWdlU291cmNlLCBDU1NQcm9wZXJ0eUJvcmRlckltYWdlLCBz
b3VyY2UgPyAqc291cmNlIDogKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQo
KSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVy
SW1hZ2VTbGljZSwgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZSwgc2xpY2UgPyAqc2xpY2UgOiAqQ1NT
SW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgICAg
ICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVdpZHRoLCBDU1NQcm9wZXJ0
eUJvcmRlckltYWdlLCB3aWR0aCA/ICp3aWR0aCA6ICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxl
Z2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUJvcmRlckltYWdlT3V0c2V0LCBDU1NQcm9wZXJ0eUJvcmRlckltYWdlLCBvdXRzZXQg
PyAqb3V0c2V0IDogKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1w
b3J0YW50KTsKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VS
ZXBlYXQsIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2UsIHJlcGVhdCA/ICpyZXBlYXQgOiAqQ1NTSW5p
dGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgQ1NTVmFsdWVJRCBtYXBGcm9t
UGFnZUJyZWFrQmV0d2VlbihDU1NWYWx1ZUlEIHZhbHVlKQoreworICAgIGlmICh2YWx1ZSA9PSBD
U1NWYWx1ZUFsd2F5cykKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVlUGFnZTsKKyAgICBpZiAodmFs
dWUgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlID09IENTU1ZhbHVlQXZvaWQgfHwgdmFsdWUgPT0g
Q1NTVmFsdWVMZWZ0IHx8IHZhbHVlID09IENTU1ZhbHVlUmlnaHQpCisgICAgICAgIHJldHVybiB2
YWx1ZTsKKyAgICByZXR1cm4gQ1NTVmFsdWVJbnZhbGlkOworfQorCitzdGF0aWMgaW5saW5lIENT
U1ZhbHVlSUQgbWFwRnJvbUNvbHVtbkJyZWFrQmV0d2VlbihDU1NWYWx1ZUlEIHZhbHVlKQorewor
ICAgIGlmICh2YWx1ZSA9PSBDU1NWYWx1ZUFsd2F5cykKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVl
Q29sdW1uOworICAgIGlmICh2YWx1ZSA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWUgPT0gQ1NTVmFs
dWVBdm9pZCkKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBDU1NWYWx1ZUludmFs
aWQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgQ1NTVmFsdWVJRCBtYXBGcm9tQ29sdW1uT3JQYWdlQnJl
YWtJbnNpZGUoQ1NTVmFsdWVJRCB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUgPT0gQ1NTVmFsdWVB
dXRvIHx8IHZhbHVlID09IENTU1ZhbHVlQXZvaWQpCisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAg
ICByZXR1cm4gQ1NTVmFsdWVJbnZhbGlkOworfQorCitzdGF0aWMgaW5saW5lIENTU1Byb3BlcnR5
SUQgbWFwRnJvbUxlZ2FjeUJyZWFrUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkKK3sK
KyAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlQYWdlQnJlYWtBZnRlciB8fCBwcm9wZXJ0
eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXIpCisgICAgICAgIHJldHVybiBD
U1NQcm9wZXJ0eUJyZWFrQWZ0ZXI7CisgICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5UGFn
ZUJyZWFrQmVmb3JlIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtC
ZWZvcmUpCisgICAgICAgIHJldHVybiBDU1NQcm9wZXJ0eUJyZWFrQmVmb3JlOworICAgIEFTU0VS
VChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0luc2lkZSB8fCBwcm9wZXJ0eSA9PSBD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrSW5zaWRlKTsKKyAgICByZXR1cm4gQ1NTUHJvcGVy
dHlCcmVha0luc2lkZTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUxlZ2Fj
eUJyZWFrUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgYm9vbCBpbXBvcnRhbnQpCit7
CisgICAgLy8gVGhlIGZyYWdtZW50YXRpb24gc3BlYyBzYXlzIHRoYXQgcGFnZS1icmVhay0oYWZ0
ZXJ8YmVmb3JlfGluc2lkZSkgYXJlIHRvIGJlIHRyZWF0ZWQgYXMKKyAgICAvLyBzaG9ydGhhbmRz
IGZvciB0aGVpciBicmVhay0oYWZ0ZXJ8YmVmb3JlfGluc2lkZSkgY291bnRlcnBhcnRzLiBXZSds
bCBkbyB0aGUgc2FtZSBmb3IgdGhlCisgICAgLy8gbm9uLXN0YW5kYXJkIHByb3BlcnRpZXMgLXdl
YmtpdC1jb2x1bW4tYnJlYWstKGFmdGVyfGJlZm9yZXxpbnNpZGUpLgorICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBrZXl3b3JkID0gY29uc3VtZUlkZW50KG1fcmFuZ2UpOworICAgIGlmICgha2V5d29y
ZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV9yYW5nZS5hdEVuZCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgQ1NTVmFsdWVJRCB2YWx1ZSA9IGtleXdvcmQtPmdldFZh
bHVlSUQoKTsKKyAgICBzd2l0Y2ggKHByb3BlcnR5KSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBh
Z2VCcmVha0FmdGVyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlQnJlYWtCZWZvcmU6CisgICAg
ICAgIHZhbHVlID0gbWFwRnJvbVBhZ2VCcmVha0JldHdlZW4odmFsdWUpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtBZnRlcjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtCZWZvcmU6CisgICAgICAgIHZhbHVlID0gbWFw
RnJvbUNvbHVtbkJyZWFrQmV0d2Vlbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENv
bHVtbkJyZWFrSW5zaWRlOgorICAgICAgICB2YWx1ZSA9IG1hcEZyb21Db2x1bW5PclBhZ2VCcmVh
a0luc2lkZSh2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICBpZiAodmFsdWUgPT0gQ1NTVmFsdWVJbnZh
bGlkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDU1NQcm9wZXJ0eUlEIGdlbmVyaWNC
cmVha1Byb3BlcnR5ID0gbWFwRnJvbUxlZ2FjeUJyZWFrUHJvcGVydHkocHJvcGVydHkpOworICAg
IGFkZFByb3BlcnR5KGdlbmVyaWNCcmVha1Byb3BlcnR5LCBwcm9wZXJ0eSwgKkNTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKHZhbHVlKSwgaW1wb3J0YW50KTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworc3RhdGljIGJvb2wgY29uc3VtZUJhY2tncm91bmRQb3NpdGlvbihDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgVW5p
dGxlc3NRdWlyayB1bml0bGVzcywgQ1NTVmFsdWUqJiByZXN1bHRYLCBDU1NWYWx1ZSomIHJlc3Vs
dFkpCit7CisgICAgZG8geworICAgICAgICBDU1NWYWx1ZSogcG9zaXRpb25YID0gbnVsbHB0cjsK
KyAgICAgICAgQ1NTVmFsdWUqIHBvc2l0aW9uWSA9IG51bGxwdHI7CisgICAgICAgIGlmICghY29u
c3VtZVBvc2l0aW9uKHJhbmdlLCBjb250ZXh0Lm1vZGUoKSwgdW5pdGxlc3MsIHBvc2l0aW9uWCwg
cG9zaXRpb25ZKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYWRkQmFja2dy
b3VuZFZhbHVlKHJlc3VsdFgsIHBvc2l0aW9uWCk7CisgICAgICAgIGFkZEJhY2tncm91bmRWYWx1
ZShyZXN1bHRZLCBwb3NpdGlvblkpOworICAgIH0gd2hpbGUgKGNvbnN1bWVDb21tYUluY2x1ZGlu
Z1doaXRlc3BhY2UocmFuZ2UpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wg
Y29uc3VtZVJlcGVhdFN0eWxlQ29tcG9uZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBD
U1NWYWx1ZSomIHZhbHVlMSwgQ1NTVmFsdWUqJiB2YWx1ZTIsIGJvb2wmIGltcGxpY2l0KQorewor
ICAgIGlmIChjb25zdW1lSWRlbnQ8Q1NTVmFsdWVSZXBlYXRYPihyYW5nZSkpIHsKKyAgICAgICAg
dmFsdWUxID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVSZXBl
YXQpOworICAgICAgICB2YWx1ZTIgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmll
cihDU1NWYWx1ZU5vUmVwZWF0KTsKKyAgICAgICAgaW1wbGljaXQgPSB0cnVlOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKGNvbnN1bWVJZGVudDxDU1NWYWx1ZVJlcGVhdFk+
KHJhbmdlKSkgeworICAgICAgICB2YWx1ZTEgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRl
bnRpZmllcihDU1NWYWx1ZU5vUmVwZWF0KTsKKyAgICAgICAgdmFsdWUyID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVSZXBlYXQpOworICAgICAgICBpbXBsaWNp
dCA9IHRydWU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICB2YWx1ZTEgPSBjb25z
dW1lSWRlbnQ8Q1NTVmFsdWVSZXBlYXQsIENTU1ZhbHVlTm9SZXBlYXQsIENTU1ZhbHVlUm91bmQs
IENTU1ZhbHVlU3BhY2U+KHJhbmdlKTsKKyAgICBpZiAoIXZhbHVlMSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgdmFsdWUyID0gY29uc3VtZUlkZW50PENTU1ZhbHVlUmVwZWF0LCBDU1NW
YWx1ZU5vUmVwZWF0LCBDU1NWYWx1ZVJvdW5kLCBDU1NWYWx1ZVNwYWNlPihyYW5nZSk7CisgICAg
aWYgKCF2YWx1ZTIpIHsKKyAgICAgICAgdmFsdWUyID0gdmFsdWUxOworICAgICAgICBpbXBsaWNp
dCA9IHRydWU7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBjb25z
dW1lUmVwZWF0U3R5bGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1ZhbHVlKiYgcmVz
dWx0WCwgQ1NTVmFsdWUqJiByZXN1bHRZLCBib29sJiBpbXBsaWNpdCkKK3sKKyAgICBkbyB7Cisg
ICAgICAgIENTU1ZhbHVlKiByZXBlYXRYID0gbnVsbHB0cjsKKyAgICAgICAgQ1NTVmFsdWUqIHJl
cGVhdFkgPSBudWxscHRyOworICAgICAgICBpZiAoIWNvbnN1bWVSZXBlYXRTdHlsZUNvbXBvbmVu
dChyYW5nZSwgcmVwZWF0WCwgcmVwZWF0WSwgaW1wbGljaXQpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBhZGRCYWNrZ3JvdW5kVmFsdWUocmVzdWx0WCwgcmVwZWF0WCk7Cisg
ICAgICAgIGFkZEJhY2tncm91bmRWYWx1ZShyZXN1bHRZLCByZXBlYXRZKTsKKyAgICB9IHdoaWxl
IChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKKy8vIE5vdGU6IGNvbnN1bWVCYWNrZ3JvdW5kU2hvcnRoYW5kIGFzc3VtZXMgeSBw
cm9wZXJ0aWVzIChmb3IgZXhhbXBsZSBiYWNrZ3JvdW5kLXBvc2l0aW9uLXkpIGZvbGxvdworLy8g
dGhlIHggcHJvcGVydGllcyBpbiB0aGUgc2hvcnRoYW5kIGFycmF5LgorYm9vbCBDU1NQcm9wZXJ0
eVBhcnNlcjo6Y29uc3VtZUJhY2tncm91bmRTaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZCYgc2hvcnRoYW5kLCBib29sIGltcG9ydGFudCkKK3sKKyAgICBjb25zdCB1bnNpZ25l
ZCBsb25naGFuZENvdW50ID0gc2hvcnRoYW5kLmxlbmd0aCgpOworICAgIENTU1ZhbHVlKiBsb25n
aGFuZHNbMTBdID0geyAwIH07CisgICAgQVNTRVJUKGxvbmdoYW5kQ291bnQgPD0gMTApOworCisg
ICAgYm9vbCBpbXBsaWNpdCA9IGZhbHNlOworICAgIGRvIHsKKyAgICAgICAgYm9vbCBwYXJzZWRM
b25naGFuZFsxMF0gPSB7IGZhbHNlIH07CisgICAgICAgIENTU1ZhbHVlKiBvcmlnaW5WYWx1ZSA9
IG51bGxwdHI7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGJvb2wgZm91bmRQcm9wZXJ0eSA9
IGZhbHNlOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsb25naGFuZENvdW50
OyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VkTG9uZ2hhbmRbaV0pCisgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVl
ID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWVZID0gbnVsbHB0cjsK
KyAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5ID0gc2hvcnRoYW5kLnByb3Bl
cnRpZXMoKVtpXTsKKyAgICAgICAgICAgICAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kUmVwZWF0WCB8fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBl
YXRYKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN1bWVSZXBlYXRTdHlsZUNvbXBvbmVudCht
X3JhbmdlLCB2YWx1ZSwgdmFsdWVZLCBpbXBsaWNpdCk7CisgICAgICAgICAgICAgICAgfSBlbHNl
IGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblggfHwgcHJvcGVy
dHkgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YKSB7CisgICAgICAgICAgICAgICAg
ICAgIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2VDb3B5ID0gbV9yYW5nZTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCFjb25zdW1lUG9zaXRpb24ocmFuZ2VDb3B5LCBtX2NvbnRleHQubW9kZSgp
LCBVbml0bGVzc1F1aXJrOjpGb3JiaWQsIHZhbHVlLCB2YWx1ZVkpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIG1fcmFuZ2UgPSByYW5nZUNv
cHk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRTaXplIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0TWFza1NpemUpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNl
KG1fcmFuZ2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAgICAgICAgIHZhbHVlID0gY29uc3VtZUJhY2tncm91bmRTaXplKHByb3BlcnR5LCBtX3Jhbmdl
LCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSB8fCAh
cGFyc2VkTG9uZ2hhbmRbaSAtIDFdKSAvLyBQb3NpdGlvbiBtdXN0IGhhdmUgYmVlbiBwYXJzZWQg
aW4gdGhlIGN1cnJlbnQgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRQb3NpdGlvblkgfHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVw
ZWF0WQorICAgICAgICAgICAgICAgICAgICB8fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tQb3NpdGlvblkgfHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0
WSkgeworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGNvbnN1bWVCYWNrZ3JvdW5kQ29tcG9u
ZW50KHByb3BlcnR5LCBtX3JhbmdlLCBtX2NvbnRleHQpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb3Bl
cnR5ID09IENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbiB8fCBwcm9wZXJ0eSA9PSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tPcmlnaW4pCisgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5WYWx1
ZSA9IHZhbHVlOworICAgICAgICAgICAgICAgICAgICBwYXJzZWRMb25naGFuZFtpXSA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgIGZvdW5kUHJvcGVydHkgPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICBhZGRCYWNrZ3JvdW5kVmFsdWUobG9uZ2hhbmRzW2ldLCB2YWx1ZSk7CisgICAgICAg
ICAgICAgICAgICAgIGlmICh2YWx1ZVkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNl
ZExvbmdoYW5kW2kgKyAxXSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRCYWNr
Z3JvdW5kVmFsdWUobG9uZ2hhbmRzW2kgKyAxXSwgdmFsdWVZKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgh
Zm91bmRQcm9wZXJ0eSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0g
d2hpbGUgKCFtX3JhbmdlLmF0RW5kKCkgJiYgbV9yYW5nZS5wZWVrKCkudHlwZSgpICE9IENvbW1h
VG9rZW4pOworCisgICAgICAgIC8vIFRPRE8odGltbG9oKTogVGhpcyB3aWxsIG1ha2UgaW52YWxp
ZCBsb25naGFuZHMsIHNlZSBjcmJ1Zy5jb20vMzg2NDU5CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbG9uZ2hhbmRDb3VudDsgKytpKSB7CisgICAgICAgICAgICBDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5ID0gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXTsKKyAgICAgICAgICAgIGlmIChw
cm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciAmJiAhbV9yYW5nZS5hdEVuZCgp
KSB7CisgICAgICAgICAgICAgICAgaWYgKHBhcnNlZExvbmdoYW5kW2ldKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7IC8vIENvbG9ycyBhcmUgb25seSBhbGxvd2VkIGluIHRoZSBs
YXN0IGxheWVyLgorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwIHx8IHBy
b3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXApICYmICFwYXJzZWRMb25naGFuZFtp
XSAmJiBvcmlnaW5WYWx1ZSkgeworICAgICAgICAgICAgICAgIGFkZEJhY2tncm91bmRWYWx1ZShs
b25naGFuZHNbaV0sIG9yaWdpblZhbHVlKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghcGFyc2VkTG9uZ2hhbmRbaV0pCisgICAgICAg
ICAgICAgICAgYWRkQmFja2dyb3VuZFZhbHVlKGxvbmdoYW5kc1tpXSwgQ1NTSW5pdGlhbFZhbHVl
OjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpKTsKKyAgICAgICAgfQorICAgIH0gd2hpbGUgKGNvbnN1
bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UobV9yYW5nZSkpOworICAgIGlmICghbV9yYW5nZS5h
dEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxvbmdoYW5kQ291bnQ7ICsraSkgeworICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
ID0gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXTsKKyAgICAgICAgaWYgKHByb3BlcnR5ID09IENT
U1Byb3BlcnR5QmFja2dyb3VuZFNpemUgJiYgbG9uZ2hhbmRzW2ldICYmIG1fY29udGV4dC51c2VM
ZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yKCkpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydHksIHNob3J0aGFuZC5pZCgpLCAqbG9u
Z2hhbmRzW2ldLCBpbXBvcnRhbnQsIGltcGxpY2l0KTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVHcmlkSXRlbVBvc2l0aW9uU2hv
cnRoYW5kKENTU1Byb3BlcnR5SUQgc2hvcnRoYW5kSWQsIGJvb2wgaW1wb3J0YW50KQoreworICAg
IEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NHcmlkTGF5b3V0RW5hYmxlZCgpKTsK
KyAgICBjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQgPSBzaG9ydGhhbmRG
b3JQcm9wZXJ0eShzaG9ydGhhbmRJZCk7CisgICAgQVNTRVJUKHNob3J0aGFuZC5sZW5ndGgoKSA9
PSAyKTsKKyAgICBDU1NWYWx1ZSogc3RhcnRWYWx1ZSA9IGNvbnN1bWVHcmlkTGluZShtX3Jhbmdl
KTsKKyAgICBpZiAoIXN0YXJ0VmFsdWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENT
U1ZhbHVlKiBlbmRWYWx1ZSA9IG51bGxwdHI7CisgICAgaWYgKGNvbnN1bWVTbGFzaEluY2x1ZGlu
Z1doaXRlc3BhY2UobV9yYW5nZSkpIHsKKyAgICAgICAgZW5kVmFsdWUgPSBjb25zdW1lR3JpZExp
bmUobV9yYW5nZSk7CisgICAgICAgIGlmICghZW5kVmFsdWUpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZW5kVmFsdWUgPSBzdGFydFZhbHVlLT5pc0N1
c3RvbUlkZW50VmFsdWUoKSA/IHN0YXJ0VmFsdWUgOiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
SWRlbnRpZmllcihDU1NWYWx1ZUF1dG8pOworICAgIH0KKyAgICBpZiAoIW1fcmFuZ2UuYXRFbmQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkZFByb3BlcnR5KHNob3J0aGFuZC5wcm9w
ZXJ0aWVzKClbMF0sIHNob3J0aGFuZElkLCAqc3RhcnRWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICBh
ZGRQcm9wZXJ0eShzaG9ydGhhbmQucHJvcGVydGllcygpWzFdLCBzaG9ydGhhbmRJZCwgKmVuZFZh
bHVlLCBpbXBvcnRhbnQpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIENTU1Byb3BlcnR5
UGFyc2VyOjpjb25zdW1lR3JpZEFyZWFTaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpCit7CisgICAg
QVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkpOwor
ICAgIEFTU0VSVChncmlkQXJlYVNob3J0aGFuZCgpLmxlbmd0aCgpID09IDQpOworICAgIENTU1Zh
bHVlKiByb3dTdGFydFZhbHVlID0gY29uc3VtZUdyaWRMaW5lKG1fcmFuZ2UpOworICAgIGlmICgh
cm93U3RhcnRWYWx1ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIENTU1ZhbHVlKiBjb2x1
bW5TdGFydFZhbHVlID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogcm93RW5kVmFsdWUgPSBudWxs
cHRyOworICAgIENTU1ZhbHVlKiBjb2x1bW5FbmRWYWx1ZSA9IG51bGxwdHI7CisgICAgaWYgKGNv
bnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UobV9yYW5nZSkpIHsKKyAgICAgICAgY29sdW1u
U3RhcnRWYWx1ZSA9IGNvbnN1bWVHcmlkTGluZShtX3JhbmdlKTsKKyAgICAgICAgaWYgKCFjb2x1
bW5TdGFydFZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoY29u
c3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShtX3JhbmdlKSkgeworICAgICAgICAgICAgcm93
RW5kVmFsdWUgPSBjb25zdW1lR3JpZExpbmUobV9yYW5nZSk7CisgICAgICAgICAgICBpZiAoIXJv
d0VuZFZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlm
IChjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKG1fcmFuZ2UpKSB7CisgICAgICAgICAg
ICAgICAgY29sdW1uRW5kVmFsdWUgPSBjb25zdW1lR3JpZExpbmUobV9yYW5nZSk7CisgICAgICAg
ICAgICAgICAgaWYgKCFjb2x1bW5FbmRWYWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGlmICghbV9yYW5n
ZS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjb2x1bW5TdGFydFZh
bHVlKQorICAgICAgICBjb2x1bW5TdGFydFZhbHVlID0gcm93U3RhcnRWYWx1ZS0+aXNDdXN0b21J
ZGVudFZhbHVlKCkgPyByb3dTdGFydFZhbHVlIDogQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlk
ZW50aWZpZXIoQ1NTVmFsdWVBdXRvKTsKKyAgICBpZiAoIXJvd0VuZFZhbHVlKQorICAgICAgICBy
b3dFbmRWYWx1ZSA9IHJvd1N0YXJ0VmFsdWUtPmlzQ3VzdG9tSWRlbnRWYWx1ZSgpID8gcm93U3Rh
cnRWYWx1ZSA6IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlQXV0
byk7CisgICAgaWYgKCFjb2x1bW5FbmRWYWx1ZSkKKyAgICAgICAgY29sdW1uRW5kVmFsdWUgPSBj
b2x1bW5TdGFydFZhbHVlLT5pc0N1c3RvbUlkZW50VmFsdWUoKSA/IGNvbHVtblN0YXJ0VmFsdWUg
OiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUF1dG8pOworCisg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkUm93U3RhcnQsIENTU1Byb3BlcnR5R3JpZEFy
ZWEsICpyb3dTdGFydFZhbHVlLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3Bl
cnR5R3JpZENvbHVtblN0YXJ0LCBDU1NQcm9wZXJ0eUdyaWRBcmVhLCAqY29sdW1uU3RhcnRWYWx1
ZSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRSb3dFbmQsIENT
U1Byb3BlcnR5R3JpZEFyZWEsICpyb3dFbmRWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUdyaWRDb2x1bW5FbmQsIENTU1Byb3BlcnR5R3JpZEFyZWEsICpjb2x1
bW5FbmRWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NQ
cm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUdyaWRUZW1wbGF0ZVJvd3NBbmRBcmVhc0FuZENvbHVtbnMo
Q1NTUHJvcGVydHlJRCBzaG9ydGhhbmRJZCwgYm9vbCBpbXBvcnRhbnQpCit7CisgICAgTmFtZWRH
cmlkQXJlYU1hcCBncmlkQXJlYU1hcDsKKyAgICBzaXplX3Qgcm93Q291bnQgPSAwOworICAgIHNp
emVfdCBjb2x1bW5Db3VudCA9IDA7CisgICAgQ1NTVmFsdWVMaXN0KiB0ZW1wbGF0ZVJvd3MgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisKKyAgICAvLyBQZXJzaXN0cyBi
ZXR3ZWVuIGxvb3AgaXRlcmF0aW9ucyBzbyB3ZSBjYW4gdXNlIHRoZSBzYW1lIHZhbHVlIGZvcgor
ICAgIC8vIGNvbnNlY3V0aXZlIDxsaW5lLW5hbWVzPiB2YWx1ZXMKKyAgICBDU1NHcmlkTGluZU5h
bWVzVmFsdWUqIGxpbmVOYW1lcyA9IG51bGxwdHI7CisKKyAgICBkbyB7CisgICAgICAgIC8vIEhh
bmRsZSBsZWFkaW5nIDxjdXN0b20taWRlbnQ+Ki4KKyAgICAgICAgYm9vbCBoYXNQcmV2aW91c0xp
bmVOYW1lcyA9IGxpbmVOYW1lczsKKyAgICAgICAgbGluZU5hbWVzID0gY29uc3VtZUdyaWRMaW5l
TmFtZXMobV9yYW5nZSwgbGluZU5hbWVzKTsKKyAgICAgICAgaWYgKGxpbmVOYW1lcyAmJiAhaGFz
UHJldmlvdXNMaW5lTmFtZXMpCisgICAgICAgICAgICB0ZW1wbGF0ZVJvd3MtPmFwcGVuZCgqbGlu
ZU5hbWVzKTsKKworICAgICAgICAvLyBIYW5kbGUgYSB0ZW1wbGF0ZS1hcmVhJ3Mgcm93LgorICAg
ICAgICBpZiAobV9yYW5nZS5wZWVrKCkudHlwZSgpICE9IFN0cmluZ1Rva2VuIHx8ICFwYXJzZUdy
aWRUZW1wbGF0ZUFyZWFzUm93KG1fcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52
YWx1ZSgpLnRvU3RyaW5nKCksIGdyaWRBcmVhTWFwLCByb3dDb3VudCwgY29sdW1uQ291bnQpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICArK3Jvd0NvdW50OworCisgICAgICAg
IC8vIEhhbmRsZSB0ZW1wbGF0ZS1yb3dzJ3MgdHJhY2stc2l6ZS4KKyAgICAgICAgQ1NTVmFsdWUq
IHZhbHVlID0gY29uc3VtZUdyaWRUcmFja1NpemUobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7
CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICB2YWx1ZSA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlQXV0byk7CisgICAgICAgIHRlbXBsYXRlUm93
cy0+YXBwZW5kKCp2YWx1ZSk7CisKKyAgICAgICAgLy8gVGhpcyB3aWxsIGhhbmRsZSB0aGUgdHJh
aWxpbmcvbGVhZGluZyA8Y3VzdG9tLWlkZW50PiogaW4gdGhlIGdyYW1tYXIuCisgICAgICAgIGxp
bmVOYW1lcyA9IGNvbnN1bWVHcmlkTGluZU5hbWVzKG1fcmFuZ2UpOworICAgICAgICBpZiAobGlu
ZU5hbWVzKQorICAgICAgICAgICAgdGVtcGxhdGVSb3dzLT5hcHBlbmQoKmxpbmVOYW1lcyk7Cisg
ICAgfSB3aGlsZSAoIW1fcmFuZ2UuYXRFbmQoKSAmJiAhKG1fcmFuZ2UucGVlaygpLnR5cGUoKSA9
PSBEZWxpbWl0ZXJUb2tlbiAmJiBtX3JhbmdlLnBlZWsoKS5kZWxpbWl0ZXIoKSA9PSAnLycpKTsK
KworICAgIENTU1ZhbHVlKiBjb2x1bW5zVmFsdWUgPSBudWxscHRyOworICAgIGlmICghbV9yYW5n
ZS5hdEVuZCgpKSB7CisgICAgICAgIGlmICghY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFj
ZShtX3JhbmdlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY29sdW1uc1Zh
bHVlID0gY29uc3VtZUdyaWRUcmFja0xpc3QobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgR3Jp
ZFRlbXBsYXRlTm9SZXBlYXQpOworICAgICAgICBpZiAoIWNvbHVtbnNWYWx1ZSB8fCAhbV9yYW5n
ZS5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGNvbHVtbnNWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENT
U1ZhbHVlTm9uZSk7CisgICAgfQorICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFRlbXBs
YXRlUm93cywgc2hvcnRoYW5kSWQsICp0ZW1wbGF0ZVJvd3MsIGltcG9ydGFudCk7CisgICAgYWRk
UHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVDb2x1bW5zLCBzaG9ydGhhbmRJZCwgKmNv
bHVtbnNWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRU
ZW1wbGF0ZUFyZWFzLCBzaG9ydGhhbmRJZCwgKkNTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWU6OmNy
ZWF0ZShncmlkQXJlYU1hcCwgcm93Q291bnQsIGNvbHVtbkNvdW50KSwgaW1wb3J0YW50KTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUdyaWRU
ZW1wbGF0ZVNob3J0aGFuZChDU1NQcm9wZXJ0eUlEIHNob3J0aGFuZElkLCBib29sIGltcG9ydGFu
dCkKK3sKKyAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzR3JpZExheW91dEVu
YWJsZWQoKSk7CisgICAgQVNTRVJUKGdyaWRUZW1wbGF0ZVNob3J0aGFuZCgpLmxlbmd0aCgpID09
IDMpOworCisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSBtX3JhbmdlOworICAg
IENTU1ZhbHVlKiByb3dzVmFsdWUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVOb25lPihtX3Jhbmdl
KTsKKworICAgIC8vIDEtICdub25lJyBjYXNlLgorICAgIGlmIChyb3dzVmFsdWUgJiYgbV9yYW5n
ZS5hdEVuZCgpKSB7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFRlbXBsYXRl
Um93cywgc2hvcnRoYW5kSWQsICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihD
U1NWYWx1ZU5vbmUpLCBpbXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0
eUdyaWRUZW1wbGF0ZUNvbHVtbnMsIHNob3J0aGFuZElkLCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJv
cGVydHkoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVBcmVhcywgc2hvcnRoYW5kSWQsICpDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpLCBpbXBvcnRhbnQpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyAyLSA8Z3JpZC10ZW1wbGF0ZS1y
b3dzPiAvIDxncmlkLXRlbXBsYXRlLWNvbHVtbnM+CisgICAgaWYgKCFyb3dzVmFsdWUpCisgICAg
ICAgIHJvd3NWYWx1ZSA9IGNvbnN1bWVHcmlkVHJhY2tMaXN0KG1fcmFuZ2UsIG1fY29udGV4dC5t
b2RlKCksIEdyaWRUZW1wbGF0ZSk7CisKKyAgICBpZiAocm93c1ZhbHVlKSB7CisgICAgICAgIGlm
ICghY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShtX3JhbmdlKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgQ1NTVmFsdWUqIGNvbHVtbnNWYWx1ZSA9IGNvbnN1bWVH
cmlkVGVtcGxhdGVzUm93c09yQ29sdW1ucyhtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAg
ICAgICAgaWYgKCFjb2x1bW5zVmFsdWUgfHwgIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRUZW1w
bGF0ZVJvd3MsIHNob3J0aGFuZElkLCAqcm93c1ZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICBh
ZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZUNvbHVtbnMsIHNob3J0aGFuZElkLCAq
Y29sdW1uc1ZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0
eUdyaWRUZW1wbGF0ZUFyZWFzLCBzaG9ydGhhbmRJZCwgKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSksIGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIC8vIDMtIFsgPGxpbmUtbmFtZXM+PyA8c3RyaW5nPiA8dHJhY2st
c2l6ZT4/IDxsaW5lLW5hbWVzPj8gXSsgWyAvIDx0cmFjay1saXN0PiBdPworICAgIG1fcmFuZ2Ug
PSByYW5nZUNvcHk7CisgICAgcmV0dXJuIGNvbnN1bWVHcmlkVGVtcGxhdGVSb3dzQW5kQXJlYXNB
bmRDb2x1bW5zKHNob3J0aGFuZElkLCBpbXBvcnRhbnQpOworfQorCitib29sIENTU1Byb3BlcnR5
UGFyc2VyOjpjb25zdW1lR3JpZFNob3J0aGFuZChib29sIGltcG9ydGFudCkKK3sKKyAgICBBU1NF
UlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzR3JpZExheW91dEVuYWJsZWQoKSk7CisgICAg
QVNTRVJUKHNob3J0aGFuZEZvclByb3BlcnR5KENTU1Byb3BlcnR5R3JpZCkubGVuZ3RoKCkgPT0g
OCk7CisKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlQ29weSA9IG1fcmFuZ2U7CisKKyAg
ICAvLyAxLSA8Z3JpZC10ZW1wbGF0ZT4KKyAgICBpZiAoY29uc3VtZUdyaWRUZW1wbGF0ZVNob3J0
aGFuZChDU1NQcm9wZXJ0eUdyaWQsIGltcG9ydGFudCkpIHsKKyAgICAgICAgLy8gSXQgY2FuIG9u
bHkgYmUgc3BlY2lmaWVkIHRoZSBleHBsaWNpdCBvciB0aGUgaW1wbGljaXQgZ3JpZCBwcm9wZXJ0
aWVzIGluIGEgc2luZ2xlIGdyaWQgZGVjbGFyYXRpb24uCisgICAgICAgIC8vIFRoZSBzdWItcHJv
cGVydGllcyBub3Qgc3BlY2lmaWVkIGFyZSBzZXQgdG8gdGhlaXIgaW5pdGlhbCB2YWx1ZSwgYXMg
bm9ybWFsIGZvciBzaG9ydGhhbmRzLgorICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdy
aWRBdXRvRmxvdywgQ1NTUHJvcGVydHlHcmlkLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdh
Y3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0
eUdyaWRBdXRvQ29sdW1ucywgQ1NTUHJvcGVydHlHcmlkLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVh
dGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUdyaWRBdXRvUm93cywgQ1NTUHJvcGVydHlHcmlkLCAqQ1NTSW5pdGlhbFZhbHVlOjpj
cmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUdyaWRDb2x1bW5HYXAsIENTU1Byb3BlcnR5R3JpZCwgKkNTU0luaXRpYWxWYWx1
ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVy
dHkoQ1NTUHJvcGVydHlHcmlkUm93R2FwLCBDU1NQcm9wZXJ0eUdyaWQsICpDU1NJbml0aWFsVmFs
dWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIG1fcmFuZ2UgPSByYW5nZUNvcHk7CisKKyAgICAvLyAyLSA8Z3Jp
ZC1hdXRvLWZsb3c+IFsgPGdyaWQtYXV0by1yb3dzPiBbIC8gPGdyaWQtYXV0by1jb2x1bW5zPiBd
PyBdCisgICAgQ1NTVmFsdWVMaXN0KiBncmlkQXV0b0Zsb3cgPSBjb25zdW1lR3JpZEF1dG9GbG93
KG1fcmFuZ2UpOworICAgIGlmICghZ3JpZEF1dG9GbG93KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBDU1NWYWx1ZSogYXV0b0NvbHVtbnNWYWx1ZSA9IG51bGxwdHI7CisgICAgQ1NTVmFs
dWUqIGF1dG9Sb3dzVmFsdWUgPSBudWxscHRyOworCisgICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkp
IHsKKyAgICAgICAgYXV0b1Jvd3NWYWx1ZSA9IGNvbnN1bWVHcmlkVHJhY2tMaXN0KG1fcmFuZ2Us
IG1fY29udGV4dC5tb2RlKCksIEdyaWRBdXRvKTsKKyAgICAgICAgaWYgKCFhdXRvUm93c1ZhbHVl
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoY29uc3VtZVNsYXNoSW5j
bHVkaW5nV2hpdGVzcGFjZShtX3JhbmdlKSkgeworICAgICAgICAgICAgYXV0b0NvbHVtbnNWYWx1
ZSA9IGNvbnN1bWVHcmlkVHJhY2tMaXN0KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIEdyaWRB
dXRvKTsKKyAgICAgICAgICAgIGlmICghYXV0b0NvbHVtbnNWYWx1ZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gT3Ro
ZXIgb21pdHRlZCB2YWx1ZXMgYXJlIHNldCB0byB0aGVpciBpbml0aWFsIHZhbHVlcy4KKyAgICAg
ICAgYXV0b0NvbHVtbnNWYWx1ZSA9IENTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGlj
aXQoKTsKKyAgICAgICAgYXV0b1Jvd3NWYWx1ZSA9IENTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVn
YWN5SW1wbGljaXQoKTsKKyAgICB9CisKKyAgICAvLyBpZiA8Z3JpZC1hdXRvLWNvbHVtbnM+IHZh
bHVlIGlzIG9taXR0ZWQsIGl0IGlzIHNldCB0byB0aGUgdmFsdWUgc3BlY2lmaWVkIGZvciBncmlk
LWF1dG8tcm93cy4KKyAgICBpZiAoIWF1dG9Db2x1bW5zVmFsdWUpCisgICAgICAgIGF1dG9Db2x1
bW5zVmFsdWUgPSBhdXRvUm93c1ZhbHVlOworCisgICAgLy8gSXQgY2FuIG9ubHkgYmUgc3BlY2lm
aWVkIHRoZSBleHBsaWNpdCBvciB0aGUgaW1wbGljaXQgZ3JpZCBwcm9wZXJ0aWVzIGluIGEgc2lu
Z2xlIGdyaWQgZGVjbGFyYXRpb24uCisgICAgLy8gVGhlIHN1Yi1wcm9wZXJ0aWVzIG5vdCBzcGVj
aWZpZWQgYXJlIHNldCB0byB0aGVpciBpbml0aWFsIHZhbHVlLCBhcyBub3JtYWwgZm9yIHNob3J0
aGFuZHMuCisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVDb2x1bW5zLCBD
U1NQcm9wZXJ0eUdyaWQsICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCks
IGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVSb3dz
LCBDU1NQcm9wZXJ0eUdyaWQsICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0
KCksIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVB
cmVhcywgQ1NTUHJvcGVydHlHcmlkLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBs
aWNpdCgpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZEF1dG9G
bG93LCBDU1NQcm9wZXJ0eUdyaWQsICpncmlkQXV0b0Zsb3csIGltcG9ydGFudCk7CisgICAgYWRk
UHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkQXV0b0NvbHVtbnMsIENTU1Byb3BlcnR5R3JpZCwgKmF1
dG9Db2x1bW5zVmFsdWUsIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlH
cmlkQXV0b1Jvd3MsIENTU1Byb3BlcnR5R3JpZCwgKmF1dG9Sb3dzVmFsdWUsIGltcG9ydGFudCk7
CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkQ29sdW1uR2FwLCBDU1NQcm9wZXJ0eUdy
aWQsICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7
CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkUm93R2FwLCBDU1NQcm9wZXJ0eUdyaWQs
ICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlU2hvcnRo
YW5kKENTU1Byb3BlcnR5SUQgdW5yZXNvbHZlZFByb3BlcnR5LCBib29sIGltcG9ydGFudCkKK3sK
KyAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5ID0gcmVzb2x2ZUNTU1Byb3BlcnR5SUQodW5yZXNv
bHZlZFByb3BlcnR5KTsKKworICAgIHN3aXRjaCAocHJvcGVydHkpIHsKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2U6IHsKKyAgICAgICAgQ1NTVmFsdWVJRCBpZCA9IG1f
cmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpOworICAgICAgICBpZiAoIUNT
U1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UsIGlkLCBtX2NvbnRleHQubW9kZSgpKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgQ1NTVmFsdWUqIGJlZm9yZUNvbGxhcHNl
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoaWQpOworICAgICAgICBhZGRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlLCBDU1NQcm9wZXJ0
eVdlYmtpdE1hcmdpbkNvbGxhcHNlLCAqYmVmb3JlQ29sbGFwc2UsIGltcG9ydGFudCk7CisgICAg
ICAgIGlmIChtX3JhbmdlLmF0RW5kKCkpIHsKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1By
b3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5D
b2xsYXBzZSwgKmJlZm9yZUNvbGxhcHNlLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWQgPSBtX3JhbmdlLmNvbnN1bWVJbmNsdWRpbmdX
aGl0ZXNwYWNlKCkuaWQoKTsKKyAgICAgICAgaWYgKCFDU1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFs
aWRLZXl3b3JkUHJvcGVydHlBbmRWYWx1ZShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29s
bGFwc2UsIGlkLCBtX2NvbnRleHQubW9kZSgpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNl
LCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlLCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZUlkZW50aWZpZXIoaWQpLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93OiB7CisgICAgICAgIENTU1ZhbHVlSUQg
aWQgPSBtX3JhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKKyAgICAgICAg
aWYgKCFDU1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRWYWx1ZShD
U1NQcm9wZXJ0eU92ZXJmbG93WSwgaWQsIG1fY29udGV4dC5tb2RlKCkpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgQ1NTVmFsdWUqIG92ZXJmbG93WVZhbHVlID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoaWQpOworCisgICAgICAgIENTU1ZhbHVlKiBv
dmVyZmxvd1hWYWx1ZSA9IG51bGxwdHI7CisKKyAgICAgICAgLy8gRklYTUU6IC13ZWJraXQtcGFn
ZWQteCBvciAtd2Via2l0LXBhZ2VkLXkgb25seSBhcHBseSB0byBvdmVyZmxvdy15LiBJZiB0aGlz
IHZhbHVlIGhhcyBiZWVuCisgICAgICAgIC8vIHNldCB1c2luZyB0aGUgc2hvcnRoYW5kLCB0aGVu
IGZvciBub3cgb3ZlcmZsb3cteCB3aWxsIGRlZmF1bHQgdG8gYXV0bywgYnV0IG9uY2Ugd2UgaW1w
bGVtZW50CisgICAgICAgIC8vIHBhZ2luYXRpb24gY29udHJvbHMsIGl0IHNob3VsZCBkZWZhdWx0
IHRvIGhpZGRlbi4gSWYgdGhlIG92ZXJmbG93LXkgdmFsdWUgaXMgYW55dGhpbmcgYnV0CisgICAg
ICAgIC8vIHBhZ2VkLXggb3IgcGFnZWQteSwgdGhlbiBvdmVyZmxvdy14IGFuZCBvdmVyZmxvdy15
IHNob3VsZCBoYXZlIHRoZSBzYW1lIHZhbHVlLgorICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVX
ZWJraXRQYWdlZFggfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRQYWdlZFkpCisgICAgICAgICAgICBv
dmVyZmxvd1hWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1Zh
bHVlQXV0byk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG92ZXJmbG93WFZhbHVlID0gb3Zl
cmZsb3dZVmFsdWU7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBD
U1NQcm9wZXJ0eU92ZXJmbG93LCAqb3ZlcmZsb3dYVmFsdWUsIGltcG9ydGFudCk7CisgICAgICAg
IGFkZFByb3BlcnR5KENTU1Byb3BlcnR5T3ZlcmZsb3dZLCBDU1NQcm9wZXJ0eU92ZXJmbG93LCAq
b3ZlcmZsb3dZVmFsdWUsIGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udDogeworICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tl
biYgdG9rZW4gPSBtX3JhbmdlLnBlZWsoKTsKKyAgICAgICAgaWYgKHRva2VuLmlkKCkgPj0gQ1NT
VmFsdWVDYXB0aW9uICYmIHRva2VuLmlkKCkgPD0gQ1NTVmFsdWVTdGF0dXNCYXIpCisgICAgICAg
ICAgICByZXR1cm4gY29uc3VtZVN5c3RlbUZvbnQoaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJu
IGNvbnN1bWVGb250KGltcG9ydGFudCk7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlGb250
VmFyaWFudDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVGb250VmFyaWFudFNob3J0aGFuZChpbXBv
cnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nOgorICAgICAgICByZXR1
cm4gY29uc3VtZUJvcmRlclNwYWNpbmcoaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
Q29sdW1uczoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb2x1bW5zKGltcG9ydGFudCk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVBbmltYXRp
b25TaG9ydGhhbmQoYW5pbWF0aW9uU2hvcnRoYW5kRm9yUGFyc2luZygpLCB1bnJlc29sdmVkUHJv
cGVydHkgPT0gQ1NTUHJvcGVydHlBbGlhc1dlYmtpdEFuaW1hdGlvbiwgaW1wb3J0YW50KTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvbjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVBbmlt
YXRpb25TaG9ydGhhbmQodHJhbnNpdGlvblNob3J0aGFuZEZvclBhcnNpbmcoKSwgZmFsc2UsIGlt
cG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uOgorICAgICAgICBB
U1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzM1RleHREZWNvcmF0aW9uc0VuYWJsZWQo
KSk7CisgICAgICAgIHJldHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkodGV4dERlY29yYXRp
b25TaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luOgor
ICAgICAgICByZXR1cm4gY29uc3VtZTRWYWx1ZXMobWFyZ2luU2hvcnRoYW5kKCksIGltcG9ydGFu
dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmc6CisgICAgICAgIHJldHVybiBjb25zdW1l
NFZhbHVlcyhwYWRkaW5nU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eU1vdGlvbjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhhbmRHcmVlZGlseShtb3Rp
b25TaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4
dEVtcGhhc2lzOgorICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KHdlYmtp
dFRleHRFbXBoYXNpc1Nob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlPdXRsaW5lOgorICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KG91dGxp
bmVTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyU3RhcnQ6CisgICAgICAgIHJldHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkod2Via2l0
Qm9yZGVyU3RhcnRTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyRW5kOgorICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5
KHdlYmtpdEJvcmRlckVuZFNob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJCZWZvcmU6CisgICAgICAgIHJldHVybiBjb25zdW1lU2hvcnRoYW5k
R3JlZWRpbHkod2Via2l0Qm9yZGVyQmVmb3JlU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyOgorICAgICAgICByZXR1cm4gY29uc3Vt
ZVNob3J0aGFuZEdyZWVkaWx5KHdlYmtpdEJvcmRlckFmdGVyU2hvcnRoYW5kKCksIGltcG9ydGFu
dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2U6CisgICAgICAgIHJldHVy
biBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkod2Via2l0VGV4dFN0cm9rZVNob3J0aGFuZCgpLCBp
bXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJrZXI6IHsKKyAgICAgICAgY29uc3Qg
Q1NTVmFsdWUqIG1hcmtlciA9IHBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlNYXJrZXJTdGFy
dCk7CisgICAgICAgIGlmICghbWFya2VyIHx8ICFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5TWFya2VyU3Rh
cnQsIENTU1Byb3BlcnR5TWFya2VyLCAqbWFya2VyLCBpbXBvcnRhbnQpOworICAgICAgICBhZGRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmtlck1pZCwgQ1NTUHJvcGVydHlNYXJrZXIsICptYXJrZXIs
IGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5TWFya2VyRW5kLCBD
U1NQcm9wZXJ0eU1hcmtlciwgKm1hcmtlciwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlGbGV4OgorICAgICAgICByZXR1cm4gY29u
c3VtZUZsZXgoaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5RmxleEZsb3c6CisgICAg
ICAgIHJldHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkoZmxleEZsb3dTaG9ydGhhbmQoKSwg
aW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1uUnVsZToKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVTaG9ydGhhbmRHcmVlZGlseShjb2x1bW5SdWxlU2hvcnRoYW5kKCksIGltcG9y
dGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZToKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVTaG9ydGhhbmRHcmVlZGlseShsaXN0U3R5bGVTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzOiB7CisgICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBob3Jpem9udGFsUmFkaWlbNF0gPSB7IDAgfTsKKyAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHZlcnRpY2FsUmFkaWlbNF0gPSB7IDAgfTsKKyAgICAgICAgaWYgKCFjb25zdW1lUmFk
aWkoaG9yaXpvbnRhbFJhZGlpLCB2ZXJ0aWNhbFJhZGlpLCBtX3JhbmdlLCBtX2NvbnRleHQubW9k
ZSgpLCB1bnJlc29sdmVkUHJvcGVydHkgPT0gQ1NTUHJvcGVydHlBbGlhc1dlYmtpdEJvcmRlclJh
ZGl1cykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFkZFByb3BlcnR5KENT
U1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1cywgQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMsICpD
U1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsUmFkaWlbMF0sIHZlcnRpY2FsUmFkaWlbMF0s
IENTU1ZhbHVlUGFpcjo6RHJvcElkZW50aWNhbFZhbHVlcyksIGltcG9ydGFudCk7CisgICAgICAg
IGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMsIENTU1Byb3BlcnR5
Qm9yZGVyUmFkaXVzLCAqQ1NTVmFsdWVQYWlyOjpjcmVhdGUoaG9yaXpvbnRhbFJhZGlpWzFdLCB2
ZXJ0aWNhbFJhZGlpWzFdLCBDU1NWYWx1ZVBhaXI6OkRyb3BJZGVudGljYWxWYWx1ZXMpLCBpbXBv
cnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0
UmFkaXVzLCBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cywgKkNTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhv
cml6b250YWxSYWRpaVsyXSwgdmVydGljYWxSYWRpaVsyXSwgQ1NTVmFsdWVQYWlyOjpEcm9wSWRl
bnRpY2FsVmFsdWVzKSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLCBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cywgKkNTU1Zh
bHVlUGFpcjo6Y3JlYXRlKGhvcml6b250YWxSYWRpaVszXSwgdmVydGljYWxSYWRpaVszXSwgQ1NT
VmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVzKSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xvcjoKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWU0VmFsdWVzKGJvcmRlckNvbG9yU2hvcnRoYW5kKCksIGltcG9ydGFu
dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlOgorICAgICAgICByZXR1cm4gY29u
c3VtZTRWYWx1ZXMoYm9yZGVyU3R5bGVTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyV2lkdGg6CisgICAgICAgIHJldHVybiBjb25zdW1lNFZhbHVlcyhi
b3JkZXJXaWR0aFNob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJUb3A6CisgICAgICAgIHJldHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkoYm9yZGVy
VG9wU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJp
Z2h0OgorICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KGJvcmRlclJpZ2h0
U2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhhbmRHcmVlZGlseShib3JkZXJCb3R0b21T
aG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdDoK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhhbmRHcmVlZGlseShib3JkZXJMZWZ0U2hvcnRo
YW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcjoKKyAgICAgICAg
cmV0dXJuIGNvbnN1bWVCb3JkZXIoaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9y
ZGVySW1hZ2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZToKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVCb3JkZXJJbWFnZShwcm9wZXJ0eSwgaW1wb3J0YW50KTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5UGFnZUJyZWFrQWZ0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VC
cmVha0JlZm9yZToKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0FmdGVyOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRDb2x1bW5CcmVha0JlZm9yZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uQnJlYWtJbnNpZGU6CisgICAgICAgIHJldHVybiBjb25zdW1lTGVnYWN5QnJlYWtQcm9wZXJ0
eShwcm9wZXJ0eSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Bv
c2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb246IHsKKyAgICAg
ICAgQ1NTVmFsdWUqIHJlc3VsdFggPSBudWxscHRyOworICAgICAgICBDU1NWYWx1ZSogcmVzdWx0
WSA9IG51bGxwdHI7CisgICAgICAgIGlmICghY29uc3VtZUJhY2tncm91bmRQb3NpdGlvbihtX3Jh
bmdlLCBtX2NvbnRleHQsIFVuaXRsZXNzUXVpcms6OkFsbG93LCByZXN1bHRYLCByZXN1bHRZKSB8
fCAhbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBh
ZGRQcm9wZXJ0eShwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiA/IENT
U1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCA6IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0
aW9uWCwgcHJvcGVydHksICpyZXN1bHRYLCBpbXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0
eShwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiA/IENTU1Byb3BlcnR5
QmFja2dyb3VuZFBvc2l0aW9uWSA6IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSwgcHJv
cGVydHksICpyZXN1bHRZLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQ6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tSZXBlYXQ6IHsKKyAgICAgICAgQ1NTVmFsdWUqIHJlc3VsdFggPSBudWxs
cHRyOworICAgICAgICBDU1NWYWx1ZSogcmVzdWx0WSA9IG51bGxwdHI7CisgICAgICAgIGJvb2wg
aW1wbGljaXQgPSBmYWxzZTsKKyAgICAgICAgaWYgKCFjb25zdW1lUmVwZWF0U3R5bGUobV9yYW5n
ZSwgcmVzdWx0WCwgcmVzdWx0WSwgaW1wbGljaXQpIHx8ICFtX3JhbmdlLmF0RW5kKCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnR5ID09IENT
U1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCA/IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgg
OiBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLCBwcm9wZXJ0eSwgKnJlc3VsdFgsIGltcG9y
dGFudCwgaW1wbGljaXQpOworICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0eSA9PSBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRSZXBlYXQgPyBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZIDogQ1NT
UHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSwgcHJvcGVydHksICpyZXN1bHRZLCBpbXBvcnRhbnQs
IGltcGxpY2l0KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGNhc2UgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kOgorICAgICAgICByZXR1cm4gY29uc3VtZUJhY2tncm91bmRTaG9ydGhh
bmQoYmFja2dyb3VuZFNob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrOgorICAgICAgICByZXR1cm4gY29uc3VtZUJhY2tncm91bmRTaG9ydGhhbmQo
d2Via2l0TWFza1Nob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlH
cmlkR2FwOiB7CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NHcmlk
TGF5b3V0RW5hYmxlZCgpICYmIHNob3J0aGFuZEZvclByb3BlcnR5KENTU1Byb3BlcnR5R3JpZEdh
cCkubGVuZ3RoKCkgPT0gMik7CisgICAgICAgIENTU1ZhbHVlKiByb3dHYXAgPSBjb25zdW1lTGVu
Z3RoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7Cisg
ICAgICAgIENTU1ZhbHVlKiBjb2x1bW5HYXAgPSBjb25zdW1lTGVuZ3RoKG1fcmFuZ2UsIG1fY29u
dGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgIGlmICghcm93R2Fw
IHx8ICFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IGlmICghY29sdW1uR2FwKQorICAgICAgICAgICAgY29sdW1uR2FwID0gcm93R2FwOworICAgICAg
ICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRSb3dHYXAsIENTU1Byb3BlcnR5R3JpZEdhcCwg
KnJvd0dhcCwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlk
Q29sdW1uR2FwLCBDU1NQcm9wZXJ0eUdyaWRHYXAsICpjb2x1bW5HYXAsIGltcG9ydGFudCk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZENvbHVt
bjoKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZFJvdzoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVH
cmlkSXRlbVBvc2l0aW9uU2hvcnRoYW5kKHByb3BlcnR5LCBpbXBvcnRhbnQpOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlHcmlkQXJlYToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVHcmlkQXJlYVNob3J0
aGFuZChpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGU6CisgICAg
ICAgIHJldHVybiBjb25zdW1lR3JpZFRlbXBsYXRlU2hvcnRoYW5kKENTU1Byb3BlcnR5R3JpZFRl
bXBsYXRlLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkOgorICAgICAgICBy
ZXR1cm4gY29uc3VtZUdyaWRTaG9ydGhhbmQoaW1wb3J0YW50KTsKKyAgICBkZWZhdWx0OgorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorKi8KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5
UGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDMgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0
Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOSAtIDIwMTAgIFRvcmNoIE1vYmlsZSAoQmVpamlu
ZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBDU1NQcm9wZXJ0eVBhcnNl
cl9oCisjZGVmaW5lIENTU1Byb3BlcnR5UGFyc2VyX2gKKworI2luY2x1ZGUgIkNTU1BhcnNlclRv
a2VuUmFuZ2UuaCIKKyNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdWaWV3Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTUHJvcGVydHk7
CitjbGFzcyBDU1NWYWx1ZTsKK2NsYXNzIFN0eWxlUHJvcGVydHlTaG9ydGhhbmQ7CisKKy8vIElu
cHV0czogUHJvcGVydHlJRCwgaXNJbXBvcnRhbnQgYm9vbCwgQ1NTUGFyc2VyVG9rZW5SYW5nZS4K
Ky8vIE91dHB1dHM6IFZlY3RvciBvZiBDU1NQcm9wZXJ0aWVzCisKK2NsYXNzIENTU1Byb3BlcnR5
UGFyc2VyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDU1NQcm9wZXJ0eVBhcnNlcik7Citw
dWJsaWM6CisgICAgc3RhdGljIGJvb2wgcGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlELCBib29sIGlt
cG9ydGFudCwKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNvbnN0IENTU1Bh
cnNlckNvbnRleHQmLAorICAgICAgICBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4mLCBTdHlsZVJ1
bGU6OlR5cGUpOworCisgICAgLy8gUGFyc2VzIGEgbm9uLXNob3J0aGFuZCBDU1MgcHJvcGVydHkK
KyAgICBzdGF0aWMgY29uc3QgQ1NTVmFsdWUqIHBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlJ
RCwgY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmKTsK
KworcHJpdmF0ZToKKyAgICBDU1NQcm9wZXJ0eVBhcnNlcihjb25zdCBDU1NQYXJzZXJUb2tlblJh
bmdlJiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYsCisgICAgICAgIFZlY3RvcjxDU1NQcm9wZXJ0
eSwgMjU2PiopOworCisgICAgLy8gVE9ETyh0aW1sb2gpOiBSZW5hbWUgb25jZSB0aGUgQ1NTUGFy
c2VyVmFsdWUtYmFzZWQgcGFyc2VWYWx1ZSBpcyByZW1vdmVkCisgICAgYm9vbCBwYXJzZVZhbHVl
U3RhcnQoQ1NTUHJvcGVydHlJRCB1bnJlc29sdmVkUHJvcGVydHksIGJvb2wgaW1wb3J0YW50KTsK
KyAgICBib29sIGNvbnN1bWVDU1NXaWRlS2V5d29yZChDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQ
cm9wZXJ0eSwgYm9vbCBpbXBvcnRhbnQpOworICAgIGNvbnN0IENTU1ZhbHVlKiBwYXJzZVNpbmds
ZVZhbHVlKENTU1Byb3BlcnR5SUQsIENTU1Byb3BlcnR5SUQgPSBDU1NQcm9wZXJ0eUludmFsaWQp
OworCisgICAgYm9vbCBpblF1aXJrc01vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQubW9k
ZSA9PSBDU1NRdWlya3NNb2RlOyB9CisKKyAgICBib29sIHBhcnNlVmlld3BvcnREZXNjcmlwdG9y
KENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBwYXJzZUZv
bnRGYWNlRGVzY3JpcHRvcihDU1NQcm9wZXJ0eUlEKTsKKworICAgIHZvaWQgYWRkUHJvcGVydHko
Q1NTUHJvcGVydHlJRCwgQ1NTUHJvcGVydHlJRCwgY29uc3QgQ1NTVmFsdWUmLCBib29sIGltcG9y
dGFudCwgYm9vbCBpbXBsaWNpdCA9IGZhbHNlKTsKKyAgICB2b2lkIGFkZEV4cGFuZGVkUHJvcGVy
dHlGb3JWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgY29uc3QgQ1NTVmFsdWUmLCBib29sKTsK
KworICAgIGJvb2wgY29uc3VtZUJvcmRlcihib29sIGltcG9ydGFudCk7CisKKyAgICBib29sIHBh
cnNlU2hvcnRoYW5kKENTU1Byb3BlcnR5SUQsIGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29sIGNv
bnN1bWVTaG9ydGhhbmRHcmVlZGlseShjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiwgYm9v
bCBpbXBvcnRhbnQpOworICAgIGJvb2wgY29uc3VtZTRWYWx1ZXMoY29uc3QgU3R5bGVQcm9wZXJ0
eVNob3J0aGFuZCYsIGJvb2wgaW1wb3J0YW50KTsKKworICAgIC8vIExlZ2FjeSBwYXJzaW5nIGFs
bG93cyA8c3RyaW5nPnMgZm9yIGFuaW1hdGlvbi1uYW1lCisgICAgYm9vbCBjb25zdW1lQW5pbWF0
aW9uU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmLCBib29sIHVzZUxlZ2Fj
eVBhcnNpbmcsIGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29sIGNvbnN1bWVCYWNrZ3JvdW5kU2hv
cnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmLCBib29sIGltcG9ydGFudCk7CisK
KyAgICBib29sIGNvbnN1bWVDb2x1bW5zKGJvb2wgaW1wb3J0YW50KTsKKworICAgIGJvb2wgY29u
c3VtZUdyaWRJdGVtUG9zaXRpb25TaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRh
bnQpOworICAgIGJvb2wgY29uc3VtZUdyaWRUZW1wbGF0ZVJvd3NBbmRBcmVhc0FuZENvbHVtbnMo
Q1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wgY29uc3VtZUdyaWRUZW1w
bGF0ZVNob3J0aGFuZChDU1NQcm9wZXJ0eUlELCBib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBj
b25zdW1lR3JpZFNob3J0aGFuZChib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBjb25zdW1lR3Jp
ZEFyZWFTaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpOworCisgICAgYm9vbCBjb25zdW1lRm9udChi
b29sIGltcG9ydGFudCk7CisgICAgYm9vbCBjb25zdW1lRm9udFZhcmlhbnRTaG9ydGhhbmQoYm9v
bCBpbXBvcnRhbnQpOworICAgIGJvb2wgY29uc3VtZVN5c3RlbUZvbnQoYm9vbCBpbXBvcnRhbnQp
OworCisgICAgYm9vbCBjb25zdW1lQm9yZGVyU3BhY2luZyhib29sIGltcG9ydGFudCk7CisKKyAg
ICAvLyBDU1MzIFBhcnNpbmcgUm91dGluZXMgKGZvciBwcm9wZXJ0aWVzIHNwZWNpZmljIHRvIENT
UzMpCisgICAgYm9vbCBjb25zdW1lQm9yZGVySW1hZ2UoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBv
cnRhbnQpOworCisgICAgYm9vbCBjb25zdW1lRmxleChib29sIGltcG9ydGFudCk7CisKKyAgICBi
b29sIGNvbnN1bWVMZWdhY3lCcmVha1Byb3BlcnR5KENTU1Byb3BlcnR5SUQsIGJvb2wgaW1wb3J0
YW50KTsKKworcHJpdmF0ZToKKyAgICAvLyBJbnB1dHM6CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5n
ZSBtX3JhbmdlOworICAgIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIG1fY29udGV4dDsKKyAgICAv
LyBPdXRwdXRzOgorICAgIFZlY3RvcjxDU1NQcm9wZXJ0eSwgMjU2PiogbV9wYXJzZWRQcm9wZXJ0
aWVzOworfTsKKworQ1NTUHJvcGVydHlJRCB1bnJlc29sdmVkQ1NTUHJvcGVydHlJRChTdHJpbmdW
aWV3KTsKK0NTU1ZhbHVlSUQgY3NzVmFsdWVLZXl3b3JkSUQoU3RyaW5nVmlldyk7CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENTU1Byb3BlcnR5UGFyc2VyX2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2Vy
SGVscGVycy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEx
MCBAQAorLy8gQ29weXJpZ2h0IDIwMTYgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6Cisv
LworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaCIK
KworI2luY2x1ZGUgIkNTU0NhbGN1bGF0aW9uVmFsdWUuaCIKKy8vIEZJWE1FLU5FV1BBUlNFUjog
I2luY2x1ZGUgIkNTU0NvbG9yVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NDcm9zc2ZhZGVWYWx1ZS5o
IgorI2luY2x1ZGUgIkNTU0dyYWRpZW50VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NJbWFnZVNldFZh
bHVlLmgiCisjaW5jbHVkZSAiQ1NTSW1hZ2VWYWx1ZS5oIgorLy8gRklYTUUtTkVXUEFSU0VSOiAj
aW5jbHVkZSAiQ1NTUGFpbnRWYWx1ZS5oIgorLy8gRklYTUVfTkVXUEFSU0VSOiAjaW5jbHVkZSAi
Q1NTU3RyaW5nVmFsdWUuaCIKKy8vIEZJWE1FLU5FV1BBUlNFUjogI2luY2x1ZGUgIkNTU1VSSVZh
bHVlLmgiCisvLyBGSVhNRV9ORVdQQVJTRVI6ICNpbmNsdWRlICJDU1NWYWx1ZVBhaXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisvKiBGSVhNRS1ORVdQQVJTRVI6IERpc2FibGUgZm9yIG5v
dy4KKyAKK25hbWVzcGFjZSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMgeworCitib29sIGNvbnN1
bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7
CisgICAgQ1NTUGFyc2VyVG9rZW4gdmFsdWUgPSByYW5nZS5wZWVrKCk7CisgICAgaWYgKHZhbHVl
LnR5cGUoKSAhPSBDb21tYVRva2VuKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmFuZ2Uu
Y29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlKQoreworICAgIENTU1BhcnNlclRva2VuIHZhbHVlID0gcmFuZ2UucGVlaygpOworICAgIGlm
ICh2YWx1ZS50eXBlKCkgIT0gRGVsaW1pdGVyVG9rZW4gfHwgdmFsdWUuZGVsaW1pdGVyKCkgIT0g
Jy8nKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1do
aXRlc3BhY2UoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworQ1NTUGFyc2VyVG9rZW5SYW5nZSBj
b25zdW1lRnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQVNTRVJU
KHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gRnVuY3Rpb25Ub2tlbik7CisgICAgQ1NTUGFyc2VyVG9r
ZW5SYW5nZSBjb250ZW50cyA9IHJhbmdlLmNvbnN1bWVCbG9jaygpOworICAgIHJhbmdlLmNvbnN1
bWVXaGl0ZXNwYWNlKCk7CisgICAgY29udGVudHMuY29uc3VtZVdoaXRlc3BhY2UoKTsKKyAgICBy
ZXR1cm4gY29udGVudHM7Cit9CisKKy8vIFRPRE8ocndsYnVpcyk6IGNvbnNpZGVyIHB1bGxpbmcg
aW4gdGhlIHBhcnNpbmcgbG9naWMgZnJvbSBDU1NDYWxjdWxhdGlvblZhbHVlLmNwcC4KK2NsYXNz
IENhbGNQYXJzZXIgeworCitwdWJsaWM6CisgICAgZXhwbGljaXQgQ2FsY1BhcnNlcihDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgVmFsdWVSYW5nZSB2YWx1ZVJhbmdlID0gVmFsdWVSYW5nZUFs
bCkKKyAgICAgICAgOiBtX3NvdXJjZVJhbmdlKHJhbmdlKQorICAgICAgICAsIG1fcmFuZ2UocmFu
Z2UpCisgICAgeworICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5w
ZWVrKCk7CisgICAgICAgIGlmICh0b2tlbi5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVDYWxjIHx8
IHRva2VuLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZVdlYmtpdENhbGMpCisgICAgICAgICAgICBt
X2NhbGNWYWx1ZSA9IENTU0NhbGNWYWx1ZTo6Y3JlYXRlKGNvbnN1bWVGdW5jdGlvbihtX3Jhbmdl
KSwgdmFsdWVSYW5nZSk7CisgICAgfQorCisgICAgY29uc3QgQ1NTQ2FsY1ZhbHVlKiB2YWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FsY1ZhbHVlLmdldCgpOyB9CisgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIGNvbnN1bWVWYWx1ZSgpCisgICAgeworICAgICAgICBpZiAoIW1fY2FsY1ZhbHVlKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIG1fc291cmNlUmFuZ2UgPSBtX3Jhbmdl
OworICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtX2NhbGNWYWx1ZS5y
ZWxlYXNlKCkpOworICAgIH0KKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZU51bWJlcigp
CisgICAgeworICAgICAgICBpZiAoIW1fY2FsY1ZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIG1fc291cmNlUmFuZ2UgPSBtX3JhbmdlOworICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGUgdW5pdFR5cGUgPSBtX2NhbGNWYWx1ZS0+aXNJbnQoKSA/IENT
U1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6SW50ZWdlciA6IENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZTo6TnVtYmVyOworICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShtX2NhbGNWYWx1ZS0+ZG91YmxlVmFsdWUoKSwgdW5pdFR5cGUpOworICAgIH0KKworICAgIGJv
b2wgY29uc3VtZU51bWJlclJhdyhkb3VibGUmIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGlmICgh
bV9jYWxjVmFsdWUgfHwgbV9jYWxjVmFsdWUtPmNhdGVnb3J5KCkgIT0gQ2FsY051bWJlcikKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbV9zb3VyY2VSYW5nZSA9IG1fcmFuZ2U7
CisgICAgICAgIHJlc3VsdCA9IG1fY2FsY1ZhbHVlLT5kb3VibGVWYWx1ZSgpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
bV9zb3VyY2VSYW5nZTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIG1fcmFuZ2U7CisgICAgTWVt
YmVyPENTU0NhbGNWYWx1ZT4gbV9jYWxjVmFsdWU7Cit9OworCitDU1NQcmltaXRpdmVWYWx1ZSog
Y29uc3VtZUludGVnZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGRvdWJsZSBtaW5pbXVt
VmFsdWUpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygp
OworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4pIHsKKyAgICAgICAgaWYgKHRv
a2VuLm51bWVyaWNWYWx1ZVR5cGUoKSA9PSBOdW1iZXJWYWx1ZVR5cGUgfHwgdG9rZW4ubnVtZXJp
Y1ZhbHVlKCkgPCBtaW5pbXVtVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFuZ2UuY29uc3VtZUluY2x1
ZGluZ1doaXRlc3BhY2UoKS5udW1lcmljVmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlOjpJbnRlZ2VyKTsKKyAgICB9CisgICAgQ2FsY1BhcnNlciBjYWxjUGFyc2VyKHJhbmdlKTsK
KyAgICBpZiAoY29uc3QgQ1NTQ2FsY1ZhbHVlKiBjYWxjdWxhdGlvbiA9IGNhbGNQYXJzZXIudmFs
dWUoKSkgeworICAgICAgICBpZiAoY2FsY3VsYXRpb24tPmNhdGVnb3J5KCkgIT0gQ2FsY051bWJl
ciB8fCAhY2FsY3VsYXRpb24tPmlzSW50KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgZG91YmxlIHZhbHVlID0gY2FsY3VsYXRpb24tPmRvdWJsZVZhbHVlKCk7CisgICAg
ICAgIGlmICh2YWx1ZSA8IG1pbmltdW1WYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICByZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lTnVtYmVyKCk7CisgICAgfQorICAg
IHJldHVybiBudWxscHRyOworfQorCitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZVBvc2l0aXZl
SW50ZWdlcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4gY29uc3Vt
ZUludGVnZXIocmFuZ2UsIDEpOworfQorCitib29sIGNvbnN1bWVOdW1iZXJSYXcoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UsIGRvdWJsZSYgcmVzdWx0KQoreworICAgIGlmIChyYW5nZS5wZWVr
KCkudHlwZSgpID09IE51bWJlclRva2VuKSB7CisgICAgICAgIHJlc3VsdCA9IHJhbmdlLmNvbnN1
bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICBDYWxjUGFyc2VyIGNhbGNQYXJzZXIocmFuZ2UsIFZhbHVlUmFuZ2VB
bGwpOworICAgIHJldHVybiBjYWxjUGFyc2VyLmNvbnN1bWVOdW1iZXJSYXcocmVzdWx0KTsKK30K
KworLy8gVE9ETyh0aW1sb2gpOiBXb3JrIG91dCBpZiB0aGlzIGNhbiBqdXN0IGNhbGwgY29uc3Vt
ZU51bWJlclJhdworQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVOdW1iZXIoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSkKK3sKKyAgICBjb25zdCBDU1NQ
YXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CisgICAgaWYgKHRva2VuLnR5cGUoKSA9
PSBOdW1iZXJUb2tlbikgeworICAgICAgICBpZiAodmFsdWVSYW5nZSA9PSBWYWx1ZVJhbmdlTm9u
TmVnYXRpdmUgJiYgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPCAwKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhbmdl
LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCksIHRva2VuLnVuaXRU
eXBlKCkpOworICAgIH0KKyAgICBDYWxjUGFyc2VyIGNhbGNQYXJzZXIocmFuZ2UsIFZhbHVlUmFu
Z2VBbGwpOworICAgIGlmIChjb25zdCBDU1NDYWxjVmFsdWUqIGNhbGN1bGF0aW9uID0gY2FsY1Bh
cnNlci52YWx1ZSgpKSB7CisgICAgICAgIC8vIFRPRE8ocndsYnVpcykgQ2FsY3Mgc2hvdWxkIG5v
dCBiZSBzdWJqZWN0IHRvIHBhcnNlIHRpbWUgcmFuZ2UgY2hlY2tzLgorICAgICAgICAvLyBzcGVj
OiBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy0zLyNjYWxjLXJhbmdlCisgICAg
ICAgIGlmIChjYWxjdWxhdGlvbi0+Y2F0ZWdvcnkoKSAhPSBDYWxjTnVtYmVyIHx8ICh2YWx1ZVJh
bmdlID09IFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSAmJiBjYWxjdWxhdGlvbi0+aXNOZWdhdGl2ZSgp
KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gY2FsY1BhcnNl
ci5jb25zdW1lTnVtYmVyKCk7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCitpbmxp
bmUgYm9vbCBzaG91bGRBY2NlcHRVbml0bGVzc0xlbmd0aChkb3VibGUgdmFsdWUsIENTU1BhcnNl
ck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKK3sKKyAgICAvLyBU
T0RPKHRpbWxvaCk6IFByZXNlbnRhdGlvbmFsIEhUTUwgYXR0cmlidXRlcyBzaG91bGRuJ3QgdXNl
IHRoZSBDU1MgcGFyc2VyIGZvciBsZW5ndGhzCisgICAgcmV0dXJuIHZhbHVlID09IDAKKyAgICAg
ICAgfHwgaXNVbml0TGVzc0xlbmd0aFBhcnNpbmdFbmFibGVkRm9yTW9kZShjc3NQYXJzZXJNb2Rl
KQorICAgICAgICB8fCAoY3NzUGFyc2VyTW9kZSA9PSBIVE1MUXVpcmtzTW9kZSAmJiB1bml0bGVz
cyA9PSBVbml0bGVzc1F1aXJrOjpBbGxvdyk7Cit9CisKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25z
dW1lTGVuZ3RoKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1Bh
cnNlck1vZGUsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykK
K3sKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CisgICAg
aWYgKHRva2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbikgeworICAgICAgICBzd2l0Y2ggKHRv
a2VuLnVuaXRUeXBlKCkpIHsKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGU6OlF1aXJreUVtczoKKyAgICAgICAgICAgIGlmIChjc3NQYXJzZXJNb2RlICE9IFVBU2hlZXRN
b2RlKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgRkFMTFRI
Uk9VR0g7CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpFbXM6Cisg
ICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpSZW1zOgorICAgICAgICBj
YXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6Q2hzOgorICAgICAgICBjYXNlIENTU1By
aW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6RXhzOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZTo6UGl4ZWxzOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZTo6Q2VudGltZXRlcnM6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlOjpNaWxsaW1ldGVyczoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGU6OkluY2hlczoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6
OlBvaW50czoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBpY2Fz
OgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6VXNlclVuaXRzOgor
ICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6Vmlld3BvcnRXaWR0aDoK
KyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlZpZXdwb3J0SGVpZ2h0
OgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6Vmlld3BvcnRNaW46
CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpWaWV3cG9ydE1heDoK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlUmFuZ2UgPT0gVmFsdWVSYW5n
ZU5vbk5lZ2F0aXZlICYmIHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgMCkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShy
YW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgpLCB0b2tlbi51
bml0VHlwZSgpKTsKKyAgICB9CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbikg
eworICAgICAgICBpZiAoIXNob3VsZEFjY2VwdFVuaXRsZXNzTGVuZ3RoKHRva2VuLm51bWVyaWNW
YWx1ZSgpLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcykKKyAgICAgICAgICAgIHx8ICh2YWx1ZVJh
bmdlID09IFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSAmJiB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDAp
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZSB1bml0VHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGl4ZWxz
OworICAgICAgICBpZiAoY3NzUGFyc2VyTW9kZSA9PSBTVkdBdHRyaWJ1dGVNb2RlKQorICAgICAg
ICAgICAgdW5pdFR5cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlVzZXJVbml0czsK
KyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFuZ2UuY29uc3VtZUlu
Y2x1ZGluZ1doaXRlc3BhY2UoKS5udW1lcmljVmFsdWUoKSwgdW5pdFR5cGUpOworICAgIH0KKyAg
ICBpZiAoY3NzUGFyc2VyTW9kZSA9PSBTVkdBdHRyaWJ1dGVNb2RlKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBDYWxjUGFyc2VyIGNhbGNQYXJzZXIocmFuZ2UsIHZhbHVlUmFuZ2UpOwor
ICAgIGlmIChjYWxjUGFyc2VyLnZhbHVlKCkgJiYgY2FsY1BhcnNlci52YWx1ZSgpLT5jYXRlZ29y
eSgpID09IENhbGNMZW5ndGgpCisgICAgICAgIHJldHVybiBjYWxjUGFyc2VyLmNvbnN1bWVWYWx1
ZSgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3Vt
ZVBlcmNlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIFZhbHVlUmFuZ2UgdmFsdWVSYW5n
ZSkKK3sKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7Cisg
ICAgaWYgKHRva2VuLnR5cGUoKSA9PSBQZXJjZW50YWdlVG9rZW4pIHsKKyAgICAgICAgaWYgKHZh
bHVlUmFuZ2UgPT0gVmFsdWVSYW5nZU5vbk5lZ2F0aXZlICYmIHRva2VuLm51bWVyaWNWYWx1ZSgp
IDwgMCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51
bWVyaWNWYWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBlcmNlbnRhZ2UpOwor
ICAgIH0KKyAgICBDYWxjUGFyc2VyIGNhbGNQYXJzZXIocmFuZ2UsIHZhbHVlUmFuZ2UpOworICAg
IGlmIChjb25zdCBDU1NDYWxjVmFsdWUqIGNhbGN1bGF0aW9uID0gY2FsY1BhcnNlci52YWx1ZSgp
KSB7CisgICAgICAgIGlmIChjYWxjdWxhdGlvbi0+Y2F0ZWdvcnkoKSA9PSBDYWxjUGVyY2VudCkK
KyAgICAgICAgICAgIHJldHVybiBjYWxjUGFyc2VyLmNvbnN1bWVWYWx1ZSgpOworICAgIH0KKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKworYm9vbCBjYW5Db25zdW1lQ2FsY1ZhbHVlKENhbGN1bGF0
aW9uQ2F0ZWdvcnkgY2F0ZWdvcnksIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAg
ICBpZiAoY2F0ZWdvcnkgPT0gQ2FsY0xlbmd0aCB8fCBjYXRlZ29yeSA9PSBDYWxjUGVyY2VudCB8
fCBjYXRlZ29yeSA9PSBDYWxjUGVyY2VudExlbmd0aCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICBpZiAoY3NzUGFyc2VyTW9kZSAhPSBTVkdBdHRyaWJ1dGVNb2RlKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoY2F0ZWdvcnkgPT0gQ2FsY051bWJlciB8fCBjYXRlZ29yeSA9
PSBDYWxjUGVyY2VudE51bWJlciB8fCBjYXRlZ29yeSA9PSBDYWxjTGVuZ3RoTnVtYmVyIHx8IGNh
dGVnb3J5ID09IENhbGNQZXJjZW50TGVuZ3RoTnVtYmVyKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIHJldHVybiBmYWxzZTsKK30KKworQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVMZW5n
dGhPclBlcmNlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3Nz
UGFyc2VyTW9kZSwgVmFsdWVSYW5nZSB2YWx1ZVJhbmdlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNz
KQoreworICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAg
ICBpZiAodG9rZW4udHlwZSgpID09IERpbWVuc2lvblRva2VuIHx8IHRva2VuLnR5cGUoKSA9PSBO
dW1iZXJUb2tlbikKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNl
ck1vZGUsIHZhbHVlUmFuZ2UsIHVuaXRsZXNzKTsKKyAgICBpZiAodG9rZW4udHlwZSgpID09IFBl
cmNlbnRhZ2VUb2tlbikKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVQZXJjZW50KHJhbmdlLCB2YWx1
ZVJhbmdlKTsKKyAgICBDYWxjUGFyc2VyIGNhbGNQYXJzZXIocmFuZ2UsIHZhbHVlUmFuZ2UpOwor
ICAgIGlmIChjb25zdCBDU1NDYWxjVmFsdWUqIGNhbGN1bGF0aW9uID0gY2FsY1BhcnNlci52YWx1
ZSgpKSB7CisgICAgICAgIGlmIChjYW5Db25zdW1lQ2FsY1ZhbHVlKGNhbGN1bGF0aW9uLT5jYXRl
Z29yeSgpLCBjc3NQYXJzZXJNb2RlKSkKKyAgICAgICAgICAgIHJldHVybiBjYWxjUGFyc2VyLmNv
bnN1bWVWYWx1ZSgpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworQ1NTUHJpbWl0
aXZlVmFsdWUqIGNvbnN1bWVBbmdsZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAg
ICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CisgICAgaWYgKHRv
a2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbikgeworICAgICAgICBzd2l0Y2ggKHRva2VuLnVu
aXRUeXBlKCkpIHsKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkRl
Z3JlZXM6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpSYWRpYW5z
OgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6R3JhZGlhbnM6Cisg
ICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpUdXJuczoKKyAgICAgICAg
ICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRp
bmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCksIHRva2VuLnVuaXRUeXBlKCkpOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICB9
CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbiAmJiB0b2tlbi5udW1lcmljVmFs
dWUoKSA9PSAwKSB7CisgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7
CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAsIENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZTo6RGVncmVlcyk7CisgICAgfQorICAgIENhbGNQYXJzZXIgY2FsY1Bh
cnNlcihyYW5nZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKGNvbnN0IENTU0NhbGNWYWx1ZSog
Y2FsY3VsYXRpb24gPSBjYWxjUGFyc2VyLnZhbHVlKCkpIHsKKyAgICAgICAgaWYgKGNhbGN1bGF0
aW9uLT5jYXRlZ29yeSgpID09IENhbGNBbmdsZSkKKyAgICAgICAgICAgIHJldHVybiBjYWxjUGFy
c2VyLmNvbnN1bWVWYWx1ZSgpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworQ1NT
UHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVUaW1lKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBW
YWx1ZVJhbmdlIHZhbHVlUmFuZ2UpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2Vu
ID0gcmFuZ2UucGVlaygpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4p
IHsKKyAgICAgICAgaWYgKHZhbHVlUmFuZ2UgPT0gVmFsdWVSYW5nZU5vbk5lZ2F0aXZlICYmIHRv
a2VuLm51bWVyaWNWYWx1ZSgpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGUgdW5pdCA9IHRva2VuLnVuaXRUeXBlKCk7
CisgICAgICAgIGlmICh1bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TWlsbGlz
ZWNvbmRzIHx8IHVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpTZWNvbmRzKQor
ICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFuZ2UuY29uc3Vt
ZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1lcmljVmFsdWUoKSwgdG9rZW4udW5pdFR5cGUoKSk7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBDYWxjUGFyc2VyIGNhbGNQYXJz
ZXIocmFuZ2UsIHZhbHVlUmFuZ2UpOworICAgIGlmIChjb25zdCBDU1NDYWxjVmFsdWUqIGNhbGN1
bGF0aW9uID0gY2FsY1BhcnNlci52YWx1ZSgpKSB7CisgICAgICAgIGlmIChjYWxjdWxhdGlvbi0+
Y2F0ZWdvcnkoKSA9PSBDYWxjVGltZSkKKyAgICAgICAgICAgIHJldHVybiBjYWxjUGFyc2VyLmNv
bnN1bWVWYWx1ZSgpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworQ1NTUHJpbWl0
aXZlVmFsdWUqIGNvbnN1bWVJZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAg
ICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBJZGVudFRva2VuKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIo
cmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpKTsKK30KKworQ1NTUHJpbWl0
aXZlVmFsdWUqIGNvbnN1bWVJZGVudFJhbmdlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBD
U1NWYWx1ZUlEIGxvd2VyLCBDU1NWYWx1ZUlEIHVwcGVyKQoreworICAgIGlmIChyYW5nZS5wZWVr
KCkuaWQoKSA8IGxvd2VyIHx8IHJhbmdlLnBlZWsoKS5pZCgpID4gdXBwZXIpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworfQorCitDU1ND
dXN0b21JZGVudFZhbHVlKiBjb25zdW1lQ3VzdG9tSWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgIT0gSWRlbnRUb2tlbiB8fCBp
c0NTU1dpZGVLZXl3b3JkKHJhbmdlLnBlZWsoKS5pZCgpKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIENTU0N1c3RvbUlkZW50VmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1l
SW5jbHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVlKCkudG9TdHJpbmcoKSk7Cit9CisKK0NTU1N0cmlu
Z1ZhbHVlKiBjb25zdW1lU3RyaW5nKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAg
IGlmIChyYW5nZS5wZWVrKCkudHlwZSgpICE9IFN0cmluZ1Rva2VuKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gQ1NTU3RyaW5nVmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1l
SW5jbHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVlKCkudG9TdHJpbmcoKSk7Cit9CisKK1N0cmluZ1Zp
ZXcgY29uc3VtZVVybEFzU3RyaW5nVmlldyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sK
KyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CisgICAgaWYg
KHRva2VuLnR5cGUoKSA9PSBVcmxUb2tlbikgeworICAgICAgICByYW5nZS5jb25zdW1lSW5jbHVk
aW5nV2hpdGVzcGFjZSgpOworICAgICAgICByZXR1cm4gdG9rZW4udmFsdWUoKTsKKyAgICB9Cisg
ICAgaWYgKHRva2VuLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZVVybCkgeworICAgICAgICBDU1NQ
YXJzZXJUb2tlblJhbmdlIHVybFJhbmdlID0gcmFuZ2U7CisgICAgICAgIENTU1BhcnNlclRva2Vu
UmFuZ2UgdXJsQXJncyA9IHVybFJhbmdlLmNvbnN1bWVCbG9jaygpOworICAgICAgICBjb25zdCBD
U1NQYXJzZXJUb2tlbiYgbmV4dCA9IHVybEFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2Uo
KTsKKyAgICAgICAgaWYgKG5leHQudHlwZSgpID09IEJhZFN0cmluZ1Rva2VuIHx8ICF1cmxBcmdz
LmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gU3RyaW5nVmlldygpOworICAgICAgICBBU1NF
UlQobmV4dC50eXBlKCkgPT0gU3RyaW5nVG9rZW4pOworICAgICAgICByYW5nZSA9IHVybFJhbmdl
OworICAgICAgICByYW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOworICAgICAgICByZXR1cm4gbmV4
dC52YWx1ZSgpOworICAgIH0KKworICAgIHJldHVybiBTdHJpbmdWaWV3KCk7Cit9CisKK0NTU1VS
SVZhbHVlKiBjb25zdW1lVXJsKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIFN0
cmluZ1ZpZXcgdXJsID0gY29uc3VtZVVybEFzU3RyaW5nVmlldyhyYW5nZSk7CisgICAgaWYgKHVy
bC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIENTU1VSSVZh
bHVlOjpjcmVhdGUodXJsLnRvU3RyaW5nKCkpOworfQorCitzdGF0aWMgaW50IGNsYW1wUkdCQ29t
cG9uZW50KGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkKK3sKKyAgICBkb3VibGUgcmVz
dWx0ID0gdmFsdWUuZ2V0RG91YmxlVmFsdWUoKTsKKyAgICAvLyBUT0RPKHRpbWxvaCk6IE11bHRp
cGx5IGJ5IDIuNTUgYW5kIHJvdW5kIGluc3RlYWQgb2YgZmxvb3IuCisgICAgaWYgKHZhbHVlLmlz
UGVyY2VudGFnZSgpKQorICAgICAgICByZXN1bHQgKj0gMi41NjsKKyAgICByZXR1cm4gY2xhbXBU
bzxpbnQ+KHJlc3VsdCwgMCwgMjU1KTsKK30KKworc3RhdGljIGJvb2wgcGFyc2VSR0JQYXJhbWV0
ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBSR0JBMzImIHJlc3VsdCwgYm9vbCBwYXJz
ZUFscGhhKQoreworICAgIEFTU0VSVChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1Zh
bHVlUmdiIHx8IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVSZ2JhKTsKKyAg
ICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2UpOworICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBjb2xvclBhcmFtZXRlciA9IGNvbnN1bWVJbnRlZ2VyKGFyZ3Mp
OworICAgIGlmICghY29sb3JQYXJhbWV0ZXIpCisgICAgICAgIGNvbG9yUGFyYW1ldGVyID0gY29u
c3VtZVBlcmNlbnQoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKCFjb2xvclBhcmFtZXRl
cikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNvbnN0IGJvb2wgaXNQZXJjZW50ID0gY29s
b3JQYXJhbWV0ZXItPmlzUGVyY2VudGFnZSgpOworICAgIGludCBjb2xvckFycmF5WzNdOworICAg
IGNvbG9yQXJyYXlbMF0gPSBjbGFtcFJHQkNvbXBvbmVudCgqY29sb3JQYXJhbWV0ZXIpOworICAg
IGZvciAoaW50IGkgPSAxOyBpIDwgMzsgaSsrKSB7CisgICAgICAgIGlmICghY29uc3VtZUNvbW1h
SW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgY29sb3JQYXJhbWV0ZXIgPSBpc1BlcmNlbnQgPyBjb25zdW1lUGVyY2VudChhcmdzLCBW
YWx1ZVJhbmdlQWxsKSA6IGNvbnN1bWVJbnRlZ2VyKGFyZ3MpOworICAgICAgICBpZiAoIWNvbG9y
UGFyYW1ldGVyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjb2xvckFycmF5
W2ldID0gY2xhbXBSR0JDb21wb25lbnQoKmNvbG9yUGFyYW1ldGVyKTsKKyAgICB9CisgICAgaWYg
KHBhcnNlQWxwaGEpIHsKKyAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNw
YWNlKGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBkb3VibGUgYWxw
aGE7CisgICAgICAgIGlmICghY29uc3VtZU51bWJlclJhdyhhcmdzLCBhbHBoYSkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIC8vIENvbnZlcnQgdGhlIGZsb2F0aW5nIHBvaW50
ZXIgbnVtYmVyIG9mIGFscGhhIHRvIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIFswLCAyNTYpLAor
ICAgICAgICAvLyB3aXRoIGFuIGVxdWFsIGRpc3RyaWJ1dGlvbiBhY3Jvc3MgYWxsIDI1NiB2YWx1
ZXMuCisgICAgICAgIGludCBhbHBoYUNvbXBvbmVudCA9IHN0YXRpY19jYXN0PGludD4oY2xhbXBU
bzxkb3VibGU+KGFscGhhLCAwLjAsIDEuMCkgKiBuZXh0YWZ0ZXIoMjU2LjAsIDAuMCkpOworICAg
ICAgICByZXN1bHQgPSBtYWtlUkdCQShjb2xvckFycmF5WzBdLCBjb2xvckFycmF5WzFdLCBjb2xv
ckFycmF5WzJdLCBhbHBoYUNvbXBvbmVudCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmVzdWx0
ID0gbWFrZVJHQihjb2xvckFycmF5WzBdLCBjb2xvckFycmF5WzFdLCBjb2xvckFycmF5WzJdKTsK
KyAgICB9CisgICAgcmV0dXJuIGFyZ3MuYXRFbmQoKTsKK30KKworc3RhdGljIGJvb2wgcGFyc2VI
U0xQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBSR0JBMzImIHJlc3VsdCwg
Ym9vbCBwYXJzZUFscGhhKQoreworICAgIEFTU0VSVChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgp
ID09IENTU1ZhbHVlSHNsIHx8IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVI
c2xhKTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFu
Z2UpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBoc2xWYWx1ZSA9IGNvbnN1bWVOdW1iZXIoYXJn
cywgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKCFoc2xWYWx1ZSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGRvdWJsZSBjb2xvckFycmF5WzNdOworICAgIGNvbG9yQXJyYXlbMF0gPSAoKCho
c2xWYWx1ZS0+Z2V0SW50VmFsdWUoKSAlIDM2MCkgKyAzNjApICUgMzYwKSAvIDM2MC4wOworICAg
IGZvciAoaW50IGkgPSAxOyBpIDwgMzsgaSsrKSB7CisgICAgICAgIGlmICghY29uc3VtZUNvbW1h
SW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgaHNsVmFsdWUgPSBjb25zdW1lUGVyY2VudChhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKKyAg
ICAgICAgaWYgKCFoc2xWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ZG91YmxlIGRvdWJsZVZhbHVlID0gaHNsVmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CisgICAgICAg
IGNvbG9yQXJyYXlbaV0gPSBjbGFtcFRvPGRvdWJsZT4oZG91YmxlVmFsdWUsIDAuMCwgMTAwLjAp
IC8gMTAwLjA7IC8vIE5lZWRzIHRvIGJlIHZhbHVlIGJldHdlZW4gMCBhbmQgMS4wLgorICAgIH0K
KyAgICBkb3VibGUgYWxwaGEgPSAxLjA7CisgICAgaWYgKHBhcnNlQWxwaGEpIHsKKyAgICAgICAg
aWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWNvbnN1bWVOdW1iZXJSYXcoYXJncywgYWxwaGEp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhbHBoYSA9IGNsYW1wVG88ZG91
YmxlPihhbHBoYSwgMC4wLCAxLjApOworICAgIH0KKyAgICByZXN1bHQgPSBtYWtlUkdCQUZyb21I
U0xBKGNvbG9yQXJyYXlbMF0sIGNvbG9yQXJyYXlbMV0sIGNvbG9yQXJyYXlbMl0sIGFscGhhKTsK
KyAgICByZXR1cm4gYXJncy5hdEVuZCgpOworfQorCitzdGF0aWMgYm9vbCBwYXJzZUhleENvbG9y
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBSR0JBMzImIHJlc3VsdCwgYm9vbCBhY2NlcHRR
dWlya3lDb2xvcnMpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2Uu
cGVlaygpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSGFzaFRva2VuKSB7CisgICAgICAgIGlm
ICghQ29sb3I6OnBhcnNlSGV4Q29sb3IodG9rZW4udmFsdWUoKSwgcmVzdWx0KSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9IGVsc2UgaWYgKGFjY2VwdFF1aXJreUNvbG9ycykgewor
ICAgICAgICBTdHJpbmcgY29sb3I7CisgICAgICAgIGlmICh0b2tlbi50eXBlKCkgPT0gTnVtYmVy
VG9rZW4gfHwgdG9rZW4udHlwZSgpID09IERpbWVuc2lvblRva2VuKSB7CisgICAgICAgICAgICBp
ZiAodG9rZW4ubnVtZXJpY1ZhbHVlVHlwZSgpICE9IEludGVnZXJWYWx1ZVR5cGUKKyAgICAgICAg
ICAgICAgICB8fCB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDAuIHx8IHRva2VuLm51bWVyaWNWYWx1
ZSgpID49IDEwMDAwMDAuKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIGlmICh0b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4pIC8vIGUuZy4gMTEyMjMzCisgICAg
ICAgICAgICAgICAgY29sb3IgPSBTdHJpbmc6OmZvcm1hdCgiJWQiLCBzdGF0aWNfY2FzdDxpbnQ+
KHRva2VuLm51bWVyaWNWYWx1ZSgpKSk7CisgICAgICAgICAgICBlbHNlIC8vIGUuZy4gMDAwMUZG
CisgICAgICAgICAgICAgICAgY29sb3IgPSBTdHJpbmc6Om51bWJlcihzdGF0aWNfY2FzdDxpbnQ+
KHRva2VuLm51bWVyaWNWYWx1ZSgpKSkgKyB0b2tlbi52YWx1ZSgpLnRvU3RyaW5nKCk7CisgICAg
ICAgICAgICB3aGlsZSAoY29sb3IubGVuZ3RoKCkgPCA2KQorICAgICAgICAgICAgICAgIGNvbG9y
ID0gIjAiICsgY29sb3I7CisgICAgICAgIH0gZWxzZSBpZiAodG9rZW4udHlwZSgpID09IElkZW50
VG9rZW4pIHsgLy8gZS5nLiBGRjAwMDAKKyAgICAgICAgICAgIGNvbG9yID0gdG9rZW4udmFsdWUo
KS50b1N0cmluZygpOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGNvbG9y
Lmxlbmd0aCgpOworICAgICAgICBpZiAobGVuZ3RoICE9IDMgJiYgbGVuZ3RoICE9IDYpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghQ29sb3I6OnBhcnNlSGV4Q29sb3Io
Y29sb3IsIHJlc3VsdCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5n
V2hpdGVzcGFjZSgpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBwYXJzZUNv
bG9yRnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIFJHQkEzMiYgcmVzdWx0KQor
eworICAgIENTU1ZhbHVlSUQgZnVuY3Rpb25JZCA9IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCk7
CisgICAgaWYgKGZ1bmN0aW9uSWQgPCBDU1NWYWx1ZVJnYiB8fCBmdW5jdGlvbklkID4gQ1NTVmFs
dWVIc2xhKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBj
b2xvclJhbmdlID0gcmFuZ2U7CisgICAgaWYgKChmdW5jdGlvbklkIDw9IENTU1ZhbHVlUmdiYSAm
JiAhcGFyc2VSR0JQYXJhbWV0ZXJzKGNvbG9yUmFuZ2UsIHJlc3VsdCwgZnVuY3Rpb25JZCA9PSBD
U1NWYWx1ZVJnYmEpKQorICAgICAgICB8fCAoZnVuY3Rpb25JZCA+PSBDU1NWYWx1ZUhzbCAmJiAh
cGFyc2VIU0xQYXJhbWV0ZXJzKGNvbG9yUmFuZ2UsIHJlc3VsdCwgZnVuY3Rpb25JZCA9PSBDU1NW
YWx1ZUhzbGEpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJhbmdlID0gY29sb3JSYW5n
ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworQ1NTVmFsdWUqIGNvbnN1bWVDb2xvcihDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBib29sIGFj
Y2VwdFF1aXJreUNvbG9ycykKK3sKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlk
KCk7CisgICAgaWYgKFN0eWxlQ29sb3I6OmlzQ29sb3JLZXl3b3JkKGlkKSkgeworICAgICAgICBp
ZiAoIWlzVmFsdWVBbGxvd2VkSW5Nb2RlKGlkLCBjc3NQYXJzZXJNb2RlKSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAg
ICB9CisgICAgUkdCQTMyIGNvbG9yID0gQ29sb3I6OnRyYW5zcGFyZW50OworICAgIGlmICghcGFy
c2VIZXhDb2xvcihyYW5nZSwgY29sb3IsIGFjY2VwdFF1aXJreUNvbG9ycykgJiYgIXBhcnNlQ29s
b3JGdW5jdGlvbihyYW5nZSwgY29sb3IpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gQ1NTQ29sb3JWYWx1ZTo6Y3JlYXRlKGNvbG9yKTsKK30KKworc3RhdGljIENTU1ByaW1p
dGl2ZVZhbHVlKiBjb25zdW1lUG9zaXRpb25Db21wb25lbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVz
cykKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBJZGVudFRva2VuKQorICAgICAg
ICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVUb3AsIENTU1ZhbHVl
Qm90dG9tLCBDU1NWYWx1ZVJpZ2h0LCBDU1NWYWx1ZUNlbnRlcj4ocmFuZ2UpOworICAgIHJldHVy
biBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdl
QWxsLCB1bml0bGVzcyk7Cit9CisKK3N0YXRpYyBib29sIGlzSG9yaXpvbnRhbFBvc2l0aW9uS2V5
d29yZE9ubHkoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQoreworICAgIHJldHVybiB2
YWx1ZS5pc1ZhbHVlSUQoKSAmJiAodmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTGVmdCB8
fCB2YWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVSaWdodCk7Cit9CisKK3N0YXRpYyBib29s
IGlzVmVydGljYWxQb3NpdGlvbktleXdvcmRPbmx5KGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2
YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUuaXNWYWx1ZUlEKCkgJiYgKHZhbHVlLmdldFZhbHVl
SUQoKSA9PSBDU1NWYWx1ZVRvcCB8fCB2YWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVCb3R0
b20pOworfQorCitzdGF0aWMgdm9pZCBwb3NpdGlvbkZyb21PbmVWYWx1ZShDU1NQcmltaXRpdmVW
YWx1ZSogdmFsdWUsIENTU1ZhbHVlKiYgcmVzdWx0WCwgQ1NTVmFsdWUqJiByZXN1bHRZKQorewor
ICAgIGJvb2wgdmFsdWVBcHBsaWVzVG9ZQXhpc09ubHkgPSBpc1ZlcnRpY2FsUG9zaXRpb25LZXl3
b3JkT25seSgqdmFsdWUpOworICAgIHJlc3VsdFggPSB2YWx1ZTsKKyAgICByZXN1bHRZID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVDZW50ZXIpOworICAgIGlm
ICh2YWx1ZUFwcGxpZXNUb1lBeGlzT25seSkKKyAgICAgICAgc3RkOjpzd2FwKHJlc3VsdFgsIHJl
c3VsdFkpOworfQorCitzdGF0aWMgYm9vbCBwb3NpdGlvbkZyb21Ud29WYWx1ZXMoQ1NTUHJpbWl0
aXZlVmFsdWUqIHZhbHVlMSwgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlMiwKKyAgICBDU1NWYWx1
ZSomIHJlc3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSkKK3sKKyAgICBib29sIG11c3RPcmRlckFz
WFkgPSBpc0hvcml6b250YWxQb3NpdGlvbktleXdvcmRPbmx5KCp2YWx1ZTEpIHx8IGlzVmVydGlj
YWxQb3NpdGlvbktleXdvcmRPbmx5KCp2YWx1ZTIpCisgICAgICAgIHx8ICF2YWx1ZTEtPmlzVmFs
dWVJRCgpIHx8ICF2YWx1ZTItPmlzVmFsdWVJRCgpOworICAgIGJvb2wgbXVzdE9yZGVyQXNZWCA9
IGlzVmVydGljYWxQb3NpdGlvbktleXdvcmRPbmx5KCp2YWx1ZTEpIHx8IGlzSG9yaXpvbnRhbFBv
c2l0aW9uS2V5d29yZE9ubHkoKnZhbHVlMik7CisgICAgaWYgKG11c3RPcmRlckFzWFkgJiYgbXVz
dE9yZGVyQXNZWCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3VsdFggPSB2YWx1ZTE7
CisgICAgcmVzdWx0WSA9IHZhbHVlMjsKKyAgICBpZiAobXVzdE9yZGVyQXNZWCkKKyAgICAgICAg
c3RkOjpzd2FwKHJlc3VsdFgsIHJlc3VsdFkpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0
aWMgYm9vbCBwb3NpdGlvbkZyb21UaHJlZU9yRm91clZhbHVlcyhDU1NQcmltaXRpdmVWYWx1ZSoq
IHZhbHVlcywgQ1NTVmFsdWUqJiByZXN1bHRYLCBDU1NWYWx1ZSomIHJlc3VsdFkpCit7CisgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIGNlbnRlciA9IG51bGxwdHI7CisgICAgZm9yIChpbnQgaSA9IDA7
IHZhbHVlc1tpXTsgaSsrKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjdXJyZW50VmFs
dWUgPSB2YWx1ZXNbaV07CisgICAgICAgIGlmICghY3VycmVudFZhbHVlLT5pc1ZhbHVlSUQoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgQ1NTVmFsdWVJRCBpZCA9IGN1cnJl
bnRWYWx1ZS0+Z2V0VmFsdWVJRCgpOworCisgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUNlbnRl
cikgeworICAgICAgICAgICAgaWYgKGNlbnRlcikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICBjZW50ZXIgPSBjdXJyZW50VmFsdWU7CisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIENTU1ZhbHVlKiByZXN1bHQgPSBudWxscHRyOwor
ICAgICAgICBpZiAodmFsdWVzW2kgKyAxXSAmJiAhdmFsdWVzW2kgKyAxXS0+aXNWYWx1ZUlEKCkp
IHsKKyAgICAgICAgICAgIHJlc3VsdCA9IENTU1ZhbHVlUGFpcjo6Y3JlYXRlKGN1cnJlbnRWYWx1
ZSwgdmFsdWVzWysraV0sIENTU1ZhbHVlUGFpcjo6S2VlcElkZW50aWNhbFZhbHVlcyk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXN1bHQgPSBjdXJyZW50VmFsdWU7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVMZWZ0IHx8IGlkID09IENTU1ZhbHVlUmln
aHQpIHsKKyAgICAgICAgICAgIGlmIChyZXN1bHRYKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIHJlc3VsdFggPSByZXN1bHQ7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBBU1NFUlQoaWQgPT0gQ1NTVmFsdWVUb3AgfHwgaWQgPT0gQ1NTVmFsdWVCb3R0
b20pOworICAgICAgICAgICAgaWYgKHJlc3VsdFkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgcmVzdWx0WSA9IHJlc3VsdDsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGlmIChjZW50ZXIpIHsKKyAgICAgICAgQVNTRVJUKHJlc3VsdFggfHwgcmVzdWx0WSk7Cisg
ICAgICAgIGlmIChyZXN1bHRYICYmIHJlc3VsdFkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIGlmICghcmVzdWx0WCkKKyAgICAgICAgICAgIHJlc3VsdFggPSBjZW50ZXI7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdFkgPSBjZW50ZXI7CisgICAgfQorCisgICAg
QVNTRVJUKHJlc3VsdFggJiYgcmVzdWx0WSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIFRP
RE8odGltbG9oKTogVGhpcyBtYXkgY29uc3VtZSBmcm9tIHRoZSByYW5nZSB1cG9uIGZhaWx1cmUu
IFRoZSBiYWNrZ3JvdW5kCisvLyBzaG9ydGhhbmQgd29ya3MgYXJvdW5kIGl0LCBidXQgd2Ugc2hv
dWxkIGp1c3QgZml4IGl0IGhlcmUuCitib29sIGNvbnN1bWVQb3NpdGlvbihDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJr
IHVuaXRsZXNzLCBDU1NWYWx1ZSomIHJlc3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSkKK3sKKyAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUxID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KHJh
bmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7CisgICAgaWYgKCF2YWx1ZTEpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZTIgPSBjb25zdW1l
UG9zaXRpb25Db21wb25lbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKTsKKyAgICBp
ZiAoIXZhbHVlMikgeworICAgICAgICBwb3NpdGlvbkZyb21PbmVWYWx1ZSh2YWx1ZTEsIHJlc3Vs
dFgsIHJlc3VsdFkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogdmFsdWUzID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQ
YXJzZXJNb2RlLCB1bml0bGVzcyk7CisgICAgaWYgKCF2YWx1ZTMpCisgICAgICAgIHJldHVybiBw
b3NpdGlvbkZyb21Ud29WYWx1ZXModmFsdWUxLCB2YWx1ZTIsIHJlc3VsdFgsIHJlc3VsdFkpOwor
CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlNCA9IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVu
dChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpOworICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiB2YWx1ZXNbNV07CisgICAgdmFsdWVzWzBdID0gdmFsdWUxOworICAgIHZhbHVlc1sxXSA9IHZh
bHVlMjsKKyAgICB2YWx1ZXNbMl0gPSB2YWx1ZTM7CisgICAgdmFsdWVzWzNdID0gdmFsdWU0Owor
ICAgIHZhbHVlc1s0XSA9IG51bGxwdHI7CisgICAgcmV0dXJuIHBvc2l0aW9uRnJvbVRocmVlT3JG
b3VyVmFsdWVzKHZhbHVlcywgcmVzdWx0WCwgcmVzdWx0WSk7Cit9CisKK0NTU1ZhbHVlUGFpciog
Y29uc3VtZVBvc2l0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2Rl
IGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCit7CisgICAgQ1NTVmFsdWUq
IHJlc3VsdFggPSBudWxscHRyOworICAgIENTU1ZhbHVlKiByZXN1bHRZID0gbnVsbHB0cjsKKyAg
ICBpZiAoY29uc3VtZVBvc2l0aW9uKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcywgcmVz
dWx0WCwgcmVzdWx0WSkpCisgICAgICAgIHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShyZXN1
bHRYLCByZXN1bHRZLCBDU1NWYWx1ZVBhaXI6OktlZXBJZGVudGljYWxWYWx1ZXMpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCitib29sIGNvbnN1bWVPbmVPclR3b1ZhbHVlZFBvc2l0aW9uKENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVu
aXRsZXNzUXVpcmsgdW5pdGxlc3MsIENTU1ZhbHVlKiYgcmVzdWx0WCwgQ1NTVmFsdWUqJiByZXN1
bHRZKQoreworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZTEgPSBjb25zdW1lUG9zaXRpb25D
b21wb25lbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKTsKKyAgICBpZiAoIXZhbHVl
MSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZTIg
PSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNz
KTsKKyAgICBpZiAoIXZhbHVlMikgeworICAgICAgICBwb3NpdGlvbkZyb21PbmVWYWx1ZSh2YWx1
ZTEsIHJlc3VsdFgsIHJlc3VsdFkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuIHBvc2l0aW9uRnJvbVR3b1ZhbHVlcyh2YWx1ZTEsIHZhbHVlMiwgcmVzdWx0WCwgcmVz
dWx0WSk7Cit9CisKKy8vIFRoaXMgc2hvdWxkIGdvIGF3YXkgb25jZSB3ZSBkcm9wIHN1cHBvcnQg
Zm9yIC13ZWJraXQtZ3JhZGllbnQKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZURl
cHJlY2F0ZWRHcmFkaWVudFBvaW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGJvb2wgaG9y
aXpvbnRhbCkKK3sKKyAgICBpZiAoYXJncy5wZWVrKCkudHlwZSgpID09IElkZW50VG9rZW4pIHsK
KyAgICAgICAgaWYgKChob3Jpem9udGFsICYmIGNvbnN1bWVJZGVudDxDU1NWYWx1ZUxlZnQ+KGFy
Z3MpKSB8fCAoIWhvcml6b250YWwgJiYgY29uc3VtZUlkZW50PENTU1ZhbHVlVG9wPihhcmdzKSkp
CisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLiwgQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQZXJjZW50YWdlKTsKKyAgICAgICAgaWYgKChob3Jpem9u
dGFsICYmIGNvbnN1bWVJZGVudDxDU1NWYWx1ZVJpZ2h0PihhcmdzKSkgfHwgKCFob3Jpem9udGFs
ICYmIGNvbnN1bWVJZGVudDxDU1NWYWx1ZUJvdHRvbT4oYXJncykpKQorICAgICAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMTAwLiwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlOjpQZXJjZW50YWdlKTsKKyAgICAgICAgaWYgKGNvbnN1bWVJZGVudDxDU1NWYWx1ZUNl
bnRlcj4oYXJncykpCisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZSg1MC4sIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGVyY2VudGFnZSk7CisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcmVzdWx0ID0g
Y29uc3VtZVBlcmNlbnQoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKCFyZXN1bHQpCisg
ICAgICAgIHJlc3VsdCA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworLy8gVXNlZCB0byBwYXJzZSBjb2xvcnMgZm9yIC13ZWJraXQt
Z3JhZGllbnQoLi4uKS4KK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVu
dFN0b3BDb2xvcihDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJNb2RlIGNzc1Bh
cnNlck1vZGUpCit7CisgICAgaWYgKGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVDdXJyZW50
Y29sb3IpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjb25zdW1lQ29sb3Io
YXJncywgY3NzUGFyc2VyTW9kZSk7Cit9CisKK3N0YXRpYyBib29sIGNvbnN1bWVEZXByZWNhdGVk
R3JhZGllbnRDb2xvclN0b3AoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU0dyYWRpZW50
Q29sb3JTdG9wJiBzdG9wLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgQ1NT
VmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCk7CisgICAgaWYgKGlkICE9IENT
U1ZhbHVlRnJvbSAmJiBpZCAhPSBDU1NWYWx1ZVRvICYmIGlkICE9IENTU1ZhbHVlQ29sb3JTdG9w
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3Mg
PSBjb25zdW1lRnVuY3Rpb24ocmFuZ2UpOworICAgIGRvdWJsZSBwb3NpdGlvbjsKKyAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVGcm9tIHx8IGlkID09IENTU1ZhbHVlVG8pIHsKKyAgICAgICAgcG9zaXRp
b24gPSAoaWQgPT0gQ1NTVmFsdWVGcm9tKSA/IDAgOiAxOworICAgIH0gZWxzZSB7CisgICAgICAg
IERDSEVDSyhpZCA9PSBDU1NWYWx1ZUNvbG9yU3RvcCk7CisgICAgICAgIGNvbnN0IENTU1BhcnNl
clRva2VuJiBhcmcgPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAg
IGlmIChhcmcudHlwZSgpID09IFBlcmNlbnRhZ2VUb2tlbikKKyAgICAgICAgICAgIHBvc2l0aW9u
ID0gYXJnLm51bWVyaWNWYWx1ZSgpIC8gMTAwLjA7CisgICAgICAgIGVsc2UgaWYgKGFyZy50eXBl
KCkgPT0gTnVtYmVyVG9rZW4pCisgICAgICAgICAgICBwb3NpdGlvbiA9IGFyZy5udW1lcmljVmFs
dWUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzdG9wLm1fcG9zaXRpb24gPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKHBvc2l0aW9uLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6Ok51
bWJlcik7CisgICAgc3RvcC5tX2NvbG9yID0gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudFN0b3BD
b2xvcihhcmdzLCBjc3NQYXJzZXJNb2RlKTsKKyAgICByZXR1cm4gc3RvcC5tX2NvbG9yICYmIGFy
Z3MuYXRFbmQoKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lRGVwcmVjYXRlZEdyYWRp
ZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9k
ZSkKK3sKKyAgICBDU1NHcmFkaWVudFZhbHVlKiByZXN1bHQgPSBudWxscHRyOworICAgIENTU1Zh
bHVlSUQgaWQgPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKKyAgICBi
b29sIGlzRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50ID0gKGlkID09IENTU1ZhbHVlUmFkaWFsKTsK
KyAgICBpZiAoaXNEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQpCisgICAgICAgIHJlc3VsdCA9IENT
U1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZShOb25SZXBlYXRpbmcsIENTU0RlcHJlY2F0ZWRS
YWRpYWxHcmFkaWVudCk7CisgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVMaW5lYXIpCisgICAg
ICAgIHJlc3VsdCA9IENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZShOb25SZXBlYXRpbmcs
IENTU0RlcHJlY2F0ZWRMaW5lYXJHcmFkaWVudCk7CisgICAgaWYgKCFyZXN1bHQgfHwgIWNvbnN1
bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBvaW50ID0gY29uc3VtZURlcHJlY2F0ZWRHcmFk
aWVudFBvaW50KGFyZ3MsIHRydWUpOworICAgIGlmICghcG9pbnQpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJlc3VsdC0+c2V0Rmlyc3RYKHBvaW50KTsKKyAgICBwb2ludCA9IGNvbnN1
bWVEZXByZWNhdGVkR3JhZGllbnRQb2ludChhcmdzLCBmYWxzZSk7CisgICAgaWYgKCFwb2ludCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmVzdWx0LT5zZXRGaXJzdFkocG9pbnQpOwor
CisgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIEZvciByYWRpYWwgZ3JhZGllbnRzIG9ubHksIHdl
IG5vdyBleHBlY3QgYSBudW1lcmljIHJhZGl1cy4KKyAgICBpZiAoaXNEZXByZWNhdGVkUmFkaWFs
R3JhZGllbnQpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHJhZGl1cyA9IGNvbnN1bWVO
dW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGlmICghcmFkaXVzIHx8ICFjb25z
dW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIHRvQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZShyZXN1bHQpLT5zZXRGaXJz
dFJhZGl1cyhyYWRpdXMpOworICAgIH0KKworICAgIHBvaW50ID0gY29uc3VtZURlcHJlY2F0ZWRH
cmFkaWVudFBvaW50KGFyZ3MsIHRydWUpOworICAgIGlmICghcG9pbnQpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIHJlc3VsdC0+c2V0U2Vjb25kWChwb2ludCk7CisgICAgcG9pbnQgPSBj
b25zdW1lRGVwcmVjYXRlZEdyYWRpZW50UG9pbnQoYXJncywgZmFsc2UpOworICAgIGlmICghcG9p
bnQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJlc3VsdC0+c2V0U2Vjb25kWShwb2lu
dCk7CisKKyAgICAvLyBGb3IgcmFkaWFsIGdyYWRpZW50cyBvbmx5LCB3ZSBub3cgZXhwZWN0IHRo
ZSBzZWNvbmQgcmFkaXVzLgorICAgIGlmIChpc0RlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCkgewor
ICAgICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHJhZGl1
cyA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGlmICghcmFk
aXVzKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHRvQ1NTUmFkaWFsR3Jh
ZGllbnRWYWx1ZShyZXN1bHQpLT5zZXRTZWNvbmRSYWRpdXMocmFkaXVzKTsKKyAgICB9CisKKyAg
ICBDU1NHcmFkaWVudENvbG9yU3RvcCBzdG9wOworICAgIHdoaWxlIChjb25zdW1lQ29tbWFJbmNs
dWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKSB7CisgICAgICAgIGlmICghY29uc3VtZURlcHJlY2F0ZWRH
cmFkaWVudENvbG9yU3RvcChhcmdzLCBzdG9wLCBjc3NQYXJzZXJNb2RlKSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXN1bHQtPmFkZFN0b3Aoc3RvcCk7CisgICAgfQor
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGJvb2wgY29uc3VtZUdyYWRpZW50Q29s
b3JTdG9wcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJz
ZXJNb2RlLCBDU1NHcmFkaWVudFZhbHVlKiBncmFkaWVudCkKK3sKKyAgICBib29sIHN1cHBvcnRz
Q29sb3JIaW50cyA9IGdyYWRpZW50LT5ncmFkaWVudFR5cGUoKSA9PSBDU1NMaW5lYXJHcmFkaWVu
dCB8fCBncmFkaWVudC0+Z3JhZGllbnRUeXBlKCkgPT0gQ1NTUmFkaWFsR3JhZGllbnQ7CisKKyAg
ICAvLyBUaGUgZmlyc3QgY29sb3Igc3RvcCBjYW5ub3QgYmUgYSBjb2xvciBoaW50LgorICAgIGJv
b2wgcHJldmlvdXNTdG9wV2FzQ29sb3JIaW50ID0gdHJ1ZTsKKyAgICBkbyB7CisgICAgICAgIENT
U0dyYWRpZW50Q29sb3JTdG9wIHN0b3A7CisgICAgICAgIHN0b3AubV9jb2xvciA9IGNvbnN1bWVD
b2xvcihyYW5nZSwgY3NzUGFyc2VyTW9kZSk7CisgICAgICAgIC8vIFR3byBoaW50cyBpbiBhIHJv
dyBhcmUgbm90IGFsbG93ZWQuCisgICAgICAgIGlmICghc3RvcC5tX2NvbG9yICYmICghc3VwcG9y
dHNDb2xvckhpbnRzIHx8IHByZXZpb3VzU3RvcFdhc0NvbG9ySGludCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHByZXZpb3VzU3RvcFdhc0NvbG9ySGludCA9ICFzdG9wLm1f
Y29sb3I7CisgICAgICAgIHN0b3AubV9wb3NpdGlvbiA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQo
cmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBpZiAoIXN0b3Au
bV9jb2xvciAmJiAhc3RvcC5tX3Bvc2l0aW9uKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBncmFkaWVudC0+YWRkU3RvcChzdG9wKTsKKyAgICB9IHdoaWxlIChjb25zdW1lQ29t
bWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSk7CisKKyAgICAvLyBUaGUgbGFzdCBjb2xvciBz
dG9wIGNhbm5vdCBiZSBhIGNvbG9yIGhpbnQuCisgICAgaWYgKHByZXZpb3VzU3RvcFdhc0NvbG9y
SGludCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTXVzdCBoYXZlIDIgb3IgbW9y
ZSBzdG9wcyB0byBiZSB2YWxpZC4KKyAgICByZXR1cm4gZ3JhZGllbnQtPnN0b3BDb3VudCgpID49
IDI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVu
dChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUs
IENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykKK3sKKyAgICBDU1NSYWRpYWxHcmFkaWVudFZh
bHVlKiByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCBD
U1NQcmVmaXhlZFJhZGlhbEdyYWRpZW50KTsKKyAgICBDU1NWYWx1ZSogY2VudGVyWCA9IG51bGxw
dHI7CisgICAgQ1NTVmFsdWUqIGNlbnRlclkgPSBudWxscHRyOworICAgIGNvbnN1bWVPbmVPclR3
b1ZhbHVlZFBvc2l0aW9uKGFyZ3MsIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJp
ZCwgY2VudGVyWCwgY2VudGVyWSk7CisgICAgaWYgKChjZW50ZXJYIHx8IGNlbnRlclkpICYmICFj
b25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIHJlc3VsdC0+c2V0Rmlyc3RYKHRvQ1NTUHJpbWl0aXZlVmFsdWUoY2VudGVy
WCkpOworICAgIHJlc3VsdC0+c2V0U2Vjb25kWCh0b0NTU1ByaW1pdGl2ZVZhbHVlKGNlbnRlclgp
KTsKKyAgICByZXN1bHQtPnNldEZpcnN0WSh0b0NTU1ByaW1pdGl2ZVZhbHVlKGNlbnRlclkpKTsK
KyAgICByZXN1bHQtPnNldFNlY29uZFkodG9DU1NQcmltaXRpdmVWYWx1ZShjZW50ZXJZKSk7CisK
KyAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2hhcGUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVDaXJj
bGUsIENTU1ZhbHVlRWxsaXBzZT4oYXJncyk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNpemVL
ZXl3b3JkID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQ2xvc2VzdFNpZGUsIENTU1ZhbHVlQ2xvc2Vz
dENvcm5lciwgQ1NTVmFsdWVGYXJ0aGVzdFNpZGUsIENTU1ZhbHVlRmFydGhlc3RDb3JuZXIsIENT
U1ZhbHVlQ29udGFpbiwgQ1NTVmFsdWVDb3Zlcj4oYXJncyk7CisgICAgaWYgKCFzaGFwZSkKKyAg
ICAgICAgc2hhcGUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVDaXJjbGUsIENTU1ZhbHVlRWxsaXBz
ZT4oYXJncyk7CisgICAgcmVzdWx0LT5zZXRTaGFwZShzaGFwZSk7CisgICAgcmVzdWx0LT5zZXRT
aXppbmdCZWhhdmlvcihzaXplS2V5d29yZCk7CisKKyAgICAvLyBPciwgdHdvIGxlbmd0aHMgb3Ig
cGVyY2VudGFnZXMKKyAgICBpZiAoIXNoYXBlICYmICFzaXplS2V5d29yZCkgeworICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogaG9yaXpvbnRhbFNpemUgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50
KGFyZ3MsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogdmVydGljYWxTaXplID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGhvcml6b250YWxT
aXplKSB7CisgICAgICAgICAgICB2ZXJ0aWNhbFNpemUgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50
KGFyZ3MsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICAgICAgaWYgKCF2
ZXJ0aWNhbFNpemUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAg
ICBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpOworICAgICAgICAgICAgcmVz
dWx0LT5zZXRFbmRIb3Jpem9udGFsU2l6ZShob3Jpem9udGFsU2l6ZSk7CisgICAgICAgICAgICBy
ZXN1bHQtPnNldEVuZFZlcnRpY2FsU2l6ZSh2ZXJ0aWNhbFNpemUpOworICAgICAgICB9CisgICAg
fSBlbHNlIHsKKyAgICAgICAgY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKTsK
KyAgICB9CisgICAgaWYgKCFjb25zdW1lR3JhZGllbnRDb2xvclN0b3BzKGFyZ3MsIGNzc1BhcnNl
ck1vZGUsIHJlc3VsdCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lUmFkaWFsR3JhZGllbnQoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NHcmFk
aWVudFJlcGVhdCByZXBlYXRpbmcpCit7CisgICAgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZSogcmVz
dWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgQ1NTUmFkaWFs
R3JhZGllbnQpOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNoYXBlID0gbnVsbHB0cjsKKyAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogc2l6ZUtleXdvcmQgPSBudWxscHRyOworICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBob3Jpem9udGFsU2l6ZSA9IG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHZlcnRpY2FsU2l6ZSA9IG51bGxwdHI7CisKKyAgICAvLyBGaXJzdCBwYXJ0IG9mIGdyYW1t
YXIsIHRoZSBzaXplL3NoYXBlIGNsYXVzZToKKyAgICAvLyBbIGNpcmNsZSB8fCA8bGVuZ3RoPiBd
IHwKKyAgICAvLyBbIGVsbGlwc2UgfHwgWyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiBdezJ9IF0g
fAorICAgIC8vIFsgWyBjaXJjbGUgfCBlbGxpcHNlXSB8fCA8c2l6ZS1rZXl3b3JkPiBdCisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpIHsKKyAgICAgICAgaWYgKGFyZ3MucGVlaygpLnR5
cGUoKSA9PSBJZGVudFRva2VuKSB7CisgICAgICAgICAgICBDU1NWYWx1ZUlEIGlkID0gYXJncy5w
ZWVrKCkuaWQoKTsKKyAgICAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUNpcmNsZSB8fCBpZCA9
PSBDU1NWYWx1ZUVsbGlwc2UpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2hhcGUpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAgIHNoYXBlID0gY29u
c3VtZUlkZW50KGFyZ3MpOworICAgICAgICAgICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZUNs
b3Nlc3RTaWRlIHx8IGlkID09IENTU1ZhbHVlQ2xvc2VzdENvcm5lciB8fCBpZCA9PSBDU1NWYWx1
ZUZhcnRoZXN0U2lkZSB8fCBpZCA9PSBDU1NWYWx1ZUZhcnRoZXN0Q29ybmVyKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHNpemVLZXl3b3JkKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgICAgICAgICBzaXplS2V5d29yZCA9IGNvbnN1bWVJZGVudChhcmdzKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogY2Vu
dGVyID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJh
bmdlQWxsKTsKKyAgICAgICAgICAgIGlmICghY2VudGVyKQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgaWYgKGhvcml6b250YWxTaXplKQorICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICAgICAgaG9yaXpvbnRhbFNpemUgPSBjZW50ZXI7CisgICAgICAg
ICAgICBjZW50ZXIgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUs
IFZhbHVlUmFuZ2VBbGwpOworICAgICAgICAgICAgaWYgKGNlbnRlcikgeworICAgICAgICAgICAg
ICAgIHZlcnRpY2FsU2l6ZSA9IGNlbnRlcjsKKyAgICAgICAgICAgICAgICArK2k7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBZb3UgY2FuIHNwZWNpZnkgc2l6ZSBh
cyBhIGtleXdvcmQgb3IgYSBsZW5ndGgvcGVyY2VudGFnZSwgbm90IGJvdGguCisgICAgaWYgKHNp
emVLZXl3b3JkICYmIGhvcml6b250YWxTaXplKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAvLyBDaXJjbGVzIG11c3QgaGF2ZSAwIG9yIDEgbGVuZ3Rocy4KKyAgICBpZiAoc2hhcGUgJiYg
c2hhcGUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUNpcmNsZSAmJiB2ZXJ0aWNhbFNpemUpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIC8vIEVsbGlwc2VzIG11c3QgaGF2ZSAwIG9yIDIg
bGVuZ3RoL3BlcmNlbnRhZ2VzLgorICAgIGlmIChzaGFwZSAmJiBzaGFwZS0+Z2V0VmFsdWVJRCgp
ID09IENTU1ZhbHVlRWxsaXBzZSAmJiBob3Jpem9udGFsU2l6ZSAmJiAhdmVydGljYWxTaXplKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAvLyBJZiB0aGVyZSdzIG9ubHkgb25lIHNpemUs
IGl0IG11c3QgYmUgYSBsZW5ndGguCisgICAgaWYgKCF2ZXJ0aWNhbFNpemUgJiYgaG9yaXpvbnRh
bFNpemUgJiYgaG9yaXpvbnRhbFNpemUtPmlzUGVyY2VudGFnZSgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBpZiAoKGhvcml6b250YWxTaXplICYmIGhvcml6b250YWxTaXplLT5pc0Nh
bGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgpKQorICAgICAgICB8fCAodmVydGljYWxTaXpl
ICYmIHZlcnRpY2FsU2l6ZS0+aXNDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhMZW5ndGgoKSkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmVzdWx0LT5zZXRTaGFwZShzaGFwZSk7Cisg
ICAgcmVzdWx0LT5zZXRTaXppbmdCZWhhdmlvcihzaXplS2V5d29yZCk7CisgICAgcmVzdWx0LT5z
ZXRFbmRIb3Jpem9udGFsU2l6ZShob3Jpem9udGFsU2l6ZSk7CisgICAgcmVzdWx0LT5zZXRFbmRW
ZXJ0aWNhbFNpemUodmVydGljYWxTaXplKTsKKworICAgIENTU1ZhbHVlKiBjZW50ZXJYID0gbnVs
bHB0cjsKKyAgICBDU1NWYWx1ZSogY2VudGVyWSA9IG51bGxwdHI7CisgICAgaWYgKGFyZ3MucGVl
aygpLmlkKCkgPT0gQ1NTVmFsdWVBdCkgeworICAgICAgICBhcmdzLmNvbnN1bWVJbmNsdWRpbmdX
aGl0ZXNwYWNlKCk7CisgICAgICAgIGNvbnN1bWVQb3NpdGlvbihhcmdzLCBjc3NQYXJzZXJNb2Rl
LCBVbml0bGVzc1F1aXJrOjpGb3JiaWQsIGNlbnRlclgsIGNlbnRlclkpOworICAgICAgICBpZiAo
IShjZW50ZXJYICYmIGNlbnRlclkpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHJlc3VsdC0+c2V0Rmlyc3RYKGNlbnRlclgpOworICAgICAgICByZXN1bHQtPnNldEZpcnN0
WShjZW50ZXJZKTsKKyAgICAgICAgLy8gUmlnaHQgbm93LCBDU1MgcmFkaWFsIGdyYWRpZW50cyBo
YXZlIHRoZSBzYW1lIHN0YXJ0IGFuZCBlbmQgY2VudGVycy4KKyAgICAgICAgcmVzdWx0LT5zZXRT
ZWNvbmRYKGNlbnRlclgpOworICAgICAgICByZXN1bHQtPnNldFNlY29uZFkoY2VudGVyWSk7Cisg
ICAgfQorCisgICAgaWYgKChzaGFwZSB8fCBzaXplS2V5d29yZCB8fCBob3Jpem9udGFsU2l6ZSB8
fCBjZW50ZXJYIHx8IGNlbnRlclkpICYmICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNl
KGFyZ3MpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWNvbnN1bWVHcmFkaWVu
dENvbG9yU3RvcHMoYXJncywgY3NzUGFyc2VyTW9kZSwgcmVzdWx0KSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25z
dW1lTGluZWFyR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlLCBDU1NHcmFkaWVudFJlcGVhdCByZXBlYXRpbmcsIENTU0dyYWRpZW50
VHlwZSBncmFkaWVudFR5cGUpCit7CisgICAgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZSogcmVzdWx0
ID0gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgZ3JhZGllbnRUeXBl
KTsKKworICAgIGJvb2wgZXhwZWN0Q29tbWEgPSB0cnVlOworICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBhbmdsZSA9IGNvbnN1bWVBbmdsZShhcmdzKTsKKyAgICBpZiAoYW5nbGUpIHsKKyAgICAgICAg
cmVzdWx0LT5zZXRBbmdsZShhbmdsZSk7CisgICAgfSBlbHNlIGlmIChncmFkaWVudFR5cGUgPT0g
Q1NTUHJlZml4ZWRMaW5lYXJHcmFkaWVudCB8fCBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVUbz4oYXJn
cykpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGVuZFggPSBjb25zdW1lSWRlbnQ8Q1NT
VmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0PihhcmdzKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIGVuZFkgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVCb3R0b20sIENTU1ZhbHVlVG9wPihhcmdz
KTsKKyAgICAgICAgaWYgKCFlbmRYICYmICFlbmRZKSB7CisgICAgICAgICAgICBpZiAoZ3JhZGll
bnRUeXBlID09IENTU0xpbmVhckdyYWRpZW50KQorICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICAgICAgZW5kWSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlm
aWVyKENTU1ZhbHVlVG9wKTsKKyAgICAgICAgICAgIGV4cGVjdENvbW1hID0gZmFsc2U7CisgICAg
ICAgIH0gZWxzZSBpZiAoIWVuZFgpIHsKKyAgICAgICAgICAgIGVuZFggPSBjb25zdW1lSWRlbnQ8
Q1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0PihhcmdzKTsKKyAgICAgICAgfQorCisgICAgICAg
IHJlc3VsdC0+c2V0Rmlyc3RYKGVuZFgpOworICAgICAgICByZXN1bHQtPnNldEZpcnN0WShlbmRZ
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBleHBlY3RDb21tYSA9IGZhbHNlOworICAgIH0KKwor
ICAgIGlmIChleHBlY3RDb21tYSAmJiAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShh
cmdzKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFjb25zdW1lR3JhZGllbnRD
b2xvclN0b3BzKGFyZ3MsIGNzc1BhcnNlck1vZGUsIHJlc3VsdCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0NTU1ZhbHVlKiBjb25zdW1lSW1hZ2VP
ck5vbmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlckNvbnRleHQgY29udGV4
dCkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAg
ICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZUltYWdlKHJh
bmdlLCBjb250ZXh0KTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQ3Jvc3NGYWRlKENT
U1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlckNvbnRleHQgY29udGV4dCkKK3sKKyAg
ICBDU1NWYWx1ZSogZnJvbUltYWdlVmFsdWUgPSBjb25zdW1lSW1hZ2VPck5vbmUoYXJncywgY29u
dGV4dCk7CisgICAgaWYgKCFmcm9tSW1hZ2VWYWx1ZSB8fCAhY29uc3VtZUNvbW1hSW5jbHVkaW5n
V2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NTVmFsdWUq
IHRvSW1hZ2VWYWx1ZSA9IGNvbnN1bWVJbWFnZU9yTm9uZShhcmdzLCBjb250ZXh0KTsKKyAgICBp
ZiAoIXRvSW1hZ2VWYWx1ZSB8fCAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdz
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcGVy
Y2VudGFnZSA9IG51bGxwdHI7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHBlcmNlbnRhZ2VB
cmcgPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgaWYgKHBlcmNlbnRh
Z2VBcmcudHlwZSgpID09IFBlcmNlbnRhZ2VUb2tlbikKKyAgICAgICAgcGVyY2VudGFnZSA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoY2xhbXBUbzxkb3VibGU+KHBlcmNlbnRhZ2VBcmcubnVt
ZXJpY1ZhbHVlKCkgLyAxMDAsIDAsIDEpLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6Ok51
bWJlcik7CisgICAgZWxzZSBpZiAocGVyY2VudGFnZUFyZy50eXBlKCkgPT0gTnVtYmVyVG9rZW4p
CisgICAgICAgIHBlcmNlbnRhZ2UgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGNsYW1wVG88
ZG91YmxlPihwZXJjZW50YWdlQXJnLm51bWVyaWNWYWx1ZSgpLCAwLCAxKSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OlVuaXRUeXBlOjpOdW1iZXIpOworCisgICAgaWYgKCFwZXJjZW50YWdlKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gQ1NTQ3Jvc3NmYWRlVmFsdWU6OmNyZWF0ZShm
cm9tSW1hZ2VWYWx1ZSwgdG9JbWFnZVZhbHVlLCBwZXJjZW50YWdlKTsKK30KKworc3RhdGljIENT
U1ZhbHVlKiBjb25zdW1lUGFpbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2Vy
Q29udGV4dCBjb250ZXh0KQoreworICAgIERDSEVDSyhSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpj
c3NQYWludEFQSUVuYWJsZWQoKSk7CisKKyAgICBDU1NDdXN0b21JZGVudFZhbHVlKiBuYW1lID0g
Y29uc3VtZUN1c3RvbUlkZW50KGFyZ3MpOworICAgIGlmICghbmFtZSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICByZXR1cm4gQ1NTUGFpbnRWYWx1ZTo6Y3JlYXRlKG5hbWUpOworfQor
CitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVHZW5lcmF0ZWRJbWFnZShDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KQoreworICAgIENTU1ZhbHVlSUQg
aWQgPSByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpOworICAgIENTU1BhcnNlclRva2VuUmFuZ2Ug
cmFuZ2VDb3B5ID0gcmFuZ2U7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3Vt
ZUZ1bmN0aW9uKHJhbmdlQ29weSk7CisgICAgQ1NTVmFsdWUqIHJlc3VsdCA9IG51bGxwdHI7Cisg
ICAgaWYgKGlkID09IENTU1ZhbHVlUmFkaWFsR3JhZGllbnQpIHsKKyAgICAgICAgcmVzdWx0ID0g
Y29uc3VtZVJhZGlhbEdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBOb25SZXBlYXRpbmcp
OworICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVSZXBlYXRpbmdSYWRpYWxHcmFkaWVudCkg
eworICAgICAgICByZXN1bHQgPSBjb25zdW1lUmFkaWFsR3JhZGllbnQoYXJncywgY29udGV4dC5t
b2RlKCksIFJlcGVhdGluZyk7CisgICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdExp
bmVhckdyYWRpZW50KSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBzZW5kIGEgZGVw
cmVjYXRpb24gbWVzc2FnZS4KKyAgICAgICAgaWYgKGNvbnRleHQudXNlQ291bnRlcigpKQorICAg
ICAgICAgICAgY29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkRlcHJlY2F0
ZWRXZWJLaXRMaW5lYXJHcmFkaWVudCk7CisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVMaW5lYXJH
cmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUoKSwgTm9uUmVwZWF0aW5nLCBDU1NQcmVmaXhlZExp
bmVhckdyYWRpZW50KTsKKyAgICB9IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0UmVwZWF0
aW5nTGluZWFyR3JhZGllbnQpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHNlbmQg
YSBkZXByZWNhdGlvbiBtZXNzYWdlLgorICAgICAgICBpZiAoY29udGV4dC51c2VDb3VudGVyKCkp
CisgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291bnRlcjo6RGVw
cmVjYXRlZFdlYktpdFJlcGVhdGluZ0xpbmVhckdyYWRpZW50KTsKKyAgICAgICAgcmVzdWx0ID0g
Y29uc3VtZUxpbmVhckdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBSZXBlYXRpbmcsIENT
U1ByZWZpeGVkTGluZWFyR3JhZGllbnQpOworICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVS
ZXBlYXRpbmdMaW5lYXJHcmFkaWVudCkgeworICAgICAgICByZXN1bHQgPSBjb25zdW1lTGluZWFy
R3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCksIFJlcGVhdGluZywgQ1NTTGluZWFyR3JhZGll
bnQpOworICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVMaW5lYXJHcmFkaWVudCkgeworICAg
ICAgICByZXN1bHQgPSBjb25zdW1lTGluZWFyR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCks
IE5vblJlcGVhdGluZywgQ1NTTGluZWFyR3JhZGllbnQpOworICAgIH0gZWxzZSBpZiAoaWQgPT0g
Q1NTVmFsdWVXZWJraXRHcmFkaWVudCkgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
c2VuZCBhIGRlcHJlY2F0aW9uIG1lc3NhZ2UuCisgICAgICAgIGlmIChjb250ZXh0LnVzZUNvdW50
ZXIoKSkKKyAgICAgICAgICAgIGNvbnRleHQudXNlQ291bnRlcigpLT5jb3VudChVc2VDb3VudGVy
OjpEZXByZWNhdGVkV2ViS2l0R3JhZGllbnQpOworICAgICAgICByZXN1bHQgPSBjb25zdW1lRGVw
cmVjYXRlZEdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpKTsKKyAgICB9IGVsc2UgaWYgKGlk
ID09IENTU1ZhbHVlV2Via2l0UmFkaWFsR3JhZGllbnQpIHsKKyAgICAgICAgLy8gRklYTUU6IFRo
aXMgc2hvdWxkIHNlbmQgYSBkZXByZWNhdGlvbiBtZXNzYWdlLgorICAgICAgICBpZiAoY29udGV4
dC51c2VDb3VudGVyKCkpCisgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQo
VXNlQ291bnRlcjo6RGVwcmVjYXRlZFdlYktpdFJhZGlhbEdyYWRpZW50KTsKKyAgICAgICAgcmVz
dWx0ID0gY29uc3VtZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUo
KSwgTm9uUmVwZWF0aW5nKTsKKyAgICB9IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0UmVw
ZWF0aW5nUmFkaWFsR3JhZGllbnQpIHsKKyAgICAgICAgaWYgKGNvbnRleHQudXNlQ291bnRlcigp
KQorICAgICAgICAgICAgY29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkRl
cHJlY2F0ZWRXZWJLaXRSZXBlYXRpbmdSYWRpYWxHcmFkaWVudCk7CisgICAgICAgIHJlc3VsdCA9
IGNvbnN1bWVEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCksIFJl
cGVhdGluZyk7CisgICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdENyb3NzRmFkZSkg
eworICAgICAgICByZXN1bHQgPSBjb25zdW1lQ3Jvc3NGYWRlKGFyZ3MsIGNvbnRleHQpOworICAg
IH0gZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVQYWludCkgeworICAgICAgICByZXN1bHQgPSBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NQYWludEFQSUVuYWJsZWQoKSA/IGNvbnN1bWVQYWludChh
cmdzLCBjb250ZXh0KSA6IG51bGxwdHI7CisgICAgfQorICAgIGlmICghcmVzdWx0IHx8ICFhcmdz
LmF0RW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJhbmdlID0gcmFuZ2VDb3B5
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY3JlYXRlQ1NTSW1h
Z2VWYWx1ZVdpdGhSZWZlcnJlcihjb25zdCBBdG9taWNTdHJpbmcmIHJhd1ZhbHVlLCBjb25zdCBD
U1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIENTU1ZhbHVlKiBpbWFnZVZhbHVlID0g
Q1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKHJhd1ZhbHVlLCBjb250ZXh0LmNvbXBsZXRlVVJMKHJhd1Zh
bHVlKSk7CisgICAgdG9DU1NJbWFnZVZhbHVlKGltYWdlVmFsdWUpLT5zZXRSZWZlcnJlcihjb250
ZXh0LnJlZmVycmVyKCkpOworICAgIHJldHVybiBpbWFnZVZhbHVlOworfQorCitzdGF0aWMgQ1NT
VmFsdWUqIGNvbnN1bWVJbWFnZVNldChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3Qg
Q1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJh
bmdlQ29weSA9IHJhbmdlOworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVG
dW5jdGlvbihyYW5nZUNvcHkpOworICAgIENTU0ltYWdlU2V0VmFsdWUqIGltYWdlU2V0ID0gQ1NT
SW1hZ2VTZXRWYWx1ZTo6Y3JlYXRlKCk7CisgICAgZG8geworICAgICAgICBBdG9taWNTdHJpbmcg
dXJsVmFsdWUgPSBjb25zdW1lVXJsQXNTdHJpbmdWaWV3KGFyZ3MpLnRvQXRvbWljU3RyaW5nKCk7
CisgICAgICAgIGlmICh1cmxWYWx1ZS5pc051bGwoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgICAgIENTU1ZhbHVlKiBpbWFnZSA9IGNyZWF0ZUNTU0ltYWdlVmFsdWVXaXRo
UmVmZXJyZXIodXJsVmFsdWUsIGNvbnRleHQpOworICAgICAgICBpbWFnZVNldC0+YXBwZW5kKCpp
bWFnZSk7CisKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gYXJncy5jb25z
dW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICBpZiAodG9rZW4udHlwZSgpICE9IERp
bWVuc2lvblRva2VuKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGlmICh0
b2tlbi52YWx1ZSgpICE9ICJ4IikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICBEQ0hFQ0sodG9rZW4udW5pdFR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6
OlVua25vd24pOworICAgICAgICBkb3VibGUgaW1hZ2VTY2FsZUZhY3RvciA9IHRva2VuLm51bWVy
aWNWYWx1ZSgpOworICAgICAgICBpZiAoaW1hZ2VTY2FsZUZhY3RvciA8PSAwKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGltYWdlU2V0LT5hcHBlbmQoKkNTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUoaW1hZ2VTY2FsZUZhY3RvciwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlOjpOdW1iZXIpKTsKKyAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNw
YWNlKGFyZ3MpKTsKKyAgICBpZiAoIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmFuZ2UgPSByYW5nZUNvcHk7CisgICAgcmV0dXJuIGltYWdlU2V0OworfQorCitz
dGF0aWMgYm9vbCBpc0dlbmVyYXRlZEltYWdlKENTU1ZhbHVlSUQgaWQpCit7CisgICAgcmV0dXJu
IGlkID09IENTU1ZhbHVlTGluZWFyR3JhZGllbnQgfHwgaWQgPT0gQ1NTVmFsdWVSYWRpYWxHcmFk
aWVudAorICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVJlcGVhdGluZ0xpbmVhckdyYWRpZW50IHx8
IGlkID09IENTU1ZhbHVlUmVwZWF0aW5nUmFkaWFsR3JhZGllbnQKKyAgICAgICAgfHwgaWQgPT0g
Q1NTVmFsdWVXZWJraXRMaW5lYXJHcmFkaWVudCB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdFJhZGlh
bEdyYWRpZW50CisgICAgICAgIHx8IGlkID09IENTU1ZhbHVlV2Via2l0UmVwZWF0aW5nTGluZWFy
R3JhZGllbnQgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRSZXBlYXRpbmdSYWRpYWxHcmFkaWVudAor
ICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdEdyYWRpZW50IHx8IGlkID09IENTU1ZhbHVl
V2Via2l0Q3Jvc3NGYWRlIHx8IGlkID09IENTU1ZhbHVlUGFpbnQ7Cit9CisKK0NTU1ZhbHVlKiBj
b25zdW1lSW1hZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlckNvbnRleHQg
Y29udGV4dCwgQ29uc3VtZUdlbmVyYXRlZEltYWdlIGdlbmVyYXRlZEltYWdlKQoreworICAgIEF0
b21pY1N0cmluZyB1cmkgPSBjb25zdW1lVXJsQXNTdHJpbmdWaWV3KHJhbmdlKS50b0F0b21pY1N0
cmluZygpOworICAgIGlmICghdXJpLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gY3JlYXRlQ1NT
SW1hZ2VWYWx1ZVdpdGhSZWZlcnJlcih1cmksIGNvbnRleHQpOworICAgIGlmIChyYW5nZS5wZWVr
KCkudHlwZSgpID09IEZ1bmN0aW9uVG9rZW4pIHsKKyAgICAgICAgQ1NTVmFsdWVJRCBpZCA9IHJh
bmdlLnBlZWsoKS5mdW5jdGlvbklkKCk7CisgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtp
dEltYWdlU2V0KQorICAgICAgICAgICAgcmV0dXJuIGNvbnN1bWVJbWFnZVNldChyYW5nZSwgY29u
dGV4dCk7CisgICAgICAgIGlmIChnZW5lcmF0ZWRJbWFnZSA9PSBDb25zdW1lR2VuZXJhdGVkSW1h
Z2U6OkFsbG93ICYmIGlzR2VuZXJhdGVkSW1hZ2UoaWQpKQorICAgICAgICAgICAgcmV0dXJuIGNv
bnN1bWVHZW5lcmF0ZWRJbWFnZShyYW5nZSwgY29udGV4dCk7CisgICAgfQorICAgIHJldHVybiBu
dWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMKKyov
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIxIEBACisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQ2hy
b21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8v
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworCisjaWZuZGVmIENTU1Byb3BlcnR5UGFyc2VySGVscGVy
c19oCisjZGVmaW5lIENTU1Byb3BlcnR5UGFyc2VySGVscGVyc19oCisKKy8vIEZJWE1FLU5FV1BB
UlNFUiAjaW5jbHVkZSAiQ1NTQ3VzdG9tSWRlbnRWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1BhcnNl
ck1vZGUuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJhbmdlLmgiCisjaW5jbHVkZSAiQ1NT
UHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRlICJMZW5ndGguaCIgLy8gRm9yIFZhbHVlUmFuZ2UK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDU1NTdHJpbmdWYWx1ZTsKK2NsYXNzIENT
U1VSSVZhbHVlOworY2xhc3MgQ1NTVmFsdWVQYWlyOworCisvLyBXaGVuIHRoZXNlIGZ1bmN0aW9u
cyBhcmUgc3VjY2Vzc2Z1bCwgdGhleSB3aWxsIGNvbnN1bWUgYWxsIHRoZSByZWxldmFudAorLy8g
dG9rZW5zIGZyb20gdGhlIHJhbmdlIGFuZCBhbHNvIGNvbnN1bWUgYW55IHdoaXRlc3BhY2Ugd2hp
Y2ggZm9sbG93cy4gV2hlbgorLy8gdGhlIHN0YXJ0IG9mIHRoZSByYW5nZSBkb2Vzbid0IG1hdGNo
IHRoZSB0eXBlIHdlJ3JlIGxvb2tpbmcgZm9yLCB0aGUgcmFuZ2UKKy8vIHdpbGwgbm90IGJlIG1v
ZGlmaWVkLgorbmFtZXNwYWNlIENTU1Byb3BlcnR5UGFyc2VySGVscGVycyB7CisKKy8vIFRPRE8o
dGltbG9oKTogVGhlc2Ugc2hvdWxkIHByb2JhYmx5IGp1c3QgYmUgY29uc3VtZUNvbW1hIGFuZCBj
b25zdW1lU2xhc2guCitib29sIGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYpOworYm9vbCBjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKENT
U1BhcnNlclRva2VuUmFuZ2UmKTsKKy8vIGNvbnN1bWVGdW5jdGlvbiBleHBlY3RzIHRoZSByYW5n
ZSBzdGFydHMgd2l0aCBhIEZ1bmN0aW9uVG9rZW4uCitDU1NQYXJzZXJUb2tlblJhbmdlIGNvbnN1
bWVGdW5jdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJik7CisKK2VudW0gY2xhc3MgVW5pdGxlc3NR
dWlyayB7CisgICAgQWxsb3csCisgICAgRm9yYmlkCit9OworCitDU1NQcmltaXRpdmVWYWx1ZSog
Y29uc3VtZUludGVnZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGRvdWJsZSBtaW5pbXVtVmFsdWUg
PSAtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSk7CitDU1NQcmltaXRpdmVWYWx1
ZSogY29uc3VtZVBvc2l0aXZlSW50ZWdlcihDU1NQYXJzZXJUb2tlblJhbmdlJik7Citib29sIGNv
bnN1bWVOdW1iZXJSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGRvdWJsZSYgcmVzdWx0KTsKK0NT
U1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lTnVtYmVyKENTU1BhcnNlclRva2VuUmFuZ2UmLCBWYWx1
ZVJhbmdlKTsKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lTGVuZ3RoKENTU1BhcnNlclRva2Vu
UmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlLCBVbml0bGVzc1F1aXJrID0gVW5pdGxl
c3NRdWlyazo6Rm9yYmlkKTsKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lUGVyY2VudChDU1NQ
YXJzZXJUb2tlblJhbmdlJiwgVmFsdWVSYW5nZSk7CitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3Vt
ZUxlbmd0aE9yUGVyY2VudChDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVmFs
dWVSYW5nZSwgVW5pdGxlc3NRdWlyayA9IFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CitDU1NQcmlt
aXRpdmVWYWx1ZSogY29uc3VtZUFuZ2xlKENTU1BhcnNlclRva2VuUmFuZ2UmKTsKK0NTU1ByaW1p
dGl2ZVZhbHVlKiBjb25zdW1lVGltZShDU1NQYXJzZXJUb2tlblJhbmdlJiwgVmFsdWVSYW5nZSk7
CisKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lSWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYp
OworQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVJZGVudFJhbmdlKENTU1BhcnNlclRva2VuUmFu
Z2UmLCBDU1NWYWx1ZUlEIGxvd2VyLCBDU1NWYWx1ZUlEIHVwcGVyKTsKK3RlbXBsYXRlPENTU1Zh
bHVlSUQsIENTU1ZhbHVlSUQuLi4+IGlubGluZSBib29sIGlkZW50TWF0Y2hlcyhDU1NWYWx1ZUlE
IGlkKTsKK3RlbXBsYXRlPENTU1ZhbHVlSUQuLi4gYWxsb3dlZElkZW50cz4gQ1NTUHJpbWl0aXZl
VmFsdWUqIGNvbnN1bWVJZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJik7CisKKy8vIEZJWE1FLU5F
V1BBUlNFUiBDU1NDdXN0b21JZGVudFZhbHVlKiBjb25zdW1lQ3VzdG9tSWRlbnQoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYpOworQ1NTU3RyaW5nVmFsdWUqIGNvbnN1bWVTdHJpbmcoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYpOworU3RyaW5nVmlldyBjb25zdW1lVXJsQXNTdHJpbmdWaWV3KENTU1BhcnNlclRv
a2VuUmFuZ2UmKTsKK0NTU1VSSVZhbHVlKiBjb25zdW1lVXJsKENTU1BhcnNlclRva2VuUmFuZ2Um
KTsKKworQ1NTVmFsdWUqIGNvbnN1bWVDb2xvcihDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFy
c2VyTW9kZSwgYm9vbCBhY2NlcHRRdWlya3lDb2xvcnMgPSBmYWxzZSk7CisKK0NTU1ZhbHVlUGFp
ciogY29uc3VtZVBvc2l0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBV
bml0bGVzc1F1aXJrKTsKK2Jvb2wgY29uc3VtZVBvc2l0aW9uKENTU1BhcnNlclRva2VuUmFuZ2Um
LCBDU1NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrLCBDU1NWYWx1ZSomIHJlc3VsdFgsIENTU1Zh
bHVlKiYgcmVzdWx0WSk7Citib29sIGNvbnN1bWVPbmVPclR3b1ZhbHVlZFBvc2l0aW9uKENTU1Bh
cnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrLCBDU1NWYWx1ZSom
IHJlc3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSk7CisKK2VudW0gY2xhc3MgQ29uc3VtZUdlbmVy
YXRlZEltYWdlIHsKKyAgICBBbGxvdywKKyAgICBGb3JiaWQKK307CisKK0NTU1ZhbHVlKiBjb25z
dW1lSW1hZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlckNvbnRleHQsIENvbnN1bWVH
ZW5lcmF0ZWRJbWFnZSA9IENvbnN1bWVHZW5lcmF0ZWRJbWFnZTo6QWxsb3cpOworQ1NTVmFsdWUq
IGNvbnN1bWVJbWFnZU9yTm9uZShDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyQ29udGV4
dCk7CisKKy8vIFRlbXBsYXRlIGltcGxlbWVudGF0aW9ucyBhcmUgYXQgdGhlIGJvdHRvbSBvZiB0
aGUgZmlsZSBmb3IgcmVhZGFiaWxpdHkuCisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIGVtcHR5QmFz
ZUNhc2U+IGlubGluZSBib29sIGlkZW50TWF0Y2hlcyhDU1NWYWx1ZUlEKSB7IHJldHVybiBmYWxz
ZTsgfQordGVtcGxhdGU8Q1NTVmFsdWVJRCBoZWFkLCBDU1NWYWx1ZUlELi4uIHRhaWw+IGlubGlu
ZSBib29sIGlkZW50TWF0Y2hlcyhDU1NWYWx1ZUlEIGlkKQoreworICAgIHJldHVybiBpZCA9PSBo
ZWFkIHx8IGlkZW50TWF0Y2hlczx0YWlsLi4uPihpZCk7Cit9CisKKy8vIEZJWE1FLU5FV1BBUlNF
UiAtIGNvbnZlcnRlZCB0byBhIFJlZlB0ciByZXR1cm4gdHlwZSBmcm9tIGEgcmF3IHB0ci4KK3Rl
bXBsYXRlPENTU1ZhbHVlSUQuLi4gbmFtZXM+IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29u
c3VtZUlkZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5w
ZWVrKCkudHlwZSgpICE9IElkZW50VG9rZW4gfHwgIWlkZW50TWF0Y2hlczxuYW1lcy4uLj4ocmFu
Z2UucGVlaygpLmlkKCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1do
aXRlc3BhY2UoKS5pZCgpKTsKK30KKworc3RhdGljIGlubGluZSBib29sIGlzQ1NTV2lkZUtleXdv
cmQoY29uc3QgQ1NTVmFsdWVJRCYgaWQpCit7CisgICAgcmV0dXJuIGlkID09IENTU1ZhbHVlSW5p
dGlhbCB8fCBpZCA9PSBDU1NWYWx1ZUluaGVyaXQgfHwgaWQgPT0gQ1NTVmFsdWVVbnNldCB8fCBp
ZCA9PSBDU1NWYWx1ZURlZmF1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIENTU1Byb3BlcnR5UGFy
c2VySGVscGVycworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnNfaApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NU
b2tlbml6ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
VG9rZW5pemVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1Rva2VuaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4ODggQEAKKy8vIENv
cHlyaWdodCAyMDE1IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlz
dHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisv
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQ1NTVG9rZW5pemVyLmgiCisKKyNpbmNsdWRlICJDU1NQYXJzZXJJ
ZGlvbXMuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaCIKKyNpbmNsdWRl
ICJDU1NQYXJzZXJUb2tlblJhbmdlLmgiCisjaW5jbHVkZSAiQ1NTVG9rZW5pemVySW5wdXRTdHJl
YW0uaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCisjaW5jbHVkZSA8d3RmL3VuaWNv
ZGUvQ2hhcmFjdGVyTmFtZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDU1NUb2tlbml6
ZXI6OlNjb3BlOjpTY29wZShjb25zdCBTdHJpbmcmIHN0cmluZykKKyAgICA6IG1fc3RyaW5nKHN0
cmluZykKK3sKKyAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIHNwZWMsIHdlIHNob3VsZCBwZXJmb3Jt
IHByZXByb2Nlc3NpbmcgaGVyZS4KKyAgICAvLyBTZWU6IGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dn
L2Nzcy1zeW50YXgvI2lucHV0LXByZXByb2Nlc3NpbmcKKyAgICAvLworICAgIC8vIEhvd2V2ZXIs
IHdlIGNhbiBza2lwIHRoaXMgc3RlcCBzaW5jZToKKyAgICAvLyAqIFdlJ3JlIHVzaW5nIEhUTUwg
c3BhY2VzICh3aGljaCBhY2NlcHQgXHIgYW5kIFxmIGFzIGEgdmFsaWQgd2hpdGUgc3BhY2UpCisg
ICAgLy8gKiBEbyBub3QgY291bnQgd2hpdGUgc3BhY2VzCisgICAgLy8gKiBDU1NUb2tlbml6ZXJJ
bnB1dFN0cmVhbTo6bmV4dElucHV0Q2hhcigpIHJlcGxhY2VzIE5VTExzIGZvciByZXBsYWNlbWVu
dCBjaGFyYWN0ZXJzCisKKyAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgLy8gVG8gYXZvaWQgcmVzaXppbmcgd2UgZXJyIG9uIHRoZSBzaWRlIG9mIHJlc2Vy
dmluZyB0b28gbXVjaCBzcGFjZS4KKyAgICAvLyBNb3N0IHN0cmluZ3Mgd2UgdG9rZW5pemUgaGF2
ZSBhYm91dCAzLjUgdG8gNSBjaGFyYWN0ZXJzIHBlciB0b2tlbi4KKyAgICBtX3Rva2Vucy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KHN0cmluZy5sZW5ndGgoKSAvIDMpOworCisgICAgQ1NTVG9rZW5p
emVySW5wdXRTdHJlYW0gaW5wdXQoc3RyaW5nKTsKKyAgICBDU1NUb2tlbml6ZXIgdG9rZW5pemVy
KGlucHV0LCAqdGhpcyk7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgQ1NTUGFyc2VyVG9r
ZW4gdG9rZW4gPSB0b2tlbml6ZXIubmV4dFRva2VuKCk7CisgICAgICAgIGlmICh0b2tlbi50eXBl
KCkgPT0gQ29tbWVudFRva2VuKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICh0
b2tlbi50eXBlKCkgPT0gRU9GVG9rZW4pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1f
dG9rZW5zLmFwcGVuZCh0b2tlbik7CisgICAgfQorfQorCitDU1NUb2tlbml6ZXI6OlNjb3BlOjpT
Y29wZShjb25zdCBTdHJpbmcmIHN0cmluZywgQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyJiB3cmFw
cGVyKQorICAgIDogbV9zdHJpbmcoc3RyaW5nKQoreworICAgIGlmIChzdHJpbmcuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbSBpbnB1dChz
dHJpbmcpOworICAgIENTU1Rva2VuaXplciB0b2tlbml6ZXIoaW5wdXQsICp0aGlzKTsKKworICAg
IHVuc2lnbmVkIG9mZnNldCA9IDA7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgQ1NTUGFy
c2VyVG9rZW4gdG9rZW4gPSB0b2tlbml6ZXIubmV4dFRva2VuKCk7CisgICAgICAgIGlmICh0b2tl
bi50eXBlKCkgPT0gRU9GVG9rZW4pCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKHRv
a2VuLnR5cGUoKSA9PSBDb21tZW50VG9rZW4pCisgICAgICAgICAgICB3cmFwcGVyLmFkZENvbW1l
bnQob2Zmc2V0LCBpbnB1dC5vZmZzZXQoKSwgbV90b2tlbnMuc2l6ZSgpKTsKKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBtX3Rva2Vucy5hcHBlbmQodG9rZW4pOworICAgICAgICAgICAgd3Jh
cHBlci5hZGRUb2tlbihvZmZzZXQpOworICAgICAgICB9CisgICAgICAgIG9mZnNldCA9IGlucHV0
Lm9mZnNldCgpOworICAgIH0KKworICAgIHdyYXBwZXIuYWRkVG9rZW4ob2Zmc2V0KTsKKyAgICB3
cmFwcGVyLmZpbmFsaXplQ29uc3RydWN0aW9uKG1fdG9rZW5zLmJlZ2luKCkpOworfQorCitDU1NQ
YXJzZXJUb2tlblJhbmdlIENTU1Rva2VuaXplcjo6U2NvcGU6OnRva2VuUmFuZ2UoKQoreworICAg
IHJldHVybiBtX3Rva2VuczsKK30KKwordW5zaWduZWQgQ1NTVG9rZW5pemVyOjpTY29wZTo6dG9r
ZW5Db3VudCgpCit7CisgICAgcmV0dXJuIG1fdG9rZW5zLnNpemUoKTsKK30KKworc3RhdGljIGJv
b2wgaXNOZXdMaW5lKFVDaGFyIGNjKQoreworICAgIC8vIFdlIGNoZWNrIFxyIGFuZCBcZiBoZXJl
LCBzaW5jZSB3ZSBoYXZlIG5vIHByZXByb2Nlc3Npbmcgc3RhZ2UKKyAgICByZXR1cm4gKGNjID09
ICdccicgfHwgY2MgPT0gJ1xuJyB8fCBjYyA9PSAnXGYnKTsKK30KKworLy8gaHR0cDovL2Rldi53
My5vcmcvY3Nzd2cvY3NzLXN5bnRheC8jY2hlY2staWYtdHdvLWNvZGUtcG9pbnRzLWFyZS1hLXZh
bGlkLWVzY2FwZQorc3RhdGljIGJvb2wgdHdvQ2hhcnNBcmVWYWxpZEVzY2FwZShVQ2hhciBmaXJz
dCwgVUNoYXIgc2Vjb25kKQoreworICAgIHJldHVybiBmaXJzdCA9PSAnXFwnICYmICFpc05ld0xp
bmUoc2Vjb25kKTsKK30KKworQ1NTVG9rZW5pemVyOjpDU1NUb2tlbml6ZXIoQ1NTVG9rZW5pemVy
SW5wdXRTdHJlYW0mIGlucHV0U3RyZWFtLCBTY29wZSYgc2NvcGUpCisgICAgOiBtX2lucHV0KGlu
cHV0U3RyZWFtKQorICAgICwgbV9zY29wZShzY29wZSkKK3sKK30KKwordm9pZCBDU1NUb2tlbml6
ZXI6OnJlY29uc3VtZShVQ2hhciBjKQoreworICAgIG1faW5wdXQucHVzaEJhY2soYyk7Cit9CisK
K1VDaGFyIENTU1Rva2VuaXplcjo6Y29uc3VtZSgpCit7CisgICAgVUNoYXIgY3VycmVudCA9IG1f
aW5wdXQubmV4dElucHV0Q2hhcigpOworICAgIG1faW5wdXQuYWR2YW5jZSgpOworICAgIHJldHVy
biBjdXJyZW50OworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OndoaXRlU3BhY2Uo
VUNoYXIgLypjYyovKQoreworICAgIG1faW5wdXQuYWR2YW5jZVVudGlsTm9uV2hpdGVzcGFjZSgp
OworICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihXaGl0ZXNwYWNlVG9rZW4pOworfQorCitDU1NQ
YXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmJsb2NrU3RhcnQoQ1NTUGFyc2VyVG9rZW5UeXBlIHR5
cGUpCit7CisgICAgbV9ibG9ja1N0YWNrLmFwcGVuZCh0eXBlKTsKKyAgICByZXR1cm4gQ1NTUGFy
c2VyVG9rZW4odHlwZSwgQ1NTUGFyc2VyVG9rZW46OkJsb2NrU3RhcnQpOworfQorCitDU1NQYXJz
ZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmJsb2NrU3RhcnQoQ1NTUGFyc2VyVG9rZW5UeXBlIGJsb2Nr
VHlwZSwgQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIFN0cmluZ1ZpZXcgbmFtZSkKK3sKKyAgICBt
X2Jsb2NrU3RhY2suYXBwZW5kKGJsb2NrVHlwZSk7CisgICAgcmV0dXJuIENTU1BhcnNlclRva2Vu
KHR5cGUsIG5hbWUsIENTU1BhcnNlclRva2VuOjpCbG9ja1N0YXJ0KTsKK30KKworQ1NTUGFyc2Vy
VG9rZW4gQ1NTVG9rZW5pemVyOjpibG9ja0VuZChDU1NQYXJzZXJUb2tlblR5cGUgdHlwZSwgQ1NT
UGFyc2VyVG9rZW5UeXBlIHN0YXJ0VHlwZSkKK3sKKyAgICBpZiAoIW1fYmxvY2tTdGFjay5pc0Vt
cHR5KCkgJiYgbV9ibG9ja1N0YWNrLmxhc3QoKSA9PSBzdGFydFR5cGUpIHsKKyAgICAgICAgbV9i
bG9ja1N0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKHR5
cGUsIENTU1BhcnNlclRva2VuOjpCbG9ja0VuZCk7CisgICAgfQorICAgIHJldHVybiBDU1NQYXJz
ZXJUb2tlbih0eXBlKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpsZWZ0UGFy
ZW50aGVzaXMoVUNoYXIgLypjYyovKQoreworICAgIHJldHVybiBibG9ja1N0YXJ0KExlZnRQYXJl
bnRoZXNpc1Rva2VuKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpyaWdodFBh
cmVudGhlc2lzKFVDaGFyIC8qY2MqLykKK3sKKyAgICByZXR1cm4gYmxvY2tFbmQoUmlnaHRQYXJl
bnRoZXNpc1Rva2VuLCBMZWZ0UGFyZW50aGVzaXNUb2tlbik7Cit9CisKK0NTU1BhcnNlclRva2Vu
IENTU1Rva2VuaXplcjo6bGVmdEJyYWNrZXQoVUNoYXIgLypjYyovKQoreworICAgIHJldHVybiBi
bG9ja1N0YXJ0KExlZnRCcmFja2V0VG9rZW4pOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tl
bml6ZXI6OnJpZ2h0QnJhY2tldChVQ2hhciAvKmNjKi8pCit7CisgICAgcmV0dXJuIGJsb2NrRW5k
KFJpZ2h0QnJhY2tldFRva2VuLCBMZWZ0QnJhY2tldFRva2VuKTsKK30KKworQ1NTUGFyc2VyVG9r
ZW4gQ1NTVG9rZW5pemVyOjpsZWZ0QnJhY2UoVUNoYXIgLypjYyovKQoreworICAgIHJldHVybiBi
bG9ja1N0YXJ0KExlZnRCcmFjZVRva2VuKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5p
emVyOjpyaWdodEJyYWNlKFVDaGFyIC8qY2MqLykKK3sKKyAgICByZXR1cm4gYmxvY2tFbmQoUmln
aHRCcmFjZVRva2VuLCBMZWZ0QnJhY2VUb2tlbik7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rv
a2VuaXplcjo6cGx1c09yRnVsbFN0b3AoVUNoYXIgY2MpCit7CisgICAgaWYgKG5leHRDaGFyc0Fy
ZU51bWJlcihjYykpIHsKKyAgICAgICAgcmVjb25zdW1lKGNjKTsKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVOdW1lcmljVG9rZW4oKTsKKyAgICB9CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKERl
bGltaXRlclRva2VuLCBjYyk7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6YXN0
ZXJpc2soVUNoYXIgY2MpCit7CisgICAgQVNTRVJUX1VOVVNFRChjYywgY2MgPT0gJyonKTsKKyAg
ICBpZiAoY29uc3VtZUlmTmV4dCgnPScpKQorICAgICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4o
U3Vic3RyaW5nTWF0Y2hUb2tlbik7CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKERlbGltaXRl
clRva2VuLCAnKicpOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6Omxlc3NUaGFu
KFVDaGFyIGNjKQoreworICAgIEFTU0VSVF9VTlVTRUQoY2MsIGNjID09ICc8Jyk7CisgICAgaWYg
KG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSA9PSAnIScKKyAgICAgICAgJiYgbV9p
bnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDEpID09ICctJworICAgICAgICAmJiBtX2lucHV0
LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMikgPT0gJy0nKSB7CisgICAgICAgIG1faW5wdXQuYWR2
YW5jZSgzKTsKKyAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKENET1Rva2VuKTsKKyAgICB9
CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKERlbGltaXRlclRva2VuLCAnPCcpOworfQorCitD
U1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmNvbW1hKFVDaGFyIC8qY2MqLykKK3sKKyAgICBy
ZXR1cm4gQ1NTUGFyc2VyVG9rZW4oQ29tbWFUb2tlbik7Cit9CisKK0NTU1BhcnNlclRva2VuIENT
U1Rva2VuaXplcjo6aHlwaGVuTWludXMoVUNoYXIgY2MpCit7CisgICAgaWYgKG5leHRDaGFyc0Fy
ZU51bWJlcihjYykpIHsKKyAgICAgICAgcmVjb25zdW1lKGNjKTsKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVOdW1lcmljVG9rZW4oKTsKKyAgICB9CisgICAgaWYgKG1faW5wdXQucGVla1dpdGhvdXRS
ZXBsYWNlbWVudCgwKSA9PSAnLScKKyAgICAgICAgJiYgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxh
Y2VtZW50KDEpID09ICc+JykgeworICAgICAgICBtX2lucHV0LmFkdmFuY2UoMik7CisgICAgICAg
IHJldHVybiBDU1NQYXJzZXJUb2tlbihDRENUb2tlbik7CisgICAgfQorICAgIGlmIChuZXh0Q2hh
cnNBcmVJZGVudGlmaWVyKGNjKSkgeworICAgICAgICByZWNvbnN1bWUoY2MpOworICAgICAgICBy
ZXR1cm4gY29uc3VtZUlkZW50TGlrZVRva2VuKCk7CisgICAgfQorICAgIHJldHVybiBDU1NQYXJz
ZXJUb2tlbihEZWxpbWl0ZXJUb2tlbiwgY2MpOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tl
bml6ZXI6OnNvbGlkdXMoVUNoYXIgY2MpCit7CisgICAgaWYgKGNvbnN1bWVJZk5leHQoJyonKSkg
eworICAgICAgICAvLyBUaGVzZSBnZXQgaWdub3JlZCwgYnV0IHdlIG5lZWQgYSB2YWx1ZSB0byBy
ZXR1cm4uCisgICAgICAgIGNvbnN1bWVVbnRpbENvbW1lbnRFbmRGb3VuZCgpOworICAgICAgICBy
ZXR1cm4gQ1NTUGFyc2VyVG9rZW4oQ29tbWVudFRva2VuKTsKKyAgICB9CisKKyAgICByZXR1cm4g
Q1NTUGFyc2VyVG9rZW4oRGVsaW1pdGVyVG9rZW4sIGNjKTsKK30KKworQ1NTUGFyc2VyVG9rZW4g
Q1NTVG9rZW5pemVyOjpjb2xvbihVQ2hhciAvKmNjKi8pCit7CisgICAgcmV0dXJuIENTU1BhcnNl
clRva2VuKENvbG9uVG9rZW4pOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OnNl
bWlDb2xvbihVQ2hhciAvKmNjKi8pCit7CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKFNlbWlj
b2xvblRva2VuKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpoYXNoKFVDaGFy
IGNjKQoreworICAgIFVDaGFyIG5leHRDaGFyID0gbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2Vt
ZW50KDApOworICAgIGlmIChpc05hbWVDb2RlUG9pbnQobmV4dENoYXIpIHx8IHR3b0NoYXJzQXJl
VmFsaWRFc2NhcGUobmV4dENoYXIsIG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgxKSkp
IHsKKyAgICAgICAgSGFzaFRva2VuVHlwZSB0eXBlID0gbmV4dENoYXJzQXJlSWRlbnRpZmllcigp
ID8gSGFzaFRva2VuSWQgOiBIYXNoVG9rZW5VbnJlc3RyaWN0ZWQ7CisgICAgICAgIHJldHVybiBD
U1NQYXJzZXJUb2tlbih0eXBlLCBjb25zdW1lTmFtZSgpKTsKKyAgICB9CisKKyAgICByZXR1cm4g
Q1NTUGFyc2VyVG9rZW4oRGVsaW1pdGVyVG9rZW4sIGNjKTsKK30KKworQ1NTUGFyc2VyVG9rZW4g
Q1NTVG9rZW5pemVyOjpjaXJjdW1mbGV4QWNjZW50KFVDaGFyIGNjKQoreworICAgIEFTU0VSVF9V
TlVTRUQoY2MsIGNjID09ICdeJyk7CisgICAgaWYgKGNvbnN1bWVJZk5leHQoJz0nKSkKKyAgICAg
ICAgcmV0dXJuIENTU1BhcnNlclRva2VuKFByZWZpeE1hdGNoVG9rZW4pOworICAgIHJldHVybiBD
U1NQYXJzZXJUb2tlbihEZWxpbWl0ZXJUb2tlbiwgJ14nKTsKK30KKworQ1NTUGFyc2VyVG9rZW4g
Q1NTVG9rZW5pemVyOjpkb2xsYXJTaWduKFVDaGFyIGNjKQoreworICAgIEFTU0VSVF9VTlVTRUQo
Y2MsIGNjID09ICckJyk7CisgICAgaWYgKGNvbnN1bWVJZk5leHQoJz0nKSkKKyAgICAgICAgcmV0
dXJuIENTU1BhcnNlclRva2VuKFN1ZmZpeE1hdGNoVG9rZW4pOworICAgIHJldHVybiBDU1NQYXJz
ZXJUb2tlbihEZWxpbWl0ZXJUb2tlbiwgJyQnKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9r
ZW5pemVyOjp2ZXJ0aWNhbExpbmUoVUNoYXIgY2MpCit7CisgICAgQVNTRVJUX1VOVVNFRChjYywg
Y2MgPT0gJ3wnKTsKKyAgICBpZiAoY29uc3VtZUlmTmV4dCgnPScpKQorICAgICAgICByZXR1cm4g
Q1NTUGFyc2VyVG9rZW4oRGFzaE1hdGNoVG9rZW4pOworICAgIGlmIChjb25zdW1lSWZOZXh0KCd8
JykpCisgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihDb2x1bW5Ub2tlbik7CisgICAgcmV0
dXJuIENTU1BhcnNlclRva2VuKERlbGltaXRlclRva2VuLCAnfCcpOworfQorCitDU1NQYXJzZXJU
b2tlbiBDU1NUb2tlbml6ZXI6OnRpbGRlKFVDaGFyIGNjKQoreworICAgIEFTU0VSVF9VTlVTRUQo
Y2MsIGNjID09ICd+Jyk7CisgICAgaWYgKGNvbnN1bWVJZk5leHQoJz0nKSkKKyAgICAgICAgcmV0
dXJuIENTU1BhcnNlclRva2VuKEluY2x1ZGVNYXRjaFRva2VuKTsKKyAgICByZXR1cm4gQ1NTUGFy
c2VyVG9rZW4oRGVsaW1pdGVyVG9rZW4sICd+Jyk7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rv
a2VuaXplcjo6Y29tbWVyY2lhbEF0KFVDaGFyIGNjKQoreworICAgIEFTU0VSVF9VTlVTRUQoY2Ms
IGNjID09ICdAJyk7CisgICAgaWYgKG5leHRDaGFyc0FyZUlkZW50aWZpZXIoKSkKKyAgICAgICAg
cmV0dXJuIENTU1BhcnNlclRva2VuKEF0S2V5d29yZFRva2VuLCBjb25zdW1lTmFtZSgpKTsKKyAg
ICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oRGVsaW1pdGVyVG9rZW4sICdAJyk7Cit9CisKK0NTU1Bh
cnNlclRva2VuIENTU1Rva2VuaXplcjo6cmV2ZXJzZVNvbGlkdXMoVUNoYXIgY2MpCit7CisgICAg
aWYgKHR3b0NoYXJzQXJlVmFsaWRFc2NhcGUoY2MsIG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNl
bWVudCgwKSkpIHsKKyAgICAgICAgcmVjb25zdW1lKGNjKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVJZGVudExpa2VUb2tlbigpOworICAgIH0KKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oRGVs
aW1pdGVyVG9rZW4sIGNjKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjphc2Np
aURpZ2l0KFVDaGFyIGNjKQoreworICAgIHJlY29uc3VtZShjYyk7CisgICAgcmV0dXJuIGNvbnN1
bWVOdW1lcmljVG9rZW4oKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpsZXR0
ZXJVKFVDaGFyIGNjKQoreworICAgIGlmIChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQo
MCkgPT0gJysnCisgICAgICAgICYmIChpc0FTQ0lJSGV4RGlnaXQobV9pbnB1dC5wZWVrV2l0aG91
dFJlcGxhY2VtZW50KDEpKQorICAgICAgICAgICAgfHwgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxh
Y2VtZW50KDEpID09ICc/JykpIHsKKyAgICAgICAgbV9pbnB1dC5hZHZhbmNlKCk7CisgICAgICAg
IHJldHVybiBjb25zdW1lVW5pY29kZVJhbmdlKCk7CisgICAgfQorICAgIHJlY29uc3VtZShjYyk7
CisgICAgcmV0dXJuIGNvbnN1bWVJZGVudExpa2VUb2tlbigpOworfQorCitDU1NQYXJzZXJUb2tl
biBDU1NUb2tlbml6ZXI6Om5hbWVTdGFydChVQ2hhciBjYykKK3sKKyAgICByZWNvbnN1bWUoY2Mp
OworICAgIHJldHVybiBjb25zdW1lSWRlbnRMaWtlVG9rZW4oKTsKK30KKworQ1NTUGFyc2VyVG9r
ZW4gQ1NTVG9rZW5pemVyOjpzdHJpbmdTdGFydChVQ2hhciBjYykKK3sKKyAgICByZXR1cm4gY29u
c3VtZVN0cmluZ1Rva2VuVW50aWwoY2MpOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6
ZXI6OmVuZE9mRmlsZShVQ2hhciAvKmNjKi8pCit7CisgICAgcmV0dXJuIENTU1BhcnNlclRva2Vu
KEVPRlRva2VuKTsKK30KKworY29uc3QgQ1NTVG9rZW5pemVyOjpDb2RlUG9pbnQgQ1NTVG9rZW5p
emVyOjpjb2RlUG9pbnRzWzEyOF0gPSB7CisgICAgJkNTU1Rva2VuaXplcjo6ZW5kT2ZGaWxlLAor
ICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisg
ICAgMCwKKyAgICAmQ1NTVG9rZW5pemVyOjp3aGl0ZVNwYWNlLAorICAgICZDU1NUb2tlbml6ZXI6
OndoaXRlU3BhY2UsCisgICAgMCwKKyAgICAmQ1NTVG9rZW5pemVyOjp3aGl0ZVNwYWNlLAorICAg
ICZDU1NUb2tlbml6ZXI6OndoaXRlU3BhY2UsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAg
MCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAw
LAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAs
CisgICAgJkNTU1Rva2VuaXplcjo6d2hpdGVTcGFjZSwKKyAgICAwLAorICAgICZDU1NUb2tlbml6
ZXI6OnN0cmluZ1N0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Omhhc2gsCisgICAgJkNTU1Rva2Vu
aXplcjo6ZG9sbGFyU2lnbiwKKyAgICAwLAorICAgIDAsCisgICAgJkNTU1Rva2VuaXplcjo6c3Ry
aW5nU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bGVmdFBhcmVudGhlc2lzLAorICAgICZDU1NU
b2tlbml6ZXI6OnJpZ2h0UGFyZW50aGVzaXMsCisgICAgJkNTU1Rva2VuaXplcjo6YXN0ZXJpc2ss
CisgICAgJkNTU1Rva2VuaXplcjo6cGx1c09yRnVsbFN0b3AsCisgICAgJkNTU1Rva2VuaXplcjo6
Y29tbWEsCisgICAgJkNTU1Rva2VuaXplcjo6aHlwaGVuTWludXMsCisgICAgJkNTU1Rva2VuaXpl
cjo6cGx1c09yRnVsbFN0b3AsCisgICAgJkNTU1Rva2VuaXplcjo6c29saWR1cywKKyAgICAmQ1NT
VG9rZW5pemVyOjphc2NpaURpZ2l0LAorICAgICZDU1NUb2tlbml6ZXI6OmFzY2lpRGlnaXQsCisg
ICAgJkNTU1Rva2VuaXplcjo6YXNjaWlEaWdpdCwKKyAgICAmQ1NTVG9rZW5pemVyOjphc2NpaURp
Z2l0LAorICAgICZDU1NUb2tlbml6ZXI6OmFzY2lpRGlnaXQsCisgICAgJkNTU1Rva2VuaXplcjo6
YXNjaWlEaWdpdCwKKyAgICAmQ1NTVG9rZW5pemVyOjphc2NpaURpZ2l0LAorICAgICZDU1NUb2tl
bml6ZXI6OmFzY2lpRGlnaXQsCisgICAgJkNTU1Rva2VuaXplcjo6YXNjaWlEaWdpdCwKKyAgICAm
Q1NTVG9rZW5pemVyOjphc2NpaURpZ2l0LAorICAgICZDU1NUb2tlbml6ZXI6OmNvbG9uLAorICAg
ICZDU1NUb2tlbml6ZXI6OnNlbWlDb2xvbiwKKyAgICAmQ1NTVG9rZW5pemVyOjpsZXNzVGhhbiwK
KyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAmQ1NTVG9rZW5pemVyOjpjb21tZXJjaWFsQXQs
CisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVT
dGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6
bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5p
emVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NU
b2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAg
JkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwK
KyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0
YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpu
YW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6
ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rv
a2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAm
Q1NTVG9rZW5pemVyOjpsZXR0ZXJVLAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAg
ICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0
LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1l
U3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bGVmdEJyYWNrZXQsCisgICAgJkNTU1Rva2VuaXpl
cjo6cmV2ZXJzZVNvbGlkdXMsCisgICAgJkNTU1Rva2VuaXplcjo6cmlnaHRCcmFja2V0LAorICAg
ICZDU1NUb2tlbml6ZXI6OmNpcmN1bWZsZXhBY2NlbnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFt
ZVN0YXJ0LAorICAgIDAsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NU
b2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAg
JkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwK
KyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0
YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpu
YW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6
ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rv
a2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAm
Q1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAor
ICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3Rh
cnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5h
bWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpsZXR0ZXJVLAorICAgICZDU1NUb2tlbml6ZXI6
Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2Vu
aXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NT
VG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bGVmdEJyYWNlLAorICAg
ICZDU1NUb2tlbml6ZXI6OnZlcnRpY2FsTGluZSwKKyAgICAmQ1NTVG9rZW5pemVyOjpyaWdodEJy
YWNlLAorICAgICZDU1NUb2tlbml6ZXI6OnRpbGRlLAorICAgIDAsCit9OworI2lmICFBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTl9ESVNBQkxFRAorY29uc3QgdW5zaWduZWQgY29kZVBv
aW50c051bWJlciA9IDEyODsKKyNlbmRpZgorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6
Om5leHRUb2tlbigpCit7CisgICAgLy8gVW5saWtlIHRoZSBIVE1MVG9rZW5pemVyLCB0aGUgQ1NT
IFN5bnRheCBzcGVjIGlzIHdyaXR0ZW4KKyAgICAvLyBhcyBhIHN0YXRlbGVzcywgKGZpeGVkLXNp
emUpIGxvb2stYWhlYWQgdG9rZW5pemVyLgorICAgIC8vIFdlIGNvdWxkIG1vdmUgdG8gdGhlIHN0
YXRlZnVsIG1vZGVsIGFuZCBpbnN0ZWFkIGNyZWF0ZQorICAgIC8vIHN0YXRlcyBmb3IgYWxsIHRo
ZSAibmV4dCAzIGNvZGVwb2ludHMgYXJlIFgiIGNhc2VzLgorICAgIC8vIFN0YXRlLW1hY2hpbmUg
dG9rZW5pemVycyBhcmUgZWFzaWVyIHRvIHdyaXRlIHRvIGhhbmRsZQorICAgIC8vIGluY3JlbWVu
dGFsIHRva2VuaXphdGlvbiBvZiBwYXJ0aWFsIHNvdXJjZXMuCisgICAgLy8gSG93ZXZlciwgZm9y
IG5vdyB3ZSBmb2xsb3cgdGhlIHNwZWMgZXhhY3RseS4KKyAgICBVQ2hhciBjYyA9IGNvbnN1bWUo
KTsKKyAgICBDb2RlUG9pbnQgY29kZVBvaW50RnVuYyA9IDA7CisKKyAgICBpZiAoaXNBU0NJSShj
YykpIHsKKyAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY2MgPCBjb2Rl
UG9pbnRzTnVtYmVyKTsKKyAgICAgICAgY29kZVBvaW50RnVuYyA9IGNvZGVQb2ludHNbY2NdOwor
ICAgIH0gZWxzZQorICAgICAgICBjb2RlUG9pbnRGdW5jID0gJkNTU1Rva2VuaXplcjo6bmFtZVN0
YXJ0OworCisgICAgaWYgKGNvZGVQb2ludEZ1bmMpCisgICAgICAgIHJldHVybiAoKHRoaXMpLT4q
KGNvZGVQb2ludEZ1bmMpKShjYyk7CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKERlbGltaXRl
clRva2VuLCBjYyk7Cit9CisKKy8vIFRoaXMgbWV0aG9kIG1lcmdlcyB0aGUgZm9sbG93aW5nIHNw
ZWMgc2VjdGlvbnMgZm9yIGVmZmljaWVuY3kKKy8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMt
c3ludGF4LyNjb25zdW1lLWEtbnVtYmVyCisvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXN5
bnRheC8jY29udmVydC1hLXN0cmluZy10by1hLW51bWJlcgorQ1NTUGFyc2VyVG9rZW4gQ1NTVG9r
ZW5pemVyOjpjb25zdW1lTnVtYmVyKCkKK3sKKyAgICBBU1NFUlQobmV4dENoYXJzQXJlTnVtYmVy
KCkpOworCisgICAgTnVtZXJpY1ZhbHVlVHlwZSB0eXBlID0gSW50ZWdlclZhbHVlVHlwZTsKKyAg
ICBOdW1lcmljU2lnbiBzaWduID0gTm9TaWduOworICAgIHVuc2lnbmVkIG51bWJlckxlbmd0aCA9
IDA7CisKKyAgICBVQ2hhciBuZXh0ID0gbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDAp
OworICAgIGlmIChuZXh0ID09ICcrJykgeworICAgICAgICArK251bWJlckxlbmd0aDsKKyAgICAg
ICAgc2lnbiA9IFBsdXNTaWduOworICAgIH0gZWxzZSBpZiAobmV4dCA9PSAnLScpIHsKKyAgICAg
ICAgKytudW1iZXJMZW5ndGg7CisgICAgICAgIHNpZ24gPSBNaW51c1NpZ247CisgICAgfQorCisg
ICAgbnVtYmVyTGVuZ3RoID0gbV9pbnB1dC5za2lwV2hpbGVQcmVkaWNhdGU8aXNBU0NJSURpZ2l0
PihudW1iZXJMZW5ndGgpOworICAgIG5leHQgPSBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1l
bnQobnVtYmVyTGVuZ3RoKTsKKyAgICBpZiAobmV4dCA9PSAnLicgJiYgaXNBU0NJSURpZ2l0KG1f
aW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudChudW1iZXJMZW5ndGggKyAxKSkpIHsKKyAgICAg
ICAgdHlwZSA9IE51bWJlclZhbHVlVHlwZTsKKyAgICAgICAgbnVtYmVyTGVuZ3RoID0gbV9pbnB1
dC5za2lwV2hpbGVQcmVkaWNhdGU8aXNBU0NJSURpZ2l0PihudW1iZXJMZW5ndGggKyAyKTsKKyAg
ICAgICAgbmV4dCA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudChudW1iZXJMZW5ndGgp
OworICAgIH0KKworICAgIGlmIChuZXh0ID09ICdFJyB8fCBuZXh0ID09ICdlJykgeworICAgICAg
ICBuZXh0ID0gbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KG51bWJlckxlbmd0aCArIDEp
OworICAgICAgICBpZiAoaXNBU0NJSURpZ2l0KG5leHQpKSB7CisgICAgICAgICAgICB0eXBlID0g
TnVtYmVyVmFsdWVUeXBlOworICAgICAgICAgICAgbnVtYmVyTGVuZ3RoID0gbV9pbnB1dC5za2lw
V2hpbGVQcmVkaWNhdGU8aXNBU0NJSURpZ2l0PihudW1iZXJMZW5ndGggKyAxKTsKKyAgICAgICAg
fSBlbHNlIGlmICgobmV4dCA9PSAnKycgfHwgbmV4dCA9PSAnLScpICYmIGlzQVNDSUlEaWdpdCht
X2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQobnVtYmVyTGVuZ3RoICsgMikpKSB7CisgICAg
ICAgICAgICB0eXBlID0gTnVtYmVyVmFsdWVUeXBlOworICAgICAgICAgICAgbnVtYmVyTGVuZ3Ro
ID0gbV9pbnB1dC5za2lwV2hpbGVQcmVkaWNhdGU8aXNBU0NJSURpZ2l0PihudW1iZXJMZW5ndGgg
KyAzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGRvdWJsZSB2YWx1ZSA9IG1faW5wdXQuZ2V0
RG91YmxlKDAsIG51bWJlckxlbmd0aCk7CisgICAgbV9pbnB1dC5hZHZhbmNlKG51bWJlckxlbmd0
aCk7CisKKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oTnVtYmVyVG9rZW4sIHZhbHVlLCB0eXBl
LCBzaWduKTsKK30KKworLy8gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1zeW50YXgvI2NvbnN1
bWUtYS1udW1lcmljLXRva2VuCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmNvbnN1bWVO
dW1lcmljVG9rZW4oKQoreworICAgIENTU1BhcnNlclRva2VuIHRva2VuID0gY29uc3VtZU51bWJl
cigpOworICAgIGlmIChuZXh0Q2hhcnNBcmVJZGVudGlmaWVyKCkpCisgICAgICAgIHRva2VuLmNv
bnZlcnRUb0RpbWVuc2lvbldpdGhVbml0KGNvbnN1bWVOYW1lKCkpOworICAgIGVsc2UgaWYgKGNv
bnN1bWVJZk5leHQoJyUnKSkKKyAgICAgICAgdG9rZW4uY29udmVydFRvUGVyY2VudGFnZSgpOwor
ICAgIHJldHVybiB0b2tlbjsKK30KKworLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXN5
bnRheC8jY29uc3VtZS1pZGVudC1saWtlLXRva2VuCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6
ZXI6OmNvbnN1bWVJZGVudExpa2VUb2tlbigpCit7CisgICAgU3RyaW5nVmlldyBuYW1lID0gY29u
c3VtZU5hbWUoKTsKKyAgICBpZiAoY29uc3VtZUlmTmV4dCgnKCcpKSB7CisgICAgICAgIGlmIChl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJ1cmwiKSkgeworICAgICAgICAgICAgLy8gVGhl
IHNwZWMgaXMgc2xpZ2h0bHkgZGlmZmVyZW50IHNvIGFzIHRvIGF2b2lkIGRyb3BwaW5nIHdoaXRl
c3BhY2UKKyAgICAgICAgICAgIC8vIHRva2VucywgYnV0IHRoZXkgd291bGRuJ3QgYmUgdXNlZCBh
bmQgdGhpcyBpcyBlYXNpZXIuCisgICAgICAgICAgICBtX2lucHV0LmFkdmFuY2VVbnRpbE5vbldo
aXRlc3BhY2UoKTsKKyAgICAgICAgICAgIFVDaGFyIG5leHQgPSBtX2lucHV0LnBlZWtXaXRob3V0
UmVwbGFjZW1lbnQoMCk7CisgICAgICAgICAgICBpZiAobmV4dCAhPSAnIicgJiYgbmV4dCAhPSAn
XCcnKQorICAgICAgICAgICAgICAgIHJldHVybiBjb25zdW1lVXJsVG9rZW4oKTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gYmxvY2tTdGFydChMZWZ0UGFyZW50aGVzaXNUb2tlbiwgRnVuY3Rp
b25Ub2tlbiwgbmFtZSk7CisgICAgfQorICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihJZGVudFRv
a2VuLCBuYW1lKTsKK30KKworLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXN5bnRheC8j
Y29uc3VtZS1hLXN0cmluZy10b2tlbgorQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjb25z
dW1lU3RyaW5nVG9rZW5VbnRpbChVQ2hhciBlbmRpbmdDb2RlUG9pbnQpCit7CisgICAgLy8gU3Ry
aW5ncyB3aXRob3V0IGVzY2FwZXMgZ2V0IGhhbmRsZWQgd2l0aG91dCBhbGxvY2F0aW9ucworICAg
IGZvciAodW5zaWduZWQgc2l6ZSA9IDA7IDsgc2l6ZSsrKSB7CisgICAgICAgIFVDaGFyIGNjID0g
bV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KHNpemUpOworICAgICAgICBpZiAoY2MgPT0g
ZW5kaW5nQ29kZVBvaW50KSB7CisgICAgICAgICAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IG1f
aW5wdXQub2Zmc2V0KCk7CisgICAgICAgICAgICBtX2lucHV0LmFkdmFuY2Uoc2l6ZSArIDEpOwor
ICAgICAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKFN0cmluZ1Rva2VuLCBtX2lucHV0LnJh
bmdlQXQoc3RhcnRPZmZzZXQsIHNpemUpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNOZXdM
aW5lKGNjKSkgeworICAgICAgICAgICAgbV9pbnB1dC5hZHZhbmNlKHNpemUpOworICAgICAgICAg
ICAgcmV0dXJuIENTU1BhcnNlclRva2VuKEJhZFN0cmluZ1Rva2VuKTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoY2MgPT0gJ1wwJyB8fCBjYyA9PSAnXFwnKQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgU3RyaW5nQnVpbGRlciBvdXRwdXQ7CisgICAgd2hpbGUgKHRydWUpIHsKKyAg
ICAgICAgVUNoYXIgY2MgPSBjb25zdW1lKCk7CisgICAgICAgIGlmIChjYyA9PSBlbmRpbmdDb2Rl
UG9pbnQgfHwgY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikKKyAgICAgICAgICAgIHJldHVybiBDU1NQ
YXJzZXJUb2tlbihTdHJpbmdUb2tlbiwgcmVnaXN0ZXJTdHJpbmcob3V0cHV0LnRvU3RyaW5nKCkp
KTsKKyAgICAgICAgaWYgKGlzTmV3TGluZShjYykpIHsKKyAgICAgICAgICAgIHJlY29uc3VtZShj
Yyk7CisgICAgICAgICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oQmFkU3RyaW5nVG9rZW4pOwor
ICAgICAgICB9CisgICAgICAgIGlmIChjYyA9PSAnXFwnKSB7CisgICAgICAgICAgICBpZiAobV9p
bnB1dC5uZXh0SW5wdXRDaGFyKCkgPT0ga0VuZE9mRmlsZU1hcmtlcikKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChpc05ld0xpbmUobV9pbnB1dC5wZWVrV2l0aG91
dFJlcGxhY2VtZW50KDApKSkKKyAgICAgICAgICAgICAgICBjb25zdW1lU2luZ2xlV2hpdGVzcGFj
ZUlmTmV4dCgpOyAvLyBUaGlzIGhhbmRsZXMgXHJcbiBmb3IgdXMKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKGNvbnN1bWVFc2NhcGUoKSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZChjYyk7CisgICAgfQorfQorCitDU1NQ
YXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmNvbnN1bWVVbmljb2RlUmFuZ2UoKQoreworICAgIEFT
U0VSVChpc0FTQ0lJSGV4RGlnaXQobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApKSB8
fCBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkgPT0gJz8nKTsKKyAgICBpbnQgbGVu
Z3RoUmVtYWluaW5nID0gNjsKKyAgICBVQ2hhcjMyIHN0YXJ0ID0gMDsKKworICAgIHdoaWxlIChs
ZW5ndGhSZW1haW5pbmcgJiYgaXNBU0NJSUhleERpZ2l0KG1faW5wdXQucGVla1dpdGhvdXRSZXBs
YWNlbWVudCgwKSkpIHsKKyAgICAgICAgc3RhcnQgPSBzdGFydCAqIDE2ICsgdG9BU0NJSUhleFZh
bHVlKGNvbnN1bWUoKSk7CisgICAgICAgIC0tbGVuZ3RoUmVtYWluaW5nOworICAgIH0KKworICAg
IFVDaGFyMzIgZW5kID0gc3RhcnQ7CisgICAgaWYgKGxlbmd0aFJlbWFpbmluZyAmJiBjb25zdW1l
SWZOZXh0KCc/JykpIHsKKyAgICAgICAgZG8geworICAgICAgICAgICAgc3RhcnQgKj0gMTY7Cisg
ICAgICAgICAgICBlbmQgPSBlbmQgKiAxNiArIDB4RjsKKyAgICAgICAgICAgIC0tbGVuZ3RoUmVt
YWluaW5nOworICAgICAgICB9IHdoaWxlIChsZW5ndGhSZW1haW5pbmcgJiYgY29uc3VtZUlmTmV4
dCgnPycpKTsKKyAgICB9IGVsc2UgaWYgKG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgw
KSA9PSAnLScgJiYgaXNBU0NJSUhleERpZ2l0KG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVu
dCgxKSkpIHsKKyAgICAgICAgbV9pbnB1dC5hZHZhbmNlKCk7CisgICAgICAgIGxlbmd0aFJlbWFp
bmluZyA9IDY7CisgICAgICAgIGVuZCA9IDA7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGVu
ZCA9IGVuZCAqIDE2ICsgdG9BU0NJSUhleFZhbHVlKGNvbnN1bWUoKSk7CisgICAgICAgICAgICAt
LWxlbmd0aFJlbWFpbmluZzsKKyAgICAgICAgfSB3aGlsZSAobGVuZ3RoUmVtYWluaW5nICYmIGlz
QVNDSUlIZXhEaWdpdChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkpKTsKKyAgICB9
CisKKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oVW5pY29kZVJhbmdlVG9rZW4sIHN0YXJ0LCBl
bmQpOworfQorCisvLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3Mtc3ludGF4LyNub24tcHJp
bnRhYmxlLWNvZGUtcG9pbnQKK3N0YXRpYyBib29sIGlzTm9uUHJpbnRhYmxlQ29kZVBvaW50KFVD
aGFyIGNjKQoreworICAgIHJldHVybiAoY2MgPj0gJ1wwJyAmJiBjYyA8PSAnXHg4JykgfHwgY2Mg
PT0gJ1x4YicgfHwgKGNjID49ICdceGUnICYmIGNjIDw9ICdceDFmJykgfHwgY2MgPT0gJ1x4N2Yn
OworfQorCisvLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3Mtc3ludGF4LyNjb25zdW1lLXVy
bC10b2tlbgorQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjb25zdW1lVXJsVG9rZW4oKQor
eworICAgIG1faW5wdXQuYWR2YW5jZVVudGlsTm9uV2hpdGVzcGFjZSgpOworCisgICAgLy8gVVJM
IHRva2VucyB3aXRob3V0IGVzY2FwZXMgZ2V0IGhhbmRsZWQgd2l0aG91dCBhbGxvY2F0aW9ucwor
ICAgIGZvciAodW5zaWduZWQgc2l6ZSA9IDA7IDsgc2l6ZSsrKSB7CisgICAgICAgIFVDaGFyIGNj
ID0gbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KHNpemUpOworICAgICAgICBpZiAoY2Mg
PT0gJyknKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IG1faW5wdXQub2Zm
c2V0KCk7CisgICAgICAgICAgICBtX2lucHV0LmFkdmFuY2Uoc2l6ZSArIDEpOworICAgICAgICAg
ICAgcmV0dXJuIENTU1BhcnNlclRva2VuKFVybFRva2VuLCBtX2lucHV0LnJhbmdlQXQoc3RhcnRP
ZmZzZXQsIHNpemUpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2MgPD0gJyAnIHx8IGNjID09
ICdcXCcgfHwgY2MgPT0gJyInIHx8IGNjID09ICdcJycgfHwgY2MgPT0gJygnIHx8IGNjID09ICdc
eDdmJykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIFN0cmluZ0J1aWxkZXIgcmVz
dWx0OworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIFVDaGFyIGNjID0gY29uc3VtZSgpOwor
ICAgICAgICBpZiAoY2MgPT0gJyknIHx8IGNjID09IGtFbmRPZkZpbGVNYXJrZXIpCisgICAgICAg
ICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oVXJsVG9rZW4sIHJlZ2lzdGVyU3RyaW5nKHJlc3Vs
dC50b1N0cmluZygpKSk7CisKKyAgICAgICAgaWYgKGlzSFRNTFNwYWNlKGNjKSkgeworICAgICAg
ICAgICAgbV9pbnB1dC5hZHZhbmNlVW50aWxOb25XaGl0ZXNwYWNlKCk7CisgICAgICAgICAgICBp
ZiAoY29uc3VtZUlmTmV4dCgnKScpIHx8IG1faW5wdXQubmV4dElucHV0Q2hhcigpID09IGtFbmRP
ZkZpbGVNYXJrZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKFVybFRv
a2VuLCByZWdpc3RlclN0cmluZyhyZXN1bHQudG9TdHJpbmcoKSkpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY2MgPT0gJyInIHx8IGNjID09ICdcJycgfHwg
Y2MgPT0gJygnIHx8IGlzTm9uUHJpbnRhYmxlQ29kZVBvaW50KGNjKSkKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIGlmIChjYyA9PSAnXFwnKSB7CisgICAgICAgICAgICBpZiAodHdvQ2hh
cnNBcmVWYWxpZEVzY2FwZShjYywgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApKSkg
eworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY29uc3VtZUVzY2FwZSgpKTsKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0LmFwcGVuZChjYyk7CisgICAgfQorCisgICAgY29u
c3VtZUJhZFVybFJlbW5hbnRzKCk7CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKEJhZFVybFRv
a2VuKTsKK30KKworLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXN5bnRheC8jY29uc3Vt
ZS10aGUtcmVtbmFudHMtb2YtYS1iYWQtdXJsCit2b2lkIENTU1Rva2VuaXplcjo6Y29uc3VtZUJh
ZFVybFJlbW5hbnRzKCkKK3sKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBVQ2hhciBjYyA9
IGNvbnN1bWUoKTsKKyAgICAgICAgaWYgKGNjID09ICcpJyB8fCBjYyA9PSBrRW5kT2ZGaWxlTWFy
a2VyKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAodHdvQ2hhcnNBcmVWYWxpZEVz
Y2FwZShjYywgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApKSkKKyAgICAgICAgICAg
IGNvbnN1bWVFc2NhcGUoKTsKKyAgICB9Cit9CisKK3ZvaWQgQ1NTVG9rZW5pemVyOjpjb25zdW1l
U2luZ2xlV2hpdGVzcGFjZUlmTmV4dCgpCit7CisgICAgLy8gV2UgY2hlY2sgZm9yIFxyXG4gYW5k
IEhUTUwgc3BhY2VzIHNpbmNlIHdlIGRvbid0IGRvIHByZXByb2Nlc3NpbmcKKyAgICBVQ2hhciBu
ZXh0ID0gbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApOworICAgIGlmIChuZXh0ID09
ICdccicgJiYgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDEpID09ICdcbicpCisgICAg
ICAgIG1faW5wdXQuYWR2YW5jZSgyKTsKKyAgICBlbHNlIGlmIChpc0hUTUxTcGFjZShuZXh0KSkK
KyAgICAgICAgbV9pbnB1dC5hZHZhbmNlKCk7Cit9CisKK3ZvaWQgQ1NTVG9rZW5pemVyOjpjb25z
dW1lVW50aWxDb21tZW50RW5kRm91bmQoKQoreworICAgIFVDaGFyIGMgPSBjb25zdW1lKCk7Cisg
ICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKGMgPT0ga0VuZE9mRmlsZU1hcmtlcikKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGMgIT0gJyonKSB7CisgICAgICAgICAgICBj
ID0gY29uc3VtZSgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAg
YyA9IGNvbnN1bWUoKTsKKyAgICAgICAgaWYgKGMgPT0gJy8nKQorICAgICAgICAgICAgcmV0dXJu
OworICAgIH0KK30KKworYm9vbCBDU1NUb2tlbml6ZXI6OmNvbnN1bWVJZk5leHQoVUNoYXIgY2hh
cmFjdGVyKQoreworICAgIC8vIFNpbmNlIHdlJ3JlIG5vdCBkb2luZyByZXBsYWNlbWVudCB3ZSBj
YW4ndCB0ZWxsIHRoZSBkaWZmZXJlbmNlIGZyb20KKyAgICAvLyBhIE5VTCBpbiB0aGUgbWlkZGxl
IGFuZCB0aGUga0VuZE9mRmlsZU1hcmtlciwgc28gY2hhcmFjdGVyIG11c3Qgbm90IGJlCisgICAg
Ly8gTlVMLgorICAgIEFTU0VSVChjaGFyYWN0ZXIpOworICAgIGlmIChtX2lucHV0LnBlZWtXaXRo
b3V0UmVwbGFjZW1lbnQoMCkgPT0gY2hhcmFjdGVyKSB7CisgICAgICAgIG1faW5wdXQuYWR2YW5j
ZSgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQor
CisvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXN5bnRheC8jY29uc3VtZS1hLW5hbWUKK1N0
cmluZ1ZpZXcgQ1NTVG9rZW5pemVyOjpjb25zdW1lTmFtZSgpCit7CisgICAgLy8gTmFtZXMgd2l0
aG91dCBlc2NhcGVzIGdldCBoYW5kbGVkIHdpdGhvdXQgYWxsb2NhdGlvbnMKKyAgICBmb3IgKHVu
c2lnbmVkIHNpemUgPSAwOyA7ICsrc2l6ZSkgeworICAgICAgICBVQ2hhciBjYyA9IG1faW5wdXQu
cGVla1dpdGhvdXRSZXBsYWNlbWVudChzaXplKTsKKyAgICAgICAgaWYgKGlzTmFtZUNvZGVQb2lu
dChjYykpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgLy8gcGVla1dpdGhvdXRSZXBs
YWNlbWVudCB3aWxsIHJldHVybiBOVUwgd2hlbiB3ZSBoaXQgdGhlIGVuZCBvZiB0aGUKKyAgICAg
ICAgLy8gaW5wdXQuIEluIHRoYXQgY2FzZSB3ZSB3YW50IHRvIHN0aWxsIHVzZSB0aGUgcmFuZ2VB
dCgpIGZhc3QgcGF0aAorICAgICAgICAvLyBiZWxvdy4KKyAgICAgICAgaWYgKGNjID09ICdcMCcg
JiYgbV9pbnB1dC5vZmZzZXQoKSArIHNpemUgPCBtX2lucHV0Lmxlbmd0aCgpKQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGlmIChjYyA9PSAnXFwnKQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gbV9pbnB1dC5vZmZzZXQoKTsKKyAgICAgICAg
bV9pbnB1dC5hZHZhbmNlKHNpemUpOworICAgICAgICByZXR1cm4gbV9pbnB1dC5yYW5nZUF0KHN0
YXJ0T2Zmc2V0LCBzaXplKTsKKyAgICB9CisKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKKyAg
ICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBVQ2hhciBjYyA9IGNvbnN1bWUoKTsKKyAgICAgICAg
aWYgKGlzTmFtZUNvZGVQb2ludChjYykpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2Mp
OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHR3b0NoYXJz
QXJlVmFsaWRFc2NhcGUoY2MsIG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSkpIHsK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY29uc3VtZUVzY2FwZSgpKTsKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIHJlY29uc3VtZShjYyk7CisgICAgICAgIHJl
dHVybiByZWdpc3RlclN0cmluZyhyZXN1bHQudG9TdHJpbmcoKSk7CisgICAgfQorfQorCisvLyBo
dHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3Mtc3ludGF4LyNjb25zdW1lLWFuLWVzY2FwZWQtY29k
ZS1wb2ludAorVUNoYXIzMiBDU1NUb2tlbml6ZXI6OmNvbnN1bWVFc2NhcGUoKQoreworICAgIFVD
aGFyIGNjID0gY29uc3VtZSgpOworICAgIEFTU0VSVCghaXNOZXdMaW5lKGNjKSk7CisgICAgaWYg
KGlzQVNDSUlIZXhEaWdpdChjYykpIHsKKyAgICAgICAgdW5zaWduZWQgY29uc3VtZWRIZXhEaWdp
dHMgPSAxOworICAgICAgICBTdHJpbmdCdWlsZGVyIGhleENoYXJzOworICAgICAgICBoZXhDaGFy
cy5hcHBlbmQoY2MpOworICAgICAgICB3aGlsZSAoY29uc3VtZWRIZXhEaWdpdHMgPCA2ICYmIGlz
QVNDSUlIZXhEaWdpdChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkpKSB7CisgICAg
ICAgICAgICBjYyA9IGNvbnN1bWUoKTsKKyAgICAgICAgICAgIGhleENoYXJzLmFwcGVuZChjYyk7
CisgICAgICAgICAgICBjb25zdW1lZEhleERpZ2l0cysrOworICAgICAgICB9OworICAgICAgICBj
b25zdW1lU2luZ2xlV2hpdGVzcGFjZUlmTmV4dCgpOworICAgICAgICBib29sIG9rID0gZmFsc2U7
CisgICAgICAgIFVDaGFyMzIgY29kZVBvaW50ID0gaGV4Q2hhcnMudG9TdHJpbmcoKS50b1VJbnRT
dHJpY3QoJm9rLCAxNik7CisgICAgICAgIEFTU0VSVChvayk7CisgICAgICAgIGlmICghY29kZVBv
aW50IHx8ICgweEQ4MDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweERGRkYpIHx8IGNv
ZGVQb2ludCA+IDB4MTBGRkZGKQorICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VtZW50Q2hhcmFj
dGVyOworICAgICAgICByZXR1cm4gY29kZVBvaW50OworICAgIH0KKworICAgIGlmIChjYyA9PSBr
RW5kT2ZGaWxlTWFya2VyKQorICAgICAgICByZXR1cm4gcmVwbGFjZW1lbnRDaGFyYWN0ZXI7Cisg
ICAgcmV0dXJuIGNjOworfQorCitib29sIENTU1Rva2VuaXplcjo6bmV4dFR3b0NoYXJzQXJlVmFs
aWRFc2NhcGUoKQoreworICAgIHJldHVybiB0d29DaGFyc0FyZVZhbGlkRXNjYXBlKG1faW5wdXQu
cGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSwgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50
KDEpKTsKK30KKworLy8gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1zeW50YXgvI3N0YXJ0cy13
aXRoLWEtbnVtYmVyCitib29sIENTU1Rva2VuaXplcjo6bmV4dENoYXJzQXJlTnVtYmVyKFVDaGFy
IGZpcnN0KQoreworICAgIFVDaGFyIHNlY29uZCA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNl
bWVudCgwKTsKKyAgICBpZiAoaXNBU0NJSURpZ2l0KGZpcnN0KSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgaWYgKGZpcnN0ID09ICcrJyB8fCBmaXJzdCA9PSAnLScpCisgICAgICAgIHJldHVy
biAoKGlzQVNDSUlEaWdpdChzZWNvbmQpKSB8fCAoc2Vjb25kID09ICcuJyAmJiBpc0FTQ0lJRGln
aXQobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDEpKSkpOworICAgIGlmIChmaXJzdCA9
PScuJykKKyAgICAgICAgcmV0dXJuIChpc0FTQ0lJRGlnaXQoc2Vjb25kKSk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIENTU1Rva2VuaXplcjo6bmV4dENoYXJzQXJlTnVtYmVyKCkKK3sK
KyAgICBVQ2hhciBmaXJzdCA9IGNvbnN1bWUoKTsKKyAgICBib29sIGFyZU51bWJlciA9IG5leHRD
aGFyc0FyZU51bWJlcihmaXJzdCk7CisgICAgcmVjb25zdW1lKGZpcnN0KTsKKyAgICByZXR1cm4g
YXJlTnVtYmVyOworfQorCisvLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3Mtc3ludGF4LyN3
b3VsZC1zdGFydC1hbi1pZGVudGlmaWVyCitib29sIENTU1Rva2VuaXplcjo6bmV4dENoYXJzQXJl
SWRlbnRpZmllcihVQ2hhciBmaXJzdCkKK3sKKyAgICBVQ2hhciBzZWNvbmQgPSBtX2lucHV0LnBl
ZWtXaXRob3V0UmVwbGFjZW1lbnQoMCk7CisgICAgaWYgKGlzTmFtZVN0YXJ0Q29kZVBvaW50KGZp
cnN0KSB8fCB0d29DaGFyc0FyZVZhbGlkRXNjYXBlKGZpcnN0LCBzZWNvbmQpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIGlmIChmaXJzdCA9PSAnLScpCisgICAgICAgIHJldHVybiBpc05h
bWVTdGFydENvZGVQb2ludChzZWNvbmQpIHx8IHNlY29uZCA9PSAnLScgfHwgbmV4dFR3b0NoYXJz
QXJlVmFsaWRFc2NhcGUoKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBDU1NUb2tl
bml6ZXI6Om5leHRDaGFyc0FyZUlkZW50aWZpZXIoKQoreworICAgIFVDaGFyIGZpcnN0ID0gY29u
c3VtZSgpOworICAgIGJvb2wgYXJlSWRlbnRpZmllciA9IG5leHRDaGFyc0FyZUlkZW50aWZpZXIo
Zmlyc3QpOworICAgIHJlY29uc3VtZShmaXJzdCk7CisgICAgcmV0dXJuIGFyZUlkZW50aWZpZXI7
Cit9CisKK1N0cmluZ1ZpZXcgQ1NTVG9rZW5pemVyOjpyZWdpc3RlclN0cmluZyhjb25zdCBTdHJp
bmcmIHN0cmluZykKK3sKKyAgICBtX3Njb3BlLnN0b3JlU3RyaW5nKHN0cmluZyk7CisgICAgcmV0
dXJuIHN0cmluZzsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMzkgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0
OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
Ly8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisv
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisjaWZuZGVmIENTU1Rva2VuaXplcl9oCisjZGVmaW5lIENTU1Rva2VuaXplcl9oCisKKyNpbmNs
dWRlIDxjbGltaXRzPgorI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuLmgiCisjaW5jbHVkZSAiSW5w
dXRTdHJlYW1QcmVwcm9jZXNzb3IuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgQ1NTVG9rZW5pemVySW5wdXRTdHJlYW07CitjbGFzcyBDU1NQYXJzZXJPYnNlcnZl
cldyYXBwZXI7CitjbGFzcyBDU1NQYXJzZXJUb2tlblJhbmdlOworCitjbGFzcyBDU1NUb2tlbml6
ZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENTU1Rva2VuaXplcik7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgY2xhc3MgU2NvcGUgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgU2NvcGUoY29uc3QgU3RyaW5nJik7CisgICAgICAgIFNjb3BlKGNvbnN0IFN0
cmluZyYsIENTU1BhcnNlck9ic2VydmVyV3JhcHBlciYpOyAvLyBGb3IgdGhlIGluc3BlY3Rvcgor
CisgICAgICAgIENTU1BhcnNlclRva2VuUmFuZ2UgdG9rZW5SYW5nZSgpOworICAgICAgICB1bnNp
Z25lZCB0b2tlbkNvdW50KCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICB2b2lkIHN0b3JlU3Ry
aW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7IG1fc3RyaW5nUG9vbC5hcHBlbmQoc3RyaW5nKTsg
fQorICAgICAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4sIDMyPiBtX3Rva2VuczsKKyAgICAgICAg
Ly8gV2Ugb25seSBhbGxvY2F0ZSBzdHJpbmdzIHdoZW4gZXNjYXBlcyBhcmUgdXNlZC4KKyAgICAg
ICAgVmVjdG9yPFN0cmluZz4gbV9zdHJpbmdQb29sOworICAgICAgICBTdHJpbmcgbV9zdHJpbmc7
CisKKyAgICAgICAgZnJpZW5kIGNsYXNzIENTU1Rva2VuaXplcjsKKyAgICB9OworCitwcml2YXRl
OgorICAgIENTU1Rva2VuaXplcihDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbSYsIFNjb3BlJik7CisK
KyAgICBDU1NQYXJzZXJUb2tlbiBuZXh0VG9rZW4oKTsKKworICAgIFVDaGFyIGNvbnN1bWUoKTsK
KyAgICB2b2lkIHJlY29uc3VtZShVQ2hhcik7CisKKyAgICBDU1NQYXJzZXJUb2tlbiBjb25zdW1l
TnVtZXJpY1Rva2VuKCk7CisgICAgQ1NTUGFyc2VyVG9rZW4gY29uc3VtZUlkZW50TGlrZVRva2Vu
KCk7CisgICAgQ1NTUGFyc2VyVG9rZW4gY29uc3VtZU51bWJlcigpOworICAgIENTU1BhcnNlclRv
a2VuIGNvbnN1bWVTdHJpbmdUb2tlblVudGlsKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBj
b25zdW1lVW5pY29kZVJhbmdlKCk7CisgICAgQ1NTUGFyc2VyVG9rZW4gY29uc3VtZVVybFRva2Vu
KCk7CisKKyAgICB2b2lkIGNvbnN1bWVCYWRVcmxSZW1uYW50cygpOworICAgIHZvaWQgY29uc3Vt
ZVNpbmdsZVdoaXRlc3BhY2VJZk5leHQoKTsKKyAgICB2b2lkIGNvbnN1bWVVbnRpbENvbW1lbnRF
bmRGb3VuZCgpOworCisgICAgYm9vbCBjb25zdW1lSWZOZXh0KFVDaGFyKTsKKyAgICBTdHJpbmdW
aWV3IGNvbnN1bWVOYW1lKCk7CisgICAgVUNoYXIzMiBjb25zdW1lRXNjYXBlKCk7CisKKyAgICBi
b29sIG5leHRUd29DaGFyc0FyZVZhbGlkRXNjYXBlKCk7CisgICAgYm9vbCBuZXh0Q2hhcnNBcmVO
dW1iZXIoVUNoYXIpOworICAgIGJvb2wgbmV4dENoYXJzQXJlTnVtYmVyKCk7CisgICAgYm9vbCBu
ZXh0Q2hhcnNBcmVJZGVudGlmaWVyKFVDaGFyKTsKKyAgICBib29sIG5leHRDaGFyc0FyZUlkZW50
aWZpZXIoKTsKKworICAgIENTU1BhcnNlclRva2VuIGJsb2NrU3RhcnQoQ1NTUGFyc2VyVG9rZW5U
eXBlKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBibG9ja1N0YXJ0KENTU1BhcnNlclRva2VuVHlwZSBi
bG9ja1R5cGUsIENTU1BhcnNlclRva2VuVHlwZSwgU3RyaW5nVmlldyk7CisgICAgQ1NTUGFyc2Vy
VG9rZW4gYmxvY2tFbmQoQ1NTUGFyc2VyVG9rZW5UeXBlLCBDU1NQYXJzZXJUb2tlblR5cGUgc3Rh
cnRUeXBlKTsKKworICAgIENTU1BhcnNlclRva2VuIHdoaXRlU3BhY2UoVUNoYXIpOworICAgIENT
U1BhcnNlclRva2VuIGxlZnRQYXJlbnRoZXNpcyhVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4g
cmlnaHRQYXJlbnRoZXNpcyhVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gbGVmdEJyYWNrZXQo
VUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIHJpZ2h0QnJhY2tldChVQ2hhcik7CisgICAgQ1NT
UGFyc2VyVG9rZW4gbGVmdEJyYWNlKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiByaWdodEJy
YWNlKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBwbHVzT3JGdWxsU3RvcChVQ2hhcik7Cisg
ICAgQ1NTUGFyc2VyVG9rZW4gY29tbWEoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIGh5cGhl
bk1pbnVzKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBhc3RlcmlzayhVQ2hhcik7CisgICAg
Q1NTUGFyc2VyVG9rZW4gbGVzc1RoYW4oVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIHNvbGlk
dXMoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIGNvbG9uKFVDaGFyKTsKKyAgICBDU1NQYXJz
ZXJUb2tlbiBzZW1pQ29sb24oVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIGhhc2goVUNoYXIp
OworICAgIENTU1BhcnNlclRva2VuIGNpcmN1bWZsZXhBY2NlbnQoVUNoYXIpOworICAgIENTU1Bh
cnNlclRva2VuIGRvbGxhclNpZ24oVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIHZlcnRpY2Fs
TGluZShVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gdGlsZGUoVUNoYXIpOworICAgIENTU1Bh
cnNlclRva2VuIGNvbW1lcmNpYWxBdChVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gcmV2ZXJz
ZVNvbGlkdXMoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIGFzY2lpRGlnaXQoVUNoYXIpOwor
ICAgIENTU1BhcnNlclRva2VuIGxldHRlclUoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIG5h
bWVTdGFydChVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gc3RyaW5nU3RhcnQoVUNoYXIpOwor
ICAgIENTU1BhcnNlclRva2VuIGVuZE9mRmlsZShVQ2hhcik7CisKKyAgICBTdHJpbmdWaWV3IHJl
Z2lzdGVyU3RyaW5nKGNvbnN0IFN0cmluZyYpOworCisgICAgdXNpbmcgQ29kZVBvaW50ID0gQ1NT
UGFyc2VyVG9rZW4gKENTU1Rva2VuaXplcjo6KikoVUNoYXIpOworICAgIHN0YXRpYyBjb25zdCBD
b2RlUG9pbnQgY29kZVBvaW50c1tdOworCisgICAgVmVjdG9yPENTU1BhcnNlclRva2VuVHlwZSwg
OD4gbV9ibG9ja1N0YWNrOworICAgIENTU1Rva2VuaXplcklucHV0U3RyZWFtJiBtX2lucHV0Owor
ICAgIFNjb3BlJiBtX3Njb3BlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gQ1NTVG9rZW5pemVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
VG9rZW5pemVySW5wdXRTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1
bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
Ly8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTVG9r
ZW5pemVySW5wdXRTdHJlYW0uaCIKKworI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbTo6Q1NTVG9rZW5p
emVySW5wdXRTdHJlYW0oU3RyaW5nIGlucHV0KQorICAgIDogbV9vZmZzZXQoMCkKKyAgICAsIG1f
c3RyaW5nTGVuZ3RoKGlucHV0Lmxlbmd0aCgpKQorICAgICwgbV9zdHJpbmcoaW5wdXQuaW1wbCgp
KQoreworfQorCit2b2lkIENTU1Rva2VuaXplcklucHV0U3RyZWFtOjphZHZhbmNlVW50aWxOb25X
aGl0ZXNwYWNlKCkKK3sKKyAgICAvLyBVc2luZyBIVE1MIHNwYWNlIGhlcmUgcmF0aGVyIHRoYW4g
Q1NTIHNwYWNlIHNpbmNlIHdlIGRvbid0IGRvIHByZXByb2Nlc3NpbmcKKyAgICBpZiAobV9zdHJp
bmctPmlzOEJpdCgpKSB7CisgICAgICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzID0gbV9zdHJp
bmctPmNoYXJhY3RlcnM4KCk7CisgICAgICAgIHdoaWxlIChtX29mZnNldCA8IG1fc3RyaW5nTGVu
Z3RoICYmIGlzSFRNTFNwYWNlKGNoYXJhY3RlcnNbbV9vZmZzZXRdKSkKKyAgICAgICAgICAgICsr
bV9vZmZzZXQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMg
PSBtX3N0cmluZy0+Y2hhcmFjdGVyczE2KCk7CisgICAgICAgIHdoaWxlIChtX29mZnNldCA8IG1f
c3RyaW5nTGVuZ3RoICYmIGlzSFRNTFNwYWNlKGNoYXJhY3RlcnNbbV9vZmZzZXRdKSkKKyAgICAg
ICAgICAgICsrbV9vZmZzZXQ7CisgICAgfQorfQorCitkb3VibGUgQ1NTVG9rZW5pemVySW5wdXRT
dHJlYW06OmdldERvdWJsZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kKSBjb25zdAorewor
ICAgIEFTU0VSVChzdGFydCA8PSBlbmQgJiYgKChtX29mZnNldCArIGVuZCkgPD0gbV9zdHJpbmdM
ZW5ndGgpKTsKKyAgICBib29sIGlzUmVzdWx0T0sgPSBmYWxzZTsKKyAgICBkb3VibGUgcmVzdWx0
ID0gMC4wOworICAgIGlmIChzdGFydCA8IGVuZCkgeworICAgICAgICBpZiAobV9zdHJpbmctPmlz
OEJpdCgpKQorICAgICAgICAgICAgcmVzdWx0ID0gY2hhcmFjdGVyc1RvRG91YmxlKG1fc3RyaW5n
LT5jaGFyYWN0ZXJzOCgpICsgbV9vZmZzZXQgKyBzdGFydCwgZW5kIC0gc3RhcnQsICZpc1Jlc3Vs
dE9LKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gY2hhcmFjdGVyc1RvRG91
YmxlKG1fc3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSArIG1fb2Zmc2V0ICsgc3RhcnQsIGVuZCAtIHN0
YXJ0LCAmaXNSZXN1bHRPSyk7CisgICAgfQorICAgIC8vIEZJWE1FOiBJdCBsb29rcyBsaWtlIGNh
bGxlcnMgZW5zdXJlIHdlIGhhdmUgYSB2YWxpZCBudW1iZXIKKyAgICByZXR1cm4gaXNSZXN1bHRP
SyA/IHJlc3VsdCA6IDAuMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0u
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXpl
cklucHV0U3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDkgQEAKKy8vIENvcHly
aWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8K
Ky8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJp
YnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZuZGVmIENTU1Rva2Vu
aXplcklucHV0U3RyZWFtX2gKKyNkZWZpbmUgQ1NTVG9rZW5pemVySW5wdXRTdHJlYW1faAorCisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1Rva2VuaXplcklucHV0
U3RyZWFtIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDU1NUb2tlbml6ZXJJbnB1dFN0cmVh
bSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
Q1NTVG9rZW5pemVySW5wdXRTdHJlYW0oU3RyaW5nIGlucHV0KTsKKworICAgIC8vIEdldHMgdGhl
IGNoYXIgaW4gdGhlIHN0cmVhbSByZXBsYWNpbmcgTlVMIGNoYXJhY3RlcnMgd2l0aCBhIHVuaWNv
ZGUKKyAgICAvLyByZXBsYWNlbWVudCBjaGFyYWN0ZXIuIFdpbGwgcmV0dXJuIChOVUwpIGtFbmRP
ZkZpbGVNYXJrZXIgd2hlbiBhdCB0aGUKKyAgICAvLyBlbmQgb2YgdGhlIHN0cmVhbS4KKyAgICBV
Q2hhciBuZXh0SW5wdXRDaGFyKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX29mZnNldCA+
PSBtX3N0cmluZ0xlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiAnXDAnOworICAgICAgICBVQ2hh
ciByZXN1bHQgPSAoKm1fc3RyaW5nKVttX29mZnNldF07CisgICAgICAgIHJldHVybiByZXN1bHQg
PyByZXN1bHQgOiAweEZGRkQ7CisgICAgfQorCisgICAgLy8gR2V0cyB0aGUgY2hhciBhdCBsb29r
YWhlYWRPZmZzZXQgZnJvbSB0aGUgY3VycmVudCBzdHJlYW0gcG9zaXRpb24uIFdpbGwKKyAgICAv
LyByZXR1cm4gTlVMIChrRW5kT2ZGaWxlTWFya2VyKSBpZiB0aGUgc3RyZWFtIHBvc2l0aW9uIGlz
IGF0IHRoZSBlbmQuCisgICAgLy8gTk9URTogVGhpcyBtYXkgKmFsc28qIHJldHVybiBOVUwgaWYg
dGhlcmUncyBvbmUgaW4gdGhlIGlucHV0ISBOZXZlcgorICAgIC8vIGNvbXBhcmUgdGhlIHJldHVy
biB2YWx1ZSB0byAnXDAnLgorICAgIFVDaGFyIHBlZWtXaXRob3V0UmVwbGFjZW1lbnQodW5zaWdu
ZWQgbG9va2FoZWFkT2Zmc2V0KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKChtX29mZnNldCAr
IGxvb2thaGVhZE9mZnNldCkgPj0gbV9zdHJpbmdMZW5ndGgpCisgICAgICAgICAgICByZXR1cm4g
J1wwJzsKKyAgICAgICAgcmV0dXJuICgqbV9zdHJpbmcpW21fb2Zmc2V0ICsgbG9va2FoZWFkT2Zm
c2V0XTsKKyAgICB9CisKKyAgICB2b2lkIGFkdmFuY2UodW5zaWduZWQgb2Zmc2V0ID0gMSkgeyBt
X29mZnNldCArPSBvZmZzZXQ7IH0KKyAgICB2b2lkIHB1c2hCYWNrKFVDaGFyIGNjKQorICAgIHsK
KyAgICAgICAgLS1tX29mZnNldDsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjYywgbmV4dElucHV0
Q2hhcigpID09IGNjKTsKKyAgICB9CisKKyAgICBkb3VibGUgZ2V0RG91YmxlKHVuc2lnbmVkIHN0
YXJ0LCB1bnNpZ25lZCBlbmQpIGNvbnN0OworCisgICAgdGVtcGxhdGU8Ym9vbCBjaGFyYWN0ZXJQ
cmVkaWNhdGUoVUNoYXIpPgorICAgIHVuc2lnbmVkIHNraXBXaGlsZVByZWRpY2F0ZSh1bnNpZ25l
ZCBvZmZzZXQpCisgICAgeworICAgICAgICBpZiAobV9zdHJpbmctPmlzOEJpdCgpKSB7CisgICAg
ICAgICAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVyczggPSBtX3N0cmluZy0+Y2hhcmFjdGVyczgo
KTsKKyAgICAgICAgICAgIHdoaWxlICgobV9vZmZzZXQgKyBvZmZzZXQpIDwgbV9zdHJpbmdMZW5n
dGggJiYgY2hhcmFjdGVyUHJlZGljYXRlKGNoYXJhY3RlcnM4W21fb2Zmc2V0ICsgb2Zmc2V0XSkp
CisgICAgICAgICAgICAgICAgKytvZmZzZXQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBjb25zdCBVQ2hhciogY2hhcmFjdGVyczE2ID0gbV9zdHJpbmctPmNoYXJhY3RlcnMxNigpOwor
ICAgICAgICAgICAgd2hpbGUgKChtX29mZnNldCArIG9mZnNldCkgPCBtX3N0cmluZ0xlbmd0aCAm
JiBjaGFyYWN0ZXJQcmVkaWNhdGUoY2hhcmFjdGVyczE2W21fb2Zmc2V0ICsgb2Zmc2V0XSkpCisg
ICAgICAgICAgICAgICAgKytvZmZzZXQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG9mZnNl
dDsKKyAgICB9CisKKyAgICB2b2lkIGFkdmFuY2VVbnRpbE5vbldoaXRlc3BhY2UoKTsKKworICAg
IHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nTGVuZ3RoOyB9CisgICAg
dW5zaWduZWQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gc3RkOjptaW4obV9vZmZzZXQsIG1fc3Ry
aW5nTGVuZ3RoKTsgfQorCisgICAgU3RyaW5nVmlldyByYW5nZUF0KHVuc2lnbmVkIHN0YXJ0LCB1
bnNpZ25lZCBsZW5ndGgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoc3RhcnQgKyBsZW5n
dGggPD0gbV9zdHJpbmdMZW5ndGgpOworICAgICAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmlu
Zy5nZXQoKSkuc3Vic3RyaW5nKHN0YXJ0LCBsZW5ndGgpOyAvLyBGSVhNRTogU2hvdWxkIG1ha2Ug
YSBjb25zdHJ1Y3RvciBvbiBTdHJpbmdWaWV3IGZvciB0aGlzLgorICAgIH0KKworcHJpdmF0ZToK
KyAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgY29uc3Qgc2l6ZV90IG1fc3RyaW5nTGVuZ3RoOwor
ICAgIGNvbnN0IFJlZlB0cjxTdHJpbmdJbXBsPiBtX3N0cmluZzsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENTU1Rva2VuaXplcklucHV0U3RyZWFtX2gKKwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgJKHJldmlzaW9uIDIwNDkwNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCwxMSBA
QCBlbnVtIExlbmd0aFR5cGUgewogICAgIFVuZGVmaW5lZAogfTsKIAorZW51bSBWYWx1ZVJhbmdl
IHsKKyAgICBWYWx1ZVJhbmdlQWxsLAorICAgIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZQorfTsKKwog
Y2xhc3MgQ2FsY3VsYXRpb25WYWx1ZTsKIGNsYXNzIFRleHRTdHJlYW07CiAKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwNDk3MykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDE2LTA4LTI1ICBEYXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgorCisgICAgICAgIExhbmQgc3VwcG9ydCBmb3IgdG9rZW5pemF0aW9uIGluIHRoZSBuZXcgQ1NT
IFBhcnNlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYxMTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBmYXN0L2Nzcy9wYXJzaW5nLWNzcy1ub25hc2NpaS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9jc3MvcGFyc2luZy1jc3Mtbm9uYXNjaWkuaHRtbDoKKyAgICAgICAgKiBmYXN0L2Nzcy9z
ZWxlY3Rvci10ZXh0LWVzY2FwZS5odG1sOgorCiAyMDE2LTA4LTI1ICBTaW1vbiBGcmFzZXIgIDxz
aW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFRlc3RFeHBlY3RhdGlvbnMgY2xlYW51
cApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy1jc3Mtbm9uYXNjaWktZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNpbmctY3NzLW5v
bmFzY2lpLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjA0OTA1KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9jc3MvcGFyc2luZy1jc3Mtbm9uYXNjaWktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC00LDcgKzQsNiBAQCBTVUNDRVNTCiAKIFJ1bGVzIGZyb20gdGhlIHN0eWxlc2hlZXQ6CiAKLSNh
MTI3X1x/IHsgY29sb3I6IHJlZDsgfQogI2ExMjhfwoAgeyBjb2xvcjogcmVkOyB9CiAjYjEyOF/C
gCB7IGNvbG9yOiBncmVlbjsgfQogI2ExNTlfwp8geyBjb2xvcjogcmVkOyB9CkBAIC0xNSw3ICsx
NCw2IEBAIFJ1bGVzIGZyb20gdGhlIHN0eWxlc2hlZXQ6CiAjYjM4NF/GgCB7IGNvbG9yOiBncmVl
bjsgfQogRXhwZWN0ZWQgcmVzdWx0OgogCi0jYTEyN19cfyB7IGNvbG9yOiByZWQ7IH0KICNhMTI4
X8KAIHsgY29sb3I6IHJlZDsgfQogI2IxMjhfwoAgeyBjb2xvcjogZ3JlZW47IH0KICNhMTU5X8Kf
IHsgY29sb3I6IHJlZDsgfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy1jc3Mt
bm9uYXNjaWkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJzaW5n
LWNzcy1ub25hc2NpaS5odG1sCShyZXZpc2lvbiAyMDQ5MDUpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy9wYXJzaW5nLWNzcy1ub25hc2NpaS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw3ICsx
MCw2IEBACiAgIGNhcmVmdWxseSBlZGl0IHRoZSBmaWxlLgogKi8KIAotI2ExMjdfXDdGIHsgY29s
b3I6cmVkOyB9CiAjYjEyN19/IHsgY29sb3I6Z3JlZW47IH0KIAogI2ExMjhfXDgwIHsgY29sb3I6
cmVkOyB9CkBAIC02NCw4ICs2Myw3IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogCiA8cD5FeHBlY3Rl
ZCByZXN1bHQ6PC9wPgogCi08cHJlIGlkPSJleHBlY3RlZCI+I2ExMjdfXH8geyBjb2xvcjogcmVk
OyB9Ci0jYTEyOF/CgCB7IGNvbG9yOiByZWQ7IH0KKzxwcmUgaWQ9ImV4cGVjdGVkIj4jYTEyOF/C
gCB7IGNvbG9yOiByZWQ7IH0KICNiMTI4X8KAIHsgY29sb3I6IGdyZWVuOyB9CiAjYTE1OV/CnyB7
IGNvbG9yOiByZWQ7IH0KICNiMTU5X8KfIHsgY29sb3I6IGdyZWVuOyB9CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9zZWxlY3Rvci10ZXh0LWVzY2FwZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvY3NzL3NlbGVjdG9yLXRleHQtZXNjYXBlLmh0bWwJKHJldmlzaW9uIDIw
NDkwNSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3NlbGVjdG9yLXRleHQtZXNjYXBlLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDcgQEAgdmFyIGV4cGVjdGVkVGV4dHMgPSBbCiAg
ICAgIi5cXDM5IF9jbGFzcyIsCiAgICAgIi4tXFwzMCBfY2xhc3MiLAogICAgICIuLVxcMzkgX2Ns
YXNzIiwKLSAgICAiLi1cXC1fY2xhc3MiLAorICAgICIuLS1fY2xhc3MiLAogICAgICIuXHg4MV9j
bGFzcyIsCiAgICAgIi7ml6XmnKzoqp5fY2xhc3MiLAogICAgICIu8JCQgF9jbGFzcyIsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286992</attachid>
            <date>2016-08-25 11:44:34 -0700</date>
            <delta_ts>2016-08-25 13:09:55 -0700</delta_ts>
            <desc>Patch to fix layout tests and style stuff</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>451193</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3NiBAQAorMjAxNi0wOC0yNCAgRGF2ZSBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBJbml0aWFsIGxhbmRpbmcgb2YgQ1NT
IFBhcnNlciBUb2tlbml6YXRpb24gKGFuZCBmaWxlcyB0byBzdXBwb3J0IHRoYXQpLiBOb3QgdXNl
ZCB5ZXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjExNzQKKworICAgICAgICBUaGlzIGNvZGUgaXMgaW1wb3J0ZWQgZnJvbSBCbGluayBhbmQgaXMg
dGhlaXIgQ1NTIHBhcnNlciAobW9kaWZpZWQgdG8gd29yayBpbiBXZWJLaXQpLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGNzcy9DU1NNYXJrdXAuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQ1NTVG9rZW5p
emVySWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVDaGFyYWN0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplQ2hhcmFjdGVyQXNDb2RlUG9pbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6c2VyaWFsaXplSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpzZXJp
YWxpemVTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplVVJJKToKKyAgICAgICAg
KFdlYkNvcmU6OnNlcmlhbGl6ZUZvbnRGYW1pbHkpOgorICAgICAgICAqIGNzcy9DU1NNYXJrdXAu
aDogQWRkZWQuCisgICAgICAgICogY3NzL0NTU09NVXRpbHMuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIGNzcy9DU1NPTVV0aWxzLmg6IFJlbW92ZWQuCisgICAgICAgICogY3NzL0NTU1NlbGVjdG9y
LmNwcDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHA6IEFkZGVk
LgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmg6IEFkZGVkLgorICAg
ICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6aXNDU1NTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjppc05hbWVTdGFydENvZGVQb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjppc05hbWVDb2RlUG9pbnQpOgorICAgICAgICAqIGNzcy9w
YXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJPYnNlcnZlcjo6fkNTU1BhcnNlck9ic2VydmVyKToKKyAgICAgICAgKiBjc3MvcGFyc2Vy
L0NTU1BhcnNlck9ic2VydmVyV3JhcHBlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyOjpzdGFydE9mZnNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OnByZXZpb3VzVG9rZW5TdGFydE9mZnNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OmVuZE9mZnNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OnNraXBDb21tZW50c0Jl
Zm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OnlpZWxk
Q29tbWVudHNCZWZvcmUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXJX
cmFwcGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyT2JzZXJ2ZXJXcmFw
cGVyOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyT2JzZXJ2ZXJXcmFwcGVyOjpvYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXJPYnNlcnZlcldyYXBwZXI6OmFkZENvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyT2JzZXJ2ZXJXcmFwcGVyOjphZGRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXJPYnNlcnZlcldyYXBwZXI6OmZpbmFsaXplQ29uc3RydWN0aW9uKToKKyAgICAgICAgKiBjc3Mv
cGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjc3NQ
cmltaXRpdmVWYWx1ZVVuaXRGcm9tVHJpZSk6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdUb1Vu
aXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpDU1NQYXJzZXJUb2tl
bik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6Y29udmVydFRvRGltZW5zaW9u
V2l0aFVuaXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OmNvbnZlcnRUb1Bl
cmNlbnRhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OmRlbGltaXRlcik6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6bnVtZXJpY1NpZ24pOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46Om51bWVyaWNWYWx1ZVR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46Om51bWVyaWNWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXJUb2tlbjo6cGFyc2VBc1VucmVzb2x2ZWRDU1NQcm9wZXJ0eUlEKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjppZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJUb2tlbjo6ZnVuY3Rpb25JZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tl
bjo6aGFzU3RyaW5nQmFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6
Y29weVdpdGhVcGRhdGVkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2Vu
Ojp2YWx1ZURhdGFDaGFyUmF3RXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9r
ZW46Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OnNlcmlh
bGl6ZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlclRva2VuOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clRva2VuOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6Z2V0SGFz
aFRva2VuVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6Z2V0QmxvY2tU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjp1bml0VHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6dW5pY29kZVJhbmdlU3RhcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OnVuaWNvZGVSYW5nZUVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6aW5pdFZhbHVlRnJvbVN0cmluZ1ZpZXcpOgorICAgICAg
ICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW5SYW5nZS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6ZW9mVG9rZW4pOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6bWFrZVN1YlJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlclRva2VuUmFuZ2U6OmNvbnN1bWVCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXJUb2tlblJhbmdlOjpjb25zdW1lQ29tcG9uZW50VmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6c2VyaWFsaXplKToKKyAgICAgICAgKiBjc3MvcGFy
c2VyL0NTU1BhcnNlclRva2VuUmFuZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJUb2tlblJhbmdlOjpDU1NQYXJzZXJUb2tlblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlclRva2VuUmFuZ2U6OmF0RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clRva2VuUmFuZ2U6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlblJhbmdl
OjpwZWVrKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuUmFuZ2U6OmNvbnN1bWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6Y29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6Y29u
c3VtZVdoaXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6
YmVnaW4pOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Omhhc1ByZWZpeCk6CisgICAgICAgIChXZWJDb3JlOjpjc3NQ
cm9wZXJ0eUlEKToKKyAgICAgICAgKFdlYkNvcmU6OmNzc1Byb3BlcnR5TmFtZUlPU0FsaWFzaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzQXBwbGVMZWdhY3lDc3NWYWx1ZUtleXdvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6Y3NzVmFsdWVLZXl3b3JkSUQpOgorICAgICAgICAoV2ViQ29yZTo6dW5y
ZXNvbHZlZENTU1Byb3BlcnR5SUQpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQ
YXJzZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6aW5R
dWlya3NNb2RlKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVy
cy5jcHA6IEFkZGVkLgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
OjppZGVudE1hdGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzOjpjb25zdW1lSWRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzOjppc0NTU1dpZGVLZXl3b3JkKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Rva2Vu
aXplci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpTY29wZTo6
U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpTY29wZTo6dG9rZW5SYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OlNjb3BlOjp0b2tlbkNvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OmlzTmV3TGluZSk6CisgICAgICAgIChXZWJDb3JlOjp0d29DaGFy
c0FyZVZhbGlkRXNjYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Q1NTVG9r
ZW5pemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6cmVjb25zdW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb2tlbml6ZXI6OndoaXRlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5p
emVyOjpibG9ja1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6YmxvY2tF
bmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpsZWZ0UGFyZW50aGVzaXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpyaWdodFBhcmVudGhlc2lzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6bGVmdEJyYWNrZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9rZW5pemVyOjpyaWdodEJyYWNrZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9r
ZW5pemVyOjpsZWZ0QnJhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpyaWdo
dEJyYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6cGx1c09yRnVsbFN0b3Ap
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjphc3Rlcmlzayk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb2tlbml6ZXI6Omxlc3NUaGFuKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rv
a2VuaXplcjo6Y29tbWEpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpoeXBoZW5N
aW51cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OnNvbGlkdXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb2xvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXI6OnNlbWlDb2xvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6Omhh
c2gpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjaXJjdW1mbGV4QWNjZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6ZG9sbGFyU2lnbik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb2tlbml6ZXI6OnZlcnRpY2FsTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NUb2tlbml6ZXI6OnRpbGRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29t
bWVyY2lhbEF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6cmV2ZXJzZVNvbGlk
dXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjphc2NpaURpZ2l0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6bGV0dGVyVSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NUb2tlbml6ZXI6Om5hbWVTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6
OnN0cmluZ1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6ZW5kT2ZGaWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6bmV4dFRva2VuKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZU51bWJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVOdW1lcmljVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVG9rZW5pemVyOjpjb25zdW1lSWRlbnRMaWtlVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVG9rZW5pemVyOjpjb25zdW1lU3RyaW5nVG9rZW5VbnRpbCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVVbmljb2RlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
aXNOb25QcmludGFibGVDb2RlUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVy
Ojpjb25zdW1lVXJsVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb25z
dW1lQmFkVXJsUmVtbmFudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb25z
dW1lU2luZ2xlV2hpdGVzcGFjZUlmTmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6
ZXI6OmNvbnN1bWVVbnRpbENvbW1lbnRFbmRGb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXI6OmNvbnN1bWVJZk5leHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVy
Ojpjb25zdW1lTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVF
c2NhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpuZXh0VHdvQ2hhcnNBcmVW
YWxpZEVzY2FwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6Om5leHRDaGFyc0Fy
ZU51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6Om5leHRDaGFyc0FyZUlk
ZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpyZWdpc3RlclN0cmlu
Zyk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OlNjb3BlOjpzdG9yZVN0cmluZyk6CisgICAgICAgICog
Y3NzL3BhcnNlci9DU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVG9rZW5pemVySW5wdXRTdHJlYW06OkNTU1Rva2VuaXplcklucHV0U3RyZWFt
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcklucHV0U3RyZWFtOjphZHZhbmNlVW50
aWxOb25XaGl0ZXNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcklucHV0U3Ry
ZWFtOjpnZXREb3VibGUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRT
dHJlYW0uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXJJbnB1dFN0cmVh
bTo6bmV4dElucHV0Q2hhcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXJJbnB1dFN0
cmVhbTo6cGVla1dpdGhvdXRSZXBsYWNlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tl
bml6ZXJJbnB1dFN0cmVhbTo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6
ZXJJbnB1dFN0cmVhbTo6cHVzaEJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVy
SW5wdXRTdHJlYW06OnNraXBXaGlsZVByZWRpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXJJbnB1dFN0cmVhbTo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2Vu
aXplcklucHV0U3RyZWFtOjpvZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVy
SW5wdXRTdHJlYW06OnJhbmdlQXQpOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5oOgorCiAy
MDE2LTA4LTI0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIHRo
ZSBhYmlsaXR5IHRvIG92ZXJyaWRlIHRoZSBpbXBsZW1lbnRhdGlvbiBuYW1lIG9mIElETCBlbnVt
cyBhbmQgZGljdGlvbmFyaWVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjA0
OTc4KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEzNDEsOSArMTM0MSw5IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3MvQ1NTS2V5ZnJh
bWVSdWxlLmNwcAogICAgIGNzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcAogICAgIGNzcy9DU1NMaW5l
Qm94Q29udGFpblZhbHVlLmNwcAorICAgIGNzcy9DU1NNYXJrdXAuY3BwCiAgICAgY3NzL0NTU01l
ZGlhUnVsZS5jcHAKICAgICBjc3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmNwcAotICAgIGNzcy9DU1NP
TVV0aWxzLmNwcAogICAgIGNzcy9DU1NQYWdlUnVsZS5jcHAKICAgICBjc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuY3BwCiAgICAgY3NzL0NTU1Byb3BlcnR5LmNwcApAQCAtMTQxMCw3ICsxNDEwLDE1IEBA
IHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3MvV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmNwcAog
CiAgICAgY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCisgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJG
YXN0UGF0aHMuY3BwCisgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3Bw
CisgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAKKyAgICBjc3MvcGFyc2VyL0NTU1Bh
cnNlclRva2VuUmFuZ2UuY3BwCiAgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJWYWx1ZXMuY3BwCisg
ICAgY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKyAgICBjc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VySGVscGVycy5jcHAKKyAgICBjc3MvcGFyc2VyL0NTU1Rva2VuaXplci5jcHAK
KyAgICBjc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcAogICAgIGNzcy9wYXJz
ZXIvU1ZHQ1NTUGFyc2VyLmNwcAogCiAgICAgY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyMDQ5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMzMzksNiArMzMzOSwyNiBAQAog
CQk5NDZEMzczMDFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzJCMUQ2Q0IyOEIw
MDc3MDg0RiAvKiBDU1NQYXJzZXJWYWx1ZXMuY3BwICovOyB9OwogCQk5NDZEMzczMTFENkNCMjk0
MDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzcyQzFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2Vy
VmFsdWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOTQ2RDM3MzMxRDZDQzQyQjAwNzcwODRGIC8qIFNWR0NTU1BhcnNlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzczMjFENkNDMzcyMDA3
NzA4NEYgLyogU1ZHQ1NTUGFyc2VyLmNwcCAqLzsgfTsKKwkJOTQ2RDM3MzkxRDZDREZDMDAwNzcw
ODRGIC8qIENTU1Rva2VuaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NDZEMzczNDFENkNERjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmNw
cCAqLzsgfTsKKwkJOTQ2RDM3M0ExRDZDREZDMDAwNzcwODRGIC8qIENTU1Rva2VuaXplci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3MzcxRDZD
REY5ODAwNzcwODRGIC8qIENTU1Rva2VuaXplci5oICovOyB9OworCQk5NDZEMzczQjFENkNERkMw
MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3MzUxRDZDREY5ODAwNzcwODRGIC8q
IENTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcCAqLzsgfTsKKwkJOTQ2RDM3M0MxRDZDREZDMDAw
NzcwODRGIC8qIENTU1Rva2VuaXplcklucHV0U3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzczODFENkNERjk4MDA3NzA4NEYgLyogQ1NT
VG9rZW5pemVySW5wdXRTdHJlYW0uaCAqLzsgfTsKKwkJOTQ2RDM3M0YxRDZDRTNDMjAwNzcwODRG
IC8qIENTU1BhcnNlclRva2VuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk0NkQzNzNFMUQ2Q0UzMUEwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlbi5j
cHAgKi87IH07CisJCTk0NkQzNzQwMUQ2Q0UzQzIwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3M0Qx
RDZDRTMxQTAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuLmggKi87IH07CisJCTk0NkQzNzQ0MUQ2
Q0Y3QjIwMDc3MDg0RiAvKiBDU1NQYXJzZXJJZGlvbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzQzMUQ2Q0Y3ODgwMDc3MDg0RiAvKiBDU1NQ
YXJzZXJJZGlvbXMuaCAqLzsgfTsKKwkJOTQ2RDM3NDUxRDZEMDFENDAwNzcwODRGIC8qIENTU1By
b3BlcnR5UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk0NkQzNzQxMUQ2Q0Y2MzIwMDc3MDg0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlci5jcHAg
Ki87IH07CisJCTk0NkQzNzQ2MUQ2RDAxRDQwMDc3MDg0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3NDIx
RDZDRjYzMjAwNzcwODRGIC8qIENTU1Byb3BlcnR5UGFyc2VyLmggKi87IH07CisJCTk0NkQzNzQ5
MUQ2RDA2MjgwMDc3MDg0RiAvKiBDU1NNYXJrdXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3NDcxRDZEMDYwQzAwNzcwODRGIC8qIENTU01h
cmt1cC5jcHAgKi87IH07CisJCTk0NkQzNzRBMUQ2RDA2MjgwMDc3MDg0RiAvKiBDU1NNYXJrdXAu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzQ4
MUQ2RDA2MEMwMDc3MDg0RiAvKiBDU1NNYXJrdXAuaCAqLzsgfTsKKwkJOTQ2RDM3NEQxRDZEMDhB
NjAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3NEIxRDZEMDdGNTAwNzcwODRGIC8qIENT
U1BhcnNlclRva2VuUmFuZ2UuY3BwICovOyB9OworCQk5NDZEMzc0RTFENkQwOEFBMDA3NzA4NEYg
LyogQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTQ2RDM3NEMxRDZEMDdGNTAwNzcwODRGIC8qIENTU1BhcnNlclRva2Vu
UmFuZ2UuaCAqLzsgfTsKKwkJOTQ5Qzc3MDAxRDZFMUQ5ODAwQzBERTRGIC8qIENTU1BhcnNlckZh
c3RQYXRocy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NDlDNzZGRTFENkUxRDhDMDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcCAqLzsg
fTsKKwkJOTQ5Qzc3MDExRDZFMUQ5ODAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRocy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5Qzc2RkYxRDZF
MUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRocy5oICovOyB9OworCQk5NDlDNzcwNDFE
NkUzOUVBMDBDMERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0OUM3NzAyMUQ2RTM5MzUwMEMw
REU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwICovOyB9OworCQk5NDlDNzcwNTFE
NkUzOUVBMDBDMERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDlDNzcwMzFENkUzOTM1MDBDMERF
NEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmggKi87IH07CisJCTk0OUM3NzA4MUQ2RTQ5
ODcwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5Qzc3MDYxRDZFNDhFRDAwQzBERTRG
IC8qIENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5jcHAgKi87IH07CisJCTk0OUM3NzA5MUQ2RTQ5
ODcwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0OUM3NzA3MUQ2RTQ4RUQwMEMwREU0RiAv
KiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaCAqLzsgfTsKKwkJOTQ5Qzc3MEIxRDZFNDlFRDAw
QzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NDlDNzcwQTFENkU0OUMzMDBDMERFNEYgLyogQ1NTUGFyc2Vy
T2JzZXJ2ZXIuaCAqLzsgfTsKIAkJOTZBQkE0MjMxNEJDQjgwRTAwRDU2MjA0IC8qIEdyYXBoaWNz
Q29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk2QUJBNDIyMTRCQ0I4MEUwMEQ1NjIwNCAvKiBHcmFwaGljc0NvbnRl
eHQzRE9wZW5HTENvbW1vbi5jcHAgKi87IH07CiAJCTk3MDNFMUJGMTVEQzRFMzcwMDFGMjRDOCAv
KiBKU1ZvaWRDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5N0U5RUM4QjE1REM0OTJGMDA0RjJFNzEgLyogSlNWb2lkQ2FsbGJhY2suY3Bw
ICovOyB9OwogCQk5NzA1OTk3NzEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzMx
MDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmNwcCAqLzsgfTsKQEAgLTYzMTgsOCAr
NjMzOCw2IEBACiAJCUY1RTBDNjVDMTY0M0M0MkMwMEQ2Q0I2OSAvKiBCYXNlQ2hvb3Nlck9ubHlE
YXRlQW5kVGltZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjVFMEM2NUExNjQzQzQyQzAwRDZDQjY5IC8qIEJhc2VDaG9vc2VyT25seURh
dGVBbmRUaW1lSW5wdXRUeXBlLmggKi87IH07CiAJCUY5MTZDNDhEMERCNTEwRjgwMDc2Q0Q4MyAv
KiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOTE2QzQ4QjBEQjUxMEY4MDA3NkNEODMgLyogSlNY
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3BwICovOyB9OwogCQlGOTE2QzQ4RTBEQjUxMEY4
MDA3NkNEODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5MTZDNDhDMERCNTEwRjgwMDc2Q0Q4
MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICovOyB9OwotCQlGOThGRkY0NDEx
QTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOThGRkY0MjExQTI2NzYyMDBGNTQ4RTggLyogQ1NTT01V
dGlscy5jcHAgKi87IH07Ci0JCUY5OEZGRjQ1MTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOThGRkY0
MzExQTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5oICovOyB9OwogCQlGOUYwRUQ3QTBEQjUw
Q0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOUYwRUQ3NzBEQjUwQ0EyMDBEMTZE
QjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi87IH07CiAJCUZBNjU0QTZCMTEw
OEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUb2tlbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE2NTRBNjkxMTA4QUJFRDAwMjYxNUUwIC8q
IE1hdGhNTFRva2VuRWxlbWVudC5jcHAgKi87IH07CiAJCUZBNjU0QTZCMTEwOEFCRUQwMDI2MTZG
MSAvKiBNYXRoTUxPcGVyYXRvckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkE2NTRBNjkxMTA4QUJFRDAwMjYxNkYxIC8qIE1hdGhNTE9w
ZXJhdG9yRWxlbWVudC5jcHAgKi87IH07CkBAIC0xMDQ1Myw2ICsxMDQ3MSwyNiBAQAogCQk5NDZE
MzcyQjFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1BhcnNlclZhbHVlcy5jcHA7IHBhdGggPSBwYXJz
ZXIvQ1NTUGFyc2VyVmFsdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ2
RDM3MkMxRDZDQjI4QjAwNzcwODRGIC8qIENTU1BhcnNlclZhbHVlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQYXJzZXJWYWx1ZXMuaDsgcGF0aCA9IHBhcnNlci9DU1NQ
YXJzZXJWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ2RDM3MzIxRDZD
QzM3MjAwNzcwODRGIC8qIFNWR0NTU1BhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBTVkdDU1NQYXJzZXIuY3BwOyBwYXRoID0gcGFyc2VyL1NWR0NTU1BhcnNl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NkQzNzM0MUQ2Q0RGOTgwMDc3
MDg0RiAvKiBDU1NUb2tlbml6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQ1NTVG9rZW5pemVyLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NUb2tlbml6ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzczNTFENkNERjk4MDA3NzA4NEYgLyog
Q1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwOyBwYXRoID0gcGFyc2VyL0NTU1Rv
a2VuaXplcklucHV0U3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ2
RDM3MzcxRDZDREY5ODAwNzcwODRGIC8qIENTU1Rva2VuaXplci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBDU1NUb2tlbml6ZXIuaDsgcGF0aCA9IHBhcnNlci9DU1NUb2tlbml6
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ2RDM3MzgxRDZDREY5ODAwNzcw
ODRGIC8qIENTU1Rva2VuaXplcklucHV0U3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IENTU1Rva2VuaXplcklucHV0U3RyZWFtLmg7IHBhdGggPSBwYXJzZXIvQ1NTVG9r
ZW5pemVySW5wdXRTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ2RDM3
M0QxRDZDRTMxQTAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IENTU1BhcnNlclRva2VuLmg7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2Vy
VG9rZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ2RDM3M0UxRDZDRTMxQTAw
NzcwODRGIC8qIENTU1BhcnNlclRva2VuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IENTU1BhcnNlclRva2VuLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJUb2tl
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NkQzNzQxMUQ2Q0Y2MzIwMDc3
MDg0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBDU1NQcm9wZXJ0eVBhcnNlci5jcHA7IHBhdGggPSBwYXJzZXIvQ1NTUHJvcGVy
dHlQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzc0MjFENkNG
NjMyMDA3NzA4NEYgLyogQ1NTUHJvcGVydHlQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQ1NTUHJvcGVydHlQYXJzZXIuaDsgcGF0aCA9IHBhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzc0MzFENkNGNzg4
MDA3NzA4NEYgLyogQ1NTUGFyc2VySWRpb21zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IENTU1BhcnNlcklkaW9tcy5oOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzc0NzFENkQwNjBDMDA3NzA4NEYg
LyogQ1NTTWFya3VwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENT
U01hcmt1cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NkQzNzQ4MUQ2RDA2
MEMwMDc3MDg0RiAvKiBDU1NNYXJrdXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ1NTTWFya3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NkQzNzRCMUQ2
RDA3RjUwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1BhcnNlclRva2VuUmFuZ2UuY3BwOyBwYXRoID0gcGFy
c2VyL0NTU1BhcnNlclRva2VuUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5NDZEMzc0QzFENkQwN0Y1MDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW5SYW5nZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQYXJzZXJUb2tlblJhbmdlLmg7IHBhdGgg
PSBwYXJzZXIvQ1NTUGFyc2VyVG9rZW5SYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5NDlDNzZGRTFENkUxRDhDMDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1BhcnNlckZhc3RQYXRocy5j
cHA7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTQ5Qzc2RkYxRDZFMUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQ
YXRocy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQYXJzZXJGYXN0UGF0
aHMuaDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTQ5Qzc3MDIxRDZFMzkzNTAwQzBERTRGIC8qIENTU1Byb3BlcnR5UGFy
c2VySGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDU1NQ
cm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwOyBwYXRoID0gcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2Vy
SGVscGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0OUM3NzAzMUQ2RTM5
MzUwMEMwREU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmg7IHBhdGggPSBwYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTk0OUM3NzA2MUQ2RTQ4RUQwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUGFyc2VyT2JzZXJ2
ZXJXcmFwcGVyLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDlDNzcwNzFENkU0OEVEMDBDMERFNEYg
LyogQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5oOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNl
ck9ic2VydmVyV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDlDNzcw
QTFENkU0OUMzMDBDMERFNEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQ1NTUGFyc2VyT2JzZXJ2ZXIuaDsgcGF0aCA9IHBhcnNlci9DU1NQ
YXJzZXJPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NTBDNEMwMkJF
RDg5MzZGODE4RTJGOTkgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHR3JhcGhpY3NFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk2QUJBNDIyMTRCQ0I4MEUwMEQ1NjIwNCAvKiBHcmFwaGljc0NvbnRl
eHQzRE9wZW5HTENvbW1vbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk3MDU5OTczMTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2xpY3lDYWxsYmFjay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzg5NCw4ICsxMzkzMiw2IEBACiAJCUY4
MjE2Mjk5MDI5RjRGQjUwMTAwMDEzMSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1l
d29yazsgcGF0aCA9IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJRjkxNkM0OEIwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0
cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUY5MTZDNDhDMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1
ZXN0UHJvZ3Jlc3NFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNY
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRjk4RkZGNDIxMUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTT01VdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUY5OEZGRjQzMTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU09NVXRpbHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjlGMEVENzcwREI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBS
ZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY5RjBFRDc4MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQTY1NEE2MzExMDhBQkI3MDAy
NjE1RTAgLyogbWF0aG1sLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gbWF0aG1sLmNz
czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MDczLDEyICsxODEwOSwzMCBAQAog
CQk5NDZEMzcyNzFENkNCMjI1MDA3NzA4NEYgLyogcGFyc2VyICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk5NDZEMzczMjFENkNDMzcyMDA3NzA4NEYgLyog
U1ZHQ1NTUGFyc2VyLmNwcCAqLywKIAkJCQk5NDZEMzcyODFENkNCMjhCMDA3NzA4NEYgLyogQ1NT
UGFyc2VyLmNwcCAqLywKIAkJCQk5NDZEMzcyOTFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2Vy
LmggKi8sCisJCQkJOTQ5Qzc2RkUxRDZFMUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRo
cy5jcHAgKi8sCisJCQkJOTQ5Qzc2RkYxRDZFMUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQ
YXRocy5oICovLAorCQkJCTk0NkQzNzQzMUQ2Q0Y3ODgwMDc3MDg0RiAvKiBDU1NQYXJzZXJJZGlv
bXMuaCAqLywKIAkJCQk5NDZEMzcyQTFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2VyTW9kZS5o
ICovLAorCQkJCTk0OUM3NzBBMUQ2RTQ5QzMwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlci5o
ICovLAorCQkJCTk0OUM3NzA2MUQ2RTQ4RUQwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldy
YXBwZXIuY3BwICovLAorCQkJCTk0OUM3NzA3MUQ2RTQ4RUQwMEMwREU0RiAvKiBDU1NQYXJzZXJP
YnNlcnZlcldyYXBwZXIuaCAqLywKKwkJCQk5NDZEMzczRTFENkNFMzFBMDA3NzA4NEYgLyogQ1NT
UGFyc2VyVG9rZW4uY3BwICovLAorCQkJCTk0NkQzNzNEMUQ2Q0UzMUEwMDc3MDg0RiAvKiBDU1NQ
YXJzZXJUb2tlbi5oICovLAorCQkJCTk0NkQzNzRCMUQ2RDA3RjUwMDc3MDg0RiAvKiBDU1NQYXJz
ZXJUb2tlblJhbmdlLmNwcCAqLywKKwkJCQk5NDZEMzc0QzFENkQwN0Y1MDA3NzA4NEYgLyogQ1NT
UGFyc2VyVG9rZW5SYW5nZS5oICovLAogCQkJCTk0NkQzNzJCMUQ2Q0IyOEIwMDc3MDg0RiAvKiBD
U1NQYXJzZXJWYWx1ZXMuY3BwICovLAogCQkJCTk0NkQzNzJDMUQ2Q0IyOEIwMDc3MDg0RiAvKiBD
U1NQYXJzZXJWYWx1ZXMuaCAqLywKKwkJCQk5NDZEMzc0MTFENkNGNjMyMDA3NzA4NEYgLyogQ1NT
UHJvcGVydHlQYXJzZXIuY3BwICovLAorCQkJCTk0NkQzNzQyMUQ2Q0Y2MzIwMDc3MDg0RiAvKiBD
U1NQcm9wZXJ0eVBhcnNlci5oICovLAorCQkJCTk0OUM3NzAyMUQ2RTM5MzUwMEMwREU0RiAvKiBD
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwICovLAorCQkJCTk0OUM3NzAzMUQ2RTM5MzUwMEMw
REU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaCAqLywKKwkJCQk5NDZEMzczNDFENkNE
Rjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmNwcCAqLywKKwkJCQk5NDZEMzczNzFENkNERjk4
MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmggKi8sCisJCQkJOTQ2RDM3MzUxRDZDREY5ODAwNzcw
ODRGIC8qIENTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcCAqLywKKwkJCQk5NDZEMzczODFENkNE
Rjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaCAqLywKKwkJCQk5NDZEMzcz
MjFENkNDMzcyMDA3NzA4NEYgLyogU1ZHQ1NTUGFyc2VyLmNwcCAqLywKIAkJCSk7CiAJCQluYW1l
ID0gcGFyc2VyOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIwOTQ2LDggKzIxMDAw
LDggQEAKIAkJCQlCRTZERjcxMDE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrTGlzdEN1
c3RvbS5jcHAgKi8sCiAJCQkJRkQ4QUE2M0IxNjk1MTQ4RTAwRDJFQTY4IC8qIEpTQmlxdWFkRmls
dGVyTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJODkzMURFNUExNEM0NEM0NDAwMERDOUQyIC8qIEpT
QmxvYkN1c3RvbS5jcHAgKi8sCi0JCQkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLywKIAkJCQk0NjU5RDI3MDFENkI5MDlG
MDA5NkZEODYgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0LmggKi8sCisJCQkJNDlFRUQxNEIx
MDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAq
LywKIAkJCQk3QzMzRjM1ODFCNEEwNDQ4MDA1MDJDQUYgLyogSlNDaGFyYWN0ZXJEYXRhQ3VzdG9t
LmNwcCAqLywKIAkJCQk0NkE1OEFDNDFENDZCM0ZBMDA0MzIwMzYgLyogSlNDbGllbnRSZWN0Q3Vz
dG9tLmNwcCAqLywKIAkJCQlBNTg0RkUzNzE4NjREQUMxMDA4NDNCMTAgLyogSlNDb21tYW5kTGlu
ZUFQSUhvc3RDdXN0b20uY3BwICovLApAQCAtMjIyNDAsMTMgKzIyMjk0LDEzIEBACiAJCQkJMzE2
RkUwOTIwRTZDQ0Q3RjAwQkY2MDg4IC8qIENTU0tleWZyYW1lc1J1bGUuaWRsICovLAogCQkJCUJD
NzcyRTE1MTMzMTYyQzIwMDFFQzlDRSAvKiBDU1NMaW5lQm94Q29udGFpblZhbHVlLmNwcCAqLywK
IAkJCQlCQzc3MkUxMjEzMzE2MjBDMDAxRUM5Q0UgLyogQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5o
ICovLAorCQkJCTk0NkQzNzQ3MUQ2RDA2MEMwMDc3MDg0RiAvKiBDU1NNYXJrdXAuY3BwICovLAor
CQkJCTk0NkQzNzQ4MUQ2RDA2MEMwMDc3MDg0RiAvKiBDU1NNYXJrdXAuaCAqLywKIAkJCQlBODBF
NkNEMjBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTTWVkaWFSdWxlLmNwcCAqLywKIAkJCQlBODBFNkNE
OTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTTWVkaWFSdWxlLmggKi8sCiAJCQkJODVDNTZDQTIwQUE4
OUMxMDAwRDk1NzU1IC8qIENTU01lZGlhUnVsZS5pZGwgKi8sCiAJCQkJMzE0QkUzQTIxQjMwRjZE
MTAwMTQxOTgyIC8qIENTU05hbWVkSW1hZ2VWYWx1ZS5jcHAgKi8sCiAJCQkJMzE0QkUzQTAxQjMw
RjZCNzAwMTQxOTgyIC8qIENTU05hbWVkSW1hZ2VWYWx1ZS5oICovLAotCQkJCUY5OEZGRjQyMTFB
MjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmNwcCAqLywKLQkJCQlGOThGRkY0MzExQTI2NzYy
MDBGNTQ4RTggLyogQ1NTT01VdGlscy5oICovLAogCQkJCUE4MEU2Q0NCMEExOTg5Q0EwMDdGQjhD
NSAvKiBDU1NQYWdlUnVsZS5jcHAgKi8sCiAJCQkJQTgwRTZDRDYwQTE5ODlDQTAwN0ZCOEM1IC8q
IENTU1BhZ2VSdWxlLmggKi8sCiAJCQkJODVDNTZDQTYwQUE4OUQ1RjAwRDk1NzU1IC8qIENTU1Bh
Z2VSdWxlLmlkbCAqLywKQEAgLTIzMTUzLDggKzIzMjA3LDYgQEAKIAkJCQlGQUJFNzJFRTEwNTlD
MUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oICovLAogCQkJCTBCQ0Y4M0VGMTA1OUMxRUIw
MEQ5OTlERCAvKiBNYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwICovLAogCQkJCTBCQ0Y4M0YwMTA1
OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxGcmFjdGlvbkVsZW1lbnQuaCAqLywKLQkJCQlGQUJFNzJF
RjEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAgKi8sCi0J
CQkJRkFCRTcyRjAxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQu
aCAqLywKIAkJCQlGQUJFNzJGMTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MTWF0aEVsZW1lbnQu
Y3BwICovLAogCQkJCUZBQkU3MkYyMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxNYXRoRWxlbWVu
dC5oICovLAogCQkJCUMzRTYxQzY1M0E2NDgwN0E4M0U3NkZCOCAvKiBNYXRoTUxNZW5jbG9zZUVs
ZW1lbnQuY3BwICovLApAQCAtMjMxNjUsNiArMjMyMTcsMTAgQEAKIAkJCQlGQTY1NEE2QTExMDhB
QkVEMDAyNjE2RjEgLyogTWF0aE1MT3BlcmF0b3JFbGVtZW50LmggKi8sCiAJCQkJQjU5Q0E1OUFG
MTcwRDhGQUE1QjhDQUJFIC8qIE1hdGhNTFBhZGRlZEVsZW1lbnQuY3BwICovLAogCQkJCUI1OUNB
ODQ5RDQxRTZGNjVEODExOThCQyAvKiBNYXRoTUxQYWRkZWRFbGVtZW50LmggKi8sCisJCQkJRkFC
RTcyRUYxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwICov
LAorCQkJCUZBQkU3MkYwMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxQcmVzZW50YXRpb25FbGVt
ZW50LmggKi8sCisJCQkJRkE3NjVBNjkxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFJvd0VsZW1l
bnQuY3BwICovLAorCQkJCUZBNzY1QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxSb3dFbGVt
ZW50LmggKi8sCiAJCQkJQjU5Q0E1OUFGMTcwRDhGQUE1QjhDOUFEIC8qIE1hdGhNTFNjcmlwdHNF
bGVtZW50LmNwcCAqLywKIAkJCQlCNTlDQTg0OUQ0MUU2RjY1RDgxMTk3QUIgLyogTWF0aE1MU2Ny
aXB0c0VsZW1lbnQuaCAqLywKIAkJCQlGNzVBMDU5QUYxNzBEOEZBQTVCOENBQkUgLyogTWF0aE1M
U2VsZWN0RWxlbWVudC5jcHAgKi8sCkBAIC0yMzE3Myw4ICsyMzIyOSw2IEBACiAJCQkJNEZBNjVB
NkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxlbWVudC5oICovLAogCQkJCUZBNjU0
QTY5MTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUb2tlbkVsZW1lbnQuY3BwICovLAogCQkJCUZB
NjU0QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUb2tlbkVsZW1lbnQuaCAqLywKLQkJCQlG
QTc2NUE2OTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MUm93RWxlbWVudC5jcHAgKi8sCi0JCQkJ
RkE3NjVBNkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFJvd0VsZW1lbnQuaCAqLywKIAkJCQlG
QTY1NEE2OTExMDhBQkVEMDAyNjI2RjEgLyogTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAgKi8s
CiAJCQkJRkE2NTRBNkExMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQu
aCAqLywKIAkJCQlGQUJFNzJGMzEwNTlDMUVCMDBEOTk5REQgLyogbWF0aHRhZ3MuaW4gKi8sCkBA
IC0yMzUzNiw4ICsyMzU5MCw2IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQk1MTA1OEFE
RTFENjc5MkMxMDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJNTEwNThBREMxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTcxNEVBRDFDRjY1OTUxMDA0NzIzQzQgLyogR0NPYnNlcnZhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDE3REE2REExMzczNEU2RTAwN0M1N0ZCIC8qIEludGVybmFscy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCRjdFRTAxNEM5MTc1QTAwMTQ0ODlEIC8qIEludGVybmFs
U2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLApAQCAtMjM1NTMsNiArMjM2MDUsOCBAQAogCQkJCUNE
QzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBNb2NrQ0RNLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
MUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTA1OEFEQzFENjc5MkMxMDA5QTUzOEMgLyog
TW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMDU4QURFMUQ2NzkyQzEwMDlBNTM4
QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDZGM0U5MTFD
MUVDQjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQky
RDk3RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBQTVGM0I4RDE2Q0MzM0QxMDA0NTVFQjAgLyogUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplck1vY2suaCBpbiBIZWFkZXJzICovLApAQCAtMjM2ODQsNyArMjM3MzgsNiBAQAog
CQkJCUJFRjI5RUVCMTcxNUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0RFM0E4NTQxN0Y1RkNFNjAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2
YXRlQVZGLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREUzQTg1ODE3RjYwMjA0MDBDNUJFMjAgLyog
QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTA1OEFFMjFE
NjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0Q1NEE3NjMxODBGOUY3MDAwQjA3NkM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0Q2QTRGODFCRjIzMDdEMDAxNzQxNDYg
LyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQz
MTYwOEIxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywK
QEAgLTIzOTY1LDcgKzI0MDE4LDYgQEAKIAkJCQkzMUJDNzQyRTFBQUZGNDVDMDA2QjQzNDAgLyog
Q1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDQUU5
RjkxMDE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkJENkFGODgxNUVGMjVDOTAwOEI3MTEwIC8qIENTU0Jhc2ljU2hhcGVzLmggaW4g
SGVhZGVycyAqLywKLQkJCQk1MTA1OEFFMDFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUxNkE4NEZBMTRDODVDQ0MwMDI5NzdERiAvKiBDU1NCb3Jk
ZXJJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyNzRCMkYxNDBFQkVCMjAwRUFERkE2IC8q
IENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlBRTJEOEYx
MzRFRTUwQzAwNzI5MjBBIC8qIENTU0NhbGN1bGF0aW9uVmFsdWUuaCBpbiBIZWFkZXJzICovLApA
QCAtMjQwMDUsMTYgKzI0MDU3LDI3IEBACiAJCQkJMzEyODhFNzMwRTMwMDVENjAwMzYxOUFFIC8q
IENTU0tleWZyYW1lUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEyODhFNzUwRTMwMDVENjAw
MzYxOUFFIC8qIENTU0tleWZyYW1lc1J1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzcyRTEz
MTMzMTYyMEMwMDFFQzlDRSAvKiBDU1NMaW5lQm94Q29udGFpblZhbHVlLmggaW4gSGVhZGVycyAq
LywKKwkJCQk5NDZEMzc0QTFENkQwNjI4MDA3NzA4NEYgLyogQ1NTTWFya3VwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBODBFNkQwMzBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTTWVkaWFSdWxlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkzMTRCRTNBMTFCMzBGNkI3MDAxNDE5ODIgLyogQ1NTTmFtZWRJbWFn
ZVZhbHVlLmggaW4gSGVhZGVycyAqLywKLQkJCQlGOThGRkY0NTExQTI2NzYyMDBGNTQ4RTggLyog
Q1NTT01VdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMDAwQTE5ODlDQTAwN0ZCOEM1
IC8qIENTU1BhZ2VSdWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZEMzcyRTFENkNCMjk0MDA3
NzA4NEYgLyogQ1NTUGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDlDNzcwMTFENkUxRDk4
MDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZE
Mzc0NDFENkNGN0IyMDA3NzA4NEYgLyogQ1NTUGFyc2VySWRpb21zLmggaW4gSGVhZGVycyAqLywK
KwkJCQk5NDZEMzcyRjFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyTW9kZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJOTQ5Qzc3MEIxRDZFNDlFRDAwQzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDlDNzcwOTFENkU0OTg3MDBDMERFNEYgLyogQ1NTUGFy
c2VyT2JzZXJ2ZXJXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZEMzc0MDFENkNFM0My
MDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW4uaCBpbiBIZWFkZXJzICovLAorCQkJCTk0NkQzNzRF
MUQ2RDA4QUEwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJhbmdlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk5NDZEMzczMTFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NzdCMzg2MzEyMjg4M0U5MDBCODFGRjggLyogQ1NTUHJlbG9hZFNjYW5u
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0U2MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQ
cmltaXRpdmVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFRDhBQzMwQ0M0OUJFMDAwQkZD
NTU3IC8qIENTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
MEU2Q0ZGMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzhEMDJCQzYxNTRBMThERjAwQjYyRDA1IC8qIENTU1Byb3BlcnR5QW5pbWF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk2NTY1ODBGNDA5RDEyQjIwMDAwRTYxRDcgLyogQ1NTUHJvcGVydHlO
YW1lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTQ2RDM3NDYxRDZEMDFENDAwNzcwODRGIC8qIENT
U1Byb3BlcnR5UGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDlDNzcwNTFENkUzOUVBMDBD
MERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
MkUzRDhERjEyMkVBMEQxMDAzQUU1QkMgLyogQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5MzYyNjQwQjBERTExMzdEMDA5RDVBMDAgLyogQ1NTUmVmbGVjdGlvbkRp
cmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1QTEyRTAwREMwNDE0ODAwQzlBRkFEIC8q
IENTU1JlZmxlY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDAzMCw2ICsyNDA5Myw4IEBA
CiAJCQkJQThFQTgwMDcwQTE5NTE2RTAwQThFRjVGIC8qIENTU1N0eWxlU2hlZXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZDNTREMDU3MTZBNzY3MzEwMDU3NUU0RCAvKiBDU1NTdXBwb3J0c1J1bGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDODBDOTg4MENEMjk0RUUwMEEwQjdCMyAvKiBDU1NUaW1p
bmdGdW5jdGlvblZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZEMzczQTFENkNERkMwMDA3
NzA4NEYgLyogQ1NTVG9rZW5pemVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZEMzczQzFENkNE
RkMwMDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaCBpbiBIZWFkZXJzICovLAog
CQkJCTlBQjFGMzgwMThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODgyREEyMzE1OTM4NDhEMDAwMTE1RUQgLyogQ1NTVG9T
dHlsZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzcxRjUzRTkwRDI3MDRGOTAwRUNFMEQ1IC8q
IENTU1VuaWNvZGVSYW5nZVZhbHVlLmggaW4gSGVhZGVycyAqLywKQEAgLTI0NzQ5LDYgKzI0ODE0
LDcgQEAKIAkJCQk2NURGMzIzQzA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNQYXR0ZXJuLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzIzQzA5RDFERTY1MDAxQkUzMjUgLyogSlNDYW52YXNQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFRUQxNDMxMDUxOTY5NDAwMDk5RkFCIC8qIEpT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY1OUQyNzExRDZC
OTBBNTAwOTZGRDg2IC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDlFRUQxNDUxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Y5QjdBMTBCQTYwMzI2MDA4NTQwNjQgLyogSlND
REFUQVNlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUZEQTE1RUEyMTJCMDNFRTEwMDNBNTgz
QSAvKiBKU0NoYW5uZWxNZXJnZXJOb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTI0OTc5LDcgKzI1
MDQ1LDYgQEAKIAkJCQlGRDIzQTEyNjEzRjVGQTU5MDBGNjcwMDEgLyogSlNNZWRpYUVsZW1lbnRB
dWRpb1NvdXJjZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYxNDE5MENENjgyNjkwMEZB
REE3NSAvKiBKU01lZGlhRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDM0MzOUI3MEMwRDNE
OEQwMDVGNEQ3QSAvKiBKU01lZGlhTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDY1OUQyNzEx
RDZCOTBBNTAwOTZGRDg2IC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTNENDM3QTMxRDU3QjdFMjAwQUI4NUVBIC8qIEpTTWVkaWFMaXN0Q3VzdG9tLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlEM0E5NEE0NzEyMkRDNDBGMDBBMzdCQkMgLyogSlNNZWRpYVF1
ZXJ5TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M1MzQzRkQxN0I3NEI2MzAwNDIzMkYwIC8q
IEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTE4Niw3ICsy
NTI1MSw2IEBACiAJCQkJQjJGQTNEQjUwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREI3MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NW
R1BhdGhTZWcuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREI5MEFCNzVBNkYwMDBFNUFDNCAv
KiBKU1NWR1BhdGhTZWdBcmNBYnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTk0NkQzNzJFMUQ2Q0Iy
OTQwMDc3MDg0RiAvKiBDU1NQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREJCMEFC
NzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdBcmNSZWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyRkEzREJEMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdDbG9zZVBhdGguaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyRkEzREJGMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdD
dXJ2ZXRvQ3ViaWNBYnMuaCBpbiBIZWFkZXJzICovLApAQCAtMjUzNTksNyArMjU0MjMsNiBAQAog
CQkJCUU0RTM5QUZCMTMzMEVGQTgwMDNBQjI3NCAvKiBMZWdhY3lUaWxlTGF5ZXJQb29sLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTJERDhGNTBEOTFFNkFGMDAwRjg5RUUgLyogTGVnYWN5V2ViQXJj
aGl2ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFNjVCRUIwRUFDREYxNjAwN0U0NTMzIC8qIExl
bmd0aC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTQ2RDM3MkYxRDZDQjI5NDAwNzcwODRGIC8qIENT
U1BhcnNlck1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkY2NDkxMEVBRDE1QzIwMEMxRDZG
NyAvKiBMZW5ndGhCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUU1QkE3RDYzMTUxNDM3Q0EwMEZF
MUUzRiAvKiBMZW5ndGhGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODcxNjcwMUM4
NjlEODMwMDRGRjBERSAvKiBMZW5ndGhQb2ludC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTQwNiwx
NCArMjU0NjksMTQgQEAKIAkJCQlGQUJFNzJGNTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDRBMjhBQUMxMkRGQjhBQzAwQUU5MjNCIC8qIE1h
dGhNTEVsZW1lbnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQkNGODNGNzEwNTlDMUVC
MDBEOTk5REQgLyogTWF0aE1MRnJhY3Rpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlG
QUJFNzJGNzEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkFCRTcyRjkxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTE1hdGhF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NEEyOEFBRjEyREZCOEJGMDBBRTkyM0IgLyog
TWF0aE1MTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZBNjU0QTZDMTEwOEFCRUQwMDI2MTZG
MSAvKiBNYXRoTUxPcGVyYXRvckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUZBQkU3MkY3
MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGQTc2NUE2QzExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MUm93RWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNEZBNjVBNkMxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNw
YWNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5MTc2RTAxMkRBMjVFMTdCQUY4MEEy
IC8qIE1hdGhNTFN0eWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQTY1NEE2QzExMDhBQkVEMDAy
NjE1RTAgLyogTWF0aE1MVG9rZW5FbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlGQTc2NUE2
QzExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MUm93RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkE2NTRBNkMxMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTQzOTA0NkVBMTJEQTI1RTgxMkFGODBBQyAvKiBNYXRoT3BlcmF0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RDVEQzJDMEY0MjNBNzMwMDhGMjBGRCAvKiBNYXRy
aXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTUzNCw2ICsyNTU5
Nyw4IEBACiAJCQkJNTJGMTA4NjYxNjJCNkRBODAwOUFDODFFIC8qIE1peGVkQ29udGVudENoZWNr
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMTI1MjQ5MUExNkMzQkMwMDg2NDQ4MCAvKiBNb2Jp
bGVHZXN0YWx0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYyQjAxMTE4MjA1NDA2MDBGMkI0
MjQgLyogTW9ja0JveC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwNThBRTAxRDY3QzIyOTAwOUE1
MzhDIC8qIE1vY2tHYW1lcGFkLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTA1OEFFMjFENjdDMjI5
MDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUVB
M0Q2REYxQzg1OUQ3RjAwMzAwQkJCIC8qIE1vY2tNZWRpYUVuZHBvaW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlDREYyQjAxMzE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhUGxheWVyTWVkaWFT
b3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjJCMDE1MTgyMDU0MDYwMEYyQjQyNCAvKiBN
b2NrTWVkaWFTb3VyY2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTI2NTM5LDcgKzI2NjA0
LDYgQEAKIAkJCQkwODEzQTRFQTEyODQxMzI2MDA5OTI1MTEgLyogU1ZHU3RhdGljUHJvcGVydHlU
ZWFyT2ZmLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FBOTBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHU3RvcEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUFDMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdTdHJpbmdMaXN0LmggaW4gSGVhZGVycyAqLywKLQkJCQk5NDZEMzczMTFENkNC
Mjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIy
N0FCODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3R5bGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjIyN0FCQjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU1ZHRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjIyMjdBQkUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N3aXRjaEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtMjcyNzIsNyArMjczMzYsNiBAQAogCQkJCTQxN0RBNkQ5MTM3
MzRFNkUwMDdDNTdGQiAvKiBJbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE3OUYw
REExQjk3NzRGRTAwRUQwQTI3IC8qIEludGVybmFscy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE3
QkY3RURGMTRDOTE3NUEwMDE0NDg5RCAvKiBJbnRlcm5hbFNldHRpbmdzLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzRTI5RTVFMTY3QThBMTkwMDU4NkQzRCAvKiBJbnRl
cm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNzE0RUIwMUNG
NjY1Q0UwMDQ3MjNDNCAvKiBKU0dDT2JzZXJ2YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDE3REE3MUQxMzczNURGQTAwN0M1N0ZCIC8qIEpTSW50ZXJuYWxzLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMjcyODIsMTIgKzI3MzQ1LDEzIEBACiAJCQkJQ0Q1MzkzRDMxNzVFMDE4NjAwQzA3MTIz
IC8qIEpTTWVtb3J5SW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTlBRUEyMjFBQUE4MDhB
MDBCNTJCMjUgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUExRTVCMzFGMUFBRDFEQTQwMDZFQkVGQiAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTEwNThBREIxRDY3OTJDMTAwOUE1
MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJENDE1MERFMUMxRjg2
OEMwMDBBM0JBMiAvKiBKU01vY2tQYWdlT3ZlcmxheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
QkY1MTIxQzE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0RDMjZCNDAxNjBBOENDNjAwMjY3NTdCIC8qIE1vY2tDRE0uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTFCRjZCODIxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50Rmls
dGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExQjVCMjlFMUFBQTg0NkUwMDhCNjA0MiAvKiBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMDU4QURC
MUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
MTA1OEFERDFENjc5MkMxMDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyRDZGM0U5MDFDMUVDQjI3MDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTdGMDQ3MTlERDQxM0MwMDFFRTlDMyAvKiBNb2Nr
UGFnZU92ZXJsYXlDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUE1RjNCOEYxNkNDNEIz
OTAwNDU1RUIwIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMjc2NzMsMTUgKzI3NzM3LDIzIEBACiAJCQkJMzEyODhFNzIwRTMwMDVENjAwMzYx
OUFFIC8qIENTU0tleWZyYW1lUnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTI4OEU3NDBF
MzAwNUQ2MDAzNjE5QUUgLyogQ1NTS2V5ZnJhbWVzUnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzc3MkUxNjEzMzE2MkMyMDAxRUM5Q0UgLyogQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk5NDZEMzc0OTFENkQwNjI4MDA3NzA4NEYgLyogQ1NTTWFya3Vw
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU2Q0ZDMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NN
ZWRpYVJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE0QkUzQTMxQjMwRjZEMTAwMTQxOTgy
IC8qIENTU05hbWVkSW1hZ2VWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGOThGRkY0NDEx
QTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBF
NkNGNTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUGFnZVJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJOTQ2RDM3MkQxRDZDQjI5NDAwNzcwODRGIC8qIENTU1BhcnNlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk5NDlDNzcwMDFENkUxRDk4MDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTk0OUM3NzA4MUQ2RTQ5ODcwMEMwREU0RiAvKiBDU1NQYXJz
ZXJPYnNlcnZlcldyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTQ2RDM3M0YxRDZDRTND
MjAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0NkQz
NzREMUQ2RDA4QTYwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJhbmdlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTk0NkQzNzMwMUQ2Q0IyOTQwMDc3MDg0RiAvKiBDU1NQYXJzZXJWYWx1ZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3QjM4NjIxMjI4ODNFOTAwQjgxRkY4IC8qIENTU1ByZWxv
YWRTY2FubmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU2RDA1MEExOTg5Q0EwMDdGQjhD
NSAvKiBDU1NQcmltaXRpdmVWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBFNkNGNzBB
MTk4OUNBMDA3RkI4QzUgLyogQ1NTUHJvcGVydHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzhE
MDJCQzUxNTRBMThERjAwQjYyRDA1IC8qIENTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBQkE3NkNBMTFEMjBFNTAwMDRDMjAxQyAvKiBDU1NQcm9wZXJ0eU5hbWVz
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0NkQzNzQ1MUQ2RDAxRDQwMDc3MDg0RiAvKiBDU1NQ
cm9wZXJ0eVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NDlDNzcwNDFENkUzOUVBMDBD
MERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTgyRTNEOERFMTIyRUEwRDEwMDNBRTVCQyAvKiBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkM1QTEyREYwREMwNDE0ODAwQzlBRkFEIC8qIENTU1JlZmxlY3RW
YWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzdEOEZGMzFCRDFBNDc5MDBGRkU1NDAgLyog
Q1NTUmV2ZXJ0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzY5NSw2ICsyNzc2Nyw4IEBA
CiAJCQkJQThFQTgwMDgwQTE5NTE2RTAwQThFRjVGIC8qIENTU1N0eWxlU2hlZXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkQ2Nzc3MzkxOTVDQUZCQTAwNzJFMEQzIC8qIENTU1N1cHBvcnRzUnVs
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzgwQzk4NzBDRDI5NEVFMDBBMEI3QjMgLyogQ1NT
VGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NDZEMzczOTFENkNE
RkMwMDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0NkQz
NzNCMUQ2Q0RGQzAwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5QUIxRjM4MTE4RTI0ODlBMDA1MzQ3NDMgLyogQ1NTVG9MZW5ndGhDb252
ZXJzaW9uRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODgyREEyMDE1OTM4NDZBMDAwMTE1
RUQgLyogQ1NTVG9TdHlsZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzFGNTNFQTBEMjcw
NEY5MDBFQ0UwRDUgLyogQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0yODM2Nyw2ICsyODQ0MSw3IEBACiAJCQkJOTc1Q0EyQTExMzAzNjc5RDAwRTk5QUQ5IC8qIEpT
Q3J5cHRvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTdBOEYwMTgxODU0MjUwMDlGODIxRCAv
KiBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFDNjU3
MTIxODE1RjlERDAwMjU2Q0REIC8qIEpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3Q0VGMjYxOTFENkE5MzE3MDBCRTkwNUQgLyogSlNDcnlwdG9DdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE1N0E4RTAxODE3MzMxQzAwOUY4MjFEIC8qIEpT
Q3J5cHRvS2V5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTdBOEU4MTgxODRDNjcwMDlGODIx
RCAvKiBKU0NyeXB0b0tleUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUY4MEI4RDE4
MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
Mjg2ODQsNyArMjg3NTksNiBAQAogCQkJCTFBNzUwRDhEMEE5MEU1MjEwMDBGRjIxNSAvKiBKU05v
ZGVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTc1MERENDBBOTBFNzI5MDAwRkYy
MTUgLyogSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNEOUMy
QzIwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
OTQ2RDM3MzAxRDZDQjI5NDAwNzcwODRGIC8qIENTU1BhcnNlclZhbHVlcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQ0Q5QzI2NTBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlTGlzdEN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzkxQTM4RjFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2Rl
T3JTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzM1MDNDQTMxMDE3OUFENzAwM0I0N0Ux
IC8qIEpTTm90aWZpY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkxMDEsMTkgKzI5MTc1
LDE5IEBACiAJCQkJRkFCRTcyRjQxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkFCRTcyRkQxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTEVs
ZW1lbnRGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBCQ0Y4M0Y2MTA1OUMxRUIwMEQ5
OTlERCAvKiBNYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkFC
RTcyRjYxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRkFCRTcyRjgxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTE1hdGhF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA1RDkxM0NFRUFCMkE2MDUzNDIxOEFDRiAv
KiBNYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkFCRTcyRkUx
MDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE2
RUEyNENFRUFCMkE2MDUzNDIxOEFDRiAvKiBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRkE2NTRBNkIxMTA4QUJFRDAwMjYxNkYxIC8qIE1hdGhNTE9wZXJh
dG9yRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTlDQTM5MENFRDY2QzMyNTVGNzJD
NTkgLyogTWF0aE1MUGFkZGVkRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGQUJFNzJG
NjEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlGQTc2NUE2QjExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MUm93RWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTlDQTM5MENFRDY2QzMyNTVGNzJCNDggLyogTWF0
aE1MU2NyaXB0c0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVENDgzOTBDRUQ2NkMz
MjU1RjcyQzU5IC8qIE1hdGhNTFNlbGVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NEZBNjVBNkIxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0MzkxNzZERjEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkE2NTRBNkIxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRv
a2VuRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGQTc2NUE2QjExMDhBQkVEMDAyNjE1
RTAgLyogTWF0aE1MUm93RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGQTY1NEE2QjEx
MDhBQkVEMDAyNjI2RjEgLyogTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0MzkwNDZFOTEyREEyNUU4MTJBRjgwQUMgLyogTWF0aE9wZXJhdG9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTQ5RDVEQzJCMEY0MjNBNzMwMDhGMjBGRCAvKiBNYXRyaXgzRFRyYW5z
Zm9ybU9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5MjE1LDYgKzI5Mjg5LDggQEAK
IAkJCQlDNTNEMzkzNDFDOTc4QTQ1MDA3RjNBRTkgLyogTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTJGMTA4NjUxNjJCNkRBNDAwOUFDODFFIC8qIE1peGVkQ29u
dGVudENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RGMkIwMTAxODIwNTQwNjAwRjJC
NDI0IC8qIE1vY2tCb3guY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEwNThBREYxRDY3QzIyOTAw
OUE1MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMDU4QUUxMUQ2
N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTVFQTNENkUwMUM4NTlEODQwMDMwMEJCQiAvKiBNb2NrTWVkaWFFbmRwb2ludC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDREYyQjAxMjE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RGMkIwMTQxODIwNTQwNjAw
RjJCNDI0IC8qIE1vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
OTI1Nyw3ICsyOTMzMyw2IEBACiAJCQkJNDQzRjA0MjcwRTc1QzhGQjAwN0U1NDA3IC8qIE5ldHdv
cmtTdGF0ZU5vdGlmaWVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3RkE2NDkwRERBM0NC
QTAwMjhGOEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyTWFjLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTVDM0M4NTZEMUQ1QTdBREUwMDg4QjlFQyAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb24uY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJNTEwNThBREYxRDY3QzIyOTAwOUE1MzhDIC8qIE1vY2tHYW1l
cGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxM0VGMzQ5MTY4NTBDNDcwMDM0QzgzRiAvKiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNjkzOTcy
NjFBNEE1RkJEMDBFODM0OUQgLyogTkZBLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2NzcyNjAw
MUE1QjNBRDkwMDNDMjRERCAvKiBORkFUb0RGQS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5Mjkx
LDcgKzI5MzY2LDYgQEAKIAkJCQlGREE5MzI1RDE2NzAzQjJBMDA4OTgyREMgLyogT2ZmbGluZUF1
ZGlvQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREEzRTk1QjEzNEE0OUVGMDA4RDRC
NUEgLyogT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyRDNEQTY0MEQwMDZDRDYwMEVGNkYzQSAvKiBPcGVuVHlwZUNHLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTUxMDU4QUUxMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUIyRDNEQTY0MEQwMDZDRDYwMEVGNkYyNyAvKiBPcGVuVHlw
ZU1hdGhEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERTdGQzQ0MTgxOTA0QjEwMDJCQkI3
NyAvKiBPcmRlckl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTAwMTQ2MjhBMTAzQ0Qx
REUwMDBCMjBEQiAvKiBPcmlnaW5BY2Nlc3NFbnRyeS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5
MzUwLDcgKzI5NDI0LDYgQEAKIAkJCQkwRjQzQzg1RDE4OUUxMENGMDAwMTlBRTIgLyogUGVyZm9y
bWFuY2VUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1ODFGQjQxNTIwRjkzQjAwM0E3
QTc1IC8qIFBlcmlvZGljV2F2ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUQ1REMyRDBGNDIz
QTczMDA4RjIwRkQgLyogUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJOTQ2RDM3MzMxRDZDQzQyQjAwNzcwODRGIC8qIFNWR0NTU1BhcnNlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlEMEZGMkE1RDExRjhDNDVBMDA3RTc0RTAgLyogUGluZ0xvYWRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDdEMzM0MzFDN0ExMjNGMDAwNDEyOTMgLyogUGl4
ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkRGNDVBNzFCRDFD
NkZEMDBFNEZBOEMgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI5NzY5LDcgKzI5ODQyLDYgQEAKIAkJCQk5MzMwOUUxNTA5OUU2NDkyMDA1NkU1ODEgLyogU3Bs
aXRUZXh0Tm9kZUNvbnRhaW5pbmdFbGVtZW50Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBMUUxMTU0ODEzMDE1QzVEMDA1NEFDOEMgLyogU3BvdExpZ2h0U291cmNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3QkM2QTNFMTUwNUYwODEwMDFCNzRBQyAvKiBTUUxFeGNlcHRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJN0NFRjI2MTkxRDZBOTMxNzAwQkU5MDVEIC8qIEpTQ3J5cHRv
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkU2RTdBMENDNTU2RDUwMDRBMjA2MiAv
KiBTUUxpdGVBdXRob3JpemVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMjI0NjQ5MENDOThE
REIwMEMwNTI0MCAvKiBTUUxpdGVEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RTQ3
NEUyMDEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMjk4ODQsNiArMjk5NTYsNyBAQAogCQkJCUIyMjI3OUExMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdDb2xvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlBNDBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjIyMjdCMDUwRDAwQkZGMTAwNzFCNzgyIC8qIFNWR0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NDZEMzczMzFENkNDNDJC
MDA3NzA4NEYgLyogU1ZHQ1NTUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUE3
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdDdXJzb3JFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUIyMjI3OUFEMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdEZWZzRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCMjIyNzlCMDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRGVzY0VsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDA4Niw3ICszMDE1OSw2IEBACiAJCQkJN0FBM0E2OTkx
OTRBNjRFNzAwMUNCRDI0IC8qIFRpbGVDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFGNzJCRjBBMTg3RkQ0NDkwMDA5QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJ
T1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FBM0E2QTMxOTRCNUMyMjAwMUNCRDI0IC8qIFRp
bGVDb3ZlcmFnZU1hcC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5NDZEMzcyRDFENkNCMjk0MDA3
NzA4NEYgLyogQ1NTUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBQTNBNjlCMTk0QTY0
RTcwMDFDQkQyNCAvKiBUaWxlR3JpZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTg3NzBGMjEy
NDJDNTM1MDAyMjI2QkEgLyogVGlsaW5nRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNTVC
M0REQjEyNTFGMTJEMDAzRUYyNjkgLyogVGltZUlucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNYXJrdXAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NNYXJrdXAuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NNYXJrdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTU4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDUgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIChrZGVAY2FyZXdvbGYu
Y29tKQorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5
LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNyBOaWNob2xhcyBTaGFua3MgPHdlYmtpdEBuaWNrc2hhbmtzLmNvbT4K
KyAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICog
Q29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
IChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRv
YmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NNYXJrdXAuaCIKKworI2luY2x1ZGUgIkNTU1Bh
cnNlcklkaW9tcy5oIgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+CitzdGF0aWMgaW5saW5lIGJvb2wgaXNDU1NUb2tlbml6ZXJJZGVudGlmaWVyKGNvbnN0IENo
YXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBjb25zdCBD
aGFyYWN0ZXJUeXBlKiBlbmQgPSBjaGFyYWN0ZXJzICsgbGVuZ3RoOworCisgICAgLy8gLT8KKyAg
ICBpZiAoY2hhcmFjdGVycyAhPSBlbmQgJiYgY2hhcmFjdGVyc1swXSA9PSAnLScpCisgICAgICAg
ICsrY2hhcmFjdGVyczsKKworICAgIC8vIHtubXN0YXJ0fQorICAgIGlmIChjaGFyYWN0ZXJzID09
IGVuZCB8fCAhaXNOYW1lU3RhcnRDb2RlUG9pbnQoY2hhcmFjdGVyc1swXSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICArK2NoYXJhY3RlcnM7CisKKyAgICAvLyB7bm1jaGFyfSoKKyAgICBm
b3IgKDsgY2hhcmFjdGVycyAhPSBlbmQ7ICsrY2hhcmFjdGVycykgeworICAgICAgICBpZiAoIWlz
TmFtZUNvZGVQb2ludChjaGFyYWN0ZXJzWzBdKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gImlkZW50IiBmcm9tIHRoZSBDU1Mg
dG9rZW5pemVyLCBtaW51cyBiYWNrc2xhc2gtZXNjYXBlIHNlcXVlbmNlcworc3RhdGljIGJvb2wg
aXNDU1NUb2tlbml6ZXJJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIHVu
c2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKworICAgIGlmICghbGVuZ3RoKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICBy
ZXR1cm4gaXNDU1NUb2tlbml6ZXJJZGVudGlmaWVyKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5n
dGgpOworICAgIHJldHVybiBpc0NTU1Rva2VuaXplcklkZW50aWZpZXIoc3RyaW5nLmNoYXJhY3Rl
cnMxNigpLCBsZW5ndGgpOworfQorCitzdGF0aWMgdm9pZCBzZXJpYWxpemVDaGFyYWN0ZXIoVUNo
YXIzMiBjLCBTdHJpbmdCdWlsZGVyJiBhcHBlbmRUbykKK3sKKyAgICBhcHBlbmRUby5hcHBlbmQo
J1xcJyk7CisgICAgYXBwZW5kVG8uYXBwZW5kKGMpOworfQorCitzdGF0aWMgdm9pZCBzZXJpYWxp
emVDaGFyYWN0ZXJBc0NvZGVQb2ludChVQ2hhcjMyIGMsIFN0cmluZ0J1aWxkZXImIGFwcGVuZFRv
KQoreworICAgIGFwcGVuZFRvLmFwcGVuZCgnXFwnKTsKKyAgICBhcHBlbmRVbnNpZ25lZEFzSGV4
KGMsIGFwcGVuZFRvLCBMb3dlcmNhc2UpOworICAgIGFwcGVuZFRvLmFwcGVuZCgnICcpOworfQor
Cit2b2lkIHNlcmlhbGl6ZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBTdHJp
bmdCdWlsZGVyJiBhcHBlbmRUbywgYm9vbCBza2lwU3RhcnRDaGVja3MpCit7CisgICAgYm9vbCBp
c0ZpcnN0ID0gIXNraXBTdGFydENoZWNrczsKKyAgICBib29sIGlzU2Vjb25kID0gZmFsc2U7Cisg
ICAgYm9vbCBpc0ZpcnN0Q2hhckh5cGhlbiA9IGZhbHNlOworICAgIHVuc2lnbmVkIGluZGV4ID0g
MDsKKyAgICB3aGlsZSAoaW5kZXggPCBpZGVudGlmaWVyLmxlbmd0aCgpKSB7CisgICAgICAgIFVD
aGFyMzIgYyA9IGlkZW50aWZpZXIuY2hhcmFjdGVyU3RhcnRpbmdBdChpbmRleCk7CisgICAgICAg
IGlmICghYykgeworICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGxvbmUgc3Vycm9nYXRlIHdoaWNo
IGNoYXJhY3RlclN0YXJ0aW5nQXQgZG9lcyBub3QgcmV0dXJuLgorICAgICAgICAgICAgYyA9IGlk
ZW50aWZpZXJbaW5kZXhdOworICAgICAgICB9CisKKyAgICAgICAgaW5kZXggKz0gVTE2X0xFTkdU
SChjKTsKKworICAgICAgICBpZiAoIWMpCisgICAgICAgICAgICBhcHBlbmRUby5hcHBlbmQoMHhm
ZmZkKTsKKyAgICAgICAgZWxzZSBpZiAoYyA8PSAweDFmIHx8IGMgPT0gMHg3ZiB8fCAoMHgzMCA8
PSBjICYmIGMgPD0gMHgzOSAmJiAoaXNGaXJzdCB8fCAoaXNTZWNvbmQgJiYgaXNGaXJzdENoYXJI
eXBoZW4pKSkpCisgICAgICAgICAgICBzZXJpYWxpemVDaGFyYWN0ZXJBc0NvZGVQb2ludChjLCBh
cHBlbmRUbyk7CisgICAgICAgIGVsc2UgaWYgKGMgPT0gMHgyZCAmJiBpc0ZpcnN0ICYmIGluZGV4
ID09IGlkZW50aWZpZXIubGVuZ3RoKCkpCisgICAgICAgICAgICBzZXJpYWxpemVDaGFyYWN0ZXIo
YywgYXBwZW5kVG8pOworICAgICAgICBlbHNlIGlmICgweDgwIDw9IGMgfHwgYyA9PSAweDJkIHx8
IGMgPT0gMHg1ZiB8fCAoMHgzMCA8PSBjICYmIGMgPD0gMHgzOSkgfHwgKDB4NDEgPD0gYyAmJiBj
IDw9IDB4NWEpIHx8ICgweDYxIDw9IGMgJiYgYyA8PSAweDdhKSkKKyAgICAgICAgICAgIGFwcGVu
ZFRvLmFwcGVuZChjKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2VyaWFsaXplQ2hhcmFj
dGVyKGMsIGFwcGVuZFRvKTsKKworICAgICAgICBpZiAoaXNGaXJzdCkgeworICAgICAgICAgICAg
aXNGaXJzdCA9IGZhbHNlOworICAgICAgICAgICAgaXNTZWNvbmQgPSB0cnVlOworICAgICAgICAg
ICAgaXNGaXJzdENoYXJIeXBoZW4gPSAoYyA9PSAweDJkKTsKKyAgICAgICAgfSBlbHNlIGlmIChp
c1NlY29uZCkKKyAgICAgICAgICAgIGlzU2Vjb25kID0gZmFsc2U7CisgICAgfQorfQorCit2b2lk
IHNlcmlhbGl6ZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgU3RyaW5nQnVpbGRlciYgYXBw
ZW5kVG8pCit7CisgICAgYXBwZW5kVG8uYXBwZW5kKCdcIicpOworCisgICAgdW5zaWduZWQgaW5k
ZXggPSAwOworICAgIHdoaWxlIChpbmRleCA8IHN0cmluZy5sZW5ndGgoKSkgeworICAgICAgICBV
Q2hhcjMyIGMgPSBzdHJpbmcuY2hhcmFjdGVyU3RhcnRpbmdBdChpbmRleCk7CisgICAgICAgIGlu
ZGV4ICs9IFUxNl9MRU5HVEgoYyk7CisKKyAgICAgICAgaWYgKGMgPD0gMHgxZiB8fCBjID09IDB4
N2YpCisgICAgICAgICAgICBzZXJpYWxpemVDaGFyYWN0ZXJBc0NvZGVQb2ludChjLCBhcHBlbmRU
byk7CisgICAgICAgIGVsc2UgaWYgKGMgPT0gMHgyMiB8fCBjID09IDB4NWMpCisgICAgICAgICAg
ICBzZXJpYWxpemVDaGFyYWN0ZXIoYywgYXBwZW5kVG8pOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBhcHBlbmRUby5hcHBlbmQoYyk7CisgICAgfQorCisgICAgYXBwZW5kVG8uYXBwZW5kKCdc
IicpOworfQorCitTdHJpbmcgc2VyaWFsaXplU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQor
eworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBzZXJpYWxpemVTdHJpbmcoc3RyaW5n
LCBidWlsZGVyKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitTdHJpbmcg
c2VyaWFsaXplVVJJKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIHJldHVybiAidXJsKCIg
KyBzZXJpYWxpemVTdHJpbmcoc3RyaW5nKSArICIpIjsKK30KKworU3RyaW5nIHNlcmlhbGl6ZUZv
bnRGYW1pbHkoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgcmV0dXJuIGlzQ1NTVG9rZW5p
emVySWRlbnRpZmllcihzdHJpbmcpID8gc3RyaW5nIDogc2VyaWFsaXplU3RyaW5nKHN0cmluZyk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NNYXJrdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWFya3VwLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU01hcmt1cC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgTGFycyBL
bm9sbCAoa25vbGxAa2RlLm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOSAtIDIwMTAgIFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2lmbmRlZiBDU1NNYXJrdXBfaAorI2RlZmluZSBDU1NNYXJrdXBfaAor
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKy8vIEhlbHBlciBmdW5jdGlvbnMg
Zm9yIGNvbnZlcnRpbmcgZnJvbSBDU1NWYWx1ZXMgdG8gdGV4dC4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisvLyBDb21tb24gc2VyaWFsaXppbmcgbWV0aG9kcy4gU2VlOiBodHRwOi8vZGV2Lncz
Lm9yZy9jc3N3Zy9jc3NvbS8jY29tbW9uLXNlcmlhbGl6aW5nLWlkaW9tcwordm9pZCBzZXJpYWxp
emVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgU3RyaW5nQnVpbGRlciYgYXBw
ZW5kVG8sIGJvb2wgc2tpcFN0YXJ0Q2hlY2tzID0gZmFsc2UpOwordm9pZCBzZXJpYWxpemVTdHJp
bmcoY29uc3QgU3RyaW5nJiwgU3RyaW5nQnVpbGRlciYgYXBwZW5kVG8pOworU3RyaW5nIHNlcmlh
bGl6ZVN0cmluZyhjb25zdCBTdHJpbmcmKTsKK1N0cmluZyBzZXJpYWxpemVVUkkoY29uc3QgU3Ry
aW5nJik7CitTdHJpbmcgc2VyaWFsaXplRm9udEZhbWlseShjb25zdCBTdHJpbmcmKTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ1NTTWFya3VwX2gKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NPTVV0aWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTT01VdGlscy5jcHAJKHJldmlzaW9uIDIwNDk3OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NPTVV0aWxzLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDEwNiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNTU09NVXRpbHMuaCIKLQotI2luY2x1ZGUgPHd0Zi9I
ZXhOdW1iZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotdm9pZCBzZXJpYWxpemVDaGFyYWN0ZXIoVUNoYXIzMiBjLCBTdHJp
bmdCdWlsZGVyJiBhcHBlbmRUbykKLXsKLSAgICBhcHBlbmRUby5hcHBlbmQoJ1xcJyk7Ci0gICAg
YXBwZW5kVG8uYXBwZW5kKGMpOwotfQotCi12b2lkIHNlcmlhbGl6ZUNoYXJhY3RlckFzQ29kZVBv
aW50KFVDaGFyMzIgYywgU3RyaW5nQnVpbGRlciYgYXBwZW5kVG8pCi17Ci0gICAgYXBwZW5kVG8u
YXBwZW5kKCdcXCcpOwotICAgIGFwcGVuZFVuc2lnbmVkQXNIZXgoYywgYXBwZW5kVG8sIExvd2Vy
Y2FzZSk7Ci0gICAgYXBwZW5kVG8uYXBwZW5kKCcgJyk7Ci19Ci0KLXZvaWQgc2VyaWFsaXplSWRl
bnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFN0cmluZ0J1aWxkZXImIGFwcGVuZFRv
KQotewotICAgIGJvb2wgaXNGaXJzdCA9IHRydWU7Ci0gICAgYm9vbCBpc1NlY29uZCA9IGZhbHNl
OwotICAgIGJvb2wgaXNGaXJzdENoYXJIeXBoZW4gPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBpbmRl
eCA9IDA7Ci0gICAgd2hpbGUgKGluZGV4IDwgaWRlbnRpZmllci5sZW5ndGgoKSkgewotICAgICAg
ICBVQ2hhcjMyIGMgPSBpZGVudGlmaWVyLmNoYXJhY3RlclN0YXJ0aW5nQXQoaW5kZXgpOwotICAg
ICAgICBpZiAoIWMpIHsKLSAgICAgICAgICAgIC8vIENoZWNrIGZvciBsb25lIHN1cnJvZ2F0ZSB3
aGljaCBjaGFyYWN0ZXJTdGFydGluZ0F0IGRvZXMgbm90IHJldHVybi4KLSAgICAgICAgICAgIGMg
PSBpZGVudGlmaWVyW2luZGV4XTsKLSAgICAgICAgfQotCi0gICAgICAgIGluZGV4ICs9IFUxNl9M
RU5HVEgoYyk7Ci0KLSAgICAgICAgaWYgKCFjKQotICAgICAgICAgICAgYXBwZW5kVG8uYXBwZW5k
KDB4ZmZmZCk7Ci0gICAgICAgIGVsc2UgaWYgKGMgPD0gMHgxZiB8fCBjID09IDB4N2YgfHwgKDB4
MzAgPD0gYyAmJiBjIDw9IDB4MzkgJiYgKGlzRmlyc3QgfHwgKGlzU2Vjb25kICYmIGlzRmlyc3RD
aGFySHlwaGVuKSkpKQotICAgICAgICAgICAgc2VyaWFsaXplQ2hhcmFjdGVyQXNDb2RlUG9pbnQo
YywgYXBwZW5kVG8pOwotICAgICAgICBlbHNlIGlmIChjID09IDB4MmQgJiYgaXNGaXJzdCAmJiBp
bmRleCA9PSBpZGVudGlmaWVyLmxlbmd0aCgpKQotICAgICAgICAgICAgc2VyaWFsaXplQ2hhcmFj
dGVyKGMsIGFwcGVuZFRvKTsKLSAgICAgICAgZWxzZSBpZiAoMHg4MCA8PSBjIHx8IGMgPT0gMHgy
ZCB8fCBjID09IDB4NWYgfHwgKDB4MzAgPD0gYyAmJiBjIDw9IDB4MzkpIHx8ICgweDQxIDw9IGMg
JiYgYyA8PSAweDVhKSB8fCAoMHg2MSA8PSBjICYmIGMgPD0gMHg3YSkpCi0gICAgICAgICAgICBh
cHBlbmRUby5hcHBlbmQoYyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNlcmlhbGl6ZUNo
YXJhY3RlcihjLCBhcHBlbmRUbyk7Ci0KLSAgICAgICAgaWYgKGlzRmlyc3QpIHsKLSAgICAgICAg
ICAgIGlzRmlyc3QgPSBmYWxzZTsKLSAgICAgICAgICAgIGlzU2Vjb25kID0gdHJ1ZTsKLSAgICAg
ICAgICAgIGlzRmlyc3RDaGFySHlwaGVuID0gKGMgPT0gMHgyZCk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoaXNTZWNvbmQpCi0gICAgICAgICAgICBpc1NlY29uZCA9IGZhbHNlOwotICAgIH0KLX0KLQot
dm9pZCBzZXJpYWxpemVTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIFN0cmluZ0J1aWxkZXIm
IGFwcGVuZFRvKQotewotICAgIGFwcGVuZFRvLmFwcGVuZCgnXCInKTsKLQotICAgIHVuc2lnbmVk
IGluZGV4ID0gMDsKLSAgICB3aGlsZSAoaW5kZXggPCBzdHJpbmcubGVuZ3RoKCkpIHsKLSAgICAg
ICAgVUNoYXIzMiBjID0gc3RyaW5nLmNoYXJhY3RlclN0YXJ0aW5nQXQoaW5kZXgpOwotICAgICAg
ICBpbmRleCArPSBVMTZfTEVOR1RIKGMpOwotICAgICAgICBpZiAoYyA8PSAweDFmKQotICAgICAg
ICAgICAgc2VyaWFsaXplQ2hhcmFjdGVyQXNDb2RlUG9pbnQoYywgYXBwZW5kVG8pOwotICAgICAg
ICBlbHNlIGlmIChjID09IDB4MjIgfHwgYyA9PSAweDVjKQotICAgICAgICAgICAgc2VyaWFsaXpl
Q2hhcmFjdGVyKGMsIGFwcGVuZFRvKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXBwZW5k
VG8uYXBwZW5kKGMpOwotICAgIH0KLQotICAgIGFwcGVuZFRvLmFwcGVuZCgnXCInKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNv
cmUvY3NzL0NTU09NVXRpbHMuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQoj
IyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL0NTU09NVXRpbHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTT01VdGlscy5oCShyZXZpc2lvbiAyMDQ5NzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTT01VdGlscy5oCShub25leGlzdGVudCkKQEAgLTEsNDYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaW5jbHVkZSA8dW5pY29kZS91bWFjaGluZS5oPgotI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+Ci0KLS8vIFV0aWxpdGllcyBmb3IgQ1NTT00gaHR0cDovL2Rldi53My5vcmcvY3Nz
d2cvY3Nzb20vCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gQ29tbW9uIHNlcmlhbGl6aW5n
IG1ldGhvZHMuIFNlZTogaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nzb20vI2NvbW1vbi1zZXJp
YWxpemluZy1pZGlvbXMKLXZvaWQgc2VyaWFsaXplQ2hhcmFjdGVyKFVDaGFyMzIsIFN0cmluZ0J1
aWxkZXImKTsKLXZvaWQgc2VyaWFsaXplQ2hhcmFjdGVyQXNDb2RlUG9pbnQoVUNoYXIzMiwgU3Ry
aW5nQnVpbGRlciYpOwotdm9pZCBzZXJpYWxpemVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllciwgU3RyaW5nQnVpbGRlciYpOwotdm9pZCBzZXJpYWxpemVTdHJpbmcoY29uc3QgU3Ry
aW5nJiwgU3RyaW5nQnVpbGRlciYpOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTT01VdGlscy5oCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
RGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCShy
ZXZpc2lvbiAyMDQ5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiQ1NTU2VsZWN0b3IuaCIKIAotI2luY2x1ZGUgIkNTU09NVXRpbHMuaCIKKyNpbmNsdWRl
ICJDU1NNYXJrdXAuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKICNpbmNsdWRlICJTZWxlY3RvclBzZXVkb1R5cGVNYXAuaCIKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NOYW1lc3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9ET01DU1NOYW1lc3BhY2UuY3BwCShyZXZpc2lvbiAyMDQ5NzgpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTTmFtZXNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNyArMzAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRPTUNTU05hbWVz
cGFjZS5oIgogCi0jaW5jbHVkZSAiQ1NTT01VdGlscy5oIgorI2luY2x1ZGUgIkNTU01hcmt1cC5o
IgogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTExNyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgVGhlIENocm9t
aXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NQ
YXJzZXJGYXN0UGF0aHMuaCIKKworLy8gRklYTUUtTkVXUEFSU0VSOiAjaW5jbHVkZSAiQ1NTQ29s
b3JWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0Z1bmN0aW9uVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NJ
bmhlcml0ZWRWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0luaXRpYWxWYWx1ZS5oIgorI2luY2x1ZGUg
IkNTU1BhcnNlcklkaW9tcy5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCisjaW5j
bHVkZSAiQ1NTUHJvcGVydHlQYXJzZXIuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgi
CisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorLy8gRklYTUUtTkVXUEFSU0VS
OiAjaW5jbHVkZSAiU3R5bGVDb2xvci5oIgorI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTaG9ydGhh
bmQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvKiBGSVhNRS1ORVdQQVJTRVI6IFR1cm4g
b2ZmIGZvciBub3cuCisgCitzdGF0aWMgaW5saW5lIGJvb2wgaXNTaW1wbGVMZW5ndGhQcm9wZXJ0
eUlEKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCwgYm9vbCYgYWNjZXB0c05lZ2F0aXZlTnVtYmVy
cykKK3sKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9u
dFNpemU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRDb2x1bW5HYXA6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUdyaWRSb3dHYXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUhlaWdodDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbkhlaWdodDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5TWluV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0
b206CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlQYWRkaW5nUmlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdUb3A6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TG9naWNhbEhlaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbFdp
ZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsSGVpZ2h0OgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nQWZ0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFBhZGRpbmdCZWZvcmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdFbmQ6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdTdGFydDoKKyAgLy8gIGNhc2UgQ1NT
UHJvcGVydHlTaGFwZU1hcmdpbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5UjoKKyAgICBjYXNlIENT
U1Byb3BlcnR5Ung6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVJ5OgorICAgICAgICBhY2NlcHRzTmVn
YXRpdmVOdW1iZXJzID0gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3R0b206CisgICAgY2FzZSBDU1NQcm9wZXJ0eUN4OgorICAgIGNhc2UgQ1NTUHJv
cGVydHlDeToKKyAgICBjYXNlIENTU1Byb3BlcnR5TGVmdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
TWFyZ2luQm90dG9tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlNYXJnaW5SaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luVG9wOgor
IC8vICAgY2FzZSBDU1NQcm9wZXJ0eU1vdGlvbk9mZnNldDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
UmlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRvcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFyZ2luQWZ0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZToK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luRW5kOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXJnaW5TdGFydDoKKyAgICBjYXNlIENTU1Byb3BlcnR5WDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5WToKKyAgICAgICAgYWNjZXB0c05lZ2F0aXZlTnVtYmVycyA9IHRydWU7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGlubGlu
ZSBib29sIHBhcnNlU2ltcGxlTGVuZ3RoKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyYgdW5pdCwgZG91
YmxlJiBudW1iZXIpCit7CisgICAgaWYgKGxlbmd0aCA+IDIgJiYgKGNoYXJhY3RlcnNbbGVuZ3Ro
IC0gMl0gfCAweDIwKSA9PSAncCcgJiYgKGNoYXJhY3RlcnNbbGVuZ3RoIC0gMV0gfCAweDIwKSA9
PSAneCcpIHsKKyAgICAgICAgbGVuZ3RoIC09IDI7CisgICAgICAgIHVuaXQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUFg7CisgICAgfSBlbHNlIGlmIChsZW5ndGggPiAxICYm
IGNoYXJhY3RlcnNbbGVuZ3RoIC0gMV0gPT0gJyUnKSB7CisgICAgICAgIGxlbmd0aCAtPSAxOwor
ICAgICAgICB1bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1BFUkNFTlRB
R0U7CisgICAgfQorCisgICAgLy8gV2UgcmVseSBvbiBjaGFyYWN0ZXJzVG9Eb3VibGUgZm9yIHZh
bGlkYXRpb24gYXMgd2VsbC4gVGhlIGZ1bmN0aW9uCisgICAgLy8gd2lsbCBzZXQgIm9rIiB0byAi
ZmFsc2UiIGlmIHRoZSBlbnRpcmUgcGFzc2VkLWluIGNoYXJhY3RlciByYW5nZSBkb2VzCisgICAg
Ly8gbm90IHJlcHJlc2VudCBhIGRvdWJsZS4KKyAgICBib29sIG9rOworICAgIG51bWJlciA9IGNo
YXJhY3RlcnNUb0RvdWJsZShjaGFyYWN0ZXJzLCBsZW5ndGgsICZvayk7CisgICAgaWYgKCFvaykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG51bWJlciA9IGNsYW1wVG88ZG91YmxlPihudW1i
ZXIsIC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCksIHN0ZDo6bnVtZXJpY19saW1p
dHM8ZmxvYXQ+OjptYXgoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBDU1NWYWx1
ZSogcGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQsIGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgQVNT
RVJUKCFzdHJpbmcuaXNFbXB0eSgpKTsKKyAgICBib29sIGFjY2VwdHNOZWdhdGl2ZU51bWJlcnMg
PSBmYWxzZTsKKworICAgIC8vIEluIEB2aWV3cG9ydCwgd2lkdGggYW5kIGhlaWdodCBhcmUgc2hv
cnRoYW5kcywgbm90IHNpbXBsZSBsZW5ndGggdmFsdWVzLgorICAgIGlmIChpc0NTU1ZpZXdwb3J0
UGFyc2luZ0VuYWJsZWRGb3JNb2RlKGNzc1BhcnNlck1vZGUpIHx8ICFpc1NpbXBsZUxlbmd0aFBy
b3BlcnR5SUQocHJvcGVydHlJZCwgYWNjZXB0c05lZ2F0aXZlTnVtYmVycykpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwor
ICAgIGRvdWJsZSBudW1iZXI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB1bml0
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6TnVtYmVyOworCisgICAgaWYgKHN0cmlu
Zy5pczhCaXQoKSkgeworICAgICAgICBpZiAoIXBhcnNlU2ltcGxlTGVuZ3RoKHN0cmluZy5jaGFy
YWN0ZXJzOCgpLCBsZW5ndGgsIHVuaXQsIG51bWJlcikpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIXBhcnNlU2ltcGxlTGVuZ3RoKHN0cmlu
Zy5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoLCB1bml0LCBudW1iZXIpKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKHVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlczo6TnVtYmVyKSB7CisgICAgICAgIGlmIChjc3NQYXJzZXJNb2RlID09IFNWR0F0
dHJpYnV0ZU1vZGUpCisgICAgICAgICAgICB1bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlczo6VXNlclVuaXRzOworICAgICAgICBlbHNlIGlmICghbnVtYmVyKQorICAgICAgICAgICAg
dW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OlBpeGVsczsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKG51bWJlciA8
IDAgJiYgIWFjY2VwdHNOZWdhdGl2ZU51bWJlcnMpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobnVtYmVyLCB1bml0KTsKK30K
Kworc3RhdGljIGlubGluZSBib29sIGlzQ29sb3JQcm9wZXJ0eUlEKENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJZCkKK3sKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
ckxlZnRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcjoKKyAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGw6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsb29kQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxp
Z2h0aW5nQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5U3RvcENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2U6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3I6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJFbmRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xv
cjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1uUnVsZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VGV4dEZpbGxDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9y
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkNvbG9yOgorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQor
CisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB3aGljaCBmb3JtIGEgdmFsaWQg
ZG91YmxlCisvLyBhbmQgYXJlIHRlcm1pbmF0ZWQgYnkgdGhlIGdpdmVuIHRlcm1pbmF0b3IgY2hh
cmFjdGVyCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBpbnQgY2hl
Y2tGb3JWYWxpZERvdWJsZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBzdHJpbmcsIGNvbnN0IENoYXJh
Y3RlclR5cGUqIGVuZCwgY29uc3QgY2hhciB0ZXJtaW5hdG9yKQoreworICAgIGludCBsZW5ndGgg
PSBlbmQgLSBzdHJpbmc7CisgICAgaWYgKGxlbmd0aCA8IDEpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgYm9vbCBkZWNpbWFsTWFya1NlZW4gPSBmYWxzZTsKKyAgICBpbnQgcHJvY2Vzc2VkTGVu
Z3RoID0gMDsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgaWYgKHN0cmluZ1tpXSA9PSB0ZXJtaW5hdG9yKSB7CisgICAgICAgICAgICBwcm9jZXNzZWRM
ZW5ndGggPSBpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFp
c0FTQ0lJRGlnaXQoc3RyaW5nW2ldKSkgeworICAgICAgICAgICAgaWYgKCFkZWNpbWFsTWFya1Nl
ZW4gJiYgc3RyaW5nW2ldID09ICcuJykKKyAgICAgICAgICAgICAgICBkZWNpbWFsTWFya1NlZW4g
PSB0cnVlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICB9CisgICAgfQorCisgICAgaWYgKGRlY2ltYWxNYXJrU2VlbiAmJiBwcm9jZXNzZWRMZW5n
dGggPT0gMSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gcHJvY2Vzc2VkTGVuZ3Ro
OworfQorCisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBjb25zdW1lZCBmb3Ig
cGFyc2luZyBhIHZhbGlkIGRvdWJsZQorLy8gdGVybWluYXRlZCBieSB0aGUgZ2l2ZW4gdGVybWlu
YXRvciBjaGFyYWN0ZXIKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGlj
IGludCBwYXJzZURvdWJsZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBzdHJpbmcsIGNvbnN0IENoYXJh
Y3RlclR5cGUqIGVuZCwgY29uc3QgY2hhciB0ZXJtaW5hdG9yLCBkb3VibGUmIHZhbHVlKQorewor
ICAgIGludCBsZW5ndGggPSBjaGVja0ZvclZhbGlkRG91YmxlKHN0cmluZywgZW5kLCB0ZXJtaW5h
dG9yKTsKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpbnQgcG9z
aXRpb24gPSAwOworICAgIGRvdWJsZSBsb2NhbFZhbHVlID0gMDsKKworICAgIC8vIFRoZSBjb25z
dW1lZCBjaGFyYWN0ZXJzIGhlcmUgYXJlIGd1YXJhbnRlZWQgdG8gYmUKKyAgICAvLyBBU0NJSSBk
aWdpdHMgd2l0aCBvciB3aXRob3V0IGEgZGVjaW1hbCBtYXJrCisgICAgZm9yICg7IHBvc2l0aW9u
IDwgbGVuZ3RoOyArK3Bvc2l0aW9uKSB7CisgICAgICAgIGlmIChzdHJpbmdbcG9zaXRpb25dID09
ICcuJykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBsb2NhbFZhbHVlID0gbG9jYWxWYWx1
ZSAqIDEwICsgc3RyaW5nW3Bvc2l0aW9uXSAtICcwJzsKKyAgICB9CisKKyAgICBpZiAoKytwb3Np
dGlvbiA9PSBsZW5ndGgpIHsKKyAgICAgICAgdmFsdWUgPSBsb2NhbFZhbHVlOworICAgICAgICBy
ZXR1cm4gbGVuZ3RoOworICAgIH0KKworICAgIGRvdWJsZSBmcmFjdGlvbiA9IDA7CisgICAgZG91
YmxlIHNjYWxlID0gMTsKKworICAgIGNvbnN0IGRvdWJsZSBtYXhTY2FsZSA9IDEwMDAwMDA7Cisg
ICAgd2hpbGUgKHBvc2l0aW9uIDwgbGVuZ3RoICYmIHNjYWxlIDwgbWF4U2NhbGUpIHsKKyAgICAg
ICAgZnJhY3Rpb24gPSBmcmFjdGlvbiAqIDEwICsgc3RyaW5nW3Bvc2l0aW9uKytdIC0gJzAnOwor
ICAgICAgICBzY2FsZSAqPSAxMDsKKyAgICB9CisKKyAgICB2YWx1ZSA9IGxvY2FsVmFsdWUgKyBm
cmFjdGlvbiAvIHNjYWxlOworICAgIHJldHVybiBsZW5ndGg7Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGJvb2wgcGFyc2VDb2xvckludE9yUGVyY2VudGFn
ZShjb25zdCBDaGFyYWN0ZXJUeXBlKiYgc3RyaW5nLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBlbmQs
IGNvbnN0IGNoYXIgdGVybWluYXRvciwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyYgZXhw
ZWN0LCBpbnQmIHZhbHVlKQoreworICAgIGNvbnN0IENoYXJhY3RlclR5cGUqIGN1cnJlbnQgPSBz
dHJpbmc7CisgICAgZG91YmxlIGxvY2FsVmFsdWUgPSAwOworICAgIGJvb2wgbmVnYXRpdmUgPSBm
YWxzZTsKKyAgICB3aGlsZSAoY3VycmVudCAhPSBlbmQgJiYgaXNIVE1MU3BhY2U8Q2hhcmFjdGVy
VHlwZT4oKmN1cnJlbnQpKQorICAgICAgICBjdXJyZW50Kys7CisgICAgaWYgKGN1cnJlbnQgIT0g
ZW5kICYmICpjdXJyZW50ID09ICctJykgeworICAgICAgICBuZWdhdGl2ZSA9IHRydWU7CisgICAg
ICAgIGN1cnJlbnQrKzsKKyAgICB9CisgICAgaWYgKGN1cnJlbnQgPT0gZW5kIHx8ICFpc0FTQ0lJ
RGlnaXQoKmN1cnJlbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgd2hpbGUgKGN1cnJl
bnQgIT0gZW5kICYmIGlzQVNDSUlEaWdpdCgqY3VycmVudCkpIHsKKyAgICAgICAgZG91YmxlIG5l
d1ZhbHVlID0gbG9jYWxWYWx1ZSAqIDEwICsgKmN1cnJlbnQrKyAtICcwJzsKKyAgICAgICAgaWYg
KG5ld1ZhbHVlID49IDI1NSkgeworICAgICAgICAgICAgLy8gQ2xhbXAgdmFsdWVzIGF0IDI1NS4K
KyAgICAgICAgICAgIGxvY2FsVmFsdWUgPSAyNTU7CisgICAgICAgICAgICB3aGlsZSAoY3VycmVu
dCAhPSBlbmQgJiYgaXNBU0NJSURpZ2l0KCpjdXJyZW50KSkKKyAgICAgICAgICAgICAgICArK2N1
cnJlbnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBsb2NhbFZhbHVl
ID0gbmV3VmFsdWU7CisgICAgfQorCisgICAgaWYgKGN1cnJlbnQgPT0gZW5kKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoZXhwZWN0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZXM6Ok51bWJlciAmJiAoKmN1cnJlbnQgPT0gJy4nIHx8ICpjdXJyZW50ID09ICclJykpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgqY3VycmVudCA9PSAnLicpIHsKKyAgICAg
ICAgLy8gV2UgYWxyZWFkeSBwYXJzZWQgdGhlIGludGVncmFsIHBhcnQsIHRyeSB0byBwYXJzZQor
ICAgICAgICAvLyB0aGUgZnJhY3Rpb24gcGFydCBvZiB0aGUgcGVyY2VudGFnZSB2YWx1ZS4KKyAg
ICAgICAgZG91YmxlIHBlcmNlbnRhZ2UgPSAwOworICAgICAgICBpbnQgbnVtQ2hhcmFjdGVyc1Bh
cnNlZCA9IHBhcnNlRG91YmxlKGN1cnJlbnQsIGVuZCwgJyUnLCBwZXJjZW50YWdlKTsKKyAgICAg
ICAgaWYgKCFudW1DaGFyYWN0ZXJzUGFyc2VkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBjdXJyZW50ICs9IG51bUNoYXJhY3RlcnNQYXJzZWQ7CisgICAgICAgIGlmICgqY3Vy
cmVudCAhPSAnJScpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGxvY2FsVmFs
dWUgKz0gcGVyY2VudGFnZTsKKyAgICB9CisKKyAgICBpZiAoZXhwZWN0ID09IENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZXM6OlBlcmNlbnRhZ2UgJiYgKmN1cnJlbnQgIT0gJyUnKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoKmN1cnJlbnQgPT0gJyUnKSB7CisgICAgICAgIGV4
cGVjdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OlBlcmNlbnRhZ2U7CisgICAgICAg
IGxvY2FsVmFsdWUgPSBsb2NhbFZhbHVlIC8gMTAwLjAgKiAyNTYuMDsKKyAgICAgICAgLy8gQ2xh
bXAgdmFsdWVzIGF0IDI1NSBmb3IgcGVyY2VudGFnZXMgb3ZlciAxMDAlCisgICAgICAgIGlmIChs
b2NhbFZhbHVlID4gMjU1KQorICAgICAgICAgICAgbG9jYWxWYWx1ZSA9IDI1NTsKKyAgICAgICAg
Y3VycmVudCsrOworICAgIH0gZWxzZSB7CisgICAgICAgIGV4cGVjdCA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZXM6Ok51bWJlcjsKKyAgICB9CisKKyAgICB3aGlsZSAoY3VycmVudCAhPSBl
bmQgJiYgaXNIVE1MU3BhY2U8Q2hhcmFjdGVyVHlwZT4oKmN1cnJlbnQpKQorICAgICAgICBjdXJy
ZW50Kys7CisgICAgaWYgKGN1cnJlbnQgPT0gZW5kIHx8ICpjdXJyZW50KysgIT0gdGVybWluYXRv
cikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIENsYW1wIG5lZ2F0aXZlIHZhbHVlcyBh
dCB6ZXJvLgorICAgIHZhbHVlID0gbmVnYXRpdmUgPyAwIDogc3RhdGljX2Nhc3Q8aW50Pihsb2Nh
bFZhbHVlKTsKKyAgICBzdHJpbmcgPSBjdXJyZW50OworICAgIHJldHVybiB0cnVlOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1Rl
bnRoQWxwaGEoY29uc3QgQ2hhcmFjdGVyVHlwZSogc3RyaW5nLCBjb25zdCBpbnQgbGVuZ3RoKQor
eworICAgIC8vICIwLlgiCisgICAgaWYgKGxlbmd0aCA9PSAzICYmIHN0cmluZ1swXSA9PSAnMCcg
JiYgc3RyaW5nWzFdID09ICcuJyAmJiBpc0FTQ0lJRGlnaXQoc3RyaW5nWzJdKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICAvLyAiLlgiCisgICAgaWYgKGxlbmd0aCA9PSAyICYmIHN0cmlu
Z1swXSA9PSAnLicgJiYgaXNBU0NJSURpZ2l0KHN0cmluZ1sxXSkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KK3N0YXRpYyBpbmxpbmUgYm9vbCBwYXJzZUFscGhhVmFsdWUoY29uc3QgQ2hhcmFj
dGVyVHlwZSomIHN0cmluZywgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kLCBjb25zdCBjaGFyIHRl
cm1pbmF0b3IsIGludCYgdmFsdWUpCit7CisgICAgd2hpbGUgKHN0cmluZyAhPSBlbmQgJiYgaXNI
VE1MU3BhY2U8Q2hhcmFjdGVyVHlwZT4oKnN0cmluZykpCisgICAgICAgIHN0cmluZysrOworCisg
ICAgYm9vbCBuZWdhdGl2ZSA9IGZhbHNlOworCisgICAgaWYgKHN0cmluZyAhPSBlbmQgJiYgKnN0
cmluZyA9PSAnLScpIHsKKyAgICAgICAgbmVnYXRpdmUgPSB0cnVlOworICAgICAgICBzdHJpbmcr
KzsKKyAgICB9CisKKyAgICB2YWx1ZSA9IDA7CisKKyAgICBpbnQgbGVuZ3RoID0gZW5kIC0gc3Ry
aW5nOworICAgIGlmIChsZW5ndGggPCAyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoc3RyaW5nW2xlbmd0aCAtIDFdICE9IHRlcm1pbmF0b3IgfHwgIWlzQVNDSUlEaWdpdChzdHJp
bmdbbGVuZ3RoIC0gMl0pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc3RyaW5n
WzBdICE9ICcwJyAmJiBzdHJpbmdbMF0gIT0gJzEnICYmIHN0cmluZ1swXSAhPSAnLicpIHsKKyAg
ICAgICAgaWYgKGNoZWNrRm9yVmFsaWREb3VibGUoc3RyaW5nLCBlbmQsIHRlcm1pbmF0b3IpKSB7
CisgICAgICAgICAgICB2YWx1ZSA9IG5lZ2F0aXZlID8gMCA6IDI1NTsKKyAgICAgICAgICAgIHN0
cmluZyA9IGVuZDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAobGVuZ3RoID09IDIgJiYgc3RyaW5nWzBd
ICE9ICcuJykgeworICAgICAgICB2YWx1ZSA9ICFuZWdhdGl2ZSAmJiBzdHJpbmdbMF0gPT0gJzEn
ID8gMjU1IDogMDsKKyAgICAgICAgc3RyaW5nID0gZW5kOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBpZiAoaXNUZW50aEFscGhhKHN0cmluZywgbGVuZ3RoIC0gMSkpIHsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IGludCB0ZW50aEFscGhhVmFsdWVzW10gPSB7IDAsIDI1LCA1MSwg
NzYsIDEwMiwgMTI3LCAxNTMsIDE3OSwgMjA0LCAyMzAgfTsKKyAgICAgICAgdmFsdWUgPSBuZWdh
dGl2ZSA/IDAgOiB0ZW50aEFscGhhVmFsdWVzW3N0cmluZ1tsZW5ndGggLSAyXSAtICcwJ107Cisg
ICAgICAgIHN0cmluZyA9IGVuZDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
ZG91YmxlIGFscGhhID0gMDsKKyAgICBpZiAoIXBhcnNlRG91YmxlKHN0cmluZywgZW5kLCB0ZXJt
aW5hdG9yLCBhbHBoYSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB2YWx1ZSA9IG5lZ2F0
aXZlID8gMCA6IHN0YXRpY19jYXN0PGludD4oYWxwaGEgKiBuZXh0YWZ0ZXIoMjU2LjAsIDAuMCkp
OworICAgIHN0cmluZyA9IGVuZDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgaW5saW5lIGJvb2wgbWlnaHRCZVJHQkEoY29u
c3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlm
IChsZW5ndGggPCA1KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGNoYXJhY3Rl
cnNbNF0gPT0gJygnCisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoY2hhcmFj
dGVyc1swXSwgJ3InKQorICAgICAgICAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKGNoYXJh
Y3RlcnNbMV0sICdnJykKKyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChjaGFy
YWN0ZXJzWzJdLCAnYicpCisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoY2hh
cmFjdGVyc1szXSwgJ2EnKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
CitzdGF0aWMgaW5saW5lIGJvb2wgbWlnaHRCZVJHQihjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgaWYgKGxlbmd0aCA8IDQpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gY2hhcmFjdGVyc1szXSA9PSAnKCcKKyAgICAgICAg
JiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChjaGFyYWN0ZXJzWzBdLCAncicpCisgICAgICAg
ICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoY2hhcmFjdGVyc1sxXSwgJ2cnKQorICAgICAg
ICAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKGNoYXJhY3RlcnNbMl0sICdiJyk7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGJvb2wgZmFzdFBhcnNl
Q29sb3JJbnRlcm5hbChSR0JBMzImIHJnYiwgY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVy
cywgdW5zaWduZWQgbGVuZ3RoLCBib29sIHF1aXJrc01vZGUpCit7CisgICAgQ1NTUHJpbWl0aXZl
VmFsdWU6OlVuaXRUeXBlcyBleHBlY3QgPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpV
bmtub3duOworCisgICAgaWYgKGxlbmd0aCA+PSA0ICYmIGNoYXJhY3RlcnNbMF0gPT0gJyMnKQor
ICAgICAgICByZXR1cm4gQ29sb3I6OnBhcnNlSGV4Q29sb3IoY2hhcmFjdGVycyArIDEsIGxlbmd0
aCAtIDEsIHJnYik7CisKKyAgICBpZiAocXVpcmtzTW9kZSAmJiAobGVuZ3RoID09IDMgfHwgbGVu
Z3RoID09IDYpKSB7CisgICAgICAgIGlmIChDb2xvcjo6cGFyc2VIZXhDb2xvcihjaGFyYWN0ZXJz
LCBsZW5ndGgsIHJnYikpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAv
LyBUcnkgcmdiYSgpIHN5bnRheC4KKyAgICBpZiAobWlnaHRCZVJHQkEoY2hhcmFjdGVycywgbGVu
Z3RoKSkgeworICAgICAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBjdXJyZW50ID0gY2hhcmFjdGVy
cyArIDU7CisgICAgICAgIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCA9IGNoYXJhY3RlcnMgKyBs
ZW5ndGg7CisgICAgICAgIGludCByZWQ7CisgICAgICAgIGludCBncmVlbjsKKyAgICAgICAgaW50
IGJsdWU7CisgICAgICAgIGludCBhbHBoYTsKKworICAgICAgICBpZiAoIXBhcnNlQ29sb3JJbnRP
clBlcmNlbnRhZ2UoY3VycmVudCwgZW5kLCAnLCcsIGV4cGVjdCwgcmVkKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlKGN1
cnJlbnQsIGVuZCwgJywnLCBleHBlY3QsIGdyZWVuKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgaWYgKCFwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlKGN1cnJlbnQsIGVuZCwg
JywnLCBleHBlY3QsIGJsdWUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBp
ZiAoIXBhcnNlQWxwaGFWYWx1ZShjdXJyZW50LCBlbmQsICcpJywgYWxwaGEpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoY3VycmVudCAhPSBlbmQpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJnYiA9IG1ha2VSR0JBKHJlZCwgZ3JlZW4sIGJsdWUs
IGFscGhhKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gVHJ5IHJnYigp
IHN5bnRheC4KKyAgICBpZiAobWlnaHRCZVJHQihjaGFyYWN0ZXJzLCBsZW5ndGgpKSB7CisgICAg
ICAgIGNvbnN0IENoYXJhY3RlclR5cGUqIGN1cnJlbnQgPSBjaGFyYWN0ZXJzICsgNDsKKyAgICAg
ICAgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kID0gY2hhcmFjdGVycyArIGxlbmd0aDsKKyAgICAg
ICAgaW50IHJlZDsKKyAgICAgICAgaW50IGdyZWVuOworICAgICAgICBpbnQgYmx1ZTsKKyAgICAg
ICAgaWYgKCFwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlKGN1cnJlbnQsIGVuZCwgJywnLCBleHBl
Y3QsIHJlZCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghcGFyc2VD
b2xvckludE9yUGVyY2VudGFnZShjdXJyZW50LCBlbmQsICcsJywgZXhwZWN0LCBncmVlbikpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghcGFyc2VDb2xvckludE9yUGVy
Y2VudGFnZShjdXJyZW50LCBlbmQsICcpJywgZXhwZWN0LCBibHVlKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGN1cnJlbnQgIT0gZW5kKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZ2IgPSBtYWtlUkdCKHJlZCwgZ3JlZW4sIGJsdWUpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0NTU1Zh
bHVlKiBDU1NQYXJzZXJGYXN0UGF0aHM6OnBhcnNlQ29sb3IoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IENTU1BhcnNlck1vZGUgcGFyc2VyTW9kZSkKK3sKKyAgICBBU1NFUlQoIXN0cmluZy5pc0VtcHR5
KCkpOworICAgIENTU1ZhbHVlSUQgdmFsdWVJRCA9IGNzc1ZhbHVlS2V5d29yZElEKHN0cmluZyk7
CisgICAgaWYgKFN0eWxlQ29sb3I6OmlzQ29sb3JLZXl3b3JkKHZhbHVlSUQpKSB7CisgICAgICAg
IGlmICghaXNWYWx1ZUFsbG93ZWRJbk1vZGUodmFsdWVJRCwgcGFyc2VyTW9kZSkpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGVJZGVudGlmaWVyKHZhbHVlSUQpOworICAgIH0KKworICAgIFJHQkEzMiBjb2xvcjsKKyAg
ICBib29sIHF1aXJrc01vZGUgPSBpc1F1aXJrc01vZGVCZWhhdmlvcihwYXJzZXJNb2RlKTsKKwor
ICAgIC8vIEZhc3QgcGF0aCBmb3IgaGV4IGNvbG9ycyBhbmQgcmdiKCkvcmdiYSgpIGNvbG9ycwor
ICAgIGJvb2wgcGFyc2VSZXN1bHQ7CisgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKKyAgICAgICAg
cGFyc2VSZXN1bHQgPSBmYXN0UGFyc2VDb2xvckludGVybmFsKGNvbG9yLCBzdHJpbmcuY2hhcmFj
dGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCBxdWlya3NNb2RlKTsKKyAgICBlbHNlCisgICAgICAg
IHBhcnNlUmVzdWx0ID0gZmFzdFBhcnNlQ29sb3JJbnRlcm5hbChjb2xvciwgc3RyaW5nLmNoYXJh
Y3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCksIHF1aXJrc01vZGUpOworICAgIGlmICghcGFyc2VS
ZXN1bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBDU1NDb2xvclZhbHVl
OjpjcmVhdGUoY29sb3IpOworfQorCitib29sIENTU1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtl
eXdvcmRQcm9wZXJ0eUFuZFZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCwgQ1NTVmFsdWVJ
RCB2YWx1ZUlELCBDU1NQYXJzZXJNb2RlIHBhcnNlck1vZGUpCit7CisgICAgaWYgKHZhbHVlSUQg
PT0gQ1NTVmFsdWVJbnZhbGlkIHx8ICFpc1ZhbHVlQWxsb3dlZEluTW9kZSh2YWx1ZUlELCBwYXJz
ZXJNb2RlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3dpdGNoIChwcm9wZXJ0eUlk
KSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFsaWdubWVudEJhc2VsaW5lOgorICAgICAgICAvLyBh
dXRvIHwgYmFzZWxpbmUgfCBiZWZvcmUtZWRnZSB8IHRleHQtYmVmb3JlLWVkZ2UgfCBtaWRkbGUg
fAorICAgICAgICAvLyBjZW50cmFsIHwgYWZ0ZXItZWRnZSB8IHRleHQtYWZ0ZXItZWRnZSB8IGlk
ZW9ncmFwaGljIHwgYWxwaGFiZXRpYyB8CisgICAgICAgIC8vIGhhbmdpbmcgfCBtYXRoZW1hdGlj
YWwKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVBbHBoYWJldGljIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCYXNlbGluZQorICAgICAg
ICAgICAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1pZGRsZSB8fCAodmFsdWVJRCA+PSBDU1NWYWx1
ZUJlZm9yZUVkZ2UgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZU1hdGhlbWF0aWNhbCk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUFsbDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBPbmx5IGFjY2VwdHMg
Y3NzLXdpZGUga2V5d29yZHMKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFg6
IC8vIHJlcGVhdCB8IG5vLXJlcGVhdAorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVw
ZWF0WTogLy8gcmVwZWF0IHwgbm8tcmVwZWF0CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENT
U1ZhbHVlUmVwZWF0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb1JlcGVhdDsKKyAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2U6IC8vIGNvbGxhcHNlIHwgc2VwYXJhdGUKKyAgICAgICAg
cmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2xsYXBzZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
U2VwYXJhdGU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlOiAvLyA8Ym9yZGVy
LXN0eWxlPgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlOiAvLyBEZWZpbmVk
IGFzOiBub25lIHwgaGlkZGVuIHwgZG90dGVkIHwgZGFzaGVkIHwKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tU3R5bGU6IC8vIHNvbGlkIHwgZG91YmxlIHwgZ3Jvb3ZlIHwgcmlkZ2Ug
fCBpbnNldCB8IG91dHNldAorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGU6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJFbmRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRT
dHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1uUnVsZVN0eWxlOgorICAgICAgICByZXR1
cm4gdmFsdWVJRCA+PSBDU1NWYWx1ZU5vbmUgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZURvdWJsZTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5Qm94U2l6aW5nOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9
PSBDU1NWYWx1ZUJvcmRlckJveCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ29udGVudEJveDsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5QnVmZmVyZWRSZW5kZXJpbmc6CisgICAgICAgIHJldHVybiB2YWx1
ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRHluYW1pYyB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlU3RhdGljOworICAgIGNhc2UgQ1NTUHJvcGVydHlDYXB0aW9uU2lkZTog
Ly8gdG9wIHwgYm90dG9tIHwgbGVmdCB8IHJpZ2h0CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09
IENTU1ZhbHVlTGVmdCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmlnaHQgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZVRvcCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQm90dG9tOworICAgIGNhc2UgQ1NTUHJv
cGVydHlDbGVhcjogLy8gbm9uZSB8IGxlZnQgfCByaWdodCB8IGJvdGgKKyAgICAgICAgcmV0dXJu
IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVMZWZ0IHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVSaWdodCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQm90aDsKKyAgICBj
YXNlIENTU1Byb3BlcnR5Q2xpcFJ1bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGxSdWxlOgor
ICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbnplcm8gfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUV2ZW5vZGQ7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczoKKyAgICAgICAg
cmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTUkdC
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVMaW5lYXJSR0I7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNv
bG9yUmVuZGVyaW5nOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZU9wdGltaXplU3BlZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU9w
dGltaXplUXVhbGl0eTsKKyAgICBjYXNlIENTU1Byb3BlcnR5RGlyZWN0aW9uOiAvLyBsdHIgfCBy
dGwKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVMdHIgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZVJ0bDsKKyAgICBjYXNlIENTU1Byb3BlcnR5RGlzcGxheToKKyAgICAgICAgLy8gaW5s
aW5lIHwgYmxvY2sgfCBsaXN0LWl0ZW0gfCBpbmxpbmUtYmxvY2sgfCB0YWJsZSB8CisgICAgICAg
IC8vIGlubGluZS10YWJsZSB8IHRhYmxlLXJvdy1ncm91cCB8IHRhYmxlLWhlYWRlci1ncm91cCB8
IHRhYmxlLWZvb3Rlci1ncm91cCB8IHRhYmxlLXJvdyB8CisgICAgICAgIC8vIHRhYmxlLWNvbHVt
bi1ncm91cCB8IHRhYmxlLWNvbHVtbiB8IHRhYmxlLWNlbGwgfCB0YWJsZS1jYXB0aW9uIHwgLXdl
YmtpdC1ib3ggfCAtd2Via2l0LWlubGluZS1ib3ggfCBub25lCisgICAgICAgIC8vIGZsZXggfCBp
bmxpbmUtZmxleCB8IC13ZWJraXQtZmxleCB8IC13ZWJraXQtaW5saW5lLWZsZXggfCBncmlkIHwg
aW5saW5lLWdyaWQKKyAgICAgICAgcmV0dXJuICh2YWx1ZUlEID49IENTU1ZhbHVlSW5saW5lICYm
IHZhbHVlSUQgPD0gQ1NTVmFsdWVJbmxpbmVGbGV4KSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Vi
a2l0RmxleCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0SW5saW5lRmxleCB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlTm9uZQorICAgICAgICAgICAgfHwgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkgJiYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVHcmlkIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVJbmxpbmVHcmlkKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eURvbWlu
YW50QmFzZWxpbmU6CisgICAgICAgIC8vIGF1dG8gfCB1c2Utc2NyaXB0IHwgbm8tY2hhbmdlIHwg
cmVzZXQtc2l6ZSB8IGlkZW9ncmFwaGljIHwKKyAgICAgICAgLy8gYWxwaGFiZXRpYyB8IGhhbmdp
bmcgfCBtYXRoZW1hdGljYWwgfCBjZW50cmFsIHwgbWlkZGxlIHwKKyAgICAgICAgLy8gdGV4dC1h
ZnRlci1lZGdlIHwgdGV4dC1iZWZvcmUtZWRnZQorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBD
U1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUFscGhhYmV0aWMgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZU1pZGRsZQorICAgICAgICAgICAgfHwgKHZhbHVlSUQgPj0gQ1NTVmFsdWVVc2VT
Y3JpcHQgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZVJlc2V0U2l6ZSkKKyAgICAgICAgICAgIHx8ICh2
YWx1ZUlEID49IENTU1ZhbHVlQ2VudHJhbCAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlTWF0aGVtYXRp
Y2FsKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5RW1wdHlDZWxsczogLy8gc2hvdyB8IGhpZGUKKyAg
ICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVTaG93IHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVIaWRlOworICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9hdDogLy8gbGVmdCB8IHJpZ2h0IHwgbm9u
ZQorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZVJpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lOworICAgIGNhc2UgQ1NTUHJv
cGVydHlGb250U3R5bGU6IC8vIG5vcm1hbCB8IGl0YWxpYyB8IG9ibGlxdWUKKyAgICAgICAgcmV0
dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUl0YWxp
YyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlT2JsaXF1ZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9u
dFN0cmV0Y2g6IC8vIG5vcm1hbCB8IHVsdHJhLWNvbmRlbnNlZCB8IGV4dHJhLWNvbmRlbnNlZCB8
IGNvbmRlbnNlZCB8IHNlbWktY29uZGVuc2VkIHwgc2VtaS1leHBhbmRlZCB8IGV4cGFuZGVkIHwg
ZXh0cmEtZXhwYW5kZWQgfCB1bHRyYS1leHBhbmRlZAorICAgICAgICByZXR1cm4gdmFsdWVJRCA9
PSBDU1NWYWx1ZU5vcm1hbCB8fCAodmFsdWVJRCA+PSBDU1NWYWx1ZVVsdHJhQ29uZGVuc2VkICYm
IHZhbHVlSUQgPD0gQ1NTVmFsdWVVbHRyYUV4cGFuZGVkKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
SW1hZ2VSZW5kZXJpbmc6IC8vIGF1dG8gfCBvcHRpbWl6ZUNvbnRyYXN0IHwgcGl4ZWxhdGVkCisg
ICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlV2Via2l0T3B0aW1pemVDb250cmFzdCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUGl4ZWxhdGVk
OworICAgIGNhc2UgQ1NTUHJvcGVydHlJc29sYXRpb246IC8vIGF1dG8gfCBpc29sYXRlCisgICAg
ICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
SXNvbGF0ZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb246IC8vIGluc2lk
ZSB8IG91dHNpZGUKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVJbnNpZGUgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZU91dHNpZGU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHls
ZVR5cGU6CisgICAgICAgIC8vIFNlZSBzZWN0aW9uIENTU19QUk9QX0xJU1RfU1RZTEVfVFlQRSBv
ZiBmaWxlIENTU1ZhbHVlS2V5d29yZHMuaW4KKyAgICAgICAgLy8gZm9yIHRoZSBsaXN0IG9mIHN1
cHBvcnRlZCBsaXN0LXN0eWxlLXR5cGVzLgorICAgICAgICByZXR1cm4gKHZhbHVlSUQgPj0gQ1NT
VmFsdWVEaXNjICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVLYXRha2FuYUlyb2hhKSB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlTm9uZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFza1R5cGU6CisgICAgICAg
IHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTHVtaW5hbmNlIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVBbHBoYTsKKyAgICBjYXNlIENTU1Byb3BlcnR5T2JqZWN0Rml0OgorICAgICAgICByZXR1cm4g
dmFsdWVJRCA9PSBDU1NWYWx1ZUZpbGwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbnRhaW4gfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUNvdmVyIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVTY2FsZURvd247CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVT
dHlsZTogLy8gKDxib3JkZXItc3R5bGU+IGV4Y2VwdCBoaWRkZW4pIHwgYXV0bworICAgICAgICBy
ZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUg
fHwgKHZhbHVlSUQgPj0gQ1NTVmFsdWVJbnNldCAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlRG91Ymxl
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dBbmNob3I6CisgICAgICAgIHJldHVybiB2
YWx1ZUlEID09IENTU1ZhbHVlVmlzaWJsZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlQXV0bzsKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dXcmFw
OiAvLyBub3JtYWwgfCBicmVhay13b3JkCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRXcmFwOgor
ICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlQnJlYWtXb3JkOworICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1g6IC8vIHZpc2li
bGUgfCBoaWRkZW4gfCBzY3JvbGwgfCBhdXRvIHwgb3ZlcmxheQorICAgICAgICByZXR1cm4gdmFs
dWVJRCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhpZGRlbiB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlU2Nyb2xsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVPdmVybGF5OworICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1k6
IC8vIHZpc2libGUgfCBoaWRkZW4gfCBzY3JvbGwgfCBhdXRvIHwgb3ZlcmxheSB8IC13ZWJraXQt
cGFnZWQteCB8IC13ZWJraXQtcGFnZWQteQorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NW
YWx1ZVZpc2libGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhpZGRlbiB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlU2Nyb2xsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVPdmVybGF5IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRQYWdlZFggfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZVdlYmtpdFBhZ2VkWTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QnJlYWtBZnRl
cjoKKyAgICBjYXNlIENTU1Byb3BlcnR5QnJlYWtCZWZvcmU6CisgICAgICAgIHJldHVybiB2YWx1
ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXZvaWQgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUF2b2lkUGFnZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUGFnZSB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlTGVmdCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmlnaHQgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZVJlY3RvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVWZXJzbyB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlQXZvaWRDb2x1bW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbHVtbjsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5QnJlYWtJbnNpZGU6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09
IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXZvaWQgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUF2b2lkUGFnZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXZvaWRDb2x1bW47CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHM6CisgICAgICAgIC8vIG5vbmUgfCB2aXNpYmxl
UGFpbnRlZCB8IHZpc2libGVGaWxsIHwgdmlzaWJsZVN0cm9rZSB8IHZpc2libGUgfAorICAgICAg
ICAvLyBwYWludGVkIHwgZmlsbCB8IHN0cm9rZSB8IGF1dG8gfCBhbGwgfCBib3VuZGluZy1ib3gK
KyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBbGwgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZUF1dG8gfHwgKHZhbHVlSUQgPj0gQ1NTVmFsdWVWaXNpYmxlUGFpbnRlZCAmJiB2YWx1ZUlE
IDw9IENTU1ZhbHVlQm91bmRpbmdCb3gpOworICAgIGNhc2UgQ1NTUHJvcGVydHlQb3NpdGlvbjog
Ly8gc3RhdGljIHwgcmVsYXRpdmUgfCBhYnNvbHV0ZSB8IGZpeGVkIHwgc3RpY2t5CisgICAgICAg
IHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlU3RhdGljIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVS
ZWxhdGl2ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQWJzb2x1dGUgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZUZpeGVkIHx8IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NTdGlja3lQb3NpdGlvbkVu
YWJsZWQoKSAmJiB2YWx1ZUlEID09IENTU1ZhbHVlU3RpY2t5KTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5UmVzaXplOiAvLyBub25lIHwgYm90aCB8IGhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGF1dG8K
KyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVCb3RoIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVIb3Jpem9udGFsIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVWZXJ0aWNhbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXV0bzsKKyAgICBjYXNlIENT
U1Byb3BlcnR5U2Nyb2xsQmVoYXZpb3I6IC8vIGF1dG8gfCBzbW9vdGgKKyAgICAgICAgQVNTRVJU
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc29tU21vb3RoU2Nyb2xsRW5hYmxlZCgpKTsKKyAg
ICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVTbW9vdGg7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNoYXBlUmVuZGVyaW5nOgorICAgICAgICBy
ZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU9wdGlt
aXplU3BlZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNyaXNwRWRnZXMgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUdlb21ldHJpY1ByZWNpc2lvbjsKKyAgICBjYXNlIENTU1Byb3BlcnR5U3BlYWs6IC8v
IG5vbmUgfCBub3JtYWwgfCBzcGVsbC1vdXQgfCBkaWdpdHMgfCBsaXRlcmFsLXB1bmN0dWF0aW9u
IHwgbm8tcHVuY3R1YXRpb24KKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25l
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNwZWxs
T3V0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEaWdpdHMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUxp
dGVyYWxQdW5jdHVhdGlvbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9QdW5jdHVhdGlvbjsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlTGluZWpvaW46CisgICAgICAgIHJldHVybiB2YWx1ZUlE
ID09IENTU1ZhbHVlTWl0ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJvdW5kIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVCZXZlbDsKKyAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlTGluZWNhcDoKKyAg
ICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVCdXR0IHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVSb3VuZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3F1YXJlOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlUYWJsZUxheW91dDogLy8gYXV0byB8IGZpeGVkCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09
IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRml4ZWQ7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVRleHRBbGlnbjoKKyAgICAgICAgcmV0dXJuICh2YWx1ZUlEID49IENTU1ZhbHVlV2Vi
a2l0QXV0byAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlSW50ZXJuYWxDZW50ZXIpIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRW5kOworICAgIGNhc2UgQ1NT
UHJvcGVydHlUZXh0QWxpZ25MYXN0OgorICAgICAgICAvLyBhdXRvIHwgc3RhcnQgfCBlbmQgfCBs
ZWZ0IHwgcmlnaHQgfCBjZW50ZXIgfCBqdXN0aWZ5CisgICAgICAgIHJldHVybiAodmFsdWVJRCA+
PSBDU1NWYWx1ZUxlZnQgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZUp1c3RpZnkpIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRW5kIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVBdXRvOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0QW5jaG9yOgorICAgICAgICBy
ZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVNaWRk
bGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVuZDsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dENv
bWJpbmVVcHJpZ2h0OgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUFsbDsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dERlY29yYXRp
b25TdHlsZToKKyAgICAgICAgLy8gc29saWQgfCBkb3VibGUgfCBkb3R0ZWQgfCBkYXNoZWQgfCB3
YXZ5CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3MzVGV4dERlY29y
YXRpb25zRW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVTb2xp
ZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRG91YmxlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEb3R0
ZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURhc2hlZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2F2
eTsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEp1c3RpZnk6CisgICAgICAgIC8vIGF1dG8gfCBu
b25lIHwgaW50ZXItd29yZCB8IGRpc3RyaWJ1dGUKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmNzczNUZXh0RW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQg
PT0gQ1NTVmFsdWVJbnRlcldvcmQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURpc3RyaWJ1dGUgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmU7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVRleHRPcmllbnRhdGlvbjogLy8gbWl4ZWQgfCB1cHJpZ2h0IHwgc2lk
ZXdheXMgfCBzaWRld2F5cy1yaWdodAorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1
ZU1peGVkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVVcHJpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVTaWRld2F5cyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2lkZXdheXNSaWdodDsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGV4dE9yaWVudGF0aW9uOgorICAgICAgICByZXR1cm4gdmFsdWVJ
RCA9PSBDU1NWYWx1ZVNpZGV3YXlzIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTaWRld2F5c1JpZ2h0
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVWZXJ0aWNhbFJpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVVcHJpZ2h0OworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmZsb3c6IC8vIGNsaXAgfCBl
bGxpcHNpcworICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUNsaXAgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUVsbGlwc2lzOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5n
OiAvLyBhdXRvIHwgb3B0aW1pemVTcGVlZCB8IG9wdGltaXplTGVnaWJpbGl0eSB8IGdlb21ldHJp
Y1ByZWNpc2lvbgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZU9wdGltaXplU3BlZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU9wdGlt
aXplTGVnaWJpbGl0eSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlR2VvbWV0cmljUHJlY2lzaW9uOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtOiAvLyBjYXBpdGFsaXplIHwgdXBwZXJj
YXNlIHwgbG93ZXJjYXNlIHwgbm9uZQorICAgICAgICByZXR1cm4gKHZhbHVlSUQgPj0gQ1NTVmFs
dWVDYXBpdGFsaXplICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVMb3dlcmNhc2UpIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVOb25lOworICAgIGNhc2UgQ1NTUHJvcGVydHlVbmljb2RlQmlkaToKKyAgICAg
ICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUVtYmVkCisgICAgICAgICAgICB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQmlkaU92ZXJyaWRlIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRJc29sYXRlCisgICAgICAgICAgICB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlV2Via2l0SXNvbGF0ZU92ZXJyaWRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVX
ZWJraXRQbGFpbnRleHQKKyAgICAgICAgICAgIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVJc29sYXRl
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVJc29sYXRlT3ZlcnJpZGUgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZVBsYWludGV4dDsKKyAgICBjYXNlIENTU1Byb3BlcnR5VmVjdG9yRWZmZWN0OgorICAgICAg
ICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5v
blNjYWxpbmdTdHJva2U7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVZpc2liaWxpdHk6IC8vIHZpc2li
bGUgfCBoaWRkZW4gfCBjb2xsYXBzZQorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1
ZVZpc2libGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhpZGRlbiB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlQ29sbGFwc2U7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFwcFJlZ2lvbjoKKyAgICAg
ICAgcmV0dXJuIHZhbHVlSUQgPj0gQ1NTVmFsdWVEcmFnICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVO
b0RyYWc7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2U6CisgICAgICAgIHJl
dHVybiAodmFsdWVJRCA+PSBDU1NWYWx1ZUNoZWNrYm94ICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVU
ZXh0YXJlYSkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmU7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUJhY2tmYWNlVmlzaWJpbGl0eToKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVW
aXNpYmxlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVIaWRkZW47CisgICAgY2FzZSBDU1NQcm9wZXJ0
eU1peEJsZW5kTW9kZToKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU11bHRpcGx5IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTY3Jl
ZW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU92ZXJsYXkKKyAgICAgICAgICAgIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVEYXJrZW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUxpZ2h0ZW4gfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUNvbG9yRG9kZ2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbG9yQnVybgor
ICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhhcmRMaWdodCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlU29mdExpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEaWZmZXJlbmNlIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVFeGNsdXNpb24KKyAgICAgICAgICAgIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVIdWUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNhdHVyYXRpb24gfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUNvbG9yIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVMdW1pbm9zaXR5OworICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbjoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NT
VmFsdWVTdHJldGNoIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlRW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZUJhc2VsaW5lOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hEZWNvcmF0aW9uQnJl
YWs6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQ2xvbmUgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZVNsaWNlOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb246
CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVSZXZlcnNlOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lczoKKyAg
ICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVTaW5nbGUgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZU11bHRpcGxlOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQ6CisgICAg
ICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlSG9yaXpvbnRhbCB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlVmVydGljYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUlubGluZUF4aXMgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUJsb2NrQXhpczsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UGFj
azoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlRW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUp1c3RpZnk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVtbkZpbGw6CisgICAgICAg
IHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQmFs
YW5jZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25Db250ZW50OgorICAgICAgICAvLyBGSVhN
RTogUGVyIENTUyBhbGlnbm1lbnQsIHRoaXMgcHJvcGVydHkgc2hvdWxkIGFjY2VwdCBhbiBvcHRp
b25hbCA8b3ZlcmZsb3ctcG9zaXRpb24+LiBXZSBzaG91bGQgc2hhcmUgdGhpcyBwYXJzaW5nIGNv
ZGUgd2l0aCAnanVzdGlmeS1zZWxmJy4KKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFs
dWVGbGV4U3RhcnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUZsZXhFbmQgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUNlbnRlciB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3BhY2VCZXR3ZWVuIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVTcGFjZUFyb3VuZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3RyZXRjaDsK
KyAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25JdGVtczoKKyAgICAgICAgLy8gRklYTUU6IFBlciBD
U1MgYWxpZ25tZW50LCB0aGlzIHByb3BlcnR5IHNob3VsZCBhY2NlcHQgdGhlIHNhbWUgYXJndW1l
bnRzIGFzICdqdXN0aWZ5LXNlbGYnIHNvIHdlIHNob3VsZCBzaGFyZSBpdHMgcGFyc2luZyBjb2Rl
LgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUZsZXhTdGFydCB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlRmxleEVuZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ2VudGVyIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVCYXNlbGluZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3RyZXRjaDsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5QWxpZ25TZWxmOgorICAgICAgICAvLyBGSVhNRTogUGVyIENTUyBh
bGlnbm1lbnQsIHRoaXMgcHJvcGVydHkgc2hvdWxkIGFjY2VwdCB0aGUgc2FtZSBhcmd1bWVudHMg
YXMgJ2p1c3RpZnktc2VsZicgc28gd2Ugc2hvdWxkIHNoYXJlIGl0cyBwYXJzaW5nIGNvZGUuCisg
ICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlRmxleFN0YXJ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVGbGV4RW5kIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVDZW50ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJhc2VsaW5lIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVTdHJldGNoOworICAgIGNhc2UgQ1NTUHJvcGVydHlGbGV4RGlyZWN0aW9uOgor
ICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVJvdyB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlUm93UmV2ZXJzZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ29sdW1uIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVDb2x1bW5SZXZlcnNlOworICAgIGNhc2UgQ1NTUHJvcGVydHlGbGV4V3JhcDoKKyAg
ICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3dyYXAgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZVdyYXAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdyYXBSZXZlcnNlOworICAgIGNhc2UgQ1NT
UHJvcGVydHlIeXBoZW5zOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8g
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1hbnVhbDsK
KyAgICBjYXNlIENTU1Byb3BlcnR5SnVzdGlmeUNvbnRlbnQ6CisgICAgICAgIC8vIEZJWE1FOiBQ
ZXIgQ1NTIGFsaWdubWVudCwgdGhpcyBwcm9wZXJ0eSBzaG91bGQgYWNjZXB0IGFuIG9wdGlvbmFs
IDxvdmVyZmxvdy1wb3NpdGlvbj4uIFdlIHNob3VsZCBzaGFyZSB0aGlzIHBhcnNpbmcgY29kZSB3
aXRoICdqdXN0aWZ5LXNlbGYnLgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUZs
ZXhTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRmxleEVuZCB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlQ2VudGVyIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTcGFjZUJldHdlZW4gfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZVNwYWNlQXJvdW5kOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250S2VybmluZzoK
KyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmU7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmc6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1Zh
bHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
QW50aWFsaWFzZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVN1YnBpeGVsQW50aWFsaWFzZWQ7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhazogLy8gYXV0byB8IGxvb3NlIHwgbm9y
bWFsIHwgc3RyaWN0IHwgYWZ0ZXItd2hpdGUtc3BhY2UKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQg
PT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVMb29zZSB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdHJpY3QgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUFmdGVyV2hpdGVTcGFjZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luQWZ0ZXJDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3Jl
Q29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZToKKyAgICAgICAg
cmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2xsYXBzZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
U2VwYXJhdGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURpc2NhcmQ7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFByaW50Q29sb3JBZGp1c3Q6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENT
U1ZhbHVlRXhhY3QgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVjb25vbXk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NW
YWx1ZUxvZ2ljYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVZpc3VhbDsKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0UnVieVBvc2l0aW9uOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NW
YWx1ZUJlZm9yZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQWZ0ZXI7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRDb21iaW5lOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1
ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhvcml6b250YWw7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9
PSBDU1NWYWx1ZU92ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVVuZGVyOworICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHk6IC8vIGRpc2MgfCBjaXJjbGUgfCBzcXVhcmUgfCBu
b25lCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlRGlzYyB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlQ2lyY2xlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTcXVhcmUgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZU5vbmU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zZm9ybVN0eWxlOgorICAg
ICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUZsYXQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZVByZXNlcnZlM2Q7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnOiAvLyBhdXRv
IHwgbm9uZSB8IGVsZW1lbnQKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRv
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFbGVtZW50
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5OiAvLyByZWFkLW9ubHkgfCBy
ZWFkLXdyaXRlCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlUmVhZE9ubHkgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZVJlYWRXcml0ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmVhZFdy
aXRlUGxhaW50ZXh0T25seTsKKyAgICBjYXNlIENTU1Byb3BlcnR5VXNlclNlbGVjdDogLy8gYXV0
byB8IG5vbmUgfCB0ZXh0IHwgYWxsCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVl
QXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVGV4
dCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQWxsOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRX
cml0aW5nTW9kZToKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPj0gQ1NTVmFsdWVIb3Jpem9udGFs
VGIgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZVZlcnRpY2FsTHI7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdyaXRpbmdNb2RlOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUhvcml6b250
YWxUYgorICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVZlcnRpY2FsUmwgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZVZlcnRpY2FsTHIKKyAgICAgICAgICAgIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVMclRiIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSbFRiIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVUYlJsCisgICAgICAgICAgICB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTHIgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZVJsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVUYjsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2hpdGVTcGFjZTogLy8gbm9ybWFsIHwgcHJlIHwgbm93cmFwCisgICAgICAgIHJldHVybiB2
YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVQcmUgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZVByZVdyYXAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVByZUxpbmUgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZU5vd3JhcDsKKyAgICBjYXNlIENTU1Byb3BlcnR5V29yZEJyZWFr
OiAvLyBub3JtYWwgfCBicmVhay1hbGwgfCBrZWVwLWFsbCB8IGJyZWFrLXdvcmQgKHRoaXMgaXMg
YSBjdXN0b20gZXh0ZW5zaW9uKQorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5v
cm1hbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQnJlYWtBbGwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUtlZXBBbGwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJyZWFrV29yZDsKKyAgICBjYXNlIENTU1By
b3BlcnR5U2Nyb2xsU25hcFR5cGU6IC8vIG5vbmUgfCBtYW5kYXRvcnkgfCBwcm94aW1pdHkKKyAg
ICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc1Njcm9sbFNuYXBQb2ludHNF
bmFibGVkKCkpOworICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZU1hbmRhdG9yeSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUHJveGltaXR5
OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitib29sIENTU1BhcnNlckZhc3RQYXRoczo6aXNLZXl3
b3JkUHJvcGVydHlJRChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQpCit7CisgICAgc3dpdGNoIChw
cm9wZXJ0eUlkKSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFsaWdubWVudEJhc2VsaW5lOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlBbGw6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1peEJsZW5kTW9kZToK
KyAgICBjYXNlIENTU1Byb3BlcnR5SXNvbGF0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUmVwZWF0WDoKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFk6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJUb3BTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm94U2l6aW5nOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlCdWZmZXJlZFJlbmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q2Fw
dGlvblNpZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNsZWFyOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlDbGlwUnVsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3JJbnRlcnBvbGF0aW9uOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlDb2xvckludGVycG9sYXRpb25GaWx0ZXJzOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlDb2xvclJlbmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5RGlyZWN0aW9uOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlEaXNwbGF5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlEb21pbmFu
dEJhc2VsaW5lOgorICAgIGNhc2UgQ1NTUHJvcGVydHlFbXB0eUNlbGxzOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlGaWxsUnVsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5RmxvYXQ6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUZvbnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0cmV0Y2g6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUh5cGhlbnM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUltYWdlUmVu
ZGVyaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZToKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFza1R5cGU6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9iamVjdEZpdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5T3V0
bGluZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd0FuY2hvcjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5T3ZlcmZsb3dXcmFwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1g6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93WToKKyAgICBjYXNlIENTU1Byb3BlcnR5QnJl
YWtBZnRlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5QnJlYWtCZWZvcmU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJyZWFrSW5zaWRlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlQb3NpdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5UmVzaXpl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlTY3JvbGxCZWhhdmlvcjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5U2hhcGVSZW5kZXJpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNwZWFrOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlTdHJva2VMaW5lY2FwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2VMaW5l
am9pbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGFibGVMYXlvdXQ6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRleHRBbGlnbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEFsaWduTGFzdDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5VGV4dEFuY2hvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dENvbWJp
bmVVcHJpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblN0eWxlOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlUZXh0SnVzdGlmeToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE9y
aWVudGF0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0T3JpZW50YXRpb246Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVyZmxvdzoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dFJlbmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybToKKyAgICBjYXNl
IENTU1Byb3BlcnR5VW5pY29kZUJpZGk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVZlY3RvckVmZmVj
dDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VmlzaWJpbGl0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0QXBwUmVnaW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZmFjZVZpc2liaWxpdHk6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckJlZm9yZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHls
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZToKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
eERlY29yYXRpb25CcmVhazoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9u
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lczoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm94T3JpZW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlDb2x1bW5GaWxsOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDb2x1
bW5SdWxlU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsZXhEaXJlY3Rpb246CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUZsZXhXcmFwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlGb250S2VybmluZzoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290aGluZzoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TGluZUJyZWFrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5B
ZnRlckNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xs
YXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2U6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblRvcENvbGxhcHNlOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRQcmludENvbG9yQWRqdXN0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRSdGxPcmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRleHRTZWN1cml0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNmb3JtU3R5bGU6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRVc2VyTW9kaWZ5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlVc2VyU2VsZWN0OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2hpdGVT
cGFjZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V29yZEJyZWFrOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXb3JkV3JhcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V3JpdGluZ01vZGU6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVNjcm9sbFNuYXBUeXBlOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5SnVzdGlmeUNvbnRlbnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFsaWduQ29u
dGVudDoKKyAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25JdGVtczoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5QWxpZ25TZWxmOgorICAgICAgICByZXR1cm4gIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNz
c0dyaWRMYXlvdXRFbmFibGVkKCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KK30KKworc3RhdGljIENTU1ZhbHVlKiBwYXJzZUtleXdvcmRWYWx1ZShDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJzZXJNb2RlIHBh
cnNlck1vZGUpCit7CisgICAgQVNTRVJUKCFzdHJpbmcuaXNFbXB0eSgpKTsKKworICAgIGlmICgh
Q1NTUGFyc2VyRmFzdFBhdGhzOjppc0tleXdvcmRQcm9wZXJ0eUlEKHByb3BlcnR5SWQpKSB7Cisg
ICAgICAgIC8vIEFsbCBwcm9wZXJ0aWVzIGFjY2VwdCB0aGUgdmFsdWVzIG9mICJpbml0aWFsIiBh
bmQgImluaGVyaXQiLgorICAgICAgICBpZiAoIWVxdWFsSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5n
LCAiaW5pdGlhbCIpICYmICFlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgImluaGVyaXQi
KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIC8vIFBhcnNlIGluaXRp
YWwvaW5oZXJpdCBzaG9ydGhhbmRzIHVzaW5nIHRoZSBDU1NQcm9wZXJ0eVBhcnNlci4KKyAgICAg
ICAgaWYgKHNob3J0aGFuZEZvclByb3BlcnR5KHByb3BlcnR5SWQpLmxlbmd0aCgpKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgLy8gRGVzY3JpcHRvcnMgZG8gbm90IHN1
cHBvcnQgY3NzIHdpZGUga2V5d29yZHMuCisgICAgICAgIGlmIChDU1NQcm9wZXJ0eU1ldGFkYXRh
Ojppc0Rlc2NyaXB0b3JPbmx5KHByb3BlcnR5SWQpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorCisgICAgQ1NTVmFsdWVJRCB2YWx1ZUlEID0gY3NzVmFsdWVLZXl3b3JkSUQo
c3RyaW5nKTsKKworICAgIGlmICghdmFsdWVJRCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUluaGVyaXQpCisgICAgICAgIHJldHVybiBDU1NJ
bmhlcml0ZWRWYWx1ZTo6Y3JlYXRlKCk7CisgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVJbml0
aWFsKQorICAgICAgICByZXR1cm4gQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGUoKTsKKyAgICBpZiAo
Q1NTUGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUocHJvcGVy
dHlJZCwgdmFsdWVJRCwgcGFyc2VyTW9kZSkpCisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlSWRlbnRpZmllcih2YWx1ZUlEKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgorc3RhdGljIGJvb2wgcGFyc2VUcmFuc2Zv
cm1UcmFuc2xhdGVBcmd1bWVudHMoQ2hhclR5cGUqJiBwb3MsIENoYXJUeXBlKiBlbmQsIHVuc2ln
bmVkIGV4cGVjdGVkQ291bnQsIENTU0Z1bmN0aW9uVmFsdWUqIHRyYW5zZm9ybVZhbHVlKQorewor
ICAgIHdoaWxlIChleHBlY3RlZENvdW50KSB7CisgICAgICAgIHNpemVfdCBkZWxpbWl0ZXIgPSBX
VEY6OmZpbmQocG9zLCBlbmQgLSBwb3MsIGV4cGVjdGVkQ291bnQgPT0gMSA/ICcpJyA6ICcsJyk7
CisgICAgICAgIGlmIChkZWxpbWl0ZXIgPT0ga05vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB1bnNpZ25lZCBhcmd1bWVudExlbmd0aCA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihkZWxpbWl0ZXIpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVz
IHVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpOdW1iZXI7CisgICAgICAgIGRv
dWJsZSBudW1iZXI7CisgICAgICAgIGlmICghcGFyc2VTaW1wbGVMZW5ndGgocG9zLCBhcmd1bWVu
dExlbmd0aCwgdW5pdCwgbnVtYmVyKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgaWYgKHVuaXQgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6UGl4ZWxzICYmIChu
dW1iZXIgfHwgdW5pdCAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpOdW1iZXIpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5k
KCpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG51bWJlciwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlczo6UGl4ZWxzKSk7CisgICAgICAgIHBvcyArPSBhcmd1bWVudExlbmd0aCArIDE7Cisg
ICAgICAgIC0tZXhwZWN0ZWRDb3VudDsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KK3N0YXRpYyBib29sIHBhcnNlVHJhbnNmb3JtTnVt
YmVyQXJndW1lbnRzKENoYXJUeXBlKiYgcG9zLCBDaGFyVHlwZSogZW5kLCB1bnNpZ25lZCBleHBl
Y3RlZENvdW50LCBDU1NGdW5jdGlvblZhbHVlKiB0cmFuc2Zvcm1WYWx1ZSkKK3sKKyAgICB3aGls
ZSAoZXhwZWN0ZWRDb3VudCkgeworICAgICAgICBzaXplX3QgZGVsaW1pdGVyID0gV1RGOjpmaW5k
KHBvcywgZW5kIC0gcG9zLCBleHBlY3RlZENvdW50ID09IDEgPyAnKScgOiAnLCcpOworICAgICAg
ICBpZiAoZGVsaW1pdGVyID09IGtOb3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgdW5zaWduZWQgYXJndW1lbnRMZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
ZGVsaW1pdGVyKTsKKyAgICAgICAgYm9vbCBvazsKKyAgICAgICAgZG91YmxlIG51bWJlciA9IGNo
YXJhY3RlcnNUb0RvdWJsZShwb3MsIGFyZ3VtZW50TGVuZ3RoLCAmb2spOworICAgICAgICBpZiAo
IW9rKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+
YXBwZW5kKCpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG51bWJlciwgQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlczo6TnVtYmVyKSk7CisgICAgICAgIHBvcyArPSBhcmd1bWVudExlbmd0aCAr
IDE7CisgICAgICAgIC0tZXhwZWN0ZWRDb3VudDsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3N0YXRpYyBjb25zdCBpbnQga1Nob3J0ZXN0VmFsaWRUcmFuc2Zvcm1TdHJpbmdMZW5ndGgg
PSAxMjsKKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgorc3RhdGljIENTU0Z1bmN0aW9u
VmFsdWUqIHBhcnNlU2ltcGxlVHJhbnNmb3JtVmFsdWUoQ2hhclR5cGUqJiBwb3MsIENoYXJUeXBl
KiBlbmQpCit7CisgICAgaWYgKGVuZCAtIHBvcyA8IGtTaG9ydGVzdFZhbGlkVHJhbnNmb3JtU3Ry
aW5nTGVuZ3RoKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGNvbnN0IGJvb2wgaXNU
cmFuc2xhdGUgPSB0b0FTQ0lJTG93ZXIocG9zWzBdKSA9PSAndCcKKyAgICAgICAgJiYgdG9BU0NJ
SUxvd2VyKHBvc1sxXSkgPT0gJ3InCisgICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3NbMl0pID09
ICdhJworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzNdKSA9PSAnbicKKyAgICAgICAgJiYg
dG9BU0NJSUxvd2VyKHBvc1s0XSkgPT0gJ3MnCisgICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3Nb
NV0pID09ICdsJworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzZdKSA9PSAnYScKKyAgICAg
ICAgJiYgdG9BU0NJSUxvd2VyKHBvc1s3XSkgPT0gJ3QnCisgICAgICAgICYmIHRvQVNDSUlMb3dl
cihwb3NbOF0pID09ICdlJzsKKworICAgIGlmIChpc1RyYW5zbGF0ZSkgeworICAgICAgICBDU1NW
YWx1ZUlEIHRyYW5zZm9ybVR5cGU7CisgICAgICAgIHVuc2lnbmVkIGV4cGVjdGVkQXJndW1lbnRD
b3VudCA9IDE7CisgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50U3RhcnQgPSAxMTsKKyAgICAgICAg
Q2hhclR5cGUgYzkgPSB0b0FTQ0lJTG93ZXIocG9zWzldKTsKKyAgICAgICAgaWYgKGM5ID09ICd4
JyAmJiBwb3NbMTBdID09ICcoJykgeworICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSA9IENTU1Zh
bHVlVHJhbnNsYXRlWDsKKyAgICAgICAgfSBlbHNlIGlmIChjOSA9PSAneScgJiYgcG9zWzEwXSA9
PSAnKCcpIHsKKyAgICAgICAgICAgIHRyYW5zZm9ybVR5cGUgPSBDU1NWYWx1ZVRyYW5zbGF0ZVk7
CisgICAgICAgIH0gZWxzZSBpZiAoYzkgPT0gJ3onICYmIHBvc1sxMF0gPT0gJygnKSB7CisgICAg
ICAgICAgICB0cmFuc2Zvcm1UeXBlID0gQ1NTVmFsdWVUcmFuc2xhdGVaOworICAgICAgICB9IGVs
c2UgaWYgKGM5ID09ICcoJykgeworICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSA9IENTU1ZhbHVl
VHJhbnNsYXRlOworICAgICAgICAgICAgZXhwZWN0ZWRBcmd1bWVudENvdW50ID0gMjsKKyAgICAg
ICAgICAgIGFyZ3VtZW50U3RhcnQgPSAxMDsKKyAgICAgICAgfSBlbHNlIGlmIChjOSA9PSAnMycg
JiYgdG9BU0NJSUxvd2VyKHBvc1sxMF0pID09ICdkJyAmJiBwb3NbMTFdID09ICcoJykgeworICAg
ICAgICAgICAgdHJhbnNmb3JtVHlwZSA9IENTU1ZhbHVlVHJhbnNsYXRlM2Q7CisgICAgICAgICAg
ICBleHBlY3RlZEFyZ3VtZW50Q291bnQgPSAzOworICAgICAgICAgICAgYXJndW1lbnRTdGFydCA9
IDEyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIH0KKyAgICAgICAgcG9zICs9IGFyZ3VtZW50U3RhcnQ7CisgICAgICAgIENTU0Z1bmN0aW9u
VmFsdWUqIHRyYW5zZm9ybVZhbHVlID0gQ1NTRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKHRyYW5zZm9y
bVR5cGUpOworICAgICAgICBpZiAoIXBhcnNlVHJhbnNmb3JtVHJhbnNsYXRlQXJndW1lbnRzKHBv
cywgZW5kLCBleHBlY3RlZEFyZ3VtZW50Q291bnQsIHRyYW5zZm9ybVZhbHVlKSkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gdHJhbnNmb3JtVmFsdWU7CisgICAg
fQorCisgICAgY29uc3QgYm9vbCBpc01hdHJpeDNkID0gdG9BU0NJSUxvd2VyKHBvc1swXSkgPT0g
J20nCisgICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3NbMV0pID09ICdhJworICAgICAgICAmJiB0
b0FTQ0lJTG93ZXIocG9zWzJdKSA9PSAndCcKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1sz
XSkgPT0gJ3InCisgICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3NbNF0pID09ICdpJworICAgICAg
ICAmJiB0b0FTQ0lJTG93ZXIocG9zWzVdKSA9PSAneCcKKyAgICAgICAgJiYgcG9zWzZdID09ICcz
JworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzddKSA9PSAnZCcKKyAgICAgICAgJiYgcG9z
WzhdID09ICcoJzsKKworICAgIGlmIChpc01hdHJpeDNkKSB7CisgICAgICAgIHBvcyArPSA5Owor
ICAgICAgICBDU1NGdW5jdGlvblZhbHVlKiB0cmFuc2Zvcm1WYWx1ZSA9IENTU0Z1bmN0aW9uVmFs
dWU6OmNyZWF0ZShDU1NWYWx1ZU1hdHJpeDNkKTsKKyAgICAgICAgaWYgKCFwYXJzZVRyYW5zZm9y
bU51bWJlckFyZ3VtZW50cyhwb3MsIGVuZCwgMTYsIHRyYW5zZm9ybVZhbHVlKSkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gdHJhbnNmb3JtVmFsdWU7CisgICAg
fQorCisgICAgY29uc3QgYm9vbCBpc1NjYWxlM2QgPSB0b0FTQ0lJTG93ZXIocG9zWzBdKSA9PSAn
cycKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1sxXSkgPT0gJ2MnCisgICAgICAgICYmIHRv
QVNDSUlMb3dlcihwb3NbMl0pID09ICdhJworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzNd
KSA9PSAnbCcKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1s0XSkgPT0gJ2UnCisgICAgICAg
ICYmIHBvc1s1XSA9PSAnMycKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1s2XSkgPT0gJ2Qn
CisgICAgICAgICYmIHBvc1s3XSA9PSAnKCc7CisKKyAgICBpZiAoaXNTY2FsZTNkKSB7CisgICAg
ICAgIHBvcyArPSA4OworICAgICAgICBDU1NGdW5jdGlvblZhbHVlKiB0cmFuc2Zvcm1WYWx1ZSA9
IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShDU1NWYWx1ZVNjYWxlM2QpOworICAgICAgICBpZiAo
IXBhcnNlVHJhbnNmb3JtTnVtYmVyQXJndW1lbnRzKHBvcywgZW5kLCAzLCB0cmFuc2Zvcm1WYWx1
ZSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHRyYW5zZm9y
bVZhbHVlOworICAgIH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhclR5cGU+CitzdGF0aWMgYm9vbCB0cmFuc2Zvcm1DYW5MaWtlbHlVc2VGYXN0UGF0
aChjb25zdCBDaGFyVHlwZSogY2hhcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICAvLyBWZXJ5
IGZhc3Qgc2NhbiB0aGF0IGF0dGVtcHRzIHRvIHJlamVjdCBtb3N0IHRyYW5zZm9ybXMgdGhhdCBj
b3VsZG4ndAorICAgIC8vIHRha2UgdGhlIGZhc3QgcGF0aC4gVGhpcyBhdm9pZHMgZG9pbmcgdGhl
IG1hbGxvYyBhbmQgc3RyaW5nLT5kb3VibGUKKyAgICAvLyBjb252ZXJzaW9ucyBpbiBwYXJzZVNp
bXBsZVRyYW5zZm9ybVZhbHVlIG9ubHkgdG8gZGlzY2FyZCB0aGVtIHdoZW4gd2UKKyAgICAvLyBy
dW4gaW50byBhIHRyYW5zZm9ybSBjb21wb25lbnQgd2UgZG9uJ3QgdW5kZXJzdGFuZC4KKyAgICB1
bnNpZ25lZCBpID0gMDsKKyAgICB3aGlsZSAoaSA8IGxlbmd0aCkgeworICAgICAgICBpZiAoaXND
U1NTcGFjZShjaGFyc1tpXSkpIHsKKyAgICAgICAgICAgICsraTsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisgICAgICAgIGlmIChsZW5ndGggLSBpIDwga1Nob3J0ZXN0VmFsaWRU
cmFuc2Zvcm1TdHJpbmdMZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHN3aXRjaCAodG9BU0NJSUxvd2VyKGNoYXJzW2ldKSkgeworICAgICAgICBjYXNlICd0JzoKKyAg
ICAgICAgICAgIC8vIHRyYW5zbGF0ZSwgdHJhbnNsYXRlWCwgdHJhbnNsYXRlWSwgdHJhbnNsYXRl
WiwgdHJhbnNsYXRlM2QuCisgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGNoYXJzW2kgKyA4
XSkgIT0gJ2UnKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGkg
Kz0gOTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdtJzoKKyAgICAgICAgICAg
IC8vIG1hdHJpeDNkLgorICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihjaGFyc1tpICsgN10p
ICE9ICdkJykKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpICs9
IDg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAncyc6CisgICAgICAgICAgICAv
LyBzY2FsZTNkLgorICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihjaGFyc1tpICsgNl0pICE9
ICdkJykKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpICs9IDc7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vIEFs
bCBvdGhlciB0aGluZ3MsIGV4LiByb3RhdGUuCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKyAgICAgICAgc2l6ZV90IGFyZ3VtZW50c0VuZCA9IFdURjo6ZmluZChjaGFycywg
bGVuZ3RoLCAnKScsIGkpOworICAgICAgICBpZiAoYXJndW1lbnRzRW5kID09IGtOb3RGb3VuZCkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgLy8gQWR2YW5jZSB0byB0aGUgZW5k
IG9mIHRoZSBhcmd1bWVudHMuCisgICAgICAgIGkgPSBhcmd1bWVudHNFbmQgKyAxOworICAgIH0K
KyAgICByZXR1cm4gaSA9PSBsZW5ndGg7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlw
ZT4KK3N0YXRpYyBDU1NWYWx1ZUxpc3QqIHBhcnNlU2ltcGxlVHJhbnNmb3JtTGlzdChjb25zdCBD
aGFyVHlwZSogY2hhcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBpZiAoIXRyYW5zZm9ybUNh
bkxpa2VseVVzZUZhc3RQYXRoKGNoYXJzLCBsZW5ndGgpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICBjb25zdCBDaGFyVHlwZSomIHBvcyA9IGNoYXJzOworICAgIGNvbnN0IENoYXJUeXBl
KiBlbmQgPSBjaGFycyArIGxlbmd0aDsKKyAgICBDU1NWYWx1ZUxpc3QqIHRyYW5zZm9ybUxpc3Qg
PSBudWxscHRyOworICAgIHdoaWxlIChwb3MgPCBlbmQpIHsKKyAgICAgICAgd2hpbGUgKHBvcyA8
IGVuZCAmJiBpc0NTU1NwYWNlKCpwb3MpKQorICAgICAgICAgICAgKytwb3M7CisgICAgICAgIGlm
IChwb3MgPj0gZW5kKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIENTU0Z1bmN0aW9uVmFs
dWUqIHRyYW5zZm9ybVZhbHVlID0gcGFyc2VTaW1wbGVUcmFuc2Zvcm1WYWx1ZShwb3MsIGVuZCk7
CisgICAgICAgIGlmICghdHJhbnNmb3JtVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgaWYgKCF0cmFuc2Zvcm1MaXN0KQorICAgICAgICAgICAgdHJhbnNmb3JtTGlz
dCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgdHJhbnNm
b3JtTGlzdC0+YXBwZW5kKCp0cmFuc2Zvcm1WYWx1ZSk7CisgICAgfQorICAgIHJldHVybiB0cmFu
c2Zvcm1MaXN0OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIHBhcnNlU2ltcGxlVHJhbnNmb3JtKENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgQVNT
RVJUKCFzdHJpbmcuaXNFbXB0eSgpKTsKKworICAgIGlmIChwcm9wZXJ0eUlEICE9IENTU1Byb3Bl
cnR5VHJhbnNmb3JtKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoc3RyaW5nLmlz
OEJpdCgpKQorICAgICAgICByZXR1cm4gcGFyc2VTaW1wbGVUcmFuc2Zvcm1MaXN0KHN0cmluZy5j
aGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOworICAgIHJldHVybiBwYXJzZVNpbXBsZVRy
YW5zZm9ybUxpc3Qoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCkpOworfQor
CitDU1NWYWx1ZSogQ1NTUGFyc2VyRmFzdFBhdGhzOjptYXliZVBhcnNlVmFsdWUoQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHN0cmluZywgQ1NTUGFyc2VyTW9kZSBwYXJz
ZXJNb2RlKQoreworICAgIGlmIChDU1NWYWx1ZSogbGVuZ3RoID0gcGFyc2VTaW1wbGVMZW5ndGhW
YWx1ZShwcm9wZXJ0eUlELCBzdHJpbmcsIHBhcnNlck1vZGUpKQorICAgICAgICByZXR1cm4gbGVu
Z3RoOworICAgIGlmIChpc0NvbG9yUHJvcGVydHlJRChwcm9wZXJ0eUlEKSkKKyAgICAgICAgcmV0
dXJuIHBhcnNlQ29sb3Ioc3RyaW5nLCBwYXJzZXJNb2RlKTsKKyAgICBpZiAoQ1NTVmFsdWUqIGtl
eXdvcmQgPSBwYXJzZUtleXdvcmRWYWx1ZShwcm9wZXJ0eUlELCBzdHJpbmcsIHBhcnNlck1vZGUp
KQorICAgICAgICByZXR1cm4ga2V5d29yZDsKKyAgICBpZiAoQ1NTVmFsdWUqIHRyYW5zZm9ybSA9
IHBhcnNlU2ltcGxlVHJhbnNmb3JtKHByb3BlcnR5SUQsIHN0cmluZykpCisgICAgICAgIHJldHVy
biB0cmFuc2Zvcm07CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKKyAgICAgKi8KK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2Vy
RmFzdFBhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJGYXN0UGF0aHMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlckZhc3RQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAK
Ky8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8v
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
Ly8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZuZGVm
IENTU1BhcnNlckZhc3RQYXRoc19oCisjZGVmaW5lIENTU1BhcnNlckZhc3RQYXRoc19oCisKKyNp
bmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgor
I2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDU1NWYWx1ZTsKKworY2xhc3Mg
Q1NTUGFyc2VyRmFzdFBhdGhzIHsKK3B1YmxpYzoKKyAgICAvLyBQYXJzZXMgc2ltcGxlIHZhbHVl
cyBsaWtlICcxMHB4JyBvciAnZ3JlZW4nLCBidXQgbWFrZXMgbm8gZ3VhcmFudGVlcworICAgIC8v
IGFib3V0IGhhbmRsaW5nIGFueSBwcm9wZXJ0eSBjb21wbGV0ZWx5LgorICAgIHN0YXRpYyBDU1NW
YWx1ZSogbWF5YmVQYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYsIENTU1Bh
cnNlck1vZGUpOworCisgICAgLy8gUHJvcGVydGllcyBoYW5kbGVkIGhlcmUgc2hvdWxkbid0IGJl
IGV4cGxpY2l0bHkgaGFuZGxlZCBpbiBDU1NQcm9wZXJ0eVBhcnNlcgorICAgIHN0YXRpYyBib29s
IGlzS2V5d29yZFByb3BlcnR5SUQoQ1NTUHJvcGVydHlJRCk7CisgICAgc3RhdGljIGJvb2wgaXNW
YWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlSUQsIENT
U1BhcnNlck1vZGUpOworCisgICAgc3RhdGljIENTU1ZhbHVlKiBwYXJzZUNvbG9yKGNvbnN0IFN0
cmluZyYsIENTU1BhcnNlck1vZGUpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gQ1NTUGFyc2VyRmFzdFBhdGhzX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VySWRpb21zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIENTU1BhcnNlcklkaW9tc19oCisjZGVmaW5lIENTU1BhcnNlcklkaW9tc19o
CisKKyNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
Ky8vIFNwYWNlIGNoYXJhY3RlcnMgYXMgZGVmaW5lZCBieSB0aGUgQ1NTIHNwZWNpZmljYXRpb24u
CisvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXN5bnRheC8jd2hpdGVzcGFjZQoraW5saW5l
IGJvb2wgaXNDU1NTcGFjZShVQ2hhciBjKQoreworICAgIHJldHVybiBjID09ICcgJyB8fCBjID09
ICdcdCcgfHwgYyA9PSAnXG4nOworfQorCisvLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3Mt
c3ludGF4LyNuYW1lLXN0YXJ0LWNvZGUtcG9pbnQKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPgorYm9vbCBpc05hbWVTdGFydENvZGVQb2ludChDaGFyYWN0ZXJUeXBlIGMpCit7Cisg
ICAgcmV0dXJuIGlzQVNDSUlBbHBoYShjKSB8fCBjID09ICdfJyB8fCAhaXNBU0NJSShjKTsKK30K
KworLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXN5bnRheC8jbmFtZS1jb2RlLXBvaW50
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK2Jvb2wgaXNOYW1lQ29kZVBvaW50
KENoYXJhY3RlclR5cGUgYykKK3sKKyAgICByZXR1cm4gaXNOYW1lU3RhcnRDb2RlUG9pbnQoYykg
fHwgaXNBU0NJSURpZ2l0KGMpIHx8IGMgPT0gJy0nOworfQorCit9CisKKyNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXIuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlck9ic2VydmVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
MyBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICog
Q29weXJpZ2h0IChDKSAyMDA5IC0gMjAxMCAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRk
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIENTU1BhcnNlck9ic2VydmVyX2gKKyNkZWZp
bmUgQ1NTUGFyc2VyT2JzZXJ2ZXJfaAorCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlTb3VyY2VEYXRh
LmgiCisjaW5jbHVkZSAiU3R5bGVSdWxlLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1BhcnNlclRva2VuOworY2xhc3MgQ1NTUGFy
c2VyVG9rZW5SYW5nZTsKKworLy8gVGhpcyBpcyBvbmx5IGZvciB0aGUgaW5zcGVjdG9yIGFuZCBz
aG91bGRuJ3QgYmUgdXNlZCBlbHNld2hlcmUuCitjbGFzcyBDU1NQYXJzZXJPYnNlcnZlciB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+Q1NTUGFyc2VyT2JzZXJ2ZXIoKSB7IH07CisgICAgdmlydHVh
bCB2b2lkIHN0YXJ0UnVsZUhlYWRlcihTdHlsZVJ1bGU6OlR5cGUsIHVuc2lnbmVkIG9mZnNldCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRSdWxlSGVhZGVyKHVuc2lnbmVkIG9mZnNldCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBvYnNlcnZlU2VsZWN0b3IodW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFydFJ1bGVCb2R5
KHVuc2lnbmVkIG9mZnNldCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRSdWxlQm9keSh1bnNp
Z25lZCBvZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb2JzZXJ2ZVByb3BlcnR5KHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIGJvb2wgaXNJbXBvcnRhbnQsIGJv
b2wgaXNQYXJzZWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb2JzZXJ2ZUNvbW1lbnQodW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkgPSAwOworICAgIC8vIFRPRE8odGlt
bG9oKTogVW51c2VkLCBzaG91bGQgYmUgcmVtb3ZlZAorICAgIHZpcnR1YWwgdm9pZCBzdGFydE1l
ZGlhUXVlcnlFeHAodW5zaWduZWQgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVuZE1l
ZGlhUXVlcnlFeHAodW5zaWduZWQgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0
TWVkaWFRdWVyeSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kTWVkaWFRdWVyeSgpID0gMDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENTU1BhcnNlck9ic2Vy
dmVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXJX
cmFwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Bh
cnNlck9ic2VydmVyV3JhcHBlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNzEgQEAKKy8vIENvcHlyaWdodCAyMDE1IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
Ly8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyT2JzZXJ2ZXJX
cmFwcGVyLmgiCisKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJhbmdlLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKwordW5zaWduZWQgQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyOjpzdGFydE9m
ZnNldChjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4gbV90
b2tlbk9mZnNldHNbcmFuZ2UuYmVnaW4oKSAtIG1fZmlyc3RQYXJzZXJUb2tlbl07Cit9CisKK3Vu
c2lnbmVkIENTU1BhcnNlck9ic2VydmVyV3JhcHBlcjo6cHJldmlvdXNUb2tlblN0YXJ0T2Zmc2V0
KGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5iZWdp
bigpID09IG1fZmlyc3RQYXJzZXJUb2tlbikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IG1fdG9rZW5PZmZzZXRzW3JhbmdlLmJlZ2luKCkgLSBtX2ZpcnN0UGFyc2VyVG9rZW4gLSAxXTsK
K30KKwordW5zaWduZWQgQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyOjplbmRPZmZzZXQoY29uc3Qg
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgcmV0dXJuIG1fdG9rZW5PZmZzZXRz
W3JhbmdlLmVuZCgpIC0gbV9maXJzdFBhcnNlclRva2VuXTsKK30KKwordm9pZCBDU1NQYXJzZXJP
YnNlcnZlcldyYXBwZXI6OnNraXBDb21tZW50c0JlZm9yZShjb25zdCBDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgYm9vbCBsZWF2ZURpcmVjdGx5QmVmb3JlKQoreworICAgIHVuc2lnbmVkIHN0
YXJ0SW5kZXggPSByYW5nZS5iZWdpbigpIC0gbV9maXJzdFBhcnNlclRva2VuOworICAgIGlmICgh
bGVhdmVEaXJlY3RseUJlZm9yZSkKKyAgICAgICAgc3RhcnRJbmRleCsrOworICAgIHdoaWxlICht
X2NvbW1lbnRJdGVyYXRvciA8IG1fY29tbWVudE9mZnNldHMuZW5kKCkgJiYgbV9jb21tZW50SXRl
cmF0b3ItPnRva2Vuc0JlZm9yZSA8IHN0YXJ0SW5kZXgpCisgICAgICAgIG1fY29tbWVudEl0ZXJh
dG9yKys7Cit9CisKK3ZvaWQgQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyOjp5aWVsZENvbW1lbnRz
QmVmb3JlKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIHVuc2lnbmVk
IHN0YXJ0SW5kZXggPSByYW5nZS5iZWdpbigpIC0gbV9maXJzdFBhcnNlclRva2VuOworICAgIHdo
aWxlIChtX2NvbW1lbnRJdGVyYXRvciA8IG1fY29tbWVudE9mZnNldHMuZW5kKCkgJiYgbV9jb21t
ZW50SXRlcmF0b3ItPnRva2Vuc0JlZm9yZSA8PSBzdGFydEluZGV4KSB7CisgICAgICAgIG1fb2Jz
ZXJ2ZXIub2JzZXJ2ZUNvbW1lbnQobV9jb21tZW50SXRlcmF0b3ItPnN0YXJ0T2Zmc2V0LCBtX2Nv
bW1lbnRJdGVyYXRvci0+ZW5kT2Zmc2V0KTsKKyAgICAgICAgbV9jb21tZW50SXRlcmF0b3IrKzsK
KyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlck9ic2VydmVyV3Jh
cHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzkgQEAKKy8vIENvcHlyaWdodCAyMDE1
IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgor
Ly8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZuZGVmIENTU1BhcnNlck9ic2VydmVy
V3JhcHBlcl9oCisjZGVmaW5lIENTU1BhcnNlck9ic2VydmVyV3JhcHBlcl9oCisKKyNpbmNsdWRl
ICJDU1NQYXJzZXJPYnNlcnZlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENT
U1BhcnNlck9ic2VydmVyV3JhcHBlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQ1NTUGFyc2Vy
T2JzZXJ2ZXJXcmFwcGVyKENTU1BhcnNlck9ic2VydmVyJiBvYnNlcnZlcikKKyAgICAgICAgOiBt
X29ic2VydmVyKG9ic2VydmVyKQorICAgIHsgfQorCisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQo
Y29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworICAgIHVuc2lnbmVkIHByZXZpb3VzVG9rZW5T
dGFydE9mZnNldChjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJik7CisgICAgdW5zaWduZWQgZW5k
T2Zmc2V0KGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmKTsgLy8gSW5jbHVkZXMgdHJhaWxpbmcg
Y29tbWVudHMKKworICAgIHZvaWQgc2tpcENvbW1lbnRzQmVmb3JlKGNvbnN0IENTU1BhcnNlclRv
a2VuUmFuZ2UmLCBib29sIGxlYXZlRGlyZWN0bHlCZWZvcmUpOworICAgIHZvaWQgeWllbGRDb21t
ZW50c0JlZm9yZShjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJik7CisKKyAgICBDU1NQYXJzZXJP
YnNlcnZlciYgb2JzZXJ2ZXIoKSB7IHJldHVybiBtX29ic2VydmVyOyB9CisgICAgdm9pZCBhZGRD
b21tZW50KHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2lnbmVk
IHRva2Vuc0JlZm9yZSkKKyAgICB7CisgICAgICAgIENvbW1lbnRQb3NpdGlvbiBwb3NpdGlvbiA9
IHtzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCB0b2tlbnNCZWZvcmV9OworICAgICAgICBtX2NvbW1l
bnRPZmZzZXRzLmFwcGVuZChwb3NpdGlvbik7CisgICAgfQorICAgIHZvaWQgYWRkVG9rZW4odW5z
aWduZWQgc3RhcnRPZmZzZXQpIHsgbV90b2tlbk9mZnNldHMuYXBwZW5kKHN0YXJ0T2Zmc2V0KTsg
fQorICAgIHZvaWQgZmluYWxpemVDb25zdHJ1Y3Rpb24oQ1NTUGFyc2VyVG9rZW4qIGZpcnN0UGFy
c2VyVG9rZW4pCisgICAgeworICAgICAgICBtX2ZpcnN0UGFyc2VyVG9rZW4gPSBmaXJzdFBhcnNl
clRva2VuOworICAgICAgICBtX2NvbW1lbnRJdGVyYXRvciA9IG1fY29tbWVudE9mZnNldHMuYmVn
aW4oKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ1NTUGFyc2VyT2JzZXJ2ZXImIG1fb2JzZXJ2
ZXI7CisgICAgVmVjdG9yPHVuc2lnbmVkPiBtX3Rva2VuT2Zmc2V0czsKKyAgICBDU1NQYXJzZXJU
b2tlbiogbV9maXJzdFBhcnNlclRva2VuOworCisgICAgc3RydWN0IENvbW1lbnRQb3NpdGlvbiB7
CisgICAgICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0OworICAgICAgICB1bnNpZ25lZCBlbmRPZmZz
ZXQ7CisgICAgICAgIHVuc2lnbmVkIHRva2Vuc0JlZm9yZTsKKyAgICB9OworCisgICAgVmVjdG9y
PENvbW1lbnRQb3NpdGlvbj4gbV9jb21tZW50T2Zmc2V0czsKKyAgICBWZWN0b3I8Q29tbWVudFBv
c2l0aW9uPjo6aXRlcmF0b3IgbV9jb21tZW50SXRlcmF0b3I7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXJfaApJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw0NzYgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJv
bWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NT
UGFyc2VyVG9rZW4uaCIKKworI2luY2x1ZGUgIkNTU01hcmt1cC5oIgorI2luY2x1ZGUgIkNTU1By
aW1pdGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlQYXJzZXIuaCIKKyNpbmNsdWRl
IDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgorQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyBjc3NQcmlt
aXRpdmVWYWx1ZVVuaXRGcm9tVHJpZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgpCit7CisgICAgQVNTRVJUKGRhdGEpOworICAgIEFTU0VSVChsZW5ndGgpOworICAg
IHN3aXRjaCAobGVuZ3RoKSB7CisgICAgY2FzZSAxOgorICAgICAgICBzd2l0Y2ggKHRvQVNDSUlM
b3dlcihkYXRhWzBdKSkgeworICAgICAgICBjYXNlICdzJzoKKyAgICAgICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUzsKKyAgICAgICAgfQorICAgICAgICBi
cmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGRhdGFbMF0p
KSB7CisgICAgICAgIGNhc2UgJ2MnOgorICAgICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIo
ZGF0YVsxXSkpIHsKKyAgICAgICAgICAgIGNhc2UgJ2gnOgorICAgICAgICAgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfQ0hTOworICAgICAgICAgICAgY2Fz
ZSAnbSc6CisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZXM6OkNTU19DTTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlICdlJzoKKyAgICAgICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGRhdGFbMV0pKSB7Cisg
ICAgICAgICAgICBjYXNlICdtJzoKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZl
VmFsdWU6OlVuaXRUeXBlczo6Q1NTX0VNUzsKKyAgICAgICAgICAgIGNhc2UgJ3gnOgorICAgICAg
ICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfRVhTOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ2YnOgorICAg
ICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzFdKSA9PSAncicpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19GUjsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlICdoJzoKKyAgICAgICAgICAgIGlmICh0b0FTQ0lJTG93
ZXIoZGF0YVsxXSkgPT0gJ3onKQorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVW
YWx1ZTo6VW5pdFR5cGVzOjpDU1NfSFo7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSAnaSc6CisgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGRhdGFbMV0pID09ICduJykKKyAg
ICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0lO
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ20nOgorICAgICAgICAgICAgc3dp
dGNoICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkpIHsKKyAgICAgICAgICAgIGNhc2UgJ20nOgorICAg
ICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfTU07
CisgICAgICAgICAgICBjYXNlICdzJzoKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX01TOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgJ3AnOgorICAgICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93
ZXIoZGF0YVsxXSkpIHsKKyAgICAgICAgICAgIGNhc2UgJ2MnOgorICAgICAgICAgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUEM7CisgICAgICAgICAgICBj
YXNlICd0JzoKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlczo6Q1NTX1BUOworICAgICAgICAgICAgY2FzZSAneCc6CisgICAgICAgICAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19QWDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICd2JzoKKyAgICAgICAgICAgIHN3aXRj
aCAodG9BU0NJSUxvd2VyKGRhdGFbMV0pKSB7CisgICAgICAgICAgICBjYXNlICdoJzoKKyAgICAg
ICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1ZIOwor
ICAgICAgICAgICAgY2FzZSAndyc6CisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19WVzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMzoKKyAgICAgICAgc3dp
dGNoICh0b0FTQ0lJTG93ZXIoZGF0YVswXSkpIHsKKyAgICAgICAgY2FzZSAnZCc6CisgICAgICAg
ICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkgeworICAgICAgICAgICAgY2FzZSAn
ZSc6CisgICAgICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzJdKSA9PSAnZycpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpD
U1NfREVHOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAncCc6Cisg
ICAgICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzJdKSA9PSAnaScpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfRFBJ
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSAnayc6CisgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGRhdGFbMV0p
ID09ICdoJyAmJiB0b0FTQ0lJTG93ZXIoZGF0YVsyXSkgPT0gJ3onKQorICAgICAgICAgICAgICAg
IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfS0haOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ3InOgorICAgICAgICAgICAgc3dpdGNoICh0b0FTQ0lJ
TG93ZXIoZGF0YVsxXSkpIHsKKyAgICAgICAgICAgIGNhc2UgJ2EnOgorICAgICAgICAgICAgICAg
IGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsyXSkgPT0gJ2QnKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1JBRDsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ2UnOgorICAgICAgICAgICAgICAgIGlmICh0
b0FTQ0lJTG93ZXIoZGF0YVsyXSkgPT0gJ20nKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1JFTVM7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBicmVhazsK
KyAgICBjYXNlIDQ6CisgICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGRhdGFbMF0pKSB7Cisg
ICAgICAgIGNhc2UgJ2QnOgorICAgICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVsx
XSkpIHsKKyAgICAgICAgICAgIGNhc2UgJ3AnOgorICAgICAgICAgICAgICAgIHN3aXRjaCAodG9B
U0NJSUxvd2VyKGRhdGFbMl0pKSB7CisgICAgICAgICAgICAgICAgY2FzZSAnYyc6CisgICAgICAg
ICAgICAgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoZGF0YVszXSkgPT0gJ20nKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19E
UENNOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICdw
JzoKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzNdKSA9PSAneCcp
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlczo6Q1NTX0RQUFg7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlICdnJzoKKyAgICAgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkgPT0g
J3InICYmIHRvQVNDSUlMb3dlcihkYXRhWzJdKSA9PSAnYScgJiYgdG9BU0NJSUxvd2VyKGRhdGFb
M10pID09ICdkJykKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlczo6Q1NTX0dSQUQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAndCc6
CisgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGRhdGFbMV0pID09ICd1JyAmJiB0b0FTQ0lJ
TG93ZXIoZGF0YVsyXSkgPT0gJ3InICYmIHRvQVNDSUlMb3dlcihkYXRhWzNdKSA9PSAnbicpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19U
VVJOOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ3YnOgorICAgICAgICAgICAg
c3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkpIHsKKyAgICAgICAgICAgIGNhc2UgJ20nOgor
ICAgICAgICAgICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGRhdGFbMl0pKSB7CisgICAgICAg
ICAgICAgICAgY2FzZSAnYSc6CisgICAgICAgICAgICAgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIo
ZGF0YVszXSkgPT0gJ3gnKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19WTUFYOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlICdpJzoKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRv
QVNDSUlMb3dlcihkYXRhWzNdKSA9PSAnbicpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1ZNSU47CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgNToKKyAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVswXSkp
IHsKKyAgICAgICAgY2FzZSAnXyc6CisgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGRhdGFb
MV0pID09ICdfJyAmJiB0b0FTQ0lJTG93ZXIoZGF0YVsyXSkgPT0gJ3EnICYmIHRvQVNDSUlMb3dl
cihkYXRhWzNdKSA9PSAnZScgJiYgdG9BU0NJSUxvd2VyKGRhdGFbNF0pID09ICdtJykKKyAgICAg
ICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0VNUzsg
Ly8gRklYTUUtTkVXUEFSU0VSOiBOZWVkIHF1aXJreSBlbXMuCisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19VTktOT1dOOworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZl
VmFsdWU6OlVuaXRUeXBlcyBzdHJpbmdUb1VuaXRUeXBlKFN0cmluZ1ZpZXcgc3RyaW5nVmlldykK
K3sKKyAgICBpZiAoc3RyaW5nVmlldy5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGNzc1ByaW1p
dGl2ZVZhbHVlVW5pdEZyb21UcmllKHN0cmluZ1ZpZXcuY2hhcmFjdGVyczgoKSwgc3RyaW5nVmll
dy5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGNzc1ByaW1pdGl2ZVZhbHVlVW5pdEZyb21UcmllKHN0
cmluZ1ZpZXcuY2hhcmFjdGVyczE2KCksIHN0cmluZ1ZpZXcubGVuZ3RoKCkpOworfQorCitDU1NQ
YXJzZXJUb2tlbjo6Q1NTUGFyc2VyVG9rZW4oQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIEJsb2Nr
VHlwZSBibG9ja1R5cGUpCisgICAgOiBtX3R5cGUodHlwZSkKKyAgICAsIG1fYmxvY2tUeXBlKGJs
b2NrVHlwZSkKK3sKK30KKworLy8gSnVzdCBhIGhlbHBlciB1c2VkIGZvciBEZWxpbWl0ZXIgdG9r
ZW5zLgorQ1NTUGFyc2VyVG9rZW46OkNTU1BhcnNlclRva2VuKENTU1BhcnNlclRva2VuVHlwZSB0
eXBlLCBVQ2hhciBjKQorICAgIDogbV90eXBlKHR5cGUpCisgICAgLCBtX2Jsb2NrVHlwZShOb3RC
bG9jaykKKyAgICAsIG1fZGVsaW1pdGVyKGMpCit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBEZWxp
bWl0ZXJUb2tlbik7Cit9CisKK0NTU1BhcnNlclRva2VuOjpDU1NQYXJzZXJUb2tlbihDU1NQYXJz
ZXJUb2tlblR5cGUgdHlwZSwgU3RyaW5nVmlldyB2YWx1ZSwgQmxvY2tUeXBlIGJsb2NrVHlwZSkK
KyAgICA6IG1fdHlwZSh0eXBlKQorICAgICwgbV9ibG9ja1R5cGUoYmxvY2tUeXBlKQoreworICAg
IGluaXRWYWx1ZUZyb21TdHJpbmdWaWV3KHZhbHVlKTsKKyAgICBtX2lkID0gLTE7Cit9CisKK0NT
U1BhcnNlclRva2VuOjpDU1NQYXJzZXJUb2tlbihDU1NQYXJzZXJUb2tlblR5cGUgdHlwZSwgZG91
YmxlIG51bWVyaWNWYWx1ZSwgTnVtZXJpY1ZhbHVlVHlwZSBudW1lcmljVmFsdWVUeXBlLCBOdW1l
cmljU2lnbiBzaWduKQorICAgIDogbV90eXBlKHR5cGUpCisgICAgLCBtX2Jsb2NrVHlwZShOb3RC
bG9jaykKKyAgICAsIG1fbnVtZXJpY1ZhbHVlVHlwZShudW1lcmljVmFsdWVUeXBlKQorICAgICwg
bV9udW1lcmljU2lnbihzaWduKQorICAgICwgbV91bml0KHN0YXRpY19jYXN0PHVuc2lnbmVkPihD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfTlVNQkVSKSkKK3sKKyAgICBBU1NFUlQo
dHlwZSA9PSBOdW1iZXJUb2tlbik7CisgICAgbV9udW1lcmljVmFsdWUgPSBjbGFtcFRvPGRvdWJs
ZT4obnVtZXJpY1ZhbHVlLCAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpLCBzdGQ6
Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpOworfQorCitDU1NQYXJzZXJUb2tlbjo6Q1NT
UGFyc2VyVG9rZW4oQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIFVDaGFyMzIgc3RhcnQsIFVDaGFy
MzIgZW5kKQorICAgIDogbV90eXBlKFVuaWNvZGVSYW5nZVRva2VuKQorICAgICwgbV9ibG9ja1R5
cGUoTm90QmxvY2spCit7CisgICAgQVNTRVJUX1VOVVNFRCh0eXBlLCB0eXBlID09IFVuaWNvZGVS
YW5nZVRva2VuKTsKKyAgICBtX3VuaWNvZGVSYW5nZS5zdGFydCA9IHN0YXJ0OworICAgIG1fdW5p
Y29kZVJhbmdlLmVuZCA9IGVuZDsKK30KKworQ1NTUGFyc2VyVG9rZW46OkNTU1BhcnNlclRva2Vu
KEhhc2hUb2tlblR5cGUgdHlwZSwgU3RyaW5nVmlldyB2YWx1ZSkKKyAgICA6IG1fdHlwZShIYXNo
VG9rZW4pCisgICAgLCBtX2Jsb2NrVHlwZShOb3RCbG9jaykKKyAgICAsIG1faGFzaFRva2VuVHlw
ZSh0eXBlKQoreworICAgIGluaXRWYWx1ZUZyb21TdHJpbmdWaWV3KHZhbHVlKTsKK30KKwordm9p
ZCBDU1NQYXJzZXJUb2tlbjo6Y29udmVydFRvRGltZW5zaW9uV2l0aFVuaXQoU3RyaW5nVmlldyB1
bml0KQoreworICAgIEFTU0VSVChtX3R5cGUgPT0gTnVtYmVyVG9rZW4pOworICAgIG1fdHlwZSA9
IERpbWVuc2lvblRva2VuOworICAgIGluaXRWYWx1ZUZyb21TdHJpbmdWaWV3KHVuaXQpOworICAg
IG1fdW5pdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdHJpbmdUb1VuaXRUeXBlKHVuaXQpKTsK
K30KKwordm9pZCBDU1NQYXJzZXJUb2tlbjo6Y29udmVydFRvUGVyY2VudGFnZSgpCit7CisgICAg
QVNTRVJUKG1fdHlwZSA9PSBOdW1iZXJUb2tlbik7CisgICAgbV90eXBlID0gUGVyY2VudGFnZVRv
a2VuOworICAgIG1fdW5pdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzOjpDU1NfUEVSQ0VOVEFHRSk7Cit9CisKK1VDaGFyIENTU1BhcnNlclRva2Vu
OjpkZWxpbWl0ZXIoKSBjb25zdAoreworICAgIEFTU0VSVChtX3R5cGUgPT0gRGVsaW1pdGVyVG9r
ZW4pOworICAgIHJldHVybiBtX2RlbGltaXRlcjsKK30KKworTnVtZXJpY1NpZ24gQ1NTUGFyc2Vy
VG9rZW46Om51bWVyaWNTaWduKCkgY29uc3QKK3sKKyAgICAvLyBUaGlzIGlzIHZhbGlkIGZvciBE
aW1lbnNpb25Ub2tlbiBhbmQgUGVyY2VudGFnZVRva2VuLCBidXQgb25seSB1c2VkCisgICAgLy8g
aW4gPGFuK2I+IHBhcnNpbmcgb24gTnVtYmVyVG9rZW5zLgorICAgIEFTU0VSVChtX3R5cGUgPT0g
TnVtYmVyVG9rZW4pOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxOdW1lcmljU2lnbj4obV9udW1l
cmljU2lnbik7Cit9CisKK051bWVyaWNWYWx1ZVR5cGUgQ1NTUGFyc2VyVG9rZW46Om51bWVyaWNW
YWx1ZVR5cGUoKSBjb25zdAoreworICAgIEFTU0VSVChtX3R5cGUgPT0gTnVtYmVyVG9rZW4gfHwg
bV90eXBlID09IFBlcmNlbnRhZ2VUb2tlbiB8fCBtX3R5cGUgPT0gRGltZW5zaW9uVG9rZW4pOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxOdW1lcmljVmFsdWVUeXBlPihtX251bWVyaWNWYWx1ZVR5
cGUpOworfQorCitkb3VibGUgQ1NTUGFyc2VyVG9rZW46Om51bWVyaWNWYWx1ZSgpIGNvbnN0Cit7
CisgICAgQVNTRVJUKG1fdHlwZSA9PSBOdW1iZXJUb2tlbiB8fCBtX3R5cGUgPT0gUGVyY2VudGFn
ZVRva2VuIHx8IG1fdHlwZSA9PSBEaW1lbnNpb25Ub2tlbik7CisgICAgcmV0dXJuIG1fbnVtZXJp
Y1ZhbHVlOworfQorCitDU1NQcm9wZXJ0eUlEIENTU1BhcnNlclRva2VuOjpwYXJzZUFzVW5yZXNv
bHZlZENTU1Byb3BlcnR5SUQoKSBjb25zdAoreworICAgIEFTU0VSVChtX3R5cGUgPT0gSWRlbnRU
b2tlbik7CisgICAgcmV0dXJuIHVucmVzb2x2ZWRDU1NQcm9wZXJ0eUlEKHZhbHVlKCkpOworfQor
CitDU1NWYWx1ZUlEIENTU1BhcnNlclRva2VuOjppZCgpIGNvbnN0Cit7CisgICAgaWYgKG1fdHlw
ZSAhPSBJZGVudFRva2VuKQorICAgICAgICByZXR1cm4gQ1NTVmFsdWVJbnZhbGlkOworICAgIGlm
IChtX2lkIDwgMCkKKyAgICAgICAgbV9pZCA9IGNzc1ZhbHVlS2V5d29yZElEKHZhbHVlKCkpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NWYWx1ZUlEPihtX2lkKTsKK30KKworQ1NTVmFsdWVJ
RCBDU1NQYXJzZXJUb2tlbjo6ZnVuY3Rpb25JZCgpIGNvbnN0Cit7CisgICAgaWYgKG1fdHlwZSAh
PSBGdW5jdGlvblRva2VuKQorICAgICAgICByZXR1cm4gQ1NTVmFsdWVJbnZhbGlkOworICAgIGlm
IChtX2lkIDwgMCkKKyAgICAgICAgbV9pZCA9IGNzc1ZhbHVlS2V5d29yZElEKHZhbHVlKCkpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NWYWx1ZUlEPihtX2lkKTsKK30KKworYm9vbCBDU1NQ
YXJzZXJUb2tlbjo6aGFzU3RyaW5nQmFja2luZygpIGNvbnN0Cit7CisgICAgQ1NTUGFyc2VyVG9r
ZW5UeXBlIHRva2VuVHlwZSA9IHR5cGUoKTsKKyAgICByZXR1cm4gdG9rZW5UeXBlID09IElkZW50
VG9rZW4KKyAgICAgICAgfHwgdG9rZW5UeXBlID09IEZ1bmN0aW9uVG9rZW4KKyAgICAgICAgfHwg
dG9rZW5UeXBlID09IEF0S2V5d29yZFRva2VuCisgICAgICAgIHx8IHRva2VuVHlwZSA9PSBIYXNo
VG9rZW4KKyAgICAgICAgfHwgdG9rZW5UeXBlID09IFVybFRva2VuCisgICAgICAgIHx8IHRva2Vu
VHlwZSA9PSBEaW1lbnNpb25Ub2tlbgorICAgICAgICB8fCB0b2tlblR5cGUgPT0gU3RyaW5nVG9r
ZW47Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1BhcnNlclRva2VuOjpjb3B5V2l0aFVwZGF0ZWRT
dHJpbmcoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nKSBjb25zdAoreworICAgIENTU1BhcnNlclRv
a2VuIGNvcHkoKnRoaXMpOworICAgIGNvcHkuaW5pdFZhbHVlRnJvbVN0cmluZ1ZpZXcoc3RyaW5n
KTsKKyAgICByZXR1cm4gY29weTsKK30KKworYm9vbCBDU1NQYXJzZXJUb2tlbjo6dmFsdWVEYXRh
Q2hhclJhd0VxdWFsKGNvbnN0IENTU1BhcnNlclRva2VuJiBvdGhlcikgY29uc3QKK3sKKyAgICBp
ZiAobV92YWx1ZUxlbmd0aCAhPSBvdGhlci5tX3ZhbHVlTGVuZ3RoKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAobV92YWx1ZURhdGFDaGFyUmF3ID09IG90aGVyLm1fdmFsdWVEYXRh
Q2hhclJhdyAmJiBtX3ZhbHVlSXM4Qml0ID09IG90aGVyLm1fdmFsdWVJczhCaXQpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgaWYgKG1fdmFsdWVJczhCaXQpCisgICAgICAgIHJldHVybiBv
dGhlci5tX3ZhbHVlSXM4Qml0ID8gZXF1YWwoc3RhdGljX2Nhc3Q8Y29uc3QgTENoYXIqPihtX3Zh
bHVlRGF0YUNoYXJSYXcpLCBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KG90aGVyLm1fdmFsdWVE
YXRhQ2hhclJhdyksIG1fdmFsdWVMZW5ndGgpIDogZXF1YWwoc3RhdGljX2Nhc3Q8Y29uc3QgTENo
YXIqPihtX3ZhbHVlRGF0YUNoYXJSYXcpLCBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KG90aGVy
Lm1fdmFsdWVEYXRhQ2hhclJhdyksIG1fdmFsdWVMZW5ndGgpOworICAgIGVsc2UKKyAgICAgICAg
cmV0dXJuIG90aGVyLm1fdmFsdWVJczhCaXQgPyBlcXVhbChzdGF0aWNfY2FzdDxjb25zdCBVQ2hh
cio+KG1fdmFsdWVEYXRhQ2hhclJhdyksIHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4ob3RoZXIu
bV92YWx1ZURhdGFDaGFyUmF3KSwgbV92YWx1ZUxlbmd0aCkgOiBlcXVhbChzdGF0aWNfY2FzdDxj
b25zdCBVQ2hhcio+KG1fdmFsdWVEYXRhQ2hhclJhdyksIHN0YXRpY19jYXN0PGNvbnN0IFVDaGFy
Kj4ob3RoZXIubV92YWx1ZURhdGFDaGFyUmF3KSwgbV92YWx1ZUxlbmd0aCk7Cit9CisKK2Jvb2wg
Q1NTUGFyc2VyVG9rZW46Om9wZXJhdG9yPT0oY29uc3QgQ1NTUGFyc2VyVG9rZW4mIG90aGVyKSBj
b25zdAoreworICAgIGlmIChtX3R5cGUgIT0gb3RoZXIubV90eXBlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIERlbGltaXRlclRva2VuOgor
ICAgICAgICByZXR1cm4gZGVsaW1pdGVyKCkgPT0gb3RoZXIuZGVsaW1pdGVyKCk7CisgICAgY2Fz
ZSBIYXNoVG9rZW46CisgICAgICAgIGlmIChtX2hhc2hUb2tlblR5cGUgIT0gb3RoZXIubV9oYXNo
VG9rZW5UeXBlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBGQUxMVEhST1VH
SDsKKyAgICBjYXNlIElkZW50VG9rZW46CisgICAgY2FzZSBGdW5jdGlvblRva2VuOgorICAgIGNh
c2UgU3RyaW5nVG9rZW46CisgICAgY2FzZSBVcmxUb2tlbjoKKyAgICAgICAgcmV0dXJuIHZhbHVl
RGF0YUNoYXJSYXdFcXVhbChvdGhlcik7CisgICAgY2FzZSBEaW1lbnNpb25Ub2tlbjoKKyAgICAg
ICAgaWYgKCF2YWx1ZURhdGFDaGFyUmF3RXF1YWwob3RoZXIpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIE51bWJlclRva2VuOgorICAg
IGNhc2UgUGVyY2VudGFnZVRva2VuOgorICAgICAgICByZXR1cm4gbV9udW1lcmljU2lnbiA9PSBv
dGhlci5tX251bWVyaWNTaWduICYmIG1fbnVtZXJpY1ZhbHVlID09IG90aGVyLm1fbnVtZXJpY1Zh
bHVlICYmIG1fbnVtZXJpY1ZhbHVlVHlwZSA9PSBvdGhlci5tX251bWVyaWNWYWx1ZVR5cGU7Cisg
ICAgY2FzZSBVbmljb2RlUmFuZ2VUb2tlbjoKKyAgICAgICAgcmV0dXJuIG1fdW5pY29kZVJhbmdl
LnN0YXJ0ID09IG90aGVyLm1fdW5pY29kZVJhbmdlLnN0YXJ0ICYmIG1fdW5pY29kZVJhbmdlLmVu
ZCA9PSBvdGhlci5tX3VuaWNvZGVSYW5nZS5lbmQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorfQorCit2b2lkIENTU1BhcnNlclRva2VuOjpzZXJpYWxpemUoU3Ry
aW5nQnVpbGRlciYgYnVpbGRlcikgY29uc3QKK3sKKyAgICAvLyBUaGlzIGlzIGN1cnJlbnRseSBv
bmx5IHVzZWQgZm9yIEBzdXBwb3J0cyBDU1NPTS4gVG8ga2VlcCBvdXIgaW1wbGVtZW50YXRpb24K
KyAgICAvLyBzaW1wbGUgd2UgaGFuZGxlIHNvbWUgb2YgdGhlIGVkZ2UgY2FzZXMgaW5jb3JyZWN0
bHkgKHNlZSBjb21tZW50cyBiZWxvdykuCisgICAgc3dpdGNoICh0eXBlKCkpIHsKKyAgICBjYXNl
IElkZW50VG9rZW46CisgICAgICAgIHNlcmlhbGl6ZUlkZW50aWZpZXIodmFsdWUoKS50b1N0cmlu
ZygpLCBidWlsZGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGdW5jdGlvblRva2VuOgor
ICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKHZhbHVlKCkudG9TdHJpbmcoKSwgYnVpbGRlcik7
CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgnKCcpOworICAgIGNhc2UgQXRLZXl3b3Jk
VG9rZW46CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdAJyk7CisgICAgICAgIHNlcmlhbGl6ZUlk
ZW50aWZpZXIodmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVyKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBIYXNoVG9rZW46CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAgICAg
IHNlcmlhbGl6ZUlkZW50aWZpZXIodmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVyLCAoZ2V0SGFz
aFRva2VuVHlwZSgpID09IEhhc2hUb2tlblVucmVzdHJpY3RlZCkpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFVybFRva2VuOgorICAgICAgICBidWlsZGVyLmFwcGVuZCgidXJsKCIpOworICAg
ICAgICBzZXJpYWxpemVJZGVudGlmaWVyKHZhbHVlKCkudG9TdHJpbmcoKSwgYnVpbGRlcik7Cisg
ICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgnKScpOworICAgIGNhc2UgRGVsaW1pdGVyVG9r
ZW46CisgICAgICAgIGlmIChkZWxpbWl0ZXIoKSA9PSAnXFwnKQorICAgICAgICAgICAgcmV0dXJu
IGJ1aWxkZXIuYXBwZW5kKCJcXFxuIik7CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZChk
ZWxpbWl0ZXIoKSk7CisgICAgY2FzZSBOdW1iZXJUb2tlbjoKKyAgICAgICAgLy8gVGhlc2Ugd29u
J3QgcHJvcGVybHkgcHJlc2VydmUgdGhlIE51bWVyaWNWYWx1ZVR5cGUgZmxhZworICAgICAgICBy
ZXR1cm4gYnVpbGRlci5hcHBlbmROdW1iZXIobnVtZXJpY1ZhbHVlKCkpOworICAgIGNhc2UgUGVy
Y2VudGFnZVRva2VuOgorICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihudW1lcmljVmFsdWUo
KSk7CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgnJScpOworICAgIGNhc2UgRGltZW5z
aW9uVG9rZW46CisgICAgICAgIC8vIFRoaXMgd2lsbCBpbmNvcnJlY3RseSBzZXJpYWxpemUgZS5n
LiA0ZTNlMiBhcyA0MDAwZTIKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobnVtZXJpY1Zh
bHVlKCkpOworICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKHZhbHVlKCkudG9TdHJpbmcoKSwg
YnVpbGRlcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVW5pY29kZVJhbmdlVG9rZW46Cisg
ICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiVSslWC0lWCIsIHVu
aWNvZGVSYW5nZVN0YXJ0KCksIHVuaWNvZGVSYW5nZUVuZCgpKSk7CisgICAgY2FzZSBTdHJpbmdU
b2tlbjoKKyAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZVN0cmluZyh2YWx1ZSgpLnRvU3RyaW5nKCks
IGJ1aWxkZXIpOworCisgICAgY2FzZSBJbmNsdWRlTWF0Y2hUb2tlbjoKKyAgICAgICAgcmV0dXJu
IGJ1aWxkZXIuYXBwZW5kKCJ+PSIpOworICAgIGNhc2UgRGFzaE1hdGNoVG9rZW46CisgICAgICAg
IHJldHVybiBidWlsZGVyLmFwcGVuZCgifD0iKTsKKyAgICBjYXNlIFByZWZpeE1hdGNoVG9rZW46
CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgiXj0iKTsKKyAgICBjYXNlIFN1ZmZpeE1h
dGNoVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgiJD0iKTsKKyAgICBjYXNl
IFN1YnN0cmluZ01hdGNoVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgiKj0i
KTsKKyAgICBjYXNlIENvbHVtblRva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQo
Inx8Iik7CisgICAgY2FzZSBDRE9Ub2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5k
KCI8IS0tIik7CisgICAgY2FzZSBDRENUb2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBw
ZW5kKCItLT4iKTsKKyAgICBjYXNlIEJhZFN0cmluZ1Rva2VuOgorICAgICAgICByZXR1cm4gYnVp
bGRlci5hcHBlbmQoIidcbiIpOworICAgIGNhc2UgQmFkVXJsVG9rZW46CisgICAgICAgIHJldHVy
biBidWlsZGVyLmFwcGVuZCgidXJsKCgpIik7CisgICAgY2FzZSBXaGl0ZXNwYWNlVG9rZW46Cisg
ICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgnICcpOworICAgIGNhc2UgQ29sb25Ub2tlbjoK
KyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CisgICAgY2FzZSBTZW1pY29sb25U
b2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCc7Jyk7CisgICAgY2FzZSBDb21t
YVRva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJywnKTsKKyAgICBjYXNlIExl
ZnRQYXJlbnRoZXNpc1Rva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJygnKTsK
KyAgICBjYXNlIFJpZ2h0UGFyZW50aGVzaXNUb2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIu
YXBwZW5kKCcpJyk7CisgICAgY2FzZSBMZWZ0QnJhY2tldFRva2VuOgorICAgICAgICByZXR1cm4g
YnVpbGRlci5hcHBlbmQoJ1snKTsKKyAgICBjYXNlIFJpZ2h0QnJhY2tldFRva2VuOgorICAgICAg
ICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJ10nKTsKKyAgICBjYXNlIExlZnRCcmFjZVRva2VuOgor
ICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJ3snKTsKKyAgICBjYXNlIFJpZ2h0QnJhY2VU
b2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCd9Jyk7CisKKyAgICBjYXNlIEVP
RlRva2VuOgorICAgIGNhc2UgQ29tbWVudFRva2VuOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW4uaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBD
aHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8v
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisv
LyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZuZGVmIENTU1BhcnNlclRva2VuX2gKKyNkZWZp
bmUgQ1NTUGFyc2VyVG9rZW5faAorCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
ZW51bSBDU1NQYXJzZXJUb2tlblR5cGUgeworICAgIElkZW50VG9rZW4gPSAwLAorICAgIEZ1bmN0
aW9uVG9rZW4sCisgICAgQXRLZXl3b3JkVG9rZW4sCisgICAgSGFzaFRva2VuLAorICAgIFVybFRv
a2VuLAorICAgIEJhZFVybFRva2VuLAorICAgIERlbGltaXRlclRva2VuLAorICAgIE51bWJlclRv
a2VuLAorICAgIFBlcmNlbnRhZ2VUb2tlbiwKKyAgICBEaW1lbnNpb25Ub2tlbiwKKyAgICBJbmNs
dWRlTWF0Y2hUb2tlbiwKKyAgICBEYXNoTWF0Y2hUb2tlbiwKKyAgICBQcmVmaXhNYXRjaFRva2Vu
LAorICAgIFN1ZmZpeE1hdGNoVG9rZW4sCisgICAgU3Vic3RyaW5nTWF0Y2hUb2tlbiwKKyAgICBD
b2x1bW5Ub2tlbiwKKyAgICBVbmljb2RlUmFuZ2VUb2tlbiwKKyAgICBXaGl0ZXNwYWNlVG9rZW4s
CisgICAgQ0RPVG9rZW4sCisgICAgQ0RDVG9rZW4sCisgICAgQ29sb25Ub2tlbiwKKyAgICBTZW1p
Y29sb25Ub2tlbiwKKyAgICBDb21tYVRva2VuLAorICAgIExlZnRQYXJlbnRoZXNpc1Rva2VuLAor
ICAgIFJpZ2h0UGFyZW50aGVzaXNUb2tlbiwKKyAgICBMZWZ0QnJhY2tldFRva2VuLAorICAgIFJp
Z2h0QnJhY2tldFRva2VuLAorICAgIExlZnRCcmFjZVRva2VuLAorICAgIFJpZ2h0QnJhY2VUb2tl
biwKKyAgICBTdHJpbmdUb2tlbiwKKyAgICBCYWRTdHJpbmdUb2tlbiwKKyAgICBFT0ZUb2tlbiwK
KyAgICBDb21tZW50VG9rZW4sCit9OworCitlbnVtIE51bWVyaWNTaWduIHsKKyAgICBOb1NpZ24s
CisgICAgUGx1c1NpZ24sCisgICAgTWludXNTaWduLAorfTsKKworZW51bSBOdW1lcmljVmFsdWVU
eXBlIHsKKyAgICBJbnRlZ2VyVmFsdWVUeXBlLAorICAgIE51bWJlclZhbHVlVHlwZSwKK307CisK
K2VudW0gSGFzaFRva2VuVHlwZSB7CisgICAgSGFzaFRva2VuSWQsCisgICAgSGFzaFRva2VuVW5y
ZXN0cmljdGVkLAorfTsKKworY2xhc3MgQ1NTUGFyc2VyVG9rZW4geworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGVudW0gQmxvY2tUeXBlIHsKKyAgICAgICAgTm90
QmxvY2ssCisgICAgICAgIEJsb2NrU3RhcnQsCisgICAgICAgIEJsb2NrRW5kLAorICAgIH07CisK
KyAgICBDU1NQYXJzZXJUb2tlbihDU1NQYXJzZXJUb2tlblR5cGUsIEJsb2NrVHlwZSA9IE5vdEJs
b2NrKTsKKyAgICBDU1NQYXJzZXJUb2tlbihDU1NQYXJzZXJUb2tlblR5cGUsIFN0cmluZ1ZpZXcs
IEJsb2NrVHlwZSA9IE5vdEJsb2NrKTsKKworICAgIENTU1BhcnNlclRva2VuKENTU1BhcnNlclRv
a2VuVHlwZSwgVUNoYXIpOyAvLyBmb3IgRGVsaW1pdGVyVG9rZW4KKyAgICBDU1NQYXJzZXJUb2tl
bihDU1NQYXJzZXJUb2tlblR5cGUsIGRvdWJsZSwgTnVtZXJpY1ZhbHVlVHlwZSwgTnVtZXJpY1Np
Z24pOyAvLyBmb3IgTnVtYmVyVG9rZW4KKyAgICBDU1NQYXJzZXJUb2tlbihDU1NQYXJzZXJUb2tl
blR5cGUsIFVDaGFyMzIsIFVDaGFyMzIpOyAvLyBmb3IgVW5pY29kZVJhbmdlVG9rZW4KKworICAg
IENTU1BhcnNlclRva2VuKEhhc2hUb2tlblR5cGUsIFN0cmluZ1ZpZXcpOworCisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENTU1BhcnNlclRva2VuJiBvdGhlcikgY29uc3Q7CisgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IENTU1BhcnNlclRva2VuJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7IH0KKworICAgIC8vIENvbnZlcnRzIE51bWJlclRva2VuIHRvIERpbWVu
c2lvblRva2VuLgorICAgIHZvaWQgY29udmVydFRvRGltZW5zaW9uV2l0aFVuaXQoU3RyaW5nVmll
dyk7CisKKyAgICAvLyBDb252ZXJ0cyBOdW1iZXJUb2tlbiB0byBQZXJjZW50YWdlVG9rZW4uCisg
ICAgdm9pZCBjb252ZXJ0VG9QZXJjZW50YWdlKCk7CisKKyAgICBDU1NQYXJzZXJUb2tlblR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENTU1BhcnNlclRva2VuVHlwZT4obV90
eXBlKTsgfQorICAgIFN0cmluZ1ZpZXcgdmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYg
KG1fdmFsdWVJczhCaXQpCisgICAgICAgICAgICByZXR1cm4gU3RyaW5nVmlldyhyZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4obV92YWx1ZURhdGFDaGFyUmF3KSwgbV92YWx1ZUxlbmd0aCk7
CisgICAgICAgIHJldHVybiBTdHJpbmdWaWV3KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIq
PihtX3ZhbHVlRGF0YUNoYXJSYXcpLCBtX3ZhbHVlTGVuZ3RoKTsKKyAgICB9CisKKyAgICBVQ2hh
ciBkZWxpbWl0ZXIoKSBjb25zdDsKKyAgICBOdW1lcmljU2lnbiBudW1lcmljU2lnbigpIGNvbnN0
OworICAgIE51bWVyaWNWYWx1ZVR5cGUgbnVtZXJpY1ZhbHVlVHlwZSgpIGNvbnN0OworICAgIGRv
dWJsZSBudW1lcmljVmFsdWUoKSBjb25zdDsKKyAgICBIYXNoVG9rZW5UeXBlIGdldEhhc2hUb2tl
blR5cGUoKSBjb25zdCB7IEFTU0VSVChtX3R5cGUgPT0gSGFzaFRva2VuKTsgcmV0dXJuIG1faGFz
aFRva2VuVHlwZTsgfQorICAgIEJsb2NrVHlwZSBnZXRCbG9ja1R5cGUoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxCbG9ja1R5cGU+KG1fYmxvY2tUeXBlKTsgfQorICAgIENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZXMgdW5pdFR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzPihtX3VuaXQpOyB9CisgICAgVUNoYXIzMiB1bmlj
b2RlUmFuZ2VTdGFydCgpIGNvbnN0IHsgQVNTRVJUKG1fdHlwZSA9PSBVbmljb2RlUmFuZ2VUb2tl
bik7IHJldHVybiBtX3VuaWNvZGVSYW5nZS5zdGFydDsgfQorICAgIFVDaGFyMzIgdW5pY29kZVJh
bmdlRW5kKCkgY29uc3QgeyBBU1NFUlQobV90eXBlID09IFVuaWNvZGVSYW5nZVRva2VuKTsgcmV0
dXJuIG1fdW5pY29kZVJhbmdlLmVuZDsgfQorICAgIENTU1ZhbHVlSUQgaWQoKSBjb25zdDsKKyAg
ICBDU1NWYWx1ZUlEIGZ1bmN0aW9uSWQoKSBjb25zdDsKKworICAgIGJvb2wgaGFzU3RyaW5nQmFj
a2luZygpIGNvbnN0OworCisgICAgQ1NTUHJvcGVydHlJRCBwYXJzZUFzVW5yZXNvbHZlZENTU1By
b3BlcnR5SUQoKSBjb25zdDsKKworICAgIHZvaWQgc2VyaWFsaXplKFN0cmluZ0J1aWxkZXImKSBj
b25zdDsKKworICAgIENTU1BhcnNlclRva2VuIGNvcHlXaXRoVXBkYXRlZFN0cmluZyhjb25zdCBT
dHJpbmdWaWV3JikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdm9pZCBpbml0VmFsdWVGcm9tU3Ry
aW5nVmlldyhTdHJpbmdWaWV3IHN0cmluZykKKyAgICB7CisgICAgICAgIG1fdmFsdWVMZW5ndGgg
PSBzdHJpbmcubGVuZ3RoKCk7CisgICAgICAgIG1fdmFsdWVJczhCaXQgPSBzdHJpbmcuaXM4Qml0
KCk7CisgICAgICAgIG1fdmFsdWVEYXRhQ2hhclJhdyA9IG1fdmFsdWVJczhCaXQgPyBzdGF0aWNf
Y2FzdDxjb25zdCB2b2lkKj4oc3RyaW5nLmNoYXJhY3RlcnM4KCkpIDogc3RhdGljX2Nhc3Q8Y29u
c3Qgdm9pZCo+KHN0cmluZy5jaGFyYWN0ZXJzMTYoKSk7CisgICAgfQorICAgIHVuc2lnbmVkIG1f
dHlwZSA6IDY7IC8vIENTU1BhcnNlclRva2VuVHlwZQorICAgIHVuc2lnbmVkIG1fYmxvY2tUeXBl
IDogMjsgLy8gQmxvY2tUeXBlCisgICAgdW5zaWduZWQgbV9udW1lcmljVmFsdWVUeXBlIDogMTsg
Ly8gTnVtZXJpY1ZhbHVlVHlwZQorICAgIHVuc2lnbmVkIG1fbnVtZXJpY1NpZ24gOiAyOyAvLyBO
dW1lcmljU2lnbgorICAgIHVuc2lnbmVkIG1fdW5pdCA6IDc7IC8vIENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZXMKKworICAgIGJvb2wgdmFsdWVEYXRhQ2hhclJhd0VxdWFsKGNvbnN0IENTU1Bh
cnNlclRva2VuJiBvdGhlcikgY29uc3Q7CisKKyAgICAvLyBtX3ZhbHVlLi4uIGlzIGFuIHVucGFj
a2VkIFN0cmluZ1ZpZXcgc28gdGhhdCB3ZSBjYW4gcGFjayBpdAorICAgIC8vIHRpZ2h0bHkgd2l0
aCB0aGUgcmVzdCBvZiB0aGlzIG9iamVjdCBmb3IgYSBzbWFsbGVyIG9iamVjdCBzaXplLgorICAg
IGJvb2wgbV92YWx1ZUlzOEJpdCA6IDE7CisgICAgdW5zaWduZWQgbV92YWx1ZUxlbmd0aDsKKyAg
ICBjb25zdCB2b2lkKiBtX3ZhbHVlRGF0YUNoYXJSYXc7IC8vIEVpdGhlciBMQ2hhciogb3IgVUNo
YXIqLgorCisgICAgdW5pb24geworICAgICAgICBVQ2hhciBtX2RlbGltaXRlcjsKKyAgICAgICAg
SGFzaFRva2VuVHlwZSBtX2hhc2hUb2tlblR5cGU7CisgICAgICAgIGRvdWJsZSBtX251bWVyaWNW
YWx1ZTsKKyAgICAgICAgbXV0YWJsZSBpbnQgbV9pZDsKKworICAgICAgICBzdHJ1Y3QgeworICAg
ICAgICAgICAgVUNoYXIzMiBzdGFydDsKKyAgICAgICAgICAgIFVDaGFyMzIgZW5kOworICAgICAg
ICB9IG1fdW5pY29kZVJhbmdlOworICAgIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBDU1NTUGFyc2VyVG9rZW5faApJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJUb2tlblJhbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuUmFuZ2UuY3BwCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW5SYW5nZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw5NiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgVGhlIENocm9taXVt
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisv
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
Ky8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NQYXJz
ZXJUb2tlblJhbmdlLmgiCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Q1NTUGFyc2VyVG9rZW4mIENTU1BhcnNlclRva2VuUmFuZ2U6OmVvZlRva2VuKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q1NTUGFyc2VyVG9rZW4+IGVvZlRva2VuKEVPRlRva2VuKTsK
KyAgICByZXR1cm4gZW9mVG9rZW4uZ2V0KCk7Cit9CisKK0NTU1BhcnNlclRva2VuUmFuZ2UgQ1NT
UGFyc2VyVG9rZW5SYW5nZTo6bWFrZVN1YlJhbmdlKGNvbnN0IENTU1BhcnNlclRva2VuKiBmaXJz
dCwgY29uc3QgQ1NTUGFyc2VyVG9rZW4qIGxhc3QpIGNvbnN0Cit7CisgICAgaWYgKGZpcnN0ID09
ICZlb2ZUb2tlbigpKQorICAgICAgICBmaXJzdCA9IG1fbGFzdDsKKyAgICBpZiAobGFzdCA9PSAm
ZW9mVG9rZW4oKSkKKyAgICAgICAgbGFzdCA9IG1fbGFzdDsKKyAgICBBU1NFUlQoZmlyc3QgPD0g
bGFzdCk7CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuUmFuZ2UoZmlyc3QsIGxhc3QpOworfQor
CitDU1NQYXJzZXJUb2tlblJhbmdlIENTU1BhcnNlclRva2VuUmFuZ2U6OmNvbnN1bWVCbG9jaygp
Cit7CisgICAgQVNTRVJUKHBlZWsoKS5nZXRCbG9ja1R5cGUoKSA9PSBDU1NQYXJzZXJUb2tlbjo6
QmxvY2tTdGFydCk7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4qIHN0YXJ0ID0gJnBlZWsoKSAr
IDE7CisgICAgdW5zaWduZWQgbmVzdGluZ0xldmVsID0gMDsKKyAgICBkbyB7CisgICAgICAgIGNv
bnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IGNvbnN1bWUoKTsKKyAgICAgICAgaWYgKHRva2Vu
LmdldEJsb2NrVHlwZSgpID09IENTU1BhcnNlclRva2VuOjpCbG9ja1N0YXJ0KQorICAgICAgICAg
ICAgbmVzdGluZ0xldmVsKys7CisgICAgICAgIGVsc2UgaWYgKHRva2VuLmdldEJsb2NrVHlwZSgp
ID09IENTU1BhcnNlclRva2VuOjpCbG9ja0VuZCkKKyAgICAgICAgICAgIG5lc3RpbmdMZXZlbC0t
OworICAgIH0gd2hpbGUgKG5lc3RpbmdMZXZlbCAmJiBtX2ZpcnN0IDwgbV9sYXN0KTsKKworICAg
IGlmIChuZXN0aW5nTGV2ZWwpCisgICAgICAgIHJldHVybiBtYWtlU3ViUmFuZ2Uoc3RhcnQsIG1f
Zmlyc3QpOyAvLyBFbmRlZCBhdCBFT0YKKyAgICByZXR1cm4gbWFrZVN1YlJhbmdlKHN0YXJ0LCBt
X2ZpcnN0IC0gMSk7Cit9CisKK3ZvaWQgQ1NTUGFyc2VyVG9rZW5SYW5nZTo6Y29uc3VtZUNvbXBv
bmVudFZhbHVlKCkKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBnb2luZyB0byBkbyBtdWx0aXBs
ZSBwYXNzZXMgb3ZlciBsYXJnZSBzZWN0aW9ucyBvZiBhIHN0eWxlc2hlZXQuCisgICAgLy8gV2Ug
c2hvdWxkIGNvbnNpZGVyIG9wdGltaXNpbmcgdGhpcyBieSBwcmVjb21wdXRpbmcgd2hlcmUgZWFj
aCBibG9jayBlbmRzLgorICAgIHVuc2lnbmVkIG5lc3RpbmdMZXZlbCA9IDA7CisgICAgZG8gewor
ICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSBjb25zdW1lKCk7CisgICAgICAg
IGlmICh0b2tlbi5nZXRCbG9ja1R5cGUoKSA9PSBDU1NQYXJzZXJUb2tlbjo6QmxvY2tTdGFydCkK
KyAgICAgICAgICAgIG5lc3RpbmdMZXZlbCsrOworICAgICAgICBlbHNlIGlmICh0b2tlbi5nZXRC
bG9ja1R5cGUoKSA9PSBDU1NQYXJzZXJUb2tlbjo6QmxvY2tFbmQpCisgICAgICAgICAgICBuZXN0
aW5nTGV2ZWwtLTsKKyAgICB9IHdoaWxlIChuZXN0aW5nTGV2ZWwgJiYgbV9maXJzdCA8IG1fbGFz
dCk7Cit9CisKK1N0cmluZyBDU1NQYXJzZXJUb2tlblJhbmdlOjpzZXJpYWxpemUoKSBjb25zdAor
eworICAgIC8vIFdlJ3JlIHN1cHBvc2VkIHRvIGluc2VydCBjb21tZW50cyBiZXR3ZWVuIGNlcnRh
aW4gcGFpcnMgb2YgdG9rZW4gdHlwZXMKKyAgICAvLyBhcyBwZXIgc3BlYywgYnV0IHNpbmNlIHRo
aXMgaXMgY3VycmVudGx5IG9ubHkgdXNlZCBmb3IgQHN1cHBvcnRzIENTU09NCisgICAgLy8gd2Ug
anVzdCBnZXQgdGhlc2UgY2FzZXMgd3JvbmcgYW5kIGF2b2lkIHRoZSBhZGRpdGlvbmFsIGNvbXBs
ZXhpdHkuCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGZvciAoY29uc3QgQ1NTUGFy
c2VyVG9rZW4qIGl0ID0gbV9maXJzdDsgaXQgPCBtX2xhc3Q7ICsraXQpCisgICAgICAgIGl0LT5z
ZXJpYWxpemUoYnVpbGRlcik7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJUb2tlblJhbmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJUb2tlblJhbmdlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlblJhbmdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMDUgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8g
bWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8v
CisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisjaWZuZGVmIENTU1BhcnNlclRva2VuUmFuZ2VfaAorI2RlZmluZSBDU1NQYXJzZXJUb2tl
blJhbmdlX2gKKworI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuLmgiCisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEEgQ1NTUGFyc2VyVG9rZW5SYW5n
ZSBpcyBhbiBpdGVyYXRvciBvdmVyIGEgc3VicmFuZ2Ugb2YgYSB2ZWN0b3Igb2YgQ1NTUGFyc2Vy
VG9rZW5zLgorLy8gQWNjZXNzaW5nIG91dHNpZGUgb2YgdGhlIHJhbmdlIHdpbGwgcmV0dXJuIGFu
IGVuZGxlc3Mgc3RyZWFtIG9mIEVPRiB0b2tlbnMuCisvLyBUaGlzIGNsYXNzIHJlZmVycyB0byBo
YWxmLW9wZW4gaW50ZXJ2YWxzIFtmaXJzdCwgbGFzdCkuCitjbGFzcyBDU1NQYXJzZXJUb2tlblJh
bmdlIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQnVmZmVyPgorICAgIENT
U1BhcnNlclRva2VuUmFuZ2UoY29uc3QgVmVjdG9yPENTU1BhcnNlclRva2VuLCBpbmxpbmVCdWZm
ZXI+JiB2ZWN0b3IpCisgICAgICAgIDogbV9maXJzdCh2ZWN0b3IuYmVnaW4oKSkKKyAgICAgICAg
LCBtX2xhc3QodmVjdG9yLmVuZCgpKQorICAgIHsKKyAgICB9CisKKyAgICAvLyBUaGlzIHNob3Vs
ZCBiZSBjYWxsZWQgb24gYSByYW5nZSB3aXRoIHRva2VucyByZXR1cm5lZCBieSB0aGF0IHJhbmdl
LgorICAgIENTU1BhcnNlclRva2VuUmFuZ2UgbWFrZVN1YlJhbmdlKGNvbnN0IENTU1BhcnNlclRv
a2VuKiBmaXJzdCwgY29uc3QgQ1NTUGFyc2VyVG9rZW4qIGxhc3QpIGNvbnN0OworCisgICAgYm9v
bCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3QgPT0gbV9sYXN0OyB9CisgICAgY29uc3Qg
Q1NTUGFyc2VyVG9rZW4qIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdDsgfQorCisgICAgY29u
c3QgQ1NTUGFyc2VyVG9rZW4mIHBlZWsodW5zaWduZWQgb2Zmc2V0ID0gMCkgY29uc3QKKyAgICB7
CisgICAgICAgIGlmIChtX2ZpcnN0ICsgb2Zmc2V0ID49IG1fbGFzdCkKKyAgICAgICAgICAgIHJl
dHVybiBlb2ZUb2tlbigpOworICAgICAgICByZXR1cm4gKihtX2ZpcnN0ICsgb2Zmc2V0KTsKKyAg
ICB9CisKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgY29uc3VtZSgpCisgICAgeworICAgICAg
ICBpZiAobV9maXJzdCA9PSBtX2xhc3QpCisgICAgICAgICAgICByZXR1cm4gZW9mVG9rZW4oKTsK
KyAgICAgICAgcmV0dXJuICptX2ZpcnN0Kys7CisgICAgfQorCisgICAgY29uc3QgQ1NTUGFyc2Vy
VG9rZW4mIGNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkKKyAgICB7CisgICAgICAgIGNvbnN0
IENTU1BhcnNlclRva2VuJiByZXN1bHQgPSBjb25zdW1lKCk7CisgICAgICAgIGNvbnN1bWVXaGl0
ZXNwYWNlKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLy8gVGhlIHJl
dHVybmVkIHJhbmdlIGRvZXNuJ3QgaW5jbHVkZSB0aGUgYnJhY2tldHMKKyAgICBDU1NQYXJzZXJU
b2tlblJhbmdlIGNvbnN1bWVCbG9jaygpOworCisgICAgdm9pZCBjb25zdW1lQ29tcG9uZW50VmFs
dWUoKTsKKworICAgIHZvaWQgY29uc3VtZVdoaXRlc3BhY2UoKQorICAgIHsKKyAgICAgICAgd2hp
bGUgKHBlZWsoKS50eXBlKCkgPT0gV2hpdGVzcGFjZVRva2VuKQorICAgICAgICAgICAgKyttX2Zp
cnN0OworICAgIH0KKworICAgIFN0cmluZyBzZXJpYWxpemUoKSBjb25zdDsKKworICAgIGNvbnN0
IENTU1BhcnNlclRva2VuKiBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3Q7IH0KKworICAg
IHN0YXRpYyBDU1NQYXJzZXJUb2tlbiYgZW9mVG9rZW4oKTsKKworcHJpdmF0ZToKKyAgICBDU1NQ
YXJzZXJUb2tlblJhbmdlKGNvbnN0IENTU1BhcnNlclRva2VuKiBmaXJzdCwgY29uc3QgQ1NTUGFy
c2VyVG9rZW4qIGxhc3QpCisgICAgICAgIDogbV9maXJzdChmaXJzdCkKKyAgICAgICAgLCBtX2xh
c3QobGFzdCkKKyAgICB7IH0KKworICAgIGNvbnN0IENTU1BhcnNlclRva2VuKiBtX2ZpcnN0Owor
ICAgIGNvbnN0IENTU1BhcnNlclRva2VuKiBtX2xhc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NQYXJzZXJUb2tlblJhbmdlX2gKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDc4MyBAQAorLy8gQ29weXJpZ2h0IDIwMTUgVGhlIENo
cm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisv
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8g
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJD
U1NQcm9wZXJ0eVBhcnNlci5oIgorCisjaW5jbHVkZSAiQ291bnRlci5oIgorI2luY2x1ZGUgIkNT
U0Jhc2ljU2hhcGVzLmgiCisjaW5jbHVkZSAiQ1NTQm9yZGVySW1hZ2UuaCIKKyNpbmNsdWRlICJD
U1NDb250ZW50RGlzdHJpYnV0aW9uVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZh
bHVlLmgiCisvLyBGSVhNRS1ORVdQQVJTRVIgI2luY2x1ZGUgIkNTU0N1c3RvbUlkZW50VmFsdWUu
aCIKKyNpbmNsdWRlICJDU1NGb250RmFjZVNyY1ZhbHVlLmgiCisvLyBGSVhNRS1ORVdQQVJTRVIg
I2luY2x1ZGUgIkNTU0ZvbnRGYW1pbHlWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0ZvbnRGZWF0dXJl
VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NGdW5jdGlvblZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTR3Jp
ZEF1dG9SZXBlYXRWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0dyaWRMaW5lTmFtZXNWYWx1ZS5oIgor
I2luY2x1ZGUgIkNTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NJbmhl
cml0ZWRWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0luaXRpYWxWYWx1ZS5oIgorI2luY2x1ZGUgIkNT
U1BhcnNlckZhc3RQYXRocy5oIgorI2luY2x1ZGUgIkNTU1BhcnNlcklkaW9tcy5oIgorLy8gRklY
TUUtTkVXUEFSU0VSICNpbmNsdWRlICJDU1NQYXRoVmFsdWUuaCIKKy8vIEZJWE1FLU5FV1BBUlNF
UiAjaW5jbHVkZSAiQ1NTUGVuZGluZ1N1YnN0aXR1dGlvblZhbHVlLmgiCisjaW5jbHVkZSAiQ1NT
UHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VySGVs
cGVycy5oIgorLy8gRklYTUUtTkVXUEFSU0VSICNpbmNsdWRlICJDU1NRdWFkVmFsdWUuaCIKKyNp
bmNsdWRlICJDU1NSZWZsZWN0VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NTaGFkb3dWYWx1ZS5oIgor
Ly8gRklYTUUtTkVXUEFSU0VSICNpbmNsdWRlICJDU1NTdHJpbmdWYWx1ZS5oIgorI2luY2x1ZGUg
IkNTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCIKKy8vIEZJWE1FLU5FV1BBUlNFUiAjaW5jbHVkZSAi
Q1NTVVJJVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NVbmljb2RlUmFuZ2VWYWx1ZS5oIgorI2luY2x1
ZGUgIkNTU1Vuc2V0VmFsdWUuaCIKKy8vIEZJWE1FLU5FV1BBUlNFUiAjaW5jbHVkZSAiQ1NTVmFs
dWVQYWlyLmgiCisvLyBGSVhNRS1ORVdQQVJTRVIgI2luY2x1ZGUgIkNTU1ZhcmlhYmxlUmVmZXJl
bmNlVmFsdWUuaCIKKy8vIEZJWE1FLU5FV1BBUlNFUiAjaW5jbHVkZSAiQ1NTVmFyaWFibGVQYXJz
ZXIuaCIKKyNpbmNsdWRlICJGb250RmFjZS5oIgorI2luY2x1ZGUgIkhhc2hUb29scy5oIgorI2lu
Y2x1ZGUgIlJlbmRlclRoZW1lLmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5o
IgorI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTaG9ydGhhbmQuaCIKKyNpbmNsdWRlICJTVkdQYXRo
VXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1
ZGUgPG1lbW9yeT4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgYm9vbCBoYXNQcmVm
aXgoY29uc3QgY2hhciogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IGNoYXIqIHByZWZp
eCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgaWYgKCFwcmVmaXhbaV0pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYg
KHN0cmluZ1tpXSAhPSBwcmVmaXhbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIHJldHVybiBmYWxzZTsKK30KKyAgICAKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPgorc3RhdGljIENTU1Byb3BlcnR5SUQgY3NzUHJvcGVydHlJRChjb25zdCBDaGFyYWN0
ZXJUeXBlKiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBjaGFyIGJ1ZmZl
clttYXhDU1NQcm9wZXJ0eU5hbWVMZW5ndGggKyAxICsgMV07IC8vIDEgdG8gdHVybiAiYXBwbGUi
LyJraHRtbCIgaW50byAid2Via2l0IiwgMSBmb3IgbnVsbCBjaGFyYWN0ZXIKKyAgICAKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9IGxlbmd0aDsgKytpKSB7CisgICAgICAgIENoYXJhY3Rl
clR5cGUgYyA9IHByb3BlcnR5TmFtZVtpXTsKKyAgICAgICAgaWYgKCFjIHx8IGMgPj0gMHg3RikK
KyAgICAgICAgICAgIHJldHVybiBDU1NQcm9wZXJ0eUludmFsaWQ7IC8vIGlsbGVnYWwgY2hhcmFj
dGVyCisgICAgICAgIGJ1ZmZlcltpXSA9IHRvQVNDSUlMb3dlcihjKTsKKyAgICB9CisgICAgYnVm
ZmVyW2xlbmd0aF0gPSAnXDAnOworICAgIAorICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBidWZmZXI7
CisgICAgaWYgKGJ1ZmZlclswXSA9PSAnLScpIHsKKyNpZiBFTkFCTEUoTEVHQUNZX0NTU19WRU5E
T1JfUFJFRklYRVMpCisgICAgICAgIC8vIElmIHRoZSBwcmVmaXggaXMgLWFwcGxlLSBvciAta2h0
bWwtLCBjaGFuZ2UgaXQgdG8gLXdlYmtpdC0uCisgICAgICAgIC8vIFRoaXMgbWFrZXMgdGhlIHN0
cmluZyBvbmUgY2hhcmFjdGVyIGxvbmdlci4KKyAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKCkK
KyAgICAgICAgICAgICYmIChoYXNQcmVmaXgoYnVmZmVyLCBsZW5ndGgsICItYXBwbGUtIikgfHwg
aGFzUHJlZml4KGJ1ZmZlciwgbGVuZ3RoLCAiLWtodG1sLSIpKSkgeworICAgICAgICAgICAgbWVt
bW92ZShidWZmZXIgKyA3LCBidWZmZXIgKyA2LCBsZW5ndGggKyAxIC0gNik7CisgICAgICAgICAg
ICBtZW1jcHkoYnVmZmVyLCAiLXdlYmtpdCIsIDcpOworICAgICAgICAgICAgKytsZW5ndGg7Cisg
ICAgICAgIH0KKyNlbmRpZgorI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgY3NzUHJvcGVydHlO
YW1lSU9TQWxpYXNpbmcoYnVmZmVyLCBuYW1lLCBsZW5ndGgpOworI2VuZGlmCisgICAgfQorICAg
IAorICAgIGNvbnN0IFByb3BlcnR5KiBoYXNoVGFibGVFbnRyeSA9IGZpbmRQcm9wZXJ0eShuYW1l
LCBsZW5ndGgpOworICAgIHJldHVybiBoYXNoVGFibGVFbnRyeSA/IHN0YXRpY19jYXN0PENTU1By
b3BlcnR5SUQ+KGhhc2hUYWJsZUVudHJ5LT5pZCkgOiBDU1NQcm9wZXJ0eUludmFsaWQ7Cit9CisK
KyNpZiBQTEFURk9STShJT1MpCit2b2lkIGNzc1Byb3BlcnR5TmFtZUlPU0FsaWFzaW5nKGNvbnN0
IGNoYXIqIHByb3BlcnR5TmFtZSwgY29uc3QgY2hhciomIHByb3BlcnR5TmFtZUFsaWFzLCB1bnNp
Z25lZCYgbmV3TGVuZ3RoKQoreworICAgIGlmICghc3RyY21wKHByb3BlcnR5TmFtZSwgIi13ZWJr
aXQtaHlwaGVuYXRlLWxvY2FsZSIpKSB7CisgICAgICAgIC8vIFdvcmtlZCBpbiBpT1MgNC4yLgor
ICAgICAgICBzdGF0aWMgY29uc3QgY2hhciB3ZWJraXRMb2NhbGVbXSA9ICItd2Via2l0LWxvY2Fs
ZSI7CisgICAgICAgIHByb3BlcnR5TmFtZUFsaWFzID0gd2Via2l0TG9jYWxlOworICAgICAgICBu
ZXdMZW5ndGggPSBzdHJsZW4od2Via2l0TG9jYWxlKTsKKyAgICB9Cit9CisjZW5kaWYKKworc3Rh
dGljIGJvb2wgaXNBcHBsZUxlZ2FjeUNzc1ZhbHVlS2V5d29yZChjb25zdCBjaGFyKiB2YWx1ZUtl
eXdvcmQsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBzdGF0aWMgY29uc3QgY2hhciBhcHBsZVBy
ZWZpeFtdID0gIi1hcHBsZS0iOworICAgIHN0YXRpYyBjb25zdCBjaGFyIGFwcGxlU3lzdGVtUHJl
Zml4W10gPSAiLWFwcGxlLXN5c3RlbSI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGFwcGxlV2ly
ZWxlc3NQbGF5YmFja1RhcmdldEFjdGl2ZSA9IGdldFZhbHVlTmFtZShDU1NWYWx1ZUFwcGxlV2ly
ZWxlc3NQbGF5YmFja1RhcmdldEFjdGl2ZSk7CisgICAgCisgICAgcmV0dXJuIGhhc1ByZWZpeCh2
YWx1ZUtleXdvcmQsIGxlbmd0aCwgYXBwbGVQcmVmaXgpCisgICAgJiYgIWhhc1ByZWZpeCh2YWx1
ZUtleXdvcmQsIGxlbmd0aCwgYXBwbGVTeXN0ZW1QcmVmaXgpCisgICAgJiYgIVdURjo6ZXF1YWwo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHZhbHVlS2V5d29yZCksIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPihhcHBsZVdpcmVsZXNzUGxheWJhY2tUYXJnZXRBY3RpdmUpLCBs
ZW5ndGgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBD
U1NWYWx1ZUlEIGNzc1ZhbHVlS2V5d29yZElEKGNvbnN0IENoYXJhY3RlclR5cGUqIHZhbHVlS2V5
d29yZCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGNoYXIgYnVmZmVyW21heENTU1ZhbHVlS2V5
d29yZExlbmd0aCArIDEgKyAxXTsgLy8gMSB0byB0dXJuICJhcHBsZSIvImtodG1sIiBpbnRvICJ3
ZWJraXQiLCAxIGZvciBudWxsIGNoYXJhY3RlcgorICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgIT0gbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgQ2hhcmFjdGVyVHlwZSBjID0gdmFsdWVL
ZXl3b3JkW2ldOworICAgICAgICBpZiAoIWMgfHwgYyA+PSAweDdGKQorICAgICAgICAgICAgcmV0
dXJuIENTU1ZhbHVlSW52YWxpZDsgLy8gaWxsZWdhbCBrZXl3b3JkLgorICAgICAgICBidWZmZXJb
aV0gPSBXVEY6OnRvQVNDSUlMb3dlcihjKTsKKyAgICB9CisgICAgYnVmZmVyW2xlbmd0aF0gPSAn
XDAnOworICAgIAorICAgIGlmIChidWZmZXJbMF0gPT0gJy0nKSB7CisgICAgICAgIC8vIElmIHRo
ZSBwcmVmaXggaXMgLWFwcGxlLSBvciAta2h0bWwtLCBjaGFuZ2UgaXQgdG8gLXdlYmtpdC0uCisg
ICAgICAgIC8vIFRoaXMgbWFrZXMgdGhlIHN0cmluZyBvbmUgY2hhcmFjdGVyIGxvbmdlci4KKyAg
ICAgICAgLy8gT24gaU9TIHdlIGRvbid0IHdhbnQgdG8gY2hhbmdlIHZhbHVlcyBzdGFydGluZyB3
aXRoIC1hcHBsZS1zeXN0ZW0gdG8gLXdlYmtpdC1zeXN0ZW0uCisgICAgICAgIC8vIEZJWE1FOiBS
ZW1vdmUgdGhpcyBtYW5nbGluZyB3aXRob3V0IGJyZWFraW5nIHRoZSB3ZWIuCisgICAgICAgIGlm
IChpc0FwcGxlTGVnYWN5Q3NzVmFsdWVLZXl3b3JkKGJ1ZmZlciwgbGVuZ3RoKSB8fCBoYXNQcmVm
aXgoYnVmZmVyLCBsZW5ndGgsICIta2h0bWwtIikpIHsKKyAgICAgICAgICAgIG1lbW1vdmUoYnVm
ZmVyICsgNywgYnVmZmVyICsgNiwgbGVuZ3RoICsgMSAtIDYpOworICAgICAgICAgICAgbWVtY3B5
KGJ1ZmZlciwgIi13ZWJraXQiLCA3KTsKKyAgICAgICAgICAgICsrbGVuZ3RoOworICAgICAgICB9
CisgICAgfQorICAgIAorICAgIGNvbnN0IFZhbHVlKiBoYXNoVGFibGVFbnRyeSA9IGZpbmRWYWx1
ZShidWZmZXIsIGxlbmd0aCk7CisgICAgcmV0dXJuIGhhc2hUYWJsZUVudHJ5ID8gc3RhdGljX2Nh
c3Q8Q1NTVmFsdWVJRD4oaGFzaFRhYmxlRW50cnktPmlkKSA6IENTU1ZhbHVlSW52YWxpZDsKK30K
KworQ1NTVmFsdWVJRCBjc3NWYWx1ZUtleXdvcmRJRChTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAg
ICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgaWYgKCFsZW5ndGgpCisg
ICAgICAgIHJldHVybiBDU1NWYWx1ZUludmFsaWQ7CisgICAgaWYgKGxlbmd0aCA+IG1heENTU1Zh
bHVlS2V5d29yZExlbmd0aCkKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVlSW52YWxpZDsKKyAgICAK
KyAgICByZXR1cm4gc3RyaW5nLmlzOEJpdCgpID8gY3NzVmFsdWVLZXl3b3JkSUQoc3RyaW5nLmNo
YXJhY3RlcnM4KCksIGxlbmd0aCkgOiBjc3NWYWx1ZUtleXdvcmRJRChzdHJpbmcuY2hhcmFjdGVy
czE2KCksIGxlbmd0aCk7Cit9CisKK0NTU1Byb3BlcnR5SUQgdW5yZXNvbHZlZENTU1Byb3BlcnR5
SUQoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxl
bmd0aCgpOworICAgIAorICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gQ1NTUHJvcGVy
dHlJbnZhbGlkOworICAgIGlmIChsZW5ndGggPiBtYXhDU1NQcm9wZXJ0eU5hbWVMZW5ndGgpCisg
ICAgICAgIHJldHVybiBDU1NQcm9wZXJ0eUludmFsaWQ7CisgICAgCisgICAgcmV0dXJuIHN0cmlu
Zy5pczhCaXQoKSA/IGNzc1Byb3BlcnR5SUQoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCkg
OiBjc3NQcm9wZXJ0eUlEKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKTsKK30KKyAgICAK
Ky8vIEZJWE1FLU5FV1BBUlNFUgorLy8gQ29tbWVudCBvdXQgcHJvcGVydHkgcGFyc2luZyBmb3Ig
bm93LgorLyoKK3VzaW5nIG5hbWVzcGFjZSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM7CisKKwor
Q1NTUHJvcGVydHlQYXJzZXI6OkNTU1Byb3BlcnR5UGFyc2VyKGNvbnN0IENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlLAorICAgIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIFZlY3Rv
cjxDU1NQcm9wZXJ0eSwgMjU2PiogcGFyc2VkUHJvcGVydGllcykKKyAgICA6IG1fcmFuZ2UocmFu
Z2UpCisgICAgLCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fcGFyc2VkUHJvcGVydGllcyhw
YXJzZWRQcm9wZXJ0aWVzKQoreworICAgIG1fcmFuZ2UuY29uc3VtZVdoaXRlc3BhY2UoKTsKK30K
Kwordm9pZCBDU1NQcm9wZXJ0eVBhcnNlcjo6YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eSwgQ1NTUHJvcGVydHlJRCBjdXJyZW50U2hvcnRoYW5kLCBjb25zdCBDU1NWYWx1ZSYgdmFs
dWUsIGJvb2wgaW1wb3J0YW50LCBib29sIGltcGxpY2l0KQoreworICAgIEFTU0VSVCghaXNQcm9w
ZXJ0eUFsaWFzKHByb3BlcnR5KSk7CisKKyAgICBpbnQgc2hvcnRoYW5kSW5kZXggPSAwOworICAg
IGJvb2wgc2V0RnJvbVNob3J0aGFuZCA9IGZhbHNlOworCisgICAgaWYgKGN1cnJlbnRTaG9ydGhh
bmQpIHsKKyAgICAgICAgVmVjdG9yPFN0eWxlUHJvcGVydHlTaG9ydGhhbmQsIDQ+IHNob3J0aGFu
ZHM7CisgICAgICAgIGdldE1hdGNoaW5nU2hvcnRoYW5kc0ZvckxvbmdoYW5kKHByb3BlcnR5LCAm
c2hvcnRoYW5kcyk7CisgICAgICAgIHNldEZyb21TaG9ydGhhbmQgPSB0cnVlOworICAgICAgICBp
ZiAoc2hvcnRoYW5kcy5zaXplKCkgPiAxKQorICAgICAgICAgICAgc2hvcnRoYW5kSW5kZXggPSBp
bmRleE9mU2hvcnRoYW5kRm9yTG9uZ2hhbmQoY3VycmVudFNob3J0aGFuZCwgc2hvcnRoYW5kcyk7
CisgICAgfQorCisgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLT5hcHBlbmQoQ1NTUHJvcGVydHkocHJv
cGVydHksIHZhbHVlLCBpbXBvcnRhbnQsIHNldEZyb21TaG9ydGhhbmQsIHNob3J0aGFuZEluZGV4
LCBpbXBsaWNpdCkpOworfQorCit2b2lkIENTU1Byb3BlcnR5UGFyc2VyOjphZGRFeHBhbmRlZFBy
b3BlcnR5Rm9yVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgQ1NTVmFsdWUmIHZh
bHVlLCBib29sIGltcG9ydGFudCkKK3sKKyAgICBjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5k
JiBzaG9ydGhhbmQgPSBzaG9ydGhhbmRGb3JQcm9wZXJ0eShwcm9wZXJ0eSk7CisgICAgdW5zaWdu
ZWQgc2hvcnRoYW5kTGVuZ3RoID0gc2hvcnRoYW5kLmxlbmd0aCgpOworICAgIEFTU0VSVChzaG9y
dGhhbmRMZW5ndGgpOworICAgIGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcyA9IHNob3J0
aGFuZC5wcm9wZXJ0aWVzKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNob3J0aGFu
ZExlbmd0aDsgKytpKQorICAgICAgICBhZGRQcm9wZXJ0eShsb25naGFuZHNbaV0sIHByb3BlcnR5
LCB2YWx1ZSwgaW1wb3J0YW50KTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VW
YWx1ZShDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0eSwgYm9vbCBpbXBvcnRhbnQsCisg
ICAgY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRl
eHQmIGNvbnRleHQsCisgICAgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+JiBwYXJzZWRQcm9wZXJ0
aWVzLCBTdHlsZVJ1bGU6OlR5cGUgcnVsZVR5cGUpCit7CisgICAgaW50IHBhcnNlZFByb3BlcnRp
ZXNTaXplID0gcGFyc2VkUHJvcGVydGllcy5zaXplKCk7CisKKyAgICBDU1NQcm9wZXJ0eVBhcnNl
ciBwYXJzZXIocmFuZ2UsIGNvbnRleHQsICZwYXJzZWRQcm9wZXJ0aWVzKTsKKyAgICBDU1NQcm9w
ZXJ0eUlEIHJlc29sdmVkUHJvcGVydHkgPSByZXNvbHZlQ1NTUHJvcGVydHlJRCh1bnJlc29sdmVk
UHJvcGVydHkpOworICAgIGJvb2wgcGFyc2VTdWNjZXNzOworCisgICAgaWYgKHJ1bGVUeXBlID09
IFN0eWxlUnVsZTo6Vmlld3BvcnQpIHsKKyAgICAgICAgcGFyc2VTdWNjZXNzID0gKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OmNzc1ZpZXdwb3J0RW5hYmxlZCgpIHx8IGlzVUFTaGVldEJlaGF2aW9y
KGNvbnRleHQubW9kZSgpKSkKKyAgICAgICAgICAgICYmIHBhcnNlci5wYXJzZVZpZXdwb3J0RGVz
Y3JpcHRvcihyZXNvbHZlZFByb3BlcnR5LCBpbXBvcnRhbnQpOworICAgIH0gZWxzZSBpZiAocnVs
ZVR5cGUgPT0gU3R5bGVSdWxlOjpGb250RmFjZSkgeworICAgICAgICBwYXJzZVN1Y2Nlc3MgPSBw
YXJzZXIucGFyc2VGb250RmFjZURlc2NyaXB0b3IocmVzb2x2ZWRQcm9wZXJ0eSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgcGFyc2VTdWNjZXNzID0gcGFyc2VyLnBhcnNlVmFsdWVTdGFydCh1bnJl
c29sdmVkUHJvcGVydHksIGltcG9ydGFudCk7CisgICAgfQorCisgICAgLy8gVGhpcyBkb2Vzbid0
IGNvdW50IFVBIHN0eWxlIHNoZWV0cworICAgIGlmIChwYXJzZVN1Y2Nlc3MgJiYgY29udGV4dC51
c2VDb3VudGVyKCkpCisgICAgICAgIGNvbnRleHQudXNlQ291bnRlcigpLT5jb3VudChjb250ZXh0
Lm1vZGUoKSwgdW5yZXNvbHZlZFByb3BlcnR5KTsKKworICAgIGlmICghcGFyc2VTdWNjZXNzKQor
ICAgICAgICBwYXJzZWRQcm9wZXJ0aWVzLnNocmluayhwYXJzZWRQcm9wZXJ0aWVzU2l6ZSk7CisK
KyAgICByZXR1cm4gcGFyc2VTdWNjZXNzOworfQorCitjb25zdCBDU1NWYWx1ZSogQ1NTUHJvcGVy
dHlQYXJzZXI6OnBhcnNlU2luZ2xlVmFsdWUoCisgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwg
Y29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQm
IGNvbnRleHQpCit7CisgICAgQ1NTUHJvcGVydHlQYXJzZXIgcGFyc2VyKHJhbmdlLCBjb250ZXh0
LCBudWxscHRyKTsKKyAgICBjb25zdCBDU1NWYWx1ZSogdmFsdWUgPSBwYXJzZXIucGFyc2VTaW5n
bGVWYWx1ZShwcm9wZXJ0eSk7CisgICAgaWYgKCF2YWx1ZSB8fCAhcGFyc2VyLm1fcmFuZ2UuYXRF
bmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHZhbHVlOworfQorCiti
b29sIENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVZhbHVlU3RhcnQoQ1NTUHJvcGVydHlJRCB1bnJl
c29sdmVkUHJvcGVydHksIGJvb2wgaW1wb3J0YW50KQoreworICAgIGlmIChjb25zdW1lQ1NTV2lk
ZUtleXdvcmQodW5yZXNvbHZlZFByb3BlcnR5LCBpbXBvcnRhbnQpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIENTU1BhcnNlclRva2VuUmFuZ2Ugb3JpZ2luYWxSYW5nZSA9IG1fcmFuZ2U7
CisgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkID0gcmVzb2x2ZUNTU1Byb3BlcnR5SUQodW5y
ZXNvbHZlZFByb3BlcnR5KTsKKyAgICBib29sIGlzU2hvcnRoYW5kID0gaXNTaG9ydGhhbmRQcm9w
ZXJ0eShwcm9wZXJ0eUlkKTsKKworICAgIGlmIChpc1Nob3J0aGFuZCkgeworICAgICAgICAvLyBW
YXJpYWJsZSByZWZlcmVuY2VzIHdpbGwgZmFpbCB0byBwYXJzZSBoZXJlIGFuZCB3aWxsIGZhbGwg
b3V0IHRvIHRoZSB2YXJpYWJsZSByZWYgcGFyc2VyIGJlbG93LgorICAgICAgICBpZiAocGFyc2VT
aG9ydGhhbmQodW5yZXNvbHZlZFByb3BlcnR5LCBpbXBvcnRhbnQpKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGNvbnN0IENTU1ZhbHVlKiBwYXJz
ZWRWYWx1ZSA9IHBhcnNlU2luZ2xlVmFsdWUodW5yZXNvbHZlZFByb3BlcnR5KSkgeworICAgICAg
ICAgICAgaWYgKG1fcmFuZ2UuYXRFbmQoKSkgeworICAgICAgICAgICAgICAgIGFkZFByb3BlcnR5
KHByb3BlcnR5SWQsIENTU1Byb3BlcnR5SW52YWxpZCwgKnBhcnNlZFZhbHVlLCBpbXBvcnRhbnQp
OworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc1ZhcmlhYmxlc0Vu
YWJsZWQoKSAmJiBDU1NWYXJpYWJsZVBhcnNlcjo6Y29udGFpbnNWYWxpZFZhcmlhYmxlUmVmZXJl
bmNlcyhvcmlnaW5hbFJhbmdlKSkgeworICAgICAgICBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVl
KiB2YXJpYWJsZSA9IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6OmNyZWF0ZShDU1NWYXJpYWJs
ZURhdGE6OmNyZWF0ZShvcmlnaW5hbFJhbmdlKSk7CisKKyAgICAgICAgaWYgKGlzU2hvcnRoYW5k
KSB7CisgICAgICAgICAgICBjb25zdCBDU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWUmIHBlbmRp
bmdWYWx1ZSA9ICpDU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWU6OmNyZWF0ZShwcm9wZXJ0eUlk
LCB2YXJpYWJsZSk7CisgICAgICAgICAgICBhZGRFeHBhbmRlZFByb3BlcnR5Rm9yVmFsdWUocHJv
cGVydHlJZCwgcGVuZGluZ1ZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydHlJZCwgQ1NTUHJvcGVydHlJbnZhbGlkLCAqdmFy
aWFibGUsIGltcG9ydGFudCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgcmV0dXJuIGZhbHNlOworfQorIAorYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29u
c3VtZUNTU1dpZGVLZXl3b3JkKENTU1Byb3BlcnR5SUQgdW5yZXNvbHZlZFByb3BlcnR5LCBib29s
IGltcG9ydGFudCkKK3sKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlQ29weSA9IG1fcmFu
Z2U7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlQ29weS5jb25zdW1lSW5jbHVkaW5nV2hpdGVz
cGFjZSgpLmlkKCk7CisgICAgaWYgKCFyYW5nZUNvcHkuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgQ1NTVmFsdWUqIHZhbHVlID0gbnVsbHB0cjsKKyAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVJbml0aWFsKQorICAgICAgICB2YWx1ZSA9IENTU0luaXRpYWxWYWx1ZTo6Y3JlYXRl
KCk7CisgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVJbmhlcml0KQorICAgICAgICB2YWx1ZSA9
IENTU0luaGVyaXRlZFZhbHVlOjpjcmVhdGUoKTsKKyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1
ZVVuc2V0KQorICAgICAgICB2YWx1ZSA9IENTU1Vuc2V0VmFsdWU6OmNyZWF0ZSgpOworICAgIGVs
c2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSA9
IHJlc29sdmVDU1NQcm9wZXJ0eUlEKHVucmVzb2x2ZWRQcm9wZXJ0eSk7CisgICAgY29uc3QgU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kID0gc2hvcnRoYW5kRm9yUHJvcGVydHkocHJv
cGVydHkpOworICAgIGlmICghc2hvcnRoYW5kLmxlbmd0aCgpKSB7CisgICAgICAgIGlmIChDU1NQ
cm9wZXJ0eU1ldGFkYXRhOjppc0Rlc2NyaXB0b3JPbmx5KHVucmVzb2x2ZWRQcm9wZXJ0eSkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnR5LCBD
U1NQcm9wZXJ0eUludmFsaWQsICp2YWx1ZSwgaW1wb3J0YW50KTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBhZGRFeHBhbmRlZFByb3BlcnR5Rm9yVmFsdWUocHJvcGVydHksICp2YWx1ZSwgaW1wb3J0
YW50KTsKKyAgICB9CisgICAgbV9yYW5nZSA9IHJhbmdlQ29weTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworc3RhdGljIENTU1ZhbHVlTGlzdCogY29uc3VtZVRyYW5zZm9ybU9yaWdpbihDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVz
c1F1aXJrIHVuaXRsZXNzKQoreworICAgIENTU1ZhbHVlKiByZXN1bHRYID0gbnVsbHB0cjsKKyAg
ICBDU1NWYWx1ZSogcmVzdWx0WSA9IG51bGxwdHI7CisgICAgaWYgKGNvbnN1bWVPbmVPclR3b1Zh
bHVlZFBvc2l0aW9uKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcywgcmVzdWx0WCwgcmVz
dWx0WSkpIHsKKyAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICBsaXN0LT5hcHBlbmQoKnJlc3VsdFgpOworICAg
ICAgICBsaXN0LT5hcHBlbmQoKnJlc3VsdFkpOworICAgICAgICBDU1NWYWx1ZSogcmVzdWx0WiA9
IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAg
ICAgICBpZiAoIXJlc3VsdFopCisgICAgICAgICAgICByZXN1bHRaID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZSgwLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBpeGVscyk7CisgICAg
ICAgIGxpc3QtPmFwcGVuZCgqcmVzdWx0Wik7CisgICAgICAgIHJldHVybiBsaXN0OworICAgIH0K
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworLy8gTWV0aG9kcyBmb3IgY29uc3VtaW5nIG5vbi1z
aG9ydGhhbmQgcHJvcGVydGllcyBzdGFydHMgaGVyZS4KK3N0YXRpYyBDU1NWYWx1ZSogY29uc3Vt
ZVdpbGxDaGFuZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdl
LnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVu
dChyYW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAvLyBFdmVyeSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBv
ZiBpZGVudGlmaWVycyBpcyBhIHZhbGlkIHdpbGwtY2hhbmdlIHZhbHVlLAorICAgIC8vIHVubGVz
cyB0aGUgbGlzdCBpbmNsdWRlcyBhbiBleHBsaWNpdGx5IGRpc2FsbG93ZWQgaWRlbnRpZmllci4K
KyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBJ
ZGVudFRva2VuKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIENTU1Byb3Bl
cnR5SUQgdW5yZXNvbHZlZFByb3BlcnR5ID0gdW5yZXNvbHZlZENTU1Byb3BlcnR5SUQocmFuZ2Uu
cGVlaygpLnZhbHVlKCkpOworICAgICAgICBpZiAodW5yZXNvbHZlZFByb3BlcnR5KSB7CisgICAg
ICAgICAgICBBU1NFUlQoQ1NTUHJvcGVydHlNZXRhZGF0YTo6aXNFbmFibGVkUHJvcGVydHkodW5y
ZXNvbHZlZFByb3BlcnR5KSk7CisgICAgICAgICAgICAvLyBOb3cgImFsbCIgaXMgdXNlZCBieSBi
b3RoIENTU1ZhbHVlIGFuZCBDU1NQcm9wZXJ0eVZhbHVlLgorICAgICAgICAgICAgLy8gTmVlZCB0
byByZXR1cm4gbnVsbHB0ciB3aGVuIGN1cnJlbnRWYWx1ZSBpcyBDU1NQcm9wZXJ0eUFsbC4KKyAg
ICAgICAgICAgIGlmICh1bnJlc29sdmVkUHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXaWxsQ2hhbmdl
IHx8IHVucmVzb2x2ZWRQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUFsbCkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHZhbHVlcy0+YXBwZW5kKCpDU1NDdXN0b21J
ZGVudFZhbHVlOjpjcmVhdGUodW5yZXNvbHZlZFByb3BlcnR5KSk7CisgICAgICAgICAgICByYW5n
ZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgc3dpdGNoIChyYW5nZS5wZWVrKCkuaWQoKSkgeworICAgICAgICAgICAgY2FzZSBDU1NW
YWx1ZU5vbmU6CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQWxsOgorICAgICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZUF1dG86CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlRGVmYXVsdDoKKyAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVJbml0aWFsOgorICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUlu
aGVyaXQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBjYXNl
IENTU1ZhbHVlQ29udGVudHM6CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU2Nyb2xsUG9zaXRp
b246CisgICAgICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoKmNvbnN1bWVJZGVudChyYW5nZSkp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHJhbmdl
LmF0RW5kKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJ
bmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworICAgIHJldHVybiB2YWx1ZXM7Cit9CisKK3N0YXRpYyBDU1NGb250RmVhdHVyZVZh
bHVlKiBjb25zdW1lRm9udEZlYXR1cmVUYWcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7
CisgICAgLy8gRmVhdHVyZSB0YWcgbmFtZSBjb25zaXN0cyBvZiA0LWxldHRlciBjaGFyYWN0ZXJz
LgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB0YWdOYW1lTGVuZ3RoID0gNDsKKworICAgIGNv
bnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNw
YWNlKCk7CisgICAgLy8gRmVhdHVyZSB0YWcgbmFtZSBjb21lcyBmaXJzdAorICAgIGlmICh0b2tl
bi50eXBlKCkgIT0gU3RyaW5nVG9rZW4pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlm
ICh0b2tlbi52YWx1ZSgpLmxlbmd0aCgpICE9IHRhZ05hbWVMZW5ndGgpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIEF0b21pY1N0cmluZyB0YWcgPSB0b2tlbi52YWx1ZSgpLnRvQXRvbWlj
U3RyaW5nKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRhZ05hbWVMZW5ndGg7ICsr
aSkgeworICAgICAgICAvLyBMaW1pdHMgdGhlIHJhbmdlIG9mIGNoYXJhY3RlcnMgdG8gMHgyMC0w
eDdFLCBmb2xsb3dpbmcgdGhlIHRhZyBuYW1lIHJ1bGVzIGRlZmllbmQgaW4gdGhlIE9wZW5UeXBl
IHNwZWNpZmljYXRpb24uCisgICAgICAgIFVDaGFyIGNoYXJhY3RlciA9IHRhZ1tpXTsKKyAgICAg
ICAgaWYgKGNoYXJhY3RlciA8IDB4MjAgfHwgY2hhcmFjdGVyID4gMHg3RSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGludCB0YWdWYWx1ZSA9IDE7CisgICAgLy8g
RmVhdHVyZSB0YWcgdmFsdWVzIGNvdWxkIGZvbGxvdzogPGludGVnZXI+IHwgb24gfCBvZmYKKyAg
ICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBOdW1iZXJUb2tlbiAmJiByYW5nZS5wZWVrKCku
bnVtZXJpY1ZhbHVlVHlwZSgpID09IEludGVnZXJWYWx1ZVR5cGUgJiYgcmFuZ2UucGVlaygpLm51
bWVyaWNWYWx1ZSgpID49IDApIHsKKyAgICAgICAgdGFnVmFsdWUgPSBjbGFtcFRvPGludD4ocmFu
Z2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1lcmljVmFsdWUoKSk7CisgICAgICAg
IGlmICh0YWdWYWx1ZSA8IDApCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9IGVs
c2UgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlT24gfHwgcmFuZ2UucGVlaygpLmlk
KCkgPT0gQ1NTVmFsdWVPZmYpIHsKKyAgICAgICAgdGFnVmFsdWUgPSByYW5nZS5jb25zdW1lSW5j
bHVkaW5nV2hpdGVzcGFjZSgpLmlkKCkgPT0gQ1NTVmFsdWVPbjsKKyAgICB9CisgICAgcmV0dXJu
IENTU0ZvbnRGZWF0dXJlVmFsdWU6OmNyZWF0ZSh0YWcsIHRhZ1ZhbHVlKTsKK30KKworc3RhdGlj
IENTU1ZhbHVlKiBjb25zdW1lRm9udEZlYXR1cmVTZXR0aW5ncyhDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb3JtYWwp
CisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIENTU1ZhbHVlTGlzdCog
c2V0dGluZ3MgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgZG8g
eworICAgICAgICBDU1NGb250RmVhdHVyZVZhbHVlKiBmb250RmVhdHVyZVZhbHVlID0gY29uc3Vt
ZUZvbnRGZWF0dXJlVGFnKHJhbmdlKTsKKyAgICAgICAgaWYgKCFmb250RmVhdHVyZVZhbHVlKQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHNldHRpbmdzLT5hcHBlbmQoKmZv
bnRGZWF0dXJlVmFsdWUpOworICAgIH0gd2hpbGUgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRl
c3BhY2UocmFuZ2UpKTsKKyAgICByZXR1cm4gc2V0dGluZ3M7Cit9CisKK3N0YXRpYyBDU1NWYWx1
ZSogY29uc3VtZVBhZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJh
bmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJ
ZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVDdXN0b21JZGVudChyYW5nZSk7Cit9CisK
K3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVF1b3RlcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAg
ICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICB3aGlsZSAoIXJhbmdl
LmF0RW5kKCkpIHsKKyAgICAgICAgQ1NTU3RyaW5nVmFsdWUqIHBhcnNlZFZhbHVlID0gY29uc3Vt
ZVN0cmluZyhyYW5nZSk7CisgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgdmFsdWVzLT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAg
ICB9CisgICAgaWYgKHZhbHVlcy0+bGVuZ3RoKCkgJiYgdmFsdWVzLT5sZW5ndGgoKSAlIDIgPT0g
MCkKKyAgICAgICAgcmV0dXJuIHZhbHVlczsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3Rh
dGljIENTU1ZhbHVlKiBjb25zdW1lV2Via2l0SGlnaGxpZ2h0KENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisg
ICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lU3Ry
aW5nKHJhbmdlKTsKK30KKworY2xhc3MgRm9udFZhcmlhbnRMaWdhdHVyZXNQYXJzZXIgeworICAg
IFNUQUNLX0FMTE9DQVRFRCgpOworCitwdWJsaWM6CisgICAgRm9udFZhcmlhbnRMaWdhdHVyZXNQ
YXJzZXIoKQorICAgICAgICA6IG1fc2F3Q29tbW9uTGlnYXR1cmVzVmFsdWUoZmFsc2UpCisgICAg
ICAgICwgbV9zYXdEaXNjcmV0aW9uYXJ5TGlnYXR1cmVzVmFsdWUoZmFsc2UpCisgICAgICAgICwg
bV9zYXdIaXN0b3JpY2FsTGlnYXR1cmVzVmFsdWUoZmFsc2UpCisgICAgICAgICwgbV9zYXdDb250
ZXh0dWFsTGlnYXR1cmVzVmFsdWUoZmFsc2UpCisgICAgICAgICwgbV9yZXN1bHQoQ1NTVmFsdWVM
aXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpKQorICAgIHsKKyAgICB9CisKKyAgICBlbnVtIGNs
YXNzIFBhcnNlUmVzdWx0IHsKKyAgICAgICAgQ29uc3VtZWRWYWx1ZSwKKyAgICAgICAgRGlzYWxs
b3dlZFZhbHVlLAorICAgICAgICBVbmtub3duVmFsdWUKKyAgICB9OworCisgICAgUGFyc2VSZXN1
bHQgY29uc3VtZUxpZ2F0dXJlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQorICAgIHsKKyAg
ICAgICAgQ1NTVmFsdWVJRCB2YWx1ZUlEID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgICAgIHN3
aXRjaCAodmFsdWVJRCkgeworICAgICAgICBjYXNlIENTU1ZhbHVlTm9Db21tb25MaWdhdHVyZXM6
CisgICAgICAgIGNhc2UgQ1NTVmFsdWVDb21tb25MaWdhdHVyZXM6CisgICAgICAgICAgICBpZiAo
bV9zYXdDb21tb25MaWdhdHVyZXNWYWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUGFyc2VS
ZXN1bHQ6OkRpc2FsbG93ZWRWYWx1ZTsKKyAgICAgICAgICAgIG1fc2F3Q29tbW9uTGlnYXR1cmVz
VmFsdWUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVO
b0Rpc2NyZXRpb25hcnlMaWdhdHVyZXM6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVEaXNjcmV0aW9u
YXJ5TGlnYXR1cmVzOgorICAgICAgICAgICAgaWYgKG1fc2F3RGlzY3JldGlvbmFyeUxpZ2F0dXJl
c1ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBQYXJzZVJlc3VsdDo6RGlzYWxsb3dlZFZh
bHVlOworICAgICAgICAgICAgbV9zYXdEaXNjcmV0aW9uYXJ5TGlnYXR1cmVzVmFsdWUgPSB0cnVl
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVOb0hpc3RvcmljYWxM
aWdhdHVyZXM6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVIaXN0b3JpY2FsTGlnYXR1cmVzOgorICAg
ICAgICAgICAgaWYgKG1fc2F3SGlzdG9yaWNhbExpZ2F0dXJlc1ZhbHVlKQorICAgICAgICAgICAg
ICAgIHJldHVybiBQYXJzZVJlc3VsdDo6RGlzYWxsb3dlZFZhbHVlOworICAgICAgICAgICAgbV9z
YXdIaXN0b3JpY2FsTGlnYXR1cmVzVmFsdWUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQ1NTVmFsdWVOb0NvbnRleHR1YWw6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVD
b250ZXh0dWFsOgorICAgICAgICAgICAgaWYgKG1fc2F3Q29udGV4dHVhbExpZ2F0dXJlc1ZhbHVl
KQorICAgICAgICAgICAgICAgIHJldHVybiBQYXJzZVJlc3VsdDo6RGlzYWxsb3dlZFZhbHVlOwor
ICAgICAgICAgICAgbV9zYXdDb250ZXh0dWFsTGlnYXR1cmVzVmFsdWUgPSB0cnVlOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gUGFyc2VS
ZXN1bHQ6OlVua25vd25WYWx1ZTsKKyAgICAgICAgfQorICAgICAgICBtX3Jlc3VsdC0+YXBwZW5k
KCpjb25zdW1lSWRlbnQocmFuZ2UpKTsKKyAgICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0OjpDb25z
dW1lZFZhbHVlOworICAgIH0KKworICAgIENTU1ZhbHVlKiBmaW5hbGl6ZVZhbHVlKCkKKyAgICB7
CisgICAgICAgIGlmICghbV9yZXN1bHQtPmxlbmd0aCgpKQorICAgICAgICAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFsKTsKKyAgICAg
ICAgcmV0dXJuIG1fcmVzdWx0LnJlbGVhc2UoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgYm9v
bCBtX3Nhd0NvbW1vbkxpZ2F0dXJlc1ZhbHVlOworICAgIGJvb2wgbV9zYXdEaXNjcmV0aW9uYXJ5
TGlnYXR1cmVzVmFsdWU7CisgICAgYm9vbCBtX3Nhd0hpc3RvcmljYWxMaWdhdHVyZXNWYWx1ZTsK
KyAgICBib29sIG1fc2F3Q29udGV4dHVhbExpZ2F0dXJlc1ZhbHVlOworICAgIE1lbWJlcjxDU1NW
YWx1ZUxpc3Q+IG1fcmVzdWx0OworfTsKKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lRm9udFZh
cmlhbnRMaWdhdHVyZXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJh
bmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9ybWFsIHx8IHJhbmdlLnBlZWsoKS5pZCgpID09
IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAg
ICBGb250VmFyaWFudExpZ2F0dXJlc1BhcnNlciBsaWdhdHVyZXNQYXJzZXI7CisgICAgZG8gewor
ICAgICAgICBpZiAobGlnYXR1cmVzUGFyc2VyLmNvbnN1bWVMaWdhdHVyZShyYW5nZSkgIT0KKyAg
ICAgICAgICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzUGFyc2VyOjpQYXJzZVJlc3VsdDo6Q29uc3Vt
ZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0gd2hpbGUgKCFyYW5n
ZS5hdEVuZCgpKTsKKworICAgIHJldHVybiBsaWdhdHVyZXNQYXJzZXIuZmluYWxpemVWYWx1ZSgp
OworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVGb250VmFyaWFudENhcHMo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgcmV0dXJuIGNvbnN1bWVJZGVudDxD
U1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVTbWFsbENhcHMsIENTU1ZhbHVlQWxsU21hbGxDYXBzLAor
ICAgICAgICBDU1NWYWx1ZVBldGl0ZUNhcHMsIENTU1ZhbHVlQWxsUGV0aXRlQ2FwcywKKyAgICAg
ICAgQ1NTVmFsdWVVbmljYXNlLCBDU1NWYWx1ZVRpdGxpbmdDYXBzPihyYW5nZSk7Cit9CisKK2Ns
YXNzIEZvbnRWYXJpYW50TnVtZXJpY1BhcnNlciB7CisgICAgU1RBQ0tfQUxMT0NBVEVEKCk7CisK
K3B1YmxpYzoKKyAgICBGb250VmFyaWFudE51bWVyaWNQYXJzZXIoKQorICAgICAgICA6IG1fc2F3
TnVtZXJpY0ZpZ3VyZVZhbHVlKGZhbHNlKQorICAgICAgICAsIG1fc2F3TnVtZXJpY1NwYWNpbmdW
YWx1ZShmYWxzZSkKKyAgICAgICAgLCBtX3Nhd051bWVyaWNGcmFjdGlvblZhbHVlKGZhbHNlKQor
ICAgICAgICAsIG1fc2F3T3JkaW5hbFZhbHVlKGZhbHNlKQorICAgICAgICAsIG1fc2F3U2xhc2hl
ZFplcm9WYWx1ZShmYWxzZSkKKyAgICAgICAgLCBtX3Jlc3VsdChDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZVNwYWNlU2VwYXJhdGVkKCkpCisgICAgeworICAgIH0KKworICAgIGVudW0gY2xhc3MgUGFyc2VS
ZXN1bHQgeworICAgICAgICBDb25zdW1lZFZhbHVlLAorICAgICAgICBEaXNhbGxvd2VkVmFsdWUs
CisgICAgICAgIFVua25vd25WYWx1ZQorICAgIH07CisKKyAgICBQYXJzZVJlc3VsdCBjb25zdW1l
TnVtZXJpYyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKKyAgICB7CisgICAgICAgIENTU1Zh
bHVlSUQgdmFsdWVJRCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgICAgICBzd2l0Y2ggKHZhbHVl
SUQpIHsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUxpbmluZ051bXM6CisgICAgICAgIGNhc2UgQ1NT
VmFsdWVPbGRzdHlsZU51bXM6CisgICAgICAgICAgICBpZiAobV9zYXdOdW1lcmljRmlndXJlVmFs
dWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0OjpEaXNhbGxvd2VkVmFsdWU7
CisgICAgICAgICAgICBtX3Nhd051bWVyaWNGaWd1cmVWYWx1ZSA9IHRydWU7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVByb3BvcnRpb25hbE51bXM6CisgICAgICAg
IGNhc2UgQ1NTVmFsdWVUYWJ1bGFyTnVtczoKKyAgICAgICAgICAgIGlmIChtX3Nhd051bWVyaWNT
cGFjaW5nVmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0OjpEaXNhbGxv
d2VkVmFsdWU7CisgICAgICAgICAgICBtX3Nhd051bWVyaWNTcGFjaW5nVmFsdWUgPSB0cnVlOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVEaWFnb25hbEZyYWN0aW9u
czoKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVN0YWNrZWRGcmFjdGlvbnM6CisgICAgICAgICAgICBp
ZiAobV9zYXdOdW1lcmljRnJhY3Rpb25WYWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUGFy
c2VSZXN1bHQ6OkRpc2FsbG93ZWRWYWx1ZTsKKyAgICAgICAgICAgIG1fc2F3TnVtZXJpY0ZyYWN0
aW9uVmFsdWUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFs
dWVPcmRpbmFsOgorICAgICAgICAgICAgaWYgKG1fc2F3T3JkaW5hbFZhbHVlKQorICAgICAgICAg
ICAgICAgIHJldHVybiBQYXJzZVJlc3VsdDo6RGlzYWxsb3dlZFZhbHVlOworICAgICAgICAgICAg
bV9zYXdPcmRpbmFsVmFsdWUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgQ1NTVmFsdWVTbGFzaGVkWmVybzoKKyAgICAgICAgICAgIGlmIChtX3Nhd1NsYXNoZWRaZXJv
VmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0OjpEaXNhbGxvd2VkVmFs
dWU7CisgICAgICAgICAgICBtX3Nhd1NsYXNoZWRaZXJvVmFsdWUgPSB0cnVlOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gUGFyc2VSZXN1
bHQ6OlVua25vd25WYWx1ZTsKKyAgICAgICAgfQorICAgICAgICBtX3Jlc3VsdC0+YXBwZW5kKCpj
b25zdW1lSWRlbnQocmFuZ2UpKTsKKyAgICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0OjpDb25zdW1l
ZFZhbHVlOworICAgIH0KKworICAgIENTU1ZhbHVlKiBmaW5hbGl6ZVZhbHVlKCkKKyAgICB7Cisg
ICAgICAgIGlmICghbV9yZXN1bHQtPmxlbmd0aCgpKQorICAgICAgICAgICAgcmV0dXJuIENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFsKTsKKyAgICAgICAg
cmV0dXJuIG1fcmVzdWx0LnJlbGVhc2UoKTsKKyAgICB9CisKKworcHJpdmF0ZToKKyAgICBib29s
IG1fc2F3TnVtZXJpY0ZpZ3VyZVZhbHVlOworICAgIGJvb2wgbV9zYXdOdW1lcmljU3BhY2luZ1Zh
bHVlOworICAgIGJvb2wgbV9zYXdOdW1lcmljRnJhY3Rpb25WYWx1ZTsKKyAgICBib29sIG1fc2F3
T3JkaW5hbFZhbHVlOworICAgIGJvb2wgbV9zYXdTbGFzaGVkWmVyb1ZhbHVlOworICAgIE1lbWJl
cjxDU1NWYWx1ZUxpc3Q+IG1fcmVzdWx0OworfTsKKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1l
Rm9udFZhcmlhbnROdW1lcmljKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlm
IChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBGb250VmFyaWFudE51bWVyaWNQYXJzZXIgbnVtZXJp
Y1BhcnNlcjsKKyAgICBkbyB7CisgICAgICAgIGlmIChudW1lcmljUGFyc2VyLmNvbnN1bWVOdW1l
cmljKHJhbmdlKSAhPQorICAgICAgICAgICAgRm9udFZhcmlhbnROdW1lcmljUGFyc2VyOjpQYXJz
ZVJlc3VsdDo6Q29uc3VtZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgpKTsKKworICAgIHJldHVybiBudW1lcmljUGFyc2VyLmZp
bmFsaXplVmFsdWUoKTsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lRm9u
dFZhcmlhbnRDU1MyMShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4g
Y29uc3VtZUlkZW50PENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZVNtYWxsQ2Fwcz4ocmFuZ2UpOwor
fQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVGb250VmFyaWFudExpc3QoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZXMgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgZG8geworICAgICAgICBpZiAocmFuZ2Uu
cGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBbGwpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBDU1NQ
cm9wZXJ0eVBhcnNlcjo6cGFyc2VGb250VmFyaWFudCgpIGltcGxlbWVudHMKKyAgICAgICAgICAg
IC8vIHRoZSBvbGQgY3NzMyBkcmFmdDoKKyAgICAgICAgICAgIC8vIGh0dHA6Ly93d3cudzMub3Jn
L1RSLzIwMDIvV0QtY3NzMy13ZWJmb250cy0yMDAyMDgwMi8jZm9udC12YXJpYW50CisgICAgICAg
ICAgICAvLyAnYWxsJyBpcyBvbmx5IGFsbG93ZWQgaW4gQGZvbnQtZmFjZSBhbmQgd2l0aCBubyBv
dGhlciB2YWx1ZXMuCisgICAgICAgICAgICBpZiAodmFsdWVzLT5sZW5ndGgoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQo
cmFuZ2UpOworICAgICAgICB9CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmb250VmFyaWFu
dCA9IGNvbnN1bWVGb250VmFyaWFudENTUzIxKHJhbmdlKTsKKyAgICAgICAgaWYgKGZvbnRWYXJp
YW50KQorICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoKmZvbnRWYXJpYW50KTsKKyAgICB9IHdo
aWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSk7CisKKyAgICBpZiAo
dmFsdWVzLT5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIHZhbHVlczsKKworICAgIHJldHVybiBu
dWxscHRyOworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVGb250V2VpZ2h0
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGNvbnN0IENTU1BhcnNlclRva2Vu
JiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICBpZiAodG9rZW4uaWQoKSA+PSBDU1NWYWx1ZU5v
cm1hbCAmJiB0b2tlbi5pZCgpIDw9IENTU1ZhbHVlTGlnaHRlcikKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVJZGVudChyYW5nZSk7CisgICAgaWYgKHRva2VuLnR5cGUoKSAhPSBOdW1iZXJUb2tlbiB8
fCB0b2tlbi5udW1lcmljVmFsdWVUeXBlKCkgIT0gSW50ZWdlclZhbHVlVHlwZSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgaW50IHdlaWdodCA9IHN0YXRpY19jYXN0PGludD4odG9rZW4u
bnVtZXJpY1ZhbHVlKCkpOworICAgIGlmICgod2VpZ2h0ICUgMTAwKSB8fCB3ZWlnaHQgPCAxMDAg
fHwgd2VpZ2h0ID4gOTAwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByYW5nZS5jb25z
dW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlSWRlbnRpZmllcihzdGF0aWNfY2FzdDxDU1NWYWx1ZUlEPihDU1NWYWx1ZTEwMCArIHdl
aWdodCAvIDEwMCAtIDEpKTsKK30KKworc3RhdGljIFN0cmluZyBjb25jYXRlbmF0ZUZhbWlseU5h
bWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOworICAgIGJvb2wgYWRkZWRTcGFjZSA9IGZhbHNlOworICAgIGNvbnN0IENTU1BhcnNlclRv
a2VuJiBmaXJzdFRva2VuID0gcmFuZ2UucGVlaygpOworICAgIHdoaWxlIChyYW5nZS5wZWVrKCku
dHlwZSgpID09IElkZW50VG9rZW4pIHsKKyAgICAgICAgaWYgKCFidWlsZGVyLmlzRW1wdHkoKSkg
eworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgIGFkZGVkU3Bh
Y2UgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHJhbmdlLmNvbnN1
bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKSk7CisgICAgfQorICAgIGlmICghYWRkZWRT
cGFjZSAmJiBpc0NTU1dpZGVLZXl3b3JkKGZpcnN0VG9rZW4uaWQoKSkpCisgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitzdGF0aWMg
Q1NTVmFsdWUqIGNvbnN1bWVGYW1pbHlOYW1lKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQor
eworICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgpID09IFN0cmluZ1Rva2VuKQorICAgICAgICBy
ZXR1cm4gQ1NTRm9udEZhbWlseVZhbHVlOjpjcmVhdGUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1do
aXRlc3BhY2UoKS52YWx1ZSgpLnRvU3RyaW5nKCkpOworICAgIGlmIChyYW5nZS5wZWVrKCkudHlw
ZSgpICE9IElkZW50VG9rZW4pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIFN0cmluZyBm
YW1pbHlOYW1lID0gY29uY2F0ZW5hdGVGYW1pbHlOYW1lKHJhbmdlKTsKKyAgICBpZiAoZmFtaWx5
TmFtZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIENTU0Zv
bnRGYW1pbHlWYWx1ZTo6Y3JlYXRlKGZhbWlseU5hbWUpOworfQorCitzdGF0aWMgQ1NTVmFsdWUq
IGNvbnN1bWVHZW5lcmljRmFtaWx5KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAg
IHJldHVybiBjb25zdW1lSWRlbnRSYW5nZShyYW5nZSwgQ1NTVmFsdWVTZXJpZiwgQ1NTVmFsdWVX
ZWJraXRCb2R5KTsKK30KKworc3RhdGljIENTU1ZhbHVlTGlzdCogY29uc3VtZUZvbnRGYW1pbHko
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgIGRvIHsKKyAgICAgICAg
Q1NTVmFsdWUqIHBhcnNlZFZhbHVlID0gY29uc3VtZUdlbmVyaWNGYW1pbHkocmFuZ2UpOworICAg
ICAgICBpZiAocGFyc2VkVmFsdWUpIHsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZCgqcGFyc2Vk
VmFsdWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25z
dW1lRmFtaWx5TmFtZShyYW5nZSk7CisgICAgICAgICAgICBpZiAocGFyc2VkVmFsdWUpIHsKKyAg
ICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJh
bmdlKSk7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVNw
YWNpbmcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2Vy
TW9kZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb3JtYWwpCisg
ICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIC8vIFRPRE8odGltbG9oKTog
YWxsb3cgPHBlcmNlbnRhZ2U+cyBpbiB3b3JkLXNwYWNpbmcuCisgICAgcmV0dXJuIGNvbnN1bWVM
ZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwsIFVuaXRsZXNzUXVpcms6
OkFsbG93KTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lVGFiU2l6ZShDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVJbnRlZ2VyKHJhbmdlLCAwKTsK
KyAgICBpZiAocGFyc2VkVmFsdWUpCisgICAgICAgIHJldHVybiBwYXJzZWRWYWx1ZTsKKyAgICBy
ZXR1cm4gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5l
Z2F0aXZlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lVGV4dFNpemVBZGp1c3QoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sK
KyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICByZXR1
cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NT
VmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1
cm4gY29uc3VtZVBlcmNlbnQocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7Cit9CisKK3N0
YXRpYyBDU1NWYWx1ZSogY29uc3VtZUZvbnRTaXplKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MgPSBV
bml0bGVzc1F1aXJrOjpGb3JiaWQpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID49IENT
U1ZhbHVlWHhTbWFsbCAmJiByYW5nZS5wZWVrKCkuaWQoKSA8PSBDU1NWYWx1ZUxhcmdlcikKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVMZW5n
dGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwg
dW5pdGxlc3MpOworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVMaW5lSGVp
Z2h0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1v
ZGUpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9ybWFsKQorICAg
ICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBsaW5lSGVpZ2h0ID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZl
KTsKKyAgICBpZiAobGluZUhlaWdodCkKKyAgICAgICAgcmV0dXJuIGxpbmVIZWlnaHQ7CisgICAg
cmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVl
UmFuZ2VOb25OZWdhdGl2ZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZUxpc3QqIGNvbnN1bWVSb3Rh
dGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBBU1NFUlQoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6Y3NzSW5kZXBlbmRlbnRUcmFuc2Zvcm1Qcm9wZXJ0aWVzRW5hYmxlZCgp
KTsKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2Vw
YXJhdGVkKCk7CisKKyAgICBDU1NWYWx1ZSogcm90YXRpb24gPSBjb25zdW1lQW5nbGUocmFuZ2Up
OworICAgIGlmICghcm90YXRpb24pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGxpc3Qt
PmFwcGVuZCgqcm90YXRpb24pOworCisgICAgaWYgKHJhbmdlLmF0RW5kKCkpCisgICAgICAgIHJl
dHVybiBsaXN0OworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDM7IGkrKykgeyAvLyAz
IGRpbWVuc2lvbnMgb2Ygcm90YXRpb24KKyAgICAgICAgQ1NTVmFsdWUqIGRpbWVuc2lvbiA9IGNv
bnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBpZiAoIWRpbWVuc2lv
bikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBsaXN0LT5hcHBlbmQoKmRp
bWVuc2lvbik7CisgICAgfQorCisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBDU1NWYWx1
ZUxpc3QqIGNvbnN1bWVTY2FsZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBB
U1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzSW5kZXBlbmRlbnRUcmFuc2Zvcm1Qcm9w
ZXJ0aWVzRW5hYmxlZCgpKTsKKworICAgIENTU1ZhbHVlKiBzY2FsZSA9IGNvbnN1bWVOdW1iZXIo
cmFuZ2UsIFZhbHVlUmFuZ2VBbGwpOworICAgIGlmICghc2NhbGUpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3Bh
Y2VTZXBhcmF0ZWQoKTsKKyAgICBsaXN0LT5hcHBlbmQoKnNjYWxlKTsKKyAgICBzY2FsZSA9IGNv
bnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2VBbGwpOworICAgIGlmIChzY2FsZSkgeworICAg
ICAgICBsaXN0LT5hcHBlbmQoKnNjYWxlKTsKKyAgICAgICAgc2NhbGUgPSBjb25zdW1lTnVtYmVy
KHJhbmdlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgaWYgKHNjYWxlKQorICAgICAgICAgICAg
bGlzdC0+YXBwZW5kKCpzY2FsZSk7CisgICAgfQorCisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0
YXRpYyBDU1NWYWx1ZUxpc3QqIGNvbnN1bWVUcmFuc2xhdGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBBU1NFUlQoUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6Y3NzSW5kZXBlbmRlbnRUcmFuc2Zvcm1Qcm9wZXJ0aWVzRW5hYmxl
ZCgpKTsKKyAgICBDU1NWYWx1ZSogdHJhbnNsYXRlID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChy
YW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKCF0cmFuc2xhdGUp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBsaXN0LT5hcHBlbmQoKnRyYW5z
bGF0ZSk7CisgICAgdHJhbnNsYXRlID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3Nz
UGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKHRyYW5zbGF0ZSkgeworICAgICAg
ICBsaXN0LT5hcHBlbmQoKnRyYW5zbGF0ZSk7CisgICAgICAgIHRyYW5zbGF0ZSA9IGNvbnN1bWVM
ZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBpZiAo
dHJhbnNsYXRlKQorICAgICAgICAgICAgbGlzdC0+YXBwZW5kKCp0cmFuc2xhdGUpOworICAgIH0K
KworICAgIHJldHVybiBsaXN0OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDb3VudGVy
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBpbnQgZGVmYXVsdFZhbHVlKQoreworICAgIGlm
IChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25z
dW1lSWRlbnQocmFuZ2UpOworCisgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0
OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGRvIHsKKyAgICAgICAgQ1NTQ3VzdG9tSWRl
bnRWYWx1ZSogY291bnRlck5hbWUgPSBjb25zdW1lQ3VzdG9tSWRlbnQocmFuZ2UpOworICAgICAg
ICBpZiAoIWNvdW50ZXJOYW1lKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IGludCBpID0gZGVmYXVsdFZhbHVlOworICAgICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWUqIGNv
dW50ZXJWYWx1ZSA9IGNvbnN1bWVJbnRlZ2VyKHJhbmdlKSkKKyAgICAgICAgICAgIGkgPSBjbGFt
cFRvPGludD4oY291bnRlclZhbHVlLT5nZXREb3VibGVWYWx1ZSgpKTsKKyAgICAgICAgbGlzdC0+
YXBwZW5kKCpDU1NWYWx1ZVBhaXI6OmNyZWF0ZShjb3VudGVyTmFtZSwKKyAgICAgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoaSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpJ
bnRlZ2VyKSwKKyAgICAgICAgICAgIENTU1ZhbHVlUGFpcjo6RHJvcElkZW50aWNhbFZhbHVlcykp
OworICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgpKTsKKyAgICByZXR1cm4gbGlzdDsKK30KKwor
c3RhdGljIENTU1ZhbHVlKiBjb25zdW1lUGFnZVNpemUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UpCit7CisgICAgcmV0dXJuIGNvbnN1bWVJZGVudDxDU1NWYWx1ZUEzLCBDU1NWYWx1ZUE0LCBD
U1NWYWx1ZUE1LCBDU1NWYWx1ZUI0LCBDU1NWYWx1ZUI1LCBDU1NWYWx1ZUxlZGdlciwgQ1NTVmFs
dWVMZWdhbCwgQ1NTVmFsdWVMZXR0ZXI+KHJhbmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlTGlz
dCogY29uc3VtZVNpemUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUg
Y3NzUGFyc2VyTW9kZSkKK3sKKyAgICBDU1NWYWx1ZUxpc3QqIHJlc3VsdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9
PSBDU1NWYWx1ZUF1dG8pIHsKKyAgICAgICAgcmVzdWx0LT5hcHBlbmQoKmNvbnN1bWVJZGVudChy
YW5nZSkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGlmIChDU1NWYWx1
ZSogd2lkdGggPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdl
Tm9uTmVnYXRpdmUpKSB7CisgICAgICAgIENTU1ZhbHVlKiBoZWlnaHQgPSBjb25zdW1lTGVuZ3Ro
KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICBy
ZXN1bHQtPmFwcGVuZCgqd2lkdGgpOworICAgICAgICBpZiAoaGVpZ2h0KQorICAgICAgICAgICAg
cmVzdWx0LT5hcHBlbmQoKmhlaWdodCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
CisgICAgQ1NTVmFsdWUqIHBhZ2VTaXplID0gY29uc3VtZVBhZ2VTaXplKHJhbmdlKTsKKyAgICBD
U1NWYWx1ZSogb3JpZW50YXRpb24gPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVQb3J0cmFpdCwgQ1NT
VmFsdWVMYW5kc2NhcGU+KHJhbmdlKTsKKyAgICBpZiAoIXBhZ2VTaXplKQorICAgICAgICBwYWdl
U2l6ZSA9IGNvbnN1bWVQYWdlU2l6ZShyYW5nZSk7CisKKyAgICBpZiAoIW9yaWVudGF0aW9uICYm
ICFwYWdlU2l6ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKHBhZ2VTaXplKQor
ICAgICAgICByZXN1bHQtPmFwcGVuZCgqcGFnZVNpemUpOworICAgIGlmIChvcmllbnRhdGlvbikK
KyAgICAgICAgcmVzdWx0LT5hcHBlbmQoKm9yaWVudGF0aW9uKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVTbmFwSGVpZ2h0KENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHVuaXQgPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBW
YWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgIGlmICghdW5pdCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFj
ZVNlcGFyYXRlZCgpOworICAgIGxpc3QtPmFwcGVuZCgqdW5pdCk7CisKKyAgICBpZiAoQ1NTUHJp
bWl0aXZlVmFsdWUqIHBvc2l0aW9uID0gY29uc3VtZVBvc2l0aXZlSW50ZWdlcihyYW5nZSkpIHsK
KyAgICAgICAgaWYgKHBvc2l0aW9uLT5nZXRJbnRWYWx1ZSgpID4gMTAwKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIGxpc3QtPmFwcGVuZCgqcG9zaXRpb24pOworICAgIH0K
KworICAgIHJldHVybiBsaXN0OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVUZXh0SW5k
ZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1v
ZGUpCit7CisgICAgLy8gWyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiBdICYmIGhhbmdpbmc/ICYm
IGVhY2gtbGluZT8KKyAgICAvLyBLZXl3b3JkcyBvbmx5IGFsbG93ZWQgd2hlbiBjc3MzVGV4dCBp
cyBlbmFibGVkLgorICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
U3BhY2VTZXBhcmF0ZWQoKTsKKworICAgIGJvb2wgaGFzTGVuZ3RoT3JQZXJjZW50YWdlID0gZmFs
c2U7CisgICAgYm9vbCBoYXNFYWNoTGluZSA9IGZhbHNlOworICAgIGJvb2wgaGFzSGFuZ2luZyA9
IGZhbHNlOworCisgICAgZG8geworICAgICAgICBpZiAoIWhhc0xlbmd0aE9yUGVyY2VudGFnZSkg
eworICAgICAgICAgICAgaWYgKENTU1ZhbHVlKiB0ZXh0SW5kZW50ID0gY29uc3VtZUxlbmd0aE9y
UGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCwgVW5pdGxlc3NRdWly
azo6QWxsb3cpKSB7CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKCp0ZXh0SW5kZW50KTsK
KyAgICAgICAgICAgICAgICBoYXNMZW5ndGhPclBlcmNlbnRhZ2UgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzczNUZXh0RW5hYmxlZCgpKSB7CisgICAgICAgICAg
ICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgICAgICAgICBpZiAoIWhh
c0VhY2hMaW5lICYmIGlkID09IENTU1ZhbHVlRWFjaExpbmUpIHsKKyAgICAgICAgICAgICAgICBs
aXN0LT5hcHBlbmQoKmNvbnN1bWVJZGVudChyYW5nZSkpOworICAgICAgICAgICAgICAgIGhhc0Vh
Y2hMaW5lID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmICghaGFzSGFuZ2luZyAmJiBpZCA9PSBDU1NWYWx1ZUhhbmdpbmcpIHsK
KyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoKmNvbnN1bWVJZGVudChyYW5nZSkpOworICAg
ICAgICAgICAgICAgIGhhc0hhbmdpbmcgPSB0cnVlOworICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgpKTsKKworICAgIGlmICghaGFzTGVuZ3RoT3JQZXJjZW50
YWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBsaXN0OworfQorCitz
dGF0aWMgYm9vbCB2YWxpZFdpZHRoT3JIZWlnaHRLZXl3b3JkKENTU1ZhbHVlSUQgaWQsIGNvbnN0
IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgaWYgKGlkID09IENTU1ZhbHVlV2Vi
a2l0TWluQ29udGVudCB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdE1heENvbnRlbnQgfHwgaWQgPT0g
Q1NTVmFsdWVXZWJraXRGaWxsQXZhaWxhYmxlIHx8IGlkID09IENTU1ZhbHVlV2Via2l0Rml0Q29u
dGVudAorICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZU1pbkNvbnRlbnQgfHwgaWQgPT0gQ1NTVmFs
dWVNYXhDb250ZW50IHx8IGlkID09IENTU1ZhbHVlRml0Q29udGVudCkgeworICAgICAgICBpZiAo
Y29udGV4dC51c2VDb3VudGVyKCkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoaWQpIHsKKyAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRNaW5Db250ZW50OgorICAgICAgICAgICAgICAgIGNv
bnRleHQudXNlQ291bnRlcigpLT5jb3VudChVc2VDb3VudGVyOjpDU1NWYWx1ZVByZWZpeGVkTWlu
Q29udGVudCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1Zh
bHVlV2Via2l0TWF4Q29udGVudDoKKyAgICAgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIo
KS0+Y291bnQoVXNlQ291bnRlcjo6Q1NTVmFsdWVQcmVmaXhlZE1heENvbnRlbnQpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEZpbGxBdmFp
bGFibGU6CisgICAgICAgICAgICAgICAgY29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNv
dW50ZXI6OkNTU1ZhbHVlUHJlZml4ZWRGaWxsQXZhaWxhYmxlKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRGaXRDb250ZW50OgorICAgICAg
ICAgICAgICAgIGNvbnRleHQudXNlQ291bnRlcigpLT5jb3VudChVc2VDb3VudGVyOjpDU1NWYWx1
ZVByZWZpeGVkRml0Q29udGVudCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZU1heFdpZHRoT3JIZWlnaHQoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIFVuaXRsZXNzUXVp
cmsgdW5pdGxlc3MgPSBVbml0bGVzc1F1aXJrOjpGb3JiaWQpCit7CisgICAgaWYgKHJhbmdlLnBl
ZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSB8fCB2YWxpZFdpZHRoT3JIZWlnaHRLZXl3b3JkKHJh
bmdlLnBlZWsoKS5pZCgpLCBjb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChy
YW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNvbnRleHQu
bW9kZSgpLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUsIHVuaXRsZXNzKTsKK30KKworc3RhdGljIENT
U1ZhbHVlKiBjb25zdW1lV2lkdGhPckhlaWdodChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Y29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgVW5pdGxlc3NRdWlyayB1bml0bGVzcyA9
IFVuaXRsZXNzUXVpcms6OkZvcmJpZCkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0g
Q1NTVmFsdWVBdXRvIHx8IHZhbGlkV2lkdGhPckhlaWdodEtleXdvcmQocmFuZ2UucGVlaygpLmlk
KCksIGNvbnRleHQpKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICBy
ZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY29udGV4dC5tb2RlKCksIFZhbHVl
UmFuZ2VOb25OZWdhdGl2ZSwgdW5pdGxlc3MpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1
bWVNYXJnaW5Pck9mZnNldChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzKQoreworICAgIGlmIChyYW5n
ZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBjb25zdW1lSWRl
bnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQ
YXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsLCB1bml0bGVzcyk7Cit9CisKK3N0YXRpYyBDU1NQcmlt
aXRpdmVWYWx1ZSogY29uc3VtZUNsaXBDb21wb25lbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygp
LmlkKCkgPT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdl
KTsKKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVS
YW5nZUFsbCwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNv
bnN1bWVDbGlwKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1Bh
cnNlck1vZGUpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBpZiAocmFuZ2UucGVl
aygpLmZ1bmN0aW9uSWQoKSAhPSBDU1NWYWx1ZVJlY3QpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdl
KTsKKyAgICAvLyByZWN0KHQsIHIsIGIsIGwpIHx8IHJlY3QodCByIGIgbCkKKyAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogdG9wID0gY29uc3VtZUNsaXBDb21wb25lbnQoYXJncywgY3NzUGFyc2VyTW9k
ZSk7CisgICAgaWYgKCF0b3ApCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGJvb2wgbmVl
ZHNDb21tYSA9IGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncyk7CisgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHJpZ2h0ID0gY29uc3VtZUNsaXBDb21wb25lbnQoYXJncywgY3NzUGFy
c2VyTW9kZSk7CisgICAgaWYgKCFyaWdodCB8fCAobmVlZHNDb21tYSAmJiAhY29uc3VtZUNvbW1h
SW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBib3R0b20gPSBjb25zdW1lQ2xpcENvbXBvbmVudChhcmdzLCBj
c3NQYXJzZXJNb2RlKTsKKyAgICBpZiAoIWJvdHRvbSB8fCAobmVlZHNDb21tYSAmJiAhY29uc3Vt
ZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBsZWZ0ID0gY29uc3VtZUNsaXBDb21wb25lbnQoYXJn
cywgY3NzUGFyc2VyTW9kZSk7CisgICAgaWYgKCFsZWZ0IHx8ICFhcmdzLmF0RW5kKCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBDU1NRdWFkVmFsdWU6OmNyZWF0ZSh0b3As
IHJpZ2h0LCBib3R0b20sIGxlZnQsIENTU1F1YWRWYWx1ZTo6U2VyaWFsaXplQXNSZWN0KTsKK30K
Kworc3RhdGljIGJvb2wgY29uc3VtZVBhbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NT
VmFsdWUqJiBwYW5YLCBDU1NWYWx1ZSomIHBhblkpCit7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJh
bmdlLnBlZWsoKS5pZCgpOworICAgIGlmICgoaWQgPT0gQ1NTVmFsdWVQYW5YIHx8IGlkID09IENT
U1ZhbHVlUGFuUmlnaHQgfHwgaWQgPT0gQ1NTVmFsdWVQYW5MZWZ0KSAmJiAhcGFuWCkgeworICAg
ICAgICBpZiAoaWQgIT0gQ1NTVmFsdWVQYW5YICYmICFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpj
c3NUb3VjaEFjdGlvblBhbkRpcmVjdGlvbnNFbmFibGVkKCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHBhblggPSBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIH0gZWxzZSBp
ZiAoKGlkID09IENTU1ZhbHVlUGFuWSB8fCBpZCA9PSBDU1NWYWx1ZVBhbkRvd24gfHwgaWQgPT0g
Q1NTVmFsdWVQYW5VcCkgJiYgIXBhblkpIHsKKyAgICAgICAgaWYgKGlkICE9IENTU1ZhbHVlUGFu
WSAmJiAhUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzVG91Y2hBY3Rpb25QYW5EaXJlY3Rpb25z
RW5hYmxlZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBwYW5ZID0gY29u
c3VtZUlkZW50KHJhbmdlKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVUb3Vj
aEFjdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NWYWx1ZUxpc3Qq
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgQ1NTVmFs
dWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8g
fHwgaWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlTWFuaXB1bGF0aW9uKSB7Cisg
ICAgICAgIGxpc3QtPmFwcGVuZCgqY29uc3VtZUlkZW50KHJhbmdlKSk7CisgICAgICAgIHJldHVy
biBsaXN0OworICAgIH0KKworICAgIENTU1ZhbHVlKiBwYW5YID0gbnVsbHB0cjsKKyAgICBDU1NW
YWx1ZSogcGFuWSA9IG51bGxwdHI7CisgICAgaWYgKCFjb25zdW1lUGFuKHJhbmdlLCBwYW5YLCBw
YW5ZKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFyYW5nZS5hdEVuZCgpICYm
ICFjb25zdW1lUGFuKHJhbmdlLCBwYW5YLCBwYW5ZKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBpZiAocGFuWCkKKyAgICAgICAgbGlzdC0+YXBwZW5kKCpwYW5YKTsKKyAgICBpZiAo
cGFuWSkKKyAgICAgICAgbGlzdC0+YXBwZW5kKCpwYW5ZKTsKKyAgICByZXR1cm4gbGlzdDsKK30K
Kworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lTGluZUNsYW1wKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgpICE9IFBlcmNl
bnRhZ2VUb2tlbiAmJiByYW5nZS5wZWVrKCkudHlwZSgpICE9IE51bWJlclRva2VuKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogY2xhbXBWYWx1ZSA9IGNv
bnN1bWVQZXJjZW50KHJhbmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgIGlmIChjbGFt
cFZhbHVlKQorICAgICAgICByZXR1cm4gY2xhbXBWYWx1ZTsKKyAgICAvLyBXaGVuIHNwZWNpZnlp
bmcgbnVtYmVyIG9mIGxpbmVzLCBkb24ndCBhbGxvdyAwIGFzIGEgdmFsaWQgdmFsdWUuCisgICAg
cmV0dXJuIGNvbnN1bWVQb3NpdGl2ZUludGVnZXIocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFs
dWUqIGNvbnN1bWVMb2NhbGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYg
KHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVTdHJpbmcocmFuZ2UpOworfQorCitz
dGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDb2x1bW5XaWR0aChDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBdXRvKQorICAg
ICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICAvLyBBbHdheXMgcGFyc2UgbGVu
Z3RocyBpbiBzdHJpY3QgbW9kZSBoZXJlLCBzaW5jZSBpdCB3b3VsZCBiZSBhbWJpZ3VvdXMgb3Ro
ZXJ3aXNlIHdoZW4gdXNlZCBpbgorICAgIC8vIHRoZSAnY29sdW1ucycgc2hvcnRoYW5kIHByb3Bl
cnR5LgorICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjb2x1bW5XaWR0aCA9IGNvbnN1bWVMZW5ndGgo
cmFuZ2UsIEhUTUxTdGFuZGFyZE1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgaWYg
KCFjb2x1bW5XaWR0aCB8fCAoIWNvbHVtbldpZHRoLT5pc0NhbGN1bGF0ZWQoKSAmJiBjb2x1bW5X
aWR0aC0+Z2V0RG91YmxlVmFsdWUoKSA9PSAwKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgcmV0dXJuIGNvbHVtbldpZHRoOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDb2x1
bW5Db3VudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVl
aygpLmlkKCkgPT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJh
bmdlKTsKKyAgICByZXR1cm4gY29uc3VtZVBvc2l0aXZlSW50ZWdlcihyYW5nZSk7Cit9CisKK3N0
YXRpYyBDU1NWYWx1ZSogY29uc3VtZUNvbHVtbkdhcChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCku
aWQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5n
ZSk7CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVl
UmFuZ2VOb25OZWdhdGl2ZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUNvbHVtblNw
YW4oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgcmV0dXJuIGNvbnN1bWVJZGVu
dDxDU1NWYWx1ZUFsbCwgQ1NTVmFsdWVOb25lPihyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1
ZSogY29uc3VtZVpvb20oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNl
ckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0g
cmFuZ2UucGVlaygpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB6b29tID0gbnVsbHB0cjsKKyAg
ICBpZiAodG9rZW4udHlwZSgpID09IElkZW50VG9rZW4pIHsKKyAgICAgICAgem9vbSA9IGNvbnN1
bWVJZGVudDxDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVSZXNldCwgQ1NTVmFsdWVEb2N1bWVudD4o
cmFuZ2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIHpvb20gPSBjb25zdW1lUGVyY2VudChyYW5n
ZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgaWYgKCF6b29tKQorICAgICAgICAg
ICAgem9vbSA9IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7Cisg
ICAgfQorICAgIGlmICh6b29tICYmIGNvbnRleHQudXNlQ291bnRlcigpCisgICAgICAgICYmICEo
dG9rZW4uaWQoKSA9PSBDU1NWYWx1ZU5vcm1hbAorICAgICAgICAgICAgfHwgKHRva2VuLnR5cGUo
KSA9PSBOdW1iZXJUb2tlbiAmJiB6b29tLT5nZXREb3VibGVWYWx1ZSgpID09IDEpCisgICAgICAg
ICAgICB8fCAodG9rZW4udHlwZSgpID09IFBlcmNlbnRhZ2VUb2tlbiAmJiB6b29tLT5nZXREb3Vi
bGVWYWx1ZSgpID09IDEwMCkpKQorICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQo
VXNlQ291bnRlcjo6Q1NTWm9vbU5vdEVxdWFsVG9PbmUpOworICAgIHJldHVybiB6b29tOworfQor
CitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVBbmltYXRpb25JdGVyYXRpb25Db3VudChDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NT
VmFsdWVJbmZpbml0ZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAg
cmV0dXJuIGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7Cit9CisK
K3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUFuaW1hdGlvbk5hbWUoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIGJvb2wgYWxsb3dRdW90
ZWROYW1lKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisg
ICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgaWYgKGFsbG93UXVvdGVk
TmFtZSAmJiByYW5nZS5wZWVrKCkudHlwZSgpID09IFN0cmluZ1Rva2VuKSB7CisgICAgICAgIC8v
IExlZ2FjeSBzdXBwb3J0IGZvciBzdHJpbmdzIGluIHByZWZpeGVkIGFuaW1hdGlvbnMuCisgICAg
ICAgIGlmIChjb250ZXh0LnVzZUNvdW50ZXIoKSkKKyAgICAgICAgICAgIGNvbnRleHQudXNlQ291
bnRlcigpLT5jb3VudChVc2VDb3VudGVyOjpRdW90ZWRBbmltYXRpb25OYW1lKTsKKworICAgICAg
ICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hp
dGVzcGFjZSgpOworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0b2tlbi52YWx1
ZSgpLCAibm9uZSIpKQorICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSk7CisgICAgICAgIHJldHVybiBDU1NDdXN0b21JZGVu
dFZhbHVlOjpjcmVhdGUodG9rZW4udmFsdWUoKS50b1N0cmluZygpKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gY29uc3VtZUN1c3RvbUlkZW50KHJhbmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lVHJhbnNpdGlvblByb3BlcnR5KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQorewor
ICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICBpZiAo
dG9rZW4udHlwZSgpICE9IElkZW50VG9rZW4pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IGlmICh0b2tlbi5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJ
ZGVudChyYW5nZSk7CisKKyAgICBpZiAoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSA9IHRva2VuLnBh
cnNlQXNVbnJlc29sdmVkQ1NTUHJvcGVydHlJRCgpKSB7CisgICAgICAgIEFTU0VSVChDU1NQcm9w
ZXJ0eU1ldGFkYXRhOjppc0VuYWJsZWRQcm9wZXJ0eShwcm9wZXJ0eSkpOworICAgICAgICByYW5n
ZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICByZXR1cm4gQ1NTQ3VzdG9t
SWRlbnRWYWx1ZTo6Y3JlYXRlKHByb3BlcnR5KTsKKyAgICB9CisgICAgcmV0dXJuIGNvbnN1bWVD
dXN0b21JZGVudChyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVN0ZXBzKENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIEFTU0VSVChyYW5nZS5wZWVrKCkuZnVu
Y3Rpb25JZCgpID09IENTU1ZhbHVlU3RlcHMpOworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgcmFu
Z2VDb3B5ID0gcmFuZ2U7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1
bmN0aW9uKHJhbmdlQ29weSk7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogc3RlcHMgPSBjb25z
dW1lUG9zaXRpdmVJbnRlZ2VyKGFyZ3MpOworICAgIGlmICghc3RlcHMpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgU3RlcHNUaW1pbmdGdW5jdGlvbjo6U3RlcFBvc2l0aW9uIHBvc2l0
aW9uID0gU3RlcHNUaW1pbmdGdW5jdGlvbjo6U3RlcFBvc2l0aW9uOjpFTkQ7CisgICAgaWYgKGNv
bnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpIHsKKyAgICAgICAgc3dpdGNoIChh
cmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKSkgeworICAgICAgICBjYXNlIENT
U1ZhbHVlTWlkZGxlOgorICAgICAgICAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3
ZWJBbmltYXRpb25zQVBJRW5hYmxlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICAgICAgcG9zaXRpb24gPSBTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVwUG9zaXRp
b246Ok1JRERMRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1ZhbHVlU3Rh
cnQ6CisgICAgICAgICAgICBwb3NpdGlvbiA9IFN0ZXBzVGltaW5nRnVuY3Rpb246OlN0ZXBQb3Np
dGlvbjo6U1RBUlQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUVu
ZDoKKyAgICAgICAgICAgIHBvc2l0aW9uID0gU3RlcHNUaW1pbmdGdW5jdGlvbjo6U3RlcFBvc2l0
aW9uOjpFTkQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFhcmdzLmF0
RW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmFuZ2UgPSByYW5nZUNvcHk7
CisgICAgcmV0dXJuIENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKHN0ZXBzLT5n
ZXRJbnRWYWx1ZSgpLCBwb3NpdGlvbik7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUN1
YmljQmV6aWVyKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIEFTU0VSVChyYW5n
ZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlQ3ViaWNCZXppZXIpOworICAgIENTU1Bh
cnNlclRva2VuUmFuZ2UgcmFuZ2VDb3B5ID0gcmFuZ2U7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5n
ZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlQ29weSk7CisKKyAgICBkb3VibGUgeDEsIHkx
LCB4MiwgeTI7CisgICAgaWYgKGNvbnN1bWVOdW1iZXJSYXcoYXJncywgeDEpCisgICAgICAgICYm
IHgxID49IDAgJiYgeDEgPD0gMQorICAgICAgICAmJiBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0
ZXNwYWNlKGFyZ3MpCisgICAgICAgICYmIGNvbnN1bWVOdW1iZXJSYXcoYXJncywgeTEpCisgICAg
ICAgICYmIGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykKKyAgICAgICAgJiYg
Y29uc3VtZU51bWJlclJhdyhhcmdzLCB4MikKKyAgICAgICAgJiYgeDIgPj0gMCAmJiB4MiA8PSAx
CisgICAgICAgICYmIGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykKKyAgICAg
ICAgJiYgY29uc3VtZU51bWJlclJhdyhhcmdzLCB5MikKKyAgICAgICAgJiYgYXJncy5hdEVuZCgp
KSB7CisgICAgICAgIHJhbmdlID0gcmFuZ2VDb3B5OworICAgICAgICByZXR1cm4gQ1NTQ3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUoeDEsIHkxLCB4MiwgeTIpOworICAgIH0K
KworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVBbmlt
YXRpb25UaW1pbmdGdW5jdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBD
U1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgaWYgKGlkID09IENTU1ZhbHVl
RWFzZSB8fCBpZCA9PSBDU1NWYWx1ZUxpbmVhciB8fCBpZCA9PSBDU1NWYWx1ZUVhc2VJbgorICAg
ICAgICB8fCBpZCA9PSBDU1NWYWx1ZUVhc2VPdXQgfHwgaWQgPT0gQ1NTVmFsdWVFYXNlSW5PdXQg
fHwgaWQgPT0gQ1NTVmFsdWVTdGVwU3RhcnQKKyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVTdGVw
RW5kIHx8IGlkID09IENTU1ZhbHVlU3RlcE1pZGRsZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJ
ZGVudChyYW5nZSk7CisKKyAgICBDU1NWYWx1ZUlEIGZ1bmN0aW9uID0gcmFuZ2UucGVlaygpLmZ1
bmN0aW9uSWQoKTsKKyAgICBpZiAoZnVuY3Rpb24gPT0gQ1NTVmFsdWVTdGVwcykKKyAgICAgICAg
cmV0dXJuIGNvbnN1bWVTdGVwcyhyYW5nZSk7CisgICAgaWYgKGZ1bmN0aW9uID09IENTU1ZhbHVl
Q3ViaWNCZXppZXIpCisgICAgICAgIHJldHVybiBjb25zdW1lQ3ViaWNCZXppZXIocmFuZ2UpOwor
ICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVBbmltYXRp
b25WYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgYm9vbCB1c2VMZWdhY3lQYXJzaW5n
KQoreworICAgIHN3aXRjaCAocHJvcGVydHkpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0
aW9uRGVsYXk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25EZWxheToKKyAgICAgICAg
cmV0dXJuIGNvbnN1bWVUaW1lKHJhbmdlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBjYXNlIENTU1By
b3BlcnR5QW5pbWF0aW9uRGlyZWN0aW9uOgorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50PENT
U1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZUFsdGVybmF0ZSwgQ1NTVmFsdWVSZXZlcnNlLCBDU1NWYWx1
ZUFsdGVybmF0ZVJldmVyc2U+KHJhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9u
RHVyYXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25EdXJhdGlvbjoKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVUaW1lKHJhbmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25GaWxsTW9kZToKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVJZGVudDxDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlRm9yd2FyZHMsIENTU1ZhbHVlQmFja3dhcmRz
LCBDU1NWYWx1ZUJvdGg+KHJhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uSXRl
cmF0aW9uQ291bnQ6CisgICAgICAgIHJldHVybiBjb25zdW1lQW5pbWF0aW9uSXRlcmF0aW9uQ291
bnQocmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25OYW1lOgorICAgICAgICBy
ZXR1cm4gY29uc3VtZUFuaW1hdGlvbk5hbWUocmFuZ2UsIGNvbnRleHQsIHVzZUxlZ2FjeVBhcnNp
bmcpOworICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25QbGF5U3RhdGU6CisgICAgICAgIHJl
dHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVSdW5uaW5nLCBDU1NWYWx1ZVBhdXNlZD4ocmFuZ2Up
OworICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uUHJvcGVydHk6CisgICAgICAgIHJldHVy
biBjb25zdW1lVHJhbnNpdGlvblByb3BlcnR5KHJhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
QW5pbWF0aW9uVGltaW5nRnVuY3Rpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25U
aW1pbmdGdW5jdGlvbjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVBbmltYXRpb25UaW1pbmdGdW5j
dGlvbihyYW5nZSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KK30KKworc3RhdGljIGJvb2wgaXNWYWxp
ZEFuaW1hdGlvblByb3BlcnR5TGlzdChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBDU1NW
YWx1ZUxpc3QmIHZhbHVlTGlzdCkKK3sKKyAgICBpZiAocHJvcGVydHkgIT0gQ1NTUHJvcGVydHlU
cmFuc2l0aW9uUHJvcGVydHkgfHwgdmFsdWVMaXN0Lmxlbmd0aCgpIDwgMikKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgZm9yIChhdXRvJiB2YWx1ZSA6IHZhbHVlTGlzdCkgeworICAgICAgICBp
ZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSAmJiB0b0NTU1ByaW1pdGl2ZVZhbHVlKCp2YWx1
ZSkuaXNWYWx1ZUlEKCkKKyAgICAgICAgICAgICYmIHRvQ1NTUHJpbWl0aXZlVmFsdWUoKnZhbHVl
KS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIENTU1ZhbHVlTGlzdCogY29u
c3VtZUFuaW1hdGlvblByb3BlcnR5TGlzdChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgYm9v
bCB1c2VMZWdhY3lQYXJzaW5nKQoreworICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICBkbyB7CisgICAgICAgIENTU1ZhbHVl
KiB2YWx1ZSA9IGNvbnN1bWVBbmltYXRpb25WYWx1ZShwcm9wZXJ0eSwgcmFuZ2UsIGNvbnRleHQs
IHVzZUxlZ2FjeVBhcnNpbmcpOworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIGxpc3QtPmFwcGVuZCgqdmFsdWUpOworICAgIH0gd2hpbGUg
KGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKTsKKyAgICBpZiAoIWlzVmFs
aWRBbmltYXRpb25Qcm9wZXJ0eUxpc3QocHJvcGVydHksICpsaXN0KSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgQVNTRVJUKGxpc3QtPmxlbmd0aCgpKTsKKyAgICByZXR1cm4gbGlzdDsK
K30KKworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUFuaW1hdGlvblNob3J0aGFuZChj
b25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQsIGJvb2wgdXNlTGVnYWN5UGFy
c2luZywgYm9vbCBpbXBvcnRhbnQpCit7CisgICAgY29uc3QgdW5zaWduZWQgbG9uZ2hhbmRDb3Vu
dCA9IHNob3J0aGFuZC5sZW5ndGgoKTsKKyAgICBDU1NWYWx1ZUxpc3QqIGxvbmdoYW5kc1s4XTsK
KyAgICBBU1NFUlQobG9uZ2hhbmRDb3VudCA8PSA4KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxvbmdoYW5kQ291bnQ7ICsraSkKKyAgICAgICAgbG9uZ2hhbmRzW2ldID0gQ1NTVmFsdWVM
aXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworCisgICAgZG8geworICAgICAgICBib29sIHBh
cnNlZExvbmdoYW5kWzhdID0geyBmYWxzZSB9OworICAgICAgICBkbyB7CisgICAgICAgICAgICBi
b29sIGZvdW5kUHJvcGVydHkgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbG9uZ2hhbmRDb3VudDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKHBhcnNlZExv
bmdoYW5kW2ldKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAg
ICAgIGlmIChDU1NWYWx1ZSogdmFsdWUgPSBjb25zdW1lQW5pbWF0aW9uVmFsdWUoc2hvcnRoYW5k
LnByb3BlcnRpZXMoKVtpXSwgbV9yYW5nZSwgbV9jb250ZXh0LCB1c2VMZWdhY3lQYXJzaW5nKSkg
eworICAgICAgICAgICAgICAgICAgICBwYXJzZWRMb25naGFuZFtpXSA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgIGZvdW5kUHJvcGVydHkgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBs
b25naGFuZHNbaV0tPmFwcGVuZCgqdmFsdWUpOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWZvdW5k
UHJvcGVydHkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IHdoaWxl
ICghbV9yYW5nZS5hdEVuZCgpICYmIG1fcmFuZ2UucGVlaygpLnR5cGUoKSAhPSBDb21tYVRva2Vu
KTsKKworICAgICAgICAvLyBUT0RPKHRpbWxvaCk6IFRoaXMgd2lsbCBtYWtlIGludmFsaWQgbG9u
Z2hhbmRzLCBzZWUgY3JidWcuY29tLzM4NjQ1OQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxvbmdoYW5kQ291bnQ7ICsraSkgeworICAgICAgICAgICAgaWYgKCFwYXJzZWRMb25naGFu
ZFtpXSkKKyAgICAgICAgICAgICAgICBsb25naGFuZHNbaV0tPmFwcGVuZCgqQ1NTSW5pdGlhbFZh
bHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpKTsKKyAgICAgICAgICAgIHBhcnNlZExvbmdoYW5k
W2ldID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRp
bmdXaGl0ZXNwYWNlKG1fcmFuZ2UpKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbG9u
Z2hhbmRDb3VudDsgKytpKSB7CisgICAgICAgIGlmICghaXNWYWxpZEFuaW1hdGlvblByb3BlcnR5
TGlzdChzaG9ydGhhbmQucHJvcGVydGllcygpW2ldLCAqbG9uZ2hhbmRzW2ldKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxv
bmdoYW5kQ291bnQ7ICsraSkKKyAgICAgICAgYWRkUHJvcGVydHkoc2hvcnRoYW5kLnByb3BlcnRp
ZXMoKVtpXSwgc2hvcnRoYW5kLmlkKCksICpsb25naGFuZHNbaV0sIGltcG9ydGFudCk7CisKKyAg
ICByZXR1cm4gbV9yYW5nZS5hdEVuZCgpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVa
SW5kZXgoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWso
KS5pZCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5n
ZSk7CisgICAgcmV0dXJuIGNvbnN1bWVJbnRlZ2VyKHJhbmdlKTsKK30KKworc3RhdGljIENTU1No
YWRvd1ZhbHVlKiBwYXJzZVNpbmdsZVNoYWRvdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Q1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBib29sIGFsbG93SW5zZXQsIGJvb2wgYWxsb3dT
cHJlYWQpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHN0eWxlID0gbnVsbHB0cjsKKyAgICBD
U1NWYWx1ZSogY29sb3IgPSBudWxscHRyOworCisgICAgaWYgKHJhbmdlLmF0RW5kKCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1
ZUluc2V0KSB7CisgICAgICAgIGlmICghYWxsb3dJbnNldCkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICBzdHlsZSA9IGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgfQorICAg
IGNvbG9yID0gY29uc3VtZUNvbG9yKHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKKworICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBob3Jpem9udGFsT2Zmc2V0ID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY3Nz
UGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKCFob3Jpem9udGFsT2Zmc2V0KQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2ZXJ0aWNh
bE9mZnNldCA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VB
bGwpOworICAgIGlmICghdmVydGljYWxPZmZzZXQpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGJsdXJSYWRpdXMgPSBjb25zdW1lTGVuZ3RoKHJhbmdl
LCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSog
c3ByZWFkRGlzdGFuY2UgPSBudWxscHRyOworICAgIGlmIChibHVyUmFkaXVzKSB7CisgICAgICAg
IC8vIEJsdXIgcmFkaXVzIG11c3QgYmUgbm9uLW5lZ2F0aXZlLgorICAgICAgICBpZiAoYmx1clJh
ZGl1cy0+Z2V0RG91YmxlVmFsdWUoKSA8IDApCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgaWYgKGFsbG93U3ByZWFkKQorICAgICAgICAgICAgc3ByZWFkRGlzdGFuY2UgPSBj
b25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICB9
CisKKyAgICBpZiAoIXJhbmdlLmF0RW5kKCkpIHsKKyAgICAgICAgaWYgKCFjb2xvcikKKyAgICAg
ICAgICAgIGNvbG9yID0gY29uc3VtZUNvbG9yKHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKKyAgICAg
ICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlSW5zZXQpIHsKKyAgICAgICAgICAg
IGlmICghYWxsb3dJbnNldCB8fCBzdHlsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgICAgIHN0eWxlID0gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gQ1NTU2hhZG93VmFsdWU6OmNyZWF0ZShob3Jpem9udGFsT2Zmc2V0
LCB2ZXJ0aWNhbE9mZnNldCwgYmx1clJhZGl1cywKKyAgICAgICAgc3ByZWFkRGlzdGFuY2UsIHN0
eWxlLCBjb2xvcik7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVNoYWRvdyhDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBib29sIGlz
Qm94U2hhZG93UHJvcGVydHkpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1Zh
bHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBDU1NW
YWx1ZUxpc3QqIHNoYWRvd1ZhbHVlTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBh
cmF0ZWQoKTsKKyAgICBkbyB7CisgICAgICAgIGlmIChDU1NTaGFkb3dWYWx1ZSogc2hhZG93VmFs
dWUgPSBwYXJzZVNpbmdsZVNoYWRvdyhyYW5nZSwgY3NzUGFyc2VyTW9kZSwgaXNCb3hTaGFkb3dQ
cm9wZXJ0eSwgaXNCb3hTaGFkb3dQcm9wZXJ0eSkpCisgICAgICAgICAgICBzaGFkb3dWYWx1ZUxp
c3QtPmFwcGVuZCgqc2hhZG93VmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNl
KHJhbmdlKSk7CisgICAgcmV0dXJuIHNoYWRvd1ZhbHVlTGlzdDsKK30KKworc3RhdGljIENTU0Z1
bmN0aW9uVmFsdWUqIGNvbnN1bWVGaWx0ZXJGdW5jdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBDU1NWYWx1ZUlE
IGZpbHRlclR5cGUgPSByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpOworICAgIGlmIChmaWx0ZXJU
eXBlIDwgQ1NTVmFsdWVJbnZlcnQgfHwgZmlsdGVyVHlwZSA+IENTU1ZhbHVlRHJvcFNoYWRvdykK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0g
Y29uc3VtZUZ1bmN0aW9uKHJhbmdlKTsKKyAgICBDU1NGdW5jdGlvblZhbHVlKiBmaWx0ZXJWYWx1
ZSA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmaWx0ZXJUeXBlKTsKKyAgICBDU1NWYWx1ZSog
cGFyc2VkVmFsdWUgPSBudWxscHRyOworCisgICAgaWYgKGZpbHRlclR5cGUgPT0gQ1NTVmFsdWVE
cm9wU2hhZG93KSB7CisgICAgICAgIHBhcnNlZFZhbHVlID0gcGFyc2VTaW5nbGVTaGFkb3coYXJn
cywgY29udGV4dC5tb2RlKCksIGZhbHNlLCBmYWxzZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
aWYgKGFyZ3MuYXRFbmQoKSkgeworICAgICAgICAgICAgaWYgKGNvbnRleHQudXNlQ291bnRlcigp
KQorICAgICAgICAgICAgICAgIGNvbnRleHQudXNlQ291bnRlcigpLT5jb3VudChVc2VDb3VudGVy
OjpDU1NGaWx0ZXJGdW5jdGlvbk5vQXJndW1lbnRzKTsKKyAgICAgICAgICAgIHJldHVybiBmaWx0
ZXJWYWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZmlsdGVyVHlwZSA9PSBDU1NWYWx1ZUJy
aWdodG5lc3MpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FIChjcmJ1Zy5jb20vMzk3MDYxKTogU3Vw
cG9ydCBjYWxjIGV4cHJlc3Npb25zIGxpa2UgY2FsYygxMCUgKyAwLjUpCisgICAgICAgICAgICBw
YXJzZWRWYWx1ZSA9IGNvbnN1bWVQZXJjZW50KGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAgICAg
ICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkKKyAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNv
bnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIH0gZWxzZSBpZiAoZmls
dGVyVHlwZSA9PSBDU1NWYWx1ZUh1ZVJvdGF0ZSkgeworICAgICAgICAgICAgcGFyc2VkVmFsdWUg
PSBjb25zdW1lQW5nbGUoYXJncyk7CisgICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyVHlwZSA9PSBD
U1NWYWx1ZUJsdXIpIHsKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUxlbmd0aChh
cmdzLCBIVE1MU3RhbmRhcmRNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgLy8gRklYTUUgKGNyYnVnLmNvbS8zOTcwNjEpOiBTdXBwb3J0
IGNhbGMgZXhwcmVzc2lvbnMgbGlrZSBjYWxjKDEwJSArIDAuNSkKKyAgICAgICAgICAgIHBhcnNl
ZFZhbHVlID0gY29uc3VtZVBlcmNlbnQoYXJncywgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAg
ICAgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUg
PSBjb25zdW1lTnVtYmVyKGFyZ3MsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgICAg
ICBpZiAocGFyc2VkVmFsdWUgJiYgZmlsdGVyVHlwZSAhPSBDU1NWYWx1ZVNhdHVyYXRlICYmIGZp
bHRlclR5cGUgIT0gQ1NTVmFsdWVDb250cmFzdCkgeworICAgICAgICAgICAgICAgIGJvb2wgaXNQ
ZXJjZW50YWdlID0gdG9DU1NQcmltaXRpdmVWYWx1ZShwYXJzZWRWYWx1ZSktPmlzUGVyY2VudGFn
ZSgpOworICAgICAgICAgICAgICAgIGRvdWJsZSBtYXhBbGxvd2VkID0gaXNQZXJjZW50YWdlID8g
MTAwLjAgOiAxLjA7CisgICAgICAgICAgICAgICAgaWYgKHRvQ1NTUHJpbWl0aXZlVmFsdWUocGFy
c2VkVmFsdWUpLT5nZXREb3VibGVWYWx1ZSgpID4gbWF4QWxsb3dlZCkgeworICAgICAgICAgICAg
ICAgICAgICBwYXJzZWRWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoCisgICAgICAg
ICAgICAgICAgICAgICAgICBtYXhBbGxvd2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgaXNQ
ZXJjZW50YWdlID8gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQZXJjZW50YWdlIDogQ1NT
UHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpOdW1iZXIpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIXBhcnNlZFZhbHVlIHx8ICFh
cmdzLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGZpbHRlclZhbHVlLT5h
cHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICByZXR1cm4gZmlsdGVyVmFsdWU7Cit9CisKK3N0YXRp
YyBDU1NWYWx1ZSogY29uc3VtZUZpbHRlcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29u
c3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlk
KCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsK
KworICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKKyAgICBkbyB7CisgICAgICAgIENTU1ZhbHVlKiBmaWx0ZXJWYWx1ZSA9IGNvbnN1
bWVVcmwocmFuZ2UpOworICAgICAgICBpZiAoIWZpbHRlclZhbHVlKSB7CisgICAgICAgICAgICBm
aWx0ZXJWYWx1ZSA9IGNvbnN1bWVGaWx0ZXJGdW5jdGlvbihyYW5nZSwgY29udGV4dCk7CisgICAg
ICAgICAgICBpZiAoIWZpbHRlclZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICB9CisgICAgICAgIGxpc3QtPmFwcGVuZCgqZmlsdGVyVmFsdWUpOworICAgIH0g
d2hpbGUgKCFyYW5nZS5hdEVuZCgpKTsKKyAgICByZXR1cm4gbGlzdDsKK30KKworc3RhdGljIENT
U1ZhbHVlKiBjb25zdW1lVGV4dERlY29yYXRpb25MaW5lKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlKQoreworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsK
KworICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSog
aWRlbnQgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVCbGluaywgQ1NTVmFsdWVVbmRlcmxpbmUsIENT
U1ZhbHVlT3ZlcmxpbmUsIENTU1ZhbHVlTGluZVRocm91Z2g+KHJhbmdlKTsKKyAgICAgICAgaWYg
KCFpZGVudCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAobGlzdC0+aGFzVmFsdWUo
KmlkZW50KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBsaXN0LT5hcHBl
bmQoKmlkZW50KTsKKyAgICB9CisKKyAgICBpZiAoIWxpc3QtPmxlbmd0aCgpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbGlzdDsKK30KKworLy8gbm9uZSB8IHN0cmljdCB8
IGNvbnRlbnQgfCBbIGxheW91dCB8fCBzdHlsZSB8fCBwYWludCB8fCBzaXplIF0KK3N0YXRpYyBD
U1NWYWx1ZSogY29uc3VtZUNvbnRhaW4oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7Cisg
ICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgIGlmIChpZCA9PSBDU1NW
YWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgQ1NT
VmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwor
ICAgIGlmIChpZCA9PSBDU1NWYWx1ZVN0cmljdCB8fCBpZCA9PSBDU1NWYWx1ZUNvbnRlbnQpIHsK
KyAgICAgICAgbGlzdC0+YXBwZW5kKCpjb25zdW1lSWRlbnQocmFuZ2UpKTsKKyAgICAgICAgcmV0
dXJuIGxpc3Q7CisgICAgfQorICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBpZGVudCA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZVBhaW50LCBDU1NWYWx1ZUxheW91
dCwgQ1NTVmFsdWVTdHlsZSwgQ1NTVmFsdWVTaXplPihyYW5nZSk7CisgICAgICAgIGlmICghaWRl
bnQpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGxpc3QtPmhhc1ZhbHVlKCppZGVu
dCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgbGlzdC0+YXBwZW5kKCpp
ZGVudCk7CisgICAgfQorCisgICAgaWYgKCFsaXN0LT5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3Vt
ZVBhdGgoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgLy8gRklYTUU6IEFkZCBz
dXBwb3J0IGZvciA8dXJsPiwgPGJhc2ljLXNoYXBlPiwgPGdlb21ldHJ5LWJveD4uCisgICAgaWYg
KHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgIT0gQ1NTVmFsdWVQYXRoKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgZnVuY3Rpb25SYW5nZSA9IHJh
bmdlOworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgZnVuY3Rpb25BcmdzID0gY29uc3VtZUZ1bmN0
aW9uKGZ1bmN0aW9uUmFuZ2UpOworCisgICAgaWYgKGZ1bmN0aW9uQXJncy5wZWVrKCkudHlwZSgp
ICE9IFN0cmluZ1Rva2VuKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBTdHJpbmcgcGF0
aFN0cmluZyA9IGZ1bmN0aW9uQXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVl
KCkudG9TdHJpbmcoKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdQYXRoQnl0ZVN0cmVhbT4g
Ynl0ZVN0cmVhbSA9IFNWR1BhdGhCeXRlU3RyZWFtOjpjcmVhdGUoKTsKKyAgICBpZiAoYnVpbGRC
eXRlU3RyZWFtRnJvbVN0cmluZyhwYXRoU3RyaW5nLCAqYnl0ZVN0cmVhbSkgIT0gU1ZHUGFyc2VT
dGF0dXM6Ok5vRXJyb3IKKyAgICAgICAgfHwgIWZ1bmN0aW9uQXJncy5hdEVuZCgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJhbmdlID0gZnVuY3Rpb25SYW5nZTsKKyAgICBpZiAo
Ynl0ZVN0cmVhbS0+aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKTsKKyAgICByZXR1cm4gQ1NTUGF0aFZhbHVl
OjpjcmVhdGUoc3RkOjptb3ZlKGJ5dGVTdHJlYW0pKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lUGF0aE9yTm9uZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NW
YWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgaWYgKGlkID09IENTU1ZhbHVlTm9u
ZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICByZXR1cm4gY29u
c3VtZVBhdGgocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVNb3Rpb25Sb3Rh
dGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NWYWx1ZSogYW5nbGUg
PSBjb25zdW1lQW5nbGUocmFuZ2UpOworICAgIENTU1ZhbHVlKiBrZXl3b3JkID0gY29uc3VtZUlk
ZW50PENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVSZXZlcnNlPihyYW5nZSk7CisgICAgaWYgKCFhbmds
ZSAmJiAha2V5d29yZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIWFuZ2xl
KQorICAgICAgICBhbmdsZSA9IGNvbnN1bWVBbmdsZShyYW5nZSk7CisKKyAgICBDU1NWYWx1ZUxp
c3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgaWYg
KGtleXdvcmQpCisgICAgICAgIGxpc3QtPmFwcGVuZCgqa2V5d29yZCk7CisgICAgaWYgKGFuZ2xl
KQorICAgICAgICBsaXN0LT5hcHBlbmQoKmFuZ2xlKTsKKyAgICByZXR1cm4gbGlzdDsKK30KKwor
c3RhdGljIENTU1ZhbHVlKiBjb25zdW1lVGV4dEVtcGhhc2lzU3R5bGUoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOwor
ICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQo
cmFuZ2UpOworCisgICAgaWYgKENTU1ZhbHVlKiB0ZXh0RW1waGFzaXNTdHlsZSA9IGNvbnN1bWVT
dHJpbmcocmFuZ2UpKQorICAgICAgICByZXR1cm4gdGV4dEVtcGhhc2lzU3R5bGU7CisKKyAgICBD
U1NQcmltaXRpdmVWYWx1ZSogZmlsbCA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUZpbGxlZCwgQ1NT
VmFsdWVPcGVuPihyYW5nZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNoYXBlID0gY29uc3Vt
ZUlkZW50PENTU1ZhbHVlRG90LCBDU1NWYWx1ZUNpcmNsZSwgQ1NTVmFsdWVEb3VibGVDaXJjbGUs
IENTU1ZhbHVlVHJpYW5nbGUsIENTU1ZhbHVlU2VzYW1lPihyYW5nZSk7CisgICAgaWYgKCFmaWxs
KQorICAgICAgICBmaWxsID0gY29uc3VtZUlkZW50PENTU1ZhbHVlRmlsbGVkLCBDU1NWYWx1ZU9w
ZW4+KHJhbmdlKTsKKyAgICBpZiAoZmlsbCAmJiBzaGFwZSkgeworICAgICAgICBDU1NWYWx1ZUxp
c3QqIHBhcnNlZFZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsK
KyAgICAgICAgcGFyc2VkVmFsdWVzLT5hcHBlbmQoKmZpbGwpOworICAgICAgICBwYXJzZWRWYWx1
ZXMtPmFwcGVuZCgqc2hhcGUpOworICAgICAgICByZXR1cm4gcGFyc2VkVmFsdWVzOworICAgIH0K
KyAgICBpZiAoZmlsbCkKKyAgICAgICAgcmV0dXJuIGZpbGw7CisgICAgaWYgKHNoYXBlKQorICAg
ICAgICByZXR1cm4gc2hhcGU7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NW
YWx1ZSogY29uc3VtZU91dGxpbmVDb2xvcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NT
UGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIC8vIEFsbG93IHRoZSBzcGVjaWFsIGZv
Y3VzIGNvbG9yIGV2ZW4gaW4gSFRNTCBTdGFuZGFyZCBwYXJzaW5nIG1vZGUuCisgICAgaWYgKHJh
bmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlV2Via2l0Rm9jdXNSaW5nQ29sb3IpCisgICAgICAg
IHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lQ29sb3IocmFu
Z2UsIGNzc1BhcnNlck1vZGUpOworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1
bWVMaW5lV2lkdGgoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3Nz
UGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKK3sKKyAgICBDU1NWYWx1ZUlEIGlk
ID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgaWYgKGlkID09IENTU1ZhbHVlVGhpbiB8fCBpZCA9
PSBDU1NWYWx1ZU1lZGl1bSB8fCBpZCA9PSBDU1NWYWx1ZVRoaWNrKQorICAgICAgICByZXR1cm4g
Y29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aChyYW5nZSwgY3Nz
UGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlLCB1bml0bGVzcyk7Cit9CisKK3N0YXRp
YyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUJvcmRlcldpZHRoKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5p
dGxlc3MpCit7CisgICAgcmV0dXJuIGNvbnN1bWVMaW5lV2lkdGgocmFuZ2UsIGNzc1BhcnNlck1v
ZGUsIHVuaXRsZXNzKTsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lVGV4
dFN0cm9rZVdpZHRoKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNz
c1BhcnNlck1vZGUpCit7CisgICAgcmV0dXJuIGNvbnN1bWVMaW5lV2lkdGgocmFuZ2UsIGNzc1Bh
cnNlck1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7Cit9CisKK3N0YXRpYyBDU1NQcmltaXRp
dmVWYWx1ZSogY29uc3VtZUNvbHVtblJ1bGVXaWR0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIHJldHVybiBjb25zdW1lTGlu
ZVdpZHRoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworfQor
CitzdGF0aWMgYm9vbCBjb25zdW1lVHJhbnNsYXRlM2QoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJn
cywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NGdW5jdGlvblZhbHVlKiYgdHJhbnNm
b3JtVmFsdWUpCit7CisgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHMgPSAyOworICAgIENT
U1ZhbHVlKiBwYXJzZWRWYWx1ZSA9IG51bGxwdHI7CisgICAgZG8geworICAgICAgICBwYXJzZWRW
YWx1ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVS
YW5nZUFsbCk7CisgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAg
ICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gd2hpbGUgKC0tbnVtYmVyT2ZBcmd1bWVudHMpOwor
ICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUxlbmd0aChhcmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1
ZVJhbmdlQWxsKTsKKyAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZCgqcGFyc2VkVmFsdWUpOworICAgIHJldHVybiB0
cnVlOworfQorCitzdGF0aWMgYm9vbCBjb25zdW1lTnVtYmVycyhDU1NQYXJzZXJUb2tlblJhbmdl
JiBhcmdzLCBDU1NGdW5jdGlvblZhbHVlKiYgdHJhbnNmb3JtVmFsdWUsIHVuc2lnbmVkIG51bWJl
ck9mQXJndW1lbnRzKQoreworICAgIGRvIHsKKyAgICAgICAgQ1NTVmFsdWUqIHBhcnNlZFZhbHVl
ID0gY29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgaWYgKCFwYXJz
ZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgdHJhbnNmb3JtVmFs
dWUtPmFwcGVuZCgqcGFyc2VkVmFsdWUpOworICAgICAgICBpZiAoLS1udW1iZXJPZkFyZ3VtZW50
cyAmJiAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9IHdoaWxlIChudW1iZXJPZkFyZ3VtZW50cyk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGNvbnN1bWVQZXJzcGVjdGl2ZShDU1NQYXJzZXJU
b2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU0Z1bmN0aW9u
VmFsdWUqJiB0cmFuc2Zvcm1WYWx1ZSwgYm9vbCB1c2VMZWdhY3lQYXJzaW5nKQoreworICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGgoYXJncywgY3NzUGFy
c2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICBpZiAoIXBhcnNlZFZhbHVlICYm
IHVzZUxlZ2FjeVBhcnNpbmcpIHsKKyAgICAgICAgZG91YmxlIHBlcnNwZWN0aXZlOworICAgICAg
ICBpZiAoIWNvbnN1bWVOdW1iZXJSYXcoYXJncywgcGVyc3BlY3RpdmUpIHx8IHBlcnNwZWN0aXZl
IDwgMCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcGFyc2VkVmFsdWUgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHBlcnNwZWN0aXZlLCBDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGU6OlBpeGVscyk7CisgICAgfQorICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVRyYW5zZm9y
bVZhbHVlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNl
ck1vZGUsIGJvb2wgdXNlTGVnYWN5UGFyc2luZykKK3sKKyAgICBDU1NWYWx1ZUlEIGZ1bmN0aW9u
SWQgPSByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpOworICAgIGlmIChmdW5jdGlvbklkID09IENT
U1ZhbHVlSW52YWxpZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NTUGFyc2VyVG9r
ZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlKTsKKyAgICBpZiAoYXJncy5hdEVu
ZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBDU1NGdW5jdGlvblZhbHVlKiB0cmFu
c2Zvcm1WYWx1ZSA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmdW5jdGlvbklkKTsKKyAgICBD
U1NWYWx1ZSogcGFyc2VkVmFsdWUgPSBudWxscHRyOworICAgIHN3aXRjaCAoZnVuY3Rpb25JZCkg
eworICAgIGNhc2UgQ1NTVmFsdWVSb3RhdGU6CisgICAgY2FzZSBDU1NWYWx1ZVJvdGF0ZVg6Cisg
ICAgY2FzZSBDU1NWYWx1ZVJvdGF0ZVk6CisgICAgY2FzZSBDU1NWYWx1ZVJvdGF0ZVo6CisgICAg
Y2FzZSBDU1NWYWx1ZVNrZXdYOgorICAgIGNhc2UgQ1NTVmFsdWVTa2V3WToKKyAgICBjYXNlIENT
U1ZhbHVlU2tldzoKKyAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lQW5nbGUoYXJncyk7Cisg
ICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgaWYgKGZ1bmN0aW9uSWQgPT0gQ1NTVmFsdWVTa2V3ICYmIGNvbnN1bWVDb21tYUluY2x1
ZGluZ1doaXRlc3BhY2UoYXJncykpIHsKKyAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBl
bmQoKnBhcnNlZFZhbHVlKTsKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUFuZ2xl
KGFyZ3MpOworICAgICAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Zh
bHVlU2NhbGVYOgorICAgIGNhc2UgQ1NTVmFsdWVTY2FsZVk6CisgICAgY2FzZSBDU1NWYWx1ZVNj
YWxlWjoKKyAgICBjYXNlIENTU1ZhbHVlU2NhbGU6CisgICAgICAgIHBhcnNlZFZhbHVlID0gY29u
c3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgaWYgKCFwYXJzZWRWYWx1
ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBpZiAoZnVuY3Rpb25JZCA9
PSBDU1NWYWx1ZVNjYWxlICYmIGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykp
IHsKKyAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAg
ICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdlQWxs
KTsKKyAgICAgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZVBl
cnNwZWN0aXZlOgorICAgICAgICBpZiAoIWNvbnN1bWVQZXJzcGVjdGl2ZShhcmdzLCBjc3NQYXJz
ZXJNb2RlLCB0cmFuc2Zvcm1WYWx1ZSwgdXNlTGVnYWN5UGFyc2luZykpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZVRyYW5zbGF0
ZVg6CisgICAgY2FzZSBDU1NWYWx1ZVRyYW5zbGF0ZVk6CisgICAgY2FzZSBDU1NWYWx1ZVRyYW5z
bGF0ZToKKyAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3Ms
IGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBpZiAoIXBhcnNlZFZhbHVl
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGlmIChmdW5jdGlvbklkID09
IENTU1ZhbHVlVHJhbnNsYXRlICYmIGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJn
cykpIHsKKyAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsK
KyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBj
c3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VkVmFs
dWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZVRyYW5zbGF0ZVo6CisgICAgICAgIHBhcnNlZFZhbHVl
ID0gY29uc3VtZUxlbmd0aChhcmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZU1hdHJpeDoKKyAgICBjYXNlIENTU1ZhbHVl
TWF0cml4M2Q6CisgICAgICAgIGlmICghY29uc3VtZU51bWJlcnMoYXJncywgdHJhbnNmb3JtVmFs
dWUsIChmdW5jdGlvbklkID09IENTU1ZhbHVlTWF0cml4M2QpID8gMTYgOiA2KSkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlU2Nh
bGUzZDoKKyAgICAgICAgaWYgKCFjb25zdW1lTnVtYmVycyhhcmdzLCB0cmFuc2Zvcm1WYWx1ZSwg
MykpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDU1NWYWx1ZVJvdGF0ZTNkOgorICAgICAgICBpZiAoIWNvbnN1bWVOdW1iZXJzKGFyZ3MsIHRy
YW5zZm9ybVZhbHVlLCAzKSB8fCAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdz
KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBwYXJzZWRWYWx1ZSA9IGNv
bnN1bWVBbmdsZShhcmdzKTsKKyAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlVHJhbnNs
YXRlM2Q6CisgICAgICAgIGlmICghY29uc3VtZVRyYW5zbGF0ZTNkKGFyZ3MsIGNzc1BhcnNlck1v
ZGUsIHRyYW5zZm9ybVZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cisg
ICAgaWYgKHBhcnNlZFZhbHVlKQorICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKCpwYXJz
ZWRWYWx1ZSk7CisgICAgaWYgKCFhcmdzLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiB0cmFuc2Zvcm1WYWx1ZTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25z
dW1lVHJhbnNmb3JtKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNz
c1BhcnNlck1vZGUsIGJvb2wgdXNlTGVnYWN5UGFyc2luZykKK3sKKyAgICBpZiAocmFuZ2UucGVl
aygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJh
bmdlKTsKKworICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3Bh
Y2VTZXBhcmF0ZWQoKTsKKyAgICBkbyB7CisgICAgICAgIENTU1ZhbHVlKiBwYXJzZWRUcmFuc2Zv
cm1WYWx1ZSA9IGNvbnN1bWVUcmFuc2Zvcm1WYWx1ZShyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdXNl
TGVnYWN5UGFyc2luZyk7CisgICAgICAgIGlmICghcGFyc2VkVHJhbnNmb3JtVmFsdWUpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgbGlzdC0+YXBwZW5kKCpwYXJzZWRUcmFu
c2Zvcm1WYWx1ZSk7CisgICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpOworCisgICAgcmV0dXJu
IGxpc3Q7Cit9CisKK3RlbXBsYXRlIDxDU1NWYWx1ZUlEIHN0YXJ0LCBDU1NWYWx1ZUlEIGVuZD4K
K3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVBvc2l0aW9uTG9uZ2hhbmQoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAocmFu
Z2UucGVlaygpLnR5cGUoKSA9PSBJZGVudFRva2VuKSB7CisgICAgICAgIENTU1ZhbHVlSUQgaWQg
PSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICAgICAgaW50IHBlcmNlbnQ7CisgICAgICAgIGlmIChp
ZCA9PSBzdGFydCkKKyAgICAgICAgICAgIHBlcmNlbnQgPSAwOworICAgICAgICBlbHNlIGlmIChp
ZCA9PSBDU1NWYWx1ZUNlbnRlcikKKyAgICAgICAgICAgIHBlcmNlbnQgPSA1MDsKKyAgICAgICAg
ZWxzZSBpZiAoaWQgPT0gZW5kKQorICAgICAgICAgICAgcGVyY2VudCA9IDEwMDsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJhbmdlLmNvbnN1bWVJ
bmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKHBlcmNlbnQsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGVyY2VudGFnZSk7
CisgICAgfQorICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJz
ZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lUG9z
aXRpb25YKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNl
ck1vZGUpCit7CisgICAgcmV0dXJuIGNvbnN1bWVQb3NpdGlvbkxvbmdoYW5kPENTU1ZhbHVlTGVm
dCwgQ1NTVmFsdWVSaWdodD4ocmFuZ2UsIGNzc1BhcnNlck1vZGUpOworfQorCitzdGF0aWMgQ1NT
VmFsdWUqIGNvbnN1bWVQb3NpdGlvblkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1Bh
cnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICByZXR1cm4gY29uc3VtZVBvc2l0aW9uTG9u
Z2hhbmQ8Q1NTVmFsdWVUb3AsIENTU1ZhbHVlQm90dG9tPihyYW5nZSwgY3NzUGFyc2VyTW9kZSk7
Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVBhaW50U3Ryb2tlKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgaWYgKHJh
bmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJ
ZGVudChyYW5nZSk7CisgICAgQ1NTVVJJVmFsdWUqIHVybCA9IGNvbnN1bWVVcmwocmFuZ2UpOwor
ICAgIGlmICh1cmwpIHsKKyAgICAgICAgQ1NTVmFsdWUqIHBhcnNlZFZhbHVlID0gbnVsbHB0cjsK
KyAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAg
ICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lQ29sb3IocmFuZ2UsIGNzc1BhcnNlck1vZGUp
OworICAgICAgICBpZiAocGFyc2VkVmFsdWUpIHsKKyAgICAgICAgICAgIENTU1ZhbHVlTGlzdCog
dmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICAg
ICAgdmFsdWVzLT5hcHBlbmQoKnVybCk7CisgICAgICAgICAgICB2YWx1ZXMtPmFwcGVuZCgqcGFy
c2VkVmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlczsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gdXJsOworICAgIH0KKyAgICByZXR1cm4gY29uc3VtZUNvbG9yKHJhbmdlLCBjc3NQ
YXJzZXJNb2RlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lUGFpbnRPcmRlcihDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0g
Q1NTVmFsdWVOb3JtYWwpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisg
ICAgVmVjdG9yPENTU1ZhbHVlSUQsIDM+IHBhaW50VHlwZUxpc3Q7CisgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIGZpbGwgPSBudWxscHRyOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzdHJva2UgPSBu
dWxscHRyOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBtYXJrZXJzID0gbnVsbHB0cjsKKyAgICBk
byB7CisgICAgICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICAgICAg
aWYgKGlkID09IENTU1ZhbHVlRmlsbCAmJiAhZmlsbCkKKyAgICAgICAgICAgIGZpbGwgPSBjb25z
dW1lSWRlbnQocmFuZ2UpOworICAgICAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVN0cm9rZSAm
JiAhc3Ryb2tlKQorICAgICAgICAgICAgc3Ryb2tlID0gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAg
ICAgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVNYXJrZXJzICYmICFtYXJrZXJzKQorICAgICAg
ICAgICAgbWFya2VycyA9IGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBwYWludFR5cGVMaXN0LmFwcGVuZChpZCk7
CisgICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpOworCisgICAgLy8gQWZ0ZXIgcGFyc2luZyB3
ZSBzZXJpYWxpemUgdGhlIHBhaW50LW9yZGVyIGxpc3QuIFNpbmNlIGl0IGlzIG5vdCBwb3NzaWJs
ZSB0bworICAgIC8vIHBvcCBhIGxhc3QgbGlzdCBpdGVtcyBmcm9tIENTU1ZhbHVlTGlzdCB3aXRo
b3V0IGJpZ2dlciBjb3N0LCB3ZSBjcmVhdGUgdGhlCisgICAgLy8gbGlzdCBhZnRlciBwYXJzaW5n
LgorICAgIENTU1ZhbHVlSUQgZmlyc3RQYWludE9yZGVyVHlwZSA9IHBhaW50VHlwZUxpc3QuYXQo
MCk7CisgICAgQ1NTVmFsdWVMaXN0KiBwYWludE9yZGVyTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBzd2l0Y2ggKGZpcnN0UGFpbnRPcmRlclR5cGUpIHsK
KyAgICBjYXNlIENTU1ZhbHVlRmlsbDoKKyAgICBjYXNlIENTU1ZhbHVlU3Ryb2tlOgorICAgICAg
ICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKGZpcnN0UGFpbnRPcmRlclR5cGUgPT0gQ1NTVmFsdWVG
aWxsID8gKmZpbGwgOiAqc3Ryb2tlKTsKKyAgICAgICAgaWYgKHBhaW50VHlwZUxpc3Quc2l6ZSgp
ID4gMSkgeworICAgICAgICAgICAgaWYgKHBhaW50VHlwZUxpc3QuYXQoMSkgPT0gQ1NTVmFsdWVN
YXJrZXJzKQorICAgICAgICAgICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoKm1hcmtlcnMp
OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVNYXJrZXJzOgor
ICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKCptYXJrZXJzKTsKKyAgICAgICAgaWYgKHBh
aW50VHlwZUxpc3Quc2l6ZSgpID4gMSkgeworICAgICAgICAgICAgaWYgKHBhaW50VHlwZUxpc3Qu
YXQoMSkgPT0gQ1NTVmFsdWVTdHJva2UpCisgICAgICAgICAgICAgICAgcGFpbnRPcmRlckxpc3Qt
PmFwcGVuZCgqc3Ryb2tlKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gcGFp
bnRPcmRlckxpc3Q7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZU5vbmVPclVSSShDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0g
Q1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICBy
ZXR1cm4gY29uc3VtZVVybChyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUZs
ZXhCYXNpcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJz
ZXJNb2RlKQoreworICAgIC8vIEZJWE1FOiBTdXBwb3J0IGludHJpbnNpYyBkaW1lbnNpb25zIHRv
by4KKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICBy
ZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVy
Y2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKK30KKwor
c3RhdGljIENTU1ZhbHVlKiBjb25zdW1lU3Ryb2tlRGFzaGFycmF5KENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQoreworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAg
ICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJh
bmdlKTsKKworICAgIENTU1ZhbHVlTGlzdCogZGFzaGVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVD
b21tYVNlcGFyYXRlZCgpOworICAgIGRvIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGRh
c2ggPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBTVkdBdHRyaWJ1dGVNb2RlLCBWYWx1
ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICBpZiAoIWRhc2ggfHwgKGNvbnN1bWVDb21tYUlu
Y2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpICYmIHJhbmdlLmF0RW5kKCkpKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIGRhc2hlcy0+YXBwZW5kKCpkYXNoKTsKKyAgICB9IHdo
aWxlICghcmFuZ2UuYXRFbmQoKSk7CisgICAgcmV0dXJuIGRhc2hlczsKK30KKworc3RhdGljIENT
U1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lQmFzZWxpbmVTaGlmdChDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSkKK3sKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAg
aWYgKGlkID09IENTU1ZhbHVlQmFzZWxpbmUgfHwgaWQgPT0gQ1NTVmFsdWVTdWIgfHwgaWQgPT0g
Q1NTVmFsdWVTdXBlcikKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAg
cmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIFNWR0F0dHJpYnV0ZU1vZGUsIFZh
bHVlUmFuZ2VBbGwpOworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVSeE9y
UnkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5p
ZCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7
CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIFNWR0F0dHJpYnV0ZU1v
ZGUsIFZhbHVlUmFuZ2VBbGwsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7Cit9CisKK3N0YXRpYyBD
U1NWYWx1ZSogY29uc3VtZUN1cnNvcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3Qg
Q1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgYm9vbCBpblF1aXJrc01vZGUpCit7CisgICAgQ1NT
VmFsdWVMaXN0KiBsaXN0ID0gbnVsbHB0cjsKKyAgICB3aGlsZSAoQ1NTVmFsdWUqIGltYWdlID0g
Y29uc3VtZUltYWdlKHJhbmdlLCBjb250ZXh0LCBDb25zdW1lR2VuZXJhdGVkSW1hZ2U6OkZvcmJp
ZCkpIHsKKyAgICAgICAgZG91YmxlIG51bTsKKyAgICAgICAgSW50UG9pbnQgaG90U3BvdCgtMSwg
LTEpOworICAgICAgICBib29sIGhvdFNwb3RTcGVjaWZpZWQgPSBmYWxzZTsKKyAgICAgICAgaWYg
KGNvbnN1bWVOdW1iZXJSYXcocmFuZ2UsIG51bSkpIHsKKyAgICAgICAgICAgIGhvdFNwb3Quc2V0
WChpbnQobnVtKSk7CisgICAgICAgICAgICBpZiAoIWNvbnN1bWVOdW1iZXJSYXcocmFuZ2UsIG51
bSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBob3RTcG90
LnNldFkoaW50KG51bSkpOworICAgICAgICAgICAgaG90U3BvdFNwZWNpZmllZCA9IHRydWU7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIWxpc3QpCisgICAgICAgICAgICBsaXN0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworCisgICAgICAgIGxpc3QtPmFwcGVuZCgq
Q1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Y3JlYXRlKGltYWdlLCBob3RTcG90U3BlY2lmaWVkLCBob3RT
cG90KSk7CisgICAgICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5n
ZSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBDU1NWYWx1ZUlE
IGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgaWYgKCFyYW5nZS5hdEVuZCgpICYmIGNvbnRl
eHQudXNlQ291bnRlcigpKSB7CisgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdFpvb21J
bikKKyAgICAgICAgICAgIGNvbnRleHQudXNlQ291bnRlcigpLT5jb3VudChVc2VDb3VudGVyOjpQ
cmVmaXhlZEN1cnNvclpvb21Jbik7CisgICAgICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Vi
a2l0Wm9vbU91dCkKKyAgICAgICAgICAgIGNvbnRleHQudXNlQ291bnRlcigpLT5jb3VudChVc2VD
b3VudGVyOjpQcmVmaXhlZEN1cnNvclpvb21PdXQpOworICAgIH0KKyAgICBDU1NWYWx1ZSogY3Vy
c29yVHlwZSA9IG51bGxwdHI7CisgICAgaWYgKGlkID09IENTU1ZhbHVlSGFuZCkgeworICAgICAg
ICBpZiAoIWluUXVpcmtzTW9kZSkgLy8gTm9uLXN0YW5kYXJkIGJlaGF2aW9yCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgY3Vyc29yVHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlUG9pbnRlcik7CisgICAgICAgIHJhbmdlLmNvbnN1
bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgfSBlbHNlIGlmICgoaWQgPj0gQ1NTVmFsdWVB
dXRvICYmIGlkIDw9IENTU1ZhbHVlV2Via2l0Wm9vbU91dCkgfHwgaWQgPT0gQ1NTVmFsdWVDb3B5
IHx8IGlkID09IENTU1ZhbHVlTm9uZSkgeworICAgICAgICBjdXJzb3JUeXBlID0gY29uc3VtZUlk
ZW50KHJhbmdlKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisKKyAgICBpZiAoIWxpc3QpCisgICAgICAgIHJldHVybiBjdXJzb3JUeXBlOworICAgIGxpc3Qt
PmFwcGVuZCgqY3Vyc29yVHlwZSk7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBDU1NW
YWx1ZSogY29uc3VtZUF0dHIoQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzLCBDU1NQYXJzZXJDb250
ZXh0IGNvbnRleHQpCit7CisgICAgaWYgKGFyZ3MucGVlaygpLnR5cGUoKSAhPSBJZGVudFRva2Vu
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFN0cmluZyBhdHRyTmFtZSA9IGFyZ3Mu
Y29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgpLnRvU3RyaW5nKCk7CisgICAgaWYg
KCFhcmdzLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKGNvbnRl
eHQuaXNIVE1MRG9jdW1lbnQoKSkKKyAgICAgICAgYXR0ck5hbWUgPSBhdHRyTmFtZS5sb3dlcigp
OworCisgICAgQ1NTRnVuY3Rpb25WYWx1ZSogYXR0clZhbHVlID0gQ1NTRnVuY3Rpb25WYWx1ZTo6
Y3JlYXRlKENTU1ZhbHVlQXR0cik7CisgICAgYXR0clZhbHVlLT5hcHBlbmQoKkNTU0N1c3RvbUlk
ZW50VmFsdWU6OmNyZWF0ZShhdHRyTmFtZSkpOworICAgIHJldHVybiBhdHRyVmFsdWU7Cit9CisK
K3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUNvdW50ZXJDb250ZW50KENTU1BhcnNlclRva2VuUmFu
Z2UgYXJncywgYm9vbCBjb3VudGVycykKK3sKKyAgICBDU1NDdXN0b21JZGVudFZhbHVlKiBpZGVu
dGlmaWVyID0gY29uc3VtZUN1c3RvbUlkZW50KGFyZ3MpOworICAgIGlmICghaWRlbnRpZmllcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBDU1NTdHJpbmdWYWx1ZSogc2VwYXJhdG9y
ID0gbnVsbHB0cjsKKyAgICBpZiAoIWNvdW50ZXJzKSB7CisgICAgICAgIHNlcGFyYXRvciA9IENT
U1N0cmluZ1ZhbHVlOjpjcmVhdGUoU3RyaW5nKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlm
ICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSB8fCBhcmdzLnBlZWsoKS50
eXBlKCkgIT0gU3RyaW5nVG9rZW4pCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgc2VwYXJhdG9yID0gQ1NTU3RyaW5nVmFsdWU6OmNyZWF0ZShhcmdzLmNvbnN1bWVJbmNsdWRp
bmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b1N0cmluZygpKTsKKyAgICB9CisKKyAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogbGlzdFN0eWxlID0gbnVsbHB0cjsKKyAgICBpZiAoY29uc3VtZUNvbW1hSW5j
bHVkaW5nV2hpdGVzcGFjZShhcmdzKSkgeworICAgICAgICBDU1NWYWx1ZUlEIGlkID0gYXJncy5w
ZWVrKCkuaWQoKTsKKyAgICAgICAgaWYgKChpZCAhPSBDU1NWYWx1ZU5vbmUgJiYgKGlkIDwgQ1NT
VmFsdWVEaXNjIHx8IGlkID4gQ1NTVmFsdWVLYXRha2FuYUlyb2hhKSkpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgbGlzdFN0eWxlID0gY29uc3VtZUlkZW50KGFyZ3MpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGxpc3RTdHlsZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGVJZGVudGlmaWVyKENTU1ZhbHVlRGVjaW1hbCk7CisgICAgfQorCisgICAgaWYgKCFhcmdzLmF0
RW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBDU1NDb3VudGVyVmFs
dWU6OmNyZWF0ZShpZGVudGlmaWVyLCBsaXN0U3R5bGUsIHNlcGFyYXRvcik7Cit9CisKK3N0YXRp
YyBDU1NWYWx1ZSogY29uc3VtZUNvbnRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U1BhcnNlckNvbnRleHQgY29udGV4dCkKK3sKKyAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVl
Tm9uZSwgQ1NTVmFsdWVOb3JtYWw+KHJhbmdlLnBlZWsoKS5pZCgpKSkKKyAgICAgICAgcmV0dXJu
IGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKworICAgIGRvIHsKKyAgICAgICAgQ1NT
VmFsdWUqIHBhcnNlZFZhbHVlID0gY29uc3VtZUltYWdlKHJhbmdlLCBjb250ZXh0KTsKKyAgICAg
ICAgaWYgKCFwYXJzZWRWYWx1ZSkKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUlk
ZW50PENTU1ZhbHVlT3BlblF1b3RlLCBDU1NWYWx1ZUNsb3NlUXVvdGUsIENTU1ZhbHVlTm9PcGVu
UXVvdGUsIENTU1ZhbHVlTm9DbG9zZVF1b3RlPihyYW5nZSk7CisgICAgICAgIGlmICghcGFyc2Vk
VmFsdWUpCisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVTdHJpbmcocmFuZ2UpOwor
ICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKSB7CisgICAgICAgICAgICBpZiAocmFuZ2UucGVlaygp
LmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUF0dHIpCisgICAgICAgICAgICAgICAgcGFyc2VkVmFs
dWUgPSBjb25zdW1lQXR0cihjb25zdW1lRnVuY3Rpb24ocmFuZ2UpLCBjb250ZXh0KTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVDb3Vu
dGVyKQorICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUNvdW50ZXJDb250ZW50
KGNvbnN1bWVGdW5jdGlvbihyYW5nZSksIGZhbHNlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJh
bmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVDb3VudGVycykKKyAgICAgICAgICAg
ICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVDb3VudGVyQ29udGVudChjb25zdW1lRnVuY3Rpb24o
cmFuZ2UpLCB0cnVlKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgdmFsdWVzLT5hcHBlbmQo
KnBhcnNlZFZhbHVlKTsKKyAgICB9IHdoaWxlICghcmFuZ2UuYXRFbmQoKSk7CisKKyAgICByZXR1
cm4gdmFsdWVzOworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVQZXJzcGVj
dGl2ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJN
b2RlLCBDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0eSkKK3sKKyAgICBpZiAocmFuZ2Uu
cGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50
KHJhbmdlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcGFyc2VkVmFsdWUgPSBjb25zdW1lTGVu
Z3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBpZiAoIXBhcnNl
ZFZhbHVlICYmICh1bnJlc29sdmVkUHJvcGVydHkgPT0gQ1NTUHJvcGVydHlBbGlhc1dlYmtpdFBl
cnNwZWN0aXZlKSkgeworICAgICAgICBkb3VibGUgcGVyc3BlY3RpdmU7CisgICAgICAgIGlmICgh
Y29uc3VtZU51bWJlclJhdyhyYW5nZSwgcGVyc3BlY3RpdmUpKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIHBhcnNlZFZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShwZXJzcGVjdGl2ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQaXhlbHMpOworICAg
IH0KKyAgICBpZiAocGFyc2VkVmFsdWUgJiYgKHBhcnNlZFZhbHVlLT5pc0NhbGN1bGF0ZWQoKSB8
fCBwYXJzZWRWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSA+IDApKQorICAgICAgICByZXR1cm4gcGFy
c2VkVmFsdWU7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZUxpc3Qq
IGNvbnN1bWVQb3NpdGlvbkxpc3QoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNl
ck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBDU1NWYWx1ZUxpc3QqIHBvc2l0aW9ucyA9IENT
U1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICBkbyB7CisgICAgICAgIENT
U1ZhbHVlKiBwb3NpdGlvbiA9IGNvbnN1bWVQb3NpdGlvbihyYW5nZSwgY3NzUGFyc2VyTW9kZSwg
VW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKKyAgICAgICAgaWYgKCFwb3NpdGlvbikKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICBwb3NpdGlvbnMtPmFwcGVuZCgqcG9zaXRpb24p
OworICAgIH0gd2hpbGUgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKTsK
KyAgICByZXR1cm4gcG9zaXRpb25zOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVTY3Jv
bGxTbmFwQ29vcmRpbmF0ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1
ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBj
b25zdW1lUG9zaXRpb25MaXN0KHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKK30KKworc3RhdGljIENT
U1ZhbHVlKiBjb25zdW1lU2Nyb2xsU25hcFBvaW50cyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCku
aWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2Up
OworICAgIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlUmVwZWF0KSB7
CisgICAgICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5n
ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5n
dGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsK
KyAgICAgICAgaWYgKGFyZ3MuYXRFbmQoKSAmJiBwYXJzZWRWYWx1ZSAmJiAocGFyc2VkVmFsdWUt
PmlzQ2FsY3VsYXRlZCgpIHx8IHBhcnNlZFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpID4gMCkpIHsK
KyAgICAgICAgICAgIENTU0Z1bmN0aW9uVmFsdWUqIHJlc3VsdCA9IENTU0Z1bmN0aW9uVmFsdWU6
OmNyZWF0ZShDU1NWYWx1ZVJlcGVhdCk7CisgICAgICAgICAgICByZXN1bHQtPmFwcGVuZCgqcGFy
c2VkVmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQm9yZGVy
UmFkaXVzQ29ybmVyKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNz
c1BhcnNlck1vZGUpCit7CisgICAgQ1NTVmFsdWUqIHBhcnNlZFZhbHVlMSA9IGNvbnN1bWVMZW5n
dGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7
CisgICAgaWYgKCFwYXJzZWRWYWx1ZTEpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIENT
U1ZhbHVlKiBwYXJzZWRWYWx1ZTIgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQ
YXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgIGlmICghcGFyc2VkVmFsdWUy
KQorICAgICAgICBwYXJzZWRWYWx1ZTIgPSBwYXJzZWRWYWx1ZTE7CisgICAgcmV0dXJuIENTU1Zh
bHVlUGFpcjo6Y3JlYXRlKHBhcnNlZFZhbHVlMSwgcGFyc2VkVmFsdWUyLCBDU1NWYWx1ZVBhaXI6
OkRyb3BJZGVudGljYWxWYWx1ZXMpOworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNv
bnN1bWVWZXJ0aWNhbEFsaWduKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJN
b2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBhcnNlZFZhbHVl
ID0gY29uc3VtZUlkZW50UmFuZ2UocmFuZ2UsIENTU1ZhbHVlQmFzZWxpbmUsIENTU1ZhbHVlV2Vi
a2l0QmFzZWxpbmVNaWRkbGUpOworICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgIHBhcnNl
ZFZhbHVlID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFs
dWVSYW5nZUFsbCwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOworICAgIHJldHVybiBwYXJzZWRWYWx1
ZTsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lU2hhcGVSYWRpdXMoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQorewor
ICAgIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVDbG9zZXN0U2lkZSwgQ1NTVmFsdWVGYXJ0aGVz
dFNpZGU+KGFyZ3MucGVlaygpLmlkKCkpKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KGFy
Z3MpOworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNzc1BhcnNlck1v
ZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7Cit9CisKK3N0YXRpYyBDU1NCYXNpY1NoYXBlQ2ly
Y2xlVmFsdWUqIGNvbnN1bWVCYXNpY1NoYXBlQ2lyY2xlKENTU1BhcnNlclRva2VuUmFuZ2UmIGFy
Z3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgLy8gc3BlYzogaHR0
cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1zaGFwZXMvI3N1cHBvcnRlZC1iYXNpYy1zaGFwZXMK
KyAgICAvLyBjaXJjbGUoIFs8c2hhcGUtcmFkaXVzPl0/IFthdCA8cG9zaXRpb24+XT8gKQorICAg
IENTU0Jhc2ljU2hhcGVDaXJjbGVWYWx1ZSogc2hhcGUgPSBDU1NCYXNpY1NoYXBlQ2lyY2xlVmFs
dWU6OmNyZWF0ZSgpOworICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZSogcmFkaXVzID0gY29uc3Vt
ZVNoYXBlUmFkaXVzKGFyZ3MsIGNvbnRleHQubW9kZSgpKSkKKyAgICAgICAgc2hhcGUtPnNldFJh
ZGl1cyhyYWRpdXMpOworICAgIGlmIChjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBdD4oYXJncykpIHsK
KyAgICAgICAgQ1NTVmFsdWUqIGNlbnRlclggPSBudWxscHRyOworICAgICAgICBDU1NWYWx1ZSog
Y2VudGVyWSA9IG51bGxwdHI7CisgICAgICAgIGlmICghY29uc3VtZVBvc2l0aW9uKGFyZ3MsIGNv
bnRleHQubW9kZSgpLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQsIGNlbnRlclgsIGNlbnRlclkpKQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHNoYXBlLT5zZXRDZW50ZXJYKGNl
bnRlclgpOworICAgICAgICBzaGFwZS0+c2V0Q2VudGVyWShjZW50ZXJZKTsKKyAgICB9CisgICAg
cmV0dXJuIHNoYXBlOworfQorCitzdGF0aWMgQ1NTQmFzaWNTaGFwZUVsbGlwc2VWYWx1ZSogY29u
c3VtZUJhc2ljU2hhcGVFbGxpcHNlKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENT
U1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgLy8gc3BlYzogaHR0cHM6Ly9kcmFmdHMu
Y3Nzd2cub3JnL2Nzcy1zaGFwZXMvI3N1cHBvcnRlZC1iYXNpYy1zaGFwZXMKKyAgICAvLyBlbGxp
cHNlKCBbPHNoYXBlLXJhZGl1cz57Mn1dPyBbYXQgPHBvc2l0aW9uPl0/ICkKKyAgICBDU1NCYXNp
Y1NoYXBlRWxsaXBzZVZhbHVlKiBzaGFwZSA9IENTU0Jhc2ljU2hhcGVFbGxpcHNlVmFsdWU6OmNy
ZWF0ZSgpOworICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZSogcmFkaXVzWCA9IGNvbnN1bWVTaGFw
ZVJhZGl1cyhhcmdzLCBjb250ZXh0Lm1vZGUoKSkpIHsKKyAgICAgICAgc2hhcGUtPnNldFJhZGl1
c1gocmFkaXVzWCk7CisgICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZSogcmFkaXVzWSA9IGNv
bnN1bWVTaGFwZVJhZGl1cyhhcmdzLCBjb250ZXh0Lm1vZGUoKSkpCisgICAgICAgICAgICBzaGFw
ZS0+c2V0UmFkaXVzWShyYWRpdXNZKTsKKyAgICB9CisgICAgaWYgKGNvbnN1bWVJZGVudDxDU1NW
YWx1ZUF0PihhcmdzKSkgeworICAgICAgICBDU1NWYWx1ZSogY2VudGVyWCA9IG51bGxwdHI7Cisg
ICAgICAgIENTU1ZhbHVlKiBjZW50ZXJZID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFjb25zdW1l
UG9zaXRpb24oYXJncywgY29udGV4dC5tb2RlKCksIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgY2Vu
dGVyWCwgY2VudGVyWSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgc2hh
cGUtPnNldENlbnRlclgoY2VudGVyWCk7CisgICAgICAgIHNoYXBlLT5zZXRDZW50ZXJZKGNlbnRl
clkpOworICAgIH0KKyAgICByZXR1cm4gc2hhcGU7Cit9CisKK3N0YXRpYyBDU1NCYXNpY1NoYXBl
UG9seWdvblZhbHVlKiBjb25zdW1lQmFzaWNTaGFwZVBvbHlnb24oQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBDU1NCYXNp
Y1NoYXBlUG9seWdvblZhbHVlKiBzaGFwZSA9IENTU0Jhc2ljU2hhcGVQb2x5Z29uVmFsdWU6OmNy
ZWF0ZSgpOworICAgIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVFdmVub2RkLCBDU1NWYWx1ZU5v
bnplcm8+KGFyZ3MucGVlaygpLmlkKCkpKSB7CisgICAgICAgIHNoYXBlLT5zZXRXaW5kUnVsZShh
cmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKSA9PSBDU1NWYWx1ZUV2ZW5vZGQg
PyBSVUxFX0VWRU5PREQgOiBSVUxFX05PTlpFUk8pOworICAgICAgICBpZiAoIWNvbnN1bWVDb21t
YUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisKKyAgICBkbyB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB4TGVuZ3RoID0g
Y29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZUFs
bCk7CisgICAgICAgIGlmICgheExlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogeUxlbmd0aCA9IGNvbnN1bWVMZW5ndGhPclBlcmNl
bnQoYXJncywgY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBpZiAoIXlM
ZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgc2hhcGUtPmFwcGVu
ZFBvaW50KHhMZW5ndGgsIHlMZW5ndGgpOworICAgIH0gd2hpbGUgKGNvbnN1bWVDb21tYUluY2x1
ZGluZ1doaXRlc3BhY2UoYXJncykpOworICAgIHJldHVybiBzaGFwZTsKK30KKworc3RhdGljIHZv
aWQgY29tcGxldGU0U2lkZXMoQ1NTUHJpbWl0aXZlVmFsdWUqIHNpZGVbNF0pCit7CisgICAgaWYg
KHNpZGVbM10pCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIXNpZGVbMl0pIHsKKyAgICAgICAg
aWYgKCFzaWRlWzFdKQorICAgICAgICAgICAgc2lkZVsxXSA9IHNpZGVbMF07CisgICAgICAgIHNp
ZGVbMl0gPSBzaWRlWzBdOworICAgIH0KKyAgICBzaWRlWzNdID0gc2lkZVsxXTsKK30KKworc3Rh
dGljIGJvb2wgY29uc3VtZVJhZGlpKENTU1ByaW1pdGl2ZVZhbHVlKiBob3Jpem9udGFsUmFkaWlb
NF0sIENTU1ByaW1pdGl2ZVZhbHVlKiB2ZXJ0aWNhbFJhZGlpWzRdLCBDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBib29sIHVzZUxlZ2FjeVBh
cnNpbmcpCit7CisgICAgdW5zaWduZWQgaSA9IDA7CisgICAgZm9yICg7IGkgPCA0ICYmICFyYW5n
ZS5hdEVuZCgpICYmIHJhbmdlLnBlZWsoKS50eXBlKCkgIT0gRGVsaW1pdGVyVG9rZW47ICsraSkg
eworICAgICAgICBob3Jpem9udGFsUmFkaWlbaV0gPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJh
bmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICBpZiAo
IWhvcml6b250YWxSYWRpaVtpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgaWYgKCFob3Jpem9udGFsUmFkaWlbMF0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAocmFuZ2UuYXRFbmQoKSkgeworICAgICAgICAvLyBMZWdhY3kgc3ludGF4OiAtd2Via2l0LWJv
cmRlci1yYWRpdXM6IGwxIGwyOyBpcyBlcXVpdmFsZW50IHRvIGJvcmRlci1yYWRpdXM6IGwxIC8g
bDI7CisgICAgICAgIGlmICh1c2VMZWdhY3lQYXJzaW5nICYmIGkgPT0gMikgeworICAgICAgICAg
ICAgdmVydGljYWxSYWRpaVswXSA9IGhvcml6b250YWxSYWRpaVsxXTsKKyAgICAgICAgICAgIGhv
cml6b250YWxSYWRpaVsxXSA9IG51bGxwdHI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBjb21wbGV0ZTRTaWRlcyhob3Jpem9udGFsUmFkaWkpOworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IDQ7ICsraSkKKyAgICAgICAgICAgICAgICB2ZXJ0aWNhbFJhZGlpW2ld
ID0gaG9yaXpvbnRhbFJhZGlpW2ldOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIWNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRl
c3BhY2UocmFuZ2UpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBmb3IgKGkg
PSAwOyBpIDwgNCAmJiAhcmFuZ2UuYXRFbmQoKTsgKytpKSB7CisgICAgICAgICAgICB2ZXJ0aWNh
bFJhZGlpW2ldID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwg
VmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgICAgIGlmICghdmVydGljYWxSYWRpaVtp
XSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KCF2ZXJ0aWNhbFJhZGlpWzBdIHx8ICFyYW5nZS5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICBjb21wbGV0ZTRTaWRlcyhob3Jpem9udGFsUmFkaWkpOworICAg
IGNvbXBsZXRlNFNpZGVzKHZlcnRpY2FsUmFkaWkpOworICAgIHJldHVybiB0cnVlOworfQorCitz
dGF0aWMgQ1NTQmFzaWNTaGFwZUluc2V0VmFsdWUqIGNvbnN1bWVCYXNpY1NoYXBlSW5zZXQoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkK
K3sKKyAgICBDU1NCYXNpY1NoYXBlSW5zZXRWYWx1ZSogc2hhcGUgPSBDU1NCYXNpY1NoYXBlSW5z
ZXRWYWx1ZTo6Y3JlYXRlKCk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHRvcCA9IGNvbnN1bWVM
ZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VBbGwpOworICAg
IGlmICghdG9wKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcmlnaHQgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBW
YWx1ZVJhbmdlQWxsKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogYm90dG9tID0gbnVsbHB0cjsK
KyAgICBDU1NQcmltaXRpdmVWYWx1ZSogbGVmdCA9IG51bGxwdHI7CisgICAgaWYgKHJpZ2h0KSB7
CisgICAgICAgIGJvdHRvbSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5t
b2RlKCksIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBpZiAoYm90dG9tKQorICAgICAgICAgICAg
bGVmdCA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlKCksIFZhbHVl
UmFuZ2VBbGwpOworICAgIH0KKyAgICBpZiAobGVmdCkKKyAgICAgICAgc2hhcGUtPnVwZGF0ZVNo
YXBlU2l6ZTRWYWx1ZXModG9wLCByaWdodCwgYm90dG9tLCBsZWZ0KTsKKyAgICBlbHNlIGlmIChi
b3R0b20pCisgICAgICAgIHNoYXBlLT51cGRhdGVTaGFwZVNpemUzVmFsdWVzKHRvcCwgcmlnaHQs
IGJvdHRvbSk7CisgICAgZWxzZSBpZiAocmlnaHQpCisgICAgICAgIHNoYXBlLT51cGRhdGVTaGFw
ZVNpemUyVmFsdWVzKHRvcCwgcmlnaHQpOworICAgIGVsc2UKKyAgICAgICAgc2hhcGUtPnVwZGF0
ZVNoYXBlU2l6ZTFWYWx1ZSh0b3ApOworCisgICAgaWYgKGNvbnN1bWVJZGVudDxDU1NWYWx1ZVJv
dW5kPihhcmdzKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogaG9yaXpvbnRhbFJhZGlp
WzRdID0geyAwIH07CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2ZXJ0aWNhbFJhZGlpWzRd
ID0geyAwIH07CisgICAgICAgIGlmICghY29uc3VtZVJhZGlpKGhvcml6b250YWxSYWRpaSwgdmVy
dGljYWxSYWRpaSwgYXJncywgY29udGV4dC5tb2RlKCksIGZhbHNlKSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICBzaGFwZS0+c2V0VG9wTGVmdFJhZGl1cyhDU1NWYWx1ZVBh
aXI6OmNyZWF0ZShob3Jpem9udGFsUmFkaWlbMF0sIHZlcnRpY2FsUmFkaWlbMF0sIENTU1ZhbHVl
UGFpcjo6RHJvcElkZW50aWNhbFZhbHVlcykpOworICAgICAgICBzaGFwZS0+c2V0VG9wUmlnaHRS
YWRpdXMoQ1NTVmFsdWVQYWlyOjpjcmVhdGUoaG9yaXpvbnRhbFJhZGlpWzFdLCB2ZXJ0aWNhbFJh
ZGlpWzFdLCBDU1NWYWx1ZVBhaXI6OkRyb3BJZGVudGljYWxWYWx1ZXMpKTsKKyAgICAgICAgc2hh
cGUtPnNldEJvdHRvbVJpZ2h0UmFkaXVzKENTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhvcml6b250YWxS
YWRpaVsyXSwgdmVydGljYWxSYWRpaVsyXSwgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFs
dWVzKSk7CisgICAgICAgIHNoYXBlLT5zZXRCb3R0b21MZWZ0UmFkaXVzKENTU1ZhbHVlUGFpcjo6
Y3JlYXRlKGhvcml6b250YWxSYWRpaVszXSwgdmVydGljYWxSYWRpaVszXSwgQ1NTVmFsdWVQYWly
OjpEcm9wSWRlbnRpY2FsVmFsdWVzKSk7CisgICAgfQorICAgIHJldHVybiBzaGFwZTsKK30KKwor
c3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQmFzaWNTaGFwZShDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBDU1NWYWx1ZSog
c2hhcGUgPSBudWxscHRyOworICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgpICE9IEZ1bmN0aW9u
VG9rZW4pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5n
ZS5wZWVrKCkuZnVuY3Rpb25JZCgpOworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2VDb3B5
ID0gcmFuZ2U7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9u
KHJhbmdlQ29weSk7CisgICAgaWYgKGlkID09IENTU1ZhbHVlQ2lyY2xlKQorICAgICAgICBzaGFw
ZSA9IGNvbnN1bWVCYXNpY1NoYXBlQ2lyY2xlKGFyZ3MsIGNvbnRleHQpOworICAgIGVsc2UgaWYg
KGlkID09IENTU1ZhbHVlRWxsaXBzZSkKKyAgICAgICAgc2hhcGUgPSBjb25zdW1lQmFzaWNTaGFw
ZUVsbGlwc2UoYXJncywgY29udGV4dCk7CisgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVQb2x5
Z29uKQorICAgICAgICBzaGFwZSA9IGNvbnN1bWVCYXNpY1NoYXBlUG9seWdvbihhcmdzLCBjb250
ZXh0KTsKKyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZUluc2V0KQorICAgICAgICBzaGFwZSA9
IGNvbnN1bWVCYXNpY1NoYXBlSW5zZXQoYXJncywgY29udGV4dCk7CisgICAgaWYgKCFzaGFwZSB8
fCAhYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByYW5nZSA9IHJh
bmdlQ29weTsKKyAgICByZXR1cm4gc2hhcGU7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3Vt
ZVdlYmtpdENsaXBQYXRoKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJz
ZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NW
YWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIGlmIChD
U1NVUklWYWx1ZSogdXJsID0gY29uc3VtZVVybChyYW5nZSkpCisgICAgICAgIHJldHVybiB1cmw7
CisgICAgcmV0dXJuIGNvbnN1bWVCYXNpY1NoYXBlKHJhbmdlLCBjb250ZXh0KTsKK30KKworc3Rh
dGljIENTU1ZhbHVlKiBjb25zdW1lU2hhcGVPdXRzaWRlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIGlmIChDU1NWYWx1
ZSogaW1hZ2VWYWx1ZSA9IGNvbnN1bWVJbWFnZU9yTm9uZShyYW5nZSwgY29udGV4dCkpCisgICAg
ICAgIHJldHVybiBpbWFnZVZhbHVlOworICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBpZiAoQ1NTVmFsdWUqIGJveFZhbHVl
ID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQ29udGVudEJveCwgQ1NTVmFsdWVQYWRkaW5nQm94LCBD
U1NWYWx1ZUJvcmRlckJveCwgQ1NTVmFsdWVNYXJnaW5Cb3g+KHJhbmdlKSkKKyAgICAgICAgbGlz
dC0+YXBwZW5kKCpib3hWYWx1ZSk7CisgICAgaWYgKENTU1ZhbHVlKiBzaGFwZVZhbHVlID0gY29u
c3VtZUJhc2ljU2hhcGUocmFuZ2UsIGNvbnRleHQpKSB7CisgICAgICAgIGxpc3QtPmFwcGVuZCgq
c2hhcGVWYWx1ZSk7CisgICAgICAgIGlmIChsaXN0LT5sZW5ndGgoKSA8IDIpIHsKKyAgICAgICAg
ICAgIGlmIChDU1NWYWx1ZSogYm94VmFsdWUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVDb250ZW50
Qm94LCBDU1NWYWx1ZVBhZGRpbmdCb3gsIENTU1ZhbHVlQm9yZGVyQm94LCBDU1NWYWx1ZU1hcmdp
bkJveD4ocmFuZ2UpKQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCgqYm94VmFsdWUpOwor
ICAgICAgICB9CisgICAgfQorICAgIGlmICghbGlzdC0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiBsaXN0OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1
bWVDb250ZW50RGlzdHJpYnV0aW9uT3ZlcmZsb3dQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSkKK3sKKyAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1
ZUJhc2VsaW5lLCBDU1NWYWx1ZUxhc3RCYXNlbGluZT4ocmFuZ2UucGVlaygpLmlkKCkpKQorICAg
ICAgICByZXR1cm4gQ1NTQ29udGVudERpc3RyaWJ1dGlvblZhbHVlOjpjcmVhdGUoQ1NTVmFsdWVJ
bnZhbGlkLCByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCksIENTU1ZhbHVl
SW52YWxpZCk7CisKKyAgICBDU1NWYWx1ZUlEIGRpc3RyaWJ1dGlvbiA9IENTU1ZhbHVlSW52YWxp
ZDsKKyAgICBDU1NWYWx1ZUlEIHBvc2l0aW9uID0gQ1NTVmFsdWVJbnZhbGlkOworICAgIENTU1Zh
bHVlSUQgb3ZlcmZsb3cgPSBDU1NWYWx1ZUludmFsaWQ7CisgICAgZG8geworICAgICAgICBDU1NW
YWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgICAgIGlmIChpZGVudE1hdGNoZXM8
Q1NTVmFsdWVTcGFjZUJldHdlZW4sIENTU1ZhbHVlU3BhY2VBcm91bmQsIENTU1ZhbHVlU3BhY2VF
dmVubHksIENTU1ZhbHVlU3RyZXRjaD4oaWQpKSB7CisgICAgICAgICAgICBpZiAoZGlzdHJpYnV0
aW9uICE9IENTU1ZhbHVlSW52YWxpZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgICAgIGRpc3RyaWJ1dGlvbiA9IGlkOworICAgICAgICB9IGVsc2UgaWYgKGlkZW50
TWF0Y2hlczxDU1NWYWx1ZVN0YXJ0LCBDU1NWYWx1ZUVuZCwgQ1NTVmFsdWVDZW50ZXIsIENTU1Zh
bHVlRmxleFN0YXJ0LCBDU1NWYWx1ZUZsZXhFbmQsIENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdo
dD4oaWQpKSB7CisgICAgICAgICAgICBpZiAocG9zaXRpb24gIT0gQ1NTVmFsdWVJbnZhbGlkKQor
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgcG9zaXRpb24gPSBp
ZDsKKyAgICAgICAgfSBlbHNlIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVVbnNhZmUsIENTU1Zh
bHVlU2FmZT4oaWQpKSB7CisgICAgICAgICAgICBpZiAob3ZlcmZsb3cgIT0gQ1NTVmFsdWVJbnZh
bGlkKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgb3ZlcmZs
b3cgPSBpZDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICB9CisgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7Cisg
ICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpOworCisgICAgLy8gVGhlIGdyYW1tYXIgc3RhdGVz
IHRoYXQgd2Ugc2hvdWxkIGhhdmUgYXQgbGVhc3QgPGNvbnRlbnQtZGlzdHJpYnV0aW9uPiBvciA8
Y29udGVudC1wb3NpdGlvbj4uCisgICAgaWYgKHBvc2l0aW9uID09IENTU1ZhbHVlSW52YWxpZCAm
JiBkaXN0cmlidXRpb24gPT0gQ1NTVmFsdWVJbnZhbGlkKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIC8vIFRoZSBncmFtbWFyIHN0YXRlcyB0aGF0IDxvdmVyZmxvdy1wb3NpdGlvbj4g
bXVzdCBiZSBhc3NvY2lhdGVkIHRvIDxjb250ZW50LXBvc2l0aW9uPi4KKyAgICBpZiAob3ZlcmZs
b3cgIT0gQ1NTVmFsdWVJbnZhbGlkICYmIHBvc2l0aW9uID09IENTU1ZhbHVlSW52YWxpZCkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gQ1NTQ29udGVudERpc3RyaWJ1dGlv
blZhbHVlOjpjcmVhdGUoZGlzdHJpYnV0aW9uLCBwb3NpdGlvbiwgb3ZlcmZsb3cpOworfQorCitz
dGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVCb3JkZXJJbWFnZVJlcGVhdEtleXdvcmQo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgcmV0dXJuIGNvbnN1bWVJZGVudDxD
U1NWYWx1ZVN0cmV0Y2gsIENTU1ZhbHVlUmVwZWF0LCBDU1NWYWx1ZVNwYWNlLCBDU1NWYWx1ZVJv
dW5kPihyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUJvcmRlckltYWdlUmVw
ZWF0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBob3Jpem9udGFsID0gY29uc3VtZUJvcmRlckltYWdlUmVwZWF0S2V5d29yZChyYW5nZSk7Cisg
ICAgaWYgKCFob3Jpem9udGFsKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogdmVydGljYWwgPSBjb25zdW1lQm9yZGVySW1hZ2VSZXBlYXRLZXl3b3JkKHJh
bmdlKTsKKyAgICBpZiAoIXZlcnRpY2FsKQorICAgICAgICB2ZXJ0aWNhbCA9IGhvcml6b250YWw7
CisgICAgcmV0dXJuIENTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhvcml6b250YWwsIHZlcnRpY2FsLCBD
U1NWYWx1ZVBhaXI6OkRyb3BJZGVudGljYWxWYWx1ZXMpOworfQorCitzdGF0aWMgQ1NTVmFsdWUq
IGNvbnN1bWVCb3JkZXJJbWFnZVNsaWNlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGJvb2wgZmlsbCA9IGNvbnN1bWVJZGVudDxDU1NW
YWx1ZUZpbGw+KHJhbmdlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2xpY2VzWzRdID0geyAw
IH07CisKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgNDsgKytpbmRleCkgewor
ICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUgPSBjb25zdW1lUGVyY2VudChyYW5nZSwg
VmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAg
IHZhbHVlID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAg
ICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBzbGljZXNbaW5k
ZXhdID0gdmFsdWU7CisgICAgfQorICAgIGlmICghc2xpY2VzWzBdKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBpZiAoY29uc3VtZUlkZW50PENTU1ZhbHVlRmlsbD4ocmFuZ2UpKSB7Cisg
ICAgICAgIGlmIChmaWxsKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGZp
bGwgPSB0cnVlOworICAgIH0KKyAgICBjb21wbGV0ZTRTaWRlcyhzbGljZXMpOworICAgIC8vIEZJ
WE1FOiBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIC13ZWJraXQtYm9yZGVyLWltYWdlLCAt
d2Via2l0LW1hc2stYm94LWltYWdlIGFuZCAtd2Via2l0LWJveC1yZWZsZWN0IGhhdmUgdG8gZG8g
YSBmaWxsIGJ5IGRlZmF1bHQuCisgICAgLy8gRklYTUU6IFdoYXQgZG8gd2UgZG8gd2l0aCAtd2Vi
a2l0LWJveC1yZWZsZWN0IGFuZCAtd2Via2l0LW1hc2stYm94LWltYWdlPyBQcm9iYWJseSBqdXN0
IGhhdmUgdG8gbGVhdmUgdGhlbSBmaWxsaW5nLi4uCisgICAgaWYgKHByb3BlcnR5ID09IENTU1By
b3BlcnR5V2Via2l0Qm9yZGVySW1hZ2UgfHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRN
YXNrQm94SW1hZ2UgfHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3hSZWZsZWN0KQor
ICAgICAgICBmaWxsID0gdHJ1ZTsKKyAgICByZXR1cm4gQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVl
OjpjcmVhdGUoQ1NTUXVhZFZhbHVlOjpjcmVhdGUoc2xpY2VzWzBdLCBzbGljZXNbMV0sIHNsaWNl
c1syXSwgc2xpY2VzWzNdLCBDU1NRdWFkVmFsdWU6OlNlcmlhbGl6ZUFzUXVhZCksIGZpbGwpOwor
fQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVCb3JkZXJJbWFnZU91dHNldChDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogb3V0c2V0c1s0XSA9
IHsgMCB9OworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlID0gbnVsbHB0cjsKKyAgICBm
b3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgNDsgKytpbmRleCkgeworICAgICAgICB2YWx1
ZSA9IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAg
IGlmICghdmFsdWUpCisgICAgICAgICAgICB2YWx1ZSA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIEhU
TUxTdGFuZGFyZE1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgIGlmICghdmFs
dWUpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgb3V0c2V0c1tpbmRleF0gPSB2YWx1ZTsK
KyAgICB9CisgICAgaWYgKCFvdXRzZXRzWzBdKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBjb21wbGV0ZTRTaWRlcyhvdXRzZXRzKTsKKyAgICByZXR1cm4gQ1NTUXVhZFZhbHVlOjpjcmVh
dGUob3V0c2V0c1swXSwgb3V0c2V0c1sxXSwgb3V0c2V0c1syXSwgb3V0c2V0c1szXSwgQ1NTUXVh
ZFZhbHVlOjpTZXJpYWxpemVBc1F1YWQpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVC
b3JkZXJJbWFnZVdpZHRoKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIENTU1By
aW1pdGl2ZVZhbHVlKiB3aWR0aHNbNF0gPSB7IDAgfTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiB2YWx1ZSA9IG51bGxwdHI7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IDQ7
ICsraW5kZXgpIHsKKyAgICAgICAgdmFsdWUgPSBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJh
bmdlTm9uTmVnYXRpdmUpOworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgdmFsdWUg
PSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBIVE1MU3RhbmRhcmRNb2RlLCBWYWx1ZVJh
bmdlTm9uTmVnYXRpdmUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CisgICAgICAgIGlmICghdmFs
dWUpCisgICAgICAgICAgICB2YWx1ZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUF1dG8+KHJhbmdl
KTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB3aWR0
aHNbaW5kZXhdID0gdmFsdWU7CisgICAgfQorICAgIGlmICghd2lkdGhzWzBdKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBjb21wbGV0ZTRTaWRlcyh3aWR0aHMpOworICAgIHJldHVybiBD
U1NRdWFkVmFsdWU6OmNyZWF0ZSh3aWR0aHNbMF0sIHdpZHRoc1sxXSwgd2lkdGhzWzJdLCB3aWR0
aHNbM10sIENTU1F1YWRWYWx1ZTo6U2VyaWFsaXplQXNRdWFkKTsKK30KKworc3RhdGljIGJvb2wg
Y29uc3VtZUJvcmRlckltYWdlQ29tcG9uZW50cyhDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwg
Q1NTVmFsdWUqJiBzb3VyY2UsCisgICAgQ1NTVmFsdWUqJiBzbGljZSwgQ1NTVmFsdWUqJiB3aWR0
aCwgQ1NTVmFsdWUqJiBvdXRzZXQsIENTU1ZhbHVlKiYgcmVwZWF0KQoreworICAgIGRvIHsKKyAg
ICAgICAgaWYgKCFzb3VyY2UpIHsKKyAgICAgICAgICAgIHNvdXJjZSA9IGNvbnN1bWVJbWFnZU9y
Tm9uZShyYW5nZSwgY29udGV4dCk7CisgICAgICAgICAgICBpZiAoc291cmNlKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICghcmVwZWF0KSB7CisgICAg
ICAgICAgICByZXBlYXQgPSBjb25zdW1lQm9yZGVySW1hZ2VSZXBlYXQocmFuZ2UpOworICAgICAg
ICAgICAgaWYgKHJlcGVhdCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoIXNsaWNlKSB7CisgICAgICAgICAgICBzbGljZSA9IGNvbnN1bWVCb3JkZXJJ
bWFnZVNsaWNlKHByb3BlcnR5LCByYW5nZSk7CisgICAgICAgICAgICBpZiAoc2xpY2UpIHsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQoIXdpZHRoICYmICFvdXRzZXQpOworICAgICAgICAgICAgICAg
IGlmIChjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSkgeworICAgICAgICAg
ICAgICAgICAgICB3aWR0aCA9IGNvbnN1bWVCb3JkZXJJbWFnZVdpZHRoKHJhbmdlKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2Up
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXRzZXQgPSBjb25zdW1lQm9yZGVySW1hZ2VP
dXRzZXQocmFuZ2UpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvdXRzZXQpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKCF3aWR0aCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICB9IHdoaWxlICghcmFuZ2UuYXRFbmQoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0
YXRpYyBDU1NWYWx1ZSogY29uc3VtZVdlYmtpdEJvcmRlckltYWdlKENTU1Byb3BlcnR5SUQgcHJv
cGVydHksIENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0
JiBjb250ZXh0KQoreworICAgIENTU1ZhbHVlKiBzb3VyY2UgPSBudWxscHRyOworICAgIENTU1Zh
bHVlKiBzbGljZSA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIHdpZHRoID0gbnVsbHB0cjsKKyAg
ICBDU1NWYWx1ZSogb3V0c2V0ID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogcmVwZWF0ID0gbnVs
bHB0cjsKKyAgICBpZiAoY29uc3VtZUJvcmRlckltYWdlQ29tcG9uZW50cyhwcm9wZXJ0eSwgcmFu
Z2UsIGNvbnRleHQsIHNvdXJjZSwgc2xpY2UsIHdpZHRoLCBvdXRzZXQsIHJlcGVhdCkpCisgICAg
ICAgIHJldHVybiBjcmVhdGVCb3JkZXJJbWFnZVZhbHVlKHNvdXJjZSwgc2xpY2UsIHdpZHRoLCBv
dXRzZXQsIHJlcGVhdCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1
ZSogY29uc3VtZVJlZmxlY3QoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1Bh
cnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGRpcmVjdGlv
biA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUFib3ZlLCBDU1NWYWx1ZUJlbG93LCBDU1NWYWx1ZUxl
ZnQsIENTU1ZhbHVlUmlnaHQ+KHJhbmdlKTsKKyAgICBpZiAoIWRpcmVjdGlvbikKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogb2Zmc2V0ID0gbnVsbHB0
cjsKKyAgICBpZiAocmFuZ2UuYXRFbmQoKSkgeworICAgICAgICBvZmZzZXQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKDAsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGl4ZWxzKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBvZmZzZXQgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJh
bmdlLCBjb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZUFsbCwgVW5pdGxlc3NRdWlyazo6Rm9yYmlk
KTsKKyAgICAgICAgaWYgKCFvZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisKKyAgICBDU1NWYWx1ZSogbWFzayA9IG51bGxwdHI7CisgICAgaWYgKCFyYW5nZS5hdEVu
ZCgpKSB7CisgICAgICAgIG1hc2sgPSBjb25zdW1lV2Via2l0Qm9yZGVySW1hZ2UoQ1NTUHJvcGVy
dHlXZWJraXRCb3hSZWZsZWN0LCByYW5nZSwgY29udGV4dCk7CisgICAgICAgIGlmICghbWFzaykK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4gQ1NTUmVmbGVj
dFZhbHVlOjpjcmVhdGUoZGlyZWN0aW9uLCBvZmZzZXQsIG1hc2spOworfQorCitzdGF0aWMgQ1NT
VmFsdWUqIGNvbnN1bWVGb250U2l6ZUFkanVzdChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkK
K3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICBy
ZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZU51bWJlcihyYW5n
ZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1l
SW1hZ2VPcmllbnRhdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAo
cmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVGcm9tSW1hZ2UpCisgICAgICAgIHJldHVybiBj
b25zdW1lSWRlbnQocmFuZ2UpOworICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgpICE9IE51bWJl
clRva2VuKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBhbmdsZSA9IGNvbnN1bWVBbmds
ZShyYW5nZSk7CisgICAgICAgIGlmIChhbmdsZSAmJiBhbmdsZS0+Z2V0RG91YmxlVmFsdWUoKSA9
PSAwKQorICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQmFja2dyb3VuZEJsZW5kTW9kZShDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVl
aygpLmlkKCk7CisgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVl
T3ZlcmxheSB8fCAoaWQgPj0gQ1NTVmFsdWVNdWx0aXBseSAmJiBpZCA8PSBDU1NWYWx1ZUx1bWlu
b3NpdHkpKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQmFja2dyb3VuZEF0dGFjaG1l
bnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgcmV0dXJuIGNvbnN1bWVJZGVu
dDxDU1NWYWx1ZVNjcm9sbCwgQ1NTVmFsdWVGaXhlZCwgQ1NTVmFsdWVMb2NhbD4ocmFuZ2UpOwor
fQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVCYWNrZ3JvdW5kQm94KENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVCb3JkZXJC
b3gsIENTU1ZhbHVlUGFkZGluZ0JveCwgQ1NTVmFsdWVDb250ZW50Qm94PihyYW5nZSk7Cit9CisK
K3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUJhY2tncm91bmRDb21wb3NpdGUoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgcmV0dXJuIGNvbnN1bWVJZGVudFJhbmdlKHJhbmdlLCBD
U1NWYWx1ZUNsZWFyLCBDU1NWYWx1ZVBsdXNMaWdodGVyKTsKK30KKworc3RhdGljIENTU1ZhbHVl
KiBjb25zdW1lTWFza1NvdXJjZVR5cGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7Cisg
ICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc01hc2tTb3VyY2VUeXBlRW5hYmxl
ZCgpKTsKKyAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVBbHBo
YSwgQ1NTVmFsdWVMdW1pbmFuY2U+KHJhbmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25z
dW1lUHJlZml4ZWRCYWNrZ3JvdW5kQm94KENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQorewor
ICAgIC8vIFRoZSB2YWx1ZXMgJ2JvcmRlcicsICdwYWRkaW5nJyBhbmQgJ2NvbnRlbnQnIGFyZSBk
ZXByZWNhdGVkIGFuZCBkbyBub3QgYXBwbHkgdG8gdGhlIHZlcnNpb24gb2YgdGhlIHByb3BlcnR5
IHRoYXQgaGFzIHRoZSAtd2Via2l0LSBwcmVmaXggcmVtb3ZlZC4KKyAgICBpZiAoQ1NTVmFsdWUq
IHZhbHVlID0gY29uc3VtZUlkZW50UmFuZ2UocmFuZ2UsIENTU1ZhbHVlQm9yZGVyLCBDU1NWYWx1
ZVBhZGRpbmdCb3gpKQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgaWYgKChwcm9wZXJ0eSA9
PSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDbGlwIHx8IHByb3BlcnR5ID09IENTU1Byb3Bl
cnR5V2Via2l0TWFza0NsaXApICYmIHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlVGV4dCkK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUJhY2tncm91bmRTaXplKENTU1Byb3BlcnR5
SUQgdW5yZXNvbHZlZFByb3BlcnR5LCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFy
c2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVD
b250YWluLCBDU1NWYWx1ZUNvdmVyPihyYW5nZS5wZWVrKCkuaWQoKSkpCisgICAgICAgIHJldHVy
biBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGhvcml6b250
YWwgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBdXRvPihyYW5nZSk7CisgICAgaWYgKCFob3Jpem9u
dGFsKQorICAgICAgICBob3Jpem9udGFsID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwg
Y3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKKwor
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2ZXJ0aWNhbCA9IG51bGxwdHI7CisgICAgaWYgKCFyYW5n
ZS5hdEVuZCgpKSB7CisgICAgICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1
dG8pIC8vIGBhdXRvJyBpcyB0aGUgZGVmYXVsdAorICAgICAgICAgICAgcmFuZ2UuY29uc3VtZUlu
Y2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdmVydGljYWwg
PSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdl
QWxsLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworICAgIH0gZWxzZSBpZiAodW5yZXNvbHZlZFBy
b3BlcnR5ID09IENTU1Byb3BlcnR5QWxpYXNXZWJraXRCYWNrZ3JvdW5kU2l6ZSkgeworICAgICAg
ICAvLyBMZWdhY3kgc3ludGF4OiAiLXdlYmtpdC1iYWNrZ3JvdW5kLXNpemU6IDEwcHgiIGlzIGVx
dWl2YWxlbnQgdG8gImJhY2tncm91bmQtc2l6ZTogMTBweCAxMHB4Ii4KKyAgICAgICAgdmVydGlj
YWwgPSBob3Jpem9udGFsOworICAgIH0KKyAgICBpZiAoIXZlcnRpY2FsKQorICAgICAgICByZXR1
cm4gaG9yaXpvbnRhbDsKKyAgICByZXR1cm4gQ1NTVmFsdWVQYWlyOjpjcmVhdGUoaG9yaXpvbnRh
bCwgdmVydGljYWwsIENTU1ZhbHVlUGFpcjo6S2VlcElkZW50aWNhbFZhbHVlcyk7Cit9CisKK3N0
YXRpYyBDU1NWYWx1ZUxpc3QqIGNvbnN1bWVHcmlkQXV0b0Zsb3coQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHJvd09yQ29sdW1uVmFsdWUgPSBj
b25zdW1lSWRlbnQ8Q1NTVmFsdWVSb3csIENTU1ZhbHVlQ29sdW1uPihyYW5nZSk7CisgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIGRlbnNlQWxnb3JpdGhtID0gY29uc3VtZUlkZW50PENTU1ZhbHVlRGVu
c2U+KHJhbmdlKTsKKyAgICBpZiAoIXJvd09yQ29sdW1uVmFsdWUpIHsKKyAgICAgICAgcm93T3JD
b2x1bW5WYWx1ZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZVJvdywgQ1NTVmFsdWVDb2x1bW4+KHJh
bmdlKTsKKyAgICAgICAgaWYgKCFyb3dPckNvbHVtblZhbHVlICYmICFkZW5zZUFsZ29yaXRobSkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBDU1NWYWx1ZUxpc3QqIHBh
cnNlZFZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBp
ZiAocm93T3JDb2x1bW5WYWx1ZSkKKyAgICAgICAgcGFyc2VkVmFsdWVzLT5hcHBlbmQoKnJvd09y
Q29sdW1uVmFsdWUpOworICAgIGlmIChkZW5zZUFsZ29yaXRobSkKKyAgICAgICAgcGFyc2VkVmFs
dWVzLT5hcHBlbmQoKmRlbnNlQWxnb3JpdGhtKTsKKyAgICByZXR1cm4gcGFyc2VkVmFsdWVzOwor
fQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVCYWNrZ3JvdW5kQ29tcG9uZW50KENTU1Byb3Bl
cnR5SUQgdW5yZXNvbHZlZFByb3BlcnR5LCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29u
c3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBzd2l0Y2ggKHVucmVzb2x2ZWRQ
cm9wZXJ0eSkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcDoKKyAgICAgICAg
cmV0dXJuIGNvbnN1bWVCYWNrZ3JvdW5kQm94KHJhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
QmFja2dyb3VuZEJsZW5kTW9kZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCYWNrZ3JvdW5kQmxl
bmRNb2RlKHJhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQ6
CisgICAgICAgIHJldHVybiBjb25zdW1lQmFja2dyb3VuZEF0dGFjaG1lbnQocmFuZ2UpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luOgorICAgICAgICByZXR1cm4gY29uc3Vt
ZUJhY2tncm91bmRCb3gocmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29t
cG9zaXRlOgorICAgICAgICByZXR1cm4gY29uc3VtZUJhY2tncm91bmRDb21wb3NpdGUocmFuZ2Up
OworICAgIGNhc2UgQ1NTUHJvcGVydHlNYXNrU291cmNlVHlwZToKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVNYXNrU291cmNlVHlwZShyYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJh
Y2tncm91bmRDbGlwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kT3JpZ2lu
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFza09yaWdpbjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVQcmVmaXhlZEJhY2tn
cm91bmRCb3godW5yZXNvbHZlZFByb3BlcnR5LCByYW5nZSwgY29udGV4dCk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFz
a0ltYWdlOgorICAgICAgICByZXR1cm4gY29uc3VtZUltYWdlT3JOb25lKHJhbmdlLCBjb250ZXh0
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVQb3Np
dGlvblgocmFuZ2UsIGNvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dy
b3VuZFBvc2l0aW9uWToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWToK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVQb3NpdGlvblkocmFuZ2UsIGNvbnRleHQubW9kZSgpKTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemU6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUFsaWFzV2Via2l0QmFja2dyb3VuZFNpemU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tTaXplOgorICAgICAgICByZXR1cm4gY29uc3VtZUJhY2tncm91bmRTaXplKHVucmVzb2x2ZWRQ
cm9wZXJ0eSwgcmFuZ2UsIGNvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yOgorICAgICAgICByZXR1cm4gY29uc3VtZUNvbG9yKHJhbmdlLCBjb250ZXh0
Lm1vZGUoKSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKworc3RhdGljIHZvaWQgYWRkQmFja2dyb3VuZFZhbHVlKENTU1ZhbHVl
KiYgbGlzdCwgQ1NTVmFsdWUqIHZhbHVlKQoreworICAgIGlmIChsaXN0KSB7CisgICAgICAgIGlm
ICghbGlzdC0+aXNCYXNlVmFsdWVMaXN0KCkpIHsKKyAgICAgICAgICAgIENTU1ZhbHVlKiBmaXJz
dFZhbHVlID0gbGlzdDsKKyAgICAgICAgICAgIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNv
bW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICB0b0NTU1ZhbHVlTGlzdChsaXN0KS0+YXBwZW5k
KCpmaXJzdFZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICB0b0NTU1ZhbHVlTGlzdChsaXN0KS0+
YXBwZW5kKCp2YWx1ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gVG8gY29uc2VydmUgbWVt
b3J5IHdlIGRvbid0IGFjdHVhbGx5IHdyYXAgYSBzaW5nbGUgdmFsdWUgaW4gYSBsaXN0LgorICAg
ICAgICBsaXN0ID0gdmFsdWU7CisgICAgfQorfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVD
b21tYVNlcGFyYXRlZEJhY2tncm91bmRDb21wb25lbnQoQ1NTUHJvcGVydHlJRCB1bnJlc29sdmVk
UHJvcGVydHksIENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250
ZXh0JiBjb250ZXh0KQoreworICAgIENTU1ZhbHVlKiByZXN1bHQgPSBudWxscHRyOworICAgIGRv
IHsKKyAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gY29uc3VtZUJhY2tncm91bmRDb21wb25lbnQo
dW5yZXNvbHZlZFByb3BlcnR5LCByYW5nZSwgY29udGV4dCk7CisgICAgICAgIGlmICghdmFsdWUp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgYWRkQmFja2dyb3VuZFZhbHVl
KHJlc3VsdCwgdmFsdWUpOworICAgIH0gd2hpbGUgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRl
c3BhY2UocmFuZ2UpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgQ1NTUHJpbWl0
aXZlVmFsdWUqIGNvbnN1bWVTZWxmUG9zaXRpb25LZXl3b3JkKENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlKQoreworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICBp
ZiAoaWQgPT0gQ1NTVmFsdWVTdGFydCB8fCBpZCA9PSBDU1NWYWx1ZUVuZCB8fCBpZCA9PSBDU1NW
YWx1ZUNlbnRlcgorICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVNlbGZTdGFydCB8fCBpZCA9PSBD
U1NWYWx1ZVNlbGZFbmQgfHwgaWQgPT0gQ1NTVmFsdWVGbGV4U3RhcnQKKyAgICAgICAgfHwgaWQg
PT0gQ1NTVmFsdWVGbGV4RW5kIHx8IGlkID09IENTU1ZhbHVlTGVmdCB8fCBpZCA9PSBDU1NWYWx1
ZVJpZ2h0KQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lU2VsZlBvc2l0aW9uT3ZlcmZs
b3dQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAoaWRlbnRN
YXRjaGVzPENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlU3RyZXRjaCwgQ1NT
VmFsdWVCYXNlbGluZSwgQ1NTVmFsdWVMYXN0QmFzZWxpbmU+KHJhbmdlLnBlZWsoKS5pZCgpKSkK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBDU1NQcmltaXRpdmVW
YWx1ZSogb3ZlcmZsb3dQb3NpdGlvbiA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZVVuc2FmZSwgQ1NT
VmFsdWVTYWZlPihyYW5nZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlbGZQb3NpdGlvbiA9
IGNvbnN1bWVTZWxmUG9zaXRpb25LZXl3b3JkKHJhbmdlKTsKKyAgICBpZiAoIXNlbGZQb3NpdGlv
bikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFvdmVyZmxvd1Bvc2l0aW9uKQor
ICAgICAgICBvdmVyZmxvd1Bvc2l0aW9uID0gY29uc3VtZUlkZW50PENTU1ZhbHVlVW5zYWZlLCBD
U1NWYWx1ZVNhZmU+KHJhbmdlKTsKKyAgICBpZiAob3ZlcmZsb3dQb3NpdGlvbikKKyAgICAgICAg
cmV0dXJuIENTU1ZhbHVlUGFpcjo6Y3JlYXRlKHNlbGZQb3NpdGlvbiwgb3ZlcmZsb3dQb3NpdGlv
biwgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVzKTsKKyAgICByZXR1cm4gc2VsZlBv
c2l0aW9uOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVBbGlnbkl0ZW1zKENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIC8vIGFsaWduLWl0ZW1zIHByb3BlcnR5IGRvZXMg
bm90IGFsbG93IHRoZSAnYXV0bycgdmFsdWUuCisgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1
ZUF1dG8+KHJhbmdlLnBlZWsoKS5pZCgpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuIGNvbnN1bWVTZWxmUG9zaXRpb25PdmVyZmxvd1Bvc2l0aW9uKHJhbmdlKTsKK30KKwor
c3RhdGljIENTU1ZhbHVlKiBjb25zdW1lSnVzdGlmeUl0ZW1zKENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlKQoreworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2VDb3B5ID0gcmFuZ2U7Cisg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGxlZ2FjeSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUxlZ2Fj
eT4ocmFuZ2VDb3B5KTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcG9zaXRpb25LZXl3b3JkID0g
Y29uc3VtZUlkZW50PENTU1ZhbHVlQ2VudGVyLCBDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+
KHJhbmdlQ29weSk7CisgICAgaWYgKCFsZWdhY3kpCisgICAgICAgIGxlZ2FjeSA9IGNvbnN1bWVJ
ZGVudDxDU1NWYWx1ZUxlZ2FjeT4ocmFuZ2VDb3B5KTsKKyAgICBpZiAobGVnYWN5ICYmIHBvc2l0
aW9uS2V5d29yZCkgeworICAgICAgICByYW5nZSA9IHJhbmdlQ29weTsKKyAgICAgICAgcmV0dXJu
IENTU1ZhbHVlUGFpcjo6Y3JlYXRlKGxlZ2FjeSwgcG9zaXRpb25LZXl3b3JkLCBDU1NWYWx1ZVBh
aXI6OkRyb3BJZGVudGljYWxWYWx1ZXMpOworICAgIH0KKyAgICByZXR1cm4gY29uc3VtZVNlbGZQ
b3NpdGlvbk92ZXJmbG93UG9zaXRpb24ocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTQ3VzdG9tSWRl
bnRWYWx1ZSogY29uc3VtZUN1c3RvbUlkZW50Rm9yR3JpZExpbmUoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0byB8
fCByYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZVNwYW4pCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiBjb25zdW1lQ3VzdG9tSWRlbnQocmFuZ2UpOworfQorCitzdGF0aWMg
Q1NTVmFsdWUqIGNvbnN1bWVHcmlkTGluZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sK
KyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICByZXR1
cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzcGFuVmFs
dWUgPSBudWxscHRyOworICAgIENTU0N1c3RvbUlkZW50VmFsdWUqIGdyaWRMaW5lTmFtZSA9IG51
bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIG51bWVyaWNWYWx1ZSA9IGNvbnN1bWVJbnRl
Z2VyKHJhbmdlKTsKKyAgICBpZiAobnVtZXJpY1ZhbHVlKSB7CisgICAgICAgIGdyaWRMaW5lTmFt
ZSA9IGNvbnN1bWVDdXN0b21JZGVudEZvckdyaWRMaW5lKHJhbmdlKTsKKyAgICAgICAgc3BhblZh
bHVlID0gY29uc3VtZUlkZW50PENTU1ZhbHVlU3Bhbj4ocmFuZ2UpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIHNwYW5WYWx1ZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZVNwYW4+KHJhbmdlKTsKKyAg
ICAgICAgaWYgKHNwYW5WYWx1ZSkgeworICAgICAgICAgICAgbnVtZXJpY1ZhbHVlID0gY29uc3Vt
ZUludGVnZXIocmFuZ2UpOworICAgICAgICAgICAgZ3JpZExpbmVOYW1lID0gY29uc3VtZUN1c3Rv
bUlkZW50Rm9yR3JpZExpbmUocmFuZ2UpOworICAgICAgICAgICAgaWYgKCFudW1lcmljVmFsdWUp
CisgICAgICAgICAgICAgICAgbnVtZXJpY1ZhbHVlID0gY29uc3VtZUludGVnZXIocmFuZ2UpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZ3JpZExpbmVOYW1lID0gY29uc3VtZUN1c3Rv
bUlkZW50Rm9yR3JpZExpbmUocmFuZ2UpOworICAgICAgICAgICAgaWYgKGdyaWRMaW5lTmFtZSkg
eworICAgICAgICAgICAgICAgIG51bWVyaWNWYWx1ZSA9IGNvbnN1bWVJbnRlZ2VyKHJhbmdlKTsK
KyAgICAgICAgICAgICAgICBzcGFuVmFsdWUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVTcGFuPihy
YW5nZSk7CisgICAgICAgICAgICAgICAgaWYgKCFzcGFuVmFsdWUgJiYgIW51bWVyaWNWYWx1ZSkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdyaWRMaW5lTmFtZTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc3BhblZhbHVlICYmICFudW1lcmljVmFsdWUgJiYg
IWdyaWRMaW5lTmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7IC8vICJzcGFuIiBrZXl3b3Jk
IGFsb25lIGlzIGludmFsaWQuCisgICAgaWYgKHNwYW5WYWx1ZSAmJiBudW1lcmljVmFsdWUgJiYg
bnVtZXJpY1ZhbHVlLT5nZXRJbnRWYWx1ZSgpIDwgMCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
IC8vIE5lZ2F0aXZlIG51bWJlcnMgYXJlIG5vdCBhbGxvd2VkIGZvciBzcGFuLgorICAgIGlmIChu
dW1lcmljVmFsdWUgJiYgbnVtZXJpY1ZhbHVlLT5nZXRJbnRWYWx1ZSgpID09IDApCisgICAgICAg
IHJldHVybiBudWxscHRyOyAvLyBBbiA8aW50ZWdlcj4gdmFsdWUgb2YgemVybyBtYWtlcyB0aGUg
ZGVjbGFyYXRpb24gaW52YWxpZC4KKworICAgIENTU1ZhbHVlTGlzdCogdmFsdWVzID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGlmIChzcGFuVmFsdWUpCisgICAg
ICAgIHZhbHVlcy0+YXBwZW5kKCpzcGFuVmFsdWUpOworICAgIGlmIChudW1lcmljVmFsdWUpCisg
ICAgICAgIHZhbHVlcy0+YXBwZW5kKCpudW1lcmljVmFsdWUpOworICAgIGlmIChncmlkTGluZU5h
bWUpCisgICAgICAgIHZhbHVlcy0+YXBwZW5kKCpncmlkTGluZU5hbWUpOworICAgIEFTU0VSVCh2
YWx1ZXMtPmxlbmd0aCgpKTsKKyAgICByZXR1cm4gdmFsdWVzOworfQorCitzdGF0aWMgYm9vbCBp
c0dyaWRUcmFja0ZpeGVkU2l6ZWQoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZh
bHVlKQoreworICAgIENTU1ZhbHVlSUQgdmFsdWVJRCA9IHByaW1pdGl2ZVZhbHVlLmdldFZhbHVl
SUQoKTsKKyAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU1pbkNvbnRlbnQgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZU1heENvbnRlbnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgcHJpbWl0
aXZlVmFsdWUuaXNGbGV4KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0
cnVlOworfQorCitzdGF0aWMgYm9vbCBpc0dyaWRUcmFja0ZpeGVkU2l6ZWQoY29uc3QgQ1NTVmFs
dWUmIHZhbHVlKQoreworICAgIGlmICh2YWx1ZS5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAg
IHJldHVybiBpc0dyaWRUcmFja0ZpeGVkU2l6ZWQodG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSkp
OworCisgICAgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIG1pblByaW1pdGl2ZVZhbHVlID0gdG9D
U1NQcmltaXRpdmVWYWx1ZSh0b0NTU0Z1bmN0aW9uVmFsdWUodmFsdWUpLml0ZW0oMCkpOworICAg
IGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBtYXhQcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0
aXZlVmFsdWUodG9DU1NGdW5jdGlvblZhbHVlKHZhbHVlKS5pdGVtKDEpKTsKKyAgICByZXR1cm4g
aXNHcmlkVHJhY2tGaXhlZFNpemVkKG1pblByaW1pdGl2ZVZhbHVlKSB8fCBpc0dyaWRUcmFja0Zp
eGVkU2l6ZWQobWF4UHJpbWl0aXZlVmFsdWUpOworfQorCitzdGF0aWMgVmVjdG9yPFN0cmluZz4g
cGFyc2VHcmlkVGVtcGxhdGVBcmVhc0NvbHVtbk5hbWVzKGNvbnN0IFN0cmluZyYgZ3JpZFJvd05h
bWVzKQoreworICAgIEFTU0VSVCghZ3JpZFJvd05hbWVzLmlzRW1wdHkoKSk7CisgICAgVmVjdG9y
PFN0cmluZz4gY29sdW1uTmFtZXM7CisgICAgLy8gVXNpbmcgU3RyaW5nSW1wbCB0byBhdm9pZCBj
aGVja3MgYW5kIGluZGlyZWN0aW9uIGluIGV2ZXJ5IGNhbGwgdG8gU3RyaW5nOjpvcGVyYXRvcltd
LgorICAgIFN0cmluZ0ltcGwmIHRleHQgPSAqZ3JpZFJvd05hbWVzLmltcGwoKTsKKworICAgIFN0
cmluZ0J1aWxkZXIgYXJlYU5hbWU7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRleHQu
bGVuZ3RoKCk7ICsraSkgeworICAgICAgICBpZiAoaXNDU1NTcGFjZSh0ZXh0W2ldKSkgeworICAg
ICAgICAgICAgaWYgKCFhcmVhTmFtZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBjb2x1
bW5OYW1lcy5hcHBlbmQoYXJlYU5hbWUudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgYXJl
YU5hbWUuY2xlYXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CisgICAgICAgIGlmICh0ZXh0W2ldID09ICcuJykgeworICAgICAgICAgICAgaWYgKGFy
ZWFOYW1lID09ICIuIikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlm
ICghYXJlYU5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgY29sdW1uTmFtZXMuYXBw
ZW5kKGFyZWFOYW1lLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGFyZWFOYW1lLmNsZWFy
KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoIWlz
TmFtZUNvZGVQb2ludCh0ZXh0W2ldKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gVmVjdG9yPFN0
cmluZz4oKTsKKyAgICAgICAgICAgIGlmIChhcmVhTmFtZSA9PSAiLiIpIHsKKyAgICAgICAgICAg
ICAgICBjb2x1bW5OYW1lcy5hcHBlbmQoYXJlYU5hbWUudG9TdHJpbmcoKSk7CisgICAgICAgICAg
ICAgICAgYXJlYU5hbWUuY2xlYXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIGFyZWFOYW1lLmFwcGVuZCh0ZXh0W2ldKTsKKyAgICB9CisKKyAgICBpZiAoIWFyZWFOYW1l
LmlzRW1wdHkoKSkKKyAgICAgICAgY29sdW1uTmFtZXMuYXBwZW5kKGFyZWFOYW1lLnRvU3RyaW5n
KCkpOworCisgICAgcmV0dXJuIGNvbHVtbk5hbWVzOworfQorCitzdGF0aWMgYm9vbCBwYXJzZUdy
aWRUZW1wbGF0ZUFyZWFzUm93KGNvbnN0IFN0cmluZyYgZ3JpZFJvd05hbWVzLCBOYW1lZEdyaWRB
cmVhTWFwJiBncmlkQXJlYU1hcCwgY29uc3Qgc2l6ZV90IHJvd0NvdW50LCBzaXplX3QmIGNvbHVt
bkNvdW50KQoreworICAgIGlmIChncmlkUm93TmFtZXMuaXNFbXB0eSgpIHx8IGdyaWRSb3dOYW1l
cy5jb250YWluc09ubHlXaGl0ZXNwYWNlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IFZlY3RvcjxTdHJpbmc+IGNvbHVtbk5hbWVzID0gcGFyc2VHcmlkVGVtcGxhdGVBcmVhc0NvbHVt
bk5hbWVzKGdyaWRSb3dOYW1lcyk7CisgICAgaWYgKHJvd0NvdW50ID09IDApIHsKKyAgICAgICAg
Y29sdW1uQ291bnQgPSBjb2x1bW5OYW1lcy5zaXplKCk7CisgICAgICAgIGlmIChjb2x1bW5Db3Vu
dCA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gZWxzZSBpZiAoY29sdW1u
Q291bnQgIT0gY29sdW1uTmFtZXMuc2l6ZSgpKSB7CisgICAgICAgIC8vIFRoZSBkZWNsYXJhdGlv
biBpcyBpbnZhbGlkIGlmIGFsbCB0aGUgcm93cyBkb24ndCBoYXZlIHRoZSBudW1iZXIgb2YgY29s
dW1ucy4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGN1
cnJlbnRDb2x1bW4gPSAwOyBjdXJyZW50Q29sdW1uIDwgY29sdW1uQ291bnQ7ICsrY3VycmVudENv
bHVtbikgeworICAgICAgICBjb25zdCBTdHJpbmcmIGdyaWRBcmVhTmFtZSA9IGNvbHVtbk5hbWVz
W2N1cnJlbnRDb2x1bW5dOworCisgICAgICAgIC8vIFVuYW1lZCBhcmVhcyBhcmUgYWx3YXlzIHZh
bGlkICh3ZSBjb25zaWRlciB0aGVtIHRvIGJlIDF4MSkuCisgICAgICAgIGlmIChncmlkQXJlYU5h
bWUgPT0gIi4iKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgc2l6ZV90IGxvb2tB
aGVhZENvbHVtbiA9IGN1cnJlbnRDb2x1bW4gKyAxOworICAgICAgICB3aGlsZSAobG9va0FoZWFk
Q29sdW1uIDwgY29sdW1uQ291bnQgJiYgY29sdW1uTmFtZXNbbG9va0FoZWFkQ29sdW1uXSA9PSBn
cmlkQXJlYU5hbWUpCisgICAgICAgICAgICBsb29rQWhlYWRDb2x1bW4rKzsKKworICAgICAgICBO
YW1lZEdyaWRBcmVhTWFwOjppdGVyYXRvciBncmlkQXJlYUl0ID0gZ3JpZEFyZWFNYXAuZmluZChn
cmlkQXJlYU5hbWUpOworICAgICAgICBpZiAoZ3JpZEFyZWFJdCA9PSBncmlkQXJlYU1hcC5lbmQo
KSkgeworICAgICAgICAgICAgZ3JpZEFyZWFNYXAuYWRkKGdyaWRBcmVhTmFtZSwgR3JpZEFyZWEo
R3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKHJvd0NvdW50LCByb3dDb3VudCAr
IDEpLCBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4oY3VycmVudENvbHVtbiwg
bG9va0FoZWFkQ29sdW1uKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgR3JpZEFy
ZWEmIGdyaWRBcmVhID0gZ3JpZEFyZWFJdC0+dmFsdWU7CisKKyAgICAgICAgICAgIC8vIFRoZSBm
b2xsb3dpbmcgY2hlY2tzIHRlc3QgdGhhdCB0aGUgZ3JpZCBhcmVhIGlzIGEgc2luZ2xlIGZpbGxl
ZC1pbiByZWN0YW5nbGUuCisgICAgICAgICAgICAvLyAxLiBUaGUgbmV3IHJvdyBpcyBhZGphY2Vu
dCB0byB0aGUgcHJldmlvdXNseSBwYXJzZWQgcm93LgorICAgICAgICAgICAgaWYgKHJvd0NvdW50
ICE9IGdyaWRBcmVhLnJvd3MuZW5kTGluZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICAgICAgLy8gMi4gVGhlIG5ldyBhcmVhIHN0YXJ0cyBhdCB0aGUgc2FtZSBw
b3NpdGlvbiBhcyB0aGUgcHJldmlvdXNseSBwYXJzZWQgYXJlYS4KKyAgICAgICAgICAgIGlmIChj
dXJyZW50Q29sdW1uICE9IGdyaWRBcmVhLmNvbHVtbnMuc3RhcnRMaW5lKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAvLyAzLiBUaGUgbmV3IGFyZWEgZW5k
cyBhdCB0aGUgc2FtZSBwb3NpdGlvbiBhcyB0aGUgcHJldmlvdXNseSBwYXJzZWQgYXJlYS4KKyAg
ICAgICAgICAgIGlmIChsb29rQWhlYWRDb2x1bW4gIT0gZ3JpZEFyZWEuY29sdW1ucy5lbmRMaW5l
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBncmlkQXJl
YS5yb3dzID0gR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKGdyaWRBcmVhLnJv
d3Muc3RhcnRMaW5lKCksIGdyaWRBcmVhLnJvd3MuZW5kTGluZSgpICsgMSk7CisgICAgICAgIH0K
KyAgICAgICAgY3VycmVudENvbHVtbiA9IGxvb2tBaGVhZENvbHVtbiAtIDE7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUdy
aWRCcmVhZHRoKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1Bh
cnNlck1vZGUpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVl
aygpOworICAgIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVNaW5Db250ZW50LCBDU1NWYWx1ZU1h
eENvbnRlbnQsIENTU1ZhbHVlQXV0bz4odG9rZW4uaWQoKSkpCisgICAgICAgIHJldHVybiBjb25z
dW1lSWRlbnQocmFuZ2UpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4g
JiYgdG9rZW4udW5pdFR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkZyYWN0
aW9uKSB7CisgICAgICAgIGlmIChyYW5nZS5wZWVrKCkubnVtZXJpY1ZhbHVlKCkgPCAwKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVl
KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6RnJhY3Rpb24pOworICAgIH0KKyAgICBy
ZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVS
YW5nZU5vbk5lZ2F0aXZlLCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7Cit9CisKK3N0YXRpYyBDU1NW
YWx1ZSogY29uc3VtZUdyaWRUcmFja1NpemUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYg
dG9rZW4gPSByYW5nZS5wZWVrKCk7CisgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZUF1dG8+
KHRva2VuLmlkKCkpKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAg
IGlmICh0b2tlbi5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVNaW5tYXgpIHsKKyAgICAgICAgQ1NT
UGFyc2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSByYW5nZTsKKyAgICAgICAgQ1NTUGFyc2VyVG9r
ZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlQ29weSk7CisgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBtaW5UcmFja0JyZWFkdGggPSBjb25zdW1lR3JpZEJyZWFkdGgoYXJncywg
Y3NzUGFyc2VyTW9kZSk7CisgICAgICAgIGlmICghbWluVHJhY2tCcmVhZHRoIHx8IG1pblRyYWNr
QnJlYWR0aC0+aXNGbGV4KCkgfHwgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJn
cykpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIG1heFRyYWNrQnJlYWR0aCA9IGNvbnN1bWVHcmlkQnJlYWR0aChhcmdzLCBjc3NQYXJzZXJN
b2RlKTsKKyAgICAgICAgaWYgKCFtYXhUcmFja0JyZWFkdGggfHwgIWFyZ3MuYXRFbmQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByYW5nZSA9IHJhbmdlQ29weTsKKyAg
ICAgICAgQ1NTRnVuY3Rpb25WYWx1ZSogcmVzdWx0ID0gQ1NTRnVuY3Rpb25WYWx1ZTo6Y3JlYXRl
KENTU1ZhbHVlTWlubWF4KTsKKyAgICAgICAgcmVzdWx0LT5hcHBlbmQoKm1pblRyYWNrQnJlYWR0
aCk7CisgICAgICAgIHJlc3VsdC0+YXBwZW5kKCptYXhUcmFja0JyZWFkdGgpOworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICByZXR1cm4gY29uc3VtZUdyaWRCcmVhZHRoKHJhbmdl
LCBjc3NQYXJzZXJNb2RlKTsKK30KKworLy8gQXBwZW5kcyB0byB0aGUgcGFzc2VkIGluIENTU0dy
aWRMaW5lTmFtZXNWYWx1ZSBpZiBhbnksIG90aGVyd2lzZSBjcmVhdGVzIGEgbmV3IG9uZS4KK3N0
YXRpYyBDU1NHcmlkTGluZU5hbWVzVmFsdWUqIGNvbnN1bWVHcmlkTGluZU5hbWVzKENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlLCBDU1NHcmlkTGluZU5hbWVzVmFsdWUqIGxpbmVOYW1lcyA9IG51
bGxwdHIpCit7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSByYW5nZTsKKyAg
ICBpZiAocmFuZ2VDb3B5LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudHlwZSgpICE9IExl
ZnRCcmFja2V0VG9rZW4pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghbGluZU5h
bWVzKQorICAgICAgICBsaW5lTmFtZXMgPSBDU1NHcmlkTGluZU5hbWVzVmFsdWU6OmNyZWF0ZSgp
OworICAgIHdoaWxlIChDU1NDdXN0b21JZGVudFZhbHVlKiBsaW5lTmFtZSA9IGNvbnN1bWVDdXN0
b21JZGVudEZvckdyaWRMaW5lKHJhbmdlQ29weSkpCisgICAgICAgIGxpbmVOYW1lcy0+YXBwZW5k
KCpsaW5lTmFtZSk7CisgICAgaWYgKHJhbmdlQ29weS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFj
ZSgpLnR5cGUoKSAhPSBSaWdodEJyYWNrZXRUb2tlbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmFuZ2UgPSByYW5nZUNvcHk7CisgICAgcmV0dXJuIGxpbmVOYW1lczsKK30KKworc3Rh
dGljIGJvb2wgY29uc3VtZUdyaWRUcmFja1JlcGVhdEZ1bmN0aW9uKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU1ZhbHVlTGlzdCYgbGlz
dCwgYm9vbCYgaXNBdXRvUmVwZWF0LCBib29sJiBhbGxUcmFja3NBcmVGaXhlZFNpemVkKQorewor
ICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7Cisg
ICAgLy8gVGhlIG51bWJlciBvZiByZXBldGl0aW9ucyBmb3IgPGF1dG8tcmVwZWF0PiBpcyBub3Qg
aW1wb3J0YW50IGF0IHBhcnNpbmcgbGV2ZWwKKyAgICAvLyBiZWNhdXNlIGl0IHdpbGwgYmUgY29t
cHV0ZWQgbGF0ZXIsIGxldCdzIHNldCBpdCB0byAxLgorICAgIHNpemVfdCByZXBldGl0aW9ucyA9
IDE7CisgICAgaXNBdXRvUmVwZWF0ID0gaWRlbnRNYXRjaGVzPENTU1ZhbHVlQXV0b0ZpbGwsIENT
U1ZhbHVlQXV0b0ZpdD4oYXJncy5wZWVrKCkuaWQoKSk7CisgICAgQ1NTVmFsdWVMaXN0KiByZXBl
YXRlZFZhbHVlczsKKyAgICBpZiAoaXNBdXRvUmVwZWF0KSB7CisgICAgICAgIHJlcGVhdGVkVmFs
dWVzID0gQ1NTR3JpZEF1dG9SZXBlYXRWYWx1ZTo6Y3JlYXRlKGFyZ3MuY29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UoKS5pZCgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBUT0RPKHJvYi5i
dWlzKTogYSBjb25zdW1lSW50ZWdlclJhdyB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCBoZXJlLgor
ICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcmVwZXRpdGlvbiA9IGNvbnN1bWVQb3NpdGl2ZUlu
dGVnZXIoYXJncyk7CisgICAgICAgIGlmICghcmVwZXRpdGlvbikKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmVwZXRpdGlvbnMgPSBjbGFtcFRvPHNpemVfdD4ocmVwZXRpdGlv
bi0+Z2V0RG91YmxlVmFsdWUoKSwgMCwga0dyaWRNYXhUcmFja3MpOworICAgICAgICByZXBlYXRl
ZFZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICB9Cisg
ICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgQ1NTR3JpZExpbmVOYW1lc1ZhbHVlKiBsaW5lTmFtZXMgPSBjb25z
dW1lR3JpZExpbmVOYW1lcyhhcmdzKTsKKyAgICBpZiAobGluZU5hbWVzKQorICAgICAgICByZXBl
YXRlZFZhbHVlcy0+YXBwZW5kKCpsaW5lTmFtZXMpOworCisgICAgc2l6ZV90IG51bWJlck9mVHJh
Y2tzID0gMDsKKyAgICB3aGlsZSAoIWFyZ3MuYXRFbmQoKSkgeworICAgICAgICBDU1NWYWx1ZSog
dHJhY2tTaXplID0gY29uc3VtZUdyaWRUcmFja1NpemUoYXJncywgY3NzUGFyc2VyTW9kZSk7Cisg
ICAgICAgIGlmICghdHJhY2tTaXplKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpZiAoYWxsVHJhY2tzQXJlRml4ZWRTaXplZCkKKyAgICAgICAgICAgIGFsbFRyYWNrc0FyZUZp
eGVkU2l6ZWQgPSBpc0dyaWRUcmFja0ZpeGVkU2l6ZWQoKnRyYWNrU2l6ZSk7CisgICAgICAgIHJl
cGVhdGVkVmFsdWVzLT5hcHBlbmQoKnRyYWNrU2l6ZSk7CisgICAgICAgICsrbnVtYmVyT2ZUcmFj
a3M7CisgICAgICAgIGxpbmVOYW1lcyA9IGNvbnN1bWVHcmlkTGluZU5hbWVzKGFyZ3MpOworICAg
ICAgICBpZiAobGluZU5hbWVzKQorICAgICAgICAgICAgcmVwZWF0ZWRWYWx1ZXMtPmFwcGVuZCgq
bGluZU5hbWVzKTsKKyAgICB9CisgICAgLy8gV2Ugc2hvdWxkIGhhdmUgZm91bmQgYXQgbGVhc3Qg
b25lIDx0cmFjay1zaXplPiBvciBlbHNlIGl0IGlzIG5vdCBhIHZhbGlkIDx0cmFjay1saXN0Pi4K
KyAgICBpZiAoIW51bWJlck9mVHJhY2tzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoaXNBdXRvUmVwZWF0KSB7CisgICAgICAgIGxpc3QuYXBwZW5kKCpyZXBlYXRlZFZhbHVlcyk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gV2UgY2xhbXAgdGhlIHJlcGV0aXRpb25zIHRvIGEg
bXVsdGlwbGUgb2YgdGhlIHJlcGVhdCgpIHRyYWNrIGxpc3QncyBzaXplLCB3aGlsZSBzdGF5aW5n
IGJlbG93IHRoZSBtYXggZ3JpZCBzaXplLgorICAgICAgICByZXBldGl0aW9ucyA9IHN0ZDo6bWlu
KHJlcGV0aXRpb25zLCBrR3JpZE1heFRyYWNrcyAvIG51bWJlck9mVHJhY2tzKTsKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXBldGl0aW9uczsgKytpKSB7CisgICAgICAgICAgICBm
b3IgKHNpemVfdCBqID0gMDsgaiA8IHJlcGVhdGVkVmFsdWVzLT5sZW5ndGgoKTsgKytqKQorICAg
ICAgICAgICAgICAgIGxpc3QuYXBwZW5kKHJlcGVhdGVkVmFsdWVzLT5pdGVtKGopKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZW51bSBUcmFja0xpc3RUeXBlIHsg
R3JpZFRlbXBsYXRlLCBHcmlkVGVtcGxhdGVOb1JlcGVhdCwgR3JpZEF1dG8gfTsKKworc3RhdGlj
IENTU1ZhbHVlKiBjb25zdW1lR3JpZFRyYWNrTGlzdChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBUcmFja0xpc3RUeXBlIHRyYWNrTGlzdFR5
cGUpCit7CisgICAgYm9vbCBhbGxvd0dyaWRMaW5lTmFtZXMgPSB0cmFja0xpc3RUeXBlICE9IEdy
aWRBdXRvOworICAgIENTU1ZhbHVlTGlzdCogdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVT
cGFjZVNlcGFyYXRlZCgpOworICAgIENTU0dyaWRMaW5lTmFtZXNWYWx1ZSogbGluZU5hbWVzID0g
Y29uc3VtZUdyaWRMaW5lTmFtZXMocmFuZ2UpOworICAgIGlmIChsaW5lTmFtZXMpIHsKKyAgICAg
ICAgaWYgKCFhbGxvd0dyaWRMaW5lTmFtZXMpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgdmFsdWVzLT5hcHBlbmQoKmxpbmVOYW1lcyk7CisgICAgfQorCisgICAgYm9vbCBh
bGxvd1JlcGVhdCA9IHRyYWNrTGlzdFR5cGUgPT0gR3JpZFRlbXBsYXRlOworICAgIGJvb2wgc2Vl
bkF1dG9SZXBlYXQgPSBmYWxzZTsKKyAgICBib29sIGFsbFRyYWNrc0FyZUZpeGVkU2l6ZWQgPSB0
cnVlOworICAgIGRvIHsKKyAgICAgICAgYm9vbCBpc0F1dG9SZXBlYXQ7CisgICAgICAgIGlmIChy
YW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlUmVwZWF0KSB7CisgICAgICAgICAg
ICBpZiAoIWFsbG93UmVwZWF0KQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICAgICAgaWYgKCFjb25zdW1lR3JpZFRyYWNrUmVwZWF0RnVuY3Rpb24ocmFuZ2UsIGNzc1Bh
cnNlck1vZGUsICp2YWx1ZXMsIGlzQXV0b1JlcGVhdCwgYWxsVHJhY2tzQXJlRml4ZWRTaXplZCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBpZiAoaXNBdXRv
UmVwZWF0ICYmIHNlZW5BdXRvUmVwZWF0KQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICAgICAgc2VlbkF1dG9SZXBlYXQgPSBzZWVuQXV0b1JlcGVhdCB8fCBpc0F1dG9S
ZXBlYXQ7CisgICAgICAgIH0gZWxzZSBpZiAoQ1NTVmFsdWUqIHZhbHVlID0gY29uc3VtZUdyaWRU
cmFja1NpemUocmFuZ2UsIGNzc1BhcnNlck1vZGUpKSB7CisgICAgICAgICAgICBpZiAoYWxsVHJh
Y2tzQXJlRml4ZWRTaXplZCkKKyAgICAgICAgICAgICAgICBhbGxUcmFja3NBcmVGaXhlZFNpemVk
ID0gaXNHcmlkVHJhY2tGaXhlZFNpemVkKCp2YWx1ZSk7CisgICAgICAgICAgICB2YWx1ZXMtPmFw
cGVuZCgqdmFsdWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNlZW5BdXRvUmVwZWF0ICYmICFhbGxUcmFja3NB
cmVGaXhlZFNpemVkKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGxpbmVO
YW1lcyA9IGNvbnN1bWVHcmlkTGluZU5hbWVzKHJhbmdlKTsKKyAgICAgICAgaWYgKGxpbmVOYW1l
cykgeworICAgICAgICAgICAgaWYgKCFhbGxvd0dyaWRMaW5lTmFtZXMpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICB2YWx1ZXMtPmFwcGVuZCgqbGluZU5hbWVz
KTsKKyAgICAgICAgfQorICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgpICYmIHJhbmdlLnBlZWso
KS50eXBlKCkgIT0gRGVsaW1pdGVyVG9rZW4pOworICAgIHJldHVybiB2YWx1ZXM7Cit9CisKK3N0
YXRpYyBDU1NWYWx1ZSogY29uc3VtZUdyaWRUZW1wbGF0ZXNSb3dzT3JDb2x1bW5zKENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAg
aWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVHcmlkVHJhY2tMaXN0KHJhbmdl
LCBjc3NQYXJzZXJNb2RlLCBHcmlkVGVtcGxhdGUpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNv
bnN1bWVHcmlkVGVtcGxhdGVBcmVhcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAg
ICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4g
Y29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIE5hbWVkR3JpZEFyZWFNYXAgZ3JpZEFyZWFNYXA7
CisgICAgc2l6ZV90IHJvd0NvdW50ID0gMDsKKyAgICBzaXplX3QgY29sdW1uQ291bnQgPSAwOwor
CisgICAgd2hpbGUgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gU3RyaW5nVG9rZW4pIHsKKyAgICAg
ICAgaWYgKCFwYXJzZUdyaWRUZW1wbGF0ZUFyZWFzUm93KHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdX
aGl0ZXNwYWNlKCkudmFsdWUoKS50b1N0cmluZygpLCBncmlkQXJlYU1hcCwgcm93Q291bnQsIGNv
bHVtbkNvdW50KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICArK3Jvd0Nv
dW50OworICAgIH0KKworICAgIGlmIChyb3dDb3VudCA9PSAwKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICBBU1NFUlQoY29sdW1uQ291bnQpOworICAgIHJldHVybiBDU1NHcmlkVGVtcGxh
dGVBcmVhc1ZhbHVlOjpjcmVhdGUoZ3JpZEFyZWFNYXAsIHJvd0NvdW50LCBjb2x1bW5Db3VudCk7
Cit9CisKK3N0YXRpYyB2b2lkIGNvdW50S2V5d29yZE9ubHlQcm9wZXJ0eVVzYWdlKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHksIFVzZUNvdW50ZXIqIGNvdW50ZXIsIENTU1ZhbHVlSUQgdmFsdWVJRCkK
K3sKKyAgICBpZiAoIWNvdW50ZXIpCisgICAgICAgIHJldHVybjsKKyAgICBzd2l0Y2ggKHByb3Bl
cnR5KSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2U6CisgICAgICAgIGlm
ICh2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSkgeworICAgICAgICAgICAgY291bnRlci0+Y291bnQo
VXNlQ291bnRlcjo6Q1NTVmFsdWVBcHBlYXJhbmNlTm9uZSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBjb3VudGVyLT5jb3VudChVc2VDb3VudGVyOjpDU1NWYWx1ZUFwcGVhcmFuY2VO
b3ROb25lKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlQnV0dG9uKQorICAg
ICAgICAgICAgICAgIGNvdW50ZXItPmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5j
ZUJ1dHRvbik7CisgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlQ2FyZXQp
CisgICAgICAgICAgICAgICAgY291bnRlci0+Y291bnQoVXNlQ291bnRlcjo6Q1NTVmFsdWVBcHBl
YXJhbmNlQ2FyZXQpOworICAgICAgICAgICAgZWxzZSBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUNo
ZWNrYm94KQorICAgICAgICAgICAgICAgIGNvdW50ZXItPmNvdW50KFVzZUNvdW50ZXI6OkNTU1Zh
bHVlQXBwZWFyYW5jZUNoZWNrYm94KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlSUQgPT0g
Q1NTVmFsdWVNZW51bGlzdCkKKyAgICAgICAgICAgICAgICBjb3VudGVyLT5jb3VudChVc2VDb3Vu
dGVyOjpDU1NWYWx1ZUFwcGVhcmFuY2VNZW51bGlzdCk7CisgICAgICAgICAgICBlbHNlIGlmICh2
YWx1ZUlEID09IENTU1ZhbHVlTWVudWxpc3RCdXR0b24pCisgICAgICAgICAgICAgICAgY291bnRl
ci0+Y291bnQoVXNlQ291bnRlcjo6Q1NTVmFsdWVBcHBlYXJhbmNlTWVudWxpc3RCdXR0b24pOwor
ICAgICAgICAgICAgZWxzZSBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUxpc3Rib3gpCisgICAgICAg
ICAgICAgICAgY291bnRlci0+Y291bnQoVXNlQ291bnRlcjo6Q1NTVmFsdWVBcHBlYXJhbmNlTGlz
dGJveCk7CisgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlUmFkaW8pCisg
ICAgICAgICAgICAgICAgY291bnRlci0+Y291bnQoVXNlQ291bnRlcjo6Q1NTVmFsdWVBcHBlYXJh
bmNlUmFkaW8pOworICAgICAgICAgICAgZWxzZSBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVNlYXJj
aGZpZWxkKQorICAgICAgICAgICAgICAgIGNvdW50ZXItPmNvdW50KFVzZUNvdW50ZXI6OkNTU1Zh
bHVlQXBwZWFyYW5jZVNlYXJjaEZpZWxkKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlSUQg
PT0gQ1NTVmFsdWVUZXh0ZmllbGQpCisgICAgICAgICAgICAgICAgY291bnRlci0+Y291bnQoVXNl
Q291bnRlcjo6Q1NTVmFsdWVBcHBlYXJhbmNlVGV4dEZpZWxkKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBjb3VudGVyLT5jb3VudChVc2VDb3VudGVyOjpDU1NWYWx1ZUFwcGVh
cmFuY2VPdGhlcnMpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoK
KyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitjb25zdCBDU1NWYWx1ZSogQ1NTUHJvcGVydHlQ
YXJzZXI6OnBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlJRCB1bnJlc29sdmVkUHJvcGVydHks
IENTU1Byb3BlcnR5SUQgY3VycmVudFNob3J0aGFuZCkKK3sKKyAgICBDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5ID0gcmVzb2x2ZUNTU1Byb3BlcnR5SUQodW5yZXNvbHZlZFByb3BlcnR5KTsKKyAgICBp
ZiAoQ1NTUGFyc2VyRmFzdFBhdGhzOjppc0tleXdvcmRQcm9wZXJ0eUlEKHByb3BlcnR5KSkgewor
ICAgICAgICBpZiAoIUNTU1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFu
ZFZhbHVlKHByb3BlcnR5LCBtX3JhbmdlLnBlZWsoKS5pZCgpLCBtX2NvbnRleHQubW9kZSgpKSkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBjb3VudEtleXdvcmRPbmx5UHJv
cGVydHlVc2FnZShwcm9wZXJ0eSwgbV9jb250ZXh0LnVzZUNvdW50ZXIoKSwgbV9yYW5nZS5wZWVr
KCkuaWQoKSk7CisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQobV9yYW5nZSk7CisgICAgfQor
ICAgIHN3aXRjaCAocHJvcGVydHkpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2lsbENoYW5nZToK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVXaWxsQ2hhbmdlKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlQYWdlOgorICAgICAgICByZXR1cm4gY29uc3VtZVBhZ2UobV9yYW5nZSk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVF1b3RlczoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVRdW90ZXMobV9y
YW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEhpZ2hsaWdodDoKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVXZWJraXRIaWdobGlnaHQobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUZvbnRWYXJpYW50Q2FwczoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVGb250VmFyaWFudENhcHMo
bV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50TGlnYXR1cmVzOgorICAg
ICAgICByZXR1cm4gY29uc3VtZUZvbnRWYXJpYW50TGlnYXR1cmVzKG1fcmFuZ2UpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlGb250VmFyaWFudE51bWVyaWM6CisgICAgICAgIHJldHVybiBjb25zdW1l
Rm9udFZhcmlhbnROdW1lcmljKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250RmVh
dHVyZVNldHRpbmdzOgorICAgICAgICByZXR1cm4gY29uc3VtZUZvbnRGZWF0dXJlU2V0dGluZ3Mo
bV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRGYW1pbHk6CisgICAgICAgIHJldHVy
biBjb25zdW1lRm9udEZhbWlseShtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFdl
aWdodDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVGb250V2VpZ2h0KG1fcmFuZ2UpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkU3Bh
Y2luZzoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTcGFjaW5nKG1fcmFuZ2UsIG1fY29udGV4dC5t
b2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlUYWJTaXplOgorICAgICAgICByZXR1cm4gY29u
c3VtZVRhYlNpemUobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRleHRTaXplQWRqdXN0OgorICAgICAgICByZXR1cm4gY29uc3VtZVRleHRTaXplQWRqdXN0
KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U2l6
ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVGb250U2l6ZShtX3JhbmdlLCBtX2NvbnRleHQubW9k
ZSgpLCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpbmVIZWln
aHQ6CisgICAgICAgIHJldHVybiBjb25zdW1lTGluZUhlaWdodChtX3JhbmdlLCBtX2NvbnRleHQu
bW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Um90YXRlOgorICAgICAgICByZXR1cm4gY29u
c3VtZVJvdGF0aW9uKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlTY2FsZToKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVTY2FsZShtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5VHJh
bnNsYXRlOgorICAgICAgICByZXR1cm4gY29uc3VtZVRyYW5zbGF0ZShtX3JhbmdlLCBtX2NvbnRl
eHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNw
YWNpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZzoK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGgobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwg
VmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q291bnRlckluY3Jl
bWVudDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q291bnRlclJlc2V0OgorICAgICAgICByZXR1cm4g
Y29uc3VtZUNvdW50ZXIobV9yYW5nZSwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlDb3VudGVySW5j
cmVtZW50ID8gMSA6IDApOworICAgIGNhc2UgQ1NTUHJvcGVydHlTaXplOgorICAgICAgICByZXR1
cm4gY29uc3VtZVNpemUobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVNuYXBIZWlnaHQ6CisgICAgICAgIHJldHVybiBjb25zdW1lU25hcEhlaWdodChtX3Jh
bmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEluZGVudDoK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVUZXh0SW5kZW50KG1fcmFuZ2UsIG1fY29udGV4dC5tb2Rl
KCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
TWF4SGVpZ2h0OgorICAgICAgICByZXR1cm4gY29uc3VtZU1heFdpZHRoT3JIZWlnaHQobV9yYW5n
ZSwgbV9jb250ZXh0LCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1heExvZ2ljYWxXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWF4TG9n
aWNhbEhlaWdodDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVNYXhXaWR0aE9ySGVpZ2h0KG1fcmFu
Z2UsIG1fY29udGV4dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbldpZHRoOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlNaW5IZWlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdpZHRoOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlIZWlnaHQ6CisgICAgICAgIHJldHVybiBjb25zdW1lV2lkdGhPckhlaWdo
dChtX3JhbmdlLCBtX2NvbnRleHQsIFVuaXRsZXNzUXVpcms6OkFsbG93KTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWluTG9naWNhbFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNaW5Mb2dpY2FsSGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMb2dpY2FsV2lk
dGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxIZWlnaHQ6CisgICAgICAgIHJl
dHVybiBjb25zdW1lV2lkdGhPckhlaWdodChtX3JhbmdlLCBtX2NvbnRleHQpOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlNYXJnaW5Ub3A6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0Ogor
ICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b206CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1h
cmdpbkxlZnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvdHRvbToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5TGVmdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5UmlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVRvcDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVNYXJnaW5Pck9mZnNldChtX3JhbmdlLCBtX2Nv
bnRleHQubW9kZSgpLCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hcmdpblN0YXJ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5FbmQ6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZToKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXI6CisgICAgICAgIHJldHVybiBjb25zdW1lTWFyZ2luT3JP
ZmZzZXQobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1RvcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFk
ZGluZ1JpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlQYWRkaW5nTGVmdDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBl
cmNlbnQobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlLCBV
bml0bGVzc1F1aXJrOjpBbGxvdyk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdT
dGFydDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0VuZDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0UGFkZGluZ0JlZm9yZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
UGFkZGluZ0FmdGVyOgorICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChtX3Jh
bmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUsIFVuaXRsZXNzUXVp
cms6OkZvcmJpZCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNsaXA6CisgICAgICAgIHJldHVybiBj
b25zdW1lQ2xpcChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5VG91Y2hBY3Rpb246CisgICAgICAgIHJldHVybiBjb25zdW1lVG91Y2hBY3Rpb24obV9yYW5n
ZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNjcm9sbFNuYXBEZXN0aW5hdGlvbjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5T2JqZWN0UG9zaXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBlcnNwZWN0
aXZlT3JpZ2luOgorICAgICAgICByZXR1cm4gY29uc3VtZVBvc2l0aW9uKG1fcmFuZ2UsIG1fY29u
dGV4dC5tb2RlKCksIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdExpbmVDbGFtcDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVMaW5lQ2xhbXAobV9yYW5n
ZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTaXplRGVsdGE6CisgICAgICAgIHJl
dHVybiBjb25zdW1lTGVuZ3RoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VB
bGwsIFVuaXRsZXNzUXVpcms6OkFsbG93KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlw
aGVuYXRlQ2hhcmFjdGVyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMb2NhbGU6CisgICAg
ICAgIHJldHVybiBjb25zdW1lTG9jYWxlKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlD
b2x1bW5XaWR0aDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb2x1bW5XaWR0aChtX3JhbmdlKTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1uQ291bnQ6CisgICAgICAgIHJldHVybiBjb25zdW1l
Q29sdW1uQ291bnQobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVtbkdhcDoKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVDb2x1bW5HYXAobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVtblNwYW46CisgICAgICAgIHJldHVybiBjb25zdW1l
Q29sdW1uU3BhbihtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Wm9vbToKKyAgICAgICAg
cmV0dXJuIGNvbnN1bWVab29tKG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUFuaW1hdGlvbkRlbGF5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uRGVsYXk6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkRpcmVjdGlvbjoKKyAgICBjYXNlIENTU1By
b3BlcnR5QW5pbWF0aW9uRHVyYXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25E
dXJhdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uRmlsbE1vZGU6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlBbmltYXRpb25OYW1lOgorICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25QbGF5U3RhdGU6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25Qcm9wZXJ0eToKKyAgICBjYXNlIENTU1By
b3BlcnR5QW5pbWF0aW9uVGltaW5nRnVuY3Rpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5z
aXRpb25UaW1pbmdGdW5jdGlvbjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVBbmltYXRpb25Qcm9w
ZXJ0eUxpc3QocHJvcGVydHksIG1fcmFuZ2UsIG1fY29udGV4dCwgdW5yZXNvbHZlZFByb3BlcnR5
ID09IENTU1Byb3BlcnR5QWxpYXNXZWJraXRBbmltYXRpb25OYW1lKTsKKyAgICBjYXNlIENTU1By
b3BlcnR5R3JpZENvbHVtbkdhcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZFJvd0dhcDoKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGgobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVmFs
dWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5U2hhcGVNYXJnaW46Cisg
ICAgICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KG1fcmFuZ2UsIG1fY29udGV4dC5t
b2RlKCksIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNoYXBl
SW1hZ2VUaHJlc2hvbGQ6CisgICAgICAgIHJldHVybiBjb25zdW1lTnVtYmVyKG1fcmFuZ2UsIFZh
bHVlUmFuZ2VBbGwpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hPcmRpbmFsR3JvdXA6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9ycGhhbnM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdpZG93
czoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVQb3NpdGl2ZUludGVnZXIobV9yYW5nZSk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uQ29sb3I6CisgICAgICAgIEFTU0VSVChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3MzVGV4dERlY29yYXRpb25zRW5hYmxlZCgpKTsKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVDb2xvcihtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoOgorICAgICAgICByZXR1cm4gY29u
c3VtZVRleHRTdHJva2VXaWR0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VGFwSGlnaGxpZ2h0Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBo
YXNpc0NvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydENvbG9yOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvcjoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckFmdGVyQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VD
b2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5U3RvcENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlGbG9vZENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlMaWdodGluZ0NvbG9yOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlDb2x1bW5SdWxlQ29sb3I6CisgICAgICAgIHJldHVybiBjb25zdW1lQ29s
b3IobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9y
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3I6CisgICAgICAgIHJldHVybiBj
b25zdW1lQ29sb3IobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgaW5RdWlya3NNb2RlKCkpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFdpZHRoOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyQmVmb3JlV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVy
V2lkdGg6CisgICAgICAgIHJldHVybiBjb25zdW1lQm9yZGVyV2lkdGgobV9yYW5nZSwgbV9jb250
ZXh0Lm1vZGUoKSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyVG9wQ29sb3I6IHsKKyAgICAgICAgYm9vbCBhbGxvd1F1aXJreUNvbG9ycyA9IGlu
UXVpcmtzTW9kZSgpCisgICAgICAgICAgICAmJiAoY3VycmVudFNob3J0aGFuZCA9PSBDU1NQcm9w
ZXJ0eUludmFsaWQgfHwgY3VycmVudFNob3J0aGFuZCA9PSBDU1NQcm9wZXJ0eUJvcmRlckNvbG9y
KTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb2xvcihtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgp
LCBhbGxvd1F1aXJreUNvbG9ycyk7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21XaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJUb3BXaWR0aDogeworICAgICAgICBib29sIGFsbG93UXVpcmt5TGVuZ3RocyA9IGluUXVpcmtz
TW9kZSgpCisgICAgICAgICAgICAmJiAoY3VycmVudFNob3J0aGFuZCA9PSBDU1NQcm9wZXJ0eUlu
dmFsaWQgfHwgY3VycmVudFNob3J0aGFuZCA9PSBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoKTsKKyAg
ICAgICAgVW5pdGxlc3NRdWlyayB1bml0bGVzcyA9IGFsbG93UXVpcmt5TGVuZ3RocyA/IFVuaXRs
ZXNzUXVpcms6OkFsbG93IDogVW5pdGxlc3NRdWlyazo6Rm9yYmlkOworICAgICAgICByZXR1cm4g
Y29uc3VtZUJvcmRlcldpZHRoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIHVuaXRsZXNzKTsK
KyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eVpJbmRleDoKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVaSW5kZXgobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRTaGFkb3c6IC8vIENT
UzIgcHJvcGVydHksIGRyb3BwZWQgaW4gQ1NTMi4xLCBiYWNrIGluIENTUzMsIHNvIHRyZWF0IGFz
IENTUzMKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm94U2hhZG93OgorICAgICAgICByZXR1cm4gY29u
c3VtZVNoYWRvdyhtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBwcm9wZXJ0eSA9PSBDU1NQcm9w
ZXJ0eUJveFNoYWRvdyk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbHRlcjoKKyAgICBjYXNlIENT
U1Byb3BlcnR5QmFja2Ryb3BGaWx0ZXI6CisgICAgICAgIHJldHVybiBjb25zdW1lRmlsdGVyKG1f
cmFuZ2UsIG1fY29udGV4dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uOgor
ICAgICAgICBBU1NFUlQoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzczNUZXh0RGVjb3JhdGlv
bnNFbmFibGVkKCkpOworICAgICAgICAvLyBmYWxsdGhyb3VnaAorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dERlY29yYXRpb25MaW5lOgorICAgICAgICByZXR1cm4gY29uc3VtZVRleHREZWNvcmF0aW9uTGlu
ZShtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5RDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
TW90aW9uUGF0aDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVQYXRoT3JOb25lKG1fcmFuZ2UpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlNb3Rpb25PZmZzZXQ6CisgICAgICAgIHJldHVybiBjb25zdW1l
TGVuZ3RoT3JQZXJjZW50KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VBbGwp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlNb3Rpb25Sb3RhdGlvbjoKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVNb3Rpb25Sb3RhdGlvbihtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VGV4dEVtcGhhc2lzU3R5bGU6CisgICAgICAgIHJldHVybiBjb25zdW1lVGV4dEVtcGhhc2lzU3R5
bGUobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcjoKKyAgICAgICAg
cmV0dXJuIGNvbnN1bWVPdXRsaW5lQ29sb3IobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVPZmZzZXQ6CisgICAgICAgIHJldHVybiBjb25zdW1l
TGVuZ3RoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VBbGwpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGg6CisgICAgICAgIHJldHVybiBjb25zdW1lTGluZVdp
ZHRoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zZm9ybToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVUcmFu
c2Zvcm0obV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgdW5yZXNvbHZlZFByb3BlcnR5ID09IENT
U1Byb3BlcnR5QWxpYXNXZWJraXRUcmFuc2Zvcm0pOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRUcmFuc2Zvcm1PcmlnaW5YOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2
ZU9yaWdpblg6CisgICAgICAgIHJldHVybiBjb25zdW1lUG9zaXRpb25YKG1fcmFuZ2UsIG1fY29u
dGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5Z
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblk6CisgICAgICAg
IHJldHVybiBjb25zdW1lUG9zaXRpb25ZKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aOgorICAgICAgICByZXR1cm4g
Y29uc3VtZUxlbmd0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxsKTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5RmlsbDoKKyAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlOgor
ICAgICAgICByZXR1cm4gY29uc3VtZVBhaW50U3Ryb2tlKG1fcmFuZ2UsIG1fY29udGV4dC5tb2Rl
KCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlQYWludE9yZGVyOgorICAgICAgICByZXR1cm4gY29u
c3VtZVBhaW50T3JkZXIobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmtlclN0YXJ0
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJrZXJNaWQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1h
cmtlckVuZDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q2xpcFBhdGg6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eU1hc2s6CisgICAgICAgIHJldHVybiBjb25zdW1lTm9uZU9yVVJJKG1fcmFuZ2UpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlGbGV4QmFzaXM6CisgICAgICAgIHJldHVybiBjb25zdW1lRmxleEJh
c2lzKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlGbGV4
R3JvdzoKKyAgICBjYXNlIENTU1Byb3BlcnR5RmxleFNocmluazoKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVOdW1iZXIobV9yYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5U3Ryb2tlRGFzaGFycmF5OgorICAgICAgICByZXR1cm4gY29uc3VtZVN0cm9rZURh
c2hhcnJheShtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1uUnVsZVdpZHRoOgor
ICAgICAgICByZXR1cm4gY29uc3VtZUNvbHVtblJ1bGVXaWR0aChtX3JhbmdlLCBtX2NvbnRleHQu
bW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlT3BhY2l0eToKKyAgICBjYXNlIENT
U1Byb3BlcnR5RmlsbE9wYWNpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0b3BPcGFjaXR5Ogor
ICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9vZE9wYWNpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9w
YWNpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXg6CisgICAgICAgIHJldHVy
biBjb25zdW1lTnVtYmVyKG1fcmFuZ2UsIFZhbHVlUmFuZ2VBbGwpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlCYXNlbGluZVNoaWZ0OgorICAgICAgICByZXR1cm4gY29uc3VtZUJhc2VsaW5lU2hpZnQo
bV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZU1pdGVybGltaXQ6CisgICAgICAg
IHJldHVybiBjb25zdW1lTnVtYmVyKG1fcmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZVdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJv
a2VEYXNob2Zmc2V0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlDeDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Q3k6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVk6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVI6CisgICAgICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJj
ZW50KG1fcmFuZ2UsIFNWR0F0dHJpYnV0ZU1vZGUsIFZhbHVlUmFuZ2VBbGwsIFVuaXRsZXNzUXVp
cms6OkZvcmJpZCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVJ4OgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlSeToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVSeE9yUnkobV9yYW5nZSk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUN1cnNvcjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDdXJzb3IobV9yYW5nZSwg
bV9jb250ZXh0LCBpblF1aXJrc01vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbnRhaW46
CisgICAgICAgIHJldHVybiBjb25zdW1lQ29udGFpbihtX3JhbmdlKTsKKyAgICBjYXNlIENTU1By
b3BlcnR5VHJhbnNmb3JtT3JpZ2luOgorICAgICAgICByZXR1cm4gY29uc3VtZVRyYW5zZm9ybU9y
aWdpbihtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlDb250ZW50OgorICAgICAgICByZXR1cm4gY29uc3VtZUNvbnRl
bnQobV9yYW5nZSwgbV9jb250ZXh0KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1h
Z2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlU291cmNlOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTb3VyY2U6CisgICAgICAgIHJldHVybiBjb25zdW1l
SW1hZ2VPck5vbmUobV9yYW5nZSwgbV9jb250ZXh0KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5UGVy
c3BlY3RpdmU6CisgICAgICAgIHJldHVybiBjb25zdW1lUGVyc3BlY3RpdmUobV9yYW5nZSwgbV9j
b250ZXh0Lm1vZGUoKSwgdW5yZXNvbHZlZFByb3BlcnR5KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
U2Nyb2xsU25hcENvb3JkaW5hdGU6CisgICAgICAgIHJldHVybiBjb25zdW1lU2Nyb2xsU25hcENv
b3JkaW5hdGUobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVNjcm9sbFNuYXBQb2ludHNYOgorICAgIGNhc2UgQ1NTUHJvcGVydHlTY3JvbGxTbmFwUG9pbnRz
WToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTY3JvbGxTbmFwUG9pbnRzKG1fcmFuZ2UsIG1fY29u
dGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1czoK
KyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1czoKKyAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1czoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
Qm90dG9tUmlnaHRSYWRpdXM6CisgICAgICAgIHJldHVybiBjb25zdW1lQm9yZGVyUmFkaXVzQ29y
bmVyKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3hGbGV4R3JvdXA6CisgICAgICAgIHJldHVybiBjb25zdW1lSW50ZWdlcihtX3JhbmdlLCAw
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5T3JkZXI6CisgICAgICAgIHJldHVybiBjb25zdW1lSW50
ZWdlcihtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVBvc2l0aW9u
OgorICAgICAgICAvLyBhdXRvIHwgWyB1bmRlciB8fCBbIGxlZnQgfCByaWdodCBdIF0sIGJ1dCB3
ZSBvbmx5IHN1cHBvcnQgYXV0byB8IHVuZGVyIGZvciBub3cKKyAgICAgICAgQVNTRVJUKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmNzczNUZXh0RGVjb3JhdGlvbnNFbmFibGVkKCkpOworICAgICAg
ICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVVbmRlcj4obV9yYW5n
ZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ246CisgICAgICAgIHJldHVybiBj
b25zdW1lVmVydGljYWxBbGlnbihtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5U2hhcGVPdXRzaWRlOgorICAgICAgICByZXR1cm4gY29uc3VtZVNoYXBlT3V0
c2lkZShtX3JhbmdlLCBtX2NvbnRleHQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDbGlw
UGF0aDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVXZWJraXRDbGlwUGF0aChtX3JhbmdlLCBtX2Nv
bnRleHQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlKdXN0aWZ5Q29udGVudDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5QWxpZ25Db250ZW50OgorICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6Y3NzR3JpZExheW91dEVuYWJsZWQoKSk7CisgICAgICAgIHJldHVybiBjb25zdW1lQ29u
dGVudERpc3RyaWJ1dGlvbk92ZXJmbG93UG9zaXRpb24obV9yYW5nZSk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlckltYWdlUmVwZWF0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNr
Qm94SW1hZ2VSZXBlYXQ6CisgICAgICAgIHJldHVybiBjb25zdW1lQm9yZGVySW1hZ2VSZXBlYXQo
bV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlU2xpY2U6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVNsaWNlOgorICAgICAgICByZXR1cm4gY29u
c3VtZUJvcmRlckltYWdlU2xpY2UocHJvcGVydHksIG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJJbWFnZU91dHNldDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0Jv
eEltYWdlT3V0c2V0OgorICAgICAgICByZXR1cm4gY29uc3VtZUJvcmRlckltYWdlT3V0c2V0KG1f
cmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVdpZHRoOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VXaWR0aDoKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVCb3JkZXJJbWFnZVdpZHRoKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJJbWFnZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVXZWJraXRCb3JkZXJJbWFnZShwcm9w
ZXJ0eSwgbV9yYW5nZSwgbV9jb250ZXh0KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94
UmVmbGVjdDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVSZWZsZWN0KG1fcmFuZ2UsIG1fY29udGV4
dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTaXplQWRqdXN0OgorICAgICAgICBBU1NFUlQo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzRm9udFNpemVBZGp1c3RFbmFibGVkKCkpOworICAg
ICAgICByZXR1cm4gY29uc3VtZUZvbnRTaXplQWRqdXN0KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlJbWFnZU9yaWVudGF0aW9uOgorICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6aW1hZ2VPcmllbnRhdGlvbkVuYWJsZWQoKSk7CisgICAgICAgIHJldHVybiBjb25z
dW1lSW1hZ2VPcmllbnRhdGlvbihtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dy
b3VuZEF0dGFjaG1lbnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRCbGVuZE1vZGU6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kSW1hZ2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW46
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblg6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91
bmRTaXplOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXNrU291cmNlVHlwZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENsaXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJhY2tncm91bmRPcmlnaW46CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXNrSW1hZ2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmln
aW46CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblg6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tTaXplOgorICAgICAgICByZXR1cm4gY29uc3VtZUNvbW1hU2VwYXJhdGVkQmFja2dyb3Vu
ZENvbXBvbmVudCh1bnJlc29sdmVkUHJvcGVydHksIG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUmVwZWF0WToKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUFsaWduSXRlbXM6CisgICAgICAgIERDSEVDSyhSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojpjc3NHcmlkTGF5b3V0RW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVBbGlnbkl0
ZW1zKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlKdXN0aWZ5U2VsZjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5QWxpZ25TZWxmOgorICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6Y3NzR3JpZExheW91dEVuYWJsZWQoKSk7CisgICAgICAgIHJldHVybiBjb25zdW1lU2Vs
ZlBvc2l0aW9uT3ZlcmZsb3dQb3NpdGlvbihtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
SnVzdGlmeUl0ZW1zOgorICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3Nz
R3JpZExheW91dEVuYWJsZWQoKSk7CisgICAgICAgIHJldHVybiBjb25zdW1lSnVzdGlmeUl0ZW1z
KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkQ29sdW1uRW5kOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlHcmlkQ29sdW1uU3RhcnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRSb3dF
bmQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRSb3dTdGFydDoKKyAgICAgICAgQVNTRVJUKFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkpOworICAgICAgICBy
ZXR1cm4gY29uc3VtZUdyaWRMaW5lKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlk
QXV0b0NvbHVtbnM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRBdXRvUm93czoKKyAgICAgICAg
QVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkpOwor
ICAgICAgICByZXR1cm4gY29uc3VtZUdyaWRUcmFja0xpc3QobV9yYW5nZSwgbV9jb250ZXh0Lm1v
ZGUoKSwgR3JpZEF1dG8pOworICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVDb2x1bW5z
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVSb3dzOgorICAgICAgICBBU1NFUlQo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzR3JpZExheW91dEVuYWJsZWQoKSk7CisgICAgICAg
IHJldHVybiBjb25zdW1lR3JpZFRlbXBsYXRlc1Jvd3NPckNvbHVtbnMobV9yYW5nZSwgbV9jb250
ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZUFyZWFzOgorICAg
ICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzR3JpZExheW91dEVuYWJsZWQo
KSk7CisgICAgICAgIHJldHVybiBjb25zdW1lR3JpZFRlbXBsYXRlQXJlYXMobV9yYW5nZSk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRBdXRvRmxvdzoKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkpOworICAgICAgICByZXR1cm4g
Y29uc3VtZUdyaWRBdXRvRmxvdyhtX3JhbmdlKTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9Cit9CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3Vt
ZUZvbnREaXNwbGF5KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBj
b25zdW1lSWRlbnQ8Q1NTVmFsdWVBdXRvLCBDU1NWYWx1ZUJsb2NrLCBDU1NWYWx1ZVN3YXAsIENT
U1ZhbHVlRmFsbGJhY2ssIENTU1ZhbHVlT3B0aW9uYWw+KHJhbmdlKTsKK30KKworc3RhdGljIENT
U1ZhbHVlTGlzdCogY29uc3VtZUZvbnRGYWNlVW5pY29kZVJhbmdlKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQoreworICAgIENTU1ZhbHVlTGlzdCogdmFsdWVzID0gQ1NTVmFsdWVMaXN0Ojpj
cmVhdGVDb21tYVNlcGFyYXRlZCgpOworCisgICAgZG8geworICAgICAgICBjb25zdCBDU1NQYXJz
ZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAg
ICAgICBpZiAodG9rZW4udHlwZSgpICE9IFVuaWNvZGVSYW5nZVRva2VuKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgVUNoYXIzMiBzdGFydCA9IHRva2VuLnVuaWNvZGVS
YW5nZVN0YXJ0KCk7CisgICAgICAgIFVDaGFyMzIgZW5kID0gdG9rZW4udW5pY29kZVJhbmdlRW5k
KCk7CisgICAgICAgIGlmIChzdGFydCA+IGVuZCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICB2YWx1ZXMtPmFwcGVuZCgqQ1NTVW5pY29kZVJhbmdlVmFsdWU6OmNyZWF0ZShz
dGFydCwgZW5kKSk7CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFj
ZShyYW5nZSkpOworCisgICAgcmV0dXJuIHZhbHVlczsKK30KKworc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lRm9udEZhY2VTcmNVUkkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENT
U1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgU3RyaW5nIHVybCA9IGNvbnN1bWVVcmxB
c1N0cmluZ1ZpZXcocmFuZ2UpLnRvU3RyaW5nKCk7CisgICAgaWYgKHVybC5pc051bGwoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NTRm9udEZhY2VTcmNWYWx1ZSogdXJpVmFsdWUo
Q1NTRm9udEZhY2VTcmNWYWx1ZTo6Y3JlYXRlKHVybCwgY29udGV4dC5jb21wbGV0ZVVSTCh1cmwp
LCBjb250ZXh0LnNob3VsZENoZWNrQ29udGVudFNlY3VyaXR5UG9saWN5KCkpKTsKKyAgICB1cmlW
YWx1ZS0+c2V0UmVmZXJyZXIoY29udGV4dC5yZWZlcnJlcigpKTsKKworICAgIGlmIChyYW5nZS5w
ZWVrKCkuZnVuY3Rpb25JZCgpICE9IENTU1ZhbHVlRm9ybWF0KQorICAgICAgICByZXR1cm4gdXJp
VmFsdWU7CisKKyAgICAvLyBGSVhNRTogaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1mb250
cyBzYXlzIHRoYXQgZm9ybWF0KCkgY29udGFpbnMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBz
dHJpbmdzLAorICAgIC8vIGJ1dCBDU1NGb250RmFjZVNyY1ZhbHVlIHN0b3JlcyBvbmx5IG9uZSBm
b3JtYXQuIEFsbG93aW5nIG9uZSBmb3JtYXQgZm9yIG5vdy4KKyAgICBDU1NQYXJzZXJUb2tlblJh
bmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2UpOworICAgIGNvbnN0IENTU1BhcnNlclRv
a2VuJiBhcmcgPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgaWYgKChh
cmcudHlwZSgpICE9IFN0cmluZ1Rva2VuKSB8fCAhYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB1cmlWYWx1ZS0+c2V0Rm9ybWF0KGFyZy52YWx1ZSgpLnRvU3RyaW5n
KCkpOworICAgIHJldHVybiB1cmlWYWx1ZTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1l
Rm9udEZhY2VTcmNMb2NhbChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFy
c2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBj
b25zdW1lRnVuY3Rpb24ocmFuZ2UpOworICAgIENvbnRlbnRTZWN1cml0eVBvbGljeURpc3Bvc2l0
aW9uIHNob3VsZENoZWNrQ29udGVudFNlY3VyaXR5UG9saWN5ID0gY29udGV4dC5zaG91bGRDaGVj
a0NvbnRlbnRTZWN1cml0eVBvbGljeSgpOworICAgIGlmIChhcmdzLnBlZWsoKS50eXBlKCkgPT0g
U3RyaW5nVG9rZW4pIHsKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIGFyZyA9IGFyZ3Mu
Y29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgaWYgKCFhcmdzLmF0RW5kKCkp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIENTU0ZvbnRGYWNl
U3JjVmFsdWU6OmNyZWF0ZUxvY2FsKGFyZy52YWx1ZSgpLnRvU3RyaW5nKCksIHNob3VsZENoZWNr
Q29udGVudFNlY3VyaXR5UG9saWN5KTsKKyAgICB9CisgICAgaWYgKGFyZ3MucGVlaygpLnR5cGUo
KSA9PSBJZGVudFRva2VuKSB7CisgICAgICAgIFN0cmluZyBmYW1pbHlOYW1lID0gY29uY2F0ZW5h
dGVGYW1pbHlOYW1lKGFyZ3MpOworICAgICAgICBpZiAoIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gQ1NTRm9udEZhY2VTcmNWYWx1ZTo6
Y3JlYXRlTG9jYWwoZmFtaWx5TmFtZSwgc2hvdWxkQ2hlY2tDb250ZW50U2VjdXJpdHlQb2xpY3kp
OworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIENTU1ZhbHVlTGlzdCog
Y29uc3VtZUZvbnRGYWNlU3JjKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQ
YXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIENTU1ZhbHVlTGlzdCogdmFsdWVzID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworCisgICAgZG8geworICAgICAgICBj
b25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CisgICAgICAgIENTU1Zh
bHVlKiBwYXJzZWRWYWx1ZSA9IG51bGxwdHI7CisgICAgICAgIGlmICh0b2tlbi5mdW5jdGlvbklk
KCkgPT0gQ1NTVmFsdWVMb2NhbCkKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUZv
bnRGYWNlU3JjTG9jYWwocmFuZ2UsIGNvbnRleHQpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVGb250RmFjZVNyY1VSSShyYW5nZSwgY29udGV4dCk7Cisg
ICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgdmFsdWVzLT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICB9IHdoaWxlIChjb25zdW1l
Q29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSk7CisgICAgcmV0dXJuIHZhbHVlczsKK30K
KworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VGb250RmFjZURlc2NyaXB0b3IoQ1NTUHJv
cGVydHlJRCBwcm9wSWQpCit7CisgICAgQ1NTVmFsdWUqIHBhcnNlZFZhbHVlID0gbnVsbHB0cjsK
KyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250RmFtaWx5Ogor
ICAgICAgICBpZiAoY29uc3VtZUdlbmVyaWNGYW1pbHkobV9yYW5nZSkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUZhbWlseU5hbWUobV9y
YW5nZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlTcmM6IC8vIFRoaXMg
aXMgYSBsaXN0IG9mIHVybHMgb3IgbG9jYWwgcmVmZXJlbmNlcy4KKyAgICAgICAgcGFyc2VkVmFs
dWUgPSBjb25zdW1lRm9udEZhY2VTcmMobV9yYW5nZSwgbV9jb250ZXh0KTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVVuaWNvZGVSYW5nZToKKyAgICAgICAgcGFyc2VkVmFs
dWUgPSBjb25zdW1lRm9udEZhY2VVbmljb2RlUmFuZ2UobV9yYW5nZSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250RGlzcGxheToKKyAgICAgICAgcGFyc2VkVmFsdWUg
PSBjb25zdW1lRm9udERpc3BsYXkobV9yYW5nZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlGb250U3RyZXRjaDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0eWxlOiB7
CisgICAgICAgIENTU1ZhbHVlSUQgaWQgPSBtX3JhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNw
YWNlKCkuaWQoKTsKKyAgICAgICAgaWYgKCFDU1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFsaWRLZXl3
b3JkUHJvcGVydHlBbmRWYWx1ZShwcm9wSWQsIGlkLCBtX2NvbnRleHQubW9kZSgpKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcGFyc2VkVmFsdWUgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihpZCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQ6CisgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3Vt
ZUZvbnRWYXJpYW50TGlzdChtX3JhbmdlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUZvbnRXZWlnaHQ6CisgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUZvbnRXZWln
aHQobV9yYW5nZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250RmVh
dHVyZVNldHRpbmdzOgorICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVGb250RmVhdHVyZVNl
dHRpbmdzKG1fcmFuZ2UpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBpZiAoIXBhcnNlZFZhbHVlIHx8ICFtX3JhbmdlLmF0RW5kKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGFkZFByb3BlcnR5KHByb3BJZCwgQ1NTUHJv
cGVydHlJbnZhbGlkLCAqcGFyc2VkVmFsdWUsIGZhbHNlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZVN5c3RlbUZvbnQoYm9vbCBpbXBvcnRh
bnQpCit7CisgICAgQ1NTVmFsdWVJRCBzeXN0ZW1Gb250SUQgPSBtX3JhbmdlLmNvbnN1bWVJbmNs
dWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKKyAgICBBU1NFUlQoc3lzdGVtRm9udElEID49IENTU1Zh
bHVlQ2FwdGlvbiAmJiBzeXN0ZW1Gb250SUQgPD0gQ1NTVmFsdWVTdGF0dXNCYXIpOworICAgIGlm
ICghbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBGb250U3R5
bGUgZm9udFN0eWxlID0gRm9udFN0eWxlTm9ybWFsOworICAgIEZvbnRXZWlnaHQgZm9udFdlaWdo
dCA9IEZvbnRXZWlnaHROb3JtYWw7CisgICAgZmxvYXQgZm9udFNpemUgPSAwOworICAgIEF0b21p
Y1N0cmluZyBmb250RmFtaWx5OworICAgIExheW91dFRoZW1lOjp0aGVtZSgpLnN5c3RlbUZvbnQo
c3lzdGVtRm9udElELCBmb250U3R5bGUsIGZvbnRXZWlnaHQsIGZvbnRTaXplLCBmb250RmFtaWx5
KTsKKworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFN0eWxlLCBDU1NQcm9wZXJ0eUZv
bnQsICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihmb250U3R5bGUgPT0gRm9u
dFN0eWxlSXRhbGljID8gQ1NTVmFsdWVJdGFsaWMgOiBDU1NWYWx1ZU5vcm1hbCksIGltcG9ydGFu
dCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCBDU1NQcm9wZXJ0eUZv
bnQsICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGZvbnRXZWlnaHQpLCBpbXBvcnRhbnQpOwor
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIENTU1Byb3BlcnR5Rm9udCwgKkNT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoZm9udFNpemUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZTo6UGl4ZWxzKSwgaW1wb3J0YW50KTsKKyAgICBDU1NWYWx1ZUxpc3QqIGZvbnRGYW1pbHlM
aXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgIGZvbnRGYW1p
bHlMaXN0LT5hcHBlbmQoKkNTU0ZvbnRGYW1pbHlWYWx1ZTo6Y3JlYXRlKGZvbnRGYW1pbHkpKTsK
KyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRGYW1pbHksIENTU1Byb3BlcnR5Rm9udCwg
KmZvbnRGYW1pbHlMaXN0LCBpbXBvcnRhbnQpOworCisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVy
dHlGb250U3RyZXRjaCwgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5
KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRDYXBzLCBDU1NQcm9wZXJ0eUZvbnQsICpDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vcm1hbCksIGltcG9ydGFudCk7Cisg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250VmFyaWFudExpZ2F0dXJlcywgQ1NTUHJvcGVy
dHlGb250LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3Jt
YWwpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRO
dW1lcmljLCBDU1NQcm9wZXJ0eUZvbnQsICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRp
ZmllcihDU1NWYWx1ZU5vcm1hbCksIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJv
cGVydHlMaW5lSGVpZ2h0LCBDU1NQcm9wZXJ0eUZvbnQsICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vcm1hbCksIGltcG9ydGFudCk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVGb250KGJvb2wgaW1wb3J0
YW50KQoreworICAgIC8vIExldCdzIGNoZWNrIGlmIHRoZXJlIGlzIGFuIGluaGVyaXQgb3IgaW5p
dGlhbCBzb21ld2hlcmUgaW4gdGhlIHNob3J0aGFuZC4KKyAgICBDU1NQYXJzZXJUb2tlblJhbmdl
IHJhbmdlID0gbV9yYW5nZTsKKyAgICB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpIHsKKyAgICAgICAg
Q1NTVmFsdWVJRCBpZCA9IHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsK
KyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlSW5oZXJpdCB8fCBpZCA9PSBDU1NWYWx1ZUluaXRp
YWwpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIC8vIE9wdGlvbmFsIGZv
bnQtc3R5bGUsIGZvbnQtdmFyaWFudCwgZm9udC1zdHJldGNoIGFuZCBmb250LXdlaWdodC4KKyAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogZm9udFN0eWxlID0gbnVsbHB0cjsKKyAgICBDU1NQcmltaXRp
dmVWYWx1ZSogZm9udFZhcmlhbnRDYXBzID0gbnVsbHB0cjsKKyAgICBDU1NQcmltaXRpdmVWYWx1
ZSogZm9udFdlaWdodCA9IG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZvbnRTdHJl
dGNoID0gbnVsbHB0cjsKKyAgICB3aGlsZSAoIW1fcmFuZ2UuYXRFbmQoKSkgeworICAgICAgICBD
U1NWYWx1ZUlEIGlkID0gbV9yYW5nZS5wZWVrKCkuaWQoKTsKKyAgICAgICAgaWYgKCFmb250U3R5
bGUgJiYgQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUo
Q1NTUHJvcGVydHlGb250U3R5bGUsIGlkLCBtX2NvbnRleHQubW9kZSgpKSkgeworICAgICAgICAg
ICAgZm9udFN0eWxlID0gY29uc3VtZUlkZW50KG1fcmFuZ2UpOworICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmb250VmFyaWFudENhcHMgJiYgKGlkID09IENT
U1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlU21hbGxDYXBzKSkgeworICAgICAgICAgICAg
Ly8gRm9udCB2YXJpYW50IGluIHRoZSBzaG9ydGhhbmQgaXMgcGFydGljdWxhciwgaXQgb25seSBh
Y2NlcHRzIG5vcm1hbCBvciBzbWFsbC1jYXBzLgorICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8v
ZHJhZnRzLmNzc3dnLm9yZy9jc3MtZm9udHMvI3Byb3BkZWYtZm9udAorICAgICAgICAgICAgZm9u
dFZhcmlhbnRDYXBzID0gY29uc3VtZUZvbnRWYXJpYW50Q1NTMjEobV9yYW5nZSk7CisgICAgICAg
ICAgICBpZiAoZm9udFZhcmlhbnRDYXBzKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CisgICAgICAgIGlmICghZm9udFdlaWdodCkgeworICAgICAgICAgICAgZm9udFdlaWdo
dCA9IGNvbnN1bWVGb250V2VpZ2h0KG1fcmFuZ2UpOworICAgICAgICAgICAgaWYgKGZvbnRXZWln
aHQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFm
b250U3RyZXRjaCAmJiBDU1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFsaWRLZXl3b3JkUHJvcGVydHlB
bmRWYWx1ZShDU1NQcm9wZXJ0eUZvbnRTdHJldGNoLCBpZCwgbV9jb250ZXh0Lm1vZGUoKSkpCisg
ICAgICAgICAgICBmb250U3RyZXRjaCA9IGNvbnN1bWVJZGVudChtX3JhbmdlKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKG1fcmFuZ2UuYXRFbmQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlG
b250U3R5bGUsIENTU1Byb3BlcnR5Rm9udCwgZm9udFN0eWxlID8gKmZvbnRTdHlsZSA6ICpDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vcm1hbCksIGltcG9ydGFu
dCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250VmFyaWFudENhcHMsIENTU1Byb3Bl
cnR5Rm9udCwgZm9udFZhcmlhbnRDYXBzID8gKmZvbnRWYXJpYW50Q2FwcyA6ICpDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vcm1hbCksIGltcG9ydGFudCk7Cisg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250VmFyaWFudExpZ2F0dXJlcywgQ1NTUHJvcGVy
dHlGb250LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3Jt
YWwpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRO
dW1lcmljLCBDU1NQcm9wZXJ0eUZvbnQsICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRp
ZmllcihDU1NWYWx1ZU5vcm1hbCksIGltcG9ydGFudCk7CisKKyAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUZvbnRXZWlnaHQsIENTU1Byb3BlcnR5Rm9udCwgZm9udFdlaWdodCA/ICpmb250V2Vp
Z2h0IDogKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFs
KSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTdHJldGNoLCBD
U1NQcm9wZXJ0eUZvbnQsIGZvbnRTdHJldGNoID8gKmZvbnRTdHJldGNoIDogKkNTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFsKSwgaW1wb3J0YW50KTsKKwor
ICAgIC8vIE5vdyBhIGZvbnQgc2l6ZSBfbXVzdF8gY29tZS4KKyAgICBDU1NWYWx1ZSogZm9udFNp
emUgPSBjb25zdW1lRm9udFNpemUobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgaWYg
KCFmb250U2l6ZSB8fCBtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIENTU1Byb3BlcnR5Rm9udCwgKmZv
bnRTaXplLCBpbXBvcnRhbnQpOworCisgICAgaWYgKGNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRl
c3BhY2UobV9yYW5nZSkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGxpbmVIZWlnaHQg
PSBjb25zdW1lTGluZUhlaWdodChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICAgICAg
aWYgKCFsaW5lSGVpZ2h0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhZGRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUxpbmVIZWlnaHQsIENTU1Byb3BlcnR5Rm9udCwgKmxpbmVIZWln
aHQsIGltcG9ydGFudCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJv
cGVydHlMaW5lSGVpZ2h0LCBDU1NQcm9wZXJ0eUZvbnQsICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vcm1hbCksIGltcG9ydGFudCk7CisgICAgfQorCisgICAg
Ly8gRm9udCBmYW1pbHkgbXVzdCBjb21lIG5vdy4KKyAgICBDU1NWYWx1ZSogcGFyc2VkRmFtaWx5
VmFsdWUgPSBjb25zdW1lRm9udEZhbWlseShtX3JhbmdlKTsKKyAgICBpZiAoIXBhcnNlZEZhbWls
eVZhbHVlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUZvbnRGYW1pbHksIENTU1Byb3BlcnR5Rm9udCwgKnBhcnNlZEZhbWlseVZhbHVlLCBpbXBv
cnRhbnQpOworCisgICAgLy8gRklYTUU6IGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTEvV0QtY3Nz
My1mb250cy0yMDExMDMyNC8jZm9udC1wcm9wIHJlcXVpcmVzIHRoYXQKKyAgICAvLyAiZm9udC1z
dHJldGNoIiwgImZvbnQtc2l6ZS1hZGp1c3QiLCBhbmQgImZvbnQta2VybmluZyIgYmUgcmVzZXQg
dG8gdGhlaXIgaW5pdGlhbCB2YWx1ZXMKKyAgICAvLyBidXQgd2UgZG9uJ3Qgc2VlbSB0byBzdXBw
b3J0IHRoZW0gYXQgdGhlIG1vbWVudC4gVGhleSBzaG91bGQgYWxzbyBiZSBhZGRlZCBoZXJlIG9u
Y2UgaW1wbGVtZW50ZWQuCisgICAgcmV0dXJuIG1fcmFuZ2UuYXRFbmQoKTsKK30KKworYm9vbCBD
U1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUZvbnRWYXJpYW50U2hvcnRoYW5kKGJvb2wgaW1wb3J0
YW50KQoreworICAgIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlTm9u
ZT4obV9yYW5nZS5wZWVrKCkuaWQoKSkpIHsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVy
dHlGb250VmFyaWFudExpZ2F0dXJlcywgQ1NTUHJvcGVydHlGb250VmFyaWFudCwgKmNvbnN1bWVJ
ZGVudChtX3JhbmdlKSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVy
dHlGb250VmFyaWFudENhcHMsIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsICpDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vcm1hbCksIGltcG9ydGFudCk7CisgICAg
ICAgIHJldHVybiBtX3JhbmdlLmF0RW5kKCk7CisgICAgfQorCisgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIGNhcHNWYWx1ZSA9IG51bGxwdHI7CisgICAgRm9udFZhcmlhbnRMaWdhdHVyZXNQYXJzZXIg
bGlnYXR1cmVzUGFyc2VyOworICAgIEZvbnRWYXJpYW50TnVtZXJpY1BhcnNlciBudW1lcmljUGFy
c2VyOworICAgIGRvIHsKKyAgICAgICAgRm9udFZhcmlhbnRMaWdhdHVyZXNQYXJzZXI6OlBhcnNl
UmVzdWx0IGxpZ2F0dXJlc1BhcnNlUmVzdWx0ID0gbGlnYXR1cmVzUGFyc2VyLmNvbnN1bWVMaWdh
dHVyZShtX3JhbmdlKTsKKyAgICAgICAgRm9udFZhcmlhbnROdW1lcmljUGFyc2VyOjpQYXJzZVJl
c3VsdCBudW1lcmljUGFyc2VSZXN1bHQgPSBudW1lcmljUGFyc2VyLmNvbnN1bWVOdW1lcmljKG1f
cmFuZ2UpOworICAgICAgICBpZiAobGlnYXR1cmVzUGFyc2VSZXN1bHQgPT0gRm9udFZhcmlhbnRM
aWdhdHVyZXNQYXJzZXI6OlBhcnNlUmVzdWx0OjpDb25zdW1lZFZhbHVlCisgICAgICAgICAgICB8
fCBudW1lcmljUGFyc2VSZXN1bHQgPT0gRm9udFZhcmlhbnROdW1lcmljUGFyc2VyOjpQYXJzZVJl
c3VsdDo6Q29uc3VtZWRWYWx1ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlm
IChsaWdhdHVyZXNQYXJzZVJlc3VsdCA9PSBGb250VmFyaWFudExpZ2F0dXJlc1BhcnNlcjo6UGFy
c2VSZXN1bHQ6OkRpc2FsbG93ZWRWYWx1ZQorICAgICAgICAgICAgfHwgbnVtZXJpY1BhcnNlUmVz
dWx0ID09IEZvbnRWYXJpYW50TnVtZXJpY1BhcnNlcjo6UGFyc2VSZXN1bHQ6OkRpc2FsbG93ZWRW
YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBDU1NWYWx1ZUlEIGlk
ID0gbV9yYW5nZS5wZWVrKCkuaWQoKTsKKyAgICAgICAgc3dpdGNoIChpZCkgeworICAgICAgICBj
YXNlIENTU1ZhbHVlU21hbGxDYXBzOgorICAgICAgICBjYXNlIENTU1ZhbHVlQWxsU21hbGxDYXBz
OgorICAgICAgICBjYXNlIENTU1ZhbHVlUGV0aXRlQ2FwczoKKyAgICAgICAgY2FzZSBDU1NWYWx1
ZUFsbFBldGl0ZUNhcHM6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVVbmljYXNlOgorICAgICAgICBj
YXNlIENTU1ZhbHVlVGl0bGluZ0NhcHM6CisgICAgICAgICAgICAvLyBPbmx5IG9uZSBjYXBzIHZh
bHVlIHBlcm1pdHRlZCBpbiBmb250LXZhcmlhbnQgZ3JhbW1hci4KKyAgICAgICAgICAgIGlmIChj
YXBzVmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgY2Fw
c1ZhbHVlID0gY29uc3VtZUlkZW50KG1fcmFuZ2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9
IHdoaWxlICghbV9yYW5nZS5hdEVuZCgpKTsKKworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5
Rm9udFZhcmlhbnRMaWdhdHVyZXMsIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsICpsaWdhdHVyZXNQ
YXJzZXIuZmluYWxpemVWYWx1ZSgpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1By
b3BlcnR5Rm9udFZhcmlhbnROdW1lcmljLCBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LCAqbnVtZXJp
Y1BhcnNlci5maW5hbGl6ZVZhbHVlKCksIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NT
UHJvcGVydHlGb250VmFyaWFudENhcHMsIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsIGNhcHNWYWx1
ZSA/ICpjYXBzVmFsdWUgOiAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NT
VmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIENT
U1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lQm9yZGVyU3BhY2luZyhib29sIGltcG9ydGFudCkKK3sK
KyAgICBDU1NWYWx1ZSogaG9yaXpvbnRhbFNwYWNpbmcgPSBjb25zdW1lTGVuZ3RoKG1fcmFuZ2Us
IG1fY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwgVW5pdGxlc3NRdWlyazo6
QWxsb3cpOworICAgIGlmICghaG9yaXpvbnRhbFNwYWNpbmcpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBDU1NWYWx1ZSogdmVydGljYWxTcGFjaW5nID0gaG9yaXpvbnRhbFNwYWNpbmc7Cisg
ICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgIHZlcnRpY2FsU3BhY2luZyA9IGNvbnN1
bWVMZW5ndGgobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZl
LCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7CisgICAgaWYgKCF2ZXJ0aWNhbFNwYWNpbmcgfHwgIW1f
cmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFkZFByb3BlcnR5KENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcsIENTU1Byb3BlcnR5Qm9yZGVy
U3BhY2luZywgKmhvcml6b250YWxTcGFjaW5nLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5
KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nLCBDU1NQcm9wZXJ0eUJvcmRl
clNwYWNpbmcsICp2ZXJ0aWNhbFNwYWNpbmcsIGltcG9ydGFudCk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVNpbmdsZVZpZXdwb3J0RGVzY3JpcHRvcihD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUHJvcGVydHlJRCBwcm9wSWQsIENTU1BhcnNl
ck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygp
LmlkKCk7CisgICAgc3dpdGNoIChwcm9wSWQpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWluV2lk
dGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1heFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlN
aW5IZWlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1heEhlaWdodDoKKyAgICAgICAgaWYgKGlk
ID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZUludGVybmFsRXh0ZW5kVG9ab29tKQor
ICAgICAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgICAgIHJldHVybiBj
b25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9u
TmVnYXRpdmUpOworICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5ab29tOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlNYXhab29tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlab29tOiB7CisgICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdl
KTsKKyAgICAgICAgQ1NTVmFsdWUqIHBhcnNlZFZhbHVlID0gY29uc3VtZU51bWJlcihyYW5nZSwg
VmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgaWYgKHBhcnNlZFZhbHVlKQorICAgICAg
ICAgICAgcmV0dXJuIHBhcnNlZFZhbHVlOworICAgICAgICByZXR1cm4gY29uc3VtZVBlcmNlbnQo
cmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVy
dHlVc2VyWm9vbToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudDxDU1NWYWx1ZVpvb20sIENT
U1ZhbHVlRml4ZWQ+KHJhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5T3JpZW50YXRpb246Cisg
ICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBdXRvLCBDU1NWYWx1ZVBvcnRyYWl0
LCBDU1NWYWx1ZUxhbmRzY2FwZT4ocmFuZ2UpOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBh
cnNlcjo6cGFyc2VWaWV3cG9ydERlc2NyaXB0b3IoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wg
aW1wb3J0YW50KQoreworICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NWaWV3
cG9ydEVuYWJsZWQoKSB8fCBpc1VBU2hlZXRCZWhhdmlvcihtX2NvbnRleHQubW9kZSgpKSk7CisK
KyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlXaWR0aDogeworICAg
ICAgICBDU1NWYWx1ZSogbWluV2lkdGggPSBjb25zdW1lU2luZ2xlVmlld3BvcnREZXNjcmlwdG9y
KG1fcmFuZ2UsIENTU1Byb3BlcnR5TWluV2lkdGgsIG1fY29udGV4dC5tb2RlKCkpOworICAgICAg
ICBpZiAoIW1pbldpZHRoKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBDU1NW
YWx1ZSogbWF4V2lkdGggPSBtaW5XaWR0aDsKKyAgICAgICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkp
CisgICAgICAgICAgICBtYXhXaWR0aCA9IGNvbnN1bWVTaW5nbGVWaWV3cG9ydERlc2NyaXB0b3Io
bV9yYW5nZSwgQ1NTUHJvcGVydHlNYXhXaWR0aCwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgICAg
IGlmICghbWF4V2lkdGggfHwgIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlNaW5XaWR0aCwgQ1NTUHJvcGVy
dHlJbnZhbGlkLCAqbWluV2lkdGgsIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KENT
U1Byb3BlcnR5TWF4V2lkdGgsIENTU1Byb3BlcnR5SW52YWxpZCwgKm1heFdpZHRoLCBpbXBvcnRh
bnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eUhl
aWdodDogeworICAgICAgICBDU1NWYWx1ZSogbWluSGVpZ2h0ID0gY29uc3VtZVNpbmdsZVZpZXdw
b3J0RGVzY3JpcHRvcihtX3JhbmdlLCBDU1NQcm9wZXJ0eU1pbkhlaWdodCwgbV9jb250ZXh0Lm1v
ZGUoKSk7CisgICAgICAgIGlmICghbWluSGVpZ2h0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBDU1NWYWx1ZSogbWF4SGVpZ2h0ID0gbWluSGVpZ2h0OworICAgICAgICBpZiAo
IW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAgIG1heEhlaWdodCA9IGNvbnN1bWVTaW5nbGVW
aWV3cG9ydERlc2NyaXB0b3IobV9yYW5nZSwgQ1NTUHJvcGVydHlNYXhIZWlnaHQsIG1fY29udGV4
dC5tb2RlKCkpOworICAgICAgICBpZiAoIW1heEhlaWdodCB8fCAhbV9yYW5nZS5hdEVuZCgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0
eU1pbkhlaWdodCwgQ1NTUHJvcGVydHlJbnZhbGlkLCAqbWluSGVpZ2h0LCBpbXBvcnRhbnQpOwor
ICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1heEhlaWdodCwgQ1NTUHJvcGVydHlJbnZh
bGlkLCAqbWF4SGVpZ2h0LCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbldpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhX
aWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWluSGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlNYXhIZWlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1pblpvb206CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eU1heFpvb206CisgICAgY2FzZSBDU1NQcm9wZXJ0eVpvb206CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVVzZXJab29tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPcmllbnRhdGlvbjogeworICAg
ICAgICBDU1NWYWx1ZSogcGFyc2VkVmFsdWUgPSBjb25zdW1lU2luZ2xlVmlld3BvcnREZXNjcmlw
dG9yKG1fcmFuZ2UsIHByb3BJZCwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgICAgIGlmICghcGFy
c2VkVmFsdWUgfHwgIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgYWRkUHJvcGVydHkocHJvcElkLCBDU1NQcm9wZXJ0eUludmFsaWQsICpwYXJzZWRW
YWx1ZSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIGNvbnN1
bWVDb2x1bW5XaWR0aE9yQ291bnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1ZhbHVl
KiYgY29sdW1uV2lkdGgsIENTU1ZhbHVlKiYgY29sdW1uQ291bnQpCit7CisgICAgaWYgKHJhbmdl
LnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykgeworICAgICAgICBjb25zdW1lSWRlbnQocmFu
Z2UpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKCFjb2x1bW5XaWR0aCkg
eworICAgICAgICBjb2x1bW5XaWR0aCA9IGNvbnN1bWVDb2x1bW5XaWR0aChyYW5nZSk7CisgICAg
ICAgIGlmIChjb2x1bW5XaWR0aCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICBpZiAoIWNvbHVtbkNvdW50KQorICAgICAgICBjb2x1bW5Db3VudCA9IGNvbnN1bWVDb2x1bW5D
b3VudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbHVtbkNvdW50OworfQorCitib29sIENTU1Byb3Bl
cnR5UGFyc2VyOjpjb25zdW1lQ29sdW1ucyhib29sIGltcG9ydGFudCkKK3sKKyAgICBDU1NWYWx1
ZSogY29sdW1uV2lkdGggPSBudWxscHRyOworICAgIENTU1ZhbHVlKiBjb2x1bW5Db3VudCA9IG51
bGxwdHI7CisgICAgaWYgKCFjb25zdW1lQ29sdW1uV2lkdGhPckNvdW50KG1fcmFuZ2UsIGNvbHVt
bldpZHRoLCBjb2x1bW5Db3VudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjb25zdW1l
Q29sdW1uV2lkdGhPckNvdW50KG1fcmFuZ2UsIGNvbHVtbldpZHRoLCBjb2x1bW5Db3VudCk7Cisg
ICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
IWNvbHVtbldpZHRoKQorICAgICAgICBjb2x1bW5XaWR0aCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlQXV0byk7CisgICAgaWYgKCFjb2x1bW5Db3VudCkKKyAg
ICAgICAgY29sdW1uQ291bnQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihD
U1NWYWx1ZUF1dG8pOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Q29sdW1uV2lkdGgsIENT
U1Byb3BlcnR5SW52YWxpZCwgKmNvbHVtbldpZHRoLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3Bl
cnR5KENTU1Byb3BlcnR5Q29sdW1uQ291bnQsIENTU1Byb3BlcnR5SW52YWxpZCwgKmNvbHVtbkNv
dW50LCBpbXBvcnRhbnQpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIENTU1Byb3BlcnR5
UGFyc2VyOjpjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZCYgc2hvcnRoYW5kLCBib29sIGltcG9ydGFudCkKK3sKKyAgICBBU1NFUlQoc2hvcnRoYW5k
Lmxlbmd0aCgpIDw9IDYpOyAvLyBFeGlzdGluZyBzaG9ydGhhbmRzIGhhdmUgYXQgbW9zdCA2IGxv
bmdoYW5kcy4KKyAgICBjb25zdCBDU1NWYWx1ZSogbG9uZ2hhbmRzWzZdID0geyBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH07CisgICAgY29uc3Qg
Q1NTUHJvcGVydHlJRCogc2hvcnRoYW5kUHJvcGVydGllcyA9IHNob3J0aGFuZC5wcm9wZXJ0aWVz
KCk7CisgICAgZG8geworICAgICAgICBib29sIGZvdW5kTG9uZ2hhbmQgPSBmYWxzZTsKKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7ICFmb3VuZExvbmdoYW5kICYmIGkgPCBzaG9ydGhhbmQubGVu
Z3RoKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGxvbmdoYW5kc1tpXSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGxvbmdoYW5kc1tpXSA9IHBhcnNlU2luZ2xlVmFs
dWUoc2hvcnRoYW5kUHJvcGVydGllc1tpXSwgc2hvcnRoYW5kLmlkKCkpOworICAgICAgICAgICAg
aWYgKGxvbmdoYW5kc1tpXSkKKyAgICAgICAgICAgICAgICBmb3VuZExvbmdoYW5kID0gdHJ1ZTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoIWZvdW5kTG9uZ2hhbmQpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfSB3aGlsZSAoIW1fcmFuZ2UuYXRFbmQoKSk7CisKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNob3J0aGFuZC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGlmIChs
b25naGFuZHNbaV0pCisgICAgICAgICAgICBhZGRQcm9wZXJ0eShzaG9ydGhhbmRQcm9wZXJ0aWVz
W2ldLCBzaG9ydGhhbmQuaWQoKSwgKmxvbmdoYW5kc1tpXSwgaW1wb3J0YW50KTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgYWRkUHJvcGVydHkoc2hvcnRoYW5kUHJvcGVydGllc1tpXSwgc2hv
cnRoYW5kLmlkKCksICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGlt
cG9ydGFudCk7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIENTU1Byb3BlcnR5
UGFyc2VyOjpjb25zdW1lRmxleChib29sIGltcG9ydGFudCkKK3sKKyAgICBzdGF0aWMgY29uc3Qg
ZG91YmxlIHVuc2V0VmFsdWUgPSAtMTsKKyAgICBkb3VibGUgZmxleEdyb3cgPSB1bnNldFZhbHVl
OworICAgIGRvdWJsZSBmbGV4U2hyaW5rID0gdW5zZXRWYWx1ZTsKKyAgICBDU1NQcmltaXRpdmVW
YWx1ZSogZmxleEJhc2lzID0gbnVsbHB0cjsKKworICAgIGlmIChtX3JhbmdlLnBlZWsoKS5pZCgp
ID09IENTU1ZhbHVlTm9uZSkgeworICAgICAgICBmbGV4R3JvdyA9IDA7CisgICAgICAgIGZsZXhT
aHJpbmsgPSAwOworICAgICAgICBmbGV4QmFzaXMgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
SWRlbnRpZmllcihDU1NWYWx1ZUF1dG8pOworICAgICAgICBtX3JhbmdlLmNvbnN1bWVJbmNsdWRp
bmdXaGl0ZXNwYWNlKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSAw
OworICAgICAgICB3aGlsZSAoIW1fcmFuZ2UuYXRFbmQoKSAmJiBpbmRleCsrIDwgMykgeworICAg
ICAgICAgICAgZG91YmxlIG51bTsKKyAgICAgICAgICAgIGlmIChjb25zdW1lTnVtYmVyUmF3KG1f
cmFuZ2UsIG51bSkpIHsKKyAgICAgICAgICAgICAgICBpZiAobnVtIDwgMCkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChmbGV4R3JvdyA9PSB1
bnNldFZhbHVlKQorICAgICAgICAgICAgICAgICAgICBmbGV4R3JvdyA9IG51bTsKKyAgICAgICAg
ICAgICAgICBlbHNlIGlmIChmbGV4U2hyaW5rID09IHVuc2V0VmFsdWUpCisgICAgICAgICAgICAg
ICAgICAgIGZsZXhTaHJpbmsgPSBudW07CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoIW51bSkg
Ly8gZmxleCBvbmx5IGFsbG93cyBhIGJhc2lzIG9mIDAgKHNhbnMgdW5pdHMpIGlmIGZsZXgtZ3Jv
dyBhbmQgZmxleC1zaHJpbmsgdmFsdWVzIGhhdmUgYWxyZWFkeSBiZWVuIHNldC4KKyAgICAgICAg
ICAgICAgICAgICAgZmxleEJhc2lzID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBpeGVscyk7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9IGVsc2UgaWYg
KCFmbGV4QmFzaXMpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9yYW5nZS5wZWVrKCkuaWQoKSA9
PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgICAgICAgICAgICAgIGZsZXhCYXNpcyA9IGNvbnN1bWVJ
ZGVudChtX3JhbmdlKTsKKyAgICAgICAgICAgICAgICBpZiAoIWZsZXhCYXNpcykKKyAgICAgICAg
ICAgICAgICAgICAgZmxleEJhc2lzID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChtX3JhbmdlLCBt
X2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICAgICAgICAg
IGlmIChpbmRleCA9PSAyICYmICFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoaW5k
ZXggPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGZsZXhHcm93
ID09IHVuc2V0VmFsdWUpCisgICAgICAgICAgICBmbGV4R3JvdyA9IDE7CisgICAgICAgIGlmIChm
bGV4U2hyaW5rID09IHVuc2V0VmFsdWUpCisgICAgICAgICAgICBmbGV4U2hyaW5rID0gMTsKKyAg
ICAgICAgaWYgKCFmbGV4QmFzaXMpCisgICAgICAgICAgICBmbGV4QmFzaXMgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKDAsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGVyY2VudGFn
ZSk7CisgICAgfQorCisgICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZsZXhHcm93LCBDU1NQcm9wZXJ0eUZs
ZXgsICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGNsYW1wVG88ZmxvYXQ+KGZsZXhHcm93KSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpOdW1iZXIpLCBpbXBvcnRhbnQpOworICAgIGFk
ZFByb3BlcnR5KENTU1Byb3BlcnR5RmxleFNocmluaywgQ1NTUHJvcGVydHlGbGV4LCAqQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShjbGFtcFRvPGZsb2F0PihmbGV4U2hyaW5rKSwgQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlOjpOdW1iZXIpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5
KENTU1Byb3BlcnR5RmxleEJhc2lzLCBDU1NQcm9wZXJ0eUZsZXgsICpmbGV4QmFzaXMsIGltcG9y
dGFudCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNv
bnN1bWVCb3JkZXIoYm9vbCBpbXBvcnRhbnQpCit7CisgICAgQ1NTVmFsdWUqIHdpZHRoID0gbnVs
bHB0cjsKKyAgICBjb25zdCBDU1NWYWx1ZSogc3R5bGUgPSBudWxscHRyOworICAgIENTU1ZhbHVl
KiBjb2xvciA9IG51bGxwdHI7CisKKyAgICB3aGlsZSAoIXdpZHRoIHx8ICFzdHlsZSB8fCAhY29s
b3IpIHsKKyAgICAgICAgaWYgKCF3aWR0aCkgeworICAgICAgICAgICAgd2lkdGggPSBjb25zdW1l
TGluZVdpZHRoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFVuaXRsZXNzUXVpcms6OkZvcmJp
ZCk7CisgICAgICAgICAgICBpZiAod2lkdGgpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKCFzdHlsZSkgeworICAgICAgICAgICAgc3R5bGUgPSBwYXJz
ZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRl
cik7CisgICAgICAgICAgICBpZiAoc3R5bGUpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKCFjb2xvcikgeworICAgICAgICAgICAgY29sb3IgPSBjb25z
dW1lQ29sb3IobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgICAgICAgICBpZiAoY29s
b3IpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgaWYgKCF3aWR0aCAmJiAhc3R5bGUgJiYgIWNvbG9yKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIXdpZHRoKQorICAgICAgICB3aWR0aCA9IENTU0luaXRp
YWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKTsKKyAgICBpZiAoIXN0eWxlKQorICAgICAg
ICBzdHlsZSA9IENTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKTsKKyAgICBp
ZiAoIWNvbG9yKQorICAgICAgICBjb2xvciA9IENTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5
SW1wbGljaXQoKTsKKworICAgIGFkZEV4cGFuZGVkUHJvcGVydHlGb3JWYWx1ZShDU1NQcm9wZXJ0
eUJvcmRlcldpZHRoLCAqd2lkdGgsIGltcG9ydGFudCk7CisgICAgYWRkRXhwYW5kZWRQcm9wZXJ0
eUZvclZhbHVlKENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsICpzdHlsZSwgaW1wb3J0YW50KTsKKyAg
ICBhZGRFeHBhbmRlZFByb3BlcnR5Rm9yVmFsdWUoQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgKmNv
bG9yLCBpbXBvcnRhbnQpOworICAgIGFkZEV4cGFuZGVkUHJvcGVydHlGb3JWYWx1ZShDU1NQcm9w
ZXJ0eUJvcmRlckltYWdlLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgp
LCBpbXBvcnRhbnQpOworCisgICAgcmV0dXJuIG1fcmFuZ2UuYXRFbmQoKTsKK30KKworYm9vbCBD
U1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZTRWYWx1ZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZCYgc2hvcnRoYW5kLCBib29sIGltcG9ydGFudCkKK3sKKyAgICBBU1NFUlQoc2hvcnRoYW5k
Lmxlbmd0aCgpID09IDQpOworICAgIGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcyA9IHNo
b3J0aGFuZC5wcm9wZXJ0aWVzKCk7CisgICAgY29uc3QgQ1NTVmFsdWUqIHRvcCA9IHBhcnNlU2lu
Z2xlVmFsdWUobG9uZ2hhbmRzWzBdLCBzaG9ydGhhbmQuaWQoKSk7CisgICAgaWYgKCF0b3ApCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IENTU1ZhbHVlKiByaWdodCA9IHBhcnNl
U2luZ2xlVmFsdWUobG9uZ2hhbmRzWzFdLCBzaG9ydGhhbmQuaWQoKSk7CisgICAgY29uc3QgQ1NT
VmFsdWUqIGJvdHRvbSA9IG51bGxwdHI7CisgICAgY29uc3QgQ1NTVmFsdWUqIGxlZnQgPSBudWxs
cHRyOworICAgIGlmIChyaWdodCkgeworICAgICAgICBib3R0b20gPSBwYXJzZVNpbmdsZVZhbHVl
KGxvbmdoYW5kc1syXSwgc2hvcnRoYW5kLmlkKCkpOworICAgICAgICBpZiAoYm90dG9tKQorICAg
ICAgICAgICAgbGVmdCA9IHBhcnNlU2luZ2xlVmFsdWUobG9uZ2hhbmRzWzNdLCBzaG9ydGhhbmQu
aWQoKSk7CisgICAgfQorCisgICAgaWYgKCFyaWdodCkKKyAgICAgICAgcmlnaHQgPSB0b3A7Cisg
ICAgaWYgKCFib3R0b20pCisgICAgICAgIGJvdHRvbSA9IHRvcDsKKyAgICBpZiAoIWxlZnQpCisg
ICAgICAgIGxlZnQgPSByaWdodDsKKworICAgIGFkZFByb3BlcnR5KGxvbmdoYW5kc1swXSwgc2hv
cnRoYW5kLmlkKCksICp0b3AsIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkobG9uZ2hhbmRz
WzFdLCBzaG9ydGhhbmQuaWQoKSwgKnJpZ2h0LCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5
KGxvbmdoYW5kc1syXSwgc2hvcnRoYW5kLmlkKCksICpib3R0b20sIGltcG9ydGFudCk7CisgICAg
YWRkUHJvcGVydHkobG9uZ2hhbmRzWzNdLCBzaG9ydGhhbmQuaWQoKSwgKmxlZnQsIGltcG9ydGFu
dCk7CisKKyAgICByZXR1cm4gbV9yYW5nZS5hdEVuZCgpOworfQorCitib29sIENTU1Byb3BlcnR5
UGFyc2VyOjpjb25zdW1lQm9yZGVySW1hZ2UoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgYm9vbCBp
bXBvcnRhbnQpCit7CisgICAgQ1NTVmFsdWUqIHNvdXJjZSA9IG51bGxwdHI7CisgICAgQ1NTVmFs
dWUqIHNsaWNlID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogd2lkdGggPSBudWxscHRyOworICAg
IENTU1ZhbHVlKiBvdXRzZXQgPSBudWxscHRyOworICAgIENTU1ZhbHVlKiByZXBlYXQgPSBudWxs
cHRyOworICAgIGlmIChjb25zdW1lQm9yZGVySW1hZ2VDb21wb25lbnRzKHByb3BlcnR5LCBtX3Jh
bmdlLCBtX2NvbnRleHQsIHNvdXJjZSwgc2xpY2UsIHdpZHRoLCBvdXRzZXQsIHJlcGVhdCkpIHsK
KyAgICAgICAgc3dpdGNoIChwcm9wZXJ0eSkgeworICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFza0JveEltYWdlOgorICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJr
aXRNYXNrQm94SW1hZ2VTb3VyY2UsIENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlLCBzb3Vy
Y2UgPyAqc291cmNlIDogKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwg
aW1wb3J0YW50KTsKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFz
a0JveEltYWdlU2xpY2UsIENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlLCBzbGljZSA/ICpz
bGljZSA6ICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFu
dCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFn
ZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgd2lkdGggPyAqd2lkdGggOiAq
Q1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAg
ICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VPdXRzZXQs
IENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlLCBvdXRzZXQgPyAqb3V0c2V0IDogKkNTU0lu
aXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAg
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlUmVwZWF0LCBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgcmVwZWF0ID8gKnJlcGVhdCA6ICpDU1NJbml0aWFs
VmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlOgorICAgICAg
ICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZSwgQ1NTUHJvcGVy
dHlCb3JkZXJJbWFnZSwgc291cmNlID8gKnNvdXJjZSA6ICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0
ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUJvcmRlckltYWdlU2xpY2UsIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2UsIHNsaWNl
ID8gKnNsaWNlIDogKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1w
b3J0YW50KTsKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VX
aWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZSwgd2lkdGggPyAqd2lkdGggOiAqQ1NTSW5pdGlh
bFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgICAgICAgICAg
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZU91dHNldCwgQ1NTUHJvcGVydHlCb3Jk
ZXJJbWFnZSwgb3V0c2V0ID8gKm91dHNldCA6ICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2Fj
eUltcGxpY2l0KCksIGltcG9ydGFudCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUJvcmRlckltYWdlUmVwZWF0LCBDU1NQcm9wZXJ0eUJvcmRlckltYWdlLCByZXBlYXQgPyAq
cmVwZWF0IDogKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0
YW50KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgaW5saW5lIENT
U1ZhbHVlSUQgbWFwRnJvbVBhZ2VCcmVha0JldHdlZW4oQ1NTVmFsdWVJRCB2YWx1ZSkKK3sKKyAg
ICBpZiAodmFsdWUgPT0gQ1NTVmFsdWVBbHdheXMpCisgICAgICAgIHJldHVybiBDU1NWYWx1ZVBh
Z2U7CisgICAgaWYgKHZhbHVlID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZSA9PSBDU1NWYWx1ZUF2
b2lkIHx8IHZhbHVlID09IENTU1ZhbHVlTGVmdCB8fCB2YWx1ZSA9PSBDU1NWYWx1ZVJpZ2h0KQor
ICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgcmV0dXJuIENTU1ZhbHVlSW52YWxpZDsKK30KKwor
c3RhdGljIGlubGluZSBDU1NWYWx1ZUlEIG1hcEZyb21Db2x1bW5CcmVha0JldHdlZW4oQ1NTVmFs
dWVJRCB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUgPT0gQ1NTVmFsdWVBbHdheXMpCisgICAgICAg
IHJldHVybiBDU1NWYWx1ZUNvbHVtbjsKKyAgICBpZiAodmFsdWUgPT0gQ1NTVmFsdWVBdXRvIHx8
IHZhbHVlID09IENTU1ZhbHVlQXZvaWQpCisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1
cm4gQ1NTVmFsdWVJbnZhbGlkOworfQorCitzdGF0aWMgaW5saW5lIENTU1ZhbHVlSUQgbWFwRnJv
bUNvbHVtbk9yUGFnZUJyZWFrSW5zaWRlKENTU1ZhbHVlSUQgdmFsdWUpCit7CisgICAgaWYgKHZh
bHVlID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZSA9PSBDU1NWYWx1ZUF2b2lkKQorICAgICAgICBy
ZXR1cm4gdmFsdWU7CisgICAgcmV0dXJuIENTU1ZhbHVlSW52YWxpZDsKK30KKworc3RhdGljIGlu
bGluZSBDU1NQcm9wZXJ0eUlEIG1hcEZyb21MZWdhY3lCcmVha1Byb3BlcnR5KENTU1Byb3BlcnR5
SUQgcHJvcGVydHkpCit7CisgICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5UGFnZUJyZWFr
QWZ0ZXIgfHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0FmdGVyKQor
ICAgICAgICByZXR1cm4gQ1NTUHJvcGVydHlCcmVha0FmdGVyOworICAgIGlmIChwcm9wZXJ0eSA9
PSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0JlZm9yZSB8fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtbkJyZWFrQmVmb3JlKQorICAgICAgICByZXR1cm4gQ1NTUHJvcGVydHlCcmVha0Jl
Zm9yZTsKKyAgICBBU1NFUlQocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGUg
fHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0luc2lkZSk7CisgICAg
cmV0dXJuIENTU1Byb3BlcnR5QnJlYWtJbnNpZGU7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJz
ZXI6OmNvbnN1bWVMZWdhY3lCcmVha1Byb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGJv
b2wgaW1wb3J0YW50KQoreworICAgIC8vIFRoZSBmcmFnbWVudGF0aW9uIHNwZWMgc2F5cyB0aGF0
IHBhZ2UtYnJlYWstKGFmdGVyfGJlZm9yZXxpbnNpZGUpIGFyZSB0byBiZSB0cmVhdGVkIGFzCisg
ICAgLy8gc2hvcnRoYW5kcyBmb3IgdGhlaXIgYnJlYWstKGFmdGVyfGJlZm9yZXxpbnNpZGUpIGNv
dW50ZXJwYXJ0cy4gV2UnbGwgZG8gdGhlIHNhbWUgZm9yIHRoZQorICAgIC8vIG5vbi1zdGFuZGFy
ZCBwcm9wZXJ0aWVzIC13ZWJraXQtY29sdW1uLWJyZWFrLShhZnRlcnxiZWZvcmV8aW5zaWRlKS4K
KyAgICBDU1NQcmltaXRpdmVWYWx1ZSoga2V5d29yZCA9IGNvbnN1bWVJZGVudChtX3JhbmdlKTsK
KyAgICBpZiAoIWtleXdvcmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fcmFu
Z2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIENTU1ZhbHVlSUQgdmFsdWUg
PSBrZXl3b3JkLT5nZXRWYWx1ZUlEKCk7CisgICAgc3dpdGNoIChwcm9wZXJ0eSkgeworICAgIGNh
c2UgQ1NTUHJvcGVydHlQYWdlQnJlYWtBZnRlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFnZUJy
ZWFrQmVmb3JlOgorICAgICAgICB2YWx1ZSA9IG1hcEZyb21QYWdlQnJlYWtCZXR3ZWVuKHZhbHVl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFr
QWZ0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQmVmb3JlOgorICAg
ICAgICB2YWx1ZSA9IG1hcEZyb21Db2x1bW5CcmVha0JldHdlZW4odmFsdWUpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0luc2lkZToKKyAgICAgICAgdmFsdWUgPSBtYXBGcm9t
Q29sdW1uT3JQYWdlQnJlYWtJbnNpZGUodmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgaWYgKHZhbHVl
ID09IENTU1ZhbHVlSW52YWxpZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1NTUHJv
cGVydHlJRCBnZW5lcmljQnJlYWtQcm9wZXJ0eSA9IG1hcEZyb21MZWdhY3lCcmVha1Byb3BlcnR5
KHByb3BlcnR5KTsKKyAgICBhZGRQcm9wZXJ0eShnZW5lcmljQnJlYWtQcm9wZXJ0eSwgcHJvcGVy
dHksICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcih2YWx1ZSksIGltcG9ydGFu
dCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGNvbnN1bWVCYWNrZ3JvdW5k
UG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRl
eHQmIGNvbnRleHQsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MsIENTU1ZhbHVlKiYgcmVzdWx0WCwg
Q1NTVmFsdWUqJiByZXN1bHRZKQoreworICAgIGRvIHsKKyAgICAgICAgQ1NTVmFsdWUqIHBvc2l0
aW9uWCA9IG51bGxwdHI7CisgICAgICAgIENTU1ZhbHVlKiBwb3NpdGlvblkgPSBudWxscHRyOwor
ICAgICAgICBpZiAoIWNvbnN1bWVQb3NpdGlvbihyYW5nZSwgY29udGV4dC5tb2RlKCksIHVuaXRs
ZXNzLCBwb3NpdGlvblgsIHBvc2l0aW9uWSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGFkZEJhY2tncm91bmRWYWx1ZShyZXN1bHRYLCBwb3NpdGlvblgpOworICAgICAgICBh
ZGRCYWNrZ3JvdW5kVmFsdWUocmVzdWx0WSwgcG9zaXRpb25ZKTsKKyAgICB9IHdoaWxlIChjb25z
dW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3N0YXRpYyBib29sIGNvbnN1bWVSZXBlYXRTdHlsZUNvbXBvbmVudChDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgQ1NTVmFsdWUqJiB2YWx1ZTEsIENTU1ZhbHVlKiYgdmFsdWUyLCBib29s
JiBpbXBsaWNpdCkKK3sKKyAgICBpZiAoY29uc3VtZUlkZW50PENTU1ZhbHVlUmVwZWF0WD4ocmFu
Z2UpKSB7CisgICAgICAgIHZhbHVlMSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlm
aWVyKENTU1ZhbHVlUmVwZWF0KTsKKyAgICAgICAgdmFsdWUyID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb1JlcGVhdCk7CisgICAgICAgIGltcGxpY2l0ID0g
dHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmIChjb25zdW1lSWRlbnQ8
Q1NTVmFsdWVSZXBlYXRZPihyYW5nZSkpIHsKKyAgICAgICAgdmFsdWUxID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb1JlcGVhdCk7CisgICAgICAgIHZhbHVl
MiA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlUmVwZWF0KTsK
KyAgICAgICAgaW1wbGljaXQgPSB0cnVlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgdmFsdWUxID0gY29uc3VtZUlkZW50PENTU1ZhbHVlUmVwZWF0LCBDU1NWYWx1ZU5vUmVwZWF0
LCBDU1NWYWx1ZVJvdW5kLCBDU1NWYWx1ZVNwYWNlPihyYW5nZSk7CisgICAgaWYgKCF2YWx1ZTEp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHZhbHVlMiA9IGNvbnN1bWVJZGVudDxDU1NW
YWx1ZVJlcGVhdCwgQ1NTVmFsdWVOb1JlcGVhdCwgQ1NTVmFsdWVSb3VuZCwgQ1NTVmFsdWVTcGFj
ZT4ocmFuZ2UpOworICAgIGlmICghdmFsdWUyKSB7CisgICAgICAgIHZhbHVlMiA9IHZhbHVlMTsK
KyAgICAgICAgaW1wbGljaXQgPSB0cnVlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
c3RhdGljIGJvb2wgY29uc3VtZVJlcGVhdFN0eWxlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBDU1NWYWx1ZSomIHJlc3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSwgYm9vbCYgaW1wbGljaXQp
Cit7CisgICAgZG8geworICAgICAgICBDU1NWYWx1ZSogcmVwZWF0WCA9IG51bGxwdHI7CisgICAg
ICAgIENTU1ZhbHVlKiByZXBlYXRZID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFjb25zdW1lUmVw
ZWF0U3R5bGVDb21wb25lbnQocmFuZ2UsIHJlcGVhdFgsIHJlcGVhdFksIGltcGxpY2l0KSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYWRkQmFja2dyb3VuZFZhbHVlKHJlc3Vs
dFgsIHJlcGVhdFgpOworICAgICAgICBhZGRCYWNrZ3JvdW5kVmFsdWUocmVzdWx0WSwgcmVwZWF0
WSk7CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkp
OworICAgIHJldHVybiB0cnVlOworfQorCisvLyBOb3RlOiBjb25zdW1lQmFja2dyb3VuZFNob3J0
aGFuZCBhc3N1bWVzIHkgcHJvcGVydGllcyAoZm9yIGV4YW1wbGUgYmFja2dyb3VuZC1wb3NpdGlv
bi15KSBmb2xsb3cKKy8vIHRoZSB4IHByb3BlcnRpZXMgaW4gdGhlIHNob3J0aGFuZCBhcnJheS4K
K2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVCYWNrZ3JvdW5kU2hvcnRoYW5kKGNvbnN0
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCwgYm9vbCBpbXBvcnRhbnQpCit7Cisg
ICAgY29uc3QgdW5zaWduZWQgbG9uZ2hhbmRDb3VudCA9IHNob3J0aGFuZC5sZW5ndGgoKTsKKyAg
ICBDU1NWYWx1ZSogbG9uZ2hhbmRzWzEwXSA9IHsgMCB9OworICAgIEFTU0VSVChsb25naGFuZENv
dW50IDw9IDEwKTsKKworICAgIGJvb2wgaW1wbGljaXQgPSBmYWxzZTsKKyAgICBkbyB7CisgICAg
ICAgIGJvb2wgcGFyc2VkTG9uZ2hhbmRbMTBdID0geyBmYWxzZSB9OworICAgICAgICBDU1NWYWx1
ZSogb3JpZ2luVmFsdWUgPSBudWxscHRyOworICAgICAgICBkbyB7CisgICAgICAgICAgICBib29s
IGZvdW5kUHJvcGVydHkgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbG9uZ2hhbmRDb3VudDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKHBhcnNlZExvbmdo
YW5kW2ldKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAg
IENTU1ZhbHVlKiB2YWx1ZSA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgQ1NTVmFsdWUqIHZh
bHVlWSA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSA9
IHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV07CisgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5
ID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFggfHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUmVwZWF0WCkgeworICAgICAgICAgICAgICAgICAgICBjb25zdW1lUmVwZWF0
U3R5bGVDb21wb25lbnQobV9yYW5nZSwgdmFsdWUsIHZhbHVlWSwgaW1wbGljaXQpOworICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9z
aXRpb25YIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCkgewor
ICAgICAgICAgICAgICAgICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlQ29weSA9IG1fcmFu
Z2U7CisgICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZVBvc2l0aW9uKHJhbmdlQ29weSwg
bV9jb250ZXh0Lm1vZGUoKSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCB2YWx1ZSwgdmFsdWVZKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBt
X3JhbmdlID0gcmFuZ2VDb3B5OworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkg
PT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSB8fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tTaXplKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZVNsYXNoSW5j
bHVkaW5nV2hpdGVzcGFjZShtX3JhbmdlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGNvbnN1bWVCYWNrZ3JvdW5kU2l6ZShw
cm9wZXJ0eSwgbV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgICAgICAgICAgICAgICAg
IGlmICghdmFsdWUgfHwgIXBhcnNlZExvbmdoYW5kW2kgLSAxXSkgLy8gUG9zaXRpb24gbXVzdCBo
YXZlIGJlZW4gcGFyc2VkIGluIHRoZSBjdXJyZW50IGxheWVyLgorICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkg
PT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZIHx8IHByb3BlcnR5ID09IENTU1Byb3Bl
cnR5QmFja2dyb3VuZFJlcGVhdFkKKyAgICAgICAgICAgICAgICAgICAgfHwgcHJvcGVydHkgPT0g
Q1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5
V2Via2l0TWFza1JlcGVhdFkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBjb25zdW1l
QmFja2dyb3VuZENvbXBvbmVudChwcm9wZXJ0eSwgbV9yYW5nZSwgbV9jb250ZXh0KTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4gfHwgcHJv
cGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luKQorICAgICAgICAgICAgICAgICAg
ICAgICAgb3JpZ2luVmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VkTG9u
Z2hhbmRbaV0gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBmb3VuZFByb3BlcnR5ID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgYWRkQmFja2dyb3VuZFZhbHVlKGxvbmdoYW5kc1tpXSwg
dmFsdWUpOworICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVZKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJzZWRMb25naGFuZFtpICsgMV0gPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICAgICAgYWRkQmFja2dyb3VuZFZhbHVlKGxvbmdoYW5kc1tpICsgMV0sIHZhbHVlWSk7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAoIWZvdW5kUHJvcGVydHkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9IHdoaWxlICghbV9yYW5nZS5hdEVuZCgpICYmIG1fcmFuZ2UucGVlaygp
LnR5cGUoKSAhPSBDb21tYVRva2VuKTsKKworICAgICAgICAvLyBUT0RPKHRpbWxvaCk6IFRoaXMg
d2lsbCBtYWtlIGludmFsaWQgbG9uZ2hhbmRzLCBzZWUgY3JidWcuY29tLzM4NjQ1OQorICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxvbmdoYW5kQ291bnQ7ICsraSkgeworICAgICAgICAg
ICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSA9IHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV07Cisg
ICAgICAgICAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IgJiYg
IW1fcmFuZ2UuYXRFbmQoKSkgeworICAgICAgICAgICAgICAgIGlmIChwYXJzZWRMb25naGFuZFtp
XSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBDb2xvcnMgYXJlIG9ubHkg
YWxsb3dlZCBpbiB0aGUgbGFzdCBsYXllci4KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQ2xpcCB8fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwKSAmJiAh
cGFyc2VkTG9uZ2hhbmRbaV0gJiYgb3JpZ2luVmFsdWUpIHsKKyAgICAgICAgICAgICAgICBhZGRC
YWNrZ3JvdW5kVmFsdWUobG9uZ2hhbmRzW2ldLCBvcmlnaW5WYWx1ZSk7CisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIXBhcnNlZExvbmdo
YW5kW2ldKQorICAgICAgICAgICAgICAgIGFkZEJhY2tncm91bmRWYWx1ZShsb25naGFuZHNbaV0s
IENTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSk7CisgICAgICAgIH0KKyAg
ICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKG1fcmFuZ2UpKTsKKyAg
ICBpZiAoIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBsb25naGFuZENvdW50OyArK2kpIHsKKyAgICAgICAgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eSA9IHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV07CisgICAgICAgIGlm
IChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplICYmIGxvbmdoYW5kc1tpXSAm
JiBtX2NvbnRleHQudXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvcigpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnR5LCBzaG9y
dGhhbmQuaWQoKSwgKmxvbmdoYW5kc1tpXSwgaW1wb3J0YW50LCBpbXBsaWNpdCk7CisgICAgfQor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lR3Jp
ZEl0ZW1Qb3NpdGlvblNob3J0aGFuZChDU1NQcm9wZXJ0eUlEIHNob3J0aGFuZElkLCBib29sIGlt
cG9ydGFudCkKK3sKKyAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzR3JpZExh
eW91dEVuYWJsZWQoKSk7CisgICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRo
YW5kID0gc2hvcnRoYW5kRm9yUHJvcGVydHkoc2hvcnRoYW5kSWQpOworICAgIEFTU0VSVChzaG9y
dGhhbmQubGVuZ3RoKCkgPT0gMik7CisgICAgQ1NTVmFsdWUqIHN0YXJ0VmFsdWUgPSBjb25zdW1l
R3JpZExpbmUobV9yYW5nZSk7CisgICAgaWYgKCFzdGFydFZhbHVlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBDU1NWYWx1ZSogZW5kVmFsdWUgPSBudWxscHRyOworICAgIGlmIChjb25z
dW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKG1fcmFuZ2UpKSB7CisgICAgICAgIGVuZFZhbHVl
ID0gY29uc3VtZUdyaWRMaW5lKG1fcmFuZ2UpOworICAgICAgICBpZiAoIWVuZFZhbHVlKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICAgIGVuZFZhbHVlID0g
c3RhcnRWYWx1ZS0+aXNDdXN0b21JZGVudFZhbHVlKCkgPyBzdGFydFZhbHVlIDogQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVBdXRvKTsKKyAgICB9CisgICAgaWYg
KCFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZGRQcm9wZXJ0
eShzaG9ydGhhbmQucHJvcGVydGllcygpWzBdLCBzaG9ydGhhbmRJZCwgKnN0YXJ0VmFsdWUsIGlt
cG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVsxXSwgc2hv
cnRoYW5kSWQsICplbmRWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUdyaWRBcmVhU2hvcnRoYW5kKGJvb2wgaW1w
b3J0YW50KQoreworICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NHcmlkTGF5
b3V0RW5hYmxlZCgpKTsKKyAgICBBU1NFUlQoZ3JpZEFyZWFTaG9ydGhhbmQoKS5sZW5ndGgoKSA9
PSA0KTsKKyAgICBDU1NWYWx1ZSogcm93U3RhcnRWYWx1ZSA9IGNvbnN1bWVHcmlkTGluZShtX3Jh
bmdlKTsKKyAgICBpZiAoIXJvd1N0YXJ0VmFsdWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBDU1NWYWx1ZSogY29sdW1uU3RhcnRWYWx1ZSA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIHJv
d0VuZFZhbHVlID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogY29sdW1uRW5kVmFsdWUgPSBudWxs
cHRyOworICAgIGlmIChjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKG1fcmFuZ2UpKSB7
CisgICAgICAgIGNvbHVtblN0YXJ0VmFsdWUgPSBjb25zdW1lR3JpZExpbmUobV9yYW5nZSk7Cisg
ICAgICAgIGlmICghY29sdW1uU3RhcnRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgaWYgKGNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UobV9yYW5nZSkpIHsK
KyAgICAgICAgICAgIHJvd0VuZFZhbHVlID0gY29uc3VtZUdyaWRMaW5lKG1fcmFuZ2UpOworICAg
ICAgICAgICAgaWYgKCFyb3dFbmRWYWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICBpZiAoY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShtX3Jhbmdl
KSkgeworICAgICAgICAgICAgICAgIGNvbHVtbkVuZFZhbHVlID0gY29uc3VtZUdyaWRMaW5lKG1f
cmFuZ2UpOworICAgICAgICAgICAgICAgIGlmICghY29sdW1uRW5kVmFsdWUpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KyAgICBpZiAoIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
ICghY29sdW1uU3RhcnRWYWx1ZSkKKyAgICAgICAgY29sdW1uU3RhcnRWYWx1ZSA9IHJvd1N0YXJ0
VmFsdWUtPmlzQ3VzdG9tSWRlbnRWYWx1ZSgpID8gcm93U3RhcnRWYWx1ZSA6IENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlQXV0byk7CisgICAgaWYgKCFyb3dFbmRW
YWx1ZSkKKyAgICAgICAgcm93RW5kVmFsdWUgPSByb3dTdGFydFZhbHVlLT5pc0N1c3RvbUlkZW50
VmFsdWUoKSA/IHJvd1N0YXJ0VmFsdWUgOiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRp
ZmllcihDU1NWYWx1ZUF1dG8pOworICAgIGlmICghY29sdW1uRW5kVmFsdWUpCisgICAgICAgIGNv
bHVtbkVuZFZhbHVlID0gY29sdW1uU3RhcnRWYWx1ZS0+aXNDdXN0b21JZGVudFZhbHVlKCkgPyBj
b2x1bW5TdGFydFZhbHVlIDogQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NT
VmFsdWVBdXRvKTsKKworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFJvd1N0YXJ0LCBD
U1NQcm9wZXJ0eUdyaWRBcmVhLCAqcm93U3RhcnRWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICBhZGRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRDb2x1bW5TdGFydCwgQ1NTUHJvcGVydHlHcmlkQXJlYSwg
KmNvbHVtblN0YXJ0VmFsdWUsIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVy
dHlHcmlkUm93RW5kLCBDU1NQcm9wZXJ0eUdyaWRBcmVhLCAqcm93RW5kVmFsdWUsIGltcG9ydGFu
dCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkQ29sdW1uRW5kLCBDU1NQcm9wZXJ0
eUdyaWRBcmVhLCAqY29sdW1uRW5kVmFsdWUsIGltcG9ydGFudCk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVHcmlkVGVtcGxhdGVSb3dzQW5k
QXJlYXNBbmRDb2x1bW5zKENTU1Byb3BlcnR5SUQgc2hvcnRoYW5kSWQsIGJvb2wgaW1wb3J0YW50
KQoreworICAgIE5hbWVkR3JpZEFyZWFNYXAgZ3JpZEFyZWFNYXA7CisgICAgc2l6ZV90IHJvd0Nv
dW50ID0gMDsKKyAgICBzaXplX3QgY29sdW1uQ291bnQgPSAwOworICAgIENTU1ZhbHVlTGlzdCog
dGVtcGxhdGVSb3dzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworCisg
ICAgLy8gUGVyc2lzdHMgYmV0d2VlbiBsb29wIGl0ZXJhdGlvbnMgc28gd2UgY2FuIHVzZSB0aGUg
c2FtZSB2YWx1ZSBmb3IKKyAgICAvLyBjb25zZWN1dGl2ZSA8bGluZS1uYW1lcz4gdmFsdWVzCisg
ICAgQ1NTR3JpZExpbmVOYW1lc1ZhbHVlKiBsaW5lTmFtZXMgPSBudWxscHRyOworCisgICAgZG8g
eworICAgICAgICAvLyBIYW5kbGUgbGVhZGluZyA8Y3VzdG9tLWlkZW50PiouCisgICAgICAgIGJv
b2wgaGFzUHJldmlvdXNMaW5lTmFtZXMgPSBsaW5lTmFtZXM7CisgICAgICAgIGxpbmVOYW1lcyA9
IGNvbnN1bWVHcmlkTGluZU5hbWVzKG1fcmFuZ2UsIGxpbmVOYW1lcyk7CisgICAgICAgIGlmIChs
aW5lTmFtZXMgJiYgIWhhc1ByZXZpb3VzTGluZU5hbWVzKQorICAgICAgICAgICAgdGVtcGxhdGVS
b3dzLT5hcHBlbmQoKmxpbmVOYW1lcyk7CisKKyAgICAgICAgLy8gSGFuZGxlIGEgdGVtcGxhdGUt
YXJlYSdzIHJvdy4KKyAgICAgICAgaWYgKG1fcmFuZ2UucGVlaygpLnR5cGUoKSAhPSBTdHJpbmdU
b2tlbiB8fCAhcGFyc2VHcmlkVGVtcGxhdGVBcmVhc1JvdyhtX3JhbmdlLmNvbnN1bWVJbmNsdWRp
bmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b1N0cmluZygpLCBncmlkQXJlYU1hcCwgcm93Q291bnQs
IGNvbHVtbkNvdW50KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgKytyb3dD
b3VudDsKKworICAgICAgICAvLyBIYW5kbGUgdGVtcGxhdGUtcm93cydzIHRyYWNrLXNpemUuCisg
ICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IGNvbnN1bWVHcmlkVHJhY2tTaXplKG1fcmFuZ2UsIG1f
Y29udGV4dC5tb2RlKCkpOworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgdmFsdWUg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUF1dG8pOworICAg
ICAgICB0ZW1wbGF0ZVJvd3MtPmFwcGVuZCgqdmFsdWUpOworCisgICAgICAgIC8vIFRoaXMgd2ls
bCBoYW5kbGUgdGhlIHRyYWlsaW5nL2xlYWRpbmcgPGN1c3RvbS1pZGVudD4qIGluIHRoZSBncmFt
bWFyLgorICAgICAgICBsaW5lTmFtZXMgPSBjb25zdW1lR3JpZExpbmVOYW1lcyhtX3JhbmdlKTsK
KyAgICAgICAgaWYgKGxpbmVOYW1lcykKKyAgICAgICAgICAgIHRlbXBsYXRlUm93cy0+YXBwZW5k
KCpsaW5lTmFtZXMpOworICAgIH0gd2hpbGUgKCFtX3JhbmdlLmF0RW5kKCkgJiYgIShtX3Jhbmdl
LnBlZWsoKS50eXBlKCkgPT0gRGVsaW1pdGVyVG9rZW4gJiYgbV9yYW5nZS5wZWVrKCkuZGVsaW1p
dGVyKCkgPT0gJy8nKSk7CisKKyAgICBDU1NWYWx1ZSogY29sdW1uc1ZhbHVlID0gbnVsbHB0cjsK
KyAgICBpZiAoIW1fcmFuZ2UuYXRFbmQoKSkgeworICAgICAgICBpZiAoIWNvbnN1bWVTbGFzaElu
Y2x1ZGluZ1doaXRlc3BhY2UobV9yYW5nZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGNvbHVtbnNWYWx1ZSA9IGNvbnN1bWVHcmlkVHJhY2tMaXN0KG1fcmFuZ2UsIG1fY29u
dGV4dC5tb2RlKCksIEdyaWRUZW1wbGF0ZU5vUmVwZWF0KTsKKyAgICAgICAgaWYgKCFjb2x1bW5z
VmFsdWUgfHwgIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBjb2x1bW5zVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpOworICAgIH0KKyAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUdyaWRUZW1wbGF0ZVJvd3MsIHNob3J0aGFuZElkLCAqdGVtcGxhdGVSb3dzLCBpbXBv
cnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQ29sdW1ucywg
c2hvcnRoYW5kSWQsICpjb2x1bW5zVmFsdWUsIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHko
Q1NTUHJvcGVydHlHcmlkVGVtcGxhdGVBcmVhcywgc2hvcnRoYW5kSWQsICpDU1NHcmlkVGVtcGxh
dGVBcmVhc1ZhbHVlOjpjcmVhdGUoZ3JpZEFyZWFNYXAsIHJvd0NvdW50LCBjb2x1bW5Db3VudCks
IGltcG9ydGFudCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJz
ZXI6OmNvbnN1bWVHcmlkVGVtcGxhdGVTaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCBzaG9ydGhhbmRJ
ZCwgYm9vbCBpbXBvcnRhbnQpCit7CisgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkpOworICAgIEFTU0VSVChncmlkVGVtcGxhdGVTaG9ydGhh
bmQoKS5sZW5ndGgoKSA9PSAzKTsKKworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2VDb3B5
ID0gbV9yYW5nZTsKKyAgICBDU1NWYWx1ZSogcm93c1ZhbHVlID0gY29uc3VtZUlkZW50PENTU1Zh
bHVlTm9uZT4obV9yYW5nZSk7CisKKyAgICAvLyAxLSAnbm9uZScgY2FzZS4KKyAgICBpZiAocm93
c1ZhbHVlICYmIG1fcmFuZ2UuYXRFbmQoKSkgeworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUdyaWRUZW1wbGF0ZVJvd3MsIHNob3J0aGFuZElkLCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJv
cGVydHkoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVDb2x1bW5zLCBzaG9ydGhhbmRJZCwgKkNTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSksIGltcG9ydGFudCk7
CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQXJlYXMsIHNob3J0
aGFuZElkLCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25l
KSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gMi0g
PGdyaWQtdGVtcGxhdGUtcm93cz4gLyA8Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zPgorICAgIGlmICgh
cm93c1ZhbHVlKQorICAgICAgICByb3dzVmFsdWUgPSBjb25zdW1lR3JpZFRyYWNrTGlzdChtX3Jh
bmdlLCBtX2NvbnRleHQubW9kZSgpLCBHcmlkVGVtcGxhdGUpOworCisgICAgaWYgKHJvd3NWYWx1
ZSkgeworICAgICAgICBpZiAoIWNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UobV9yYW5n
ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIENTU1ZhbHVlKiBjb2x1bW5z
VmFsdWUgPSBjb25zdW1lR3JpZFRlbXBsYXRlc1Jvd3NPckNvbHVtbnMobV9yYW5nZSwgbV9jb250
ZXh0Lm1vZGUoKSk7CisgICAgICAgIGlmICghY29sdW1uc1ZhbHVlIHx8ICFtX3JhbmdlLmF0RW5k
KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NT
UHJvcGVydHlHcmlkVGVtcGxhdGVSb3dzLCBzaG9ydGhhbmRJZCwgKnJvd3NWYWx1ZSwgaW1wb3J0
YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVDb2x1bW5z
LCBzaG9ydGhhbmRJZCwgKmNvbHVtbnNWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJv
cGVydHkoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVBcmVhcywgc2hvcnRoYW5kSWQsICpDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpLCBpbXBvcnRhbnQpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyAzLSBbIDxsaW5lLW5hbWVzPj8g
PHN0cmluZz4gPHRyYWNrLXNpemU+PyA8bGluZS1uYW1lcz4/IF0rIFsgLyA8dHJhY2stbGlzdD4g
XT8KKyAgICBtX3JhbmdlID0gcmFuZ2VDb3B5OworICAgIHJldHVybiBjb25zdW1lR3JpZFRlbXBs
YXRlUm93c0FuZEFyZWFzQW5kQ29sdW1ucyhzaG9ydGhhbmRJZCwgaW1wb3J0YW50KTsKK30KKwor
Ym9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUdyaWRTaG9ydGhhbmQoYm9vbCBpbXBvcnRh
bnQpCit7CisgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRF
bmFibGVkKCkpOworICAgIEFTU0VSVChzaG9ydGhhbmRGb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUdy
aWQpLmxlbmd0aCgpID09IDgpOworCisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZUNvcHkg
PSBtX3JhbmdlOworCisgICAgLy8gMS0gPGdyaWQtdGVtcGxhdGU+CisgICAgaWYgKGNvbnN1bWVH
cmlkVGVtcGxhdGVTaG9ydGhhbmQoQ1NTUHJvcGVydHlHcmlkLCBpbXBvcnRhbnQpKSB7CisgICAg
ICAgIC8vIEl0IGNhbiBvbmx5IGJlIHNwZWNpZmllZCB0aGUgZXhwbGljaXQgb3IgdGhlIGltcGxp
Y2l0IGdyaWQgcHJvcGVydGllcyBpbiBhIHNpbmdsZSBncmlkIGRlY2xhcmF0aW9uLgorICAgICAg
ICAvLyBUaGUgc3ViLXByb3BlcnRpZXMgbm90IHNwZWNpZmllZCBhcmUgc2V0IHRvIHRoZWlyIGlu
aXRpYWwgdmFsdWUsIGFzIG5vcm1hbCBmb3Igc2hvcnRoYW5kcy4KKyAgICAgICAgYWRkUHJvcGVy
dHkoQ1NTUHJvcGVydHlHcmlkQXV0b0Zsb3csIENTU1Byb3BlcnR5R3JpZCwgKkNTU0luaXRpYWxW
YWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJv
cGVydHkoQ1NTUHJvcGVydHlHcmlkQXV0b0NvbHVtbnMsIENTU1Byb3BlcnR5R3JpZCwgKkNTU0lu
aXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAg
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkQXV0b1Jvd3MsIENTU1Byb3BlcnR5R3JpZCwgKkNT
U0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICAg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkQ29sdW1uR2FwLCBDU1NQcm9wZXJ0eUdyaWQs
ICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7Cisg
ICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFJvd0dhcCwgQ1NTUHJvcGVydHlHcmlk
LCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBtX3JhbmdlID0gcmFuZ2VDb3B5Owor
CisgICAgLy8gMi0gPGdyaWQtYXV0by1mbG93PiBbIDxncmlkLWF1dG8tcm93cz4gWyAvIDxncmlk
LWF1dG8tY29sdW1ucz4gXT8gXQorICAgIENTU1ZhbHVlTGlzdCogZ3JpZEF1dG9GbG93ID0gY29u
c3VtZUdyaWRBdXRvRmxvdyhtX3JhbmdlKTsKKyAgICBpZiAoIWdyaWRBdXRvRmxvdykKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1NTVmFsdWUqIGF1dG9Db2x1bW5zVmFsdWUgPSBudWxs
cHRyOworICAgIENTU1ZhbHVlKiBhdXRvUm93c1ZhbHVlID0gbnVsbHB0cjsKKworICAgIGlmICgh
bV9yYW5nZS5hdEVuZCgpKSB7CisgICAgICAgIGF1dG9Sb3dzVmFsdWUgPSBjb25zdW1lR3JpZFRy
YWNrTGlzdChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBHcmlkQXV0byk7CisgICAgICAgIGlm
ICghYXV0b1Jvd3NWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYg
KGNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UobV9yYW5nZSkpIHsKKyAgICAgICAgICAg
IGF1dG9Db2x1bW5zVmFsdWUgPSBjb25zdW1lR3JpZFRyYWNrTGlzdChtX3JhbmdlLCBtX2NvbnRl
eHQubW9kZSgpLCBHcmlkQXV0byk7CisgICAgICAgICAgICBpZiAoIWF1dG9Db2x1bW5zVmFsdWUp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmICgh
bV9yYW5nZS5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gZWxzZSB7
CisgICAgICAgIC8vIE90aGVyIG9taXR0ZWQgdmFsdWVzIGFyZSBzZXQgdG8gdGhlaXIgaW5pdGlh
bCB2YWx1ZXMuCisgICAgICAgIGF1dG9Db2x1bW5zVmFsdWUgPSBDU1NJbml0aWFsVmFsdWU6OmNy
ZWF0ZUxlZ2FjeUltcGxpY2l0KCk7CisgICAgICAgIGF1dG9Sb3dzVmFsdWUgPSBDU1NJbml0aWFs
VmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCk7CisgICAgfQorCisgICAgLy8gaWYgPGdyaWQt
YXV0by1jb2x1bW5zPiB2YWx1ZSBpcyBvbWl0dGVkLCBpdCBpcyBzZXQgdG8gdGhlIHZhbHVlIHNw
ZWNpZmllZCBmb3IgZ3JpZC1hdXRvLXJvd3MuCisgICAgaWYgKCFhdXRvQ29sdW1uc1ZhbHVlKQor
ICAgICAgICBhdXRvQ29sdW1uc1ZhbHVlID0gYXV0b1Jvd3NWYWx1ZTsKKworICAgIC8vIEl0IGNh
biBvbmx5IGJlIHNwZWNpZmllZCB0aGUgZXhwbGljaXQgb3IgdGhlIGltcGxpY2l0IGdyaWQgcHJv
cGVydGllcyBpbiBhIHNpbmdsZSBncmlkIGRlY2xhcmF0aW9uLgorICAgIC8vIFRoZSBzdWItcHJv
cGVydGllcyBub3Qgc3BlY2lmaWVkIGFyZSBzZXQgdG8gdGhlaXIgaW5pdGlhbCB2YWx1ZSwgYXMg
bm9ybWFsIGZvciBzaG9ydGhhbmRzLgorICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFRl
bXBsYXRlQ29sdW1ucywgQ1NTUHJvcGVydHlHcmlkLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVM
ZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5
R3JpZFRlbXBsYXRlUm93cywgQ1NTUHJvcGVydHlHcmlkLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVh
dGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3Bl
cnR5R3JpZFRlbXBsYXRlQXJlYXMsIENTU1Byb3BlcnR5R3JpZCwgKkNTU0luaXRpYWxWYWx1ZTo6
Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUdyaWRBdXRvRmxvdywgQ1NTUHJvcGVydHlHcmlkLCAqZ3JpZEF1dG9GbG93LCBpbXBv
cnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZEF1dG9Db2x1bW5zLCBDU1NQ
cm9wZXJ0eUdyaWQsICphdXRvQ29sdW1uc1ZhbHVlLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3Bl
cnR5KENTU1Byb3BlcnR5R3JpZEF1dG9Sb3dzLCBDU1NQcm9wZXJ0eUdyaWQsICphdXRvUm93c1Zh
bHVlLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZENvbHVtbkdh
cCwgQ1NTUHJvcGVydHlHcmlkLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNp
dCgpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFJvd0dhcCwg
Q1NTUHJvcGVydHlHcmlkLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgp
LCBpbXBvcnRhbnQpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIENTU1Byb3BlcnR5UGFy
c2VyOjpwYXJzZVNob3J0aGFuZChDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0eSwgYm9v
bCBpbXBvcnRhbnQpCit7CisgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSA9IHJlc29sdmVDU1NQ
cm9wZXJ0eUlEKHVucmVzb2x2ZWRQcm9wZXJ0eSk7CisKKyAgICBzd2l0Y2ggKHByb3BlcnR5KSB7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlOiB7CisgICAgICAgIENT
U1ZhbHVlSUQgaWQgPSBtX3JhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsK
KyAgICAgICAgaWYgKCFDU1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFsaWRLZXl3b3JkUHJvcGVydHlB
bmRWYWx1ZShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlLCBpZCwgbV9jb250
ZXh0Lm1vZGUoKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIENTU1ZhbHVl
KiBiZWZvcmVDb2xsYXBzZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKGlk
KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xs
YXBzZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSwgKmJlZm9yZUNvbGxhcHNlLCBp
bXBvcnRhbnQpOworICAgICAgICBpZiAobV9yYW5nZS5hdEVuZCgpKSB7CisgICAgICAgICAgICBh
ZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UsIENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQ29sbGFwc2UsICpiZWZvcmVDb2xsYXBzZSwgaW1wb3J0YW50KTsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlkID0gbV9yYW5nZS5j
b25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgICAgIGlmICghQ1NTUGFyc2Vy
RmFzdFBhdGhzOjppc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUoQ1NTUHJvcGVydHlXZWJr
aXRNYXJnaW5BZnRlckNvbGxhcHNlLCBpZCwgbV9jb250ZXh0Lm1vZGUoKSkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luQWZ0ZXJDb2xsYXBzZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSwgKkNTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKGlkKSwgaW1wb3J0YW50KTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvdzogeworICAg
ICAgICBDU1NWYWx1ZUlEIGlkID0gbV9yYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgp
LmlkKCk7CisgICAgICAgIGlmICghQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5d29yZFBy
b3BlcnR5QW5kVmFsdWUoQ1NTUHJvcGVydHlPdmVyZmxvd1ksIGlkLCBtX2NvbnRleHQubW9kZSgp
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFtX3JhbmdlLmF0RW5k
KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIENTU1ZhbHVlKiBvdmVyZmxv
d1lWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKGlkKTsKKworICAg
ICAgICBDU1NWYWx1ZSogb3ZlcmZsb3dYVmFsdWUgPSBudWxscHRyOworCisgICAgICAgIC8vIEZJ
WE1FOiAtd2Via2l0LXBhZ2VkLXggb3IgLXdlYmtpdC1wYWdlZC15IG9ubHkgYXBwbHkgdG8gb3Zl
cmZsb3cteS4gSWYgdGhpcyB2YWx1ZSBoYXMgYmVlbgorICAgICAgICAvLyBzZXQgdXNpbmcgdGhl
IHNob3J0aGFuZCwgdGhlbiBmb3Igbm93IG92ZXJmbG93LXggd2lsbCBkZWZhdWx0IHRvIGF1dG8s
IGJ1dCBvbmNlIHdlIGltcGxlbWVudAorICAgICAgICAvLyBwYWdpbmF0aW9uIGNvbnRyb2xzLCBp
dCBzaG91bGQgZGVmYXVsdCB0byBoaWRkZW4uIElmIHRoZSBvdmVyZmxvdy15IHZhbHVlIGlzIGFu
eXRoaW5nIGJ1dAorICAgICAgICAvLyBwYWdlZC14IG9yIHBhZ2VkLXksIHRoZW4gb3ZlcmZsb3ct
eCBhbmQgb3ZlcmZsb3cteSBzaG91bGQgaGF2ZSB0aGUgc2FtZSB2YWx1ZS4KKyAgICAgICAgaWYg
KGlkID09IENTU1ZhbHVlV2Via2l0UGFnZWRYIHx8IGlkID09IENTU1ZhbHVlV2Via2l0UGFnZWRZ
KQorICAgICAgICAgICAgb3ZlcmZsb3dYVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
SWRlbnRpZmllcihDU1NWYWx1ZUF1dG8pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvdmVy
Zmxvd1hWYWx1ZSA9IG92ZXJmbG93WVZhbHVlOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eU92ZXJmbG93WCwgQ1NTUHJvcGVydHlPdmVyZmxvdywgKm92ZXJmbG93WFZhbHVlLCBpbXBv
cnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU92ZXJmbG93WSwgQ1NTUHJv
cGVydHlPdmVyZmxvdywgKm92ZXJmbG93WVZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnQ6IHsKKyAgICAgICAgY29u
c3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gbV9yYW5nZS5wZWVrKCk7CisgICAgICAgIGlmICh0
b2tlbi5pZCgpID49IENTU1ZhbHVlQ2FwdGlvbiAmJiB0b2tlbi5pZCgpIDw9IENTU1ZhbHVlU3Rh
dHVzQmFyKQorICAgICAgICAgICAgcmV0dXJuIGNvbnN1bWVTeXN0ZW1Gb250KGltcG9ydGFudCk7
CisgICAgICAgIHJldHVybiBjb25zdW1lRm9udChpbXBvcnRhbnQpOworICAgIH0KKyAgICBjYXNl
IENTU1Byb3BlcnR5Rm9udFZhcmlhbnQ6CisgICAgICAgIHJldHVybiBjb25zdW1lRm9udFZhcmlh
bnRTaG9ydGhhbmQoaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2lu
ZzoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCb3JkZXJTcGFjaW5nKGltcG9ydGFudCk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUNvbHVtbnM6CisgICAgICAgIHJldHVybiBjb25zdW1lQ29sdW1ucyhp
bXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb246CisgICAgICAgIHJldHVy
biBjb25zdW1lQW5pbWF0aW9uU2hvcnRoYW5kKGFuaW1hdGlvblNob3J0aGFuZEZvclBhcnNpbmco
KSwgdW5yZXNvbHZlZFByb3BlcnR5ID09IENTU1Byb3BlcnR5QWxpYXNXZWJraXRBbmltYXRpb24s
IGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb246CisgICAgICAgIHJl
dHVybiBjb25zdW1lQW5pbWF0aW9uU2hvcnRoYW5kKHRyYW5zaXRpb25TaG9ydGhhbmRGb3JQYXJz
aW5nKCksIGZhbHNlLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3Jh
dGlvbjoKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzczNUZXh0RGVj
b3JhdGlvbnNFbmFibGVkKCkpOworICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdyZWVk
aWx5KHRleHREZWNvcmF0aW9uU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eU1hcmdpbjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWU0VmFsdWVzKG1hcmdpblNob3J0
aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nOgorICAgICAg
ICByZXR1cm4gY29uc3VtZTRWYWx1ZXMocGFkZGluZ1Nob3J0aGFuZCgpLCBpbXBvcnRhbnQpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlNb3Rpb246CisgICAgICAgIHJldHVybiBjb25zdW1lU2hvcnRo
YW5kR3JlZWRpbHkobW90aW9uU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpczoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhh
bmRHcmVlZGlseSh3ZWJraXRUZXh0RW1waGFzaXNTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhh
bmRHcmVlZGlseShvdXRsaW5lU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0OgorICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFu
ZEdyZWVkaWx5KHdlYmtpdEJvcmRlclN0YXJ0U2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVT
aG9ydGhhbmRHcmVlZGlseSh3ZWJraXRCb3JkZXJFbmRTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlOgorICAgICAgICByZXR1cm4g
Y29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KHdlYmtpdEJvcmRlckJlZm9yZVNob3J0aGFuZCgpLCBp
bXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcjoKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhhbmRHcmVlZGlseSh3ZWJraXRCb3JkZXJBZnRlclNob3J0
aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tl
OgorICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KHdlYmtpdFRleHRTdHJv
a2VTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFya2VyOiB7
CisgICAgICAgIGNvbnN0IENTU1ZhbHVlKiBtYXJrZXIgPSBwYXJzZVNpbmdsZVZhbHVlKENTU1By
b3BlcnR5TWFya2VyU3RhcnQpOworICAgICAgICBpZiAoIW1hcmtlciB8fCAhbV9yYW5nZS5hdEVu
ZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eU1hcmtlclN0YXJ0LCBDU1NQcm9wZXJ0eU1hcmtlciwgKm1hcmtlciwgaW1wb3J0YW50
KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJrZXJNaWQsIENTU1Byb3BlcnR5
TWFya2VyLCAqbWFya2VyLCBpbXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eU1hcmtlckVuZCwgQ1NTUHJvcGVydHlNYXJrZXIsICptYXJrZXIsIGltcG9ydGFudCk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5RmxleDoKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVGbGV4KGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUZsZXhGbG93OgorICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KGZsZXhG
bG93U2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVtblJ1
bGU6CisgICAgICAgIHJldHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkoY29sdW1uUnVsZVNo
b3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGU6Cisg
ICAgICAgIHJldHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkobGlzdFN0eWxlU2hvcnRoYW5k
KCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1czogeworICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSogaG9yaXpvbnRhbFJhZGlpWzRdID0geyAwIH07CisgICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2ZXJ0aWNhbFJhZGlpWzRdID0geyAwIH07CisgICAgICAg
IGlmICghY29uc3VtZVJhZGlpKGhvcml6b250YWxSYWRpaSwgdmVydGljYWxSYWRpaSwgbV9yYW5n
ZSwgbV9jb250ZXh0Lm1vZGUoKSwgdW5yZXNvbHZlZFByb3BlcnR5ID09IENTU1Byb3BlcnR5QWxp
YXNXZWJraXRCb3JkZXJSYWRpdXMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXMsIENTU1Byb3BlcnR5
Qm9yZGVyUmFkaXVzLCAqQ1NTVmFsdWVQYWlyOjpjcmVhdGUoaG9yaXpvbnRhbFJhZGlpWzBdLCB2
ZXJ0aWNhbFJhZGlpWzBdLCBDU1NWYWx1ZVBhaXI6OkRyb3BJZGVudGljYWxWYWx1ZXMpLCBpbXBv
cnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFk
aXVzLCBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cywgKkNTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhvcml6
b250YWxSYWRpaVsxXSwgdmVydGljYWxSYWRpaVsxXSwgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRp
Y2FsVmFsdWVzKSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21SaWdodFJhZGl1cywgQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMsICpDU1NWYWx1
ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsUmFkaWlbMl0sIHZlcnRpY2FsUmFkaWlbMl0sIENTU1Zh
bHVlUGFpcjo6RHJvcElkZW50aWNhbFZhbHVlcyksIGltcG9ydGFudCk7CisgICAgICAgIGFkZFBy
b3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywgQ1NTUHJvcGVydHlCb3Jk
ZXJSYWRpdXMsICpDU1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsUmFkaWlbM10sIHZlcnRp
Y2FsUmFkaWlbM10sIENTU1ZhbHVlUGFpcjo6RHJvcElkZW50aWNhbFZhbHVlcyksIGltcG9ydGFu
dCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9y
ZGVyQ29sb3I6CisgICAgICAgIHJldHVybiBjb25zdW1lNFZhbHVlcyhib3JkZXJDb2xvclNob3J0
aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZToKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWU0VmFsdWVzKGJvcmRlclN0eWxlU2hvcnRoYW5kKCksIGltcG9y
dGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoOgorICAgICAgICByZXR1cm4g
Y29uc3VtZTRWYWx1ZXMoYm9yZGVyV2lkdGhTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wOgorICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFu
ZEdyZWVkaWx5KGJvcmRlclRvcFNob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJSaWdodDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhhbmRHcmVl
ZGlseShib3JkZXJSaWdodFNob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b206CisgICAgICAgIHJldHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRp
bHkoYm9yZGVyQm90dG9tU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlckxlZnQ6CisgICAgICAgIHJldHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHko
Ym9yZGVyTGVmdFNob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXI6CisgICAgICAgIHJldHVybiBjb25zdW1lQm9yZGVyKGltcG9ydGFudCk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNr
Qm94SW1hZ2U6CisgICAgICAgIHJldHVybiBjb25zdW1lQm9yZGVySW1hZ2UocHJvcGVydHksIGlt
cG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlQYWdlQnJlYWtCZWZvcmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVh
a0luc2lkZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtBZnRlcjoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtCZWZvcmU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrSW5zaWRlOgorICAgICAgICByZXR1cm4gY29uc3VtZUxl
Z2FjeUJyZWFrUHJvcGVydHkocHJvcGVydHksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBv
c2l0aW9uOiB7CisgICAgICAgIENTU1ZhbHVlKiByZXN1bHRYID0gbnVsbHB0cjsKKyAgICAgICAg
Q1NTVmFsdWUqIHJlc3VsdFkgPSBudWxscHRyOworICAgICAgICBpZiAoIWNvbnN1bWVCYWNrZ3Jv
dW5kUG9zaXRpb24obV9yYW5nZSwgbV9jb250ZXh0LCBVbml0bGVzc1F1aXJrOjpBbGxvdywgcmVz
dWx0WCwgcmVzdWx0WSkgfHwgIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUG9zaXRpb24gPyBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblggOiBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tQb3NpdGlvblgsIHByb3BlcnR5LCAqcmVzdWx0WCwgaW1wb3J0YW50KTsKKyAg
ICAgICAgYWRkUHJvcGVydHkocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRp
b24gPyBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblkgOiBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tQb3NpdGlvblksIHByb3BlcnR5LCAqcmVzdWx0WSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0Ogor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0OiB7CisgICAgICAgIENTU1ZhbHVl
KiByZXN1bHRYID0gbnVsbHB0cjsKKyAgICAgICAgQ1NTVmFsdWUqIHJlc3VsdFkgPSBudWxscHRy
OworICAgICAgICBib29sIGltcGxpY2l0ID0gZmFsc2U7CisgICAgICAgIGlmICghY29uc3VtZVJl
cGVhdFN0eWxlKG1fcmFuZ2UsIHJlc3VsdFgsIHJlc3VsdFksIGltcGxpY2l0KSB8fCAhbV9yYW5n
ZS5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhZGRQcm9wZXJ0
eShwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQgPyBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRSZXBlYXRYIDogQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WCwgcHJvcGVydHks
ICpyZXN1bHRYLCBpbXBvcnRhbnQsIGltcGxpY2l0KTsKKyAgICAgICAgYWRkUHJvcGVydHkocHJv
cGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0ID8gQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUmVwZWF0WSA6IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFksIHByb3BlcnR5LCAqcmVz
dWx0WSwgaW1wb3J0YW50LCBpbXBsaWNpdCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVC
YWNrZ3JvdW5kU2hvcnRoYW5kKGJhY2tncm91bmRTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFzazoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCYWNr
Z3JvdW5kU2hvcnRoYW5kKHdlYmtpdE1hc2tTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5R3JpZEdhcDogeworICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6Y3NzR3JpZExheW91dEVuYWJsZWQoKSAmJiBzaG9ydGhhbmRGb3JQcm9wZXJ0eShD
U1NQcm9wZXJ0eUdyaWRHYXApLmxlbmd0aCgpID09IDIpOworICAgICAgICBDU1NWYWx1ZSogcm93
R2FwID0gY29uc3VtZUxlbmd0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdl
Tm9uTmVnYXRpdmUpOworICAgICAgICBDU1NWYWx1ZSogY29sdW1uR2FwID0gY29uc3VtZUxlbmd0
aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAg
ICAgICBpZiAoIXJvd0dhcCB8fCAhbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBpZiAoIWNvbHVtbkdhcCkKKyAgICAgICAgICAgIGNvbHVtbkdhcCA9
IHJvd0dhcDsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkUm93R2FwLCBDU1NQ
cm9wZXJ0eUdyaWRHYXAsICpyb3dHYXAsIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5
KENTU1Byb3BlcnR5R3JpZENvbHVtbkdhcCwgQ1NTUHJvcGVydHlHcmlkR2FwLCAqY29sdW1uR2Fw
LCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUdyaWRDb2x1bW46CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRSb3c6CisgICAgICAg
IHJldHVybiBjb25zdW1lR3JpZEl0ZW1Qb3NpdGlvblNob3J0aGFuZChwcm9wZXJ0eSwgaW1wb3J0
YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZEFyZWE6CisgICAgICAgIHJldHVybiBjb25z
dW1lR3JpZEFyZWFTaG9ydGhhbmQoaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5R3Jp
ZFRlbXBsYXRlOgorICAgICAgICByZXR1cm4gY29uc3VtZUdyaWRUZW1wbGF0ZVNob3J0aGFuZChD
U1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
R3JpZDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVHcmlkU2hvcnRoYW5kKGltcG9ydGFudCk7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKyovCisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJv
cGVydHlQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1Byb3BlcnR5UGFyc2VyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2Vp
ZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgLSAyMDEwICBUb3Jj
aCBNb2JpbGUgKEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYg
Q1NTUHJvcGVydHlQYXJzZXJfaAorI2RlZmluZSBDU1NQcm9wZXJ0eVBhcnNlcl9oCisKKyNpbmNs
dWRlICJDU1NQYXJzZXJUb2tlblJhbmdlLmgiCisjaW5jbHVkZSAiU3R5bGVSdWxlLmgiCisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIENTU1Byb3BlcnR5OworY2xhc3MgQ1NTVmFsdWU7CitjbGFzcyBTdHlsZVByb3BlcnR5U2hv
cnRoYW5kOworCisvLyBJbnB1dHM6IFByb3BlcnR5SUQsIGlzSW1wb3J0YW50IGJvb2wsIENTU1Bh
cnNlclRva2VuUmFuZ2UuCisvLyBPdXRwdXRzOiBWZWN0b3Igb2YgQ1NTUHJvcGVydGllcworCitj
bGFzcyBDU1NQcm9wZXJ0eVBhcnNlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ1NTUHJv
cGVydHlQYXJzZXIpOworcHVibGljOgorICAgIHN0YXRpYyBib29sIHBhcnNlVmFsdWUoQ1NTUHJv
cGVydHlJRCwgYm9vbCBpbXBvcnRhbnQsCisgICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuUmFu
Z2UmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiwKKyAgICAgICAgVmVjdG9yPENTU1Byb3BlcnR5
LCAyNTY+JiwgU3R5bGVSdWxlOjpUeXBlKTsKKworICAgIC8vIFBhcnNlcyBhIG5vbi1zaG9ydGhh
bmQgQ1NTIHByb3BlcnR5CisgICAgc3RhdGljIGNvbnN0IENTU1ZhbHVlKiBwYXJzZVNpbmdsZVZh
bHVlKENTU1Byb3BlcnR5SUQsIGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmLCBjb25zdCBDU1NQ
YXJzZXJDb250ZXh0Jik7CisKK3ByaXZhdGU6CisgICAgQ1NTUHJvcGVydHlQYXJzZXIoY29uc3Qg
Q1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmLAorICAgICAgICBW
ZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4qKTsKKworICAgIC8vIFRPRE8odGltbG9oKTogUmVuYW1l
IG9uY2UgdGhlIENTU1BhcnNlclZhbHVlLWJhc2VkIHBhcnNlVmFsdWUgaXMgcmVtb3ZlZAorICAg
IGJvb2wgcGFyc2VWYWx1ZVN0YXJ0KENTU1Byb3BlcnR5SUQgdW5yZXNvbHZlZFByb3BlcnR5LCBi
b29sIGltcG9ydGFudCk7CisgICAgYm9vbCBjb25zdW1lQ1NTV2lkZUtleXdvcmQoQ1NTUHJvcGVy
dHlJRCB1bnJlc29sdmVkUHJvcGVydHksIGJvb2wgaW1wb3J0YW50KTsKKyAgICBjb25zdCBDU1NW
YWx1ZSogcGFyc2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUlELCBDU1NQcm9wZXJ0eUlEID0gQ1NT
UHJvcGVydHlJbnZhbGlkKTsKKworICAgIGJvb2wgaW5RdWlya3NNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZXh0Lm1vZGUgPT0gQ1NTUXVpcmtzTW9kZTsgfQorCisgICAgYm9vbCBwYXJzZVZp
ZXdwb3J0RGVzY3JpcHRvcihDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwor
ICAgIGJvb2wgcGFyc2VGb250RmFjZURlc2NyaXB0b3IoQ1NTUHJvcGVydHlJRCk7CisKKyAgICB2
b2lkIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5SUQsIENTU1Byb3BlcnR5SUQsIGNvbnN0IENTU1Zh
bHVlJiwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgaW1wbGljaXQgPSBmYWxzZSk7CisgICAgdm9pZCBh
ZGRFeHBhbmRlZFByb3BlcnR5Rm9yVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGNvbnN0IENT
U1ZhbHVlJiwgYm9vbCk7CisKKyAgICBib29sIGNvbnN1bWVCb3JkZXIoYm9vbCBpbXBvcnRhbnQp
OworCisgICAgYm9vbCBwYXJzZVNob3J0aGFuZChDU1NQcm9wZXJ0eUlELCBib29sIGltcG9ydGFu
dCk7CisgICAgYm9vbCBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkoY29uc3QgU3R5bGVQcm9wZXJ0
eVNob3J0aGFuZCYsIGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29sIGNvbnN1bWU0VmFsdWVzKGNv
bnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmLCBib29sIGltcG9ydGFudCk7CisKKyAgICAvLyBM
ZWdhY3kgcGFyc2luZyBhbGxvd3MgPHN0cmluZz5zIGZvciBhbmltYXRpb24tbmFtZQorICAgIGJv
b2wgY29uc3VtZUFuaW1hdGlvblNob3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5k
JiwgYm9vbCB1c2VMZWdhY3lQYXJzaW5nLCBib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBjb25z
dW1lQmFja2dyb3VuZFNob3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiwgYm9v
bCBpbXBvcnRhbnQpOworCisgICAgYm9vbCBjb25zdW1lQ29sdW1ucyhib29sIGltcG9ydGFudCk7
CisKKyAgICBib29sIGNvbnN1bWVHcmlkSXRlbVBvc2l0aW9uU2hvcnRoYW5kKENTU1Byb3BlcnR5
SUQsIGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29sIGNvbnN1bWVHcmlkVGVtcGxhdGVSb3dzQW5k
QXJlYXNBbmRDb2x1bW5zKENTU1Byb3BlcnR5SUQsIGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29s
IGNvbnN1bWVHcmlkVGVtcGxhdGVTaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRh
bnQpOworICAgIGJvb2wgY29uc3VtZUdyaWRTaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpOworICAg
IGJvb2wgY29uc3VtZUdyaWRBcmVhU2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KTsKKworICAgIGJv
b2wgY29uc3VtZUZvbnQoYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wgY29uc3VtZUZvbnRWYXJp
YW50U2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29sIGNvbnN1bWVTeXN0ZW1Gb250
KGJvb2wgaW1wb3J0YW50KTsKKworICAgIGJvb2wgY29uc3VtZUJvcmRlclNwYWNpbmcoYm9vbCBp
bXBvcnRhbnQpOworCisgICAgLy8gQ1NTMyBQYXJzaW5nIFJvdXRpbmVzIChmb3IgcHJvcGVydGll
cyBzcGVjaWZpYyB0byBDU1MzKQorICAgIGJvb2wgY29uc3VtZUJvcmRlckltYWdlKENTU1Byb3Bl
cnR5SUQsIGJvb2wgaW1wb3J0YW50KTsKKworICAgIGJvb2wgY29uc3VtZUZsZXgoYm9vbCBpbXBv
cnRhbnQpOworCisgICAgYm9vbCBjb25zdW1lTGVnYWN5QnJlYWtQcm9wZXJ0eShDU1NQcm9wZXJ0
eUlELCBib29sIGltcG9ydGFudCk7CisKK3ByaXZhdGU6CisgICAgLy8gSW5wdXRzOgorICAgIENT
U1BhcnNlclRva2VuUmFuZ2UgbV9yYW5nZTsKKyAgICBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBt
X2NvbnRleHQ7CisgICAgLy8gT3V0cHV0czoKKyAgICBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4q
IG1fcGFyc2VkUHJvcGVydGllczsKK307CisKK0NTU1Byb3BlcnR5SUQgdW5yZXNvbHZlZENTU1By
b3BlcnR5SUQoU3RyaW5nVmlldyk7CitDU1NWYWx1ZUlEIGNzc1ZhbHVlS2V5d29yZElEKFN0cmlu
Z1ZpZXcpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NQcm9wZXJ0
eVBhcnNlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VySGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDExMTAgQEAKKy8vIENvcHlyaWdodCAyMDE2IFRoZSBDaHJvbWl1bSBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisv
LyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlQ
YXJzZXJIZWxwZXJzLmgiCisKKyNpbmNsdWRlICJDU1NDYWxjdWxhdGlvblZhbHVlLmgiCisvLyBG
SVhNRS1ORVdQQVJTRVI6ICNpbmNsdWRlICJDU1NDb2xvclZhbHVlLmgiCisjaW5jbHVkZSAiQ1NT
Q3Jvc3NmYWRlVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NHcmFkaWVudFZhbHVlLmgiCisjaW5jbHVk
ZSAiQ1NTSW1hZ2VTZXRWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIKKy8vIEZJ
WE1FLU5FV1BBUlNFUjogI2luY2x1ZGUgIkNTU1BhaW50VmFsdWUuaCIKKy8vIEZJWE1FX05FV1BB
UlNFUjogI2luY2x1ZGUgIkNTU1N0cmluZ1ZhbHVlLmgiCisvLyBGSVhNRS1ORVdQQVJTRVI6ICNp
bmNsdWRlICJDU1NVUklWYWx1ZS5oIgorLy8gRklYTUVfTkVXUEFSU0VSOiAjaW5jbHVkZSAiQ1NT
VmFsdWVQYWlyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLyogRklYTUUtTkVXUEFSU0VS
OiBEaXNhYmxlIGZvciBub3cuCisgCituYW1lc3BhY2UgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
IHsKKworYm9vbCBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlKQoreworICAgIENTU1BhcnNlclRva2VuIHZhbHVlID0gcmFuZ2UucGVlaygp
OworICAgIGlmICh2YWx1ZS50eXBlKCkgIT0gQ29tbWFUb2tlbikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NQYXJzZXJUb2tlbiB2YWx1ZSA9IHJhbmdl
LnBlZWsoKTsKKyAgICBpZiAodmFsdWUudHlwZSgpICE9IERlbGltaXRlclRva2VuIHx8IHZhbHVl
LmRlbGltaXRlcigpICE9ICcvJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJhbmdlLmNv
bnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0NTU1Bh
cnNlclRva2VuUmFuZ2UgY29uc3VtZUZ1bmN0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
KQoreworICAgIEFTU0VSVChyYW5nZS5wZWVrKCkudHlwZSgpID09IEZ1bmN0aW9uVG9rZW4pOwor
ICAgIENTU1BhcnNlclRva2VuUmFuZ2UgY29udGVudHMgPSByYW5nZS5jb25zdW1lQmxvY2soKTsK
KyAgICByYW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOworICAgIGNvbnRlbnRzLmNvbnN1bWVXaGl0
ZXNwYWNlKCk7CisgICAgcmV0dXJuIGNvbnRlbnRzOworfQorCisvLyBUT0RPKHJ3bGJ1aXMpOiBj
b25zaWRlciBwdWxsaW5nIGluIHRoZSBwYXJzaW5nIGxvZ2ljIGZyb20gQ1NTQ2FsY3VsYXRpb25W
YWx1ZS5jcHAuCitjbGFzcyBDYWxjUGFyc2VyIHsKKworcHVibGljOgorICAgIGV4cGxpY2l0IENh
bGNQYXJzZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIFZhbHVlUmFuZ2UgdmFsdWVSYW5n
ZSA9IFZhbHVlUmFuZ2VBbGwpCisgICAgICAgIDogbV9zb3VyY2VSYW5nZShyYW5nZSkKKyAgICAg
ICAgLCBtX3JhbmdlKHJhbmdlKQorICAgIHsKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4m
IHRva2VuID0gcmFuZ2UucGVlaygpOworICAgICAgICBpZiAodG9rZW4uZnVuY3Rpb25JZCgpID09
IENTU1ZhbHVlQ2FsYyB8fCB0b2tlbi5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVXZWJraXRDYWxj
KQorICAgICAgICAgICAgbV9jYWxjVmFsdWUgPSBDU1NDYWxjVmFsdWU6OmNyZWF0ZShjb25zdW1l
RnVuY3Rpb24obV9yYW5nZSksIHZhbHVlUmFuZ2UpOworICAgIH0KKworICAgIGNvbnN0IENTU0Nh
bGNWYWx1ZSogdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NhbGNWYWx1ZS5nZXQoKTsgfQorICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lVmFsdWUoKQorICAgIHsKKyAgICAgICAgaWYgKCFt
X2NhbGNWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBtX3NvdXJj
ZVJhbmdlID0gbV9yYW5nZTsKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUobV9jYWxjVmFsdWUucmVsZWFzZSgpKTsKKyAgICB9CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IGNvbnN1bWVOdW1iZXIoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NhbGNWYWx1ZSkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBtX3NvdXJjZVJhbmdlID0gbV9yYW5nZTsK
KyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlIHVuaXRUeXBlID0gbV9jYWxjVmFs
dWUtPmlzSW50KCkgPyBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkludGVnZXIgOiBDU1NQ
cmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6Ok51bWJlcjsKKyAgICAgICAgcmV0dXJuIENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGUobV9jYWxjVmFsdWUtPmRvdWJsZVZhbHVlKCksIHVuaXRUeXBlKTsK
KyAgICB9CisKKyAgICBib29sIGNvbnN1bWVOdW1iZXJSYXcoZG91YmxlJiByZXN1bHQpCisgICAg
eworICAgICAgICBpZiAoIW1fY2FsY1ZhbHVlIHx8IG1fY2FsY1ZhbHVlLT5jYXRlZ29yeSgpICE9
IENhbGNOdW1iZXIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIG1fc291cmNl
UmFuZ2UgPSBtX3JhbmdlOworICAgICAgICByZXN1bHQgPSBtX2NhbGNWYWx1ZS0+ZG91YmxlVmFs
dWUoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitwcml2YXRlOgorICAgIENTU1Bh
cnNlclRva2VuUmFuZ2UmIG1fc291cmNlUmFuZ2U7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBt
X3JhbmdlOworICAgIE1lbWJlcjxDU1NDYWxjVmFsdWU+IG1fY2FsY1ZhbHVlOworfTsKKworQ1NT
UHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVJbnRlZ2VyKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBkb3VibGUgbWluaW11bVZhbHVlKQoreworICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tl
biA9IHJhbmdlLnBlZWsoKTsKKyAgICBpZiAodG9rZW4udHlwZSgpID09IE51bWJlclRva2VuKSB7
CisgICAgICAgIGlmICh0b2tlbi5udW1lcmljVmFsdWVUeXBlKCkgPT0gTnVtYmVyVmFsdWVUeXBl
IHx8IHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgbWluaW11bVZhbHVlKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJh
bmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCksIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZTo6SW50ZWdlcik7CisgICAgfQorICAgIENhbGNQYXJzZXIgY2Fs
Y1BhcnNlcihyYW5nZSk7CisgICAgaWYgKGNvbnN0IENTU0NhbGNWYWx1ZSogY2FsY3VsYXRpb24g
PSBjYWxjUGFyc2VyLnZhbHVlKCkpIHsKKyAgICAgICAgaWYgKGNhbGN1bGF0aW9uLT5jYXRlZ29y
eSgpICE9IENhbGNOdW1iZXIgfHwgIWNhbGN1bGF0aW9uLT5pc0ludCgpKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIGRvdWJsZSB2YWx1ZSA9IGNhbGN1bGF0aW9uLT5kb3Vi
bGVWYWx1ZSgpOworICAgICAgICBpZiAodmFsdWUgPCBtaW5pbXVtVmFsdWUpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGNhbGNQYXJzZXIuY29uc3VtZU51bWJl
cigpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworQ1NTUHJpbWl0aXZlVmFsdWUq
IGNvbnN1bWVQb3NpdGl2ZUludGVnZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7Cisg
ICAgcmV0dXJuIGNvbnN1bWVJbnRlZ2VyKHJhbmdlLCAxKTsKK30KKworYm9vbCBjb25zdW1lTnVt
YmVyUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBkb3VibGUmIHJlc3VsdCkKK3sKKyAg
ICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBOdW1iZXJUb2tlbikgeworICAgICAgICByZXN1
bHQgPSByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgQ2FsY1BhcnNlciBjYWxjUGFyc2VyKHJh
bmdlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICByZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lTnVtYmVy
UmF3KHJlc3VsdCk7Cit9CisKKy8vIFRPRE8odGltbG9oKTogV29yayBvdXQgaWYgdGhpcyBjYW4g
anVzdCBjYWxsIGNvbnN1bWVOdW1iZXJSYXcKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lTnVt
YmVyKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UpCit7
CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOworICAgIGlm
ICh0b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4pIHsKKyAgICAgICAgaWYgKHZhbHVlUmFuZ2Ug
PT0gVmFsdWVSYW5nZU5vbk5lZ2F0aXZlICYmIHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgMCkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1
ZSgpLCB0b2tlbi51bml0VHlwZSgpKTsKKyAgICB9CisgICAgQ2FsY1BhcnNlciBjYWxjUGFyc2Vy
KHJhbmdlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBpZiAoY29uc3QgQ1NTQ2FsY1ZhbHVlKiBjYWxj
dWxhdGlvbiA9IGNhbGNQYXJzZXIudmFsdWUoKSkgeworICAgICAgICAvLyBUT0RPKHJ3bGJ1aXMp
IENhbGNzIHNob3VsZCBub3QgYmUgc3ViamVjdCB0byBwYXJzZSB0aW1lIHJhbmdlIGNoZWNrcy4K
KyAgICAgICAgLy8gc3BlYzogaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy12YWx1ZXMtMy8j
Y2FsYy1yYW5nZQorICAgICAgICBpZiAoY2FsY3VsYXRpb24tPmNhdGVnb3J5KCkgIT0gQ2FsY051
bWJlciB8fCAodmFsdWVSYW5nZSA9PSBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUgJiYgY2FsY3VsYXRp
b24tPmlzTmVnYXRpdmUoKSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
cmV0dXJuIGNhbGNQYXJzZXIuY29uc3VtZU51bWJlcigpOworICAgIH0KKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworaW5saW5lIGJvb2wgc2hvdWxkQWNjZXB0VW5pdGxlc3NMZW5ndGgoZG91Ymxl
IHZhbHVlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxl
c3MpCit7CisgICAgLy8gVE9ETyh0aW1sb2gpOiBQcmVzZW50YXRpb25hbCBIVE1MIGF0dHJpYnV0
ZXMgc2hvdWxkbid0IHVzZSB0aGUgQ1NTIHBhcnNlciBmb3IgbGVuZ3RocworICAgIHJldHVybiB2
YWx1ZSA9PSAwCisgICAgICAgIHx8IGlzVW5pdExlc3NMZW5ndGhQYXJzaW5nRW5hYmxlZEZvck1v
ZGUoY3NzUGFyc2VyTW9kZSkKKyAgICAgICAgfHwgKGNzc1BhcnNlck1vZGUgPT0gSFRNTFF1aXJr
c01vZGUgJiYgdW5pdGxlc3MgPT0gVW5pdGxlc3NRdWlyazo6QWxsb3cpOworfQorCitDU1NQcmlt
aXRpdmVWYWx1ZSogY29uc3VtZUxlbmd0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NT
UGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UsIFVuaXRsZXNz
UXVpcmsgdW5pdGxlc3MpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFu
Z2UucGVlaygpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4pIHsKKyAg
ICAgICAgc3dpdGNoICh0b2tlbi51bml0VHlwZSgpKSB7CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlOjpRdWlya3lFbXM6CisgICAgICAgICAgICBpZiAoY3NzUGFyc2Vy
TW9kZSAhPSBVQVNoZWV0TW9kZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZTo6RW1zOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6
UmVtczoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkNoczoKKyAg
ICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkV4czoKKyAgICAgICAgY2Fz
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBpeGVsczoKKyAgICAgICAgY2FzZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkNlbnRpbWV0ZXJzOgorICAgICAgICBjYXNlIENTU1By
aW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TWlsbGltZXRlcnM6CisgICAgICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpJbmNoZXM6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZl
VmFsdWU6OlVuaXRUeXBlOjpQb2ludHM6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlOjpQaWNhczoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGU6OlVzZXJVbml0czoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6
OlZpZXdwb3J0V2lkdGg6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBl
OjpWaWV3cG9ydEhlaWdodDoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGU6OlZpZXdwb3J0TWluOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZTo6Vmlld3BvcnRNYXg6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZVJh
bmdlID09IFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSAmJiB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDAp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1lcmlj
VmFsdWUoKSwgdG9rZW4udW5pdFR5cGUoKSk7CisgICAgfQorICAgIGlmICh0b2tlbi50eXBlKCkg
PT0gTnVtYmVyVG9rZW4pIHsKKyAgICAgICAgaWYgKCFzaG91bGRBY2NlcHRVbml0bGVzc0xlbmd0
aCh0b2tlbi5udW1lcmljVmFsdWUoKSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpCisgICAgICAg
ICAgICB8fCAodmFsdWVSYW5nZSA9PSBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUgJiYgdG9rZW4ubnVt
ZXJpY1ZhbHVlKCkgPCAwKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGUgdW5pdFR5cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGU6OlBpeGVsczsKKyAgICAgICAgaWYgKGNzc1BhcnNlck1vZGUgPT0gU1ZHQXR0cmli
dXRlTW9kZSkKKyAgICAgICAgICAgIHVuaXRUeXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlOjpVc2VyVW5pdHM7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCksIHVuaXRU
eXBlKTsKKyAgICB9CisgICAgaWYgKGNzc1BhcnNlck1vZGUgPT0gU1ZHQXR0cmlidXRlTW9kZSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ2FsY1BhcnNlciBjYWxjUGFyc2VyKHJhbmdl
LCB2YWx1ZVJhbmdlKTsKKyAgICBpZiAoY2FsY1BhcnNlci52YWx1ZSgpICYmIGNhbGNQYXJzZXIu
dmFsdWUoKS0+Y2F0ZWdvcnkoKSA9PSBDYWxjTGVuZ3RoKQorICAgICAgICByZXR1cm4gY2FsY1Bh
cnNlci5jb25zdW1lVmFsdWUoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworQ1NTUHJpbWl0
aXZlVmFsdWUqIGNvbnN1bWVQZXJjZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBWYWx1
ZVJhbmdlIHZhbHVlUmFuZ2UpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0g
cmFuZ2UucGVlaygpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gUGVyY2VudGFnZVRva2VuKSB7
CisgICAgICAgIGlmICh2YWx1ZVJhbmdlID09IFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSAmJiB0b2tl
bi5udW1lcmljVmFsdWUoKSA8IDApCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFuZ2UuY29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UoKS5udW1lcmljVmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBl
OjpQZXJjZW50YWdlKTsKKyAgICB9CisgICAgQ2FsY1BhcnNlciBjYWxjUGFyc2VyKHJhbmdlLCB2
YWx1ZVJhbmdlKTsKKyAgICBpZiAoY29uc3QgQ1NTQ2FsY1ZhbHVlKiBjYWxjdWxhdGlvbiA9IGNh
bGNQYXJzZXIudmFsdWUoKSkgeworICAgICAgICBpZiAoY2FsY3VsYXRpb24tPmNhdGVnb3J5KCkg
PT0gQ2FsY1BlcmNlbnQpCisgICAgICAgICAgICByZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lVmFs
dWUoKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wgY2FuQ29uc3VtZUNh
bGNWYWx1ZShDYWxjdWxhdGlvbkNhdGVnb3J5IGNhdGVnb3J5LCBDU1NQYXJzZXJNb2RlIGNzc1Bh
cnNlck1vZGUpCit7CisgICAgaWYgKGNhdGVnb3J5ID09IENhbGNMZW5ndGggfHwgY2F0ZWdvcnkg
PT0gQ2FsY1BlcmNlbnQgfHwgY2F0ZWdvcnkgPT0gQ2FsY1BlcmNlbnRMZW5ndGgpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgaWYgKGNzc1BhcnNlck1vZGUgIT0gU1ZHQXR0cmlidXRlTW9k
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGNhdGVnb3J5ID09IENhbGNOdW1i
ZXIgfHwgY2F0ZWdvcnkgPT0gQ2FsY1BlcmNlbnROdW1iZXIgfHwgY2F0ZWdvcnkgPT0gQ2FsY0xl
bmd0aE51bWJlciB8fCBjYXRlZ29yeSA9PSBDYWxjUGVyY2VudExlbmd0aE51bWJlcikKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0NTU1ByaW1pdGl2ZVZh
bHVlKiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBD
U1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSwgVW5pdGxl
c3NRdWlyayB1bml0bGVzcykKK3sKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSBy
YW5nZS5wZWVrKCk7CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbiB8fCB0
b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4pCisgICAgICAgIHJldHVybiBjb25zdW1lTGVuZ3Ro
KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB2YWx1ZVJhbmdlLCB1bml0bGVzcyk7CisgICAgaWYgKHRv
a2VuLnR5cGUoKSA9PSBQZXJjZW50YWdlVG9rZW4pCisgICAgICAgIHJldHVybiBjb25zdW1lUGVy
Y2VudChyYW5nZSwgdmFsdWVSYW5nZSk7CisgICAgQ2FsY1BhcnNlciBjYWxjUGFyc2VyKHJhbmdl
LCB2YWx1ZVJhbmdlKTsKKyAgICBpZiAoY29uc3QgQ1NTQ2FsY1ZhbHVlKiBjYWxjdWxhdGlvbiA9
IGNhbGNQYXJzZXIudmFsdWUoKSkgeworICAgICAgICBpZiAoY2FuQ29uc3VtZUNhbGNWYWx1ZShj
YWxjdWxhdGlvbi0+Y2F0ZWdvcnkoKSwgY3NzUGFyc2VyTW9kZSkpCisgICAgICAgICAgICByZXR1
cm4gY2FsY1BhcnNlci5jb25zdW1lVmFsdWUoKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lQW5nbGUoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVl
aygpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4pIHsKKyAgICAgICAg
c3dpdGNoICh0b2tlbi51bml0VHlwZSgpKSB7CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlOjpEZWdyZWVzOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZTo6UmFkaWFuczoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGU6OkdyYWRpYW5zOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6
VHVybnM6CisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyYW5n
ZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgpLCB0b2tlbi51bml0
VHlwZSgpKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICB9CisgICAgfQorICAgIGlmICh0b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4gJiYg
dG9rZW4ubnVtZXJpY1ZhbHVlKCkgPT0gMCkgeworICAgICAgICByYW5nZS5jb25zdW1lSW5jbHVk
aW5nV2hpdGVzcGFjZSgpOworICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZSgwLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkRlZ3JlZXMpOworICAgIH0KKyAgICBD
YWxjUGFyc2VyIGNhbGNQYXJzZXIocmFuZ2UsIFZhbHVlUmFuZ2VBbGwpOworICAgIGlmIChjb25z
dCBDU1NDYWxjVmFsdWUqIGNhbGN1bGF0aW9uID0gY2FsY1BhcnNlci52YWx1ZSgpKSB7CisgICAg
ICAgIGlmIChjYWxjdWxhdGlvbi0+Y2F0ZWdvcnkoKSA9PSBDYWxjQW5nbGUpCisgICAgICAgICAg
ICByZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lVmFsdWUoKTsKKyAgICB9CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lVGltZShDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgVmFsdWVSYW5nZSB2YWx1ZVJhbmdlKQoreworICAgIGNvbnN0IENTU1Bh
cnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICBpZiAodG9rZW4udHlwZSgpID09
IERpbWVuc2lvblRva2VuKSB7CisgICAgICAgIGlmICh2YWx1ZVJhbmdlID09IFZhbHVlUmFuZ2VO
b25OZWdhdGl2ZSAmJiB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDApCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlIHVuaXQgPSB0
b2tlbi51bml0VHlwZSgpOworICAgICAgICBpZiAodW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGU6Ok1pbGxpc2Vjb25kcyB8fCB1bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZTo6U2Vjb25kcykKKyAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCksIHRv
a2VuLnVuaXRUeXBlKCkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgQ2Fs
Y1BhcnNlciBjYWxjUGFyc2VyKHJhbmdlLCB2YWx1ZVJhbmdlKTsKKyAgICBpZiAoY29uc3QgQ1NT
Q2FsY1ZhbHVlKiBjYWxjdWxhdGlvbiA9IGNhbGNQYXJzZXIudmFsdWUoKSkgeworICAgICAgICBp
ZiAoY2FsY3VsYXRpb24tPmNhdGVnb3J5KCkgPT0gQ2FsY1RpbWUpCisgICAgICAgICAgICByZXR1
cm4gY2FsY1BhcnNlci5jb25zdW1lVmFsdWUoKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lSWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgIT0gSWRlbnRUb2tlbikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGVJZGVudGlmaWVyKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKSk7
Cit9CisKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lSWRlbnRSYW5nZShDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgQ1NTVmFsdWVJRCBsb3dlciwgQ1NTVmFsdWVJRCB1cHBlcikKK3sKKyAg
ICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPCBsb3dlciB8fCByYW5nZS5wZWVrKCkuaWQoKSA+IHVw
cGVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY29uc3VtZUlkZW50KHJh
bmdlKTsKK30KKworQ1NTQ3VzdG9tSWRlbnRWYWx1ZSogY29uc3VtZUN1c3RvbUlkZW50KENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgpICE9
IElkZW50VG9rZW4gfHwgaXNDU1NXaWRlS2V5d29yZChyYW5nZS5wZWVrKCkuaWQoKSkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBDU1NDdXN0b21JZGVudFZhbHVlOjpjcmVh
dGUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgpLnRvU3RyaW5nKCkp
OworfQorCitDU1NTdHJpbmdWYWx1ZSogY29uc3VtZVN0cmluZyhDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBTdHJpbmdUb2tlbikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIENTU1N0cmluZ1ZhbHVlOjpjcmVh
dGUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgpLnRvU3RyaW5nKCkp
OworfQorCitTdHJpbmdWaWV3IGNvbnN1bWVVcmxBc1N0cmluZ1ZpZXcoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2Uu
cGVlaygpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gVXJsVG9rZW4pIHsKKyAgICAgICAgcmFu
Z2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgcmV0dXJuIHRva2VuLnZh
bHVlKCk7CisgICAgfQorICAgIGlmICh0b2tlbi5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVVcmwp
IHsKKyAgICAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSB1cmxSYW5nZSA9IHJhbmdlOworICAgICAg
ICBDU1NQYXJzZXJUb2tlblJhbmdlIHVybEFyZ3MgPSB1cmxSYW5nZS5jb25zdW1lQmxvY2soKTsK
KyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIG5leHQgPSB1cmxBcmdzLmNvbnN1bWVJbmNs
dWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIGlmIChuZXh0LnR5cGUoKSA9PSBCYWRTdHJpbmdU
b2tlbiB8fCAhdXJsQXJncy5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIFN0cmluZ1ZpZXco
KTsKKyAgICAgICAgQVNTRVJUKG5leHQudHlwZSgpID09IFN0cmluZ1Rva2VuKTsKKyAgICAgICAg
cmFuZ2UgPSB1cmxSYW5nZTsKKyAgICAgICAgcmFuZ2UuY29uc3VtZVdoaXRlc3BhY2UoKTsKKyAg
ICAgICAgcmV0dXJuIG5leHQudmFsdWUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nVmll
dygpOworfQorCitDU1NVUklWYWx1ZSogY29uc3VtZVVybChDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSkKK3sKKyAgICBTdHJpbmdWaWV3IHVybCA9IGNvbnN1bWVVcmxBc1N0cmluZ1ZpZXcocmFu
Z2UpOworICAgIGlmICh1cmwuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IHJldHVybiBDU1NVUklWYWx1ZTo6Y3JlYXRlKHVybC50b1N0cmluZygpKTsKK30KKworc3RhdGlj
IGludCBjbGFtcFJHQkNvbXBvbmVudChjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUpCit7
CisgICAgZG91YmxlIHJlc3VsdCA9IHZhbHVlLmdldERvdWJsZVZhbHVlKCk7CisgICAgLy8gVE9E
Tyh0aW1sb2gpOiBNdWx0aXBseSBieSAyLjU1IGFuZCByb3VuZCBpbnN0ZWFkIG9mIGZsb29yLgor
ICAgIGlmICh2YWx1ZS5pc1BlcmNlbnRhZ2UoKSkKKyAgICAgICAgcmVzdWx0ICo9IDIuNTY7Cisg
ICAgcmV0dXJuIGNsYW1wVG88aW50PihyZXN1bHQsIDAsIDI1NSk7Cit9CisKK3N0YXRpYyBib29s
IHBhcnNlUkdCUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgUkdCQTMyJiBy
ZXN1bHQsIGJvb2wgcGFyc2VBbHBoYSkKK3sKKyAgICBBU1NFUlQocmFuZ2UucGVlaygpLmZ1bmN0
aW9uSWQoKSA9PSBDU1NWYWx1ZVJnYiB8fCByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENT
U1ZhbHVlUmdiYSk7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0
aW9uKHJhbmdlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogY29sb3JQYXJhbWV0ZXIgPSBjb25z
dW1lSW50ZWdlcihhcmdzKTsKKyAgICBpZiAoIWNvbG9yUGFyYW1ldGVyKQorICAgICAgICBjb2xv
clBhcmFtZXRlciA9IGNvbnN1bWVQZXJjZW50KGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAgIGlm
ICghY29sb3JQYXJhbWV0ZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjb25zdCBib29s
IGlzUGVyY2VudCA9IGNvbG9yUGFyYW1ldGVyLT5pc1BlcmNlbnRhZ2UoKTsKKyAgICBpbnQgY29s
b3JBcnJheVszXTsKKyAgICBjb2xvckFycmF5WzBdID0gY2xhbXBSR0JDb21wb25lbnQoKmNvbG9y
UGFyYW1ldGVyKTsKKyAgICBmb3IgKGludCBpID0gMTsgaSA8IDM7IGkrKykgeworICAgICAgICBp
ZiAoIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGNvbG9yUGFyYW1ldGVyID0gaXNQZXJjZW50ID8gY29uc3Vt
ZVBlcmNlbnQoYXJncywgVmFsdWVSYW5nZUFsbCkgOiBjb25zdW1lSW50ZWdlcihhcmdzKTsKKyAg
ICAgICAgaWYgKCFjb2xvclBhcmFtZXRlcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgY29sb3JBcnJheVtpXSA9IGNsYW1wUkdCQ29tcG9uZW50KCpjb2xvclBhcmFtZXRlcik7
CisgICAgfQorICAgIGlmIChwYXJzZUFscGhhKSB7CisgICAgICAgIGlmICghY29uc3VtZUNvbW1h
SW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgZG91YmxlIGFscGhhOworICAgICAgICBpZiAoIWNvbnN1bWVOdW1iZXJSYXcoYXJncywg
YWxwaGEpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAvLyBDb252ZXJ0IHRo
ZSBmbG9hdGluZyBwb2ludGVyIG51bWJlciBvZiBhbHBoYSB0byBhbiBpbnRlZ2VyIGluIHRoZSBy
YW5nZSBbMCwgMjU2KSwKKyAgICAgICAgLy8gd2l0aCBhbiBlcXVhbCBkaXN0cmlidXRpb24gYWNy
b3NzIGFsbCAyNTYgdmFsdWVzLgorICAgICAgICBpbnQgYWxwaGFDb21wb25lbnQgPSBzdGF0aWNf
Y2FzdDxpbnQ+KGNsYW1wVG88ZG91YmxlPihhbHBoYSwgMC4wLCAxLjApICogbmV4dGFmdGVyKDI1
Ni4wLCAwLjApKTsKKyAgICAgICAgcmVzdWx0ID0gbWFrZVJHQkEoY29sb3JBcnJheVswXSwgY29s
b3JBcnJheVsxXSwgY29sb3JBcnJheVsyXSwgYWxwaGFDb21wb25lbnQpOworICAgIH0gZWxzZSB7
CisgICAgICAgIHJlc3VsdCA9IG1ha2VSR0IoY29sb3JBcnJheVswXSwgY29sb3JBcnJheVsxXSwg
Y29sb3JBcnJheVsyXSk7CisgICAgfQorICAgIHJldHVybiBhcmdzLmF0RW5kKCk7Cit9CisKK3N0
YXRpYyBib29sIHBhcnNlSFNMUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
UkdCQTMyJiByZXN1bHQsIGJvb2wgcGFyc2VBbHBoYSkKK3sKKyAgICBBU1NFUlQocmFuZ2UucGVl
aygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUhzbCB8fCByYW5nZS5wZWVrKCkuZnVuY3Rpb25J
ZCgpID09IENTU1ZhbHVlSHNsYSk7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29u
c3VtZUZ1bmN0aW9uKHJhbmdlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogaHNsVmFsdWUgPSBj
b25zdW1lTnVtYmVyKGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAgIGlmICghaHNsVmFsdWUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBkb3VibGUgY29sb3JBcnJheVszXTsKKyAgICBjb2xv
ckFycmF5WzBdID0gKCgoaHNsVmFsdWUtPmdldEludFZhbHVlKCkgJSAzNjApICsgMzYwKSAlIDM2
MCkgLyAzNjAuMDsKKyAgICBmb3IgKGludCBpID0gMTsgaSA8IDM7IGkrKykgeworICAgICAgICBp
ZiAoIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGhzbFZhbHVlID0gY29uc3VtZVBlcmNlbnQoYXJncywgVmFs
dWVSYW5nZUFsbCk7CisgICAgICAgIGlmICghaHNsVmFsdWUpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGRvdWJsZSBkb3VibGVWYWx1ZSA9IGhzbFZhbHVlLT5nZXREb3VibGVW
YWx1ZSgpOworICAgICAgICBjb2xvckFycmF5W2ldID0gY2xhbXBUbzxkb3VibGU+KGRvdWJsZVZh
bHVlLCAwLjAsIDEwMC4wKSAvIDEwMC4wOyAvLyBOZWVkcyB0byBiZSB2YWx1ZSBiZXR3ZWVuIDAg
YW5kIDEuMC4KKyAgICB9CisgICAgZG91YmxlIGFscGhhID0gMS4wOworICAgIGlmIChwYXJzZUFs
cGhhKSB7CisgICAgICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdz
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFjb25zdW1lTnVtYmVy
UmF3KGFyZ3MsIGFscGhhKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYWxw
aGEgPSBjbGFtcFRvPGRvdWJsZT4oYWxwaGEsIDAuMCwgMS4wKTsKKyAgICB9CisgICAgcmVzdWx0
ID0gbWFrZVJHQkFGcm9tSFNMQShjb2xvckFycmF5WzBdLCBjb2xvckFycmF5WzFdLCBjb2xvckFy
cmF5WzJdLCBhbHBoYSk7CisgICAgcmV0dXJuIGFyZ3MuYXRFbmQoKTsKK30KKworc3RhdGljIGJv
b2wgcGFyc2VIZXhDb2xvcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgUkdCQTMyJiByZXN1
bHQsIGJvb2wgYWNjZXB0UXVpcmt5Q29sb3JzKQoreworICAgIGNvbnN0IENTU1BhcnNlclRva2Vu
JiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICBpZiAodG9rZW4udHlwZSgpID09IEhhc2hUb2tl
bikgeworICAgICAgICBpZiAoIUNvbG9yOjpwYXJzZUhleENvbG9yKHRva2VuLnZhbHVlKCksIHJl
c3VsdCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSBlbHNlIGlmIChhY2NlcHRR
dWlya3lDb2xvcnMpIHsKKyAgICAgICAgU3RyaW5nIGNvbG9yOworICAgICAgICBpZiAodG9rZW4u
dHlwZSgpID09IE51bWJlclRva2VuIHx8IHRva2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbikg
eworICAgICAgICAgICAgaWYgKHRva2VuLm51bWVyaWNWYWx1ZVR5cGUoKSAhPSBJbnRlZ2VyVmFs
dWVUeXBlCisgICAgICAgICAgICAgICAgfHwgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPCAwLiB8fCB0
b2tlbi5udW1lcmljVmFsdWUoKSA+PSAxMDAwMDAwLikKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICBpZiAodG9rZW4udHlwZSgpID09IE51bWJlclRva2VuKSAvLyBl
LmcuIDExMjIzMworICAgICAgICAgICAgICAgIGNvbG9yID0gU3RyaW5nOjpmb3JtYXQoIiVkIiwg
c3RhdGljX2Nhc3Q8aW50Pih0b2tlbi5udW1lcmljVmFsdWUoKSkpOworICAgICAgICAgICAgZWxz
ZSAvLyBlLmcuIDAwMDFGRgorICAgICAgICAgICAgICAgIGNvbG9yID0gU3RyaW5nOjpudW1iZXIo
c3RhdGljX2Nhc3Q8aW50Pih0b2tlbi5udW1lcmljVmFsdWUoKSkpICsgdG9rZW4udmFsdWUoKS50
b1N0cmluZygpOworICAgICAgICAgICAgd2hpbGUgKGNvbG9yLmxlbmd0aCgpIDwgNikKKyAgICAg
ICAgICAgICAgICBjb2xvciA9ICIwIiArIGNvbG9yOworICAgICAgICB9IGVsc2UgaWYgKHRva2Vu
LnR5cGUoKSA9PSBJZGVudFRva2VuKSB7IC8vIGUuZy4gRkYwMDAwCisgICAgICAgICAgICBjb2xv
ciA9IHRva2VuLnZhbHVlKCkudG9TdHJpbmcoKTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25l
ZCBsZW5ndGggPSBjb2xvci5sZW5ndGgoKTsKKyAgICAgICAgaWYgKGxlbmd0aCAhPSAzICYmIGxl
bmd0aCAhPSA2KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIUNvbG9y
OjpwYXJzZUhleENvbG9yKGNvbG9yLCByZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmFuZ2Uu
Y29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3Rh
dGljIGJvb2wgcGFyc2VDb2xvckZ1bmN0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBS
R0JBMzImIHJlc3VsdCkKK3sKKyAgICBDU1NWYWx1ZUlEIGZ1bmN0aW9uSWQgPSByYW5nZS5wZWVr
KCkuZnVuY3Rpb25JZCgpOworICAgIGlmIChmdW5jdGlvbklkIDwgQ1NTVmFsdWVSZ2IgfHwgZnVu
Y3Rpb25JZCA+IENTU1ZhbHVlSHNsYSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIENTU1Bh
cnNlclRva2VuUmFuZ2UgY29sb3JSYW5nZSA9IHJhbmdlOworICAgIGlmICgoZnVuY3Rpb25JZCA8
PSBDU1NWYWx1ZVJnYmEgJiYgIXBhcnNlUkdCUGFyYW1ldGVycyhjb2xvclJhbmdlLCByZXN1bHQs
IGZ1bmN0aW9uSWQgPT0gQ1NTVmFsdWVSZ2JhKSkKKyAgICAgICAgfHwgKGZ1bmN0aW9uSWQgPj0g
Q1NTVmFsdWVIc2wgJiYgIXBhcnNlSFNMUGFyYW1ldGVycyhjb2xvclJhbmdlLCByZXN1bHQsIGZ1
bmN0aW9uSWQgPT0gQ1NTVmFsdWVIc2xhKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
YW5nZSA9IGNvbG9yUmFuZ2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0NTU1ZhbHVlKiBjb25z
dW1lQ29sb3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFy
c2VyTW9kZSwgYm9vbCBhY2NlcHRRdWlya3lDb2xvcnMpCit7CisgICAgQ1NTVmFsdWVJRCBpZCA9
IHJhbmdlLnBlZWsoKS5pZCgpOworICAgIGlmIChTdHlsZUNvbG9yOjppc0NvbG9yS2V5d29yZChp
ZCkpIHsKKyAgICAgICAgaWYgKCFpc1ZhbHVlQWxsb3dlZEluTW9kZShpZCwgY3NzUGFyc2VyTW9k
ZSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJ
ZGVudChyYW5nZSk7CisgICAgfQorICAgIFJHQkEzMiBjb2xvciA9IENvbG9yOjp0cmFuc3BhcmVu
dDsKKyAgICBpZiAoIXBhcnNlSGV4Q29sb3IocmFuZ2UsIGNvbG9yLCBhY2NlcHRRdWlya3lDb2xv
cnMpICYmICFwYXJzZUNvbG9yRnVuY3Rpb24ocmFuZ2UsIGNvbG9yKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIENTU0NvbG9yVmFsdWU6OmNyZWF0ZShjb2xvcik7Cit9CisK
K3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVuaXRs
ZXNzUXVpcmsgdW5pdGxlc3MpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gSWRl
bnRUb2tlbikKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudDxDU1NWYWx1ZUxlZnQsIENTU1Zh
bHVlVG9wLCBDU1NWYWx1ZUJvdHRvbSwgQ1NTVmFsdWVSaWdodCwgQ1NTVmFsdWVDZW50ZXI+KHJh
bmdlKTsKKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2Vy
TW9kZSwgVmFsdWVSYW5nZUFsbCwgdW5pdGxlc3MpOworfQorCitzdGF0aWMgYm9vbCBpc0hvcml6
b250YWxQb3NpdGlvbktleXdvcmRPbmx5KGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkK
K3sKKyAgICByZXR1cm4gdmFsdWUuaXNWYWx1ZUlEKCkgJiYgKHZhbHVlLmdldFZhbHVlSUQoKSA9
PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlUmlnaHQpOwor
fQorCitzdGF0aWMgYm9vbCBpc1ZlcnRpY2FsUG9zaXRpb25LZXl3b3JkT25seShjb25zdCBDU1NQ
cmltaXRpdmVWYWx1ZSYgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlLmlzVmFsdWVJRCgpICYm
ICh2YWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVUb3AgfHwgdmFsdWUuZ2V0VmFsdWVJRCgp
ID09IENTU1ZhbHVlQm90dG9tKTsKK30KKworc3RhdGljIHZvaWQgcG9zaXRpb25Gcm9tT25lVmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlLCBDU1NWYWx1ZSomIHJlc3VsdFgsIENTU1ZhbHVl
KiYgcmVzdWx0WSkKK3sKKyAgICBib29sIHZhbHVlQXBwbGllc1RvWUF4aXNPbmx5ID0gaXNWZXJ0
aWNhbFBvc2l0aW9uS2V5d29yZE9ubHkoKnZhbHVlKTsKKyAgICByZXN1bHRYID0gdmFsdWU7Cisg
ICAgcmVzdWx0WSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVl
Q2VudGVyKTsKKyAgICBpZiAodmFsdWVBcHBsaWVzVG9ZQXhpc09ubHkpCisgICAgICAgIHN0ZDo6
c3dhcChyZXN1bHRYLCByZXN1bHRZKTsKK30KKworc3RhdGljIGJvb2wgcG9zaXRpb25Gcm9tVHdv
VmFsdWVzKENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZTEsIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1
ZTIsCisgICAgQ1NTVmFsdWUqJiByZXN1bHRYLCBDU1NWYWx1ZSomIHJlc3VsdFkpCit7CisgICAg
Ym9vbCBtdXN0T3JkZXJBc1hZID0gaXNIb3Jpem9udGFsUG9zaXRpb25LZXl3b3JkT25seSgqdmFs
dWUxKSB8fCBpc1ZlcnRpY2FsUG9zaXRpb25LZXl3b3JkT25seSgqdmFsdWUyKQorICAgICAgICB8
fCAhdmFsdWUxLT5pc1ZhbHVlSUQoKSB8fCAhdmFsdWUyLT5pc1ZhbHVlSUQoKTsKKyAgICBib29s
IG11c3RPcmRlckFzWVggPSBpc1ZlcnRpY2FsUG9zaXRpb25LZXl3b3JkT25seSgqdmFsdWUxKSB8
fCBpc0hvcml6b250YWxQb3NpdGlvbktleXdvcmRPbmx5KCp2YWx1ZTIpOworICAgIGlmIChtdXN0
T3JkZXJBc1hZICYmIG11c3RPcmRlckFzWVgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXN1bHRYID0gdmFsdWUxOworICAgIHJlc3VsdFkgPSB2YWx1ZTI7CisgICAgaWYgKG11c3RPcmRl
ckFzWVgpCisgICAgICAgIHN0ZDo6c3dhcChyZXN1bHRYLCByZXN1bHRZKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworc3RhdGljIGJvb2wgcG9zaXRpb25Gcm9tVGhyZWVPckZvdXJWYWx1ZXMoQ1NT
UHJpbWl0aXZlVmFsdWUqKiB2YWx1ZXMsIENTU1ZhbHVlKiYgcmVzdWx0WCwgQ1NTVmFsdWUqJiBy
ZXN1bHRZKQoreworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjZW50ZXIgPSBudWxscHRyOworICAg
IGZvciAoaW50IGkgPSAwOyB2YWx1ZXNbaV07IGkrKykgeworICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogY3VycmVudFZhbHVlID0gdmFsdWVzW2ldOworICAgICAgICBpZiAoIWN1cnJlbnRWYWx1
ZS0+aXNWYWx1ZUlEKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIENTU1Zh
bHVlSUQgaWQgPSBjdXJyZW50VmFsdWUtPmdldFZhbHVlSUQoKTsKKworICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVDZW50ZXIpIHsKKyAgICAgICAgICAgIGlmIChjZW50ZXIpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgY2VudGVyID0gY3VycmVudFZhbHVlOwor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBDU1NWYWx1ZSogcmVz
dWx0ID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKHZhbHVlc1tpICsgMV0gJiYgIXZhbHVlc1tpICsg
MV0tPmlzVmFsdWVJRCgpKSB7CisgICAgICAgICAgICByZXN1bHQgPSBDU1NWYWx1ZVBhaXI6OmNy
ZWF0ZShjdXJyZW50VmFsdWUsIHZhbHVlc1srK2ldLCBDU1NWYWx1ZVBhaXI6OktlZXBJZGVudGlj
YWxWYWx1ZXMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVzdWx0ID0gY3VycmVu
dFZhbHVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTGVmdCB8fCBp
ZCA9PSBDU1NWYWx1ZVJpZ2h0KSB7CisgICAgICAgICAgICBpZiAocmVzdWx0WCkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXN1bHRYID0gcmVzdWx0OworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKGlkID09IENTU1ZhbHVlVG9wIHx8IGlk
ID09IENTU1ZhbHVlQm90dG9tKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHRZKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJlc3VsdFkgPSByZXN1bHQ7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBpZiAoY2VudGVyKSB7CisgICAgICAgIEFTU0VSVChyZXN1bHRY
IHx8IHJlc3VsdFkpOworICAgICAgICBpZiAocmVzdWx0WCAmJiByZXN1bHRZKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIXJlc3VsdFgpCisgICAgICAgICAgICByZXN1
bHRYID0gY2VudGVyOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHRZID0gY2VudGVy
OworICAgIH0KKworICAgIEFTU0VSVChyZXN1bHRYICYmIHJlc3VsdFkpOworICAgIHJldHVybiB0
cnVlOworfQorCisvLyBUT0RPKHRpbWxvaCk6IFRoaXMgbWF5IGNvbnN1bWUgZnJvbSB0aGUgcmFu
Z2UgdXBvbiBmYWlsdXJlLiBUaGUgYmFja2dyb3VuZAorLy8gc2hvcnRoYW5kIHdvcmtzIGFyb3Vu
ZCBpdCwgYnV0IHdlIHNob3VsZCBqdXN0IGZpeCBpdCBoZXJlLgorYm9vbCBjb25zdW1lUG9zaXRp
b24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9k
ZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcywgQ1NTVmFsdWUqJiByZXN1bHRYLCBDU1NWYWx1ZSom
IHJlc3VsdFkpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlMSA9IGNvbnN1bWVQb3Np
dGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpOworICAgIGlmICgh
dmFsdWUxKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSog
dmFsdWUyID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1
bml0bGVzcyk7CisgICAgaWYgKCF2YWx1ZTIpIHsKKyAgICAgICAgcG9zaXRpb25Gcm9tT25lVmFs
dWUodmFsdWUxLCByZXN1bHRYLCByZXN1bHRZKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlMyA9IGNvbnN1bWVQb3NpdGlvbkNvbXBv
bmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpOworICAgIGlmICghdmFsdWUzKQor
ICAgICAgICByZXR1cm4gcG9zaXRpb25Gcm9tVHdvVmFsdWVzKHZhbHVlMSwgdmFsdWUyLCByZXN1
bHRYLCByZXN1bHRZKTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZTQgPSBjb25zdW1l
UG9zaXRpb25Db21wb25lbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKTsKKyAgICBD
U1NQcmltaXRpdmVWYWx1ZSogdmFsdWVzWzVdOworICAgIHZhbHVlc1swXSA9IHZhbHVlMTsKKyAg
ICB2YWx1ZXNbMV0gPSB2YWx1ZTI7CisgICAgdmFsdWVzWzJdID0gdmFsdWUzOworICAgIHZhbHVl
c1szXSA9IHZhbHVlNDsKKyAgICB2YWx1ZXNbNF0gPSBudWxscHRyOworICAgIHJldHVybiBwb3Np
dGlvbkZyb21UaHJlZU9yRm91clZhbHVlcyh2YWx1ZXMsIHJlc3VsdFgsIHJlc3VsdFkpOworfQor
CitDU1NWYWx1ZVBhaXIqIGNvbnN1bWVQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzKQor
eworICAgIENTU1ZhbHVlKiByZXN1bHRYID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogcmVzdWx0
WSA9IG51bGxwdHI7CisgICAgaWYgKGNvbnN1bWVQb3NpdGlvbihyYW5nZSwgY3NzUGFyc2VyTW9k
ZSwgdW5pdGxlc3MsIHJlc3VsdFgsIHJlc3VsdFkpKQorICAgICAgICByZXR1cm4gQ1NTVmFsdWVQ
YWlyOjpjcmVhdGUocmVzdWx0WCwgcmVzdWx0WSwgQ1NTVmFsdWVQYWlyOjpLZWVwSWRlbnRpY2Fs
VmFsdWVzKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYm9vbCBjb25zdW1lT25lT3JUd29W
YWx1ZWRQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBj
c3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzLCBDU1NWYWx1ZSomIHJlc3VsdFgs
IENTU1ZhbHVlKiYgcmVzdWx0WSkKK3sKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUxID0g
Y29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7
CisgICAgaWYgKCF2YWx1ZTEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBDU1NQcmltaXRp
dmVWYWx1ZSogdmFsdWUyID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQYXJz
ZXJNb2RlLCB1bml0bGVzcyk7CisgICAgaWYgKCF2YWx1ZTIpIHsKKyAgICAgICAgcG9zaXRpb25G
cm9tT25lVmFsdWUodmFsdWUxLCByZXN1bHRYLCByZXN1bHRZKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIHJldHVybiBwb3NpdGlvbkZyb21Ud29WYWx1ZXModmFsdWUxLCB2YWx1
ZTIsIHJlc3VsdFgsIHJlc3VsdFkpOworfQorCisvLyBUaGlzIHNob3VsZCBnbyBhd2F5IG9uY2Ug
d2UgZHJvcCBzdXBwb3J0IGZvciAtd2Via2l0LWdyYWRpZW50CitzdGF0aWMgQ1NTUHJpbWl0aXZl
VmFsdWUqIGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnRQb2ludChDU1NQYXJzZXJUb2tlblJhbmdl
JiBhcmdzLCBib29sIGhvcml6b250YWwpCit7CisgICAgaWYgKGFyZ3MucGVlaygpLnR5cGUoKSA9
PSBJZGVudFRva2VuKSB7CisgICAgICAgIGlmICgoaG9yaXpvbnRhbCAmJiBjb25zdW1lSWRlbnQ8
Q1NTVmFsdWVMZWZ0PihhcmdzKSkgfHwgKCFob3Jpem9udGFsICYmIGNvbnN1bWVJZGVudDxDU1NW
YWx1ZVRvcD4oYXJncykpKQorICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUoMC4sIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGVyY2VudGFnZSk7CisgICAg
ICAgIGlmICgoaG9yaXpvbnRhbCAmJiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVSaWdodD4oYXJncykp
IHx8ICghaG9yaXpvbnRhbCAmJiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVCb3R0b20+KGFyZ3MpKSkK
KyAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDEwMC4sIENTU1By
aW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGVyY2VudGFnZSk7CisgICAgICAgIGlmIChjb25zdW1l
SWRlbnQ8Q1NTVmFsdWVDZW50ZXI+KGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGUoNTAuLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBlcmNl
bnRhZ2UpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHJlc3VsdCA9IGNvbnN1bWVQZXJjZW50KGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAg
IGlmICghcmVzdWx0KQorICAgICAgICByZXN1bHQgPSBjb25zdW1lTnVtYmVyKGFyZ3MsIFZhbHVl
UmFuZ2VBbGwpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIFVzZWQgdG8gcGFyc2UgY29s
b3JzIGZvciAtd2Via2l0LWdyYWRpZW50KC4uLikuCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVE
ZXByZWNhdGVkR3JhZGllbnRTdG9wQ29sb3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NT
UGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlmIChhcmdzLnBlZWsoKS5pZCgpID09
IENTU1ZhbHVlQ3VycmVudGNvbG9yKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gY29uc3VtZUNvbG9yKGFyZ3MsIGNzc1BhcnNlck1vZGUpOworfQorCitzdGF0aWMgYm9vbCBj
b25zdW1lRGVwcmVjYXRlZEdyYWRpZW50Q29sb3JTdG9wKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBDU1NHcmFkaWVudENvbG9yU3RvcCYgc3RvcCwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJN
b2RlKQoreworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpOwor
ICAgIGlmIChpZCAhPSBDU1NWYWx1ZUZyb20gJiYgaWQgIT0gQ1NTVmFsdWVUbyAmJiBpZCAhPSBD
U1NWYWx1ZUNvbG9yU3RvcCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1NTUGFyc2Vy
VG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlKTsKKyAgICBkb3VibGUgcG9z
aXRpb247CisgICAgaWYgKGlkID09IENTU1ZhbHVlRnJvbSB8fCBpZCA9PSBDU1NWYWx1ZVRvKSB7
CisgICAgICAgIHBvc2l0aW9uID0gKGlkID09IENTU1ZhbHVlRnJvbSkgPyAwIDogMTsKKyAgICB9
IGVsc2UgeworICAgICAgICBEQ0hFQ0soaWQgPT0gQ1NTVmFsdWVDb2xvclN0b3ApOworICAgICAg
ICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgYXJnID0gYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVz
cGFjZSgpOworICAgICAgICBpZiAoYXJnLnR5cGUoKSA9PSBQZXJjZW50YWdlVG9rZW4pCisgICAg
ICAgICAgICBwb3NpdGlvbiA9IGFyZy5udW1lcmljVmFsdWUoKSAvIDEwMC4wOworICAgICAgICBl
bHNlIGlmIChhcmcudHlwZSgpID09IE51bWJlclRva2VuKQorICAgICAgICAgICAgcG9zaXRpb24g
PSBhcmcubnVtZXJpY1ZhbHVlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJn
cykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3RvcC5tX3Bvc2l0
aW9uID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShwb3NpdGlvbiwgQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlOjpOdW1iZXIpOworICAgIHN0b3AubV9jb2xvciA9IGNvbnN1bWVEZXByZWNh
dGVkR3JhZGllbnRTdG9wQ29sb3IoYXJncywgY3NzUGFyc2VyTW9kZSk7CisgICAgcmV0dXJuIHN0
b3AubV9jb2xvciAmJiBhcmdzLmF0RW5kKCk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3Vt
ZURlcHJlY2F0ZWRHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJN
b2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgQ1NTR3JhZGllbnRWYWx1ZSogcmVzdWx0ID0gbnVs
bHB0cjsKKyAgICBDU1NWYWx1ZUlEIGlkID0gYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFj
ZSgpLmlkKCk7CisgICAgYm9vbCBpc0RlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCA9IChpZCA9PSBD
U1NWYWx1ZVJhZGlhbCk7CisgICAgaWYgKGlzRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KQorICAg
ICAgICByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGUoTm9uUmVwZWF0aW5n
LCBDU1NEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQpOworICAgIGVsc2UgaWYgKGlkID09IENTU1Zh
bHVlTGluZWFyKQorICAgICAgICByZXN1bHQgPSBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVh
dGUoTm9uUmVwZWF0aW5nLCBDU1NEZXByZWNhdGVkTGluZWFyR3JhZGllbnQpOworICAgIGlmICgh
cmVzdWx0IHx8ICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwb2ludCA9IGNvbnN1
bWVEZXByZWNhdGVkR3JhZGllbnRQb2ludChhcmdzLCB0cnVlKTsKKyAgICBpZiAoIXBvaW50KQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXN1bHQtPnNldEZpcnN0WChwb2ludCk7Cisg
ICAgcG9pbnQgPSBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50UG9pbnQoYXJncywgZmFsc2UpOwor
ICAgIGlmICghcG9pbnQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJlc3VsdC0+c2V0
Rmlyc3RZKHBvaW50KTsKKworICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFj
ZShhcmdzKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBGb3IgcmFkaWFsIGdy
YWRpZW50cyBvbmx5LCB3ZSBub3cgZXhwZWN0IGEgbnVtZXJpYyByYWRpdXMuCisgICAgaWYgKGlz
RGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBy
YWRpdXMgPSBjb25zdW1lTnVtYmVyKGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBpZiAo
IXJhZGl1cyB8fCAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB0b0NTU1JhZGlhbEdyYWRpZW50VmFsdWUo
cmVzdWx0KS0+c2V0Rmlyc3RSYWRpdXMocmFkaXVzKTsKKyAgICB9CisKKyAgICBwb2ludCA9IGNv
bnN1bWVEZXByZWNhdGVkR3JhZGllbnRQb2ludChhcmdzLCB0cnVlKTsKKyAgICBpZiAoIXBvaW50
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXN1bHQtPnNldFNlY29uZFgocG9pbnQp
OworICAgIHBvaW50ID0gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudFBvaW50KGFyZ3MsIGZhbHNl
KTsKKyAgICBpZiAoIXBvaW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXN1bHQt
PnNldFNlY29uZFkocG9pbnQpOworCisgICAgLy8gRm9yIHJhZGlhbCBncmFkaWVudHMgb25seSwg
d2Ugbm93IGV4cGVjdCB0aGUgc2Vjb25kIHJhZGl1cy4KKyAgICBpZiAoaXNEZXByZWNhdGVkUmFk
aWFsR3JhZGllbnQpIHsKKyAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNw
YWNlKGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiByYWRpdXMgPSBjb25zdW1lTnVtYmVyKGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOwor
ICAgICAgICBpZiAoIXJhZGl1cykKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICB0b0NTU1JhZGlhbEdyYWRpZW50VmFsdWUocmVzdWx0KS0+c2V0U2Vjb25kUmFkaXVzKHJhZGl1
cyk7CisgICAgfQorCisgICAgQ1NTR3JhZGllbnRDb2xvclN0b3Agc3RvcDsKKyAgICB3aGlsZSAo
Y29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkgeworICAgICAgICBpZiAoIWNv
bnN1bWVEZXByZWNhdGVkR3JhZGllbnRDb2xvclN0b3AoYXJncywgc3RvcCwgY3NzUGFyc2VyTW9k
ZSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmVzdWx0LT5hZGRTdG9w
KHN0b3ApOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBib29sIGNv
bnN1bWVHcmFkaWVudENvbG9yU3RvcHMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1Bh
cnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgQ1NTR3JhZGllbnRWYWx1ZSogZ3JhZGllbnQpCit7Cisg
ICAgYm9vbCBzdXBwb3J0c0NvbG9ySGludHMgPSBncmFkaWVudC0+Z3JhZGllbnRUeXBlKCkgPT0g
Q1NTTGluZWFyR3JhZGllbnQgfHwgZ3JhZGllbnQtPmdyYWRpZW50VHlwZSgpID09IENTU1JhZGlh
bEdyYWRpZW50OworCisgICAgLy8gVGhlIGZpcnN0IGNvbG9yIHN0b3AgY2Fubm90IGJlIGEgY29s
b3IgaGludC4KKyAgICBib29sIHByZXZpb3VzU3RvcFdhc0NvbG9ySGludCA9IHRydWU7CisgICAg
ZG8geworICAgICAgICBDU1NHcmFkaWVudENvbG9yU3RvcCBzdG9wOworICAgICAgICBzdG9wLm1f
Y29sb3IgPSBjb25zdW1lQ29sb3IocmFuZ2UsIGNzc1BhcnNlck1vZGUpOworICAgICAgICAvLyBU
d28gaGludHMgaW4gYSByb3cgYXJlIG5vdCBhbGxvd2VkLgorICAgICAgICBpZiAoIXN0b3AubV9j
b2xvciAmJiAoIXN1cHBvcnRzQ29sb3JIaW50cyB8fCBwcmV2aW91c1N0b3BXYXNDb2xvckhpbnQp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBwcmV2aW91c1N0b3BXYXNDb2xv
ckhpbnQgPSAhc3RvcC5tX2NvbG9yOworICAgICAgICBzdG9wLm1fcG9zaXRpb24gPSBjb25zdW1l
TGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAg
ICAgICAgaWYgKCFzdG9wLm1fY29sb3IgJiYgIXN0b3AubV9wb3NpdGlvbikKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgZ3JhZGllbnQtPmFkZFN0b3Aoc3RvcCk7CisgICAgfSB3
aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpOworCisgICAgLy8g
VGhlIGxhc3QgY29sb3Igc3RvcCBjYW5ub3QgYmUgYSBjb2xvciBoaW50LgorICAgIGlmIChwcmV2
aW91c1N0b3BXYXNDb2xvckhpbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE11
c3QgaGF2ZSAyIG9yIG1vcmUgc3RvcHMgdG8gYmUgdmFsaWQuCisgICAgcmV0dXJuIGdyYWRpZW50
LT5zdG9wQ291bnQoKSA+PSAyOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVEZXByZWNh
dGVkUmFkaWFsR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlLCBDU1NHcmFkaWVudFJlcGVhdCByZXBlYXRpbmcpCit7CisgICAgQ1NT
UmFkaWFsR3JhZGllbnRWYWx1ZSogcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3Jl
YXRlKHJlcGVhdGluZywgQ1NTUHJlZml4ZWRSYWRpYWxHcmFkaWVudCk7CisgICAgQ1NTVmFsdWUq
IGNlbnRlclggPSBudWxscHRyOworICAgIENTU1ZhbHVlKiBjZW50ZXJZID0gbnVsbHB0cjsKKyAg
ICBjb25zdW1lT25lT3JUd29WYWx1ZWRQb3NpdGlvbihhcmdzLCBjc3NQYXJzZXJNb2RlLCBVbml0
bGVzc1F1aXJrOjpGb3JiaWQsIGNlbnRlclgsIGNlbnRlclkpOworICAgIGlmICgoY2VudGVyWCB8
fCBjZW50ZXJZKSAmJiAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXN1bHQtPnNldEZpcnN0WCh0b0NTU1ByaW1p
dGl2ZVZhbHVlKGNlbnRlclgpKTsKKyAgICByZXN1bHQtPnNldFNlY29uZFgodG9DU1NQcmltaXRp
dmVWYWx1ZShjZW50ZXJYKSk7CisgICAgcmVzdWx0LT5zZXRGaXJzdFkodG9DU1NQcmltaXRpdmVW
YWx1ZShjZW50ZXJZKSk7CisgICAgcmVzdWx0LT5zZXRTZWNvbmRZKHRvQ1NTUHJpbWl0aXZlVmFs
dWUoY2VudGVyWSkpOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNoYXBlID0gY29uc3VtZUlk
ZW50PENTU1ZhbHVlQ2lyY2xlLCBDU1NWYWx1ZUVsbGlwc2U+KGFyZ3MpOworICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBzaXplS2V5d29yZCA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUNsb3Nlc3RTaWRl
LCBDU1NWYWx1ZUNsb3Nlc3RDb3JuZXIsIENTU1ZhbHVlRmFydGhlc3RTaWRlLCBDU1NWYWx1ZUZh
cnRoZXN0Q29ybmVyLCBDU1NWYWx1ZUNvbnRhaW4sIENTU1ZhbHVlQ292ZXI+KGFyZ3MpOworICAg
IGlmICghc2hhcGUpCisgICAgICAgIHNoYXBlID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQ2lyY2xl
LCBDU1NWYWx1ZUVsbGlwc2U+KGFyZ3MpOworICAgIHJlc3VsdC0+c2V0U2hhcGUoc2hhcGUpOwor
ICAgIHJlc3VsdC0+c2V0U2l6aW5nQmVoYXZpb3Ioc2l6ZUtleXdvcmQpOworCisgICAgLy8gT3Is
IHR3byBsZW5ndGhzIG9yIHBlcmNlbnRhZ2VzCisgICAgaWYgKCFzaGFwZSAmJiAhc2l6ZUtleXdv
cmQpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGhvcml6b250YWxTaXplID0gY29uc3Vt
ZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZlcnRpY2FsU2l6ZSA9IG51bGxwdHI7CisgICAgICAg
IGlmIChob3Jpem9udGFsU2l6ZSkgeworICAgICAgICAgICAgdmVydGljYWxTaXplID0gY29uc3Vt
ZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAg
ICAgICAgICAgIGlmICghdmVydGljYWxTaXplKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICAgICAgY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKTsK
KyAgICAgICAgICAgIHJlc3VsdC0+c2V0RW5kSG9yaXpvbnRhbFNpemUoaG9yaXpvbnRhbFNpemUp
OworICAgICAgICAgICAgcmVzdWx0LT5zZXRFbmRWZXJ0aWNhbFNpemUodmVydGljYWxTaXplKTsK
KyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGNvbnN1bWVDb21tYUluY2x1ZGluZ1do
aXRlc3BhY2UoYXJncyk7CisgICAgfQorICAgIGlmICghY29uc3VtZUdyYWRpZW50Q29sb3JTdG9w
cyhhcmdzLCBjc3NQYXJzZXJNb2RlLCByZXN1bHQpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVJhZGlh
bEdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlck1vZGUgY3NzUGFy
c2VyTW9kZSwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nKQoreworICAgIENTU1JhZGlhbEdy
YWRpZW50VmFsdWUqIHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZShyZXBl
YXRpbmcsIENTU1JhZGlhbEdyYWRpZW50KTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzaGFw
ZSA9IG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNpemVLZXl3b3JkID0gbnVsbHB0
cjsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogaG9yaXpvbnRhbFNpemUgPSBudWxscHRyOworICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiB2ZXJ0aWNhbFNpemUgPSBudWxscHRyOworCisgICAgLy8gRmly
c3QgcGFydCBvZiBncmFtbWFyLCB0aGUgc2l6ZS9zaGFwZSBjbGF1c2U6CisgICAgLy8gWyBjaXJj
bGUgfHwgPGxlbmd0aD4gXSB8CisgICAgLy8gWyBlbGxpcHNlIHx8IFsgPGxlbmd0aD4gfCA8cGVy
Y2VudGFnZT4gXXsyfSBdIHwKKyAgICAvLyBbIFsgY2lyY2xlIHwgZWxsaXBzZV0gfHwgPHNpemUt
a2V5d29yZD4gXQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKSB7CisgICAgICAgIGlm
IChhcmdzLnBlZWsoKS50eXBlKCkgPT0gSWRlbnRUb2tlbikgeworICAgICAgICAgICAgQ1NTVmFs
dWVJRCBpZCA9IGFyZ3MucGVlaygpLmlkKCk7CisgICAgICAgICAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVDaXJjbGUgfHwgaWQgPT0gQ1NTVmFsdWVFbGxpcHNlKSB7CisgICAgICAgICAgICAgICAgaWYg
KHNoYXBlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAg
ICAgICBzaGFwZSA9IGNvbnN1bWVJZGVudChhcmdzKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
aWQgPT0gQ1NTVmFsdWVDbG9zZXN0U2lkZSB8fCBpZCA9PSBDU1NWYWx1ZUNsb3Nlc3RDb3JuZXIg
fHwgaWQgPT0gQ1NTVmFsdWVGYXJ0aGVzdFNpZGUgfHwgaWQgPT0gQ1NTVmFsdWVGYXJ0aGVzdENv
cm5lcikgeworICAgICAgICAgICAgICAgIGlmIChzaXplS2V5d29yZCkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAgICAgc2l6ZUtleXdvcmQgPSBjb25z
dW1lSWRlbnQoYXJncyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIGNlbnRlciA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFy
c2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgICAgICBpZiAoIWNlbnRlcikKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChob3Jpem9udGFsU2l6ZSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGhvcml6b250YWxTaXplID0g
Y2VudGVyOworICAgICAgICAgICAgY2VudGVyID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdz
LCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgICAgIGlmIChjZW50ZXIp
IHsKKyAgICAgICAgICAgICAgICB2ZXJ0aWNhbFNpemUgPSBjZW50ZXI7CisgICAgICAgICAgICAg
ICAgKytpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gWW91IGNh
biBzcGVjaWZ5IHNpemUgYXMgYSBrZXl3b3JkIG9yIGEgbGVuZ3RoL3BlcmNlbnRhZ2UsIG5vdCBi
b3RoLgorICAgIGlmIChzaXplS2V5d29yZCAmJiBob3Jpem9udGFsU2l6ZSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgLy8gQ2lyY2xlcyBtdXN0IGhhdmUgMCBvciAxIGxlbmd0aHMuCisg
ICAgaWYgKHNoYXBlICYmIHNoYXBlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVDaXJjbGUgJiYg
dmVydGljYWxTaXplKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAvLyBFbGxpcHNlcyBt
dXN0IGhhdmUgMCBvciAyIGxlbmd0aC9wZXJjZW50YWdlcy4KKyAgICBpZiAoc2hhcGUgJiYgc2hh
cGUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUVsbGlwc2UgJiYgaG9yaXpvbnRhbFNpemUgJiYg
IXZlcnRpY2FsU2l6ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgLy8gSWYgdGhlcmUn
cyBvbmx5IG9uZSBzaXplLCBpdCBtdXN0IGJlIGEgbGVuZ3RoLgorICAgIGlmICghdmVydGljYWxT
aXplICYmIGhvcml6b250YWxTaXplICYmIGhvcml6b250YWxTaXplLT5pc1BlcmNlbnRhZ2UoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKChob3Jpem9udGFsU2l6ZSAmJiBob3Jp
em9udGFsU2l6ZS0+aXNDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhMZW5ndGgoKSkKKyAgICAgICAg
fHwgKHZlcnRpY2FsU2l6ZSAmJiB2ZXJ0aWNhbFNpemUtPmlzQ2FsY3VsYXRlZFBlcmNlbnRhZ2VX
aXRoTGVuZ3RoKCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJlc3VsdC0+c2V0
U2hhcGUoc2hhcGUpOworICAgIHJlc3VsdC0+c2V0U2l6aW5nQmVoYXZpb3Ioc2l6ZUtleXdvcmQp
OworICAgIHJlc3VsdC0+c2V0RW5kSG9yaXpvbnRhbFNpemUoaG9yaXpvbnRhbFNpemUpOworICAg
IHJlc3VsdC0+c2V0RW5kVmVydGljYWxTaXplKHZlcnRpY2FsU2l6ZSk7CisKKyAgICBDU1NWYWx1
ZSogY2VudGVyWCA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIGNlbnRlclkgPSBudWxscHRyOwor
ICAgIGlmIChhcmdzLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXQpIHsKKyAgICAgICAgYXJncy5j
b25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICBjb25zdW1lUG9zaXRpb24oYXJn
cywgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBjZW50ZXJYLCBjZW50ZXJZ
KTsKKyAgICAgICAgaWYgKCEoY2VudGVyWCAmJiBjZW50ZXJZKSkKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICByZXN1bHQtPnNldEZpcnN0WChjZW50ZXJYKTsKKyAgICAgICAg
cmVzdWx0LT5zZXRGaXJzdFkoY2VudGVyWSk7CisgICAgICAgIC8vIFJpZ2h0IG5vdywgQ1NTIHJh
ZGlhbCBncmFkaWVudHMgaGF2ZSB0aGUgc2FtZSBzdGFydCBhbmQgZW5kIGNlbnRlcnMuCisgICAg
ICAgIHJlc3VsdC0+c2V0U2Vjb25kWChjZW50ZXJYKTsKKyAgICAgICAgcmVzdWx0LT5zZXRTZWNv
bmRZKGNlbnRlclkpOworICAgIH0KKworICAgIGlmICgoc2hhcGUgfHwgc2l6ZUtleXdvcmQgfHwg
aG9yaXpvbnRhbFNpemUgfHwgY2VudGVyWCB8fCBjZW50ZXJZKSAmJiAhY29uc3VtZUNvbW1hSW5j
bHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYg
KCFjb25zdW1lR3JhZGllbnRDb2xvclN0b3BzKGFyZ3MsIGNzc1BhcnNlck1vZGUsIHJlc3VsdCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRp
YyBDU1NWYWx1ZSogY29uc3VtZUxpbmVhckdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFy
Z3MsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0
aW5nLCBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlKQoreworICAgIENTU0xpbmVhckdyYWRp
ZW50VmFsdWUqIHJlc3VsdCA9IENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRp
bmcsIGdyYWRpZW50VHlwZSk7CisKKyAgICBib29sIGV4cGVjdENvbW1hID0gdHJ1ZTsKKyAgICBD
U1NQcmltaXRpdmVWYWx1ZSogYW5nbGUgPSBjb25zdW1lQW5nbGUoYXJncyk7CisgICAgaWYgKGFu
Z2xlKSB7CisgICAgICAgIHJlc3VsdC0+c2V0QW5nbGUoYW5nbGUpOworICAgIH0gZWxzZSBpZiAo
Z3JhZGllbnRUeXBlID09IENTU1ByZWZpeGVkTGluZWFyR3JhZGllbnQgfHwgY29uc3VtZUlkZW50
PENTU1ZhbHVlVG8+KGFyZ3MpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBlbmRYID0g
Y29uc3VtZUlkZW50PENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodD4oYXJncyk7CisgICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBlbmRZID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQm90dG9tLCBD
U1NWYWx1ZVRvcD4oYXJncyk7CisgICAgICAgIGlmICghZW5kWCAmJiAhZW5kWSkgeworICAgICAg
ICAgICAgaWYgKGdyYWRpZW50VHlwZSA9PSBDU1NMaW5lYXJHcmFkaWVudCkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGVuZFkgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVRvcCk7CisgICAgICAgICAgICBleHBlY3RDb21t
YSA9IGZhbHNlOworICAgICAgICB9IGVsc2UgaWYgKCFlbmRYKSB7CisgICAgICAgICAgICBlbmRY
ID0gY29uc3VtZUlkZW50PENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodD4oYXJncyk7CisgICAg
ICAgIH0KKworICAgICAgICByZXN1bHQtPnNldEZpcnN0WChlbmRYKTsKKyAgICAgICAgcmVzdWx0
LT5zZXRGaXJzdFkoZW5kWSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZXhwZWN0Q29tbWEgPSBm
YWxzZTsKKyAgICB9CisKKyAgICBpZiAoZXhwZWN0Q29tbWEgJiYgIWNvbnN1bWVDb21tYUluY2x1
ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICgh
Y29uc3VtZUdyYWRpZW50Q29sb3JTdG9wcyhhcmdzLCBjc3NQYXJzZXJNb2RlLCByZXN1bHQpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitDU1NWYWx1
ZSogY29uc3VtZUltYWdlT3JOb25lKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJz
ZXJDb250ZXh0IGNvbnRleHQpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1Zh
bHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJu
IGNvbnN1bWVJbWFnZShyYW5nZSwgY29udGV4dCk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29u
c3VtZUNyb3NzRmFkZShDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJDb250ZXh0
IGNvbnRleHQpCit7CisgICAgQ1NTVmFsdWUqIGZyb21JbWFnZVZhbHVlID0gY29uc3VtZUltYWdl
T3JOb25lKGFyZ3MsIGNvbnRleHQpOworICAgIGlmICghZnJvbUltYWdlVmFsdWUgfHwgIWNvbnN1
bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIENTU1ZhbHVlKiB0b0ltYWdlVmFsdWUgPSBjb25zdW1lSW1hZ2VPck5vbmUoYXJncywg
Y29udGV4dCk7CisgICAgaWYgKCF0b0ltYWdlVmFsdWUgfHwgIWNvbnN1bWVDb21tYUluY2x1ZGlu
Z1doaXRlc3BhY2UoYXJncykpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHBlcmNlbnRhZ2UgPSBudWxscHRyOworICAgIGNvbnN0IENTU1BhcnNlclRv
a2VuJiBwZXJjZW50YWdlQXJnID0gYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOwor
ICAgIGlmIChwZXJjZW50YWdlQXJnLnR5cGUoKSA9PSBQZXJjZW50YWdlVG9rZW4pCisgICAgICAg
IHBlcmNlbnRhZ2UgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGNsYW1wVG88ZG91YmxlPihw
ZXJjZW50YWdlQXJnLm51bWVyaWNWYWx1ZSgpIC8gMTAwLCAwLCAxKSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlOjpOdW1iZXIpOworICAgIGVsc2UgaWYgKHBlcmNlbnRhZ2VBcmcudHlwZSgp
ID09IE51bWJlclRva2VuKQorICAgICAgICBwZXJjZW50YWdlID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShjbGFtcFRvPGRvdWJsZT4ocGVyY2VudGFnZUFyZy5udW1lcmljVmFsdWUoKSwgMCwg
MSksIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyKTsKKworICAgIGlmICghcGVy
Y2VudGFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIENTU0Nyb3NzZmFk
ZVZhbHVlOjpjcmVhdGUoZnJvbUltYWdlVmFsdWUsIHRvSW1hZ2VWYWx1ZSwgcGVyY2VudGFnZSk7
Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVBhaW50KENTU1BhcnNlclRva2VuUmFuZ2Um
IGFyZ3MsIENTU1BhcnNlckNvbnRleHQgY29udGV4dCkKK3sKKyAgICBEQ0hFQ0soUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6Y3NzUGFpbnRBUElFbmFibGVkKCkpOworCisgICAgQ1NTQ3VzdG9tSWRl
bnRWYWx1ZSogbmFtZSA9IGNvbnN1bWVDdXN0b21JZGVudChhcmdzKTsKKyAgICBpZiAoIW5hbWUp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIENTU1BhaW50VmFsdWU6OmNy
ZWF0ZShuYW1lKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lR2VuZXJhdGVkSW1hZ2Uo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlckNvbnRleHQgY29udGV4dCkKK3sK
KyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKTsKKyAgICBDU1NQ
YXJzZXJUb2tlblJhbmdlIHJhbmdlQ29weSA9IHJhbmdlOworICAgIENTU1BhcnNlclRva2VuUmFu
Z2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZUNvcHkpOworICAgIENTU1ZhbHVlKiByZXN1
bHQgPSBudWxscHRyOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZVJhZGlhbEdyYWRpZW50KSB7Cisg
ICAgICAgIHJlc3VsdCA9IGNvbnN1bWVSYWRpYWxHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUo
KSwgTm9uUmVwZWF0aW5nKTsKKyAgICB9IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlUmVwZWF0aW5n
UmFkaWFsR3JhZGllbnQpIHsKKyAgICAgICAgcmVzdWx0ID0gY29uc3VtZVJhZGlhbEdyYWRpZW50
KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBSZXBlYXRpbmcpOworICAgIH0gZWxzZSBpZiAoaWQgPT0g
Q1NTVmFsdWVXZWJraXRMaW5lYXJHcmFkaWVudCkgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgc2VuZCBhIGRlcHJlY2F0aW9uIG1lc3NhZ2UuCisgICAgICAgIGlmIChjb250ZXh0LnVz
ZUNvdW50ZXIoKSkKKyAgICAgICAgICAgIGNvbnRleHQudXNlQ291bnRlcigpLT5jb3VudChVc2VD
b3VudGVyOjpEZXByZWNhdGVkV2ViS2l0TGluZWFyR3JhZGllbnQpOworICAgICAgICByZXN1bHQg
PSBjb25zdW1lTGluZWFyR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCksIE5vblJlcGVhdGlu
ZywgQ1NTUHJlZml4ZWRMaW5lYXJHcmFkaWVudCk7CisgICAgfSBlbHNlIGlmIChpZCA9PSBDU1NW
YWx1ZVdlYmtpdFJlcGVhdGluZ0xpbmVhckdyYWRpZW50KSB7CisgICAgICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCBzZW5kIGEgZGVwcmVjYXRpb24gbWVzc2FnZS4KKyAgICAgICAgaWYgKGNvbnRl
eHQudXNlQ291bnRlcigpKQorICAgICAgICAgICAgY29udGV4dC51c2VDb3VudGVyKCktPmNvdW50
KFVzZUNvdW50ZXI6OkRlcHJlY2F0ZWRXZWJLaXRSZXBlYXRpbmdMaW5lYXJHcmFkaWVudCk7Cisg
ICAgICAgIHJlc3VsdCA9IGNvbnN1bWVMaW5lYXJHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUo
KSwgUmVwZWF0aW5nLCBDU1NQcmVmaXhlZExpbmVhckdyYWRpZW50KTsKKyAgICB9IGVsc2UgaWYg
KGlkID09IENTU1ZhbHVlUmVwZWF0aW5nTGluZWFyR3JhZGllbnQpIHsKKyAgICAgICAgcmVzdWx0
ID0gY29uc3VtZUxpbmVhckdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBSZXBlYXRpbmcs
IENTU0xpbmVhckdyYWRpZW50KTsKKyAgICB9IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlTGluZWFy
R3JhZGllbnQpIHsKKyAgICAgICAgcmVzdWx0ID0gY29uc3VtZUxpbmVhckdyYWRpZW50KGFyZ3Ms
IGNvbnRleHQubW9kZSgpLCBOb25SZXBlYXRpbmcsIENTU0xpbmVhckdyYWRpZW50KTsKKyAgICB9
IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0R3JhZGllbnQpIHsKKyAgICAgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIHNlbmQgYSBkZXByZWNhdGlvbiBtZXNzYWdlLgorICAgICAgICBpZiAo
Y29udGV4dC51c2VDb3VudGVyKCkpCisgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+
Y291bnQoVXNlQ291bnRlcjo6RGVwcmVjYXRlZFdlYktpdEdyYWRpZW50KTsKKyAgICAgICAgcmVz
dWx0ID0gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUoKSk7Cisg
ICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdFJhZGlhbEdyYWRpZW50KSB7CisgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBzZW5kIGEgZGVwcmVjYXRpb24gbWVzc2FnZS4KKyAg
ICAgICAgaWYgKGNvbnRleHQudXNlQ291bnRlcigpKQorICAgICAgICAgICAgY29udGV4dC51c2VD
b3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkRlcHJlY2F0ZWRXZWJLaXRSYWRpYWxHcmFkaWVu
dCk7CisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQoYXJn
cywgY29udGV4dC5tb2RlKCksIE5vblJlcGVhdGluZyk7CisgICAgfSBlbHNlIGlmIChpZCA9PSBD
U1NWYWx1ZVdlYmtpdFJlcGVhdGluZ1JhZGlhbEdyYWRpZW50KSB7CisgICAgICAgIGlmIChjb250
ZXh0LnVzZUNvdW50ZXIoKSkKKyAgICAgICAgICAgIGNvbnRleHQudXNlQ291bnRlcigpLT5jb3Vu
dChVc2VDb3VudGVyOjpEZXByZWNhdGVkV2ViS2l0UmVwZWF0aW5nUmFkaWFsR3JhZGllbnQpOwor
ICAgICAgICByZXN1bHQgPSBjb25zdW1lRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KGFyZ3MsIGNv
bnRleHQubW9kZSgpLCBSZXBlYXRpbmcpOworICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVX
ZWJraXRDcm9zc0ZhZGUpIHsKKyAgICAgICAgcmVzdWx0ID0gY29uc3VtZUNyb3NzRmFkZShhcmdz
LCBjb250ZXh0KTsKKyAgICB9IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlUGFpbnQpIHsKKyAgICAg
ICAgcmVzdWx0ID0gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzUGFpbnRBUElFbmFibGVkKCkg
PyBjb25zdW1lUGFpbnQoYXJncywgY29udGV4dCkgOiBudWxscHRyOworICAgIH0KKyAgICBpZiAo
IXJlc3VsdCB8fCAhYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
YW5nZSA9IHJhbmdlQ29weTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgQ1NTVmFs
dWUqIGNyZWF0ZUNTU0ltYWdlVmFsdWVXaXRoUmVmZXJyZXIoY29uc3QgQXRvbWljU3RyaW5nJiBy
YXdWYWx1ZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBDU1NWYWx1
ZSogaW1hZ2VWYWx1ZSA9IENTU0ltYWdlVmFsdWU6OmNyZWF0ZShyYXdWYWx1ZSwgY29udGV4dC5j
b21wbGV0ZVVSTChyYXdWYWx1ZSkpOworICAgIHRvQ1NTSW1hZ2VWYWx1ZShpbWFnZVZhbHVlKS0+
c2V0UmVmZXJyZXIoY29udGV4dC5yZWZlcnJlcigpKTsKKyAgICByZXR1cm4gaW1hZ2VWYWx1ZTsK
K30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lSW1hZ2VTZXQoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ1NTUGFy
c2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSByYW5nZTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdl
IGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2VDb3B5KTsKKyAgICBDU1NJbWFnZVNldFZhbHVl
KiBpbWFnZVNldCA9IENTU0ltYWdlU2V0VmFsdWU6OmNyZWF0ZSgpOworICAgIGRvIHsKKyAgICAg
ICAgQXRvbWljU3RyaW5nIHVybFZhbHVlID0gY29uc3VtZVVybEFzU3RyaW5nVmlldyhhcmdzKS50
b0F0b21pY1N0cmluZygpOworICAgICAgICBpZiAodXJsVmFsdWUuaXNOdWxsKCkpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBDU1NWYWx1ZSogaW1hZ2UgPSBjcmVhdGVD
U1NJbWFnZVZhbHVlV2l0aFJlZmVycmVyKHVybFZhbHVlLCBjb250ZXh0KTsKKyAgICAgICAgaW1h
Z2VTZXQtPmFwcGVuZCgqaW1hZ2UpOworCisgICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0
b2tlbiA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgaWYgKHRv
a2VuLnR5cGUoKSAhPSBEaW1lbnNpb25Ub2tlbikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICBpZiAodG9rZW4udmFsdWUoKSAhPSAieCIpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgRENIRUNLKHRva2VuLnVuaXRUeXBlKCkgPT0gQ1NTUHJpbWl0aXZl
VmFsdWU6OlVuaXRUeXBlOjpVbmtub3duKTsKKyAgICAgICAgZG91YmxlIGltYWdlU2NhbGVGYWN0
b3IgPSB0b2tlbi5udW1lcmljVmFsdWUoKTsKKyAgICAgICAgaWYgKGltYWdlU2NhbGVGYWN0b3Ig
PD0gMCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBpbWFnZVNldC0+YXBw
ZW5kKCpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGltYWdlU2NhbGVGYWN0b3IsIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyKSk7CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1h
SW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSk7CisgICAgaWYgKCFhcmdzLmF0RW5kKCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJhbmdlID0gcmFuZ2VDb3B5OworICAgIHJldHVybiBp
bWFnZVNldDsKK30KKworc3RhdGljIGJvb2wgaXNHZW5lcmF0ZWRJbWFnZShDU1NWYWx1ZUlEIGlk
KQoreworICAgIHJldHVybiBpZCA9PSBDU1NWYWx1ZUxpbmVhckdyYWRpZW50IHx8IGlkID09IENT
U1ZhbHVlUmFkaWFsR3JhZGllbnQKKyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVSZXBlYXRpbmdM
aW5lYXJHcmFkaWVudCB8fCBpZCA9PSBDU1NWYWx1ZVJlcGVhdGluZ1JhZGlhbEdyYWRpZW50Cisg
ICAgICAgIHx8IGlkID09IENTU1ZhbHVlV2Via2l0TGluZWFyR3JhZGllbnQgfHwgaWQgPT0gQ1NT
VmFsdWVXZWJraXRSYWRpYWxHcmFkaWVudAorICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtp
dFJlcGVhdGluZ0xpbmVhckdyYWRpZW50IHx8IGlkID09IENTU1ZhbHVlV2Via2l0UmVwZWF0aW5n
UmFkaWFsR3JhZGllbnQKKyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRHcmFkaWVudCB8
fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdENyb3NzRmFkZSB8fCBpZCA9PSBDU1NWYWx1ZVBhaW50Owor
fQorCitDU1NWYWx1ZSogY29uc3VtZUltYWdlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBD
U1NQYXJzZXJDb250ZXh0IGNvbnRleHQsIENvbnN1bWVHZW5lcmF0ZWRJbWFnZSBnZW5lcmF0ZWRJ
bWFnZSkKK3sKKyAgICBBdG9taWNTdHJpbmcgdXJpID0gY29uc3VtZVVybEFzU3RyaW5nVmlldyhy
YW5nZSkudG9BdG9taWNTdHJpbmcoKTsKKyAgICBpZiAoIXVyaS5pc051bGwoKSkKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZUNTU0ltYWdlVmFsdWVXaXRoUmVmZXJyZXIodXJpLCBjb250ZXh0KTsKKyAg
ICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBGdW5jdGlvblRva2VuKSB7CisgICAgICAgIENT
U1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpOworICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVXZWJraXRJbWFnZVNldCkKKyAgICAgICAgICAgIHJldHVybiBjb25zdW1lSW1h
Z2VTZXQocmFuZ2UsIGNvbnRleHQpOworICAgICAgICBpZiAoZ2VuZXJhdGVkSW1hZ2UgPT0gQ29u
c3VtZUdlbmVyYXRlZEltYWdlOjpBbGxvdyAmJiBpc0dlbmVyYXRlZEltYWdlKGlkKSkKKyAgICAg
ICAgICAgIHJldHVybiBjb25zdW1lR2VuZXJhdGVkSW1hZ2UocmFuZ2UsIGNvbnRleHQpOworICAg
IH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfSAvLyBuYW1lc3BhY2UgQ1NTUHJvcGVydHlQ
YXJzZXJIZWxwZXJzCisqLworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBh
cnNlckhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyMSBAQAorLy8gQ29weXJp
Z2h0IDIwMTYgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLwor
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmli
dXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
Ky8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworI2lmbmRlZiBDU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnNfaAorI2RlZmluZSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnNfaAor
CisvLyBGSVhNRS1ORVdQQVJTRVIgI2luY2x1ZGUgIkNTU0N1c3RvbUlkZW50VmFsdWUuaCIKKyNp
bmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW5SYW5nZS5o
IgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAiTGVuZ3RoLmgiIC8v
IEZvciBWYWx1ZVJhbmdlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTU3RyaW5n
VmFsdWU7CitjbGFzcyBDU1NVUklWYWx1ZTsKK2NsYXNzIENTU1ZhbHVlUGFpcjsKKworLy8gV2hl
biB0aGVzZSBmdW5jdGlvbnMgYXJlIHN1Y2Nlc3NmdWwsIHRoZXkgd2lsbCBjb25zdW1lIGFsbCB0
aGUgcmVsZXZhbnQKKy8vIHRva2VucyBmcm9tIHRoZSByYW5nZSBhbmQgYWxzbyBjb25zdW1lIGFu
eSB3aGl0ZXNwYWNlIHdoaWNoIGZvbGxvd3MuIFdoZW4KKy8vIHRoZSBzdGFydCBvZiB0aGUgcmFu
Z2UgZG9lc24ndCBtYXRjaCB0aGUgdHlwZSB3ZSdyZSBsb29raW5nIGZvciwgdGhlIHJhbmdlCisv
LyB3aWxsIG5vdCBiZSBtb2RpZmllZC4KK25hbWVzcGFjZSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBl
cnMgeworCisvLyBUT0RPKHRpbWxvaCk6IFRoZXNlIHNob3VsZCBwcm9iYWJseSBqdXN0IGJlIGNv
bnN1bWVDb21tYSBhbmQgY29uc3VtZVNsYXNoLgorYm9vbCBjb25zdW1lQ29tbWFJbmNsdWRpbmdX
aGl0ZXNwYWNlKENTU1BhcnNlclRva2VuUmFuZ2UmKTsKK2Jvb2wgY29uc3VtZVNsYXNoSW5jbHVk
aW5nV2hpdGVzcGFjZShDU1NQYXJzZXJUb2tlblJhbmdlJik7CisvLyBjb25zdW1lRnVuY3Rpb24g
ZXhwZWN0cyB0aGUgcmFuZ2Ugc3RhcnRzIHdpdGggYSBGdW5jdGlvblRva2VuLgorQ1NTUGFyc2Vy
VG9rZW5SYW5nZSBjb25zdW1lRnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworCitlbnVt
IGNsYXNzIFVuaXRsZXNzUXVpcmsgeworICAgIEFsbG93LAorICAgIEZvcmJpZAorfTsKKworQ1NT
UHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVJbnRlZ2VyKENTU1BhcnNlclRva2VuUmFuZ2UmLCBkb3Vi
bGUgbWluaW11bVZhbHVlID0gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpOwor
Q1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVQb3NpdGl2ZUludGVnZXIoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYpOworYm9vbCBjb25zdW1lTnVtYmVyUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmLCBkb3Vi
bGUmIHJlc3VsdCk7CitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZU51bWJlcihDU1NQYXJzZXJU
b2tlblJhbmdlJiwgVmFsdWVSYW5nZSk7CitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUxlbmd0
aChDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVmFsdWVSYW5nZSwgVW5pdGxl
c3NRdWlyayA9IFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CitDU1NQcmltaXRpdmVWYWx1ZSogY29u
c3VtZVBlcmNlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIFZhbHVlUmFuZ2UpOworQ1NTUHJpbWl0
aXZlVmFsdWUqIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENT
U1BhcnNlck1vZGUsIFZhbHVlUmFuZ2UsIFVuaXRsZXNzUXVpcmsgPSBVbml0bGVzc1F1aXJrOjpG
b3JiaWQpOworQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVBbmdsZShDU1NQYXJzZXJUb2tlblJh
bmdlJik7CitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZVRpbWUoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYsIFZhbHVlUmFuZ2UpOworCitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUlkZW50KENTU1Bh
cnNlclRva2VuUmFuZ2UmKTsKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lSWRlbnRSYW5nZShD
U1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTVmFsdWVJRCBsb3dlciwgQ1NTVmFsdWVJRCB1cHBlcik7
Cit0ZW1wbGF0ZTxDU1NWYWx1ZUlELCBDU1NWYWx1ZUlELi4uPiBpbmxpbmUgYm9vbCBpZGVudE1h
dGNoZXMoQ1NTVmFsdWVJRCBpZCk7Cit0ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIGFsbG93ZWRJZGVu
dHM+IENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lSWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYp
OworCisvLyBGSVhNRS1ORVdQQVJTRVIgQ1NTQ3VzdG9tSWRlbnRWYWx1ZSogY29uc3VtZUN1c3Rv
bUlkZW50KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKK0NTU1N0cmluZ1ZhbHVlKiBjb25zdW1lU3Ry
aW5nKENTU1BhcnNlclRva2VuUmFuZ2UmKTsKK1N0cmluZ1ZpZXcgY29uc3VtZVVybEFzU3RyaW5n
VmlldyhDU1NQYXJzZXJUb2tlblJhbmdlJik7CitDU1NVUklWYWx1ZSogY29uc3VtZVVybChDU1NQ
YXJzZXJUb2tlblJhbmdlJik7CisKK0NTU1ZhbHVlKiBjb25zdW1lQ29sb3IoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIGJvb2wgYWNjZXB0UXVpcmt5Q29sb3JzID0gZmFsc2Up
OworCitDU1NWYWx1ZVBhaXIqIGNvbnN1bWVQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiwg
Q1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayk7Citib29sIGNvbnN1bWVQb3NpdGlvbihDU1NQ
YXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyaywgQ1NTVmFsdWUq
JiByZXN1bHRYLCBDU1NWYWx1ZSomIHJlc3VsdFkpOworYm9vbCBjb25zdW1lT25lT3JUd29WYWx1
ZWRQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NR
dWlyaywgQ1NTVmFsdWUqJiByZXN1bHRYLCBDU1NWYWx1ZSomIHJlc3VsdFkpOworCitlbnVtIGNs
YXNzIENvbnN1bWVHZW5lcmF0ZWRJbWFnZSB7CisgICAgQWxsb3csCisgICAgRm9yYmlkCit9Owor
CitDU1NWYWx1ZSogY29uc3VtZUltYWdlKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJD
b250ZXh0LCBDb25zdW1lR2VuZXJhdGVkSW1hZ2UgPSBDb25zdW1lR2VuZXJhdGVkSW1hZ2U6OkFs
bG93KTsKK0NTU1ZhbHVlKiBjb25zdW1lSW1hZ2VPck5vbmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYs
IENTU1BhcnNlckNvbnRleHQpOworCisvLyBUZW1wbGF0ZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGF0
IHRoZSBib3R0b20gb2YgdGhlIGZpbGUgZm9yIHJlYWRhYmlsaXR5LgorCit0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBlbXB0eUJhc2VDYXNlPiBpbmxpbmUgYm9vbCBpZGVudE1hdGNoZXMoQ1NTVmFsdWVJ
RCkgeyByZXR1cm4gZmFsc2U7IH0KK3RlbXBsYXRlPENTU1ZhbHVlSUQgaGVhZCwgQ1NTVmFsdWVJ
RC4uLiB0YWlsPiBpbmxpbmUgYm9vbCBpZGVudE1hdGNoZXMoQ1NTVmFsdWVJRCBpZCkKK3sKKyAg
ICByZXR1cm4gaWQgPT0gaGVhZCB8fCBpZGVudE1hdGNoZXM8dGFpbC4uLj4oaWQpOworfQorCisv
LyBGSVhNRS1ORVdQQVJTRVIgLSBjb252ZXJ0ZWQgdG8gYSBSZWZQdHIgcmV0dXJuIHR5cGUgZnJv
bSBhIHJhdyBwdHIuCit0ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIG5hbWVzPiBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IGNvbnN1bWVJZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sK
KyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBJZGVudFRva2VuIHx8ICFpZGVudE1hdGNo
ZXM8bmFtZXMuLi4+KHJhbmdlLnBlZWsoKS5pZCgpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKHJhbmdlLmNv
bnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9v
bCBpc0NTU1dpZGVLZXl3b3JkKGNvbnN0IENTU1ZhbHVlSUQmIGlkKQoreworICAgIHJldHVybiBp
ZCA9PSBDU1NWYWx1ZUluaXRpYWwgfHwgaWQgPT0gQ1NTVmFsdWVJbmhlcml0IHx8IGlkID09IENT
U1ZhbHVlVW5zZXQgfHwgaWQgPT0gQ1NTVmFsdWVEZWZhdWx0OworfQorCit9IC8vIG5hbWVzcGFj
ZSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsODg4IEBACisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
Ky8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLwor
Ly8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNTU1Rva2VuaXplci5oIgorCisjaW5j
bHVkZSAiQ1NTUGFyc2VySWRpb21zLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFw
cGVyLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIgorI2luY2x1ZGUgIkNTU1Rv
a2VuaXplcklucHV0U3RyZWFtLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgorI2lu
Y2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworQ1NTVG9rZW5pemVyOjpTY29wZTo6U2NvcGUoY29uc3QgU3RyaW5nJiBzdHJpbmcpCisg
ICAgOiBtX3N0cmluZyhzdHJpbmcpCit7CisgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBzcGVjLCB3
ZSBzaG91bGQgcGVyZm9ybSBwcmVwcm9jZXNzaW5nIGhlcmUuCisgICAgLy8gU2VlOiBodHRwOi8v
ZGV2LnczLm9yZy9jc3N3Zy9jc3Mtc3ludGF4LyNpbnB1dC1wcmVwcm9jZXNzaW5nCisgICAgLy8K
KyAgICAvLyBIb3dldmVyLCB3ZSBjYW4gc2tpcCB0aGlzIHN0ZXAgc2luY2U6CisgICAgLy8gKiBX
ZSdyZSB1c2luZyBIVE1MIHNwYWNlcyAod2hpY2ggYWNjZXB0IFxyIGFuZCBcZiBhcyBhIHZhbGlk
IHdoaXRlIHNwYWNlKQorICAgIC8vICogRG8gbm90IGNvdW50IHdoaXRlIHNwYWNlcworICAgIC8v
ICogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW06Om5leHRJbnB1dENoYXIoKSByZXBsYWNlcyBOVUxM
cyBmb3IgcmVwbGFjZW1lbnQgY2hhcmFjdGVycworCisgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRvIGF2b2lkIHJlc2l6aW5nIHdlIGVyciBvbiB0
aGUgc2lkZSBvZiByZXNlcnZpbmcgdG9vIG11Y2ggc3BhY2UuCisgICAgLy8gTW9zdCBzdHJpbmdz
IHdlIHRva2VuaXplIGhhdmUgYWJvdXQgMy41IHRvIDUgY2hhcmFjdGVycyBwZXIgdG9rZW4uCisg
ICAgbV90b2tlbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzdHJpbmcubGVuZ3RoKCkgLyAzKTsK
KworICAgIENTU1Rva2VuaXplcklucHV0U3RyZWFtIGlucHV0KHN0cmluZyk7CisgICAgQ1NTVG9r
ZW5pemVyIHRva2VuaXplcihpbnB1dCwgKnRoaXMpOworICAgIHdoaWxlICh0cnVlKSB7CisgICAg
ICAgIENTU1BhcnNlclRva2VuIHRva2VuID0gdG9rZW5pemVyLm5leHRUb2tlbigpOworICAgICAg
ICBpZiAodG9rZW4udHlwZSgpID09IENvbW1lbnRUb2tlbikKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBpZiAodG9rZW4udHlwZSgpID09IEVPRlRva2VuKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBtX3Rva2Vucy5hcHBlbmQodG9rZW4pOworICAgIH0KK30KKworQ1NTVG9r
ZW5pemVyOjpTY29wZTo6U2NvcGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIENTU1BhcnNlck9ic2Vy
dmVyV3JhcHBlciYgd3JhcHBlcikKKyAgICA6IG1fc3RyaW5nKHN0cmluZykKK3sKKyAgICBpZiAo
c3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ1NTVG9rZW5pemVySW5w
dXRTdHJlYW0gaW5wdXQoc3RyaW5nKTsKKyAgICBDU1NUb2tlbml6ZXIgdG9rZW5pemVyKGlucHV0
LCAqdGhpcyk7CisKKyAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOworICAgIHdoaWxlICh0cnVlKSB7
CisgICAgICAgIENTU1BhcnNlclRva2VuIHRva2VuID0gdG9rZW5pemVyLm5leHRUb2tlbigpOwor
ICAgICAgICBpZiAodG9rZW4udHlwZSgpID09IEVPRlRva2VuKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGlmICh0b2tlbi50eXBlKCkgPT0gQ29tbWVudFRva2VuKQorICAgICAgICAgICAg
d3JhcHBlci5hZGRDb21tZW50KG9mZnNldCwgaW5wdXQub2Zmc2V0KCksIG1fdG9rZW5zLnNpemUo
KSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbV90b2tlbnMuYXBwZW5kKHRva2VuKTsK
KyAgICAgICAgICAgIHdyYXBwZXIuYWRkVG9rZW4ob2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAg
ICBvZmZzZXQgPSBpbnB1dC5vZmZzZXQoKTsKKyAgICB9CisKKyAgICB3cmFwcGVyLmFkZFRva2Vu
KG9mZnNldCk7CisgICAgd3JhcHBlci5maW5hbGl6ZUNvbnN0cnVjdGlvbihtX3Rva2Vucy5iZWdp
bigpKTsKK30KKworQ1NTUGFyc2VyVG9rZW5SYW5nZSBDU1NUb2tlbml6ZXI6OlNjb3BlOjp0b2tl
blJhbmdlKCkKK3sKKyAgICByZXR1cm4gbV90b2tlbnM7Cit9CisKK3Vuc2lnbmVkIENTU1Rva2Vu
aXplcjo6U2NvcGU6OnRva2VuQ291bnQoKQoreworICAgIHJldHVybiBtX3Rva2Vucy5zaXplKCk7
Cit9CisKK3N0YXRpYyBib29sIGlzTmV3TGluZShVQ2hhciBjYykKK3sKKyAgICAvLyBXZSBjaGVj
ayBcciBhbmQgXGYgaGVyZSwgc2luY2Ugd2UgaGF2ZSBubyBwcmVwcm9jZXNzaW5nIHN0YWdlCisg
ICAgcmV0dXJuIChjYyA9PSAnXHInIHx8IGNjID09ICdcbicgfHwgY2MgPT0gJ1xmJyk7Cit9CisK
Ky8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1zeW50YXgvI2NoZWNrLWlmLXR3by1jb2Rl
LXBvaW50cy1hcmUtYS12YWxpZC1lc2NhcGUKK3N0YXRpYyBib29sIHR3b0NoYXJzQXJlVmFsaWRF
c2NhcGUoVUNoYXIgZmlyc3QsIFVDaGFyIHNlY29uZCkKK3sKKyAgICByZXR1cm4gZmlyc3QgPT0g
J1xcJyAmJiAhaXNOZXdMaW5lKHNlY29uZCk7Cit9CisKK0NTU1Rva2VuaXplcjo6Q1NTVG9rZW5p
emVyKENTU1Rva2VuaXplcklucHV0U3RyZWFtJiBpbnB1dFN0cmVhbSwgU2NvcGUmIHNjb3BlKQor
ICAgIDogbV9pbnB1dChpbnB1dFN0cmVhbSkKKyAgICAsIG1fc2NvcGUoc2NvcGUpCit7Cit9CisK
K3ZvaWQgQ1NTVG9rZW5pemVyOjpyZWNvbnN1bWUoVUNoYXIgYykKK3sKKyAgICBtX2lucHV0LnB1
c2hCYWNrKGMpOworfQorCitVQ2hhciBDU1NUb2tlbml6ZXI6OmNvbnN1bWUoKQoreworICAgIFVD
aGFyIGN1cnJlbnQgPSBtX2lucHV0Lm5leHRJbnB1dENoYXIoKTsKKyAgICBtX2lucHV0LmFkdmFu
Y2UoKTsKKyAgICByZXR1cm4gY3VycmVudDsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5p
emVyOjp3aGl0ZVNwYWNlKFVDaGFyIC8qY2MqLykKK3sKKyAgICBtX2lucHV0LmFkdmFuY2VVbnRp
bE5vbldoaXRlc3BhY2UoKTsKKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oV2hpdGVzcGFjZVRv
a2VuKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpibG9ja1N0YXJ0KENTU1Bh
cnNlclRva2VuVHlwZSB0eXBlKQoreworICAgIG1fYmxvY2tTdGFjay5hcHBlbmQodHlwZSk7Cisg
ICAgcmV0dXJuIENTU1BhcnNlclRva2VuKHR5cGUsIENTU1BhcnNlclRva2VuOjpCbG9ja1N0YXJ0
KTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpibG9ja1N0YXJ0KENTU1BhcnNl
clRva2VuVHlwZSBibG9ja1R5cGUsIENTU1BhcnNlclRva2VuVHlwZSB0eXBlLCBTdHJpbmdWaWV3
IG5hbWUpCit7CisgICAgbV9ibG9ja1N0YWNrLmFwcGVuZChibG9ja1R5cGUpOworICAgIHJldHVy
biBDU1NQYXJzZXJUb2tlbih0eXBlLCBuYW1lLCBDU1NQYXJzZXJUb2tlbjo6QmxvY2tTdGFydCk7
Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6YmxvY2tFbmQoQ1NTUGFyc2VyVG9r
ZW5UeXBlIHR5cGUsIENTU1BhcnNlclRva2VuVHlwZSBzdGFydFR5cGUpCit7CisgICAgaWYgKCFt
X2Jsb2NrU3RhY2suaXNFbXB0eSgpICYmIG1fYmxvY2tTdGFjay5sYXN0KCkgPT0gc3RhcnRUeXBl
KSB7CisgICAgICAgIG1fYmxvY2tTdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgIHJldHVybiBD
U1NQYXJzZXJUb2tlbih0eXBlLCBDU1NQYXJzZXJUb2tlbjo6QmxvY2tFbmQpOworICAgIH0KKyAg
ICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4odHlwZSk7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rv
a2VuaXplcjo6bGVmdFBhcmVudGhlc2lzKFVDaGFyIC8qY2MqLykKK3sKKyAgICByZXR1cm4gYmxv
Y2tTdGFydChMZWZ0UGFyZW50aGVzaXNUb2tlbik7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rv
a2VuaXplcjo6cmlnaHRQYXJlbnRoZXNpcyhVQ2hhciAvKmNjKi8pCit7CisgICAgcmV0dXJuIGJs
b2NrRW5kKFJpZ2h0UGFyZW50aGVzaXNUb2tlbiwgTGVmdFBhcmVudGhlc2lzVG9rZW4pOworfQor
CitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmxlZnRCcmFja2V0KFVDaGFyIC8qY2MqLykK
K3sKKyAgICByZXR1cm4gYmxvY2tTdGFydChMZWZ0QnJhY2tldFRva2VuKTsKK30KKworQ1NTUGFy
c2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpyaWdodEJyYWNrZXQoVUNoYXIgLypjYyovKQoreworICAg
IHJldHVybiBibG9ja0VuZChSaWdodEJyYWNrZXRUb2tlbiwgTGVmdEJyYWNrZXRUb2tlbik7Cit9
CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6bGVmdEJyYWNlKFVDaGFyIC8qY2MqLykK
K3sKKyAgICByZXR1cm4gYmxvY2tTdGFydChMZWZ0QnJhY2VUb2tlbik7Cit9CisKK0NTU1BhcnNl
clRva2VuIENTU1Rva2VuaXplcjo6cmlnaHRCcmFjZShVQ2hhciAvKmNjKi8pCit7CisgICAgcmV0
dXJuIGJsb2NrRW5kKFJpZ2h0QnJhY2VUb2tlbiwgTGVmdEJyYWNlVG9rZW4pOworfQorCitDU1NQ
YXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OnBsdXNPckZ1bGxTdG9wKFVDaGFyIGNjKQoreworICAg
IGlmIChuZXh0Q2hhcnNBcmVOdW1iZXIoY2MpKSB7CisgICAgICAgIHJlY29uc3VtZShjYyk7Cisg
ICAgICAgIHJldHVybiBjb25zdW1lTnVtZXJpY1Rva2VuKCk7CisgICAgfQorICAgIHJldHVybiBD
U1NQYXJzZXJUb2tlbihEZWxpbWl0ZXJUb2tlbiwgY2MpOworfQorCitDU1NQYXJzZXJUb2tlbiBD
U1NUb2tlbml6ZXI6OmFzdGVyaXNrKFVDaGFyIGNjKQoreworICAgIEFTU0VSVF9VTlVTRUQoY2Ms
IGNjID09ICcqJyk7CisgICAgaWYgKGNvbnN1bWVJZk5leHQoJz0nKSkKKyAgICAgICAgcmV0dXJu
IENTU1BhcnNlclRva2VuKFN1YnN0cmluZ01hdGNoVG9rZW4pOworICAgIHJldHVybiBDU1NQYXJz
ZXJUb2tlbihEZWxpbWl0ZXJUb2tlbiwgJyonKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9r
ZW5pemVyOjpsZXNzVGhhbihVQ2hhciBjYykKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGNjLCBjYyA9
PSAnPCcpOworICAgIGlmIChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkgPT0gJyEn
CisgICAgICAgICYmIG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgxKSA9PSAnLScKKyAg
ICAgICAgJiYgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDIpID09ICctJykgeworICAg
ICAgICBtX2lucHV0LmFkdmFuY2UoMyk7CisgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihD
RE9Ub2tlbik7CisgICAgfQorICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihEZWxpbWl0ZXJUb2tl
biwgJzwnKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjb21tYShVQ2hhciAv
KmNjKi8pCit7CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKENvbW1hVG9rZW4pOworfQorCitD
U1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6Omh5cGhlbk1pbnVzKFVDaGFyIGNjKQoreworICAg
IGlmIChuZXh0Q2hhcnNBcmVOdW1iZXIoY2MpKSB7CisgICAgICAgIHJlY29uc3VtZShjYyk7Cisg
ICAgICAgIHJldHVybiBjb25zdW1lTnVtZXJpY1Rva2VuKCk7CisgICAgfQorICAgIGlmIChtX2lu
cHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkgPT0gJy0nCisgICAgICAgICYmIG1faW5wdXQu
cGVla1dpdGhvdXRSZXBsYWNlbWVudCgxKSA9PSAnPicpIHsKKyAgICAgICAgbV9pbnB1dC5hZHZh
bmNlKDIpOworICAgICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oQ0RDVG9rZW4pOworICAgIH0K
KyAgICBpZiAobmV4dENoYXJzQXJlSWRlbnRpZmllcihjYykpIHsKKyAgICAgICAgcmVjb25zdW1l
KGNjKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudExpa2VUb2tlbigpOworICAgIH0KKyAg
ICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oRGVsaW1pdGVyVG9rZW4sIGNjKTsKK30KKworQ1NTUGFy
c2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpzb2xpZHVzKFVDaGFyIGNjKQoreworICAgIGlmIChjb25z
dW1lSWZOZXh0KCcqJykpIHsKKyAgICAgICAgLy8gVGhlc2UgZ2V0IGlnbm9yZWQsIGJ1dCB3ZSBu
ZWVkIGEgdmFsdWUgdG8gcmV0dXJuLgorICAgICAgICBjb25zdW1lVW50aWxDb21tZW50RW5kRm91
bmQoKTsKKyAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKENvbW1lbnRUb2tlbik7CisgICAg
fQorCisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKERlbGltaXRlclRva2VuLCBjYyk7Cit9CisK
K0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6Y29sb24oVUNoYXIgLypjYyovKQoreworICAg
IHJldHVybiBDU1NQYXJzZXJUb2tlbihDb2xvblRva2VuKTsKK30KKworQ1NTUGFyc2VyVG9rZW4g
Q1NTVG9rZW5pemVyOjpzZW1pQ29sb24oVUNoYXIgLypjYyovKQoreworICAgIHJldHVybiBDU1NQ
YXJzZXJUb2tlbihTZW1pY29sb25Ub2tlbik7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2Vu
aXplcjo6aGFzaChVQ2hhciBjYykKK3sKKyAgICBVQ2hhciBuZXh0Q2hhciA9IG1faW5wdXQucGVl
a1dpdGhvdXRSZXBsYWNlbWVudCgwKTsKKyAgICBpZiAoaXNOYW1lQ29kZVBvaW50KG5leHRDaGFy
KSB8fCB0d29DaGFyc0FyZVZhbGlkRXNjYXBlKG5leHRDaGFyLCBtX2lucHV0LnBlZWtXaXRob3V0
UmVwbGFjZW1lbnQoMSkpKSB7CisgICAgICAgIEhhc2hUb2tlblR5cGUgdHlwZSA9IG5leHRDaGFy
c0FyZUlkZW50aWZpZXIoKSA/IEhhc2hUb2tlbklkIDogSGFzaFRva2VuVW5yZXN0cmljdGVkOwor
ICAgICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4odHlwZSwgY29uc3VtZU5hbWUoKSk7CisgICAg
fQorCisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKERlbGltaXRlclRva2VuLCBjYyk7Cit9CisK
K0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6Y2lyY3VtZmxleEFjY2VudChVQ2hhciBjYykK
K3sKKyAgICBBU1NFUlRfVU5VU0VEKGNjLCBjYyA9PSAnXicpOworICAgIGlmIChjb25zdW1lSWZO
ZXh0KCc9JykpCisgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihQcmVmaXhNYXRjaFRva2Vu
KTsKKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oRGVsaW1pdGVyVG9rZW4sICdeJyk7Cit9CisK
K0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6ZG9sbGFyU2lnbihVQ2hhciBjYykKK3sKKyAg
ICBBU1NFUlRfVU5VU0VEKGNjLCBjYyA9PSAnJCcpOworICAgIGlmIChjb25zdW1lSWZOZXh0KCc9
JykpCisgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihTdWZmaXhNYXRjaFRva2VuKTsKKyAg
ICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oRGVsaW1pdGVyVG9rZW4sICckJyk7Cit9CisKK0NTU1Bh
cnNlclRva2VuIENTU1Rva2VuaXplcjo6dmVydGljYWxMaW5lKFVDaGFyIGNjKQoreworICAgIEFT
U0VSVF9VTlVTRUQoY2MsIGNjID09ICd8Jyk7CisgICAgaWYgKGNvbnN1bWVJZk5leHQoJz0nKSkK
KyAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKERhc2hNYXRjaFRva2VuKTsKKyAgICBpZiAo
Y29uc3VtZUlmTmV4dCgnfCcpKQorICAgICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oQ29sdW1u
VG9rZW4pOworICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihEZWxpbWl0ZXJUb2tlbiwgJ3wnKTsK
K30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjp0aWxkZShVQ2hhciBjYykKK3sKKyAg
ICBBU1NFUlRfVU5VU0VEKGNjLCBjYyA9PSAnficpOworICAgIGlmIChjb25zdW1lSWZOZXh0KCc9
JykpCisgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihJbmNsdWRlTWF0Y2hUb2tlbik7Cisg
ICAgcmV0dXJuIENTU1BhcnNlclRva2VuKERlbGltaXRlclRva2VuLCAnficpOworfQorCitDU1NQ
YXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmNvbW1lcmNpYWxBdChVQ2hhciBjYykKK3sKKyAgICBB
U1NFUlRfVU5VU0VEKGNjLCBjYyA9PSAnQCcpOworICAgIGlmIChuZXh0Q2hhcnNBcmVJZGVudGlm
aWVyKCkpCisgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihBdEtleXdvcmRUb2tlbiwgY29u
c3VtZU5hbWUoKSk7CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKERlbGltaXRlclRva2VuLCAn
QCcpOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OnJldmVyc2VTb2xpZHVzKFVD
aGFyIGNjKQoreworICAgIGlmICh0d29DaGFyc0FyZVZhbGlkRXNjYXBlKGNjLCBtX2lucHV0LnBl
ZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkpKSB7CisgICAgICAgIHJlY29uc3VtZShjYyk7CisgICAg
ICAgIHJldHVybiBjb25zdW1lSWRlbnRMaWtlVG9rZW4oKTsKKyAgICB9CisgICAgcmV0dXJuIENT
U1BhcnNlclRva2VuKERlbGltaXRlclRva2VuLCBjYyk7Cit9CisKK0NTU1BhcnNlclRva2VuIENT
U1Rva2VuaXplcjo6YXNjaWlEaWdpdChVQ2hhciBjYykKK3sKKyAgICByZWNvbnN1bWUoY2MpOwor
ICAgIHJldHVybiBjb25zdW1lTnVtZXJpY1Rva2VuKCk7Cit9CisKK0NTU1BhcnNlclRva2VuIENT
U1Rva2VuaXplcjo6bGV0dGVyVShVQ2hhciBjYykKK3sKKyAgICBpZiAobV9pbnB1dC5wZWVrV2l0
aG91dFJlcGxhY2VtZW50KDApID09ICcrJworICAgICAgICAmJiAoaXNBU0NJSUhleERpZ2l0KG1f
aW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgxKSkKKyAgICAgICAgICAgIHx8IG1faW5wdXQu
cGVla1dpdGhvdXRSZXBsYWNlbWVudCgxKSA9PSAnPycpKSB7CisgICAgICAgIG1faW5wdXQuYWR2
YW5jZSgpOworICAgICAgICByZXR1cm4gY29uc3VtZVVuaWNvZGVSYW5nZSgpOworICAgIH0KKyAg
ICByZWNvbnN1bWUoY2MpOworICAgIHJldHVybiBjb25zdW1lSWRlbnRMaWtlVG9rZW4oKTsKK30K
KworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQoVUNoYXIgY2MpCit7Cisg
ICAgcmVjb25zdW1lKGNjKTsKKyAgICByZXR1cm4gY29uc3VtZUlkZW50TGlrZVRva2VuKCk7Cit9
CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6c3RyaW5nU3RhcnQoVUNoYXIgY2MpCit7
CisgICAgcmV0dXJuIGNvbnN1bWVTdHJpbmdUb2tlblVudGlsKGNjKTsKK30KKworQ1NTUGFyc2Vy
VG9rZW4gQ1NTVG9rZW5pemVyOjplbmRPZkZpbGUoVUNoYXIgLypjYyovKQoreworICAgIHJldHVy
biBDU1NQYXJzZXJUb2tlbihFT0ZUb2tlbik7Cit9CisKK2NvbnN0IENTU1Rva2VuaXplcjo6Q29k
ZVBvaW50IENTU1Rva2VuaXplcjo6Y29kZVBvaW50c1sxMjhdID0geworICAgICZDU1NUb2tlbml6
ZXI6OmVuZE9mRmlsZSwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisg
ICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgJkNTU1Rva2VuaXplcjo6d2hpdGVTcGFjZSwKKyAg
ICAmQ1NTVG9rZW5pemVyOjp3aGl0ZVNwYWNlLAorICAgIDAsCisgICAgJkNTU1Rva2VuaXplcjo6
d2hpdGVTcGFjZSwKKyAgICAmQ1NTVG9rZW5pemVyOjp3aGl0ZVNwYWNlLAorICAgIDAsCisgICAg
MCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAw
LAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAs
CisgICAgMCwKKyAgICAwLAorICAgICZDU1NUb2tlbml6ZXI6OndoaXRlU3BhY2UsCisgICAgMCwK
KyAgICAmQ1NTVG9rZW5pemVyOjpzdHJpbmdTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpoYXNo
LAorICAgICZDU1NUb2tlbml6ZXI6OmRvbGxhclNpZ24sCisgICAgMCwKKyAgICAwLAorICAgICZD
U1NUb2tlbml6ZXI6OnN0cmluZ1N0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6OmxlZnRQYXJlbnRo
ZXNpcywKKyAgICAmQ1NTVG9rZW5pemVyOjpyaWdodFBhcmVudGhlc2lzLAorICAgICZDU1NUb2tl
bml6ZXI6OmFzdGVyaXNrLAorICAgICZDU1NUb2tlbml6ZXI6OnBsdXNPckZ1bGxTdG9wLAorICAg
ICZDU1NUb2tlbml6ZXI6OmNvbW1hLAorICAgICZDU1NUb2tlbml6ZXI6Omh5cGhlbk1pbnVzLAor
ICAgICZDU1NUb2tlbml6ZXI6OnBsdXNPckZ1bGxTdG9wLAorICAgICZDU1NUb2tlbml6ZXI6OnNv
bGlkdXMsCisgICAgJkNTU1Rva2VuaXplcjo6YXNjaWlEaWdpdCwKKyAgICAmQ1NTVG9rZW5pemVy
Ojphc2NpaURpZ2l0LAorICAgICZDU1NUb2tlbml6ZXI6OmFzY2lpRGlnaXQsCisgICAgJkNTU1Rv
a2VuaXplcjo6YXNjaWlEaWdpdCwKKyAgICAmQ1NTVG9rZW5pemVyOjphc2NpaURpZ2l0LAorICAg
ICZDU1NUb2tlbml6ZXI6OmFzY2lpRGlnaXQsCisgICAgJkNTU1Rva2VuaXplcjo6YXNjaWlEaWdp
dCwKKyAgICAmQ1NTVG9rZW5pemVyOjphc2NpaURpZ2l0LAorICAgICZDU1NUb2tlbml6ZXI6OmFz
Y2lpRGlnaXQsCisgICAgJkNTU1Rva2VuaXplcjo6YXNjaWlEaWdpdCwKKyAgICAmQ1NTVG9rZW5p
emVyOjpjb2xvbiwKKyAgICAmQ1NTVG9rZW5pemVyOjpzZW1pQ29sb24sCisgICAgJkNTU1Rva2Vu
aXplcjo6bGVzc1RoYW4sCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgJkNTU1Rva2VuaXpl
cjo6Y29tbWVyY2lhbEF0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NT
VG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAg
ICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQs
CisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVT
dGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6
bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5p
emVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NU
b2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAg
JkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwK
KyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0
YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpu
YW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bGV0dGVyVSwKKyAgICAmQ1NTVG9rZW5pemVy
OjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tl
bml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNT
U1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6OmxlZnRCcmFja2V0LAor
ICAgICZDU1NUb2tlbml6ZXI6OnJldmVyc2VTb2xpZHVzLAorICAgICZDU1NUb2tlbml6ZXI6OnJp
Z2h0QnJhY2tldCwKKyAgICAmQ1NTVG9rZW5pemVyOjpjaXJjdW1mbGV4QWNjZW50LAorICAgICZD
U1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAwLAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVT
dGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6
bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5p
emVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NU
b2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAg
JkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwK
KyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0
YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpu
YW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6
ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rv
a2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAm
Q1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bGV0dGVyVSwKKyAg
ICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0
LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1l
U3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6
OmxlZnRCcmFjZSwKKyAgICAmQ1NTVG9rZW5pemVyOjp2ZXJ0aWNhbExpbmUsCisgICAgJkNTU1Rv
a2VuaXplcjo6cmlnaHRCcmFjZSwKKyAgICAmQ1NTVG9rZW5pemVyOjp0aWxkZSwKKyAgICAwLAor
fTsKKyNpZiAhQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05fRElTQUJMRUQKK2NvbnN0
IHVuc2lnbmVkIGNvZGVQb2ludHNOdW1iZXIgPSAxMjg7CisjZW5kaWYKKworQ1NTUGFyc2VyVG9r
ZW4gQ1NTVG9rZW5pemVyOjpuZXh0VG9rZW4oKQoreworICAgIC8vIFVubGlrZSB0aGUgSFRNTFRv
a2VuaXplciwgdGhlIENTUyBTeW50YXggc3BlYyBpcyB3cml0dGVuCisgICAgLy8gYXMgYSBzdGF0
ZWxlc3MsIChmaXhlZC1zaXplKSBsb29rLWFoZWFkIHRva2VuaXplci4KKyAgICAvLyBXZSBjb3Vs
ZCBtb3ZlIHRvIHRoZSBzdGF0ZWZ1bCBtb2RlbCBhbmQgaW5zdGVhZCBjcmVhdGUKKyAgICAvLyBz
dGF0ZXMgZm9yIGFsbCB0aGUgIm5leHQgMyBjb2RlcG9pbnRzIGFyZSBYIiBjYXNlcy4KKyAgICAv
LyBTdGF0ZS1tYWNoaW5lIHRva2VuaXplcnMgYXJlIGVhc2llciB0byB3cml0ZSB0byBoYW5kbGUK
KyAgICAvLyBpbmNyZW1lbnRhbCB0b2tlbml6YXRpb24gb2YgcGFydGlhbCBzb3VyY2VzLgorICAg
IC8vIEhvd2V2ZXIsIGZvciBub3cgd2UgZm9sbG93IHRoZSBzcGVjIGV4YWN0bHkuCisgICAgVUNo
YXIgY2MgPSBjb25zdW1lKCk7CisgICAgQ29kZVBvaW50IGNvZGVQb2ludEZ1bmMgPSAwOworCisg
ICAgaWYgKGlzQVNDSUkoY2MpKSB7CisgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKGNjIDwgY29kZVBvaW50c051bWJlcik7CisgICAgICAgIGNvZGVQb2ludEZ1bmMgPSBj
b2RlUG9pbnRzW2NjXTsKKyAgICB9IGVsc2UKKyAgICAgICAgY29kZVBvaW50RnVuYyA9ICZDU1NU
b2tlbml6ZXI6Om5hbWVTdGFydDsKKworICAgIGlmIChjb2RlUG9pbnRGdW5jKQorICAgICAgICBy
ZXR1cm4gKCh0aGlzKS0+Kihjb2RlUG9pbnRGdW5jKSkoY2MpOworICAgIHJldHVybiBDU1NQYXJz
ZXJUb2tlbihEZWxpbWl0ZXJUb2tlbiwgY2MpOworfQorCisvLyBUaGlzIG1ldGhvZCBtZXJnZXMg
dGhlIGZvbGxvd2luZyBzcGVjIHNlY3Rpb25zIGZvciBlZmZpY2llbmN5CisvLyBodHRwOi8vd3d3
LnczLm9yZy9UUi9jc3MzLXN5bnRheC8jY29uc3VtZS1hLW51bWJlcgorLy8gaHR0cDovL3d3dy53
My5vcmcvVFIvY3NzMy1zeW50YXgvI2NvbnZlcnQtYS1zdHJpbmctdG8tYS1udW1iZXIKK0NTU1Bh
cnNlclRva2VuIENTU1Rva2VuaXplcjo6Y29uc3VtZU51bWJlcigpCit7CisgICAgQVNTRVJUKG5l
eHRDaGFyc0FyZU51bWJlcigpKTsKKworICAgIE51bWVyaWNWYWx1ZVR5cGUgdHlwZSA9IEludGVn
ZXJWYWx1ZVR5cGU7CisgICAgTnVtZXJpY1NpZ24gc2lnbiA9IE5vU2lnbjsKKyAgICB1bnNpZ25l
ZCBudW1iZXJMZW5ndGggPSAwOworCisgICAgVUNoYXIgbmV4dCA9IG1faW5wdXQucGVla1dpdGhv
dXRSZXBsYWNlbWVudCgwKTsKKyAgICBpZiAobmV4dCA9PSAnKycpIHsKKyAgICAgICAgKytudW1i
ZXJMZW5ndGg7CisgICAgICAgIHNpZ24gPSBQbHVzU2lnbjsKKyAgICB9IGVsc2UgaWYgKG5leHQg
PT0gJy0nKSB7CisgICAgICAgICsrbnVtYmVyTGVuZ3RoOworICAgICAgICBzaWduID0gTWludXNT
aWduOworICAgIH0KKworICAgIG51bWJlckxlbmd0aCA9IG1faW5wdXQuc2tpcFdoaWxlUHJlZGlj
YXRlPGlzQVNDSUlEaWdpdD4obnVtYmVyTGVuZ3RoKTsKKyAgICBuZXh0ID0gbV9pbnB1dC5wZWVr
V2l0aG91dFJlcGxhY2VtZW50KG51bWJlckxlbmd0aCk7CisgICAgaWYgKG5leHQgPT0gJy4nICYm
IGlzQVNDSUlEaWdpdChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQobnVtYmVyTGVuZ3Ro
ICsgMSkpKSB7CisgICAgICAgIHR5cGUgPSBOdW1iZXJWYWx1ZVR5cGU7CisgICAgICAgIG51bWJl
ckxlbmd0aCA9IG1faW5wdXQuc2tpcFdoaWxlUHJlZGljYXRlPGlzQVNDSUlEaWdpdD4obnVtYmVy
TGVuZ3RoICsgMik7CisgICAgICAgIG5leHQgPSBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1l
bnQobnVtYmVyTGVuZ3RoKTsKKyAgICB9CisKKyAgICBpZiAobmV4dCA9PSAnRScgfHwgbmV4dCA9
PSAnZScpIHsKKyAgICAgICAgbmV4dCA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudChu
dW1iZXJMZW5ndGggKyAxKTsKKyAgICAgICAgaWYgKGlzQVNDSUlEaWdpdChuZXh0KSkgeworICAg
ICAgICAgICAgdHlwZSA9IE51bWJlclZhbHVlVHlwZTsKKyAgICAgICAgICAgIG51bWJlckxlbmd0
aCA9IG1faW5wdXQuc2tpcFdoaWxlUHJlZGljYXRlPGlzQVNDSUlEaWdpdD4obnVtYmVyTGVuZ3Ro
ICsgMSk7CisgICAgICAgIH0gZWxzZSBpZiAoKG5leHQgPT0gJysnIHx8IG5leHQgPT0gJy0nKSAm
JiBpc0FTQ0lJRGlnaXQobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KG51bWJlckxlbmd0
aCArIDIpKSkgeworICAgICAgICAgICAgdHlwZSA9IE51bWJlclZhbHVlVHlwZTsKKyAgICAgICAg
ICAgIG51bWJlckxlbmd0aCA9IG1faW5wdXQuc2tpcFdoaWxlUHJlZGljYXRlPGlzQVNDSUlEaWdp
dD4obnVtYmVyTGVuZ3RoICsgMyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBkb3VibGUgdmFs
dWUgPSBtX2lucHV0LmdldERvdWJsZSgwLCBudW1iZXJMZW5ndGgpOworICAgIG1faW5wdXQuYWR2
YW5jZShudW1iZXJMZW5ndGgpOworCisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKE51bWJlclRv
a2VuLCB2YWx1ZSwgdHlwZSwgc2lnbik7Cit9CisKKy8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2Nz
czMtc3ludGF4LyNjb25zdW1lLWEtbnVtZXJpYy10b2tlbgorQ1NTUGFyc2VyVG9rZW4gQ1NTVG9r
ZW5pemVyOjpjb25zdW1lTnVtZXJpY1Rva2VuKCkKK3sKKyAgICBDU1NQYXJzZXJUb2tlbiB0b2tl
biA9IGNvbnN1bWVOdW1iZXIoKTsKKyAgICBpZiAobmV4dENoYXJzQXJlSWRlbnRpZmllcigpKQor
ICAgICAgICB0b2tlbi5jb252ZXJ0VG9EaW1lbnNpb25XaXRoVW5pdChjb25zdW1lTmFtZSgpKTsK
KyAgICBlbHNlIGlmIChjb25zdW1lSWZOZXh0KCclJykpCisgICAgICAgIHRva2VuLmNvbnZlcnRU
b1BlcmNlbnRhZ2UoKTsKKyAgICByZXR1cm4gdG9rZW47Cit9CisKKy8vIGh0dHA6Ly9kZXYudzMu
b3JnL2Nzc3dnL2Nzcy1zeW50YXgvI2NvbnN1bWUtaWRlbnQtbGlrZS10b2tlbgorQ1NTUGFyc2Vy
VG9rZW4gQ1NTVG9rZW5pemVyOjpjb25zdW1lSWRlbnRMaWtlVG9rZW4oKQoreworICAgIFN0cmlu
Z1ZpZXcgbmFtZSA9IGNvbnN1bWVOYW1lKCk7CisgICAgaWYgKGNvbnN1bWVJZk5leHQoJygnKSkg
eworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAidXJsIikpIHsKKyAg
ICAgICAgICAgIC8vIFRoZSBzcGVjIGlzIHNsaWdodGx5IGRpZmZlcmVudCBzbyBhcyB0byBhdm9p
ZCBkcm9wcGluZyB3aGl0ZXNwYWNlCisgICAgICAgICAgICAvLyB0b2tlbnMsIGJ1dCB0aGV5IHdv
dWxkbid0IGJlIHVzZWQgYW5kIHRoaXMgaXMgZWFzaWVyLgorICAgICAgICAgICAgbV9pbnB1dC5h
ZHZhbmNlVW50aWxOb25XaGl0ZXNwYWNlKCk7CisgICAgICAgICAgICBVQ2hhciBuZXh0ID0gbV9p
bnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApOworICAgICAgICAgICAgaWYgKG5leHQgIT0g
JyInICYmIG5leHQgIT0gJ1wnJykKKyAgICAgICAgICAgICAgICByZXR1cm4gY29uc3VtZVVybFRv
a2VuKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJsb2NrU3RhcnQoTGVmdFBhcmVudGhl
c2lzVG9rZW4sIEZ1bmN0aW9uVG9rZW4sIG5hbWUpOworICAgIH0KKyAgICByZXR1cm4gQ1NTUGFy
c2VyVG9rZW4oSWRlbnRUb2tlbiwgbmFtZSk7Cit9CisKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2Nz
c3dnL2Nzcy1zeW50YXgvI2NvbnN1bWUtYS1zdHJpbmctdG9rZW4KK0NTU1BhcnNlclRva2VuIENT
U1Rva2VuaXplcjo6Y29uc3VtZVN0cmluZ1Rva2VuVW50aWwoVUNoYXIgZW5kaW5nQ29kZVBvaW50
KQoreworICAgIC8vIFN0cmluZ3Mgd2l0aG91dCBlc2NhcGVzIGdldCBoYW5kbGVkIHdpdGhvdXQg
YWxsb2NhdGlvbnMKKyAgICBmb3IgKHVuc2lnbmVkIHNpemUgPSAwOyA7IHNpemUrKykgeworICAg
ICAgICBVQ2hhciBjYyA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudChzaXplKTsKKyAg
ICAgICAgaWYgKGNjID09IGVuZGluZ0NvZGVQb2ludCkgeworICAgICAgICAgICAgdW5zaWduZWQg
c3RhcnRPZmZzZXQgPSBtX2lucHV0Lm9mZnNldCgpOworICAgICAgICAgICAgbV9pbnB1dC5hZHZh
bmNlKHNpemUgKyAxKTsKKyAgICAgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihTdHJpbmdU
b2tlbiwgbV9pbnB1dC5yYW5nZUF0KHN0YXJ0T2Zmc2V0LCBzaXplKSk7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGlzTmV3TGluZShjYykpIHsKKyAgICAgICAgICAgIG1faW5wdXQuYWR2YW5jZShz
aXplKTsKKyAgICAgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihCYWRTdHJpbmdUb2tlbik7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNjID09ICdcMCcgfHwgY2MgPT0gJ1xcJykKKyAgICAg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIFN0cmluZ0J1aWxkZXIgb3V0cHV0OworICAgIHdo
aWxlICh0cnVlKSB7CisgICAgICAgIFVDaGFyIGNjID0gY29uc3VtZSgpOworICAgICAgICBpZiAo
Y2MgPT0gZW5kaW5nQ29kZVBvaW50IHx8IGNjID09IGtFbmRPZkZpbGVNYXJrZXIpCisgICAgICAg
ICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oU3RyaW5nVG9rZW4sIHJlZ2lzdGVyU3RyaW5nKG91
dHB1dC50b1N0cmluZygpKSk7CisgICAgICAgIGlmIChpc05ld0xpbmUoY2MpKSB7CisgICAgICAg
ICAgICByZWNvbnN1bWUoY2MpOworICAgICAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKEJh
ZFN0cmluZ1Rva2VuKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2MgPT0gJ1xcJykgeworICAg
ICAgICAgICAgaWYgKG1faW5wdXQubmV4dElucHV0Q2hhcigpID09IGtFbmRPZkZpbGVNYXJrZXIp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoaXNOZXdMaW5lKG1f
aW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSkpCisgICAgICAgICAgICAgICAgY29uc3Vt
ZVNpbmdsZVdoaXRlc3BhY2VJZk5leHQoKTsgLy8gVGhpcyBoYW5kbGVzIFxyXG4gZm9yIHVzCisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZChjb25zdW1lRXNj
YXBlKCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoY2MpOwor
ICAgIH0KK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjb25zdW1lVW5pY29kZVJh
bmdlKCkKK3sKKyAgICBBU1NFUlQoaXNBU0NJSUhleERpZ2l0KG1faW5wdXQucGVla1dpdGhvdXRS
ZXBsYWNlbWVudCgwKSkgfHwgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApID09ICc/
Jyk7CisgICAgaW50IGxlbmd0aFJlbWFpbmluZyA9IDY7CisgICAgVUNoYXIzMiBzdGFydCA9IDA7
CisKKyAgICB3aGlsZSAobGVuZ3RoUmVtYWluaW5nICYmIGlzQVNDSUlIZXhEaWdpdChtX2lucHV0
LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkpKSB7CisgICAgICAgIHN0YXJ0ID0gc3RhcnQgKiAx
NiArIHRvQVNDSUlIZXhWYWx1ZShjb25zdW1lKCkpOworICAgICAgICAtLWxlbmd0aFJlbWFpbmlu
ZzsKKyAgICB9CisKKyAgICBVQ2hhcjMyIGVuZCA9IHN0YXJ0OworICAgIGlmIChsZW5ndGhSZW1h
aW5pbmcgJiYgY29uc3VtZUlmTmV4dCgnPycpKSB7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAg
IHN0YXJ0ICo9IDE2OworICAgICAgICAgICAgZW5kID0gZW5kICogMTYgKyAweEY7CisgICAgICAg
ICAgICAtLWxlbmd0aFJlbWFpbmluZzsKKyAgICAgICAgfSB3aGlsZSAobGVuZ3RoUmVtYWluaW5n
ICYmIGNvbnN1bWVJZk5leHQoJz8nKSk7CisgICAgfSBlbHNlIGlmIChtX2lucHV0LnBlZWtXaXRo
b3V0UmVwbGFjZW1lbnQoMCkgPT0gJy0nICYmIGlzQVNDSUlIZXhEaWdpdChtX2lucHV0LnBlZWtX
aXRob3V0UmVwbGFjZW1lbnQoMSkpKSB7CisgICAgICAgIG1faW5wdXQuYWR2YW5jZSgpOworICAg
ICAgICBsZW5ndGhSZW1haW5pbmcgPSA2OworICAgICAgICBlbmQgPSAwOworICAgICAgICBkbyB7
CisgICAgICAgICAgICBlbmQgPSBlbmQgKiAxNiArIHRvQVNDSUlIZXhWYWx1ZShjb25zdW1lKCkp
OworICAgICAgICAgICAgLS1sZW5ndGhSZW1haW5pbmc7CisgICAgICAgIH0gd2hpbGUgKGxlbmd0
aFJlbWFpbmluZyAmJiBpc0FTQ0lJSGV4RGlnaXQobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2Vt
ZW50KDApKSk7CisgICAgfQorCisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKFVuaWNvZGVSYW5n
ZVRva2VuLCBzdGFydCwgZW5kKTsKK30KKworLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nz
LXN5bnRheC8jbm9uLXByaW50YWJsZS1jb2RlLXBvaW50CitzdGF0aWMgYm9vbCBpc05vblByaW50
YWJsZUNvZGVQb2ludChVQ2hhciBjYykKK3sKKyAgICByZXR1cm4gKGNjID49ICdcMCcgJiYgY2Mg
PD0gJ1x4OCcpIHx8IGNjID09ICdceGInIHx8IChjYyA+PSAnXHhlJyAmJiBjYyA8PSAnXHgxZicp
IHx8IGNjID09ICdceDdmJzsKK30KKworLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXN5
bnRheC8jY29uc3VtZS11cmwtdG9rZW4KK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6Y29u
c3VtZVVybFRva2VuKCkKK3sKKyAgICBtX2lucHV0LmFkdmFuY2VVbnRpbE5vbldoaXRlc3BhY2Uo
KTsKKworICAgIC8vIFVSTCB0b2tlbnMgd2l0aG91dCBlc2NhcGVzIGdldCBoYW5kbGVkIHdpdGhv
dXQgYWxsb2NhdGlvbnMKKyAgICBmb3IgKHVuc2lnbmVkIHNpemUgPSAwOyA7IHNpemUrKykgewor
ICAgICAgICBVQ2hhciBjYyA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudChzaXplKTsK
KyAgICAgICAgaWYgKGNjID09ICcpJykgeworICAgICAgICAgICAgdW5zaWduZWQgc3RhcnRPZmZz
ZXQgPSBtX2lucHV0Lm9mZnNldCgpOworICAgICAgICAgICAgbV9pbnB1dC5hZHZhbmNlKHNpemUg
KyAxKTsKKyAgICAgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihVcmxUb2tlbiwgbV9pbnB1
dC5yYW5nZUF0KHN0YXJ0T2Zmc2V0LCBzaXplKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNj
IDw9ICcgJyB8fCBjYyA9PSAnXFwnIHx8IGNjID09ICciJyB8fCBjYyA9PSAnXCcnIHx8IGNjID09
ICcoJyB8fCBjYyA9PSAnXHg3ZicpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBT
dHJpbmdCdWlsZGVyIHJlc3VsdDsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBVQ2hhciBj
YyA9IGNvbnN1bWUoKTsKKyAgICAgICAgaWYgKGNjID09ICcpJyB8fCBjYyA9PSBrRW5kT2ZGaWxl
TWFya2VyKQorICAgICAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKFVybFRva2VuLCByZWdp
c3RlclN0cmluZyhyZXN1bHQudG9TdHJpbmcoKSkpOworCisgICAgICAgIGlmIChpc0hUTUxTcGFj
ZShjYykpIHsKKyAgICAgICAgICAgIG1faW5wdXQuYWR2YW5jZVVudGlsTm9uV2hpdGVzcGFjZSgp
OworICAgICAgICAgICAgaWYgKGNvbnN1bWVJZk5leHQoJyknKSB8fCBtX2lucHV0Lm5leHRJbnB1
dENoYXIoKSA9PSBrRW5kT2ZGaWxlTWFya2VyKQorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQ
YXJzZXJUb2tlbihVcmxUb2tlbiwgcmVnaXN0ZXJTdHJpbmcocmVzdWx0LnRvU3RyaW5nKCkpKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNjID09ICciJyB8
fCBjYyA9PSAnXCcnIHx8IGNjID09ICcoJyB8fCBpc05vblByaW50YWJsZUNvZGVQb2ludChjYykp
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoY2MgPT0gJ1xcJykgeworICAgICAg
ICAgICAgaWYgKHR3b0NoYXJzQXJlVmFsaWRFc2NhcGUoY2MsIG1faW5wdXQucGVla1dpdGhvdXRS
ZXBsYWNlbWVudCgwKSkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNvbnN1bWVF
c2NhcGUoKSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdC5hcHBlbmQoY2MpOwor
ICAgIH0KKworICAgIGNvbnN1bWVCYWRVcmxSZW1uYW50cygpOworICAgIHJldHVybiBDU1NQYXJz
ZXJUb2tlbihCYWRVcmxUb2tlbik7Cit9CisKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nz
cy1zeW50YXgvI2NvbnN1bWUtdGhlLXJlbW5hbnRzLW9mLWEtYmFkLXVybAordm9pZCBDU1NUb2tl
bml6ZXI6OmNvbnN1bWVCYWRVcmxSZW1uYW50cygpCit7CisgICAgd2hpbGUgKHRydWUpIHsKKyAg
ICAgICAgVUNoYXIgY2MgPSBjb25zdW1lKCk7CisgICAgICAgIGlmIChjYyA9PSAnKScgfHwgY2Mg
PT0ga0VuZE9mRmlsZU1hcmtlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHR3
b0NoYXJzQXJlVmFsaWRFc2NhcGUoY2MsIG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgw
KSkpCisgICAgICAgICAgICBjb25zdW1lRXNjYXBlKCk7CisgICAgfQorfQorCit2b2lkIENTU1Rv
a2VuaXplcjo6Y29uc3VtZVNpbmdsZVdoaXRlc3BhY2VJZk5leHQoKQoreworICAgIC8vIFdlIGNo
ZWNrIGZvciBcclxuIGFuZCBIVE1MIHNwYWNlcyBzaW5jZSB3ZSBkb24ndCBkbyBwcmVwcm9jZXNz
aW5nCisgICAgVUNoYXIgbmV4dCA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKTsK
KyAgICBpZiAobmV4dCA9PSAnXHInICYmIG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgx
KSA9PSAnXG4nKQorICAgICAgICBtX2lucHV0LmFkdmFuY2UoMik7CisgICAgZWxzZSBpZiAoaXNI
VE1MU3BhY2UobmV4dCkpCisgICAgICAgIG1faW5wdXQuYWR2YW5jZSgpOworfQorCit2b2lkIENT
U1Rva2VuaXplcjo6Y29uc3VtZVVudGlsQ29tbWVudEVuZEZvdW5kKCkKK3sKKyAgICBVQ2hhciBj
ID0gY29uc3VtZSgpOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGlmIChjID09IGtFbmRP
ZkZpbGVNYXJrZXIpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChjICE9ICcqJykg
eworICAgICAgICAgICAgYyA9IGNvbnN1bWUoKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CisgICAgICAgIGMgPSBjb25zdW1lKCk7CisgICAgICAgIGlmIChjID09ICcvJykKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK2Jvb2wgQ1NTVG9rZW5pemVyOjpjb25zdW1l
SWZOZXh0KFVDaGFyIGNoYXJhY3RlcikKK3sKKyAgICAvLyBTaW5jZSB3ZSdyZSBub3QgZG9pbmcg
cmVwbGFjZW1lbnQgd2UgY2FuJ3QgdGVsbCB0aGUgZGlmZmVyZW5jZSBmcm9tCisgICAgLy8gYSBO
VUwgaW4gdGhlIG1pZGRsZSBhbmQgdGhlIGtFbmRPZkZpbGVNYXJrZXIsIHNvIGNoYXJhY3RlciBt
dXN0IG5vdCBiZQorICAgIC8vIE5VTC4KKyAgICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAgICBpZiAo
bV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApID09IGNoYXJhY3RlcikgeworICAgICAg
ICBtX2lucHV0LmFkdmFuY2UoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKworLy8gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1zeW50YXgvI2Nv
bnN1bWUtYS1uYW1lCitTdHJpbmdWaWV3IENTU1Rva2VuaXplcjo6Y29uc3VtZU5hbWUoKQorewor
ICAgIC8vIE5hbWVzIHdpdGhvdXQgZXNjYXBlcyBnZXQgaGFuZGxlZCB3aXRob3V0IGFsbG9jYXRp
b25zCisgICAgZm9yICh1bnNpZ25lZCBzaXplID0gMDsgOyArK3NpemUpIHsKKyAgICAgICAgVUNo
YXIgY2MgPSBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoc2l6ZSk7CisgICAgICAgIGlm
IChpc05hbWVDb2RlUG9pbnQoY2MpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIC8v
IHBlZWtXaXRob3V0UmVwbGFjZW1lbnQgd2lsbCByZXR1cm4gTlVMIHdoZW4gd2UgaGl0IHRoZSBl
bmQgb2YgdGhlCisgICAgICAgIC8vIGlucHV0LiBJbiB0aGF0IGNhc2Ugd2Ugd2FudCB0byBzdGls
bCB1c2UgdGhlIHJhbmdlQXQoKSBmYXN0IHBhdGgKKyAgICAgICAgLy8gYmVsb3cuCisgICAgICAg
IGlmIChjYyA9PSAnXDAnICYmIG1faW5wdXQub2Zmc2V0KCkgKyBzaXplIDwgbV9pbnB1dC5sZW5n
dGgoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoY2MgPT0gJ1xcJykKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IG1faW5wdXQub2Zm
c2V0KCk7CisgICAgICAgIG1faW5wdXQuYWR2YW5jZShzaXplKTsKKyAgICAgICAgcmV0dXJuIG1f
aW5wdXQucmFuZ2VBdChzdGFydE9mZnNldCwgc2l6ZSk7CisgICAgfQorCisgICAgU3RyaW5nQnVp
bGRlciByZXN1bHQ7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgVUNoYXIgY2MgPSBjb25z
dW1lKCk7CisgICAgICAgIGlmIChpc05hbWVDb2RlUG9pbnQoY2MpKSB7CisgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKGNjKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAg
ICAgIGlmICh0d29DaGFyc0FyZVZhbGlkRXNjYXBlKGNjLCBtX2lucHV0LnBlZWtXaXRob3V0UmVw
bGFjZW1lbnQoMCkpKSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNvbnN1bWVFc2NhcGUo
KSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICByZWNvbnN1bWUo
Y2MpOworICAgICAgICByZXR1cm4gcmVnaXN0ZXJTdHJpbmcocmVzdWx0LnRvU3RyaW5nKCkpOwor
ICAgIH0KK30KKworLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXN5bnRheC8jY29uc3Vt
ZS1hbi1lc2NhcGVkLWNvZGUtcG9pbnQKK1VDaGFyMzIgQ1NTVG9rZW5pemVyOjpjb25zdW1lRXNj
YXBlKCkKK3sKKyAgICBVQ2hhciBjYyA9IGNvbnN1bWUoKTsKKyAgICBBU1NFUlQoIWlzTmV3TGlu
ZShjYykpOworICAgIGlmIChpc0FTQ0lJSGV4RGlnaXQoY2MpKSB7CisgICAgICAgIHVuc2lnbmVk
IGNvbnN1bWVkSGV4RGlnaXRzID0gMTsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBoZXhDaGFyczsK
KyAgICAgICAgaGV4Q2hhcnMuYXBwZW5kKGNjKTsKKyAgICAgICAgd2hpbGUgKGNvbnN1bWVkSGV4
RGlnaXRzIDwgNiAmJiBpc0FTQ0lJSGV4RGlnaXQobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2Vt
ZW50KDApKSkgeworICAgICAgICAgICAgY2MgPSBjb25zdW1lKCk7CisgICAgICAgICAgICBoZXhD
aGFycy5hcHBlbmQoY2MpOworICAgICAgICAgICAgY29uc3VtZWRIZXhEaWdpdHMrKzsKKyAgICAg
ICAgfTsKKyAgICAgICAgY29uc3VtZVNpbmdsZVdoaXRlc3BhY2VJZk5leHQoKTsKKyAgICAgICAg
Ym9vbCBvayA9IGZhbHNlOworICAgICAgICBVQ2hhcjMyIGNvZGVQb2ludCA9IGhleENoYXJzLnRv
U3RyaW5nKCkudG9VSW50U3RyaWN0KCZvaywgMTYpOworICAgICAgICBBU1NFUlQob2spOworICAg
ICAgICBpZiAoIWNvZGVQb2ludCB8fCAoMHhEODAwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQg
PD0gMHhERkZGKSB8fCBjb2RlUG9pbnQgPiAweDEwRkZGRikKKyAgICAgICAgICAgIHJldHVybiBy
ZXBsYWNlbWVudENoYXJhY3RlcjsKKyAgICAgICAgcmV0dXJuIGNvZGVQb2ludDsKKyAgICB9CisK
KyAgICBpZiAoY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikKKyAgICAgICAgcmV0dXJuIHJlcGxhY2Vt
ZW50Q2hhcmFjdGVyOworICAgIHJldHVybiBjYzsKK30KKworYm9vbCBDU1NUb2tlbml6ZXI6Om5l
eHRUd29DaGFyc0FyZVZhbGlkRXNjYXBlKCkKK3sKKyAgICByZXR1cm4gdHdvQ2hhcnNBcmVWYWxp
ZEVzY2FwZShtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCksIG1faW5wdXQucGVla1dp
dGhvdXRSZXBsYWNlbWVudCgxKSk7Cit9CisKKy8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMt
c3ludGF4LyNzdGFydHMtd2l0aC1hLW51bWJlcgorYm9vbCBDU1NUb2tlbml6ZXI6Om5leHRDaGFy
c0FyZU51bWJlcihVQ2hhciBmaXJzdCkKK3sKKyAgICBVQ2hhciBzZWNvbmQgPSBtX2lucHV0LnBl
ZWtXaXRob3V0UmVwbGFjZW1lbnQoMCk7CisgICAgaWYgKGlzQVNDSUlEaWdpdChmaXJzdCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChmaXJzdCA9PSAnKycgfHwgZmlyc3QgPT0gJy0n
KQorICAgICAgICByZXR1cm4gKChpc0FTQ0lJRGlnaXQoc2Vjb25kKSkgfHwgKHNlY29uZCA9PSAn
LicgJiYgaXNBU0NJSURpZ2l0KG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgxKSkpKTsK
KyAgICBpZiAoZmlyc3QgPT0nLicpCisgICAgICAgIHJldHVybiAoaXNBU0NJSURpZ2l0KHNlY29u
ZCkpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBDU1NUb2tlbml6ZXI6Om5leHRDaGFy
c0FyZU51bWJlcigpCit7CisgICAgVUNoYXIgZmlyc3QgPSBjb25zdW1lKCk7CisgICAgYm9vbCBh
cmVOdW1iZXIgPSBuZXh0Q2hhcnNBcmVOdW1iZXIoZmlyc3QpOworICAgIHJlY29uc3VtZShmaXJz
dCk7CisgICAgcmV0dXJuIGFyZU51bWJlcjsKK30KKworLy8gaHR0cDovL2Rldi53My5vcmcvY3Nz
d2cvY3NzLXN5bnRheC8jd291bGQtc3RhcnQtYW4taWRlbnRpZmllcgorYm9vbCBDU1NUb2tlbml6
ZXI6Om5leHRDaGFyc0FyZUlkZW50aWZpZXIoVUNoYXIgZmlyc3QpCit7CisgICAgVUNoYXIgc2Vj
b25kID0gbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApOworICAgIGlmIChpc05hbWVT
dGFydENvZGVQb2ludChmaXJzdCkgfHwgdHdvQ2hhcnNBcmVWYWxpZEVzY2FwZShmaXJzdCwgc2Vj
b25kKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoZmlyc3QgPT0gJy0nKQorICAg
ICAgICByZXR1cm4gaXNOYW1lU3RhcnRDb2RlUG9pbnQoc2Vjb25kKSB8fCBzZWNvbmQgPT0gJy0n
IHx8IG5leHRUd29DaGFyc0FyZVZhbGlkRXNjYXBlKCk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgQ1NTVG9rZW5pemVyOjpuZXh0Q2hhcnNBcmVJZGVudGlmaWVyKCkKK3sKKyAgICBV
Q2hhciBmaXJzdCA9IGNvbnN1bWUoKTsKKyAgICBib29sIGFyZUlkZW50aWZpZXIgPSBuZXh0Q2hh
cnNBcmVJZGVudGlmaWVyKGZpcnN0KTsKKyAgICByZWNvbnN1bWUoZmlyc3QpOworICAgIHJldHVy
biBhcmVJZGVudGlmaWVyOworfQorCitTdHJpbmdWaWV3IENTU1Rva2VuaXplcjo6cmVnaXN0ZXJT
dHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgbV9zY29wZS5zdG9yZVN0cmluZyhz
dHJpbmcpOworICAgIHJldHVybiBzdHJpbmc7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTM5IEBACisvLyBDb3B5cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0g
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8v
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworI2lmbmRlZiBDU1NUb2tlbml6ZXJfaAorI2RlZmluZSBDU1NUb2tl
bml6ZXJfaAorCisjaW5jbHVkZSA8Y2xpbWl0cz4KKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlbi5o
IgorI2luY2x1ZGUgIklucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmgiCisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nVmlldy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1Rva2VuaXplcklucHV0U3RyZWFtOworY2xhc3Mg
Q1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyOworY2xhc3MgQ1NTUGFyc2VyVG9rZW5SYW5nZTsKKwor
Y2xhc3MgQ1NTVG9rZW5pemVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDU1NUb2tlbml6
ZXIpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGNsYXNzIFNj
b3BlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFNjb3BlKGNvbnN0IFN0cmluZyYpOworICAgICAg
ICBTY29wZShjb25zdCBTdHJpbmcmLCBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXImKTsgLy8gRm9y
IHRoZSBpbnNwZWN0b3IKKworICAgICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHRva2VuUmFuZ2Uo
KTsKKyAgICAgICAgdW5zaWduZWQgdG9rZW5Db3VudCgpOworCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgdm9pZCBzdG9yZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykgeyBtX3N0cmluZ1Bvb2wu
YXBwZW5kKHN0cmluZyk7IH0KKyAgICAgICAgVmVjdG9yPENTU1BhcnNlclRva2VuLCAzMj4gbV90
b2tlbnM7CisgICAgICAgIC8vIFdlIG9ubHkgYWxsb2NhdGUgc3RyaW5ncyB3aGVuIGVzY2FwZXMg
YXJlIHVzZWQuCisgICAgICAgIFZlY3RvcjxTdHJpbmc+IG1fc3RyaW5nUG9vbDsKKyAgICAgICAg
U3RyaW5nIG1fc3RyaW5nOworCisgICAgICAgIGZyaWVuZCBjbGFzcyBDU1NUb2tlbml6ZXI7Cisg
ICAgfTsKKworcHJpdmF0ZToKKyAgICBDU1NUb2tlbml6ZXIoQ1NTVG9rZW5pemVySW5wdXRTdHJl
YW0mLCBTY29wZSYpOworCisgICAgQ1NTUGFyc2VyVG9rZW4gbmV4dFRva2VuKCk7CisKKyAgICBV
Q2hhciBjb25zdW1lKCk7CisgICAgdm9pZCByZWNvbnN1bWUoVUNoYXIpOworCisgICAgQ1NTUGFy
c2VyVG9rZW4gY29uc3VtZU51bWVyaWNUb2tlbigpOworICAgIENTU1BhcnNlclRva2VuIGNvbnN1
bWVJZGVudExpa2VUb2tlbigpOworICAgIENTU1BhcnNlclRva2VuIGNvbnN1bWVOdW1iZXIoKTsK
KyAgICBDU1NQYXJzZXJUb2tlbiBjb25zdW1lU3RyaW5nVG9rZW5VbnRpbChVQ2hhcik7CisgICAg
Q1NTUGFyc2VyVG9rZW4gY29uc3VtZVVuaWNvZGVSYW5nZSgpOworICAgIENTU1BhcnNlclRva2Vu
IGNvbnN1bWVVcmxUb2tlbigpOworCisgICAgdm9pZCBjb25zdW1lQmFkVXJsUmVtbmFudHMoKTsK
KyAgICB2b2lkIGNvbnN1bWVTaW5nbGVXaGl0ZXNwYWNlSWZOZXh0KCk7CisgICAgdm9pZCBjb25z
dW1lVW50aWxDb21tZW50RW5kRm91bmQoKTsKKworICAgIGJvb2wgY29uc3VtZUlmTmV4dChVQ2hh
cik7CisgICAgU3RyaW5nVmlldyBjb25zdW1lTmFtZSgpOworICAgIFVDaGFyMzIgY29uc3VtZUVz
Y2FwZSgpOworCisgICAgYm9vbCBuZXh0VHdvQ2hhcnNBcmVWYWxpZEVzY2FwZSgpOworICAgIGJv
b2wgbmV4dENoYXJzQXJlTnVtYmVyKFVDaGFyKTsKKyAgICBib29sIG5leHRDaGFyc0FyZU51bWJl
cigpOworICAgIGJvb2wgbmV4dENoYXJzQXJlSWRlbnRpZmllcihVQ2hhcik7CisgICAgYm9vbCBu
ZXh0Q2hhcnNBcmVJZGVudGlmaWVyKCk7CisKKyAgICBDU1NQYXJzZXJUb2tlbiBibG9ja1N0YXJ0
KENTU1BhcnNlclRva2VuVHlwZSk7CisgICAgQ1NTUGFyc2VyVG9rZW4gYmxvY2tTdGFydChDU1NQ
YXJzZXJUb2tlblR5cGUgYmxvY2tUeXBlLCBDU1NQYXJzZXJUb2tlblR5cGUsIFN0cmluZ1ZpZXcp
OworICAgIENTU1BhcnNlclRva2VuIGJsb2NrRW5kKENTU1BhcnNlclRva2VuVHlwZSwgQ1NTUGFy
c2VyVG9rZW5UeXBlIHN0YXJ0VHlwZSk7CisKKyAgICBDU1NQYXJzZXJUb2tlbiB3aGl0ZVNwYWNl
KFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBsZWZ0UGFyZW50aGVzaXMoVUNoYXIpOworICAg
IENTU1BhcnNlclRva2VuIHJpZ2h0UGFyZW50aGVzaXMoVUNoYXIpOworICAgIENTU1BhcnNlclRv
a2VuIGxlZnRCcmFja2V0KFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiByaWdodEJyYWNrZXQo
VUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIGxlZnRCcmFjZShVQ2hhcik7CisgICAgQ1NTUGFy
c2VyVG9rZW4gcmlnaHRCcmFjZShVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gcGx1c09yRnVs
bFN0b3AoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIGNvbW1hKFVDaGFyKTsKKyAgICBDU1NQ
YXJzZXJUb2tlbiBoeXBoZW5NaW51cyhVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gYXN0ZXJp
c2soVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIGxlc3NUaGFuKFVDaGFyKTsKKyAgICBDU1NQ
YXJzZXJUb2tlbiBzb2xpZHVzKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBjb2xvbihVQ2hh
cik7CisgICAgQ1NTUGFyc2VyVG9rZW4gc2VtaUNvbG9uKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJU
b2tlbiBoYXNoKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBjaXJjdW1mbGV4QWNjZW50KFVD
aGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBkb2xsYXJTaWduKFVDaGFyKTsKKyAgICBDU1NQYXJz
ZXJUb2tlbiB2ZXJ0aWNhbExpbmUoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIHRpbGRlKFVD
aGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBjb21tZXJjaWFsQXQoVUNoYXIpOworICAgIENTU1Bh
cnNlclRva2VuIHJldmVyc2VTb2xpZHVzKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBhc2Np
aURpZ2l0KFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBsZXR0ZXJVKFVDaGFyKTsKKyAgICBD
U1NQYXJzZXJUb2tlbiBuYW1lU3RhcnQoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIHN0cmlu
Z1N0YXJ0KFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBlbmRPZkZpbGUoVUNoYXIpOworCisg
ICAgU3RyaW5nVmlldyByZWdpc3RlclN0cmluZyhjb25zdCBTdHJpbmcmKTsKKworICAgIHVzaW5n
IENvZGVQb2ludCA9IENTU1BhcnNlclRva2VuIChDU1NUb2tlbml6ZXI6OiopKFVDaGFyKTsKKyAg
ICBzdGF0aWMgY29uc3QgQ29kZVBvaW50IGNvZGVQb2ludHNbXTsKKworICAgIFZlY3RvcjxDU1NQ
YXJzZXJUb2tlblR5cGUsIDg+IG1fYmxvY2tTdGFjazsKKyAgICBDU1NUb2tlbml6ZXJJbnB1dFN0
cmVhbSYgbV9pbnB1dDsKKyAgICBTY29wZSYgbV9zY29wZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIENTU1Rva2VuaXplcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0
U3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcyIEBACisvLyBDb3B5cmlnaHQg
MjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlv
bi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8g
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
Ky8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkNTU1Rva2VuaXplcklucHV0U3RyZWFtLmgiCisKKyNpbmNsdWRlICJIVE1MUGFy
c2VySWRpb21zLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ1NTVG9rZW5pemVySW5wdXRT
dHJlYW06OkNTU1Rva2VuaXplcklucHV0U3RyZWFtKFN0cmluZyBpbnB1dCkKKyAgICA6IG1fb2Zm
c2V0KDApCisgICAgLCBtX3N0cmluZ0xlbmd0aChpbnB1dC5sZW5ndGgoKSkKKyAgICAsIG1fc3Ry
aW5nKGlucHV0LmltcGwoKSkKK3sKK30KKwordm9pZCBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbTo6
YWR2YW5jZVVudGlsTm9uV2hpdGVzcGFjZSgpCit7CisgICAgLy8gVXNpbmcgSFRNTCBzcGFjZSBo
ZXJlIHJhdGhlciB0aGFuIENTUyBzcGFjZSBzaW5jZSB3ZSBkb24ndCBkbyBwcmVwcm9jZXNzaW5n
CisgICAgaWYgKG1fc3RyaW5nLT5pczhCaXQoKSkgeworICAgICAgICBjb25zdCBMQ2hhciogY2hh
cmFjdGVycyA9IG1fc3RyaW5nLT5jaGFyYWN0ZXJzOCgpOworICAgICAgICB3aGlsZSAobV9vZmZz
ZXQgPCBtX3N0cmluZ0xlbmd0aCAmJiBpc0hUTUxTcGFjZShjaGFyYWN0ZXJzW21fb2Zmc2V0XSkp
CisgICAgICAgICAgICArK21fb2Zmc2V0OworICAgIH0gZWxzZSB7CisgICAgICAgIGNvbnN0IFVD
aGFyKiBjaGFyYWN0ZXJzID0gbV9zdHJpbmctPmNoYXJhY3RlcnMxNigpOworICAgICAgICB3aGls
ZSAobV9vZmZzZXQgPCBtX3N0cmluZ0xlbmd0aCAmJiBpc0hUTUxTcGFjZShjaGFyYWN0ZXJzW21f
b2Zmc2V0XSkpCisgICAgICAgICAgICArK21fb2Zmc2V0OworICAgIH0KK30KKworZG91YmxlIENT
U1Rva2VuaXplcklucHV0U3RyZWFtOjpnZXREb3VibGUodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVk
IGVuZCkgY29uc3QKK3sKKyAgICBBU1NFUlQoc3RhcnQgPD0gZW5kICYmICgobV9vZmZzZXQgKyBl
bmQpIDw9IG1fc3RyaW5nTGVuZ3RoKSk7CisgICAgYm9vbCBpc1Jlc3VsdE9LID0gZmFsc2U7Cisg
ICAgZG91YmxlIHJlc3VsdCA9IDAuMDsKKyAgICBpZiAoc3RhcnQgPCBlbmQpIHsKKyAgICAgICAg
aWYgKG1fc3RyaW5nLT5pczhCaXQoKSkKKyAgICAgICAgICAgIHJlc3VsdCA9IGNoYXJhY3RlcnNU
b0RvdWJsZShtX3N0cmluZy0+Y2hhcmFjdGVyczgoKSArIG1fb2Zmc2V0ICsgc3RhcnQsIGVuZCAt
IHN0YXJ0LCAmaXNSZXN1bHRPSyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdCA9
IGNoYXJhY3RlcnNUb0RvdWJsZShtX3N0cmluZy0+Y2hhcmFjdGVyczE2KCkgKyBtX29mZnNldCAr
IHN0YXJ0LCBlbmQgLSBzdGFydCwgJmlzUmVzdWx0T0spOworICAgIH0KKyAgICAvLyBGSVhNRTog
SXQgbG9va3MgbGlrZSBjYWxsZXJzIGVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQgbnVtYmVyCisgICAg
cmV0dXJuIGlzUmVzdWx0T0sgPyByZXN1bHQgOiAwLjA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRT
dHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2Vu
aXplcklucHV0U3RyZWFtLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTA5IEBACisvLyBDb3B5cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoK
Ky8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8v
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
Ky8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
I2lmbmRlZiBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbV9oCisjZGVmaW5lIENTU1Rva2VuaXplcklu
cHV0U3RyZWFtX2gKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBD
U1NUb2tlbml6ZXJJbnB1dFN0cmVhbSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ1NTVG9r
ZW5pemVySW5wdXRTdHJlYW0pOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIGV4cGxpY2l0IENTU1Rva2VuaXplcklucHV0U3RyZWFtKFN0cmluZyBpbnB1dCk7CisK
KyAgICAvLyBHZXRzIHRoZSBjaGFyIGluIHRoZSBzdHJlYW0gcmVwbGFjaW5nIE5VTCBjaGFyYWN0
ZXJzIHdpdGggYSB1bmljb2RlCisgICAgLy8gcmVwbGFjZW1lbnQgY2hhcmFjdGVyLiBXaWxsIHJl
dHVybiAoTlVMKSBrRW5kT2ZGaWxlTWFya2VyIHdoZW4gYXQgdGhlCisgICAgLy8gZW5kIG9mIHRo
ZSBzdHJlYW0uCisgICAgVUNoYXIgbmV4dElucHV0Q2hhcigpIGNvbnN0CisgICAgeworICAgICAg
ICBpZiAobV9vZmZzZXQgPj0gbV9zdHJpbmdMZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gJ1ww
JzsKKyAgICAgICAgVUNoYXIgcmVzdWx0ID0gKCptX3N0cmluZylbbV9vZmZzZXRdOworICAgICAg
ICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0IDogMHhGRkZEOworICAgIH0KKworICAgIC8vIEdldHMg
dGhlIGNoYXIgYXQgbG9va2FoZWFkT2Zmc2V0IGZyb20gdGhlIGN1cnJlbnQgc3RyZWFtIHBvc2l0
aW9uLiBXaWxsCisgICAgLy8gcmV0dXJuIE5VTCAoa0VuZE9mRmlsZU1hcmtlcikgaWYgdGhlIHN0
cmVhbSBwb3NpdGlvbiBpcyBhdCB0aGUgZW5kLgorICAgIC8vIE5PVEU6IFRoaXMgbWF5ICphbHNv
KiByZXR1cm4gTlVMIGlmIHRoZXJlJ3Mgb25lIGluIHRoZSBpbnB1dCEgTmV2ZXIKKyAgICAvLyBj
b21wYXJlIHRoZSByZXR1cm4gdmFsdWUgdG8gJ1wwJy4KKyAgICBVQ2hhciBwZWVrV2l0aG91dFJl
cGxhY2VtZW50KHVuc2lnbmVkIGxvb2thaGVhZE9mZnNldCkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmICgobV9vZmZzZXQgKyBsb29rYWhlYWRPZmZzZXQpID49IG1fc3RyaW5nTGVuZ3RoKQorICAg
ICAgICAgICAgcmV0dXJuICdcMCc7CisgICAgICAgIHJldHVybiAoKm1fc3RyaW5nKVttX29mZnNl
dCArIGxvb2thaGVhZE9mZnNldF07CisgICAgfQorCisgICAgdm9pZCBhZHZhbmNlKHVuc2lnbmVk
IG9mZnNldCA9IDEpIHsgbV9vZmZzZXQgKz0gb2Zmc2V0OyB9CisgICAgdm9pZCBwdXNoQmFjayhV
Q2hhciBjYykKKyAgICB7CisgICAgICAgIC0tbV9vZmZzZXQ7CisgICAgICAgIEFTU0VSVF9VTlVT
RUQoY2MsIG5leHRJbnB1dENoYXIoKSA9PSBjYyk7CisgICAgfQorCisgICAgZG91YmxlIGdldERv
dWJsZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kKSBjb25zdDsKKworICAgIHRlbXBsYXRl
PGJvb2wgY2hhcmFjdGVyUHJlZGljYXRlKFVDaGFyKT4KKyAgICB1bnNpZ25lZCBza2lwV2hpbGVQ
cmVkaWNhdGUodW5zaWduZWQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgaWYgKG1fc3RyaW5nLT5p
czhCaXQoKSkgeworICAgICAgICAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4ID0gbV9zdHJp
bmctPmNoYXJhY3RlcnM4KCk7CisgICAgICAgICAgICB3aGlsZSAoKG1fb2Zmc2V0ICsgb2Zmc2V0
KSA8IG1fc3RyaW5nTGVuZ3RoICYmIGNoYXJhY3RlclByZWRpY2F0ZShjaGFyYWN0ZXJzOFttX29m
ZnNldCArIG9mZnNldF0pKQorICAgICAgICAgICAgICAgICsrb2Zmc2V0OworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMxNiA9IG1fc3RyaW5nLT5j
aGFyYWN0ZXJzMTYoKTsKKyAgICAgICAgICAgIHdoaWxlICgobV9vZmZzZXQgKyBvZmZzZXQpIDwg
bV9zdHJpbmdMZW5ndGggJiYgY2hhcmFjdGVyUHJlZGljYXRlKGNoYXJhY3RlcnMxNlttX29mZnNl
dCArIG9mZnNldF0pKQorICAgICAgICAgICAgICAgICsrb2Zmc2V0OworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBvZmZzZXQ7CisgICAgfQorCisgICAgdm9pZCBhZHZhbmNlVW50aWxOb25XaGl0
ZXNwYWNlKCk7CisKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3N0cmlu
Z0xlbmd0aDsgfQorICAgIHVuc2lnbmVkIG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bWlu
KG1fb2Zmc2V0LCBtX3N0cmluZ0xlbmd0aCk7IH0KKworICAgIFN0cmluZ1ZpZXcgcmFuZ2VBdCh1
bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNT
RVJUKHN0YXJ0ICsgbGVuZ3RoIDw9IG1fc3RyaW5nTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIFN0
cmluZ1ZpZXcobV9zdHJpbmcuZ2V0KCkpLnN1YnN0cmluZyhzdGFydCwgbGVuZ3RoKTsgLy8gRklY
TUU6IFNob3VsZCBtYWtlIGEgY29uc3RydWN0b3Igb24gU3RyaW5nVmlldyBmb3IgdGhpcy4KKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIGNvbnN0IHNpemVfdCBt
X3N0cmluZ0xlbmd0aDsKKyAgICBjb25zdCBSZWZQdHI8U3RyaW5nSW1wbD4gbV9zdHJpbmc7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NUb2tlbml6ZXJJbnB1
dFN0cmVhbV9oCisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCShyZXZpc2lvbiAyMDQ5
NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAkod29ya2luZyBjb3B5KQpA
QCAtNDAsNiArNDAsMTEgQEAgZW51bSBMZW5ndGhUeXBlIHsKICAgICBVbmRlZmluZWQKIH07CiAK
K2VudW0gVmFsdWVSYW5nZSB7CisgICAgVmFsdWVSYW5nZUFsbCwKKyAgICBWYWx1ZVJhbmdlTm9u
TmVnYXRpdmUKK307CisKIGNsYXNzIENhbGN1bGF0aW9uVmFsdWU7CiBjbGFzcyBUZXh0U3RyZWFt
OwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDQ5NzgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0wOC0yNSAgRGF2ZSBIeWF0dCAg
PGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBMYW5kIHN1cHBvcnQgZm9yIHRva2VuaXphdGlv
biBpbiB0aGUgbmV3IENTUyBQYXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MTE3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogZmFzdC9jc3MvcGFyc2luZy1jc3Mtbm9uYXNjaWktZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvY3NzL3BhcnNpbmctY3NzLW5vbmFzY2lpLmh0bWw6CisgICAg
ICAgICogZmFzdC9jc3Mvc2VsZWN0b3ItdGV4dC1lc2NhcGUuaHRtbDoKKwogMjAxNi0wOC0yNSAg
Sm9oYW4gSy4gSmVuc2VuICA8am9oYW5famVuc2VuQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRh
dGUgdGhlIFJlc291cmNlIFRpbWluZyBpbXBsZW1lbnRhdGlvbgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286998</attachid>
            <date>2016-08-25 13:09:55 -0700</date>
            <delta_ts>2016-08-25 14:21:30 -0700</delta_ts>
            <desc>Patch to fix layout tests and style stuff</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>450426</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3NiBAQAorMjAxNi0wOC0yNCAgRGF2ZSBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBJbml0aWFsIGxhbmRpbmcgb2YgQ1NT
IFBhcnNlciBUb2tlbml6YXRpb24gKGFuZCBmaWxlcyB0byBzdXBwb3J0IHRoYXQpLiBOb3QgdXNl
ZCB5ZXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjExNzQKKworICAgICAgICBUaGlzIGNvZGUgaXMgaW1wb3J0ZWQgZnJvbSBCbGluayBhbmQgaXMg
dGhlaXIgQ1NTIHBhcnNlciAobW9kaWZpZWQgdG8gd29yayBpbiBXZWJLaXQpLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGNzcy9DU1NNYXJrdXAuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQ1NTVG9rZW5p
emVySWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVDaGFyYWN0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplQ2hhcmFjdGVyQXNDb2RlUG9pbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6c2VyaWFsaXplSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpzZXJp
YWxpemVTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplVVJJKToKKyAgICAgICAg
KFdlYkNvcmU6OnNlcmlhbGl6ZUZvbnRGYW1pbHkpOgorICAgICAgICAqIGNzcy9DU1NNYXJrdXAu
aDogQWRkZWQuCisgICAgICAgICogY3NzL0NTU09NVXRpbHMuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIGNzcy9DU1NPTVV0aWxzLmg6IFJlbW92ZWQuCisgICAgICAgICogY3NzL0NTU1NlbGVjdG9y
LmNwcDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHA6IEFkZGVk
LgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmg6IEFkZGVkLgorICAg
ICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6aXNDU1NTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjppc05hbWVTdGFydENvZGVQb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjppc05hbWVDb2RlUG9pbnQpOgorICAgICAgICAqIGNzcy9w
YXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJPYnNlcnZlcjo6fkNTU1BhcnNlck9ic2VydmVyKToKKyAgICAgICAgKiBjc3MvcGFyc2Vy
L0NTU1BhcnNlck9ic2VydmVyV3JhcHBlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyOjpzdGFydE9mZnNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OnByZXZpb3VzVG9rZW5TdGFydE9mZnNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OmVuZE9mZnNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OnNraXBDb21tZW50c0Jl
Zm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OnlpZWxk
Q29tbWVudHNCZWZvcmUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXJX
cmFwcGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyT2JzZXJ2ZXJXcmFw
cGVyOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyT2JzZXJ2ZXJXcmFwcGVyOjpvYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXJPYnNlcnZlcldyYXBwZXI6OmFkZENvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyT2JzZXJ2ZXJXcmFwcGVyOjphZGRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXJPYnNlcnZlcldyYXBwZXI6OmZpbmFsaXplQ29uc3RydWN0aW9uKToKKyAgICAgICAgKiBjc3Mv
cGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjc3NQ
cmltaXRpdmVWYWx1ZVVuaXRGcm9tVHJpZSk6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdUb1Vu
aXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpDU1NQYXJzZXJUb2tl
bik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6Y29udmVydFRvRGltZW5zaW9u
V2l0aFVuaXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OmNvbnZlcnRUb1Bl
cmNlbnRhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OmRlbGltaXRlcik6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6bnVtZXJpY1NpZ24pOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46Om51bWVyaWNWYWx1ZVR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46Om51bWVyaWNWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXJUb2tlbjo6cGFyc2VBc1VucmVzb2x2ZWRDU1NQcm9wZXJ0eUlEKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjppZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJUb2tlbjo6ZnVuY3Rpb25JZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tl
bjo6aGFzU3RyaW5nQmFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6
Y29weVdpdGhVcGRhdGVkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2Vu
Ojp2YWx1ZURhdGFDaGFyUmF3RXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9r
ZW46Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OnNlcmlh
bGl6ZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlclRva2VuOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clRva2VuOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6Z2V0SGFz
aFRva2VuVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6Z2V0QmxvY2tU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjp1bml0VHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6dW5pY29kZVJhbmdlU3RhcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OnVuaWNvZGVSYW5nZUVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6aW5pdFZhbHVlRnJvbVN0cmluZ1ZpZXcpOgorICAgICAg
ICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW5SYW5nZS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6ZW9mVG9rZW4pOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6bWFrZVN1YlJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlclRva2VuUmFuZ2U6OmNvbnN1bWVCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXJUb2tlblJhbmdlOjpjb25zdW1lQ29tcG9uZW50VmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6c2VyaWFsaXplKToKKyAgICAgICAgKiBjc3MvcGFy
c2VyL0NTU1BhcnNlclRva2VuUmFuZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJUb2tlblJhbmdlOjpDU1NQYXJzZXJUb2tlblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlclRva2VuUmFuZ2U6OmF0RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clRva2VuUmFuZ2U6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlblJhbmdl
OjpwZWVrKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuUmFuZ2U6OmNvbnN1bWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6Y29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6Y29u
c3VtZVdoaXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6
YmVnaW4pOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Omhhc1ByZWZpeCk6CisgICAgICAgIChXZWJDb3JlOjpjc3NQ
cm9wZXJ0eUlEKToKKyAgICAgICAgKFdlYkNvcmU6OmNzc1Byb3BlcnR5TmFtZUlPU0FsaWFzaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzQXBwbGVMZWdhY3lDc3NWYWx1ZUtleXdvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6Y3NzVmFsdWVLZXl3b3JkSUQpOgorICAgICAgICAoV2ViQ29yZTo6dW5y
ZXNvbHZlZENTU1Byb3BlcnR5SUQpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQ
YXJzZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6aW5R
dWlya3NNb2RlKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVy
cy5jcHA6IEFkZGVkLgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
OjppZGVudE1hdGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzOjpjb25zdW1lSWRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzOjppc0NTU1dpZGVLZXl3b3JkKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Rva2Vu
aXplci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpTY29wZTo6
U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpTY29wZTo6dG9rZW5SYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OlNjb3BlOjp0b2tlbkNvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OmlzTmV3TGluZSk6CisgICAgICAgIChXZWJDb3JlOjp0d29DaGFy
c0FyZVZhbGlkRXNjYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Q1NTVG9r
ZW5pemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6cmVjb25zdW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb2tlbml6ZXI6OndoaXRlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5p
emVyOjpibG9ja1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6YmxvY2tF
bmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpsZWZ0UGFyZW50aGVzaXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpyaWdodFBhcmVudGhlc2lzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6bGVmdEJyYWNrZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9rZW5pemVyOjpyaWdodEJyYWNrZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9r
ZW5pemVyOjpsZWZ0QnJhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpyaWdo
dEJyYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6cGx1c09yRnVsbFN0b3Ap
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjphc3Rlcmlzayk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb2tlbml6ZXI6Omxlc3NUaGFuKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rv
a2VuaXplcjo6Y29tbWEpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpoeXBoZW5N
aW51cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OnNvbGlkdXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb2xvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXI6OnNlbWlDb2xvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6Omhh
c2gpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjaXJjdW1mbGV4QWNjZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6ZG9sbGFyU2lnbik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb2tlbml6ZXI6OnZlcnRpY2FsTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NUb2tlbml6ZXI6OnRpbGRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29t
bWVyY2lhbEF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6cmV2ZXJzZVNvbGlk
dXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjphc2NpaURpZ2l0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6bGV0dGVyVSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NUb2tlbml6ZXI6Om5hbWVTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6
OnN0cmluZ1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6ZW5kT2ZGaWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6bmV4dFRva2VuKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZU51bWJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVOdW1lcmljVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVG9rZW5pemVyOjpjb25zdW1lSWRlbnRMaWtlVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVG9rZW5pemVyOjpjb25zdW1lU3RyaW5nVG9rZW5VbnRpbCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVVbmljb2RlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
aXNOb25QcmludGFibGVDb2RlUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVy
Ojpjb25zdW1lVXJsVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb25z
dW1lQmFkVXJsUmVtbmFudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb25z
dW1lU2luZ2xlV2hpdGVzcGFjZUlmTmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6
ZXI6OmNvbnN1bWVVbnRpbENvbW1lbnRFbmRGb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXI6OmNvbnN1bWVJZk5leHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVy
Ojpjb25zdW1lTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVF
c2NhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpuZXh0VHdvQ2hhcnNBcmVW
YWxpZEVzY2FwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6Om5leHRDaGFyc0Fy
ZU51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6Om5leHRDaGFyc0FyZUlk
ZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpyZWdpc3RlclN0cmlu
Zyk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OlNjb3BlOjpzdG9yZVN0cmluZyk6CisgICAgICAgICog
Y3NzL3BhcnNlci9DU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVG9rZW5pemVySW5wdXRTdHJlYW06OkNTU1Rva2VuaXplcklucHV0U3RyZWFt
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcklucHV0U3RyZWFtOjphZHZhbmNlVW50
aWxOb25XaGl0ZXNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcklucHV0U3Ry
ZWFtOjpnZXREb3VibGUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRT
dHJlYW0uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXJJbnB1dFN0cmVh
bTo6bmV4dElucHV0Q2hhcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXJJbnB1dFN0
cmVhbTo6cGVla1dpdGhvdXRSZXBsYWNlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tl
bml6ZXJJbnB1dFN0cmVhbTo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6
ZXJJbnB1dFN0cmVhbTo6cHVzaEJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVy
SW5wdXRTdHJlYW06OnNraXBXaGlsZVByZWRpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXJJbnB1dFN0cmVhbTo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2Vu
aXplcklucHV0U3RyZWFtOjpvZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVy
SW5wdXRTdHJlYW06OnJhbmdlQXQpOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5oOgorCiAy
MDE2LTA4LTI0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIHRo
ZSBhYmlsaXR5IHRvIG92ZXJyaWRlIHRoZSBpbXBsZW1lbnRhdGlvbiBuYW1lIG9mIElETCBlbnVt
cyBhbmQgZGljdGlvbmFyaWVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjA0
OTc4KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEzNDEsOSArMTM0MSw5IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3MvQ1NTS2V5ZnJh
bWVSdWxlLmNwcAogICAgIGNzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcAogICAgIGNzcy9DU1NMaW5l
Qm94Q29udGFpblZhbHVlLmNwcAorICAgIGNzcy9DU1NNYXJrdXAuY3BwCiAgICAgY3NzL0NTU01l
ZGlhUnVsZS5jcHAKICAgICBjc3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmNwcAotICAgIGNzcy9DU1NP
TVV0aWxzLmNwcAogICAgIGNzcy9DU1NQYWdlUnVsZS5jcHAKICAgICBjc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuY3BwCiAgICAgY3NzL0NTU1Byb3BlcnR5LmNwcApAQCAtMTQxMCw3ICsxNDEwLDE1IEBA
IHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3MvV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmNwcAog
CiAgICAgY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCisgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJG
YXN0UGF0aHMuY3BwCisgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3Bw
CisgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAKKyAgICBjc3MvcGFyc2VyL0NTU1Bh
cnNlclRva2VuUmFuZ2UuY3BwCiAgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJWYWx1ZXMuY3BwCisg
ICAgY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKyAgICBjc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VySGVscGVycy5jcHAKKyAgICBjc3MvcGFyc2VyL0NTU1Rva2VuaXplci5jcHAK
KyAgICBjc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcAogICAgIGNzcy9wYXJz
ZXIvU1ZHQ1NTUGFyc2VyLmNwcAogCiAgICAgY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyMDQ5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMzMzksNiArMzMzOSwyNiBAQAog
CQk5NDZEMzczMDFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzJCMUQ2Q0IyOEIw
MDc3MDg0RiAvKiBDU1NQYXJzZXJWYWx1ZXMuY3BwICovOyB9OwogCQk5NDZEMzczMTFENkNCMjk0
MDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzcyQzFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2Vy
VmFsdWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOTQ2RDM3MzMxRDZDQzQyQjAwNzcwODRGIC8qIFNWR0NTU1BhcnNlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzczMjFENkNDMzcyMDA3
NzA4NEYgLyogU1ZHQ1NTUGFyc2VyLmNwcCAqLzsgfTsKKwkJOTQ2RDM3MzkxRDZDREZDMDAwNzcw
ODRGIC8qIENTU1Rva2VuaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NDZEMzczNDFENkNERjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmNw
cCAqLzsgfTsKKwkJOTQ2RDM3M0ExRDZDREZDMDAwNzcwODRGIC8qIENTU1Rva2VuaXplci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3MzcxRDZD
REY5ODAwNzcwODRGIC8qIENTU1Rva2VuaXplci5oICovOyB9OworCQk5NDZEMzczQjFENkNERkMw
MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3MzUxRDZDREY5ODAwNzcwODRGIC8q
IENTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcCAqLzsgfTsKKwkJOTQ2RDM3M0MxRDZDREZDMDAw
NzcwODRGIC8qIENTU1Rva2VuaXplcklucHV0U3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzczODFENkNERjk4MDA3NzA4NEYgLyogQ1NT
VG9rZW5pemVySW5wdXRTdHJlYW0uaCAqLzsgfTsKKwkJOTQ2RDM3M0YxRDZDRTNDMjAwNzcwODRG
IC8qIENTU1BhcnNlclRva2VuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk0NkQzNzNFMUQ2Q0UzMUEwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlbi5j
cHAgKi87IH07CisJCTk0NkQzNzQwMUQ2Q0UzQzIwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3M0Qx
RDZDRTMxQTAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuLmggKi87IH07CisJCTk0NkQzNzQ0MUQ2
Q0Y3QjIwMDc3MDg0RiAvKiBDU1NQYXJzZXJJZGlvbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzQzMUQ2Q0Y3ODgwMDc3MDg0RiAvKiBDU1NQ
YXJzZXJJZGlvbXMuaCAqLzsgfTsKKwkJOTQ2RDM3NDUxRDZEMDFENDAwNzcwODRGIC8qIENTU1By
b3BlcnR5UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk0NkQzNzQxMUQ2Q0Y2MzIwMDc3MDg0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlci5jcHAg
Ki87IH07CisJCTk0NkQzNzQ2MUQ2RDAxRDQwMDc3MDg0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3NDIx
RDZDRjYzMjAwNzcwODRGIC8qIENTU1Byb3BlcnR5UGFyc2VyLmggKi87IH07CisJCTk0NkQzNzQ5
MUQ2RDA2MjgwMDc3MDg0RiAvKiBDU1NNYXJrdXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3NDcxRDZEMDYwQzAwNzcwODRGIC8qIENTU01h
cmt1cC5jcHAgKi87IH07CisJCTk0NkQzNzRBMUQ2RDA2MjgwMDc3MDg0RiAvKiBDU1NNYXJrdXAu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzQ4
MUQ2RDA2MEMwMDc3MDg0RiAvKiBDU1NNYXJrdXAuaCAqLzsgfTsKKwkJOTQ2RDM3NEQxRDZEMDhB
NjAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3NEIxRDZEMDdGNTAwNzcwODRGIC8qIENT
U1BhcnNlclRva2VuUmFuZ2UuY3BwICovOyB9OworCQk5NDZEMzc0RTFENkQwOEFBMDA3NzA4NEYg
LyogQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTQ2RDM3NEMxRDZEMDdGNTAwNzcwODRGIC8qIENTU1BhcnNlclRva2Vu
UmFuZ2UuaCAqLzsgfTsKKwkJOTQ5Qzc3MDAxRDZFMUQ5ODAwQzBERTRGIC8qIENTU1BhcnNlckZh
c3RQYXRocy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NDlDNzZGRTFENkUxRDhDMDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcCAqLzsg
fTsKKwkJOTQ5Qzc3MDExRDZFMUQ5ODAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRocy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5Qzc2RkYxRDZF
MUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRocy5oICovOyB9OworCQk5NDlDNzcwNDFE
NkUzOUVBMDBDMERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0OUM3NzAyMUQ2RTM5MzUwMEMw
REU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwICovOyB9OworCQk5NDlDNzcwNTFE
NkUzOUVBMDBDMERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDlDNzcwMzFENkUzOTM1MDBDMERF
NEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmggKi87IH07CisJCTk0OUM3NzA4MUQ2RTQ5
ODcwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5Qzc3MDYxRDZFNDhFRDAwQzBERTRG
IC8qIENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5jcHAgKi87IH07CisJCTk0OUM3NzA5MUQ2RTQ5
ODcwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0OUM3NzA3MUQ2RTQ4RUQwMEMwREU0RiAv
KiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaCAqLzsgfTsKKwkJOTQ5Qzc3MEIxRDZFNDlFRDAw
QzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NDlDNzcwQTFENkU0OUMzMDBDMERFNEYgLyogQ1NTUGFyc2Vy
T2JzZXJ2ZXIuaCAqLzsgfTsKIAkJOTZBQkE0MjMxNEJDQjgwRTAwRDU2MjA0IC8qIEdyYXBoaWNz
Q29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk2QUJBNDIyMTRCQ0I4MEUwMEQ1NjIwNCAvKiBHcmFwaGljc0NvbnRl
eHQzRE9wZW5HTENvbW1vbi5jcHAgKi87IH07CiAJCTk3MDNFMUJGMTVEQzRFMzcwMDFGMjRDOCAv
KiBKU1ZvaWRDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5N0U5RUM4QjE1REM0OTJGMDA0RjJFNzEgLyogSlNWb2lkQ2FsbGJhY2suY3Bw
ICovOyB9OwogCQk5NzA1OTk3NzEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzMx
MDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmNwcCAqLzsgfTsKQEAgLTYzMTgsOCAr
NjMzOCw2IEBACiAJCUY1RTBDNjVDMTY0M0M0MkMwMEQ2Q0I2OSAvKiBCYXNlQ2hvb3Nlck9ubHlE
YXRlQW5kVGltZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjVFMEM2NUExNjQzQzQyQzAwRDZDQjY5IC8qIEJhc2VDaG9vc2VyT25seURh
dGVBbmRUaW1lSW5wdXRUeXBlLmggKi87IH07CiAJCUY5MTZDNDhEMERCNTEwRjgwMDc2Q0Q4MyAv
KiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOTE2QzQ4QjBEQjUxMEY4MDA3NkNEODMgLyogSlNY
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3BwICovOyB9OwogCQlGOTE2QzQ4RTBEQjUxMEY4
MDA3NkNEODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5MTZDNDhDMERCNTEwRjgwMDc2Q0Q4
MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICovOyB9OwotCQlGOThGRkY0NDEx
QTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOThGRkY0MjExQTI2NzYyMDBGNTQ4RTggLyogQ1NTT01V
dGlscy5jcHAgKi87IH07Ci0JCUY5OEZGRjQ1MTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOThGRkY0
MzExQTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5oICovOyB9OwogCQlGOUYwRUQ3QTBEQjUw
Q0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOUYwRUQ3NzBEQjUwQ0EyMDBEMTZE
QjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi87IH07CiAJCUZBNjU0QTZCMTEw
OEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUb2tlbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE2NTRBNjkxMTA4QUJFRDAwMjYxNUUwIC8q
IE1hdGhNTFRva2VuRWxlbWVudC5jcHAgKi87IH07CiAJCUZBNjU0QTZCMTEwOEFCRUQwMDI2MTZG
MSAvKiBNYXRoTUxPcGVyYXRvckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkE2NTRBNjkxMTA4QUJFRDAwMjYxNkYxIC8qIE1hdGhNTE9w
ZXJhdG9yRWxlbWVudC5jcHAgKi87IH07CkBAIC0xMDQ1Myw2ICsxMDQ3MSwyNiBAQAogCQk5NDZE
MzcyQjFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1BhcnNlclZhbHVlcy5jcHA7IHBhdGggPSBwYXJz
ZXIvQ1NTUGFyc2VyVmFsdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ2
RDM3MkMxRDZDQjI4QjAwNzcwODRGIC8qIENTU1BhcnNlclZhbHVlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQYXJzZXJWYWx1ZXMuaDsgcGF0aCA9IHBhcnNlci9DU1NQ
YXJzZXJWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ2RDM3MzIxRDZD
QzM3MjAwNzcwODRGIC8qIFNWR0NTU1BhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBTVkdDU1NQYXJzZXIuY3BwOyBwYXRoID0gcGFyc2VyL1NWR0NTU1BhcnNl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NkQzNzM0MUQ2Q0RGOTgwMDc3
MDg0RiAvKiBDU1NUb2tlbml6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQ1NTVG9rZW5pemVyLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NUb2tlbml6ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzczNTFENkNERjk4MDA3NzA4NEYgLyog
Q1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwOyBwYXRoID0gcGFyc2VyL0NTU1Rv
a2VuaXplcklucHV0U3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ2
RDM3MzcxRDZDREY5ODAwNzcwODRGIC8qIENTU1Rva2VuaXplci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBDU1NUb2tlbml6ZXIuaDsgcGF0aCA9IHBhcnNlci9DU1NUb2tlbml6
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ2RDM3MzgxRDZDREY5ODAwNzcw
ODRGIC8qIENTU1Rva2VuaXplcklucHV0U3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IENTU1Rva2VuaXplcklucHV0U3RyZWFtLmg7IHBhdGggPSBwYXJzZXIvQ1NTVG9r
ZW5pemVySW5wdXRTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ2RDM3
M0QxRDZDRTMxQTAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IENTU1BhcnNlclRva2VuLmg7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2Vy
VG9rZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ2RDM3M0UxRDZDRTMxQTAw
NzcwODRGIC8qIENTU1BhcnNlclRva2VuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IENTU1BhcnNlclRva2VuLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJUb2tl
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NkQzNzQxMUQ2Q0Y2MzIwMDc3
MDg0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBDU1NQcm9wZXJ0eVBhcnNlci5jcHA7IHBhdGggPSBwYXJzZXIvQ1NTUHJvcGVy
dHlQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzc0MjFENkNG
NjMyMDA3NzA4NEYgLyogQ1NTUHJvcGVydHlQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQ1NTUHJvcGVydHlQYXJzZXIuaDsgcGF0aCA9IHBhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzc0MzFENkNGNzg4
MDA3NzA4NEYgLyogQ1NTUGFyc2VySWRpb21zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IENTU1BhcnNlcklkaW9tcy5oOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzc0NzFENkQwNjBDMDA3NzA4NEYg
LyogQ1NTTWFya3VwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENT
U01hcmt1cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NkQzNzQ4MUQ2RDA2
MEMwMDc3MDg0RiAvKiBDU1NNYXJrdXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ1NTTWFya3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NkQzNzRCMUQ2
RDA3RjUwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1BhcnNlclRva2VuUmFuZ2UuY3BwOyBwYXRoID0gcGFy
c2VyL0NTU1BhcnNlclRva2VuUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5NDZEMzc0QzFENkQwN0Y1MDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW5SYW5nZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQYXJzZXJUb2tlblJhbmdlLmg7IHBhdGgg
PSBwYXJzZXIvQ1NTUGFyc2VyVG9rZW5SYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5NDlDNzZGRTFENkUxRDhDMDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1BhcnNlckZhc3RQYXRocy5j
cHA7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTQ5Qzc2RkYxRDZFMUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQ
YXRocy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQYXJzZXJGYXN0UGF0
aHMuaDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTQ5Qzc3MDIxRDZFMzkzNTAwQzBERTRGIC8qIENTU1Byb3BlcnR5UGFy
c2VySGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDU1NQ
cm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwOyBwYXRoID0gcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2Vy
SGVscGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0OUM3NzAzMUQ2RTM5
MzUwMEMwREU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmg7IHBhdGggPSBwYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTk0OUM3NzA2MUQ2RTQ4RUQwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUGFyc2VyT2JzZXJ2
ZXJXcmFwcGVyLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDlDNzcwNzFENkU0OEVEMDBDMERFNEYg
LyogQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5oOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNl
ck9ic2VydmVyV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDlDNzcw
QTFENkU0OUMzMDBDMERFNEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQ1NTUGFyc2VyT2JzZXJ2ZXIuaDsgcGF0aCA9IHBhcnNlci9DU1NQ
YXJzZXJPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NTBDNEMwMkJF
RDg5MzZGODE4RTJGOTkgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHR3JhcGhpY3NFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk2QUJBNDIyMTRCQ0I4MEUwMEQ1NjIwNCAvKiBHcmFwaGljc0NvbnRl
eHQzRE9wZW5HTENvbW1vbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk3MDU5OTczMTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2xpY3lDYWxsYmFjay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzg5NCw4ICsxMzkzMiw2IEBACiAJCUY4
MjE2Mjk5MDI5RjRGQjUwMTAwMDEzMSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1l
d29yazsgcGF0aCA9IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJRjkxNkM0OEIwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0
cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUY5MTZDNDhDMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1
ZXN0UHJvZ3Jlc3NFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNY
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRjk4RkZGNDIxMUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTT01VdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUY5OEZGRjQzMTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU09NVXRpbHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjlGMEVENzcwREI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBS
ZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY5RjBFRDc4MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQTY1NEE2MzExMDhBQkI3MDAy
NjE1RTAgLyogbWF0aG1sLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gbWF0aG1sLmNz
czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MDczLDEyICsxODEwOSwzMCBAQAog
CQk5NDZEMzcyNzFENkNCMjI1MDA3NzA4NEYgLyogcGFyc2VyICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk5NDZEMzczMjFENkNDMzcyMDA3NzA4NEYgLyog
U1ZHQ1NTUGFyc2VyLmNwcCAqLywKIAkJCQk5NDZEMzcyODFENkNCMjhCMDA3NzA4NEYgLyogQ1NT
UGFyc2VyLmNwcCAqLywKIAkJCQk5NDZEMzcyOTFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2Vy
LmggKi8sCisJCQkJOTQ5Qzc2RkUxRDZFMUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRo
cy5jcHAgKi8sCisJCQkJOTQ5Qzc2RkYxRDZFMUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQ
YXRocy5oICovLAorCQkJCTk0NkQzNzQzMUQ2Q0Y3ODgwMDc3MDg0RiAvKiBDU1NQYXJzZXJJZGlv
bXMuaCAqLywKIAkJCQk5NDZEMzcyQTFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2VyTW9kZS5o
ICovLAorCQkJCTk0OUM3NzBBMUQ2RTQ5QzMwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlci5o
ICovLAorCQkJCTk0OUM3NzA2MUQ2RTQ4RUQwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldy
YXBwZXIuY3BwICovLAorCQkJCTk0OUM3NzA3MUQ2RTQ4RUQwMEMwREU0RiAvKiBDU1NQYXJzZXJP
YnNlcnZlcldyYXBwZXIuaCAqLywKKwkJCQk5NDZEMzczRTFENkNFMzFBMDA3NzA4NEYgLyogQ1NT
UGFyc2VyVG9rZW4uY3BwICovLAorCQkJCTk0NkQzNzNEMUQ2Q0UzMUEwMDc3MDg0RiAvKiBDU1NQ
YXJzZXJUb2tlbi5oICovLAorCQkJCTk0NkQzNzRCMUQ2RDA3RjUwMDc3MDg0RiAvKiBDU1NQYXJz
ZXJUb2tlblJhbmdlLmNwcCAqLywKKwkJCQk5NDZEMzc0QzFENkQwN0Y1MDA3NzA4NEYgLyogQ1NT
UGFyc2VyVG9rZW5SYW5nZS5oICovLAogCQkJCTk0NkQzNzJCMUQ2Q0IyOEIwMDc3MDg0RiAvKiBD
U1NQYXJzZXJWYWx1ZXMuY3BwICovLAogCQkJCTk0NkQzNzJDMUQ2Q0IyOEIwMDc3MDg0RiAvKiBD
U1NQYXJzZXJWYWx1ZXMuaCAqLywKKwkJCQk5NDZEMzc0MTFENkNGNjMyMDA3NzA4NEYgLyogQ1NT
UHJvcGVydHlQYXJzZXIuY3BwICovLAorCQkJCTk0NkQzNzQyMUQ2Q0Y2MzIwMDc3MDg0RiAvKiBD
U1NQcm9wZXJ0eVBhcnNlci5oICovLAorCQkJCTk0OUM3NzAyMUQ2RTM5MzUwMEMwREU0RiAvKiBD
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwICovLAorCQkJCTk0OUM3NzAzMUQ2RTM5MzUwMEMw
REU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaCAqLywKKwkJCQk5NDZEMzczNDFENkNE
Rjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmNwcCAqLywKKwkJCQk5NDZEMzczNzFENkNERjk4
MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmggKi8sCisJCQkJOTQ2RDM3MzUxRDZDREY5ODAwNzcw
ODRGIC8qIENTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcCAqLywKKwkJCQk5NDZEMzczODFENkNE
Rjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaCAqLywKKwkJCQk5NDZEMzcz
MjFENkNDMzcyMDA3NzA4NEYgLyogU1ZHQ1NTUGFyc2VyLmNwcCAqLywKIAkJCSk7CiAJCQluYW1l
ID0gcGFyc2VyOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIwOTQ2LDggKzIxMDAw
LDggQEAKIAkJCQlCRTZERjcxMDE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrTGlzdEN1
c3RvbS5jcHAgKi8sCiAJCQkJRkQ4QUE2M0IxNjk1MTQ4RTAwRDJFQTY4IC8qIEpTQmlxdWFkRmls
dGVyTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJODkzMURFNUExNEM0NEM0NDAwMERDOUQyIC8qIEpT
QmxvYkN1c3RvbS5jcHAgKi8sCi0JCQkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLywKIAkJCQk0NjU5RDI3MDFENkI5MDlG
MDA5NkZEODYgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0LmggKi8sCisJCQkJNDlFRUQxNEIx
MDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAq
LywKIAkJCQk3QzMzRjM1ODFCNEEwNDQ4MDA1MDJDQUYgLyogSlNDaGFyYWN0ZXJEYXRhQ3VzdG9t
LmNwcCAqLywKIAkJCQk0NkE1OEFDNDFENDZCM0ZBMDA0MzIwMzYgLyogSlNDbGllbnRSZWN0Q3Vz
dG9tLmNwcCAqLywKIAkJCQlBNTg0RkUzNzE4NjREQUMxMDA4NDNCMTAgLyogSlNDb21tYW5kTGlu
ZUFQSUhvc3RDdXN0b20uY3BwICovLApAQCAtMjIyNDAsMTMgKzIyMjk0LDEzIEBACiAJCQkJMzE2
RkUwOTIwRTZDQ0Q3RjAwQkY2MDg4IC8qIENTU0tleWZyYW1lc1J1bGUuaWRsICovLAogCQkJCUJD
NzcyRTE1MTMzMTYyQzIwMDFFQzlDRSAvKiBDU1NMaW5lQm94Q29udGFpblZhbHVlLmNwcCAqLywK
IAkJCQlCQzc3MkUxMjEzMzE2MjBDMDAxRUM5Q0UgLyogQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5o
ICovLAorCQkJCTk0NkQzNzQ3MUQ2RDA2MEMwMDc3MDg0RiAvKiBDU1NNYXJrdXAuY3BwICovLAor
CQkJCTk0NkQzNzQ4MUQ2RDA2MEMwMDc3MDg0RiAvKiBDU1NNYXJrdXAuaCAqLywKIAkJCQlBODBF
NkNEMjBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTTWVkaWFSdWxlLmNwcCAqLywKIAkJCQlBODBFNkNE
OTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTTWVkaWFSdWxlLmggKi8sCiAJCQkJODVDNTZDQTIwQUE4
OUMxMDAwRDk1NzU1IC8qIENTU01lZGlhUnVsZS5pZGwgKi8sCiAJCQkJMzE0QkUzQTIxQjMwRjZE
MTAwMTQxOTgyIC8qIENTU05hbWVkSW1hZ2VWYWx1ZS5jcHAgKi8sCiAJCQkJMzE0QkUzQTAxQjMw
RjZCNzAwMTQxOTgyIC8qIENTU05hbWVkSW1hZ2VWYWx1ZS5oICovLAotCQkJCUY5OEZGRjQyMTFB
MjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmNwcCAqLywKLQkJCQlGOThGRkY0MzExQTI2NzYy
MDBGNTQ4RTggLyogQ1NTT01VdGlscy5oICovLAogCQkJCUE4MEU2Q0NCMEExOTg5Q0EwMDdGQjhD
NSAvKiBDU1NQYWdlUnVsZS5jcHAgKi8sCiAJCQkJQTgwRTZDRDYwQTE5ODlDQTAwN0ZCOEM1IC8q
IENTU1BhZ2VSdWxlLmggKi8sCiAJCQkJODVDNTZDQTYwQUE4OUQ1RjAwRDk1NzU1IC8qIENTU1Bh
Z2VSdWxlLmlkbCAqLywKQEAgLTIzMTUzLDggKzIzMjA3LDYgQEAKIAkJCQlGQUJFNzJFRTEwNTlD
MUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oICovLAogCQkJCTBCQ0Y4M0VGMTA1OUMxRUIw
MEQ5OTlERCAvKiBNYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwICovLAogCQkJCTBCQ0Y4M0YwMTA1
OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxGcmFjdGlvbkVsZW1lbnQuaCAqLywKLQkJCQlGQUJFNzJF
RjEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAgKi8sCi0J
CQkJRkFCRTcyRjAxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQu
aCAqLywKIAkJCQlGQUJFNzJGMTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MTWF0aEVsZW1lbnQu
Y3BwICovLAogCQkJCUZBQkU3MkYyMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxNYXRoRWxlbWVu
dC5oICovLAogCQkJCUMzRTYxQzY1M0E2NDgwN0E4M0U3NkZCOCAvKiBNYXRoTUxNZW5jbG9zZUVs
ZW1lbnQuY3BwICovLApAQCAtMjMxNjUsNiArMjMyMTcsMTAgQEAKIAkJCQlGQTY1NEE2QTExMDhB
QkVEMDAyNjE2RjEgLyogTWF0aE1MT3BlcmF0b3JFbGVtZW50LmggKi8sCiAJCQkJQjU5Q0E1OUFG
MTcwRDhGQUE1QjhDQUJFIC8qIE1hdGhNTFBhZGRlZEVsZW1lbnQuY3BwICovLAogCQkJCUI1OUNB
ODQ5RDQxRTZGNjVEODExOThCQyAvKiBNYXRoTUxQYWRkZWRFbGVtZW50LmggKi8sCisJCQkJRkFC
RTcyRUYxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwICov
LAorCQkJCUZBQkU3MkYwMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxQcmVzZW50YXRpb25FbGVt
ZW50LmggKi8sCisJCQkJRkE3NjVBNjkxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFJvd0VsZW1l
bnQuY3BwICovLAorCQkJCUZBNzY1QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxSb3dFbGVt
ZW50LmggKi8sCiAJCQkJQjU5Q0E1OUFGMTcwRDhGQUE1QjhDOUFEIC8qIE1hdGhNTFNjcmlwdHNF
bGVtZW50LmNwcCAqLywKIAkJCQlCNTlDQTg0OUQ0MUU2RjY1RDgxMTk3QUIgLyogTWF0aE1MU2Ny
aXB0c0VsZW1lbnQuaCAqLywKIAkJCQlGNzVBMDU5QUYxNzBEOEZBQTVCOENBQkUgLyogTWF0aE1M
U2VsZWN0RWxlbWVudC5jcHAgKi8sCkBAIC0yMzE3Myw4ICsyMzIyOSw2IEBACiAJCQkJNEZBNjVB
NkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxlbWVudC5oICovLAogCQkJCUZBNjU0
QTY5MTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUb2tlbkVsZW1lbnQuY3BwICovLAogCQkJCUZB
NjU0QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUb2tlbkVsZW1lbnQuaCAqLywKLQkJCQlG
QTc2NUE2OTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MUm93RWxlbWVudC5jcHAgKi8sCi0JCQkJ
RkE3NjVBNkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFJvd0VsZW1lbnQuaCAqLywKIAkJCQlG
QTY1NEE2OTExMDhBQkVEMDAyNjI2RjEgLyogTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAgKi8s
CiAJCQkJRkE2NTRBNkExMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQu
aCAqLywKIAkJCQlGQUJFNzJGMzEwNTlDMUVCMDBEOTk5REQgLyogbWF0aHRhZ3MuaW4gKi8sCkBA
IC0yMzUzNiw4ICsyMzU5MCw2IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQk1MTA1OEFE
RTFENjc5MkMxMDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJNTEwNThBREMxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTcxNEVBRDFDRjY1OTUxMDA0NzIzQzQgLyogR0NPYnNlcnZhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDE3REE2REExMzczNEU2RTAwN0M1N0ZCIC8qIEludGVybmFscy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCRjdFRTAxNEM5MTc1QTAwMTQ0ODlEIC8qIEludGVybmFs
U2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLApAQCAtMjM1NTMsNiArMjM2MDUsOCBAQAogCQkJCUNE
QzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBNb2NrQ0RNLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
MUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTA1OEFEQzFENjc5MkMxMDA5QTUzOEMgLyog
TW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMDU4QURFMUQ2NzkyQzEwMDlBNTM4
QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDZGM0U5MTFD
MUVDQjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQky
RDk3RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBQTVGM0I4RDE2Q0MzM0QxMDA0NTVFQjAgLyogUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplck1vY2suaCBpbiBIZWFkZXJzICovLApAQCAtMjM2ODQsNyArMjM3MzgsNiBAQAog
CQkJCUJFRjI5RUVCMTcxNUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0RFM0E4NTQxN0Y1RkNFNjAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2
YXRlQVZGLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREUzQTg1ODE3RjYwMjA0MDBDNUJFMjAgLyog
QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTA1OEFFMjFE
NjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0Q1NEE3NjMxODBGOUY3MDAwQjA3NkM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0Q2QTRGODFCRjIzMDdEMDAxNzQxNDYg
LyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQz
MTYwOEIxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywK
QEAgLTIzOTY1LDcgKzI0MDE4LDYgQEAKIAkJCQkzMUJDNzQyRTFBQUZGNDVDMDA2QjQzNDAgLyog
Q1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDQUU5
RjkxMDE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkJENkFGODgxNUVGMjVDOTAwOEI3MTEwIC8qIENTU0Jhc2ljU2hhcGVzLmggaW4g
SGVhZGVycyAqLywKLQkJCQk1MTA1OEFFMDFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUxNkE4NEZBMTRDODVDQ0MwMDI5NzdERiAvKiBDU1NCb3Jk
ZXJJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyNzRCMkYxNDBFQkVCMjAwRUFERkE2IC8q
IENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlBRTJEOEYx
MzRFRTUwQzAwNzI5MjBBIC8qIENTU0NhbGN1bGF0aW9uVmFsdWUuaCBpbiBIZWFkZXJzICovLApA
QCAtMjQwMDUsMTYgKzI0MDU3LDI3IEBACiAJCQkJMzEyODhFNzMwRTMwMDVENjAwMzYxOUFFIC8q
IENTU0tleWZyYW1lUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEyODhFNzUwRTMwMDVENjAw
MzYxOUFFIC8qIENTU0tleWZyYW1lc1J1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzcyRTEz
MTMzMTYyMEMwMDFFQzlDRSAvKiBDU1NMaW5lQm94Q29udGFpblZhbHVlLmggaW4gSGVhZGVycyAq
LywKKwkJCQk5NDZEMzc0QTFENkQwNjI4MDA3NzA4NEYgLyogQ1NTTWFya3VwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBODBFNkQwMzBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTTWVkaWFSdWxlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkzMTRCRTNBMTFCMzBGNkI3MDAxNDE5ODIgLyogQ1NTTmFtZWRJbWFn
ZVZhbHVlLmggaW4gSGVhZGVycyAqLywKLQkJCQlGOThGRkY0NTExQTI2NzYyMDBGNTQ4RTggLyog
Q1NTT01VdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMDAwQTE5ODlDQTAwN0ZCOEM1
IC8qIENTU1BhZ2VSdWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZEMzcyRTFENkNCMjk0MDA3
NzA4NEYgLyogQ1NTUGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDlDNzcwMTFENkUxRDk4
MDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZE
Mzc0NDFENkNGN0IyMDA3NzA4NEYgLyogQ1NTUGFyc2VySWRpb21zLmggaW4gSGVhZGVycyAqLywK
KwkJCQk5NDZEMzcyRjFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyTW9kZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJOTQ5Qzc3MEIxRDZFNDlFRDAwQzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDlDNzcwOTFENkU0OTg3MDBDMERFNEYgLyogQ1NTUGFy
c2VyT2JzZXJ2ZXJXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZEMzc0MDFENkNFM0My
MDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW4uaCBpbiBIZWFkZXJzICovLAorCQkJCTk0NkQzNzRF
MUQ2RDA4QUEwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJhbmdlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk5NDZEMzczMTFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NzdCMzg2MzEyMjg4M0U5MDBCODFGRjggLyogQ1NTUHJlbG9hZFNjYW5u
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0U2MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQ
cmltaXRpdmVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFRDhBQzMwQ0M0OUJFMDAwQkZD
NTU3IC8qIENTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
MEU2Q0ZGMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzhEMDJCQzYxNTRBMThERjAwQjYyRDA1IC8qIENTU1Byb3BlcnR5QW5pbWF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk2NTY1ODBGNDA5RDEyQjIwMDAwRTYxRDcgLyogQ1NTUHJvcGVydHlO
YW1lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTQ2RDM3NDYxRDZEMDFENDAwNzcwODRGIC8qIENT
U1Byb3BlcnR5UGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDlDNzcwNTFENkUzOUVBMDBD
MERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
MkUzRDhERjEyMkVBMEQxMDAzQUU1QkMgLyogQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5MzYyNjQwQjBERTExMzdEMDA5RDVBMDAgLyogQ1NTUmVmbGVjdGlvbkRp
cmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1QTEyRTAwREMwNDE0ODAwQzlBRkFEIC8q
IENTU1JlZmxlY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDAzMCw2ICsyNDA5Myw4IEBA
CiAJCQkJQThFQTgwMDcwQTE5NTE2RTAwQThFRjVGIC8qIENTU1N0eWxlU2hlZXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZDNTREMDU3MTZBNzY3MzEwMDU3NUU0RCAvKiBDU1NTdXBwb3J0c1J1bGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDODBDOTg4MENEMjk0RUUwMEEwQjdCMyAvKiBDU1NUaW1p
bmdGdW5jdGlvblZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZEMzczQTFENkNERkMwMDA3
NzA4NEYgLyogQ1NTVG9rZW5pemVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZEMzczQzFENkNE
RkMwMDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaCBpbiBIZWFkZXJzICovLAog
CQkJCTlBQjFGMzgwMThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODgyREEyMzE1OTM4NDhEMDAwMTE1RUQgLyogQ1NTVG9T
dHlsZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzcxRjUzRTkwRDI3MDRGOTAwRUNFMEQ1IC8q
IENTU1VuaWNvZGVSYW5nZVZhbHVlLmggaW4gSGVhZGVycyAqLywKQEAgLTI0NzQ5LDYgKzI0ODE0
LDcgQEAKIAkJCQk2NURGMzIzQzA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNQYXR0ZXJuLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzIzQzA5RDFERTY1MDAxQkUzMjUgLyogSlNDYW52YXNQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFRUQxNDMxMDUxOTY5NDAwMDk5RkFCIC8qIEpT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY1OUQyNzExRDZC
OTBBNTAwOTZGRDg2IC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDlFRUQxNDUxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Y5QjdBMTBCQTYwMzI2MDA4NTQwNjQgLyogSlND
REFUQVNlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUZEQTE1RUEyMTJCMDNFRTEwMDNBNTgz
QSAvKiBKU0NoYW5uZWxNZXJnZXJOb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTI0OTc5LDcgKzI1
MDQ1LDYgQEAKIAkJCQlGRDIzQTEyNjEzRjVGQTU5MDBGNjcwMDEgLyogSlNNZWRpYUVsZW1lbnRB
dWRpb1NvdXJjZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYxNDE5MENENjgyNjkwMEZB
REE3NSAvKiBKU01lZGlhRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDM0MzOUI3MEMwRDNE
OEQwMDVGNEQ3QSAvKiBKU01lZGlhTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDY1OUQyNzEx
RDZCOTBBNTAwOTZGRDg2IC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTNENDM3QTMxRDU3QjdFMjAwQUI4NUVBIC8qIEpTTWVkaWFMaXN0Q3VzdG9tLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlEM0E5NEE0NzEyMkRDNDBGMDBBMzdCQkMgLyogSlNNZWRpYVF1
ZXJ5TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M1MzQzRkQxN0I3NEI2MzAwNDIzMkYwIC8q
IEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTE4Niw3ICsy
NTI1MSw2IEBACiAJCQkJQjJGQTNEQjUwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREI3MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NW
R1BhdGhTZWcuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREI5MEFCNzVBNkYwMDBFNUFDNCAv
KiBKU1NWR1BhdGhTZWdBcmNBYnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTk0NkQzNzJFMUQ2Q0Iy
OTQwMDc3MDg0RiAvKiBDU1NQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREJCMEFC
NzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdBcmNSZWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyRkEzREJEMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdDbG9zZVBhdGguaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyRkEzREJGMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdD
dXJ2ZXRvQ3ViaWNBYnMuaCBpbiBIZWFkZXJzICovLApAQCAtMjUzNTksNyArMjU0MjMsNiBAQAog
CQkJCUU0RTM5QUZCMTMzMEVGQTgwMDNBQjI3NCAvKiBMZWdhY3lUaWxlTGF5ZXJQb29sLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTJERDhGNTBEOTFFNkFGMDAwRjg5RUUgLyogTGVnYWN5V2ViQXJj
aGl2ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFNjVCRUIwRUFDREYxNjAwN0U0NTMzIC8qIExl
bmd0aC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTQ2RDM3MkYxRDZDQjI5NDAwNzcwODRGIC8qIENT
U1BhcnNlck1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkY2NDkxMEVBRDE1QzIwMEMxRDZG
NyAvKiBMZW5ndGhCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUU1QkE3RDYzMTUxNDM3Q0EwMEZF
MUUzRiAvKiBMZW5ndGhGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODcxNjcwMUM4
NjlEODMwMDRGRjBERSAvKiBMZW5ndGhQb2ludC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTQwNiwx
NCArMjU0NjksMTQgQEAKIAkJCQlGQUJFNzJGNTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDRBMjhBQUMxMkRGQjhBQzAwQUU5MjNCIC8qIE1h
dGhNTEVsZW1lbnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQkNGODNGNzEwNTlDMUVC
MDBEOTk5REQgLyogTWF0aE1MRnJhY3Rpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlG
QUJFNzJGNzEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkFCRTcyRjkxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTE1hdGhF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NEEyOEFBRjEyREZCOEJGMDBBRTkyM0IgLyog
TWF0aE1MTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZBNjU0QTZDMTEwOEFCRUQwMDI2MTZG
MSAvKiBNYXRoTUxPcGVyYXRvckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUZBQkU3MkY3
MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGQTc2NUE2QzExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MUm93RWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNEZBNjVBNkMxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNw
YWNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5MTc2RTAxMkRBMjVFMTdCQUY4MEEy
IC8qIE1hdGhNTFN0eWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQTY1NEE2QzExMDhBQkVEMDAy
NjE1RTAgLyogTWF0aE1MVG9rZW5FbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlGQTc2NUE2
QzExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MUm93RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkE2NTRBNkMxMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTQzOTA0NkVBMTJEQTI1RTgxMkFGODBBQyAvKiBNYXRoT3BlcmF0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RDVEQzJDMEY0MjNBNzMwMDhGMjBGRCAvKiBNYXRy
aXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTUzNCw2ICsyNTU5
Nyw4IEBACiAJCQkJNTJGMTA4NjYxNjJCNkRBODAwOUFDODFFIC8qIE1peGVkQ29udGVudENoZWNr
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMTI1MjQ5MUExNkMzQkMwMDg2NDQ4MCAvKiBNb2Jp
bGVHZXN0YWx0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYyQjAxMTE4MjA1NDA2MDBGMkI0
MjQgLyogTW9ja0JveC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwNThBRTAxRDY3QzIyOTAwOUE1
MzhDIC8qIE1vY2tHYW1lcGFkLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTA1OEFFMjFENjdDMjI5
MDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUVB
M0Q2REYxQzg1OUQ3RjAwMzAwQkJCIC8qIE1vY2tNZWRpYUVuZHBvaW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlDREYyQjAxMzE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhUGxheWVyTWVkaWFT
b3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjJCMDE1MTgyMDU0MDYwMEYyQjQyNCAvKiBN
b2NrTWVkaWFTb3VyY2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTI2NTM5LDcgKzI2NjA0
LDYgQEAKIAkJCQkwODEzQTRFQTEyODQxMzI2MDA5OTI1MTEgLyogU1ZHU3RhdGljUHJvcGVydHlU
ZWFyT2ZmLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FBOTBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHU3RvcEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUFDMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdTdHJpbmdMaXN0LmggaW4gSGVhZGVycyAqLywKLQkJCQk5NDZEMzczMTFENkNC
Mjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIy
N0FCODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3R5bGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjIyN0FCQjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU1ZHRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjIyMjdBQkUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N3aXRjaEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtMjcyNzIsNyArMjczMzYsNiBAQAogCQkJCTQxN0RBNkQ5MTM3
MzRFNkUwMDdDNTdGQiAvKiBJbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE3OUYw
REExQjk3NzRGRTAwRUQwQTI3IC8qIEludGVybmFscy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE3
QkY3RURGMTRDOTE3NUEwMDE0NDg5RCAvKiBJbnRlcm5hbFNldHRpbmdzLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzRTI5RTVFMTY3QThBMTkwMDU4NkQzRCAvKiBJbnRl
cm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNzE0RUIwMUNG
NjY1Q0UwMDQ3MjNDNCAvKiBKU0dDT2JzZXJ2YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDE3REE3MUQxMzczNURGQTAwN0M1N0ZCIC8qIEpTSW50ZXJuYWxzLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMjcyODIsMTIgKzI3MzQ1LDEzIEBACiAJCQkJQ0Q1MzkzRDMxNzVFMDE4NjAwQzA3MTIz
IC8qIEpTTWVtb3J5SW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTlBRUEyMjFBQUE4MDhB
MDBCNTJCMjUgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUExRTVCMzFGMUFBRDFEQTQwMDZFQkVGQiAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTEwNThBREIxRDY3OTJDMTAwOUE1
MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJENDE1MERFMUMxRjg2
OEMwMDBBM0JBMiAvKiBKU01vY2tQYWdlT3ZlcmxheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
QkY1MTIxQzE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0RDMjZCNDAxNjBBOENDNjAwMjY3NTdCIC8qIE1vY2tDRE0uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTFCRjZCODIxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50Rmls
dGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExQjVCMjlFMUFBQTg0NkUwMDhCNjA0MiAvKiBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMDU4QURC
MUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
MTA1OEFERDFENjc5MkMxMDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyRDZGM0U5MDFDMUVDQjI3MDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTdGMDQ3MTlERDQxM0MwMDFFRTlDMyAvKiBNb2Nr
UGFnZU92ZXJsYXlDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUE1RjNCOEYxNkNDNEIz
OTAwNDU1RUIwIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMjc2NzMsMTUgKzI3NzM3LDIzIEBACiAJCQkJMzEyODhFNzIwRTMwMDVENjAwMzYx
OUFFIC8qIENTU0tleWZyYW1lUnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTI4OEU3NDBF
MzAwNUQ2MDAzNjE5QUUgLyogQ1NTS2V5ZnJhbWVzUnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzc3MkUxNjEzMzE2MkMyMDAxRUM5Q0UgLyogQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk5NDZEMzc0OTFENkQwNjI4MDA3NzA4NEYgLyogQ1NTTWFya3Vw
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU2Q0ZDMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NN
ZWRpYVJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE0QkUzQTMxQjMwRjZEMTAwMTQxOTgy
IC8qIENTU05hbWVkSW1hZ2VWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGOThGRkY0NDEx
QTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBF
NkNGNTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUGFnZVJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJOTQ2RDM3MkQxRDZDQjI5NDAwNzcwODRGIC8qIENTU1BhcnNlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk5NDlDNzcwMDFENkUxRDk4MDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTk0OUM3NzA4MUQ2RTQ5ODcwMEMwREU0RiAvKiBDU1NQYXJz
ZXJPYnNlcnZlcldyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTQ2RDM3M0YxRDZDRTND
MjAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0NkQz
NzREMUQ2RDA4QTYwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJhbmdlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTk0NkQzNzMwMUQ2Q0IyOTQwMDc3MDg0RiAvKiBDU1NQYXJzZXJWYWx1ZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3QjM4NjIxMjI4ODNFOTAwQjgxRkY4IC8qIENTU1ByZWxv
YWRTY2FubmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU2RDA1MEExOTg5Q0EwMDdGQjhD
NSAvKiBDU1NQcmltaXRpdmVWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBFNkNGNzBB
MTk4OUNBMDA3RkI4QzUgLyogQ1NTUHJvcGVydHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzhE
MDJCQzUxNTRBMThERjAwQjYyRDA1IC8qIENTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBQkE3NkNBMTFEMjBFNTAwMDRDMjAxQyAvKiBDU1NQcm9wZXJ0eU5hbWVz
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0NkQzNzQ1MUQ2RDAxRDQwMDc3MDg0RiAvKiBDU1NQ
cm9wZXJ0eVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NDlDNzcwNDFENkUzOUVBMDBD
MERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTgyRTNEOERFMTIyRUEwRDEwMDNBRTVCQyAvKiBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkM1QTEyREYwREMwNDE0ODAwQzlBRkFEIC8qIENTU1JlZmxlY3RW
YWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzdEOEZGMzFCRDFBNDc5MDBGRkU1NDAgLyog
Q1NTUmV2ZXJ0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzY5NSw2ICsyNzc2Nyw4IEBA
CiAJCQkJQThFQTgwMDgwQTE5NTE2RTAwQThFRjVGIC8qIENTU1N0eWxlU2hlZXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkQ2Nzc3MzkxOTVDQUZCQTAwNzJFMEQzIC8qIENTU1N1cHBvcnRzUnVs
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzgwQzk4NzBDRDI5NEVFMDBBMEI3QjMgLyogQ1NT
VGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NDZEMzczOTFENkNE
RkMwMDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0NkQz
NzNCMUQ2Q0RGQzAwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5QUIxRjM4MTE4RTI0ODlBMDA1MzQ3NDMgLyogQ1NTVG9MZW5ndGhDb252
ZXJzaW9uRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODgyREEyMDE1OTM4NDZBMDAwMTE1
RUQgLyogQ1NTVG9TdHlsZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzFGNTNFQTBEMjcw
NEY5MDBFQ0UwRDUgLyogQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0yODM2Nyw2ICsyODQ0MSw3IEBACiAJCQkJOTc1Q0EyQTExMzAzNjc5RDAwRTk5QUQ5IC8qIEpT
Q3J5cHRvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTdBOEYwMTgxODU0MjUwMDlGODIxRCAv
KiBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFDNjU3
MTIxODE1RjlERDAwMjU2Q0REIC8qIEpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3Q0VGMjYxOTFENkE5MzE3MDBCRTkwNUQgLyogSlNDcnlwdG9DdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE1N0E4RTAxODE3MzMxQzAwOUY4MjFEIC8qIEpT
Q3J5cHRvS2V5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTdBOEU4MTgxODRDNjcwMDlGODIx
RCAvKiBKU0NyeXB0b0tleUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUY4MEI4RDE4
MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
Mjg2ODQsNyArMjg3NTksNiBAQAogCQkJCTFBNzUwRDhEMEE5MEU1MjEwMDBGRjIxNSAvKiBKU05v
ZGVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTc1MERENDBBOTBFNzI5MDAwRkYy
MTUgLyogSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNEOUMy
QzIwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
OTQ2RDM3MzAxRDZDQjI5NDAwNzcwODRGIC8qIENTU1BhcnNlclZhbHVlcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQ0Q5QzI2NTBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlTGlzdEN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzkxQTM4RjFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2Rl
T3JTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzM1MDNDQTMxMDE3OUFENzAwM0I0N0Ux
IC8qIEpTTm90aWZpY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkxMDEsMTkgKzI5MTc1
LDE5IEBACiAJCQkJRkFCRTcyRjQxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkFCRTcyRkQxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTEVs
ZW1lbnRGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBCQ0Y4M0Y2MTA1OUMxRUIwMEQ5
OTlERCAvKiBNYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkFC
RTcyRjYxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRkFCRTcyRjgxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTE1hdGhF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA1RDkxM0NFRUFCMkE2MDUzNDIxOEFDRiAv
KiBNYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkFCRTcyRkUx
MDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE2
RUEyNENFRUFCMkE2MDUzNDIxOEFDRiAvKiBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRkE2NTRBNkIxMTA4QUJFRDAwMjYxNkYxIC8qIE1hdGhNTE9wZXJh
dG9yRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTlDQTM5MENFRDY2QzMyNTVGNzJD
NTkgLyogTWF0aE1MUGFkZGVkRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGQUJFNzJG
NjEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlGQTc2NUE2QjExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MUm93RWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTlDQTM5MENFRDY2QzMyNTVGNzJCNDggLyogTWF0
aE1MU2NyaXB0c0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVENDgzOTBDRUQ2NkMz
MjU1RjcyQzU5IC8qIE1hdGhNTFNlbGVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NEZBNjVBNkIxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0MzkxNzZERjEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkE2NTRBNkIxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRv
a2VuRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGQTc2NUE2QjExMDhBQkVEMDAyNjE1
RTAgLyogTWF0aE1MUm93RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGQTY1NEE2QjEx
MDhBQkVEMDAyNjI2RjEgLyogTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0MzkwNDZFOTEyREEyNUU4MTJBRjgwQUMgLyogTWF0aE9wZXJhdG9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTQ5RDVEQzJCMEY0MjNBNzMwMDhGMjBGRCAvKiBNYXRyaXgzRFRyYW5z
Zm9ybU9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5MjE1LDYgKzI5Mjg5LDggQEAK
IAkJCQlDNTNEMzkzNDFDOTc4QTQ1MDA3RjNBRTkgLyogTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTJGMTA4NjUxNjJCNkRBNDAwOUFDODFFIC8qIE1peGVkQ29u
dGVudENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RGMkIwMTAxODIwNTQwNjAwRjJC
NDI0IC8qIE1vY2tCb3guY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEwNThBREYxRDY3QzIyOTAw
OUE1MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMDU4QUUxMUQ2
N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTVFQTNENkUwMUM4NTlEODQwMDMwMEJCQiAvKiBNb2NrTWVkaWFFbmRwb2ludC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDREYyQjAxMjE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RGMkIwMTQxODIwNTQwNjAw
RjJCNDI0IC8qIE1vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
OTI1Nyw3ICsyOTMzMyw2IEBACiAJCQkJNDQzRjA0MjcwRTc1QzhGQjAwN0U1NDA3IC8qIE5ldHdv
cmtTdGF0ZU5vdGlmaWVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3RkE2NDkwRERBM0NC
QTAwMjhGOEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyTWFjLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTVDM0M4NTZEMUQ1QTdBREUwMDg4QjlFQyAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb24uY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJNTEwNThBREYxRDY3QzIyOTAwOUE1MzhDIC8qIE1vY2tHYW1l
cGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxM0VGMzQ5MTY4NTBDNDcwMDM0QzgzRiAvKiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNjkzOTcy
NjFBNEE1RkJEMDBFODM0OUQgLyogTkZBLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2NzcyNjAw
MUE1QjNBRDkwMDNDMjRERCAvKiBORkFUb0RGQS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5Mjkx
LDcgKzI5MzY2LDYgQEAKIAkJCQlGREE5MzI1RDE2NzAzQjJBMDA4OTgyREMgLyogT2ZmbGluZUF1
ZGlvQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREEzRTk1QjEzNEE0OUVGMDA4RDRC
NUEgLyogT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyRDNEQTY0MEQwMDZDRDYwMEVGNkYzQSAvKiBPcGVuVHlwZUNHLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTUxMDU4QUUxMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUIyRDNEQTY0MEQwMDZDRDYwMEVGNkYyNyAvKiBPcGVuVHlw
ZU1hdGhEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERTdGQzQ0MTgxOTA0QjEwMDJCQkI3
NyAvKiBPcmRlckl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTAwMTQ2MjhBMTAzQ0Qx
REUwMDBCMjBEQiAvKiBPcmlnaW5BY2Nlc3NFbnRyeS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5
MzUwLDcgKzI5NDI0LDYgQEAKIAkJCQkwRjQzQzg1RDE4OUUxMENGMDAwMTlBRTIgLyogUGVyZm9y
bWFuY2VUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1ODFGQjQxNTIwRjkzQjAwM0E3
QTc1IC8qIFBlcmlvZGljV2F2ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUQ1REMyRDBGNDIz
QTczMDA4RjIwRkQgLyogUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJOTQ2RDM3MzMxRDZDQzQyQjAwNzcwODRGIC8qIFNWR0NTU1BhcnNlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlEMEZGMkE1RDExRjhDNDVBMDA3RTc0RTAgLyogUGluZ0xvYWRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDdEMzM0MzFDN0ExMjNGMDAwNDEyOTMgLyogUGl4
ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkRGNDVBNzFCRDFD
NkZEMDBFNEZBOEMgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI5NzY5LDcgKzI5ODQyLDYgQEAKIAkJCQk5MzMwOUUxNTA5OUU2NDkyMDA1NkU1ODEgLyogU3Bs
aXRUZXh0Tm9kZUNvbnRhaW5pbmdFbGVtZW50Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBMUUxMTU0ODEzMDE1QzVEMDA1NEFDOEMgLyogU3BvdExpZ2h0U291cmNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3QkM2QTNFMTUwNUYwODEwMDFCNzRBQyAvKiBTUUxFeGNlcHRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJN0NFRjI2MTkxRDZBOTMxNzAwQkU5MDVEIC8qIEpTQ3J5cHRv
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkU2RTdBMENDNTU2RDUwMDRBMjA2MiAv
KiBTUUxpdGVBdXRob3JpemVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMjI0NjQ5MENDOThE
REIwMEMwNTI0MCAvKiBTUUxpdGVEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RTQ3
NEUyMDEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMjk4ODQsNiArMjk5NTYsNyBAQAogCQkJCUIyMjI3OUExMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdDb2xvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlBNDBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjIyMjdCMDUwRDAwQkZGMTAwNzFCNzgyIC8qIFNWR0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NDZEMzczMzFENkNDNDJC
MDA3NzA4NEYgLyogU1ZHQ1NTUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUE3
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdDdXJzb3JFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUIyMjI3OUFEMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdEZWZzRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCMjIyNzlCMDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRGVzY0VsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDA4Niw3ICszMDE1OSw2IEBACiAJCQkJN0FBM0E2OTkx
OTRBNjRFNzAwMUNCRDI0IC8qIFRpbGVDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFGNzJCRjBBMTg3RkQ0NDkwMDA5QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJ
T1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FBM0E2QTMxOTRCNUMyMjAwMUNCRDI0IC8qIFRp
bGVDb3ZlcmFnZU1hcC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5NDZEMzcyRDFENkNCMjk0MDA3
NzA4NEYgLyogQ1NTUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBQTNBNjlCMTk0QTY0
RTcwMDFDQkQyNCAvKiBUaWxlR3JpZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTg3NzBGMjEy
NDJDNTM1MDAyMjI2QkEgLyogVGlsaW5nRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNTVC
M0REQjEyNTFGMTJEMDAzRUYyNjkgLyogVGltZUlucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNYXJrdXAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NNYXJrdXAuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NNYXJrdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTU4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDUgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIChrZGVAY2FyZXdvbGYu
Y29tKQorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5
LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNyBOaWNob2xhcyBTaGFua3MgPHdlYmtpdEBuaWNrc2hhbmtzLmNvbT4K
KyAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICog
Q29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
IChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRv
YmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NNYXJrdXAuaCIKKworI2luY2x1ZGUgIkNTU1Bh
cnNlcklkaW9tcy5oIgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+CitzdGF0aWMgaW5saW5lIGJvb2wgaXNDU1NUb2tlbml6ZXJJZGVudGlmaWVyKGNvbnN0IENo
YXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBjb25zdCBD
aGFyYWN0ZXJUeXBlKiBlbmQgPSBjaGFyYWN0ZXJzICsgbGVuZ3RoOworCisgICAgLy8gLT8KKyAg
ICBpZiAoY2hhcmFjdGVycyAhPSBlbmQgJiYgY2hhcmFjdGVyc1swXSA9PSAnLScpCisgICAgICAg
ICsrY2hhcmFjdGVyczsKKworICAgIC8vIHtubXN0YXJ0fQorICAgIGlmIChjaGFyYWN0ZXJzID09
IGVuZCB8fCAhaXNOYW1lU3RhcnRDb2RlUG9pbnQoY2hhcmFjdGVyc1swXSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICArK2NoYXJhY3RlcnM7CisKKyAgICAvLyB7bm1jaGFyfSoKKyAgICBm
b3IgKDsgY2hhcmFjdGVycyAhPSBlbmQ7ICsrY2hhcmFjdGVycykgeworICAgICAgICBpZiAoIWlz
TmFtZUNvZGVQb2ludChjaGFyYWN0ZXJzWzBdKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gImlkZW50IiBmcm9tIHRoZSBDU1Mg
dG9rZW5pemVyLCBtaW51cyBiYWNrc2xhc2gtZXNjYXBlIHNlcXVlbmNlcworc3RhdGljIGJvb2wg
aXNDU1NUb2tlbml6ZXJJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIHVu
c2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKworICAgIGlmICghbGVuZ3RoKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICBy
ZXR1cm4gaXNDU1NUb2tlbml6ZXJJZGVudGlmaWVyKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5n
dGgpOworICAgIHJldHVybiBpc0NTU1Rva2VuaXplcklkZW50aWZpZXIoc3RyaW5nLmNoYXJhY3Rl
cnMxNigpLCBsZW5ndGgpOworfQorCitzdGF0aWMgdm9pZCBzZXJpYWxpemVDaGFyYWN0ZXIoVUNo
YXIzMiBjLCBTdHJpbmdCdWlsZGVyJiBhcHBlbmRUbykKK3sKKyAgICBhcHBlbmRUby5hcHBlbmQo
J1xcJyk7CisgICAgYXBwZW5kVG8uYXBwZW5kKGMpOworfQorCitzdGF0aWMgdm9pZCBzZXJpYWxp
emVDaGFyYWN0ZXJBc0NvZGVQb2ludChVQ2hhcjMyIGMsIFN0cmluZ0J1aWxkZXImIGFwcGVuZFRv
KQoreworICAgIGFwcGVuZFRvLmFwcGVuZCgnXFwnKTsKKyAgICBhcHBlbmRVbnNpZ25lZEFzSGV4
KGMsIGFwcGVuZFRvLCBMb3dlcmNhc2UpOworICAgIGFwcGVuZFRvLmFwcGVuZCgnICcpOworfQor
Cit2b2lkIHNlcmlhbGl6ZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBTdHJp
bmdCdWlsZGVyJiBhcHBlbmRUbywgYm9vbCBza2lwU3RhcnRDaGVja3MpCit7CisgICAgYm9vbCBp
c0ZpcnN0ID0gIXNraXBTdGFydENoZWNrczsKKyAgICBib29sIGlzU2Vjb25kID0gZmFsc2U7Cisg
ICAgYm9vbCBpc0ZpcnN0Q2hhckh5cGhlbiA9IGZhbHNlOworICAgIHVuc2lnbmVkIGluZGV4ID0g
MDsKKyAgICB3aGlsZSAoaW5kZXggPCBpZGVudGlmaWVyLmxlbmd0aCgpKSB7CisgICAgICAgIFVD
aGFyMzIgYyA9IGlkZW50aWZpZXIuY2hhcmFjdGVyU3RhcnRpbmdBdChpbmRleCk7CisgICAgICAg
IGlmICghYykgeworICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGxvbmUgc3Vycm9nYXRlIHdoaWNo
IGNoYXJhY3RlclN0YXJ0aW5nQXQgZG9lcyBub3QgcmV0dXJuLgorICAgICAgICAgICAgYyA9IGlk
ZW50aWZpZXJbaW5kZXhdOworICAgICAgICB9CisKKyAgICAgICAgaW5kZXggKz0gVTE2X0xFTkdU
SChjKTsKKworICAgICAgICBpZiAoIWMpCisgICAgICAgICAgICBhcHBlbmRUby5hcHBlbmQoMHhm
ZmZkKTsKKyAgICAgICAgZWxzZSBpZiAoYyA8PSAweDFmIHx8IGMgPT0gMHg3ZiB8fCAoMHgzMCA8
PSBjICYmIGMgPD0gMHgzOSAmJiAoaXNGaXJzdCB8fCAoaXNTZWNvbmQgJiYgaXNGaXJzdENoYXJI
eXBoZW4pKSkpCisgICAgICAgICAgICBzZXJpYWxpemVDaGFyYWN0ZXJBc0NvZGVQb2ludChjLCBh
cHBlbmRUbyk7CisgICAgICAgIGVsc2UgaWYgKGMgPT0gMHgyZCAmJiBpc0ZpcnN0ICYmIGluZGV4
ID09IGlkZW50aWZpZXIubGVuZ3RoKCkpCisgICAgICAgICAgICBzZXJpYWxpemVDaGFyYWN0ZXIo
YywgYXBwZW5kVG8pOworICAgICAgICBlbHNlIGlmICgweDgwIDw9IGMgfHwgYyA9PSAweDJkIHx8
IGMgPT0gMHg1ZiB8fCAoMHgzMCA8PSBjICYmIGMgPD0gMHgzOSkgfHwgKDB4NDEgPD0gYyAmJiBj
IDw9IDB4NWEpIHx8ICgweDYxIDw9IGMgJiYgYyA8PSAweDdhKSkKKyAgICAgICAgICAgIGFwcGVu
ZFRvLmFwcGVuZChjKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2VyaWFsaXplQ2hhcmFj
dGVyKGMsIGFwcGVuZFRvKTsKKworICAgICAgICBpZiAoaXNGaXJzdCkgeworICAgICAgICAgICAg
aXNGaXJzdCA9IGZhbHNlOworICAgICAgICAgICAgaXNTZWNvbmQgPSB0cnVlOworICAgICAgICAg
ICAgaXNGaXJzdENoYXJIeXBoZW4gPSAoYyA9PSAweDJkKTsKKyAgICAgICAgfSBlbHNlIGlmIChp
c1NlY29uZCkKKyAgICAgICAgICAgIGlzU2Vjb25kID0gZmFsc2U7CisgICAgfQorfQorCit2b2lk
IHNlcmlhbGl6ZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgU3RyaW5nQnVpbGRlciYgYXBw
ZW5kVG8pCit7CisgICAgYXBwZW5kVG8uYXBwZW5kKCdcIicpOworCisgICAgdW5zaWduZWQgaW5k
ZXggPSAwOworICAgIHdoaWxlIChpbmRleCA8IHN0cmluZy5sZW5ndGgoKSkgeworICAgICAgICBV
Q2hhcjMyIGMgPSBzdHJpbmcuY2hhcmFjdGVyU3RhcnRpbmdBdChpbmRleCk7CisgICAgICAgIGlu
ZGV4ICs9IFUxNl9MRU5HVEgoYyk7CisKKyAgICAgICAgaWYgKGMgPD0gMHgxZiB8fCBjID09IDB4
N2YpCisgICAgICAgICAgICBzZXJpYWxpemVDaGFyYWN0ZXJBc0NvZGVQb2ludChjLCBhcHBlbmRU
byk7CisgICAgICAgIGVsc2UgaWYgKGMgPT0gMHgyMiB8fCBjID09IDB4NWMpCisgICAgICAgICAg
ICBzZXJpYWxpemVDaGFyYWN0ZXIoYywgYXBwZW5kVG8pOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBhcHBlbmRUby5hcHBlbmQoYyk7CisgICAgfQorCisgICAgYXBwZW5kVG8uYXBwZW5kKCdc
IicpOworfQorCitTdHJpbmcgc2VyaWFsaXplU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQor
eworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBzZXJpYWxpemVTdHJpbmcoc3RyaW5n
LCBidWlsZGVyKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitTdHJpbmcg
c2VyaWFsaXplVVJJKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIHJldHVybiAidXJsKCIg
KyBzZXJpYWxpemVTdHJpbmcoc3RyaW5nKSArICIpIjsKK30KKworU3RyaW5nIHNlcmlhbGl6ZUZv
bnRGYW1pbHkoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgcmV0dXJuIGlzQ1NTVG9rZW5p
emVySWRlbnRpZmllcihzdHJpbmcpID8gc3RyaW5nIDogc2VyaWFsaXplU3RyaW5nKHN0cmluZyk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NNYXJrdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWFya3VwLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU01hcmt1cC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgTGFycyBL
bm9sbCAoa25vbGxAa2RlLm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOSAtIDIwMTAgIFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2lmbmRlZiBDU1NNYXJrdXBfaAorI2RlZmluZSBDU1NNYXJrdXBfaAor
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKy8vIEhlbHBlciBmdW5jdGlvbnMg
Zm9yIGNvbnZlcnRpbmcgZnJvbSBDU1NWYWx1ZXMgdG8gdGV4dC4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisvLyBDb21tb24gc2VyaWFsaXppbmcgbWV0aG9kcy4gU2VlOiBodHRwOi8vZGV2Lncz
Lm9yZy9jc3N3Zy9jc3NvbS8jY29tbW9uLXNlcmlhbGl6aW5nLWlkaW9tcwordm9pZCBzZXJpYWxp
emVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgU3RyaW5nQnVpbGRlciYgYXBw
ZW5kVG8sIGJvb2wgc2tpcFN0YXJ0Q2hlY2tzID0gZmFsc2UpOwordm9pZCBzZXJpYWxpemVTdHJp
bmcoY29uc3QgU3RyaW5nJiwgU3RyaW5nQnVpbGRlciYgYXBwZW5kVG8pOworU3RyaW5nIHNlcmlh
bGl6ZVN0cmluZyhjb25zdCBTdHJpbmcmKTsKK1N0cmluZyBzZXJpYWxpemVVUkkoY29uc3QgU3Ry
aW5nJik7CitTdHJpbmcgc2VyaWFsaXplRm9udEZhbWlseShjb25zdCBTdHJpbmcmKTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ1NTTWFya3VwX2gKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NPTVV0aWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTT01VdGlscy5jcHAJKHJldmlzaW9uIDIwNDk3OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NPTVV0aWxzLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDEwNiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNTU09NVXRpbHMuaCIKLQotI2luY2x1ZGUgPHd0Zi9I
ZXhOdW1iZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotdm9pZCBzZXJpYWxpemVDaGFyYWN0ZXIoVUNoYXIzMiBjLCBTdHJp
bmdCdWlsZGVyJiBhcHBlbmRUbykKLXsKLSAgICBhcHBlbmRUby5hcHBlbmQoJ1xcJyk7Ci0gICAg
YXBwZW5kVG8uYXBwZW5kKGMpOwotfQotCi12b2lkIHNlcmlhbGl6ZUNoYXJhY3RlckFzQ29kZVBv
aW50KFVDaGFyMzIgYywgU3RyaW5nQnVpbGRlciYgYXBwZW5kVG8pCi17Ci0gICAgYXBwZW5kVG8u
YXBwZW5kKCdcXCcpOwotICAgIGFwcGVuZFVuc2lnbmVkQXNIZXgoYywgYXBwZW5kVG8sIExvd2Vy
Y2FzZSk7Ci0gICAgYXBwZW5kVG8uYXBwZW5kKCcgJyk7Ci19Ci0KLXZvaWQgc2VyaWFsaXplSWRl
bnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFN0cmluZ0J1aWxkZXImIGFwcGVuZFRv
KQotewotICAgIGJvb2wgaXNGaXJzdCA9IHRydWU7Ci0gICAgYm9vbCBpc1NlY29uZCA9IGZhbHNl
OwotICAgIGJvb2wgaXNGaXJzdENoYXJIeXBoZW4gPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBpbmRl
eCA9IDA7Ci0gICAgd2hpbGUgKGluZGV4IDwgaWRlbnRpZmllci5sZW5ndGgoKSkgewotICAgICAg
ICBVQ2hhcjMyIGMgPSBpZGVudGlmaWVyLmNoYXJhY3RlclN0YXJ0aW5nQXQoaW5kZXgpOwotICAg
ICAgICBpZiAoIWMpIHsKLSAgICAgICAgICAgIC8vIENoZWNrIGZvciBsb25lIHN1cnJvZ2F0ZSB3
aGljaCBjaGFyYWN0ZXJTdGFydGluZ0F0IGRvZXMgbm90IHJldHVybi4KLSAgICAgICAgICAgIGMg
PSBpZGVudGlmaWVyW2luZGV4XTsKLSAgICAgICAgfQotCi0gICAgICAgIGluZGV4ICs9IFUxNl9M
RU5HVEgoYyk7Ci0KLSAgICAgICAgaWYgKCFjKQotICAgICAgICAgICAgYXBwZW5kVG8uYXBwZW5k
KDB4ZmZmZCk7Ci0gICAgICAgIGVsc2UgaWYgKGMgPD0gMHgxZiB8fCBjID09IDB4N2YgfHwgKDB4
MzAgPD0gYyAmJiBjIDw9IDB4MzkgJiYgKGlzRmlyc3QgfHwgKGlzU2Vjb25kICYmIGlzRmlyc3RD
aGFySHlwaGVuKSkpKQotICAgICAgICAgICAgc2VyaWFsaXplQ2hhcmFjdGVyQXNDb2RlUG9pbnQo
YywgYXBwZW5kVG8pOwotICAgICAgICBlbHNlIGlmIChjID09IDB4MmQgJiYgaXNGaXJzdCAmJiBp
bmRleCA9PSBpZGVudGlmaWVyLmxlbmd0aCgpKQotICAgICAgICAgICAgc2VyaWFsaXplQ2hhcmFj
dGVyKGMsIGFwcGVuZFRvKTsKLSAgICAgICAgZWxzZSBpZiAoMHg4MCA8PSBjIHx8IGMgPT0gMHgy
ZCB8fCBjID09IDB4NWYgfHwgKDB4MzAgPD0gYyAmJiBjIDw9IDB4MzkpIHx8ICgweDQxIDw9IGMg
JiYgYyA8PSAweDVhKSB8fCAoMHg2MSA8PSBjICYmIGMgPD0gMHg3YSkpCi0gICAgICAgICAgICBh
cHBlbmRUby5hcHBlbmQoYyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNlcmlhbGl6ZUNo
YXJhY3RlcihjLCBhcHBlbmRUbyk7Ci0KLSAgICAgICAgaWYgKGlzRmlyc3QpIHsKLSAgICAgICAg
ICAgIGlzRmlyc3QgPSBmYWxzZTsKLSAgICAgICAgICAgIGlzU2Vjb25kID0gdHJ1ZTsKLSAgICAg
ICAgICAgIGlzRmlyc3RDaGFySHlwaGVuID0gKGMgPT0gMHgyZCk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoaXNTZWNvbmQpCi0gICAgICAgICAgICBpc1NlY29uZCA9IGZhbHNlOwotICAgIH0KLX0KLQot
dm9pZCBzZXJpYWxpemVTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIFN0cmluZ0J1aWxkZXIm
IGFwcGVuZFRvKQotewotICAgIGFwcGVuZFRvLmFwcGVuZCgnXCInKTsKLQotICAgIHVuc2lnbmVk
IGluZGV4ID0gMDsKLSAgICB3aGlsZSAoaW5kZXggPCBzdHJpbmcubGVuZ3RoKCkpIHsKLSAgICAg
ICAgVUNoYXIzMiBjID0gc3RyaW5nLmNoYXJhY3RlclN0YXJ0aW5nQXQoaW5kZXgpOwotICAgICAg
ICBpbmRleCArPSBVMTZfTEVOR1RIKGMpOwotICAgICAgICBpZiAoYyA8PSAweDFmKQotICAgICAg
ICAgICAgc2VyaWFsaXplQ2hhcmFjdGVyQXNDb2RlUG9pbnQoYywgYXBwZW5kVG8pOwotICAgICAg
ICBlbHNlIGlmIChjID09IDB4MjIgfHwgYyA9PSAweDVjKQotICAgICAgICAgICAgc2VyaWFsaXpl
Q2hhcmFjdGVyKGMsIGFwcGVuZFRvKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXBwZW5k
VG8uYXBwZW5kKGMpOwotICAgIH0KLQotICAgIGFwcGVuZFRvLmFwcGVuZCgnXCInKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNv
cmUvY3NzL0NTU09NVXRpbHMuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQoj
IyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL0NTU09NVXRpbHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTT01VdGlscy5oCShyZXZpc2lvbiAyMDQ5NzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTT01VdGlscy5oCShub25leGlzdGVudCkKQEAgLTEsNDYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaW5jbHVkZSA8dW5pY29kZS91bWFjaGluZS5oPgotI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+Ci0KLS8vIFV0aWxpdGllcyBmb3IgQ1NTT00gaHR0cDovL2Rldi53My5vcmcvY3Nz
d2cvY3Nzb20vCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gQ29tbW9uIHNlcmlhbGl6aW5n
IG1ldGhvZHMuIFNlZTogaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nzb20vI2NvbW1vbi1zZXJp
YWxpemluZy1pZGlvbXMKLXZvaWQgc2VyaWFsaXplQ2hhcmFjdGVyKFVDaGFyMzIsIFN0cmluZ0J1
aWxkZXImKTsKLXZvaWQgc2VyaWFsaXplQ2hhcmFjdGVyQXNDb2RlUG9pbnQoVUNoYXIzMiwgU3Ry
aW5nQnVpbGRlciYpOwotdm9pZCBzZXJpYWxpemVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllciwgU3RyaW5nQnVpbGRlciYpOwotdm9pZCBzZXJpYWxpemVTdHJpbmcoY29uc3QgU3Ry
aW5nJiwgU3RyaW5nQnVpbGRlciYpOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTT01VdGlscy5oCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
RGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCShy
ZXZpc2lvbiAyMDQ5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiQ1NTU2VsZWN0b3IuaCIKIAotI2luY2x1ZGUgIkNTU09NVXRpbHMuaCIKKyNpbmNsdWRl
ICJDU1NNYXJrdXAuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKICNpbmNsdWRlICJTZWxlY3RvclBzZXVkb1R5cGVNYXAuaCIKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NOYW1lc3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9ET01DU1NOYW1lc3BhY2UuY3BwCShyZXZpc2lvbiAyMDQ5NzgpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTTmFtZXNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNyArMzAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRPTUNTU05hbWVz
cGFjZS5oIgogCi0jaW5jbHVkZSAiQ1NTT01VdGlscy5oIgorI2luY2x1ZGUgIkNTU01hcmt1cC5o
IgogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTExNyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgVGhlIENocm9t
aXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NQ
YXJzZXJGYXN0UGF0aHMuaCIKKworLy8gRklYTUUtTkVXUEFSU0VSOiAjaW5jbHVkZSAiQ1NTQ29s
b3JWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0Z1bmN0aW9uVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NJ
bmhlcml0ZWRWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0luaXRpYWxWYWx1ZS5oIgorI2luY2x1ZGUg
IkNTU1BhcnNlcklkaW9tcy5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCisjaW5j
bHVkZSAiQ1NTUHJvcGVydHlQYXJzZXIuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgi
CisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorLy8gRklYTUUtTkVXUEFSU0VS
OiAjaW5jbHVkZSAiU3R5bGVDb2xvci5oIgorI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTaG9ydGhh
bmQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvKiBGSVhNRS1ORVdQQVJTRVI6IFR1cm4g
b2ZmIGZvciBub3cuCisgCitzdGF0aWMgaW5saW5lIGJvb2wgaXNTaW1wbGVMZW5ndGhQcm9wZXJ0
eUlEKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCwgYm9vbCYgYWNjZXB0c05lZ2F0aXZlTnVtYmVy
cykKK3sKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9u
dFNpemU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRDb2x1bW5HYXA6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUdyaWRSb3dHYXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUhlaWdodDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbkhlaWdodDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5TWluV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0
b206CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlQYWRkaW5nUmlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdUb3A6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TG9naWNhbEhlaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbFdp
ZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsSGVpZ2h0OgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nQWZ0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFBhZGRpbmdCZWZvcmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdFbmQ6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdTdGFydDoKKyAgLy8gIGNhc2UgQ1NT
UHJvcGVydHlTaGFwZU1hcmdpbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5UjoKKyAgICBjYXNlIENT
U1Byb3BlcnR5Ung6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVJ5OgorICAgICAgICBhY2NlcHRzTmVn
YXRpdmVOdW1iZXJzID0gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3R0b206CisgICAgY2FzZSBDU1NQcm9wZXJ0eUN4OgorICAgIGNhc2UgQ1NTUHJv
cGVydHlDeToKKyAgICBjYXNlIENTU1Byb3BlcnR5TGVmdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
TWFyZ2luQm90dG9tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlNYXJnaW5SaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luVG9wOgor
IC8vICAgY2FzZSBDU1NQcm9wZXJ0eU1vdGlvbk9mZnNldDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
UmlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRvcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFyZ2luQWZ0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZToK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luRW5kOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXJnaW5TdGFydDoKKyAgICBjYXNlIENTU1Byb3BlcnR5WDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5WToKKyAgICAgICAgYWNjZXB0c05lZ2F0aXZlTnVtYmVycyA9IHRydWU7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGlubGlu
ZSBib29sIHBhcnNlU2ltcGxlTGVuZ3RoKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyYgdW5pdCwgZG91
YmxlJiBudW1iZXIpCit7CisgICAgaWYgKGxlbmd0aCA+IDIgJiYgKGNoYXJhY3RlcnNbbGVuZ3Ro
IC0gMl0gfCAweDIwKSA9PSAncCcgJiYgKGNoYXJhY3RlcnNbbGVuZ3RoIC0gMV0gfCAweDIwKSA9
PSAneCcpIHsKKyAgICAgICAgbGVuZ3RoIC09IDI7CisgICAgICAgIHVuaXQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUFg7CisgICAgfSBlbHNlIGlmIChsZW5ndGggPiAxICYm
IGNoYXJhY3RlcnNbbGVuZ3RoIC0gMV0gPT0gJyUnKSB7CisgICAgICAgIGxlbmd0aCAtPSAxOwor
ICAgICAgICB1bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1BFUkNFTlRB
R0U7CisgICAgfQorCisgICAgLy8gV2UgcmVseSBvbiBjaGFyYWN0ZXJzVG9Eb3VibGUgZm9yIHZh
bGlkYXRpb24gYXMgd2VsbC4gVGhlIGZ1bmN0aW9uCisgICAgLy8gd2lsbCBzZXQgIm9rIiB0byAi
ZmFsc2UiIGlmIHRoZSBlbnRpcmUgcGFzc2VkLWluIGNoYXJhY3RlciByYW5nZSBkb2VzCisgICAg
Ly8gbm90IHJlcHJlc2VudCBhIGRvdWJsZS4KKyAgICBib29sIG9rOworICAgIG51bWJlciA9IGNo
YXJhY3RlcnNUb0RvdWJsZShjaGFyYWN0ZXJzLCBsZW5ndGgsICZvayk7CisgICAgaWYgKCFvaykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG51bWJlciA9IGNsYW1wVG88ZG91YmxlPihudW1i
ZXIsIC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCksIHN0ZDo6bnVtZXJpY19saW1p
dHM8ZmxvYXQ+OjptYXgoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBDU1NWYWx1
ZSogcGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQsIGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgQVNT
RVJUKCFzdHJpbmcuaXNFbXB0eSgpKTsKKyAgICBib29sIGFjY2VwdHNOZWdhdGl2ZU51bWJlcnMg
PSBmYWxzZTsKKworICAgIC8vIEluIEB2aWV3cG9ydCwgd2lkdGggYW5kIGhlaWdodCBhcmUgc2hv
cnRoYW5kcywgbm90IHNpbXBsZSBsZW5ndGggdmFsdWVzLgorICAgIGlmIChpc0NTU1ZpZXdwb3J0
UGFyc2luZ0VuYWJsZWRGb3JNb2RlKGNzc1BhcnNlck1vZGUpIHx8ICFpc1NpbXBsZUxlbmd0aFBy
b3BlcnR5SUQocHJvcGVydHlJZCwgYWNjZXB0c05lZ2F0aXZlTnVtYmVycykpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwor
ICAgIGRvdWJsZSBudW1iZXI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB1bml0
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6TnVtYmVyOworCisgICAgaWYgKHN0cmlu
Zy5pczhCaXQoKSkgeworICAgICAgICBpZiAoIXBhcnNlU2ltcGxlTGVuZ3RoKHN0cmluZy5jaGFy
YWN0ZXJzOCgpLCBsZW5ndGgsIHVuaXQsIG51bWJlcikpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIXBhcnNlU2ltcGxlTGVuZ3RoKHN0cmlu
Zy5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoLCB1bml0LCBudW1iZXIpKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKHVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlczo6TnVtYmVyKSB7CisgICAgICAgIGlmIChjc3NQYXJzZXJNb2RlID09IFNWR0F0
dHJpYnV0ZU1vZGUpCisgICAgICAgICAgICB1bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlczo6VXNlclVuaXRzOworICAgICAgICBlbHNlIGlmICghbnVtYmVyKQorICAgICAgICAgICAg
dW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OlBpeGVsczsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKG51bWJlciA8
IDAgJiYgIWFjY2VwdHNOZWdhdGl2ZU51bWJlcnMpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobnVtYmVyLCB1bml0KTsKK30K
Kworc3RhdGljIGlubGluZSBib29sIGlzQ29sb3JQcm9wZXJ0eUlEKENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJZCkKK3sKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
ckxlZnRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcjoKKyAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGw6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsb29kQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxp
Z2h0aW5nQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5U3RvcENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2U6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3I6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJFbmRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xv
cjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1uUnVsZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VGV4dEZpbGxDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9y
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkNvbG9yOgorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQor
CisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB3aGljaCBmb3JtIGEgdmFsaWQg
ZG91YmxlCisvLyBhbmQgYXJlIHRlcm1pbmF0ZWQgYnkgdGhlIGdpdmVuIHRlcm1pbmF0b3IgY2hh
cmFjdGVyCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBpbnQgY2hl
Y2tGb3JWYWxpZERvdWJsZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBzdHJpbmcsIGNvbnN0IENoYXJh
Y3RlclR5cGUqIGVuZCwgY29uc3QgY2hhciB0ZXJtaW5hdG9yKQoreworICAgIGludCBsZW5ndGgg
PSBlbmQgLSBzdHJpbmc7CisgICAgaWYgKGxlbmd0aCA8IDEpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgYm9vbCBkZWNpbWFsTWFya1NlZW4gPSBmYWxzZTsKKyAgICBpbnQgcHJvY2Vzc2VkTGVu
Z3RoID0gMDsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgaWYgKHN0cmluZ1tpXSA9PSB0ZXJtaW5hdG9yKSB7CisgICAgICAgICAgICBwcm9jZXNzZWRM
ZW5ndGggPSBpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFp
c0FTQ0lJRGlnaXQoc3RyaW5nW2ldKSkgeworICAgICAgICAgICAgaWYgKCFkZWNpbWFsTWFya1Nl
ZW4gJiYgc3RyaW5nW2ldID09ICcuJykKKyAgICAgICAgICAgICAgICBkZWNpbWFsTWFya1NlZW4g
PSB0cnVlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICB9CisgICAgfQorCisgICAgaWYgKGRlY2ltYWxNYXJrU2VlbiAmJiBwcm9jZXNzZWRMZW5n
dGggPT0gMSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gcHJvY2Vzc2VkTGVuZ3Ro
OworfQorCisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBjb25zdW1lZCBmb3Ig
cGFyc2luZyBhIHZhbGlkIGRvdWJsZQorLy8gdGVybWluYXRlZCBieSB0aGUgZ2l2ZW4gdGVybWlu
YXRvciBjaGFyYWN0ZXIKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGlj
IGludCBwYXJzZURvdWJsZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBzdHJpbmcsIGNvbnN0IENoYXJh
Y3RlclR5cGUqIGVuZCwgY29uc3QgY2hhciB0ZXJtaW5hdG9yLCBkb3VibGUmIHZhbHVlKQorewor
ICAgIGludCBsZW5ndGggPSBjaGVja0ZvclZhbGlkRG91YmxlKHN0cmluZywgZW5kLCB0ZXJtaW5h
dG9yKTsKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpbnQgcG9z
aXRpb24gPSAwOworICAgIGRvdWJsZSBsb2NhbFZhbHVlID0gMDsKKworICAgIC8vIFRoZSBjb25z
dW1lZCBjaGFyYWN0ZXJzIGhlcmUgYXJlIGd1YXJhbnRlZWQgdG8gYmUKKyAgICAvLyBBU0NJSSBk
aWdpdHMgd2l0aCBvciB3aXRob3V0IGEgZGVjaW1hbCBtYXJrCisgICAgZm9yICg7IHBvc2l0aW9u
IDwgbGVuZ3RoOyArK3Bvc2l0aW9uKSB7CisgICAgICAgIGlmIChzdHJpbmdbcG9zaXRpb25dID09
ICcuJykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBsb2NhbFZhbHVlID0gbG9jYWxWYWx1
ZSAqIDEwICsgc3RyaW5nW3Bvc2l0aW9uXSAtICcwJzsKKyAgICB9CisKKyAgICBpZiAoKytwb3Np
dGlvbiA9PSBsZW5ndGgpIHsKKyAgICAgICAgdmFsdWUgPSBsb2NhbFZhbHVlOworICAgICAgICBy
ZXR1cm4gbGVuZ3RoOworICAgIH0KKworICAgIGRvdWJsZSBmcmFjdGlvbiA9IDA7CisgICAgZG91
YmxlIHNjYWxlID0gMTsKKworICAgIGNvbnN0IGRvdWJsZSBtYXhTY2FsZSA9IDEwMDAwMDA7Cisg
ICAgd2hpbGUgKHBvc2l0aW9uIDwgbGVuZ3RoICYmIHNjYWxlIDwgbWF4U2NhbGUpIHsKKyAgICAg
ICAgZnJhY3Rpb24gPSBmcmFjdGlvbiAqIDEwICsgc3RyaW5nW3Bvc2l0aW9uKytdIC0gJzAnOwor
ICAgICAgICBzY2FsZSAqPSAxMDsKKyAgICB9CisKKyAgICB2YWx1ZSA9IGxvY2FsVmFsdWUgKyBm
cmFjdGlvbiAvIHNjYWxlOworICAgIHJldHVybiBsZW5ndGg7Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGJvb2wgcGFyc2VDb2xvckludE9yUGVyY2VudGFn
ZShjb25zdCBDaGFyYWN0ZXJUeXBlKiYgc3RyaW5nLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBlbmQs
IGNvbnN0IGNoYXIgdGVybWluYXRvciwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyYgZXhw
ZWN0LCBpbnQmIHZhbHVlKQoreworICAgIGNvbnN0IENoYXJhY3RlclR5cGUqIGN1cnJlbnQgPSBz
dHJpbmc7CisgICAgZG91YmxlIGxvY2FsVmFsdWUgPSAwOworICAgIGJvb2wgbmVnYXRpdmUgPSBm
YWxzZTsKKyAgICB3aGlsZSAoY3VycmVudCAhPSBlbmQgJiYgaXNIVE1MU3BhY2U8Q2hhcmFjdGVy
VHlwZT4oKmN1cnJlbnQpKQorICAgICAgICBjdXJyZW50Kys7CisgICAgaWYgKGN1cnJlbnQgIT0g
ZW5kICYmICpjdXJyZW50ID09ICctJykgeworICAgICAgICBuZWdhdGl2ZSA9IHRydWU7CisgICAg
ICAgIGN1cnJlbnQrKzsKKyAgICB9CisgICAgaWYgKGN1cnJlbnQgPT0gZW5kIHx8ICFpc0FTQ0lJ
RGlnaXQoKmN1cnJlbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgd2hpbGUgKGN1cnJl
bnQgIT0gZW5kICYmIGlzQVNDSUlEaWdpdCgqY3VycmVudCkpIHsKKyAgICAgICAgZG91YmxlIG5l
d1ZhbHVlID0gbG9jYWxWYWx1ZSAqIDEwICsgKmN1cnJlbnQrKyAtICcwJzsKKyAgICAgICAgaWYg
KG5ld1ZhbHVlID49IDI1NSkgeworICAgICAgICAgICAgLy8gQ2xhbXAgdmFsdWVzIGF0IDI1NS4K
KyAgICAgICAgICAgIGxvY2FsVmFsdWUgPSAyNTU7CisgICAgICAgICAgICB3aGlsZSAoY3VycmVu
dCAhPSBlbmQgJiYgaXNBU0NJSURpZ2l0KCpjdXJyZW50KSkKKyAgICAgICAgICAgICAgICArK2N1
cnJlbnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBsb2NhbFZhbHVl
ID0gbmV3VmFsdWU7CisgICAgfQorCisgICAgaWYgKGN1cnJlbnQgPT0gZW5kKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoZXhwZWN0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZXM6Ok51bWJlciAmJiAoKmN1cnJlbnQgPT0gJy4nIHx8ICpjdXJyZW50ID09ICclJykpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgqY3VycmVudCA9PSAnLicpIHsKKyAgICAg
ICAgLy8gV2UgYWxyZWFkeSBwYXJzZWQgdGhlIGludGVncmFsIHBhcnQsIHRyeSB0byBwYXJzZQor
ICAgICAgICAvLyB0aGUgZnJhY3Rpb24gcGFydCBvZiB0aGUgcGVyY2VudGFnZSB2YWx1ZS4KKyAg
ICAgICAgZG91YmxlIHBlcmNlbnRhZ2UgPSAwOworICAgICAgICBpbnQgbnVtQ2hhcmFjdGVyc1Bh
cnNlZCA9IHBhcnNlRG91YmxlKGN1cnJlbnQsIGVuZCwgJyUnLCBwZXJjZW50YWdlKTsKKyAgICAg
ICAgaWYgKCFudW1DaGFyYWN0ZXJzUGFyc2VkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBjdXJyZW50ICs9IG51bUNoYXJhY3RlcnNQYXJzZWQ7CisgICAgICAgIGlmICgqY3Vy
cmVudCAhPSAnJScpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGxvY2FsVmFs
dWUgKz0gcGVyY2VudGFnZTsKKyAgICB9CisKKyAgICBpZiAoZXhwZWN0ID09IENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZXM6OlBlcmNlbnRhZ2UgJiYgKmN1cnJlbnQgIT0gJyUnKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoKmN1cnJlbnQgPT0gJyUnKSB7CisgICAgICAgIGV4
cGVjdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OlBlcmNlbnRhZ2U7CisgICAgICAg
IGxvY2FsVmFsdWUgPSBsb2NhbFZhbHVlIC8gMTAwLjAgKiAyNTYuMDsKKyAgICAgICAgLy8gQ2xh
bXAgdmFsdWVzIGF0IDI1NSBmb3IgcGVyY2VudGFnZXMgb3ZlciAxMDAlCisgICAgICAgIGlmIChs
b2NhbFZhbHVlID4gMjU1KQorICAgICAgICAgICAgbG9jYWxWYWx1ZSA9IDI1NTsKKyAgICAgICAg
Y3VycmVudCsrOworICAgIH0gZWxzZSB7CisgICAgICAgIGV4cGVjdCA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZXM6Ok51bWJlcjsKKyAgICB9CisKKyAgICB3aGlsZSAoY3VycmVudCAhPSBl
bmQgJiYgaXNIVE1MU3BhY2U8Q2hhcmFjdGVyVHlwZT4oKmN1cnJlbnQpKQorICAgICAgICBjdXJy
ZW50Kys7CisgICAgaWYgKGN1cnJlbnQgPT0gZW5kIHx8ICpjdXJyZW50KysgIT0gdGVybWluYXRv
cikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIENsYW1wIG5lZ2F0aXZlIHZhbHVlcyBh
dCB6ZXJvLgorICAgIHZhbHVlID0gbmVnYXRpdmUgPyAwIDogc3RhdGljX2Nhc3Q8aW50Pihsb2Nh
bFZhbHVlKTsKKyAgICBzdHJpbmcgPSBjdXJyZW50OworICAgIHJldHVybiB0cnVlOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1Rl
bnRoQWxwaGEoY29uc3QgQ2hhcmFjdGVyVHlwZSogc3RyaW5nLCBjb25zdCBpbnQgbGVuZ3RoKQor
eworICAgIC8vICIwLlgiCisgICAgaWYgKGxlbmd0aCA9PSAzICYmIHN0cmluZ1swXSA9PSAnMCcg
JiYgc3RyaW5nWzFdID09ICcuJyAmJiBpc0FTQ0lJRGlnaXQoc3RyaW5nWzJdKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICAvLyAiLlgiCisgICAgaWYgKGxlbmd0aCA9PSAyICYmIHN0cmlu
Z1swXSA9PSAnLicgJiYgaXNBU0NJSURpZ2l0KHN0cmluZ1sxXSkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KK3N0YXRpYyBpbmxpbmUgYm9vbCBwYXJzZUFscGhhVmFsdWUoY29uc3QgQ2hhcmFj
dGVyVHlwZSomIHN0cmluZywgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kLCBjb25zdCBjaGFyIHRl
cm1pbmF0b3IsIGludCYgdmFsdWUpCit7CisgICAgd2hpbGUgKHN0cmluZyAhPSBlbmQgJiYgaXNI
VE1MU3BhY2U8Q2hhcmFjdGVyVHlwZT4oKnN0cmluZykpCisgICAgICAgIHN0cmluZysrOworCisg
ICAgYm9vbCBuZWdhdGl2ZSA9IGZhbHNlOworCisgICAgaWYgKHN0cmluZyAhPSBlbmQgJiYgKnN0
cmluZyA9PSAnLScpIHsKKyAgICAgICAgbmVnYXRpdmUgPSB0cnVlOworICAgICAgICBzdHJpbmcr
KzsKKyAgICB9CisKKyAgICB2YWx1ZSA9IDA7CisKKyAgICBpbnQgbGVuZ3RoID0gZW5kIC0gc3Ry
aW5nOworICAgIGlmIChsZW5ndGggPCAyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoc3RyaW5nW2xlbmd0aCAtIDFdICE9IHRlcm1pbmF0b3IgfHwgIWlzQVNDSUlEaWdpdChzdHJp
bmdbbGVuZ3RoIC0gMl0pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc3RyaW5n
WzBdICE9ICcwJyAmJiBzdHJpbmdbMF0gIT0gJzEnICYmIHN0cmluZ1swXSAhPSAnLicpIHsKKyAg
ICAgICAgaWYgKGNoZWNrRm9yVmFsaWREb3VibGUoc3RyaW5nLCBlbmQsIHRlcm1pbmF0b3IpKSB7
CisgICAgICAgICAgICB2YWx1ZSA9IG5lZ2F0aXZlID8gMCA6IDI1NTsKKyAgICAgICAgICAgIHN0
cmluZyA9IGVuZDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAobGVuZ3RoID09IDIgJiYgc3RyaW5nWzBd
ICE9ICcuJykgeworICAgICAgICB2YWx1ZSA9ICFuZWdhdGl2ZSAmJiBzdHJpbmdbMF0gPT0gJzEn
ID8gMjU1IDogMDsKKyAgICAgICAgc3RyaW5nID0gZW5kOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBpZiAoaXNUZW50aEFscGhhKHN0cmluZywgbGVuZ3RoIC0gMSkpIHsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IGludCB0ZW50aEFscGhhVmFsdWVzW10gPSB7IDAsIDI1LCA1MSwg
NzYsIDEwMiwgMTI3LCAxNTMsIDE3OSwgMjA0LCAyMzAgfTsKKyAgICAgICAgdmFsdWUgPSBuZWdh
dGl2ZSA/IDAgOiB0ZW50aEFscGhhVmFsdWVzW3N0cmluZ1tsZW5ndGggLSAyXSAtICcwJ107Cisg
ICAgICAgIHN0cmluZyA9IGVuZDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
ZG91YmxlIGFscGhhID0gMDsKKyAgICBpZiAoIXBhcnNlRG91YmxlKHN0cmluZywgZW5kLCB0ZXJt
aW5hdG9yLCBhbHBoYSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB2YWx1ZSA9IG5lZ2F0
aXZlID8gMCA6IHN0YXRpY19jYXN0PGludD4oYWxwaGEgKiBuZXh0YWZ0ZXIoMjU2LjAsIDAuMCkp
OworICAgIHN0cmluZyA9IGVuZDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgaW5saW5lIGJvb2wgbWlnaHRCZVJHQkEoY29u
c3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlm
IChsZW5ndGggPCA1KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGNoYXJhY3Rl
cnNbNF0gPT0gJygnCisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoY2hhcmFj
dGVyc1swXSwgJ3InKQorICAgICAgICAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKGNoYXJh
Y3RlcnNbMV0sICdnJykKKyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChjaGFy
YWN0ZXJzWzJdLCAnYicpCisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoY2hh
cmFjdGVyc1szXSwgJ2EnKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
CitzdGF0aWMgaW5saW5lIGJvb2wgbWlnaHRCZVJHQihjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgaWYgKGxlbmd0aCA8IDQpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gY2hhcmFjdGVyc1szXSA9PSAnKCcKKyAgICAgICAg
JiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChjaGFyYWN0ZXJzWzBdLCAncicpCisgICAgICAg
ICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoY2hhcmFjdGVyc1sxXSwgJ2cnKQorICAgICAg
ICAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKGNoYXJhY3RlcnNbMl0sICdiJyk7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGJvb2wgZmFzdFBhcnNl
Q29sb3JJbnRlcm5hbChSR0JBMzImIHJnYiwgY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVy
cywgdW5zaWduZWQgbGVuZ3RoLCBib29sIHF1aXJrc01vZGUpCit7CisgICAgQ1NTUHJpbWl0aXZl
VmFsdWU6OlVuaXRUeXBlcyBleHBlY3QgPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpV
bmtub3duOworCisgICAgaWYgKGxlbmd0aCA+PSA0ICYmIGNoYXJhY3RlcnNbMF0gPT0gJyMnKQor
ICAgICAgICByZXR1cm4gQ29sb3I6OnBhcnNlSGV4Q29sb3IoY2hhcmFjdGVycyArIDEsIGxlbmd0
aCAtIDEsIHJnYik7CisKKyAgICBpZiAocXVpcmtzTW9kZSAmJiAobGVuZ3RoID09IDMgfHwgbGVu
Z3RoID09IDYpKSB7CisgICAgICAgIGlmIChDb2xvcjo6cGFyc2VIZXhDb2xvcihjaGFyYWN0ZXJz
LCBsZW5ndGgsIHJnYikpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAv
LyBUcnkgcmdiYSgpIHN5bnRheC4KKyAgICBpZiAobWlnaHRCZVJHQkEoY2hhcmFjdGVycywgbGVu
Z3RoKSkgeworICAgICAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBjdXJyZW50ID0gY2hhcmFjdGVy
cyArIDU7CisgICAgICAgIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCA9IGNoYXJhY3RlcnMgKyBs
ZW5ndGg7CisgICAgICAgIGludCByZWQ7CisgICAgICAgIGludCBncmVlbjsKKyAgICAgICAgaW50
IGJsdWU7CisgICAgICAgIGludCBhbHBoYTsKKworICAgICAgICBpZiAoIXBhcnNlQ29sb3JJbnRP
clBlcmNlbnRhZ2UoY3VycmVudCwgZW5kLCAnLCcsIGV4cGVjdCwgcmVkKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlKGN1
cnJlbnQsIGVuZCwgJywnLCBleHBlY3QsIGdyZWVuKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgaWYgKCFwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlKGN1cnJlbnQsIGVuZCwg
JywnLCBleHBlY3QsIGJsdWUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBp
ZiAoIXBhcnNlQWxwaGFWYWx1ZShjdXJyZW50LCBlbmQsICcpJywgYWxwaGEpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoY3VycmVudCAhPSBlbmQpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJnYiA9IG1ha2VSR0JBKHJlZCwgZ3JlZW4sIGJsdWUs
IGFscGhhKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gVHJ5IHJnYigp
IHN5bnRheC4KKyAgICBpZiAobWlnaHRCZVJHQihjaGFyYWN0ZXJzLCBsZW5ndGgpKSB7CisgICAg
ICAgIGNvbnN0IENoYXJhY3RlclR5cGUqIGN1cnJlbnQgPSBjaGFyYWN0ZXJzICsgNDsKKyAgICAg
ICAgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kID0gY2hhcmFjdGVycyArIGxlbmd0aDsKKyAgICAg
ICAgaW50IHJlZDsKKyAgICAgICAgaW50IGdyZWVuOworICAgICAgICBpbnQgYmx1ZTsKKyAgICAg
ICAgaWYgKCFwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlKGN1cnJlbnQsIGVuZCwgJywnLCBleHBl
Y3QsIHJlZCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghcGFyc2VD
b2xvckludE9yUGVyY2VudGFnZShjdXJyZW50LCBlbmQsICcsJywgZXhwZWN0LCBncmVlbikpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghcGFyc2VDb2xvckludE9yUGVy
Y2VudGFnZShjdXJyZW50LCBlbmQsICcpJywgZXhwZWN0LCBibHVlKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGN1cnJlbnQgIT0gZW5kKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZ2IgPSBtYWtlUkdCKHJlZCwgZ3JlZW4sIGJsdWUpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0NTU1Zh
bHVlKiBDU1NQYXJzZXJGYXN0UGF0aHM6OnBhcnNlQ29sb3IoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IENTU1BhcnNlck1vZGUgcGFyc2VyTW9kZSkKK3sKKyAgICBBU1NFUlQoIXN0cmluZy5pc0VtcHR5
KCkpOworICAgIENTU1ZhbHVlSUQgdmFsdWVJRCA9IGNzc1ZhbHVlS2V5d29yZElEKHN0cmluZyk7
CisgICAgaWYgKFN0eWxlQ29sb3I6OmlzQ29sb3JLZXl3b3JkKHZhbHVlSUQpKSB7CisgICAgICAg
IGlmICghaXNWYWx1ZUFsbG93ZWRJbk1vZGUodmFsdWVJRCwgcGFyc2VyTW9kZSkpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGVJZGVudGlmaWVyKHZhbHVlSUQpOworICAgIH0KKworICAgIFJHQkEzMiBjb2xvcjsKKyAg
ICBib29sIHF1aXJrc01vZGUgPSBpc1F1aXJrc01vZGVCZWhhdmlvcihwYXJzZXJNb2RlKTsKKwor
ICAgIC8vIEZhc3QgcGF0aCBmb3IgaGV4IGNvbG9ycyBhbmQgcmdiKCkvcmdiYSgpIGNvbG9ycwor
ICAgIGJvb2wgcGFyc2VSZXN1bHQ7CisgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKKyAgICAgICAg
cGFyc2VSZXN1bHQgPSBmYXN0UGFyc2VDb2xvckludGVybmFsKGNvbG9yLCBzdHJpbmcuY2hhcmFj
dGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCBxdWlya3NNb2RlKTsKKyAgICBlbHNlCisgICAgICAg
IHBhcnNlUmVzdWx0ID0gZmFzdFBhcnNlQ29sb3JJbnRlcm5hbChjb2xvciwgc3RyaW5nLmNoYXJh
Y3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCksIHF1aXJrc01vZGUpOworICAgIGlmICghcGFyc2VS
ZXN1bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBDU1NDb2xvclZhbHVl
OjpjcmVhdGUoY29sb3IpOworfQorCitib29sIENTU1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtl
eXdvcmRQcm9wZXJ0eUFuZFZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCwgQ1NTVmFsdWVJ
RCB2YWx1ZUlELCBDU1NQYXJzZXJNb2RlIHBhcnNlck1vZGUpCit7CisgICAgaWYgKHZhbHVlSUQg
PT0gQ1NTVmFsdWVJbnZhbGlkIHx8ICFpc1ZhbHVlQWxsb3dlZEluTW9kZSh2YWx1ZUlELCBwYXJz
ZXJNb2RlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3dpdGNoIChwcm9wZXJ0eUlk
KSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFsaWdubWVudEJhc2VsaW5lOgorICAgICAgICAvLyBh
dXRvIHwgYmFzZWxpbmUgfCBiZWZvcmUtZWRnZSB8IHRleHQtYmVmb3JlLWVkZ2UgfCBtaWRkbGUg
fAorICAgICAgICAvLyBjZW50cmFsIHwgYWZ0ZXItZWRnZSB8IHRleHQtYWZ0ZXItZWRnZSB8IGlk
ZW9ncmFwaGljIHwgYWxwaGFiZXRpYyB8CisgICAgICAgIC8vIGhhbmdpbmcgfCBtYXRoZW1hdGlj
YWwKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVBbHBoYWJldGljIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCYXNlbGluZQorICAgICAg
ICAgICAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1pZGRsZSB8fCAodmFsdWVJRCA+PSBDU1NWYWx1
ZUJlZm9yZUVkZ2UgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZU1hdGhlbWF0aWNhbCk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUFsbDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBPbmx5IGFjY2VwdHMg
Y3NzLXdpZGUga2V5d29yZHMKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFg6
IC8vIHJlcGVhdCB8IG5vLXJlcGVhdAorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVw
ZWF0WTogLy8gcmVwZWF0IHwgbm8tcmVwZWF0CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENT
U1ZhbHVlUmVwZWF0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb1JlcGVhdDsKKyAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2U6IC8vIGNvbGxhcHNlIHwgc2VwYXJhdGUKKyAgICAgICAg
cmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2xsYXBzZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
U2VwYXJhdGU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlOiAvLyA8Ym9yZGVy
LXN0eWxlPgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlOiAvLyBEZWZpbmVk
IGFzOiBub25lIHwgaGlkZGVuIHwgZG90dGVkIHwgZGFzaGVkIHwKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tU3R5bGU6IC8vIHNvbGlkIHwgZG91YmxlIHwgZ3Jvb3ZlIHwgcmlkZ2Ug
fCBpbnNldCB8IG91dHNldAorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGU6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJFbmRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRT
dHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1uUnVsZVN0eWxlOgorICAgICAgICByZXR1
cm4gdmFsdWVJRCA+PSBDU1NWYWx1ZU5vbmUgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZURvdWJsZTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5Qm94U2l6aW5nOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9
PSBDU1NWYWx1ZUJvcmRlckJveCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ29udGVudEJveDsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5QnVmZmVyZWRSZW5kZXJpbmc6CisgICAgICAgIHJldHVybiB2YWx1
ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRHluYW1pYyB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlU3RhdGljOworICAgIGNhc2UgQ1NTUHJvcGVydHlDYXB0aW9uU2lkZTog
Ly8gdG9wIHwgYm90dG9tIHwgbGVmdCB8IHJpZ2h0CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09
IENTU1ZhbHVlTGVmdCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmlnaHQgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZVRvcCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQm90dG9tOworICAgIGNhc2UgQ1NTUHJv
cGVydHlDbGVhcjogLy8gbm9uZSB8IGxlZnQgfCByaWdodCB8IGJvdGgKKyAgICAgICAgcmV0dXJu
IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVMZWZ0IHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVSaWdodCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQm90aDsKKyAgICBj
YXNlIENTU1Byb3BlcnR5Q2xpcFJ1bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGxSdWxlOgor
ICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbnplcm8gfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUV2ZW5vZGQ7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczoKKyAgICAgICAg
cmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTUkdC
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVMaW5lYXJSR0I7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNv
bG9yUmVuZGVyaW5nOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZU9wdGltaXplU3BlZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU9w
dGltaXplUXVhbGl0eTsKKyAgICBjYXNlIENTU1Byb3BlcnR5RGlyZWN0aW9uOiAvLyBsdHIgfCBy
dGwKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVMdHIgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZVJ0bDsKKyAgICBjYXNlIENTU1Byb3BlcnR5RGlzcGxheToKKyAgICAgICAgLy8gaW5s
aW5lIHwgYmxvY2sgfCBsaXN0LWl0ZW0gfCBpbmxpbmUtYmxvY2sgfCB0YWJsZSB8CisgICAgICAg
IC8vIGlubGluZS10YWJsZSB8IHRhYmxlLXJvdy1ncm91cCB8IHRhYmxlLWhlYWRlci1ncm91cCB8
IHRhYmxlLWZvb3Rlci1ncm91cCB8IHRhYmxlLXJvdyB8CisgICAgICAgIC8vIHRhYmxlLWNvbHVt
bi1ncm91cCB8IHRhYmxlLWNvbHVtbiB8IHRhYmxlLWNlbGwgfCB0YWJsZS1jYXB0aW9uIHwgLXdl
YmtpdC1ib3ggfCAtd2Via2l0LWlubGluZS1ib3ggfCBub25lCisgICAgICAgIC8vIGZsZXggfCBp
bmxpbmUtZmxleCB8IC13ZWJraXQtZmxleCB8IC13ZWJraXQtaW5saW5lLWZsZXggfCBncmlkIHwg
aW5saW5lLWdyaWQKKyAgICAgICAgcmV0dXJuICh2YWx1ZUlEID49IENTU1ZhbHVlSW5saW5lICYm
IHZhbHVlSUQgPD0gQ1NTVmFsdWVJbmxpbmVGbGV4KSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Vi
a2l0RmxleCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0SW5saW5lRmxleCB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlTm9uZQorICAgICAgICAgICAgfHwgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkgJiYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVHcmlkIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVJbmxpbmVHcmlkKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eURvbWlu
YW50QmFzZWxpbmU6CisgICAgICAgIC8vIGF1dG8gfCB1c2Utc2NyaXB0IHwgbm8tY2hhbmdlIHwg
cmVzZXQtc2l6ZSB8IGlkZW9ncmFwaGljIHwKKyAgICAgICAgLy8gYWxwaGFiZXRpYyB8IGhhbmdp
bmcgfCBtYXRoZW1hdGljYWwgfCBjZW50cmFsIHwgbWlkZGxlIHwKKyAgICAgICAgLy8gdGV4dC1h
ZnRlci1lZGdlIHwgdGV4dC1iZWZvcmUtZWRnZQorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBD
U1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUFscGhhYmV0aWMgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZU1pZGRsZQorICAgICAgICAgICAgfHwgKHZhbHVlSUQgPj0gQ1NTVmFsdWVVc2VT
Y3JpcHQgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZVJlc2V0U2l6ZSkKKyAgICAgICAgICAgIHx8ICh2
YWx1ZUlEID49IENTU1ZhbHVlQ2VudHJhbCAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlTWF0aGVtYXRp
Y2FsKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5RW1wdHlDZWxsczogLy8gc2hvdyB8IGhpZGUKKyAg
ICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVTaG93IHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVIaWRlOworICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9hdDogLy8gbGVmdCB8IHJpZ2h0IHwgbm9u
ZQorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZVJpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lOworICAgIGNhc2UgQ1NTUHJv
cGVydHlGb250U3R5bGU6IC8vIG5vcm1hbCB8IGl0YWxpYyB8IG9ibGlxdWUKKyAgICAgICAgcmV0
dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUl0YWxp
YyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlT2JsaXF1ZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9u
dFN0cmV0Y2g6IC8vIG5vcm1hbCB8IHVsdHJhLWNvbmRlbnNlZCB8IGV4dHJhLWNvbmRlbnNlZCB8
IGNvbmRlbnNlZCB8IHNlbWktY29uZGVuc2VkIHwgc2VtaS1leHBhbmRlZCB8IGV4cGFuZGVkIHwg
ZXh0cmEtZXhwYW5kZWQgfCB1bHRyYS1leHBhbmRlZAorICAgICAgICByZXR1cm4gdmFsdWVJRCA9
PSBDU1NWYWx1ZU5vcm1hbCB8fCAodmFsdWVJRCA+PSBDU1NWYWx1ZVVsdHJhQ29uZGVuc2VkICYm
IHZhbHVlSUQgPD0gQ1NTVmFsdWVVbHRyYUV4cGFuZGVkKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
SW1hZ2VSZW5kZXJpbmc6IC8vIGF1dG8gfCBvcHRpbWl6ZUNvbnRyYXN0IHwgcGl4ZWxhdGVkCisg
ICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlV2Via2l0T3B0aW1pemVDb250cmFzdCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUGl4ZWxhdGVk
OworICAgIGNhc2UgQ1NTUHJvcGVydHlJc29sYXRpb246IC8vIGF1dG8gfCBpc29sYXRlCisgICAg
ICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
SXNvbGF0ZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb246IC8vIGluc2lk
ZSB8IG91dHNpZGUKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVJbnNpZGUgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZU91dHNpZGU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHls
ZVR5cGU6CisgICAgICAgIC8vIFNlZSBzZWN0aW9uIENTU19QUk9QX0xJU1RfU1RZTEVfVFlQRSBv
ZiBmaWxlIENTU1ZhbHVlS2V5d29yZHMuaW4KKyAgICAgICAgLy8gZm9yIHRoZSBsaXN0IG9mIHN1
cHBvcnRlZCBsaXN0LXN0eWxlLXR5cGVzLgorICAgICAgICByZXR1cm4gKHZhbHVlSUQgPj0gQ1NT
VmFsdWVEaXNjICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVLYXRha2FuYUlyb2hhKSB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlTm9uZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFza1R5cGU6CisgICAgICAg
IHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTHVtaW5hbmNlIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVBbHBoYTsKKyAgICBjYXNlIENTU1Byb3BlcnR5T2JqZWN0Rml0OgorICAgICAgICByZXR1cm4g
dmFsdWVJRCA9PSBDU1NWYWx1ZUZpbGwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbnRhaW4gfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUNvdmVyIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVTY2FsZURvd247CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVT
dHlsZTogLy8gKDxib3JkZXItc3R5bGU+IGV4Y2VwdCBoaWRkZW4pIHwgYXV0bworICAgICAgICBy
ZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUg
fHwgKHZhbHVlSUQgPj0gQ1NTVmFsdWVJbnNldCAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlRG91Ymxl
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dBbmNob3I6CisgICAgICAgIHJldHVybiB2
YWx1ZUlEID09IENTU1ZhbHVlVmlzaWJsZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlQXV0bzsKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dXcmFw
OiAvLyBub3JtYWwgfCBicmVhay13b3JkCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRXcmFwOgor
ICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlQnJlYWtXb3JkOworICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1g6IC8vIHZpc2li
bGUgfCBoaWRkZW4gfCBzY3JvbGwgfCBhdXRvIHwgb3ZlcmxheQorICAgICAgICByZXR1cm4gdmFs
dWVJRCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhpZGRlbiB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlU2Nyb2xsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVPdmVybGF5OworICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1k6
IC8vIHZpc2libGUgfCBoaWRkZW4gfCBzY3JvbGwgfCBhdXRvIHwgb3ZlcmxheSB8IC13ZWJraXQt
cGFnZWQteCB8IC13ZWJraXQtcGFnZWQteQorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NW
YWx1ZVZpc2libGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhpZGRlbiB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlU2Nyb2xsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVPdmVybGF5IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRQYWdlZFggfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZVdlYmtpdFBhZ2VkWTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QnJlYWtBZnRl
cjoKKyAgICBjYXNlIENTU1Byb3BlcnR5QnJlYWtCZWZvcmU6CisgICAgICAgIHJldHVybiB2YWx1
ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXZvaWQgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUF2b2lkUGFnZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUGFnZSB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlTGVmdCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmlnaHQgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZVJlY3RvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVWZXJzbyB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlQXZvaWRDb2x1bW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbHVtbjsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5QnJlYWtJbnNpZGU6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09
IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXZvaWQgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUF2b2lkUGFnZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXZvaWRDb2x1bW47CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHM6CisgICAgICAgIC8vIG5vbmUgfCB2aXNpYmxl
UGFpbnRlZCB8IHZpc2libGVGaWxsIHwgdmlzaWJsZVN0cm9rZSB8IHZpc2libGUgfAorICAgICAg
ICAvLyBwYWludGVkIHwgZmlsbCB8IHN0cm9rZSB8IGF1dG8gfCBhbGwgfCBib3VuZGluZy1ib3gK
KyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBbGwgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZUF1dG8gfHwgKHZhbHVlSUQgPj0gQ1NTVmFsdWVWaXNpYmxlUGFpbnRlZCAmJiB2YWx1ZUlE
IDw9IENTU1ZhbHVlQm91bmRpbmdCb3gpOworICAgIGNhc2UgQ1NTUHJvcGVydHlQb3NpdGlvbjog
Ly8gc3RhdGljIHwgcmVsYXRpdmUgfCBhYnNvbHV0ZSB8IGZpeGVkIHwgc3RpY2t5CisgICAgICAg
IHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlU3RhdGljIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVS
ZWxhdGl2ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQWJzb2x1dGUgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZUZpeGVkIHx8IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NTdGlja3lQb3NpdGlvbkVu
YWJsZWQoKSAmJiB2YWx1ZUlEID09IENTU1ZhbHVlU3RpY2t5KTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5UmVzaXplOiAvLyBub25lIHwgYm90aCB8IGhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGF1dG8K
KyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVCb3RoIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVIb3Jpem9udGFsIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVWZXJ0aWNhbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXV0bzsKKyAgICBjYXNlIENT
U1Byb3BlcnR5U2Nyb2xsQmVoYXZpb3I6IC8vIGF1dG8gfCBzbW9vdGgKKyAgICAgICAgQVNTRVJU
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc29tU21vb3RoU2Nyb2xsRW5hYmxlZCgpKTsKKyAg
ICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVTbW9vdGg7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNoYXBlUmVuZGVyaW5nOgorICAgICAgICBy
ZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU9wdGlt
aXplU3BlZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNyaXNwRWRnZXMgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUdlb21ldHJpY1ByZWNpc2lvbjsKKyAgICBjYXNlIENTU1Byb3BlcnR5U3BlYWs6IC8v
IG5vbmUgfCBub3JtYWwgfCBzcGVsbC1vdXQgfCBkaWdpdHMgfCBsaXRlcmFsLXB1bmN0dWF0aW9u
IHwgbm8tcHVuY3R1YXRpb24KKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25l
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNwZWxs
T3V0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEaWdpdHMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUxp
dGVyYWxQdW5jdHVhdGlvbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9QdW5jdHVhdGlvbjsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlTGluZWpvaW46CisgICAgICAgIHJldHVybiB2YWx1ZUlE
ID09IENTU1ZhbHVlTWl0ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJvdW5kIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVCZXZlbDsKKyAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlTGluZWNhcDoKKyAg
ICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVCdXR0IHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVSb3VuZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3F1YXJlOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlUYWJsZUxheW91dDogLy8gYXV0byB8IGZpeGVkCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09
IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRml4ZWQ7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVRleHRBbGlnbjoKKyAgICAgICAgcmV0dXJuICh2YWx1ZUlEID49IENTU1ZhbHVlV2Vi
a2l0QXV0byAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlSW50ZXJuYWxDZW50ZXIpIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRW5kOworICAgIGNhc2UgQ1NT
UHJvcGVydHlUZXh0QWxpZ25MYXN0OgorICAgICAgICAvLyBhdXRvIHwgc3RhcnQgfCBlbmQgfCBs
ZWZ0IHwgcmlnaHQgfCBjZW50ZXIgfCBqdXN0aWZ5CisgICAgICAgIHJldHVybiAodmFsdWVJRCA+
PSBDU1NWYWx1ZUxlZnQgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZUp1c3RpZnkpIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRW5kIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVBdXRvOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0QW5jaG9yOgorICAgICAgICBy
ZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVNaWRk
bGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVuZDsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dENv
bWJpbmVVcHJpZ2h0OgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUFsbDsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dERlY29yYXRp
b25TdHlsZToKKyAgICAgICAgLy8gc29saWQgfCBkb3VibGUgfCBkb3R0ZWQgfCBkYXNoZWQgfCB3
YXZ5CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3MzVGV4dERlY29y
YXRpb25zRW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVTb2xp
ZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRG91YmxlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEb3R0
ZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURhc2hlZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2F2
eTsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEp1c3RpZnk6CisgICAgICAgIC8vIGF1dG8gfCBu
b25lIHwgaW50ZXItd29yZCB8IGRpc3RyaWJ1dGUKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmNzczNUZXh0RW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQg
PT0gQ1NTVmFsdWVJbnRlcldvcmQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURpc3RyaWJ1dGUgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmU7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVRleHRPcmllbnRhdGlvbjogLy8gbWl4ZWQgfCB1cHJpZ2h0IHwgc2lk
ZXdheXMgfCBzaWRld2F5cy1yaWdodAorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1
ZU1peGVkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVVcHJpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVTaWRld2F5cyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2lkZXdheXNSaWdodDsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGV4dE9yaWVudGF0aW9uOgorICAgICAgICByZXR1cm4gdmFsdWVJ
RCA9PSBDU1NWYWx1ZVNpZGV3YXlzIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTaWRld2F5c1JpZ2h0
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVWZXJ0aWNhbFJpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVVcHJpZ2h0OworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmZsb3c6IC8vIGNsaXAgfCBl
bGxpcHNpcworICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUNsaXAgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUVsbGlwc2lzOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5n
OiAvLyBhdXRvIHwgb3B0aW1pemVTcGVlZCB8IG9wdGltaXplTGVnaWJpbGl0eSB8IGdlb21ldHJp
Y1ByZWNpc2lvbgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZU9wdGltaXplU3BlZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU9wdGlt
aXplTGVnaWJpbGl0eSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlR2VvbWV0cmljUHJlY2lzaW9uOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtOiAvLyBjYXBpdGFsaXplIHwgdXBwZXJj
YXNlIHwgbG93ZXJjYXNlIHwgbm9uZQorICAgICAgICByZXR1cm4gKHZhbHVlSUQgPj0gQ1NTVmFs
dWVDYXBpdGFsaXplICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVMb3dlcmNhc2UpIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVOb25lOworICAgIGNhc2UgQ1NTUHJvcGVydHlVbmljb2RlQmlkaToKKyAgICAg
ICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUVtYmVkCisgICAgICAgICAgICB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQmlkaU92ZXJyaWRlIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRJc29sYXRlCisgICAgICAgICAgICB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlV2Via2l0SXNvbGF0ZU92ZXJyaWRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVX
ZWJraXRQbGFpbnRleHQKKyAgICAgICAgICAgIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVJc29sYXRl
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVJc29sYXRlT3ZlcnJpZGUgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZVBsYWludGV4dDsKKyAgICBjYXNlIENTU1Byb3BlcnR5VmVjdG9yRWZmZWN0OgorICAgICAg
ICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5v
blNjYWxpbmdTdHJva2U7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVZpc2liaWxpdHk6IC8vIHZpc2li
bGUgfCBoaWRkZW4gfCBjb2xsYXBzZQorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1
ZVZpc2libGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhpZGRlbiB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlQ29sbGFwc2U7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFwcFJlZ2lvbjoKKyAgICAg
ICAgcmV0dXJuIHZhbHVlSUQgPj0gQ1NTVmFsdWVEcmFnICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVO
b0RyYWc7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2U6CisgICAgICAgIHJl
dHVybiAodmFsdWVJRCA+PSBDU1NWYWx1ZUNoZWNrYm94ICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVU
ZXh0YXJlYSkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmU7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUJhY2tmYWNlVmlzaWJpbGl0eToKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVW
aXNpYmxlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVIaWRkZW47CisgICAgY2FzZSBDU1NQcm9wZXJ0
eU1peEJsZW5kTW9kZToKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU11bHRpcGx5IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTY3Jl
ZW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU92ZXJsYXkKKyAgICAgICAgICAgIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVEYXJrZW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUxpZ2h0ZW4gfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUNvbG9yRG9kZ2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbG9yQnVybgor
ICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhhcmRMaWdodCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlU29mdExpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEaWZmZXJlbmNlIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVFeGNsdXNpb24KKyAgICAgICAgICAgIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVIdWUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNhdHVyYXRpb24gfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUNvbG9yIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVMdW1pbm9zaXR5OworICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbjoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NT
VmFsdWVTdHJldGNoIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlRW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZUJhc2VsaW5lOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hEZWNvcmF0aW9uQnJl
YWs6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQ2xvbmUgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZVNsaWNlOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb246
CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVSZXZlcnNlOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lczoKKyAg
ICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVTaW5nbGUgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZU11bHRpcGxlOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQ6CisgICAg
ICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlSG9yaXpvbnRhbCB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlVmVydGljYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUlubGluZUF4aXMgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUJsb2NrQXhpczsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UGFj
azoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlRW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUp1c3RpZnk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVtbkZpbGw6CisgICAgICAg
IHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQmFs
YW5jZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25Db250ZW50OgorICAgICAgICAvLyBGSVhN
RTogUGVyIENTUyBhbGlnbm1lbnQsIHRoaXMgcHJvcGVydHkgc2hvdWxkIGFjY2VwdCBhbiBvcHRp
b25hbCA8b3ZlcmZsb3ctcG9zaXRpb24+LiBXZSBzaG91bGQgc2hhcmUgdGhpcyBwYXJzaW5nIGNv
ZGUgd2l0aCAnanVzdGlmeS1zZWxmJy4KKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFs
dWVGbGV4U3RhcnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUZsZXhFbmQgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUNlbnRlciB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3BhY2VCZXR3ZWVuIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVTcGFjZUFyb3VuZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3RyZXRjaDsK
KyAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25JdGVtczoKKyAgICAgICAgLy8gRklYTUU6IFBlciBD
U1MgYWxpZ25tZW50LCB0aGlzIHByb3BlcnR5IHNob3VsZCBhY2NlcHQgdGhlIHNhbWUgYXJndW1l
bnRzIGFzICdqdXN0aWZ5LXNlbGYnIHNvIHdlIHNob3VsZCBzaGFyZSBpdHMgcGFyc2luZyBjb2Rl
LgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUZsZXhTdGFydCB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlRmxleEVuZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ2VudGVyIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVCYXNlbGluZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3RyZXRjaDsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5QWxpZ25TZWxmOgorICAgICAgICAvLyBGSVhNRTogUGVyIENTUyBh
bGlnbm1lbnQsIHRoaXMgcHJvcGVydHkgc2hvdWxkIGFjY2VwdCB0aGUgc2FtZSBhcmd1bWVudHMg
YXMgJ2p1c3RpZnktc2VsZicgc28gd2Ugc2hvdWxkIHNoYXJlIGl0cyBwYXJzaW5nIGNvZGUuCisg
ICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlRmxleFN0YXJ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVGbGV4RW5kIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVDZW50ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJhc2VsaW5lIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVTdHJldGNoOworICAgIGNhc2UgQ1NTUHJvcGVydHlGbGV4RGlyZWN0aW9uOgor
ICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVJvdyB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlUm93UmV2ZXJzZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ29sdW1uIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVDb2x1bW5SZXZlcnNlOworICAgIGNhc2UgQ1NTUHJvcGVydHlGbGV4V3JhcDoKKyAg
ICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3dyYXAgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZVdyYXAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdyYXBSZXZlcnNlOworICAgIGNhc2UgQ1NT
UHJvcGVydHlIeXBoZW5zOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8g
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1hbnVhbDsK
KyAgICBjYXNlIENTU1Byb3BlcnR5SnVzdGlmeUNvbnRlbnQ6CisgICAgICAgIC8vIEZJWE1FOiBQ
ZXIgQ1NTIGFsaWdubWVudCwgdGhpcyBwcm9wZXJ0eSBzaG91bGQgYWNjZXB0IGFuIG9wdGlvbmFs
IDxvdmVyZmxvdy1wb3NpdGlvbj4uIFdlIHNob3VsZCBzaGFyZSB0aGlzIHBhcnNpbmcgY29kZSB3
aXRoICdqdXN0aWZ5LXNlbGYnLgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUZs
ZXhTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRmxleEVuZCB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlQ2VudGVyIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTcGFjZUJldHdlZW4gfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZVNwYWNlQXJvdW5kOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250S2VybmluZzoK
KyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmU7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmc6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1Zh
bHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
QW50aWFsaWFzZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVN1YnBpeGVsQW50aWFsaWFzZWQ7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhazogLy8gYXV0byB8IGxvb3NlIHwgbm9y
bWFsIHwgc3RyaWN0IHwgYWZ0ZXItd2hpdGUtc3BhY2UKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQg
PT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVMb29zZSB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdHJpY3QgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUFmdGVyV2hpdGVTcGFjZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luQWZ0ZXJDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3Jl
Q29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZToKKyAgICAgICAg
cmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2xsYXBzZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
U2VwYXJhdGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURpc2NhcmQ7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFByaW50Q29sb3JBZGp1c3Q6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENT
U1ZhbHVlRXhhY3QgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVjb25vbXk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NW
YWx1ZUxvZ2ljYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVZpc3VhbDsKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0UnVieVBvc2l0aW9uOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NW
YWx1ZUJlZm9yZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQWZ0ZXI7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRDb21iaW5lOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1
ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhvcml6b250YWw7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9
PSBDU1NWYWx1ZU92ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVVuZGVyOworICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHk6IC8vIGRpc2MgfCBjaXJjbGUgfCBzcXVhcmUgfCBu
b25lCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlRGlzYyB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlQ2lyY2xlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTcXVhcmUgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZU5vbmU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zZm9ybVN0eWxlOgorICAg
ICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUZsYXQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZVByZXNlcnZlM2Q7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnOiAvLyBhdXRv
IHwgbm9uZSB8IGVsZW1lbnQKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRv
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFbGVtZW50
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5OiAvLyByZWFkLW9ubHkgfCBy
ZWFkLXdyaXRlCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlUmVhZE9ubHkgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZVJlYWRXcml0ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmVhZFdy
aXRlUGxhaW50ZXh0T25seTsKKyAgICBjYXNlIENTU1Byb3BlcnR5VXNlclNlbGVjdDogLy8gYXV0
byB8IG5vbmUgfCB0ZXh0IHwgYWxsCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVl
QXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVGV4
dCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQWxsOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRX
cml0aW5nTW9kZToKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPj0gQ1NTVmFsdWVIb3Jpem9udGFs
VGIgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZVZlcnRpY2FsTHI7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdyaXRpbmdNb2RlOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUhvcml6b250
YWxUYgorICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVZlcnRpY2FsUmwgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZVZlcnRpY2FsTHIKKyAgICAgICAgICAgIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVMclRiIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSbFRiIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVUYlJsCisgICAgICAgICAgICB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTHIgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZVJsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVUYjsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2hpdGVTcGFjZTogLy8gbm9ybWFsIHwgcHJlIHwgbm93cmFwCisgICAgICAgIHJldHVybiB2
YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVQcmUgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZVByZVdyYXAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVByZUxpbmUgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZU5vd3JhcDsKKyAgICBjYXNlIENTU1Byb3BlcnR5V29yZEJyZWFr
OiAvLyBub3JtYWwgfCBicmVhay1hbGwgfCBrZWVwLWFsbCB8IGJyZWFrLXdvcmQgKHRoaXMgaXMg
YSBjdXN0b20gZXh0ZW5zaW9uKQorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5v
cm1hbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQnJlYWtBbGwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUtlZXBBbGwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJyZWFrV29yZDsKKyAgICBjYXNlIENTU1By
b3BlcnR5U2Nyb2xsU25hcFR5cGU6IC8vIG5vbmUgfCBtYW5kYXRvcnkgfCBwcm94aW1pdHkKKyAg
ICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc1Njcm9sbFNuYXBQb2ludHNF
bmFibGVkKCkpOworICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZU1hbmRhdG9yeSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUHJveGltaXR5
OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitib29sIENTU1BhcnNlckZhc3RQYXRoczo6aXNLZXl3
b3JkUHJvcGVydHlJRChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQpCit7CisgICAgc3dpdGNoIChw
cm9wZXJ0eUlkKSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFsaWdubWVudEJhc2VsaW5lOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlBbGw6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1peEJsZW5kTW9kZToK
KyAgICBjYXNlIENTU1Byb3BlcnR5SXNvbGF0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUmVwZWF0WDoKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFk6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJUb3BTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm94U2l6aW5nOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlCdWZmZXJlZFJlbmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q2Fw
dGlvblNpZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNsZWFyOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlDbGlwUnVsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3JJbnRlcnBvbGF0aW9uOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlDb2xvckludGVycG9sYXRpb25GaWx0ZXJzOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlDb2xvclJlbmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5RGlyZWN0aW9uOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlEaXNwbGF5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlEb21pbmFu
dEJhc2VsaW5lOgorICAgIGNhc2UgQ1NTUHJvcGVydHlFbXB0eUNlbGxzOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlGaWxsUnVsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5RmxvYXQ6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUZvbnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0cmV0Y2g6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUh5cGhlbnM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUltYWdlUmVu
ZGVyaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZToKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFza1R5cGU6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9iamVjdEZpdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5T3V0
bGluZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd0FuY2hvcjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5T3ZlcmZsb3dXcmFwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1g6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93WToKKyAgICBjYXNlIENTU1Byb3BlcnR5QnJl
YWtBZnRlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5QnJlYWtCZWZvcmU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJyZWFrSW5zaWRlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlQb3NpdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5UmVzaXpl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlTY3JvbGxCZWhhdmlvcjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5U2hhcGVSZW5kZXJpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNwZWFrOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlTdHJva2VMaW5lY2FwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2VMaW5l
am9pbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGFibGVMYXlvdXQ6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRleHRBbGlnbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEFsaWduTGFzdDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5VGV4dEFuY2hvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dENvbWJp
bmVVcHJpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblN0eWxlOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlUZXh0SnVzdGlmeToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE9y
aWVudGF0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0T3JpZW50YXRpb246Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVyZmxvdzoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dFJlbmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybToKKyAgICBjYXNl
IENTU1Byb3BlcnR5VW5pY29kZUJpZGk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVZlY3RvckVmZmVj
dDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VmlzaWJpbGl0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0QXBwUmVnaW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZmFjZVZpc2liaWxpdHk6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckJlZm9yZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHls
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZToKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
eERlY29yYXRpb25CcmVhazoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9u
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lczoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm94T3JpZW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlDb2x1bW5GaWxsOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDb2x1
bW5SdWxlU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsZXhEaXJlY3Rpb246CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUZsZXhXcmFwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlGb250S2VybmluZzoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290aGluZzoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TGluZUJyZWFrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5B
ZnRlckNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xs
YXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2U6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblRvcENvbGxhcHNlOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRQcmludENvbG9yQWRqdXN0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRSdGxPcmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRleHRTZWN1cml0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNmb3JtU3R5bGU6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRVc2VyTW9kaWZ5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlVc2VyU2VsZWN0OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2hpdGVT
cGFjZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V29yZEJyZWFrOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXb3JkV3JhcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V3JpdGluZ01vZGU6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVNjcm9sbFNuYXBUeXBlOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5SnVzdGlmeUNvbnRlbnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFsaWduQ29u
dGVudDoKKyAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25JdGVtczoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5QWxpZ25TZWxmOgorICAgICAgICByZXR1cm4gIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNz
c0dyaWRMYXlvdXRFbmFibGVkKCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KK30KKworc3RhdGljIENTU1ZhbHVlKiBwYXJzZUtleXdvcmRWYWx1ZShDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJzZXJNb2RlIHBh
cnNlck1vZGUpCit7CisgICAgQVNTRVJUKCFzdHJpbmcuaXNFbXB0eSgpKTsKKworICAgIGlmICgh
Q1NTUGFyc2VyRmFzdFBhdGhzOjppc0tleXdvcmRQcm9wZXJ0eUlEKHByb3BlcnR5SWQpKSB7Cisg
ICAgICAgIC8vIEFsbCBwcm9wZXJ0aWVzIGFjY2VwdCB0aGUgdmFsdWVzIG9mICJpbml0aWFsIiBh
bmQgImluaGVyaXQiLgorICAgICAgICBpZiAoIWVxdWFsSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5n
LCAiaW5pdGlhbCIpICYmICFlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgImluaGVyaXQi
KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIC8vIFBhcnNlIGluaXRp
YWwvaW5oZXJpdCBzaG9ydGhhbmRzIHVzaW5nIHRoZSBDU1NQcm9wZXJ0eVBhcnNlci4KKyAgICAg
ICAgaWYgKHNob3J0aGFuZEZvclByb3BlcnR5KHByb3BlcnR5SWQpLmxlbmd0aCgpKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgLy8gRGVzY3JpcHRvcnMgZG8gbm90IHN1
cHBvcnQgY3NzIHdpZGUga2V5d29yZHMuCisgICAgICAgIGlmIChDU1NQcm9wZXJ0eU1ldGFkYXRh
Ojppc0Rlc2NyaXB0b3JPbmx5KHByb3BlcnR5SWQpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorCisgICAgQ1NTVmFsdWVJRCB2YWx1ZUlEID0gY3NzVmFsdWVLZXl3b3JkSUQo
c3RyaW5nKTsKKworICAgIGlmICghdmFsdWVJRCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUluaGVyaXQpCisgICAgICAgIHJldHVybiBDU1NJ
bmhlcml0ZWRWYWx1ZTo6Y3JlYXRlKCk7CisgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVJbml0
aWFsKQorICAgICAgICByZXR1cm4gQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGUoKTsKKyAgICBpZiAo
Q1NTUGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUocHJvcGVy
dHlJZCwgdmFsdWVJRCwgcGFyc2VyTW9kZSkpCisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlSWRlbnRpZmllcih2YWx1ZUlEKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgorc3RhdGljIGJvb2wgcGFyc2VUcmFuc2Zv
cm1UcmFuc2xhdGVBcmd1bWVudHMoQ2hhclR5cGUqJiBwb3MsIENoYXJUeXBlKiBlbmQsIHVuc2ln
bmVkIGV4cGVjdGVkQ291bnQsIENTU0Z1bmN0aW9uVmFsdWUqIHRyYW5zZm9ybVZhbHVlKQorewor
ICAgIHdoaWxlIChleHBlY3RlZENvdW50KSB7CisgICAgICAgIHNpemVfdCBkZWxpbWl0ZXIgPSBX
VEY6OmZpbmQocG9zLCBlbmQgLSBwb3MsIGV4cGVjdGVkQ291bnQgPT0gMSA/ICcpJyA6ICcsJyk7
CisgICAgICAgIGlmIChkZWxpbWl0ZXIgPT0ga05vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB1bnNpZ25lZCBhcmd1bWVudExlbmd0aCA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihkZWxpbWl0ZXIpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVz
IHVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpOdW1iZXI7CisgICAgICAgIGRv
dWJsZSBudW1iZXI7CisgICAgICAgIGlmICghcGFyc2VTaW1wbGVMZW5ndGgocG9zLCBhcmd1bWVu
dExlbmd0aCwgdW5pdCwgbnVtYmVyKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgaWYgKHVuaXQgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6UGl4ZWxzICYmIChu
dW1iZXIgfHwgdW5pdCAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpOdW1iZXIpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5k
KCpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG51bWJlciwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlczo6UGl4ZWxzKSk7CisgICAgICAgIHBvcyArPSBhcmd1bWVudExlbmd0aCArIDE7Cisg
ICAgICAgIC0tZXhwZWN0ZWRDb3VudDsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KK3N0YXRpYyBib29sIHBhcnNlVHJhbnNmb3JtTnVt
YmVyQXJndW1lbnRzKENoYXJUeXBlKiYgcG9zLCBDaGFyVHlwZSogZW5kLCB1bnNpZ25lZCBleHBl
Y3RlZENvdW50LCBDU1NGdW5jdGlvblZhbHVlKiB0cmFuc2Zvcm1WYWx1ZSkKK3sKKyAgICB3aGls
ZSAoZXhwZWN0ZWRDb3VudCkgeworICAgICAgICBzaXplX3QgZGVsaW1pdGVyID0gV1RGOjpmaW5k
KHBvcywgZW5kIC0gcG9zLCBleHBlY3RlZENvdW50ID09IDEgPyAnKScgOiAnLCcpOworICAgICAg
ICBpZiAoZGVsaW1pdGVyID09IGtOb3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgdW5zaWduZWQgYXJndW1lbnRMZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
ZGVsaW1pdGVyKTsKKyAgICAgICAgYm9vbCBvazsKKyAgICAgICAgZG91YmxlIG51bWJlciA9IGNo
YXJhY3RlcnNUb0RvdWJsZShwb3MsIGFyZ3VtZW50TGVuZ3RoLCAmb2spOworICAgICAgICBpZiAo
IW9rKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+
YXBwZW5kKCpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG51bWJlciwgQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlczo6TnVtYmVyKSk7CisgICAgICAgIHBvcyArPSBhcmd1bWVudExlbmd0aCAr
IDE7CisgICAgICAgIC0tZXhwZWN0ZWRDb3VudDsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3N0YXRpYyBjb25zdCBpbnQga1Nob3J0ZXN0VmFsaWRUcmFuc2Zvcm1TdHJpbmdMZW5ndGgg
PSAxMjsKKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgorc3RhdGljIENTU0Z1bmN0aW9u
VmFsdWUqIHBhcnNlU2ltcGxlVHJhbnNmb3JtVmFsdWUoQ2hhclR5cGUqJiBwb3MsIENoYXJUeXBl
KiBlbmQpCit7CisgICAgaWYgKGVuZCAtIHBvcyA8IGtTaG9ydGVzdFZhbGlkVHJhbnNmb3JtU3Ry
aW5nTGVuZ3RoKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGNvbnN0IGJvb2wgaXNU
cmFuc2xhdGUgPSB0b0FTQ0lJTG93ZXIocG9zWzBdKSA9PSAndCcKKyAgICAgICAgJiYgdG9BU0NJ
SUxvd2VyKHBvc1sxXSkgPT0gJ3InCisgICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3NbMl0pID09
ICdhJworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzNdKSA9PSAnbicKKyAgICAgICAgJiYg
dG9BU0NJSUxvd2VyKHBvc1s0XSkgPT0gJ3MnCisgICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3Nb
NV0pID09ICdsJworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzZdKSA9PSAnYScKKyAgICAg
ICAgJiYgdG9BU0NJSUxvd2VyKHBvc1s3XSkgPT0gJ3QnCisgICAgICAgICYmIHRvQVNDSUlMb3dl
cihwb3NbOF0pID09ICdlJzsKKworICAgIGlmIChpc1RyYW5zbGF0ZSkgeworICAgICAgICBDU1NW
YWx1ZUlEIHRyYW5zZm9ybVR5cGU7CisgICAgICAgIHVuc2lnbmVkIGV4cGVjdGVkQXJndW1lbnRD
b3VudCA9IDE7CisgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50U3RhcnQgPSAxMTsKKyAgICAgICAg
Q2hhclR5cGUgYzkgPSB0b0FTQ0lJTG93ZXIocG9zWzldKTsKKyAgICAgICAgaWYgKGM5ID09ICd4
JyAmJiBwb3NbMTBdID09ICcoJykgeworICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSA9IENTU1Zh
bHVlVHJhbnNsYXRlWDsKKyAgICAgICAgfSBlbHNlIGlmIChjOSA9PSAneScgJiYgcG9zWzEwXSA9
PSAnKCcpIHsKKyAgICAgICAgICAgIHRyYW5zZm9ybVR5cGUgPSBDU1NWYWx1ZVRyYW5zbGF0ZVk7
CisgICAgICAgIH0gZWxzZSBpZiAoYzkgPT0gJ3onICYmIHBvc1sxMF0gPT0gJygnKSB7CisgICAg
ICAgICAgICB0cmFuc2Zvcm1UeXBlID0gQ1NTVmFsdWVUcmFuc2xhdGVaOworICAgICAgICB9IGVs
c2UgaWYgKGM5ID09ICcoJykgeworICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSA9IENTU1ZhbHVl
VHJhbnNsYXRlOworICAgICAgICAgICAgZXhwZWN0ZWRBcmd1bWVudENvdW50ID0gMjsKKyAgICAg
ICAgICAgIGFyZ3VtZW50U3RhcnQgPSAxMDsKKyAgICAgICAgfSBlbHNlIGlmIChjOSA9PSAnMycg
JiYgdG9BU0NJSUxvd2VyKHBvc1sxMF0pID09ICdkJyAmJiBwb3NbMTFdID09ICcoJykgeworICAg
ICAgICAgICAgdHJhbnNmb3JtVHlwZSA9IENTU1ZhbHVlVHJhbnNsYXRlM2Q7CisgICAgICAgICAg
ICBleHBlY3RlZEFyZ3VtZW50Q291bnQgPSAzOworICAgICAgICAgICAgYXJndW1lbnRTdGFydCA9
IDEyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIH0KKyAgICAgICAgcG9zICs9IGFyZ3VtZW50U3RhcnQ7CisgICAgICAgIENTU0Z1bmN0aW9u
VmFsdWUqIHRyYW5zZm9ybVZhbHVlID0gQ1NTRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKHRyYW5zZm9y
bVR5cGUpOworICAgICAgICBpZiAoIXBhcnNlVHJhbnNmb3JtVHJhbnNsYXRlQXJndW1lbnRzKHBv
cywgZW5kLCBleHBlY3RlZEFyZ3VtZW50Q291bnQsIHRyYW5zZm9ybVZhbHVlKSkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gdHJhbnNmb3JtVmFsdWU7CisgICAg
fQorCisgICAgY29uc3QgYm9vbCBpc01hdHJpeDNkID0gdG9BU0NJSUxvd2VyKHBvc1swXSkgPT0g
J20nCisgICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3NbMV0pID09ICdhJworICAgICAgICAmJiB0
b0FTQ0lJTG93ZXIocG9zWzJdKSA9PSAndCcKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1sz
XSkgPT0gJ3InCisgICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3NbNF0pID09ICdpJworICAgICAg
ICAmJiB0b0FTQ0lJTG93ZXIocG9zWzVdKSA9PSAneCcKKyAgICAgICAgJiYgcG9zWzZdID09ICcz
JworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzddKSA9PSAnZCcKKyAgICAgICAgJiYgcG9z
WzhdID09ICcoJzsKKworICAgIGlmIChpc01hdHJpeDNkKSB7CisgICAgICAgIHBvcyArPSA5Owor
ICAgICAgICBDU1NGdW5jdGlvblZhbHVlKiB0cmFuc2Zvcm1WYWx1ZSA9IENTU0Z1bmN0aW9uVmFs
dWU6OmNyZWF0ZShDU1NWYWx1ZU1hdHJpeDNkKTsKKyAgICAgICAgaWYgKCFwYXJzZVRyYW5zZm9y
bU51bWJlckFyZ3VtZW50cyhwb3MsIGVuZCwgMTYsIHRyYW5zZm9ybVZhbHVlKSkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gdHJhbnNmb3JtVmFsdWU7CisgICAg
fQorCisgICAgY29uc3QgYm9vbCBpc1NjYWxlM2QgPSB0b0FTQ0lJTG93ZXIocG9zWzBdKSA9PSAn
cycKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1sxXSkgPT0gJ2MnCisgICAgICAgICYmIHRv
QVNDSUlMb3dlcihwb3NbMl0pID09ICdhJworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzNd
KSA9PSAnbCcKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1s0XSkgPT0gJ2UnCisgICAgICAg
ICYmIHBvc1s1XSA9PSAnMycKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1s2XSkgPT0gJ2Qn
CisgICAgICAgICYmIHBvc1s3XSA9PSAnKCc7CisKKyAgICBpZiAoaXNTY2FsZTNkKSB7CisgICAg
ICAgIHBvcyArPSA4OworICAgICAgICBDU1NGdW5jdGlvblZhbHVlKiB0cmFuc2Zvcm1WYWx1ZSA9
IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShDU1NWYWx1ZVNjYWxlM2QpOworICAgICAgICBpZiAo
IXBhcnNlVHJhbnNmb3JtTnVtYmVyQXJndW1lbnRzKHBvcywgZW5kLCAzLCB0cmFuc2Zvcm1WYWx1
ZSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHRyYW5zZm9y
bVZhbHVlOworICAgIH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhclR5cGU+CitzdGF0aWMgYm9vbCB0cmFuc2Zvcm1DYW5MaWtlbHlVc2VGYXN0UGF0
aChjb25zdCBDaGFyVHlwZSogY2hhcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICAvLyBWZXJ5
IGZhc3Qgc2NhbiB0aGF0IGF0dGVtcHRzIHRvIHJlamVjdCBtb3N0IHRyYW5zZm9ybXMgdGhhdCBj
b3VsZG4ndAorICAgIC8vIHRha2UgdGhlIGZhc3QgcGF0aC4gVGhpcyBhdm9pZHMgZG9pbmcgdGhl
IG1hbGxvYyBhbmQgc3RyaW5nLT5kb3VibGUKKyAgICAvLyBjb252ZXJzaW9ucyBpbiBwYXJzZVNp
bXBsZVRyYW5zZm9ybVZhbHVlIG9ubHkgdG8gZGlzY2FyZCB0aGVtIHdoZW4gd2UKKyAgICAvLyBy
dW4gaW50byBhIHRyYW5zZm9ybSBjb21wb25lbnQgd2UgZG9uJ3QgdW5kZXJzdGFuZC4KKyAgICB1
bnNpZ25lZCBpID0gMDsKKyAgICB3aGlsZSAoaSA8IGxlbmd0aCkgeworICAgICAgICBpZiAoaXND
U1NTcGFjZShjaGFyc1tpXSkpIHsKKyAgICAgICAgICAgICsraTsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisgICAgICAgIGlmIChsZW5ndGggLSBpIDwga1Nob3J0ZXN0VmFsaWRU
cmFuc2Zvcm1TdHJpbmdMZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHN3aXRjaCAodG9BU0NJSUxvd2VyKGNoYXJzW2ldKSkgeworICAgICAgICBjYXNlICd0JzoKKyAg
ICAgICAgICAgIC8vIHRyYW5zbGF0ZSwgdHJhbnNsYXRlWCwgdHJhbnNsYXRlWSwgdHJhbnNsYXRl
WiwgdHJhbnNsYXRlM2QuCisgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGNoYXJzW2kgKyA4
XSkgIT0gJ2UnKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGkg
Kz0gOTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdtJzoKKyAgICAgICAgICAg
IC8vIG1hdHJpeDNkLgorICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihjaGFyc1tpICsgN10p
ICE9ICdkJykKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpICs9
IDg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAncyc6CisgICAgICAgICAgICAv
LyBzY2FsZTNkLgorICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihjaGFyc1tpICsgNl0pICE9
ICdkJykKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpICs9IDc7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vIEFs
bCBvdGhlciB0aGluZ3MsIGV4LiByb3RhdGUuCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKyAgICAgICAgc2l6ZV90IGFyZ3VtZW50c0VuZCA9IFdURjo6ZmluZChjaGFycywg
bGVuZ3RoLCAnKScsIGkpOworICAgICAgICBpZiAoYXJndW1lbnRzRW5kID09IGtOb3RGb3VuZCkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgLy8gQWR2YW5jZSB0byB0aGUgZW5k
IG9mIHRoZSBhcmd1bWVudHMuCisgICAgICAgIGkgPSBhcmd1bWVudHNFbmQgKyAxOworICAgIH0K
KyAgICByZXR1cm4gaSA9PSBsZW5ndGg7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlw
ZT4KK3N0YXRpYyBDU1NWYWx1ZUxpc3QqIHBhcnNlU2ltcGxlVHJhbnNmb3JtTGlzdChjb25zdCBD
aGFyVHlwZSogY2hhcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBpZiAoIXRyYW5zZm9ybUNh
bkxpa2VseVVzZUZhc3RQYXRoKGNoYXJzLCBsZW5ndGgpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICBjb25zdCBDaGFyVHlwZSomIHBvcyA9IGNoYXJzOworICAgIGNvbnN0IENoYXJUeXBl
KiBlbmQgPSBjaGFycyArIGxlbmd0aDsKKyAgICBDU1NWYWx1ZUxpc3QqIHRyYW5zZm9ybUxpc3Qg
PSBudWxscHRyOworICAgIHdoaWxlIChwb3MgPCBlbmQpIHsKKyAgICAgICAgd2hpbGUgKHBvcyA8
IGVuZCAmJiBpc0NTU1NwYWNlKCpwb3MpKQorICAgICAgICAgICAgKytwb3M7CisgICAgICAgIGlm
IChwb3MgPj0gZW5kKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIENTU0Z1bmN0aW9uVmFs
dWUqIHRyYW5zZm9ybVZhbHVlID0gcGFyc2VTaW1wbGVUcmFuc2Zvcm1WYWx1ZShwb3MsIGVuZCk7
CisgICAgICAgIGlmICghdHJhbnNmb3JtVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgaWYgKCF0cmFuc2Zvcm1MaXN0KQorICAgICAgICAgICAgdHJhbnNmb3JtTGlz
dCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgdHJhbnNm
b3JtTGlzdC0+YXBwZW5kKCp0cmFuc2Zvcm1WYWx1ZSk7CisgICAgfQorICAgIHJldHVybiB0cmFu
c2Zvcm1MaXN0OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIHBhcnNlU2ltcGxlVHJhbnNmb3JtKENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgQVNT
RVJUKCFzdHJpbmcuaXNFbXB0eSgpKTsKKworICAgIGlmIChwcm9wZXJ0eUlEICE9IENTU1Byb3Bl
cnR5VHJhbnNmb3JtKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoc3RyaW5nLmlz
OEJpdCgpKQorICAgICAgICByZXR1cm4gcGFyc2VTaW1wbGVUcmFuc2Zvcm1MaXN0KHN0cmluZy5j
aGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOworICAgIHJldHVybiBwYXJzZVNpbXBsZVRy
YW5zZm9ybUxpc3Qoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCkpOworfQor
CitDU1NWYWx1ZSogQ1NTUGFyc2VyRmFzdFBhdGhzOjptYXliZVBhcnNlVmFsdWUoQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHN0cmluZywgQ1NTUGFyc2VyTW9kZSBwYXJz
ZXJNb2RlKQoreworICAgIGlmIChDU1NWYWx1ZSogbGVuZ3RoID0gcGFyc2VTaW1wbGVMZW5ndGhW
YWx1ZShwcm9wZXJ0eUlELCBzdHJpbmcsIHBhcnNlck1vZGUpKQorICAgICAgICByZXR1cm4gbGVu
Z3RoOworICAgIGlmIChpc0NvbG9yUHJvcGVydHlJRChwcm9wZXJ0eUlEKSkKKyAgICAgICAgcmV0
dXJuIHBhcnNlQ29sb3Ioc3RyaW5nLCBwYXJzZXJNb2RlKTsKKyAgICBpZiAoQ1NTVmFsdWUqIGtl
eXdvcmQgPSBwYXJzZUtleXdvcmRWYWx1ZShwcm9wZXJ0eUlELCBzdHJpbmcsIHBhcnNlck1vZGUp
KQorICAgICAgICByZXR1cm4ga2V5d29yZDsKKyAgICBpZiAoQ1NTVmFsdWUqIHRyYW5zZm9ybSA9
IHBhcnNlU2ltcGxlVHJhbnNmb3JtKHByb3BlcnR5SUQsIHN0cmluZykpCisgICAgICAgIHJldHVy
biB0cmFuc2Zvcm07CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKKyAgICAgKi8KK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2Vy
RmFzdFBhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJGYXN0UGF0aHMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlckZhc3RQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAK
Ky8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8v
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
Ly8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZuZGVm
IENTU1BhcnNlckZhc3RQYXRoc19oCisjZGVmaW5lIENTU1BhcnNlckZhc3RQYXRoc19oCisKKyNp
bmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgor
I2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDU1NWYWx1ZTsKKworY2xhc3Mg
Q1NTUGFyc2VyRmFzdFBhdGhzIHsKK3B1YmxpYzoKKyAgICAvLyBQYXJzZXMgc2ltcGxlIHZhbHVl
cyBsaWtlICcxMHB4JyBvciAnZ3JlZW4nLCBidXQgbWFrZXMgbm8gZ3VhcmFudGVlcworICAgIC8v
IGFib3V0IGhhbmRsaW5nIGFueSBwcm9wZXJ0eSBjb21wbGV0ZWx5LgorICAgIHN0YXRpYyBDU1NW
YWx1ZSogbWF5YmVQYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYsIENTU1Bh
cnNlck1vZGUpOworCisgICAgLy8gUHJvcGVydGllcyBoYW5kbGVkIGhlcmUgc2hvdWxkbid0IGJl
IGV4cGxpY2l0bHkgaGFuZGxlZCBpbiBDU1NQcm9wZXJ0eVBhcnNlcgorICAgIHN0YXRpYyBib29s
IGlzS2V5d29yZFByb3BlcnR5SUQoQ1NTUHJvcGVydHlJRCk7CisgICAgc3RhdGljIGJvb2wgaXNW
YWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlSUQsIENT
U1BhcnNlck1vZGUpOworCisgICAgc3RhdGljIENTU1ZhbHVlKiBwYXJzZUNvbG9yKGNvbnN0IFN0
cmluZyYsIENTU1BhcnNlck1vZGUpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gQ1NTUGFyc2VyRmFzdFBhdGhzX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VySWRpb21zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIENTU1BhcnNlcklkaW9tc19oCisjZGVmaW5lIENTU1BhcnNlcklkaW9tc19o
CisKKyNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
Ky8vIFNwYWNlIGNoYXJhY3RlcnMgYXMgZGVmaW5lZCBieSB0aGUgQ1NTIHNwZWNpZmljYXRpb24u
CisvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXN5bnRheC8jd2hpdGVzcGFjZQoraW5saW5l
IGJvb2wgaXNDU1NTcGFjZShVQ2hhciBjKQoreworICAgIHJldHVybiBjID09ICcgJyB8fCBjID09
ICdcdCcgfHwgYyA9PSAnXG4nOworfQorCisvLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3Mt
c3ludGF4LyNuYW1lLXN0YXJ0LWNvZGUtcG9pbnQKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPgorYm9vbCBpc05hbWVTdGFydENvZGVQb2ludChDaGFyYWN0ZXJUeXBlIGMpCit7Cisg
ICAgcmV0dXJuIGlzQVNDSUlBbHBoYShjKSB8fCBjID09ICdfJyB8fCAhaXNBU0NJSShjKTsKK30K
KworLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXN5bnRheC8jbmFtZS1jb2RlLXBvaW50
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK2Jvb2wgaXNOYW1lQ29kZVBvaW50
KENoYXJhY3RlclR5cGUgYykKK3sKKyAgICByZXR1cm4gaXNOYW1lU3RhcnRDb2RlUG9pbnQoYykg
fHwgaXNBU0NJSURpZ2l0KGMpIHx8IGMgPT0gJy0nOworfQorCit9CisKKyNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXIuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlck9ic2VydmVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
MyBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICog
Q29weXJpZ2h0IChDKSAyMDA5IC0gMjAxMCAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRk
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIENTU1BhcnNlck9ic2VydmVyX2gKKyNkZWZp
bmUgQ1NTUGFyc2VyT2JzZXJ2ZXJfaAorCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlTb3VyY2VEYXRh
LmgiCisjaW5jbHVkZSAiU3R5bGVSdWxlLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1BhcnNlclRva2VuOworY2xhc3MgQ1NTUGFy
c2VyVG9rZW5SYW5nZTsKKworLy8gVGhpcyBpcyBvbmx5IGZvciB0aGUgaW5zcGVjdG9yIGFuZCBz
aG91bGRuJ3QgYmUgdXNlZCBlbHNld2hlcmUuCitjbGFzcyBDU1NQYXJzZXJPYnNlcnZlciB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+Q1NTUGFyc2VyT2JzZXJ2ZXIoKSB7IH07CisgICAgdmlydHVh
bCB2b2lkIHN0YXJ0UnVsZUhlYWRlcihTdHlsZVJ1bGU6OlR5cGUsIHVuc2lnbmVkIG9mZnNldCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRSdWxlSGVhZGVyKHVuc2lnbmVkIG9mZnNldCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBvYnNlcnZlU2VsZWN0b3IodW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFydFJ1bGVCb2R5
KHVuc2lnbmVkIG9mZnNldCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRSdWxlQm9keSh1bnNp
Z25lZCBvZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb2JzZXJ2ZVByb3BlcnR5KHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIGJvb2wgaXNJbXBvcnRhbnQsIGJv
b2wgaXNQYXJzZWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb2JzZXJ2ZUNvbW1lbnQodW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkgPSAwOworICAgIC8vIEZJWE1FOiBV
bnVzZWQsIHNob3VsZCBiZSByZW1vdmVkCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0TWVkaWFRdWVy
eUV4cCh1bnNpZ25lZCBvZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kTWVkaWFRdWVy
eUV4cCh1bnNpZ25lZCBvZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRNZWRpYVF1
ZXJ5KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRNZWRpYVF1ZXJ5KCkgPSAwOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ1NTUGFyc2VyT2JzZXJ2ZXJfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyT2Jz
ZXJ2ZXJXcmFwcGVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlck9ic2VydmVyV3JhcHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw3MSBAQAorLy8gQ29weXJpZ2h0IDIwMTUgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6
CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisv
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIu
aCIKKworI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuUmFuZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCit1bnNpZ25lZCBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OnN0YXJ0T2Zmc2V0KGNv
bnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBtX3Rva2VuT2Zm
c2V0c1tyYW5nZS5iZWdpbigpIC0gbV9maXJzdFBhcnNlclRva2VuXTsKK30KKwordW5zaWduZWQg
Q1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyOjpwcmV2aW91c1Rva2VuU3RhcnRPZmZzZXQoY29uc3Qg
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLmJlZ2luKCkgPT0g
bV9maXJzdFBhcnNlclRva2VuKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV90b2tl
bk9mZnNldHNbcmFuZ2UuYmVnaW4oKSAtIG1fZmlyc3RQYXJzZXJUb2tlbiAtIDFdOworfQorCit1
bnNpZ25lZCBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OmVuZE9mZnNldChjb25zdCBDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4gbV90b2tlbk9mZnNldHNbcmFuZ2Uu
ZW5kKCkgLSBtX2ZpcnN0UGFyc2VyVG9rZW5dOworfQorCit2b2lkIENTU1BhcnNlck9ic2VydmVy
V3JhcHBlcjo6c2tpcENvbW1lbnRzQmVmb3JlKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBib29sIGxlYXZlRGlyZWN0bHlCZWZvcmUpCit7CisgICAgdW5zaWduZWQgc3RhcnRJbmRl
eCA9IHJhbmdlLmJlZ2luKCkgLSBtX2ZpcnN0UGFyc2VyVG9rZW47CisgICAgaWYgKCFsZWF2ZURp
cmVjdGx5QmVmb3JlKQorICAgICAgICBzdGFydEluZGV4Kys7CisgICAgd2hpbGUgKG1fY29tbWVu
dEl0ZXJhdG9yIDwgbV9jb21tZW50T2Zmc2V0cy5lbmQoKSAmJiBtX2NvbW1lbnRJdGVyYXRvci0+
dG9rZW5zQmVmb3JlIDwgc3RhcnRJbmRleCkKKyAgICAgICAgbV9jb21tZW50SXRlcmF0b3IrKzsK
K30KKwordm9pZCBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OnlpZWxkQ29tbWVudHNCZWZvcmUo
Y29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgdW5zaWduZWQgc3RhcnRJ
bmRleCA9IHJhbmdlLmJlZ2luKCkgLSBtX2ZpcnN0UGFyc2VyVG9rZW47CisgICAgd2hpbGUgKG1f
Y29tbWVudEl0ZXJhdG9yIDwgbV9jb21tZW50T2Zmc2V0cy5lbmQoKSAmJiBtX2NvbW1lbnRJdGVy
YXRvci0+dG9rZW5zQmVmb3JlIDw9IHN0YXJ0SW5kZXgpIHsKKyAgICAgICAgbV9vYnNlcnZlci5v
YnNlcnZlQ29tbWVudChtX2NvbW1lbnRJdGVyYXRvci0+c3RhcnRPZmZzZXQsIG1fY29tbWVudEl0
ZXJhdG9yLT5lbmRPZmZzZXQpOworICAgICAgICBtX2NvbW1lbnRJdGVyYXRvcisrOworICAgIH0K
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlck9ic2VydmVyV3JhcHBlci5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OSBAQAorLy8gQ29weXJpZ2h0IDIwMTUgVGhlIENo
cm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisv
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8g
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZm5kZWYgQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVy
X2gKKyNkZWZpbmUgQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyX2gKKworI2luY2x1ZGUgIkNTU1Bh
cnNlck9ic2VydmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTUGFyc2Vy
T2JzZXJ2ZXJXcmFwcGVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBDU1NQYXJzZXJPYnNlcnZl
cldyYXBwZXIoQ1NTUGFyc2VyT2JzZXJ2ZXImIG9ic2VydmVyKQorICAgICAgICA6IG1fb2JzZXJ2
ZXIob2JzZXJ2ZXIpCisgICAgeyB9CisKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldChjb25zdCBD
U1NQYXJzZXJUb2tlblJhbmdlJik7CisgICAgdW5zaWduZWQgcHJldmlvdXNUb2tlblN0YXJ0T2Zm
c2V0KGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmKTsKKyAgICB1bnNpZ25lZCBlbmRPZmZzZXQo
Y29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOyAvLyBJbmNsdWRlcyB0cmFpbGluZyBjb21tZW50
cworCisgICAgdm9pZCBza2lwQ29tbWVudHNCZWZvcmUoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYsIGJvb2wgbGVhdmVEaXJlY3RseUJlZm9yZSk7CisgICAgdm9pZCB5aWVsZENvbW1lbnRzQmVm
b3JlKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmKTsKKworICAgIENTU1BhcnNlck9ic2VydmVy
JiBvYnNlcnZlcigpIHsgcmV0dXJuIG1fb2JzZXJ2ZXI7IH0KKyAgICB2b2lkIGFkZENvbW1lbnQo
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgdG9rZW5z
QmVmb3JlKQorICAgIHsKKyAgICAgICAgQ29tbWVudFBvc2l0aW9uIHBvc2l0aW9uID0ge3N0YXJ0
T2Zmc2V0LCBlbmRPZmZzZXQsIHRva2Vuc0JlZm9yZX07CisgICAgICAgIG1fY29tbWVudE9mZnNl
dHMuYXBwZW5kKHBvc2l0aW9uKTsKKyAgICB9CisgICAgdm9pZCBhZGRUb2tlbih1bnNpZ25lZCBz
dGFydE9mZnNldCkgeyBtX3Rva2VuT2Zmc2V0cy5hcHBlbmQoc3RhcnRPZmZzZXQpOyB9CisgICAg
dm9pZCBmaW5hbGl6ZUNvbnN0cnVjdGlvbihDU1NQYXJzZXJUb2tlbiogZmlyc3RQYXJzZXJUb2tl
bikKKyAgICB7CisgICAgICAgIG1fZmlyc3RQYXJzZXJUb2tlbiA9IGZpcnN0UGFyc2VyVG9rZW47
CisgICAgICAgIG1fY29tbWVudEl0ZXJhdG9yID0gbV9jb21tZW50T2Zmc2V0cy5iZWdpbigpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBDU1NQYXJzZXJPYnNlcnZlciYgbV9vYnNlcnZlcjsKKyAg
ICBWZWN0b3I8dW5zaWduZWQ+IG1fdG9rZW5PZmZzZXRzOworICAgIENTU1BhcnNlclRva2VuKiBt
X2ZpcnN0UGFyc2VyVG9rZW47CisKKyAgICBzdHJ1Y3QgQ29tbWVudFBvc2l0aW9uIHsKKyAgICAg
ICAgdW5zaWduZWQgc3RhcnRPZmZzZXQ7CisgICAgICAgIHVuc2lnbmVkIGVuZE9mZnNldDsKKyAg
ICAgICAgdW5zaWduZWQgdG9rZW5zQmVmb3JlOworICAgIH07CisKKyAgICBWZWN0b3I8Q29tbWVu
dFBvc2l0aW9uPiBtX2NvbW1lbnRPZmZzZXRzOworICAgIFZlY3RvcjxDb21tZW50UG9zaXRpb24+
OjppdGVyYXRvciBtX2NvbW1lbnRJdGVyYXRvcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIENTU1BhcnNlck9ic2VydmVyV3JhcHBlcl9oCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQ3NiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgVGhlIENocm9taXVtIEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
Ky8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJU
b2tlbi5oIgorCisjaW5jbHVkZSAiQ1NTTWFya3VwLmgiCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZl
VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNlci5oIgorI2luY2x1ZGUgPGxpbWl0
cy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+CitDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIGNzc1ByaW1pdGl2ZVZh
bHVlVW5pdEZyb21UcmllKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkKK3sKKyAgICBBU1NFUlQoZGF0YSk7CisgICAgQVNTRVJUKGxlbmd0aCk7CisgICAgc3dpdGNo
IChsZW5ndGgpIHsKKyAgICBjYXNlIDE6CisgICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGRh
dGFbMF0pKSB7CisgICAgICAgIGNhc2UgJ3MnOgorICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19TOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgMjoKKyAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVswXSkpIHsKKyAg
ICAgICAgY2FzZSAnYyc6CisgICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFd
KSkgeworICAgICAgICAgICAgY2FzZSAnaCc6CisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1By
aW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19DSFM7CisgICAgICAgICAgICBjYXNlICdtJzoK
KyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NT
X0NNOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ2Un
OgorICAgICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkpIHsKKyAgICAgICAg
ICAgIGNhc2UgJ20nOgorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGVzOjpDU1NfRU1TOworICAgICAgICAgICAgY2FzZSAneCc6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19FWFM7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnZic6CisgICAgICAgICAg
ICBpZiAodG9BU0NJSUxvd2VyKGRhdGFbMV0pID09ICdyJykKKyAgICAgICAgICAgICAgICByZXR1
cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0ZSOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgJ2gnOgorICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRh
WzFdKSA9PSAneicpCisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZXM6OkNTU19IWjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdpJzoK
KyAgICAgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkgPT0gJ24nKQorICAgICAgICAg
ICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfSU47CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnbSc6CisgICAgICAgICAgICBzd2l0Y2ggKHRv
QVNDSUlMb3dlcihkYXRhWzFdKSkgeworICAgICAgICAgICAgY2FzZSAnbSc6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19NTTsKKyAgICAg
ICAgICAgIGNhc2UgJ3MnOgorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzOjpDU1NfTVM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSAncCc6CisgICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRh
WzFdKSkgeworICAgICAgICAgICAgY2FzZSAnYyc6CisgICAgICAgICAgICAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19QQzsKKyAgICAgICAgICAgIGNhc2UgJ3Qn
OgorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpD
U1NfUFQ7CisgICAgICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1BYOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ3YnOgorICAgICAgICAgICAgc3dpdGNoICh0b0FT
Q0lJTG93ZXIoZGF0YVsxXSkpIHsKKyAgICAgICAgICAgIGNhc2UgJ2gnOgorICAgICAgICAgICAg
ICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfVkg7CisgICAgICAg
ICAgICBjYXNlICd3JzoKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlczo6Q1NTX1ZXOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAzOgorICAgICAgICBzd2l0Y2ggKHRv
QVNDSUlMb3dlcihkYXRhWzBdKSkgeworICAgICAgICBjYXNlICdkJzoKKyAgICAgICAgICAgIHN3
aXRjaCAodG9BU0NJSUxvd2VyKGRhdGFbMV0pKSB7CisgICAgICAgICAgICBjYXNlICdlJzoKKyAg
ICAgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGRhdGFbMl0pID09ICdnJykKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19ERUc7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdwJzoKKyAgICAgICAg
ICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGRhdGFbMl0pID09ICdpJykKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19EUEk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlICdrJzoKKyAgICAgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkgPT0gJ2gn
ICYmIHRvQVNDSUlMb3dlcihkYXRhWzJdKSA9PSAneicpCisgICAgICAgICAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19LSFo7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSAncic6CisgICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihk
YXRhWzFdKSkgeworICAgICAgICAgICAgY2FzZSAnYSc6CisgICAgICAgICAgICAgICAgaWYgKHRv
QVNDSUlMb3dlcihkYXRhWzJdKSA9PSAnZCcpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUkFEOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAnZSc6CisgICAgICAgICAgICAgICAgaWYgKHRvQVNDSUlM
b3dlcihkYXRhWzJdKSA9PSAnbScpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUkVNUzsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGJyZWFrOworICAgIGNh
c2UgNDoKKyAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVswXSkpIHsKKyAgICAgICAg
Y2FzZSAnZCc6CisgICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkgewor
ICAgICAgICAgICAgY2FzZSAncCc6CisgICAgICAgICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93
ZXIoZGF0YVsyXSkpIHsKKyAgICAgICAgICAgICAgICBjYXNlICdjJzoKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzNdKSA9PSAnbScpCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0RQQ007Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgJ3AnOgorICAg
ICAgICAgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGRhdGFbM10pID09ICd4JykKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpD
U1NfRFBQWDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgJ2cnOgorICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzFdKSA9PSAncicgJiYg
dG9BU0NJSUxvd2VyKGRhdGFbMl0pID09ICdhJyAmJiB0b0FTQ0lJTG93ZXIoZGF0YVszXSkgPT0g
J2QnKQorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVz
OjpDU1NfR1JBRDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICd0JzoKKyAgICAg
ICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkgPT0gJ3UnICYmIHRvQVNDSUlMb3dlcihk
YXRhWzJdKSA9PSAncicgJiYgdG9BU0NJSUxvd2VyKGRhdGFbM10pID09ICduJykKKyAgICAgICAg
ICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1RVUk47Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAndic6CisgICAgICAgICAgICBzd2l0Y2gg
KHRvQVNDSUlMb3dlcihkYXRhWzFdKSkgeworICAgICAgICAgICAgY2FzZSAnbSc6CisgICAgICAg
ICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVsyXSkpIHsKKyAgICAgICAgICAgICAg
ICBjYXNlICdhJzoKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzNd
KSA9PSAneCcpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlczo6Q1NTX1ZNQVg7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgJ2knOgorICAgICAgICAgICAgICAgICAgICBpZiAodG9BU0NJSUxv
d2VyKGRhdGFbM10pID09ICduJykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NQ
cmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfVk1JTjsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSA1OgorICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzBdKSkgeworICAg
ICAgICBjYXNlICdfJzoKKyAgICAgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkgPT0g
J18nICYmIHRvQVNDSUlMb3dlcihkYXRhWzJdKSA9PSAncScgJiYgdG9BU0NJSUxvd2VyKGRhdGFb
M10pID09ICdlJyAmJiB0b0FTQ0lJTG93ZXIoZGF0YVs0XSkgPT0gJ20nKQorICAgICAgICAgICAg
ICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfRU1TOyAvLyBGSVhN
RS1ORVdQQVJTRVI6IE5lZWQgcXVpcmt5IGVtcy4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlczo6Q1NTX1VOS05PV047Cit9CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGVzIHN0cmluZ1RvVW5pdFR5cGUoU3RyaW5nVmlldyBzdHJpbmdWaWV3KQoreworICAg
IGlmIChzdHJpbmdWaWV3LmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gY3NzUHJpbWl0aXZlVmFs
dWVVbml0RnJvbVRyaWUoc3RyaW5nVmlldy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmdWaWV3Lmxlbmd0
aCgpKTsKKyAgICByZXR1cm4gY3NzUHJpbWl0aXZlVmFsdWVVbml0RnJvbVRyaWUoc3RyaW5nVmll
dy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nVmlldy5sZW5ndGgoKSk7Cit9CisKK0NTU1BhcnNlclRv
a2VuOjpDU1NQYXJzZXJUb2tlbihDU1NQYXJzZXJUb2tlblR5cGUgdHlwZSwgQmxvY2tUeXBlIGJs
b2NrVHlwZSkKKyAgICA6IG1fdHlwZSh0eXBlKQorICAgICwgbV9ibG9ja1R5cGUoYmxvY2tUeXBl
KQoreworfQorCisvLyBKdXN0IGEgaGVscGVyIHVzZWQgZm9yIERlbGltaXRlciB0b2tlbnMuCitD
U1NQYXJzZXJUb2tlbjo6Q1NTUGFyc2VyVG9rZW4oQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIFVD
aGFyIGMpCisgICAgOiBtX3R5cGUodHlwZSkKKyAgICAsIG1fYmxvY2tUeXBlKE5vdEJsb2NrKQor
ICAgICwgbV9kZWxpbWl0ZXIoYykKK3sKKyAgICBBU1NFUlQobV90eXBlID09IERlbGltaXRlclRv
a2VuKTsKK30KKworQ1NTUGFyc2VyVG9rZW46OkNTU1BhcnNlclRva2VuKENTU1BhcnNlclRva2Vu
VHlwZSB0eXBlLCBTdHJpbmdWaWV3IHZhbHVlLCBCbG9ja1R5cGUgYmxvY2tUeXBlKQorICAgIDog
bV90eXBlKHR5cGUpCisgICAgLCBtX2Jsb2NrVHlwZShibG9ja1R5cGUpCit7CisgICAgaW5pdFZh
bHVlRnJvbVN0cmluZ1ZpZXcodmFsdWUpOworICAgIG1faWQgPSAtMTsKK30KKworQ1NTUGFyc2Vy
VG9rZW46OkNTU1BhcnNlclRva2VuKENTU1BhcnNlclRva2VuVHlwZSB0eXBlLCBkb3VibGUgbnVt
ZXJpY1ZhbHVlLCBOdW1lcmljVmFsdWVUeXBlIG51bWVyaWNWYWx1ZVR5cGUsIE51bWVyaWNTaWdu
IHNpZ24pCisgICAgOiBtX3R5cGUodHlwZSkKKyAgICAsIG1fYmxvY2tUeXBlKE5vdEJsb2NrKQor
ICAgICwgbV9udW1lcmljVmFsdWVUeXBlKG51bWVyaWNWYWx1ZVR5cGUpCisgICAgLCBtX251bWVy
aWNTaWduKHNpZ24pCisgICAgLCBtX3VuaXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19OVU1CRVIpKQoreworICAgIEFTU0VSVCh0eXBlID09
IE51bWJlclRva2VuKTsKKyAgICBtX251bWVyaWNWYWx1ZSA9IGNsYW1wVG88ZG91YmxlPihudW1l
cmljVmFsdWUsIC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCksIHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZmxvYXQ+OjptYXgoKSk7Cit9CisKK0NTU1BhcnNlclRva2VuOjpDU1NQYXJzZXJU
b2tlbihDU1NQYXJzZXJUb2tlblR5cGUgdHlwZSwgVUNoYXIzMiBzdGFydCwgVUNoYXIzMiBlbmQp
CisgICAgOiBtX3R5cGUoVW5pY29kZVJhbmdlVG9rZW4pCisgICAgLCBtX2Jsb2NrVHlwZShOb3RC
bG9jaykKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHR5cGUsIHR5cGUgPT0gVW5pY29kZVJhbmdlVG9r
ZW4pOworICAgIG1fdW5pY29kZVJhbmdlLnN0YXJ0ID0gc3RhcnQ7CisgICAgbV91bmljb2RlUmFu
Z2UuZW5kID0gZW5kOworfQorCitDU1NQYXJzZXJUb2tlbjo6Q1NTUGFyc2VyVG9rZW4oSGFzaFRv
a2VuVHlwZSB0eXBlLCBTdHJpbmdWaWV3IHZhbHVlKQorICAgIDogbV90eXBlKEhhc2hUb2tlbikK
KyAgICAsIG1fYmxvY2tUeXBlKE5vdEJsb2NrKQorICAgICwgbV9oYXNoVG9rZW5UeXBlKHR5cGUp
Cit7CisgICAgaW5pdFZhbHVlRnJvbVN0cmluZ1ZpZXcodmFsdWUpOworfQorCit2b2lkIENTU1Bh
cnNlclRva2VuOjpjb252ZXJ0VG9EaW1lbnNpb25XaXRoVW5pdChTdHJpbmdWaWV3IHVuaXQpCit7
CisgICAgQVNTRVJUKG1fdHlwZSA9PSBOdW1iZXJUb2tlbik7CisgICAgbV90eXBlID0gRGltZW5z
aW9uVG9rZW47CisgICAgaW5pdFZhbHVlRnJvbVN0cmluZ1ZpZXcodW5pdCk7CisgICAgbV91bml0
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0cmluZ1RvVW5pdFR5cGUodW5pdCkpOworfQorCit2
b2lkIENTU1BhcnNlclRva2VuOjpjb252ZXJ0VG9QZXJjZW50YWdlKCkKK3sKKyAgICBBU1NFUlQo
bV90eXBlID09IE51bWJlclRva2VuKTsKKyAgICBtX3R5cGUgPSBQZXJjZW50YWdlVG9rZW47Cisg
ICAgbV91bml0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZXM6OkNTU19QRVJDRU5UQUdFKTsKK30KKworVUNoYXIgQ1NTUGFyc2VyVG9rZW46OmRlbGlt
aXRlcigpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBEZWxpbWl0ZXJUb2tlbik7Cisg
ICAgcmV0dXJuIG1fZGVsaW1pdGVyOworfQorCitOdW1lcmljU2lnbiBDU1NQYXJzZXJUb2tlbjo6
bnVtZXJpY1NpZ24oKSBjb25zdAoreworICAgIC8vIFRoaXMgaXMgdmFsaWQgZm9yIERpbWVuc2lv
blRva2VuIGFuZCBQZXJjZW50YWdlVG9rZW4sIGJ1dCBvbmx5IHVzZWQKKyAgICAvLyBpbiA8YW4r
Yj4gcGFyc2luZyBvbiBOdW1iZXJUb2tlbnMuCisgICAgQVNTRVJUKG1fdHlwZSA9PSBOdW1iZXJU
b2tlbik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE51bWVyaWNTaWduPihtX251bWVyaWNTaWdu
KTsKK30KKworTnVtZXJpY1ZhbHVlVHlwZSBDU1NQYXJzZXJUb2tlbjo6bnVtZXJpY1ZhbHVlVHlw
ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBOdW1iZXJUb2tlbiB8fCBtX3R5cGUg
PT0gUGVyY2VudGFnZVRva2VuIHx8IG1fdHlwZSA9PSBEaW1lbnNpb25Ub2tlbik7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PE51bWVyaWNWYWx1ZVR5cGU+KG1fbnVtZXJpY1ZhbHVlVHlwZSk7Cit9
CisKK2RvdWJsZSBDU1NQYXJzZXJUb2tlbjo6bnVtZXJpY1ZhbHVlKCkgY29uc3QKK3sKKyAgICBB
U1NFUlQobV90eXBlID09IE51bWJlclRva2VuIHx8IG1fdHlwZSA9PSBQZXJjZW50YWdlVG9rZW4g
fHwgbV90eXBlID09IERpbWVuc2lvblRva2VuKTsKKyAgICByZXR1cm4gbV9udW1lcmljVmFsdWU7
Cit9CisKK0NTU1Byb3BlcnR5SUQgQ1NTUGFyc2VyVG9rZW46OnBhcnNlQXNVbnJlc29sdmVkQ1NT
UHJvcGVydHlJRCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBJZGVudFRva2VuKTsK
KyAgICByZXR1cm4gdW5yZXNvbHZlZENTU1Byb3BlcnR5SUQodmFsdWUoKSk7Cit9CisKK0NTU1Zh
bHVlSUQgQ1NTUGFyc2VyVG9rZW46OmlkKCkgY29uc3QKK3sKKyAgICBpZiAobV90eXBlICE9IElk
ZW50VG9rZW4pCisgICAgICAgIHJldHVybiBDU1NWYWx1ZUludmFsaWQ7CisgICAgaWYgKG1faWQg
PCAwKQorICAgICAgICBtX2lkID0gY3NzVmFsdWVLZXl3b3JkSUQodmFsdWUoKSk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KG1faWQpOworfQorCitDU1NWYWx1ZUlEIENTU1Bh
cnNlclRva2VuOjpmdW5jdGlvbklkKCkgY29uc3QKK3sKKyAgICBpZiAobV90eXBlICE9IEZ1bmN0
aW9uVG9rZW4pCisgICAgICAgIHJldHVybiBDU1NWYWx1ZUludmFsaWQ7CisgICAgaWYgKG1faWQg
PCAwKQorICAgICAgICBtX2lkID0gY3NzVmFsdWVLZXl3b3JkSUQodmFsdWUoKSk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KG1faWQpOworfQorCitib29sIENTU1BhcnNlclRv
a2VuOjpoYXNTdHJpbmdCYWNraW5nKCkgY29uc3QKK3sKKyAgICBDU1NQYXJzZXJUb2tlblR5cGUg
dG9rZW5UeXBlID0gdHlwZSgpOworICAgIHJldHVybiB0b2tlblR5cGUgPT0gSWRlbnRUb2tlbgor
ICAgICAgICB8fCB0b2tlblR5cGUgPT0gRnVuY3Rpb25Ub2tlbgorICAgICAgICB8fCB0b2tlblR5
cGUgPT0gQXRLZXl3b3JkVG9rZW4KKyAgICAgICAgfHwgdG9rZW5UeXBlID09IEhhc2hUb2tlbgor
ICAgICAgICB8fCB0b2tlblR5cGUgPT0gVXJsVG9rZW4KKyAgICAgICAgfHwgdG9rZW5UeXBlID09
IERpbWVuc2lvblRva2VuCisgICAgICAgIHx8IHRva2VuVHlwZSA9PSBTdHJpbmdUb2tlbjsKK30K
KworQ1NTUGFyc2VyVG9rZW4gQ1NTUGFyc2VyVG9rZW46OmNvcHlXaXRoVXBkYXRlZFN0cmluZyhj
b25zdCBTdHJpbmdWaWV3JiBzdHJpbmcpIGNvbnN0Cit7CisgICAgQ1NTUGFyc2VyVG9rZW4gY29w
eSgqdGhpcyk7CisgICAgY29weS5pbml0VmFsdWVGcm9tU3RyaW5nVmlldyhzdHJpbmcpOworICAg
IHJldHVybiBjb3B5OworfQorCitib29sIENTU1BhcnNlclRva2VuOjp2YWx1ZURhdGFDaGFyUmF3
RXF1YWwoY29uc3QgQ1NTUGFyc2VyVG9rZW4mIG90aGVyKSBjb25zdAoreworICAgIGlmIChtX3Zh
bHVlTGVuZ3RoICE9IG90aGVyLm1fdmFsdWVMZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmIChtX3ZhbHVlRGF0YUNoYXJSYXcgPT0gb3RoZXIubV92YWx1ZURhdGFDaGFyUmF3
ICYmIG1fdmFsdWVJczhCaXQgPT0gb3RoZXIubV92YWx1ZUlzOEJpdCkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBpZiAobV92YWx1ZUlzOEJpdCkKKyAgICAgICAgcmV0dXJuIG90aGVyLm1f
dmFsdWVJczhCaXQgPyBlcXVhbChzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KG1fdmFsdWVEYXRh
Q2hhclJhdyksIHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4ob3RoZXIubV92YWx1ZURhdGFDaGFy
UmF3KSwgbV92YWx1ZUxlbmd0aCkgOiBlcXVhbChzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KG1f
dmFsdWVEYXRhQ2hhclJhdyksIHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4ob3RoZXIubV92YWx1
ZURhdGFDaGFyUmF3KSwgbV92YWx1ZUxlbmd0aCk7CisgICAgCisgICAgcmV0dXJuIG90aGVyLm1f
dmFsdWVJczhCaXQgPyBlcXVhbChzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KG1fdmFsdWVEYXRh
Q2hhclJhdyksIHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4ob3RoZXIubV92YWx1ZURhdGFDaGFy
UmF3KSwgbV92YWx1ZUxlbmd0aCkgOiBlcXVhbChzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KG1f
dmFsdWVEYXRhQ2hhclJhdyksIHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4ob3RoZXIubV92YWx1
ZURhdGFDaGFyUmF3KSwgbV92YWx1ZUxlbmd0aCk7Cit9CisKK2Jvb2wgQ1NTUGFyc2VyVG9rZW46
Om9wZXJhdG9yPT0oY29uc3QgQ1NTUGFyc2VyVG9rZW4mIG90aGVyKSBjb25zdAoreworICAgIGlm
IChtX3R5cGUgIT0gb3RoZXIubV90eXBlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgc3dp
dGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIERlbGltaXRlclRva2VuOgorICAgICAgICByZXR1cm4g
ZGVsaW1pdGVyKCkgPT0gb3RoZXIuZGVsaW1pdGVyKCk7CisgICAgY2FzZSBIYXNoVG9rZW46Cisg
ICAgICAgIGlmIChtX2hhc2hUb2tlblR5cGUgIT0gb3RoZXIubV9oYXNoVG9rZW5UeXBlKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIElk
ZW50VG9rZW46CisgICAgY2FzZSBGdW5jdGlvblRva2VuOgorICAgIGNhc2UgU3RyaW5nVG9rZW46
CisgICAgY2FzZSBVcmxUb2tlbjoKKyAgICAgICAgcmV0dXJuIHZhbHVlRGF0YUNoYXJSYXdFcXVh
bChvdGhlcik7CisgICAgY2FzZSBEaW1lbnNpb25Ub2tlbjoKKyAgICAgICAgaWYgKCF2YWx1ZURh
dGFDaGFyUmF3RXF1YWwob3RoZXIpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIE51bWJlclRva2VuOgorICAgIGNhc2UgUGVyY2VudGFn
ZVRva2VuOgorICAgICAgICByZXR1cm4gbV9udW1lcmljU2lnbiA9PSBvdGhlci5tX251bWVyaWNT
aWduICYmIG1fbnVtZXJpY1ZhbHVlID09IG90aGVyLm1fbnVtZXJpY1ZhbHVlICYmIG1fbnVtZXJp
Y1ZhbHVlVHlwZSA9PSBvdGhlci5tX251bWVyaWNWYWx1ZVR5cGU7CisgICAgY2FzZSBVbmljb2Rl
UmFuZ2VUb2tlbjoKKyAgICAgICAgcmV0dXJuIG1fdW5pY29kZVJhbmdlLnN0YXJ0ID09IG90aGVy
Lm1fdW5pY29kZVJhbmdlLnN0YXJ0ICYmIG1fdW5pY29kZVJhbmdlLmVuZCA9PSBvdGhlci5tX3Vu
aWNvZGVSYW5nZS5lbmQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorfQorCit2b2lkIENTU1BhcnNlclRva2VuOjpzZXJpYWxpemUoU3RyaW5nQnVpbGRlciYgYnVp
bGRlcikgY29uc3QKK3sKKyAgICAvLyBUaGlzIGlzIGN1cnJlbnRseSBvbmx5IHVzZWQgZm9yIEBz
dXBwb3J0cyBDU1NPTS4gVG8ga2VlcCBvdXIgaW1wbGVtZW50YXRpb24KKyAgICAvLyBzaW1wbGUg
d2UgaGFuZGxlIHNvbWUgb2YgdGhlIGVkZ2UgY2FzZXMgaW5jb3JyZWN0bHkgKHNlZSBjb21tZW50
cyBiZWxvdykuCisgICAgc3dpdGNoICh0eXBlKCkpIHsKKyAgICBjYXNlIElkZW50VG9rZW46Cisg
ICAgICAgIHNlcmlhbGl6ZUlkZW50aWZpZXIodmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVyKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGdW5jdGlvblRva2VuOgorICAgICAgICBzZXJpYWxp
emVJZGVudGlmaWVyKHZhbHVlKCkudG9TdHJpbmcoKSwgYnVpbGRlcik7CisgICAgICAgIHJldHVy
biBidWlsZGVyLmFwcGVuZCgnKCcpOworICAgIGNhc2UgQXRLZXl3b3JkVG9rZW46CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCdAJyk7CisgICAgICAgIHNlcmlhbGl6ZUlkZW50aWZpZXIodmFsdWUo
KS50b1N0cmluZygpLCBidWlsZGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIYXNoVG9r
ZW46CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcjJyk7CisgICAgICAgIHNlcmlhbGl6ZUlkZW50
aWZpZXIodmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVyLCAoZ2V0SGFzaFRva2VuVHlwZSgpID09
IEhhc2hUb2tlblVucmVzdHJpY3RlZCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFVybFRv
a2VuOgorICAgICAgICBidWlsZGVyLmFwcGVuZCgidXJsKCIpOworICAgICAgICBzZXJpYWxpemVJ
ZGVudGlmaWVyKHZhbHVlKCkudG9TdHJpbmcoKSwgYnVpbGRlcik7CisgICAgICAgIHJldHVybiBi
dWlsZGVyLmFwcGVuZCgnKScpOworICAgIGNhc2UgRGVsaW1pdGVyVG9rZW46CisgICAgICAgIGlm
IChkZWxpbWl0ZXIoKSA9PSAnXFwnKQorICAgICAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5k
KCJcXFxuIik7CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZChkZWxpbWl0ZXIoKSk7Cisg
ICAgY2FzZSBOdW1iZXJUb2tlbjoKKyAgICAgICAgLy8gVGhlc2Ugd29uJ3QgcHJvcGVybHkgcHJl
c2VydmUgdGhlIE51bWVyaWNWYWx1ZVR5cGUgZmxhZworICAgICAgICByZXR1cm4gYnVpbGRlci5h
cHBlbmROdW1iZXIobnVtZXJpY1ZhbHVlKCkpOworICAgIGNhc2UgUGVyY2VudGFnZVRva2VuOgor
ICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihudW1lcmljVmFsdWUoKSk7CisgICAgICAgIHJl
dHVybiBidWlsZGVyLmFwcGVuZCgnJScpOworICAgIGNhc2UgRGltZW5zaW9uVG9rZW46CisgICAg
ICAgIC8vIFRoaXMgd2lsbCBpbmNvcnJlY3RseSBzZXJpYWxpemUgZS5nLiA0ZTNlMiBhcyA0MDAw
ZTIKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobnVtZXJpY1ZhbHVlKCkpOworICAgICAg
ICBzZXJpYWxpemVJZGVudGlmaWVyKHZhbHVlKCkudG9TdHJpbmcoKSwgYnVpbGRlcik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgVW5pY29kZVJhbmdlVG9rZW46CisgICAgICAgIHJldHVybiBi
dWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiVSslWC0lWCIsIHVuaWNvZGVSYW5nZVN0YXJ0
KCksIHVuaWNvZGVSYW5nZUVuZCgpKSk7CisgICAgY2FzZSBTdHJpbmdUb2tlbjoKKyAgICAgICAg
cmV0dXJuIHNlcmlhbGl6ZVN0cmluZyh2YWx1ZSgpLnRvU3RyaW5nKCksIGJ1aWxkZXIpOworCisg
ICAgY2FzZSBJbmNsdWRlTWF0Y2hUb2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5k
KCJ+PSIpOworICAgIGNhc2UgRGFzaE1hdGNoVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVy
LmFwcGVuZCgifD0iKTsKKyAgICBjYXNlIFByZWZpeE1hdGNoVG9rZW46CisgICAgICAgIHJldHVy
biBidWlsZGVyLmFwcGVuZCgiXj0iKTsKKyAgICBjYXNlIFN1ZmZpeE1hdGNoVG9rZW46CisgICAg
ICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgiJD0iKTsKKyAgICBjYXNlIFN1YnN0cmluZ01hdGNo
VG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgiKj0iKTsKKyAgICBjYXNlIENv
bHVtblRva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoInx8Iik7CisgICAgY2Fz
ZSBDRE9Ub2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCI8IS0tIik7CisgICAg
Y2FzZSBDRENUb2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCItLT4iKTsKKyAg
ICBjYXNlIEJhZFN0cmluZ1Rva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoIidc
biIpOworICAgIGNhc2UgQmFkVXJsVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVu
ZCgidXJsKCgpIik7CisgICAgY2FzZSBXaGl0ZXNwYWNlVG9rZW46CisgICAgICAgIHJldHVybiBi
dWlsZGVyLmFwcGVuZCgnICcpOworICAgIGNhc2UgQ29sb25Ub2tlbjoKKyAgICAgICAgcmV0dXJu
IGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CisgICAgY2FzZSBTZW1pY29sb25Ub2tlbjoKKyAgICAgICAg
cmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCc7Jyk7CisgICAgY2FzZSBDb21tYVRva2VuOgorICAgICAg
ICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJywnKTsKKyAgICBjYXNlIExlZnRQYXJlbnRoZXNpc1Rv
a2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJygnKTsKKyAgICBjYXNlIFJpZ2h0
UGFyZW50aGVzaXNUb2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCcpJyk7Cisg
ICAgY2FzZSBMZWZ0QnJhY2tldFRva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQo
J1snKTsKKyAgICBjYXNlIFJpZ2h0QnJhY2tldFRva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRl
ci5hcHBlbmQoJ10nKTsKKyAgICBjYXNlIExlZnRCcmFjZVRva2VuOgorICAgICAgICByZXR1cm4g
YnVpbGRlci5hcHBlbmQoJ3snKTsKKyAgICBjYXNlIFJpZ2h0QnJhY2VUb2tlbjoKKyAgICAgICAg
cmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCd9Jyk7CisKKyAgICBjYXNlIEVPRlRva2VuOgorICAgIGNh
c2UgQ29tbWVudFRva2VuOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW4uaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxODAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
Ky8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisjaWZuZGVmIENTU1BhcnNlclRva2VuX2gKKyNkZWZpbmUgQ1NTUGFyc2VyVG9r
ZW5faAorCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdWaWV3Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBDU1NQYXJzZXJU
b2tlblR5cGUgeworICAgIElkZW50VG9rZW4gPSAwLAorICAgIEZ1bmN0aW9uVG9rZW4sCisgICAg
QXRLZXl3b3JkVG9rZW4sCisgICAgSGFzaFRva2VuLAorICAgIFVybFRva2VuLAorICAgIEJhZFVy
bFRva2VuLAorICAgIERlbGltaXRlclRva2VuLAorICAgIE51bWJlclRva2VuLAorICAgIFBlcmNl
bnRhZ2VUb2tlbiwKKyAgICBEaW1lbnNpb25Ub2tlbiwKKyAgICBJbmNsdWRlTWF0Y2hUb2tlbiwK
KyAgICBEYXNoTWF0Y2hUb2tlbiwKKyAgICBQcmVmaXhNYXRjaFRva2VuLAorICAgIFN1ZmZpeE1h
dGNoVG9rZW4sCisgICAgU3Vic3RyaW5nTWF0Y2hUb2tlbiwKKyAgICBDb2x1bW5Ub2tlbiwKKyAg
ICBVbmljb2RlUmFuZ2VUb2tlbiwKKyAgICBXaGl0ZXNwYWNlVG9rZW4sCisgICAgQ0RPVG9rZW4s
CisgICAgQ0RDVG9rZW4sCisgICAgQ29sb25Ub2tlbiwKKyAgICBTZW1pY29sb25Ub2tlbiwKKyAg
ICBDb21tYVRva2VuLAorICAgIExlZnRQYXJlbnRoZXNpc1Rva2VuLAorICAgIFJpZ2h0UGFyZW50
aGVzaXNUb2tlbiwKKyAgICBMZWZ0QnJhY2tldFRva2VuLAorICAgIFJpZ2h0QnJhY2tldFRva2Vu
LAorICAgIExlZnRCcmFjZVRva2VuLAorICAgIFJpZ2h0QnJhY2VUb2tlbiwKKyAgICBTdHJpbmdU
b2tlbiwKKyAgICBCYWRTdHJpbmdUb2tlbiwKKyAgICBFT0ZUb2tlbiwKKyAgICBDb21tZW50VG9r
ZW4sCit9OworCitlbnVtIE51bWVyaWNTaWduIHsKKyAgICBOb1NpZ24sCisgICAgUGx1c1NpZ24s
CisgICAgTWludXNTaWduLAorfTsKKworZW51bSBOdW1lcmljVmFsdWVUeXBlIHsKKyAgICBJbnRl
Z2VyVmFsdWVUeXBlLAorICAgIE51bWJlclZhbHVlVHlwZSwKK307CisKK2VudW0gSGFzaFRva2Vu
VHlwZSB7CisgICAgSGFzaFRva2VuSWQsCisgICAgSGFzaFRva2VuVW5yZXN0cmljdGVkLAorfTsK
KworY2xhc3MgQ1NTUGFyc2VyVG9rZW4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIGVudW0gQmxvY2tUeXBlIHsKKyAgICAgICAgTm90QmxvY2ssCisgICAgICAg
IEJsb2NrU3RhcnQsCisgICAgICAgIEJsb2NrRW5kLAorICAgIH07CisKKyAgICBDU1NQYXJzZXJU
b2tlbihDU1NQYXJzZXJUb2tlblR5cGUsIEJsb2NrVHlwZSA9IE5vdEJsb2NrKTsKKyAgICBDU1NQ
YXJzZXJUb2tlbihDU1NQYXJzZXJUb2tlblR5cGUsIFN0cmluZ1ZpZXcsIEJsb2NrVHlwZSA9IE5v
dEJsb2NrKTsKKworICAgIENTU1BhcnNlclRva2VuKENTU1BhcnNlclRva2VuVHlwZSwgVUNoYXIp
OyAvLyBmb3IgRGVsaW1pdGVyVG9rZW4KKyAgICBDU1NQYXJzZXJUb2tlbihDU1NQYXJzZXJUb2tl
blR5cGUsIGRvdWJsZSwgTnVtZXJpY1ZhbHVlVHlwZSwgTnVtZXJpY1NpZ24pOyAvLyBmb3IgTnVt
YmVyVG9rZW4KKyAgICBDU1NQYXJzZXJUb2tlbihDU1NQYXJzZXJUb2tlblR5cGUsIFVDaGFyMzIs
IFVDaGFyMzIpOyAvLyBmb3IgVW5pY29kZVJhbmdlVG9rZW4KKworICAgIENTU1BhcnNlclRva2Vu
KEhhc2hUb2tlblR5cGUsIFN0cmluZ1ZpZXcpOworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENTU1BhcnNlclRva2VuJiBvdGhlcikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IENTU1BhcnNlclRva2VuJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
IH0KKworICAgIC8vIENvbnZlcnRzIE51bWJlclRva2VuIHRvIERpbWVuc2lvblRva2VuLgorICAg
IHZvaWQgY29udmVydFRvRGltZW5zaW9uV2l0aFVuaXQoU3RyaW5nVmlldyk7CisKKyAgICAvLyBD
b252ZXJ0cyBOdW1iZXJUb2tlbiB0byBQZXJjZW50YWdlVG9rZW4uCisgICAgdm9pZCBjb252ZXJ0
VG9QZXJjZW50YWdlKCk7CisKKyAgICBDU1NQYXJzZXJUb2tlblR5cGUgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PENTU1BhcnNlclRva2VuVHlwZT4obV90eXBlKTsgfQorICAgIFN0
cmluZ1ZpZXcgdmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fdmFsdWVJczhCaXQp
CisgICAgICAgICAgICByZXR1cm4gU3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4obV92YWx1ZURhdGFDaGFyUmF3KSwgbV92YWx1ZUxlbmd0aCk7CisgICAgICAgIHJldHVy
biBTdHJpbmdWaWV3KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihtX3ZhbHVlRGF0YUNo
YXJSYXcpLCBtX3ZhbHVlTGVuZ3RoKTsKKyAgICB9CisKKyAgICBVQ2hhciBkZWxpbWl0ZXIoKSBj
b25zdDsKKyAgICBOdW1lcmljU2lnbiBudW1lcmljU2lnbigpIGNvbnN0OworICAgIE51bWVyaWNW
YWx1ZVR5cGUgbnVtZXJpY1ZhbHVlVHlwZSgpIGNvbnN0OworICAgIGRvdWJsZSBudW1lcmljVmFs
dWUoKSBjb25zdDsKKyAgICBIYXNoVG9rZW5UeXBlIGdldEhhc2hUb2tlblR5cGUoKSBjb25zdCB7
IEFTU0VSVChtX3R5cGUgPT0gSGFzaFRva2VuKTsgcmV0dXJuIG1faGFzaFRva2VuVHlwZTsgfQor
ICAgIEJsb2NrVHlwZSBnZXRCbG9ja1R5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxC
bG9ja1R5cGU+KG1fYmxvY2tUeXBlKTsgfQorICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZXMgdW5pdFR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzPihtX3VuaXQpOyB9CisgICAgVUNoYXIzMiB1bmljb2RlUmFuZ2VTdGFydCgp
IGNvbnN0IHsgQVNTRVJUKG1fdHlwZSA9PSBVbmljb2RlUmFuZ2VUb2tlbik7IHJldHVybiBtX3Vu
aWNvZGVSYW5nZS5zdGFydDsgfQorICAgIFVDaGFyMzIgdW5pY29kZVJhbmdlRW5kKCkgY29uc3Qg
eyBBU1NFUlQobV90eXBlID09IFVuaWNvZGVSYW5nZVRva2VuKTsgcmV0dXJuIG1fdW5pY29kZVJh
bmdlLmVuZDsgfQorICAgIENTU1ZhbHVlSUQgaWQoKSBjb25zdDsKKyAgICBDU1NWYWx1ZUlEIGZ1
bmN0aW9uSWQoKSBjb25zdDsKKworICAgIGJvb2wgaGFzU3RyaW5nQmFja2luZygpIGNvbnN0Owor
CisgICAgQ1NTUHJvcGVydHlJRCBwYXJzZUFzVW5yZXNvbHZlZENTU1Byb3BlcnR5SUQoKSBjb25z
dDsKKworICAgIHZvaWQgc2VyaWFsaXplKFN0cmluZ0J1aWxkZXImKSBjb25zdDsKKworICAgIENT
U1BhcnNlclRva2VuIGNvcHlXaXRoVXBkYXRlZFN0cmluZyhjb25zdCBTdHJpbmdWaWV3JikgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgdm9pZCBpbml0VmFsdWVGcm9tU3RyaW5nVmlldyhTdHJpbmdW
aWV3IHN0cmluZykKKyAgICB7CisgICAgICAgIG1fdmFsdWVMZW5ndGggPSBzdHJpbmcubGVuZ3Ro
KCk7CisgICAgICAgIG1fdmFsdWVJczhCaXQgPSBzdHJpbmcuaXM4Qml0KCk7CisgICAgICAgIG1f
dmFsdWVEYXRhQ2hhclJhdyA9IG1fdmFsdWVJczhCaXQgPyBzdGF0aWNfY2FzdDxjb25zdCB2b2lk
Kj4oc3RyaW5nLmNoYXJhY3RlcnM4KCkpIDogc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHN0cmlu
Zy5jaGFyYWN0ZXJzMTYoKSk7CisgICAgfQorICAgIHVuc2lnbmVkIG1fdHlwZSA6IDY7IC8vIENT
U1BhcnNlclRva2VuVHlwZQorICAgIHVuc2lnbmVkIG1fYmxvY2tUeXBlIDogMjsgLy8gQmxvY2tU
eXBlCisgICAgdW5zaWduZWQgbV9udW1lcmljVmFsdWVUeXBlIDogMTsgLy8gTnVtZXJpY1ZhbHVl
VHlwZQorICAgIHVuc2lnbmVkIG1fbnVtZXJpY1NpZ24gOiAyOyAvLyBOdW1lcmljU2lnbgorICAg
IHVuc2lnbmVkIG1fdW5pdCA6IDc7IC8vIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMKKwor
ICAgIGJvb2wgdmFsdWVEYXRhQ2hhclJhd0VxdWFsKGNvbnN0IENTU1BhcnNlclRva2VuJiBvdGhl
cikgY29uc3Q7CisKKyAgICAvLyBtX3ZhbHVlLi4uIGlzIGFuIHVucGFja2VkIFN0cmluZ1ZpZXcg
c28gdGhhdCB3ZSBjYW4gcGFjayBpdAorICAgIC8vIHRpZ2h0bHkgd2l0aCB0aGUgcmVzdCBvZiB0
aGlzIG9iamVjdCBmb3IgYSBzbWFsbGVyIG9iamVjdCBzaXplLgorICAgIGJvb2wgbV92YWx1ZUlz
OEJpdCA6IDE7CisgICAgdW5zaWduZWQgbV92YWx1ZUxlbmd0aDsKKyAgICBjb25zdCB2b2lkKiBt
X3ZhbHVlRGF0YUNoYXJSYXc7IC8vIEVpdGhlciBMQ2hhciogb3IgVUNoYXIqLgorCisgICAgdW5p
b24geworICAgICAgICBVQ2hhciBtX2RlbGltaXRlcjsKKyAgICAgICAgSGFzaFRva2VuVHlwZSBt
X2hhc2hUb2tlblR5cGU7CisgICAgICAgIGRvdWJsZSBtX251bWVyaWNWYWx1ZTsKKyAgICAgICAg
bXV0YWJsZSBpbnQgbV9pZDsKKworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgVUNoYXIz
MiBzdGFydDsKKyAgICAgICAgICAgIFVDaGFyMzIgZW5kOworICAgICAgICB9IG1fdW5pY29kZVJh
bmdlOworICAgIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBD
U1NTUGFyc2VyVG9rZW5faApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXJUb2tlblJhbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlclRva2VuUmFuZ2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW5SYW5nZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw5NiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBt
ZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8K
Ky8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJhbmdlLmgi
CisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ1NTUGFyc2VyVG9rZW4m
IENTU1BhcnNlclRva2VuUmFuZ2U6OmVvZlRva2VuKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Q1NTUGFyc2VyVG9rZW4+IGVvZlRva2VuKEVPRlRva2VuKTsKKyAgICByZXR1cm4gZW9m
VG9rZW4uZ2V0KCk7Cit9CisKK0NTU1BhcnNlclRva2VuUmFuZ2UgQ1NTUGFyc2VyVG9rZW5SYW5n
ZTo6bWFrZVN1YlJhbmdlKGNvbnN0IENTU1BhcnNlclRva2VuKiBmaXJzdCwgY29uc3QgQ1NTUGFy
c2VyVG9rZW4qIGxhc3QpIGNvbnN0Cit7CisgICAgaWYgKGZpcnN0ID09ICZlb2ZUb2tlbigpKQor
ICAgICAgICBmaXJzdCA9IG1fbGFzdDsKKyAgICBpZiAobGFzdCA9PSAmZW9mVG9rZW4oKSkKKyAg
ICAgICAgbGFzdCA9IG1fbGFzdDsKKyAgICBBU1NFUlQoZmlyc3QgPD0gbGFzdCk7CisgICAgcmV0
dXJuIENTU1BhcnNlclRva2VuUmFuZ2UoZmlyc3QsIGxhc3QpOworfQorCitDU1NQYXJzZXJUb2tl
blJhbmdlIENTU1BhcnNlclRva2VuUmFuZ2U6OmNvbnN1bWVCbG9jaygpCit7CisgICAgQVNTRVJU
KHBlZWsoKS5nZXRCbG9ja1R5cGUoKSA9PSBDU1NQYXJzZXJUb2tlbjo6QmxvY2tTdGFydCk7Cisg
ICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4qIHN0YXJ0ID0gJnBlZWsoKSArIDE7CisgICAgdW5zaWdu
ZWQgbmVzdGluZ0xldmVsID0gMDsKKyAgICBkbyB7CisgICAgICAgIGNvbnN0IENTU1BhcnNlclRv
a2VuJiB0b2tlbiA9IGNvbnN1bWUoKTsKKyAgICAgICAgaWYgKHRva2VuLmdldEJsb2NrVHlwZSgp
ID09IENTU1BhcnNlclRva2VuOjpCbG9ja1N0YXJ0KQorICAgICAgICAgICAgbmVzdGluZ0xldmVs
Kys7CisgICAgICAgIGVsc2UgaWYgKHRva2VuLmdldEJsb2NrVHlwZSgpID09IENTU1BhcnNlclRv
a2VuOjpCbG9ja0VuZCkKKyAgICAgICAgICAgIG5lc3RpbmdMZXZlbC0tOworICAgIH0gd2hpbGUg
KG5lc3RpbmdMZXZlbCAmJiBtX2ZpcnN0IDwgbV9sYXN0KTsKKworICAgIGlmIChuZXN0aW5nTGV2
ZWwpCisgICAgICAgIHJldHVybiBtYWtlU3ViUmFuZ2Uoc3RhcnQsIG1fZmlyc3QpOyAvLyBFbmRl
ZCBhdCBFT0YKKyAgICByZXR1cm4gbWFrZVN1YlJhbmdlKHN0YXJ0LCBtX2ZpcnN0IC0gMSk7Cit9
CisKK3ZvaWQgQ1NTUGFyc2VyVG9rZW5SYW5nZTo6Y29uc3VtZUNvbXBvbmVudFZhbHVlKCkKK3sK
KyAgICAvLyBGSVhNRTogVGhpcyBpcyBnb2luZyB0byBkbyBtdWx0aXBsZSBwYXNzZXMgb3ZlciBs
YXJnZSBzZWN0aW9ucyBvZiBhIHN0eWxlc2hlZXQuCisgICAgLy8gV2Ugc2hvdWxkIGNvbnNpZGVy
IG9wdGltaXNpbmcgdGhpcyBieSBwcmVjb21wdXRpbmcgd2hlcmUgZWFjaCBibG9jayBlbmRzLgor
ICAgIHVuc2lnbmVkIG5lc3RpbmdMZXZlbCA9IDA7CisgICAgZG8geworICAgICAgICBjb25zdCBD
U1NQYXJzZXJUb2tlbiYgdG9rZW4gPSBjb25zdW1lKCk7CisgICAgICAgIGlmICh0b2tlbi5nZXRC
bG9ja1R5cGUoKSA9PSBDU1NQYXJzZXJUb2tlbjo6QmxvY2tTdGFydCkKKyAgICAgICAgICAgIG5l
c3RpbmdMZXZlbCsrOworICAgICAgICBlbHNlIGlmICh0b2tlbi5nZXRCbG9ja1R5cGUoKSA9PSBD
U1NQYXJzZXJUb2tlbjo6QmxvY2tFbmQpCisgICAgICAgICAgICBuZXN0aW5nTGV2ZWwtLTsKKyAg
ICB9IHdoaWxlIChuZXN0aW5nTGV2ZWwgJiYgbV9maXJzdCA8IG1fbGFzdCk7Cit9CisKK1N0cmlu
ZyBDU1NQYXJzZXJUb2tlblJhbmdlOjpzZXJpYWxpemUoKSBjb25zdAoreworICAgIC8vIFdlJ3Jl
IHN1cHBvc2VkIHRvIGluc2VydCBjb21tZW50cyBiZXR3ZWVuIGNlcnRhaW4gcGFpcnMgb2YgdG9r
ZW4gdHlwZXMKKyAgICAvLyBhcyBwZXIgc3BlYywgYnV0IHNpbmNlIHRoaXMgaXMgY3VycmVudGx5
IG9ubHkgdXNlZCBmb3IgQHN1cHBvcnRzIENTU09NCisgICAgLy8gd2UganVzdCBnZXQgdGhlc2Ug
Y2FzZXMgd3JvbmcgYW5kIGF2b2lkIHRoZSBhZGRpdGlvbmFsIGNvbXBsZXhpdHkuCisgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOworICAgIGZvciAoY29uc3QgQ1NTUGFyc2VyVG9rZW4qIGl0ID0g
bV9maXJzdDsgaXQgPCBtX2xhc3Q7ICsraXQpCisgICAgICAgIGl0LT5zZXJpYWxpemUoYnVpbGRl
cik7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlblJh
bmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJU
b2tlblJhbmdlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJUb2tlblJhbmdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDUgQEAKKy8v
IENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8g
ZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8g
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZuZGVmIENT
U1BhcnNlclRva2VuUmFuZ2VfaAorI2RlZmluZSBDU1NQYXJzZXJUb2tlblJhbmdlX2gKKworI2lu
Y2x1ZGUgIkNTU1BhcnNlclRva2VuLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKy8vIEEgQ1NTUGFyc2VyVG9rZW5SYW5nZSBpcyBhbiBpdGVyYXRv
ciBvdmVyIGEgc3VicmFuZ2Ugb2YgYSB2ZWN0b3Igb2YgQ1NTUGFyc2VyVG9rZW5zLgorLy8gQWNj
ZXNzaW5nIG91dHNpZGUgb2YgdGhlIHJhbmdlIHdpbGwgcmV0dXJuIGFuIGVuZGxlc3Mgc3RyZWFt
IG9mIEVPRiB0b2tlbnMuCisvLyBUaGlzIGNsYXNzIHJlZmVycyB0byBoYWxmLW9wZW4gaW50ZXJ2
YWxzIFtmaXJzdCwgbGFzdCkuCitjbGFzcyBDU1NQYXJzZXJUb2tlblJhbmdlIHsKK3B1YmxpYzoK
KyAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQnVmZmVyPgorICAgIENTU1BhcnNlclRva2VuUmFu
Z2UoY29uc3QgVmVjdG9yPENTU1BhcnNlclRva2VuLCBpbmxpbmVCdWZmZXI+JiB2ZWN0b3IpCisg
ICAgICAgIDogbV9maXJzdCh2ZWN0b3IuYmVnaW4oKSkKKyAgICAgICAgLCBtX2xhc3QodmVjdG9y
LmVuZCgpKQorICAgIHsKKyAgICB9CisKKyAgICAvLyBUaGlzIHNob3VsZCBiZSBjYWxsZWQgb24g
YSByYW5nZSB3aXRoIHRva2VucyByZXR1cm5lZCBieSB0aGF0IHJhbmdlLgorICAgIENTU1BhcnNl
clRva2VuUmFuZ2UgbWFrZVN1YlJhbmdlKGNvbnN0IENTU1BhcnNlclRva2VuKiBmaXJzdCwgY29u
c3QgQ1NTUGFyc2VyVG9rZW4qIGxhc3QpIGNvbnN0OworCisgICAgYm9vbCBhdEVuZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZmlyc3QgPT0gbV9sYXN0OyB9CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4q
IGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdDsgfQorCisgICAgY29uc3QgQ1NTUGFyc2VyVG9r
ZW4mIHBlZWsodW5zaWduZWQgb2Zmc2V0ID0gMCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICht
X2ZpcnN0ICsgb2Zmc2V0ID49IG1fbGFzdCkKKyAgICAgICAgICAgIHJldHVybiBlb2ZUb2tlbigp
OworICAgICAgICByZXR1cm4gKihtX2ZpcnN0ICsgb2Zmc2V0KTsKKyAgICB9CisKKyAgICBjb25z
dCBDU1NQYXJzZXJUb2tlbiYgY29uc3VtZSgpCisgICAgeworICAgICAgICBpZiAobV9maXJzdCA9
PSBtX2xhc3QpCisgICAgICAgICAgICByZXR1cm4gZW9mVG9rZW4oKTsKKyAgICAgICAgcmV0dXJu
ICptX2ZpcnN0Kys7CisgICAgfQorCisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIGNvbnN1bWVJ
bmNsdWRpbmdXaGl0ZXNwYWNlKCkKKyAgICB7CisgICAgICAgIGNvbnN0IENTU1BhcnNlclRva2Vu
JiByZXN1bHQgPSBjb25zdW1lKCk7CisgICAgICAgIGNvbnN1bWVXaGl0ZXNwYWNlKCk7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLy8gVGhlIHJldHVybmVkIHJhbmdlIGRv
ZXNuJ3QgaW5jbHVkZSB0aGUgYnJhY2tldHMKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGNvbnN1
bWVCbG9jaygpOworCisgICAgdm9pZCBjb25zdW1lQ29tcG9uZW50VmFsdWUoKTsKKworICAgIHZv
aWQgY29uc3VtZVdoaXRlc3BhY2UoKQorICAgIHsKKyAgICAgICAgd2hpbGUgKHBlZWsoKS50eXBl
KCkgPT0gV2hpdGVzcGFjZVRva2VuKQorICAgICAgICAgICAgKyttX2ZpcnN0OworICAgIH0KKwor
ICAgIFN0cmluZyBzZXJpYWxpemUoKSBjb25zdDsKKworICAgIGNvbnN0IENTU1BhcnNlclRva2Vu
KiBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3Q7IH0KKworICAgIHN0YXRpYyBDU1NQYXJz
ZXJUb2tlbiYgZW9mVG9rZW4oKTsKKworcHJpdmF0ZToKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdl
KGNvbnN0IENTU1BhcnNlclRva2VuKiBmaXJzdCwgY29uc3QgQ1NTUGFyc2VyVG9rZW4qIGxhc3Qp
CisgICAgICAgIDogbV9maXJzdChmaXJzdCkKKyAgICAgICAgLCBtX2xhc3QobGFzdCkKKyAgICB7
IH0KKworICAgIGNvbnN0IENTU1BhcnNlclRva2VuKiBtX2ZpcnN0OworICAgIGNvbnN0IENTU1Bh
cnNlclRva2VuKiBtX2xhc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBDU1NQYXJzZXJUb2tlblJhbmdlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNDc4MyBAQAorLy8gQ29weXJpZ2h0IDIwMTUgVGhlIENocm9taXVtIEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisv
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNl
ci5oIgorCisjaW5jbHVkZSAiQ1NTQmFzaWNTaGFwZXMuaCIKKyNpbmNsdWRlICJDU1NCb3JkZXJJ
bWFnZS5oIgorI2luY2x1ZGUgIkNTU0NvbnRlbnREaXN0cmlidXRpb25WYWx1ZS5oIgorI2luY2x1
ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKKy8vIEZJWE1FLU5FV1BBUlNFUiAjaW5jbHVkZSAi
Q1NTQ3VzdG9tSWRlbnRWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0ZvbnRGYWNlU3JjVmFsdWUuaCIK
Ky8vIEZJWE1FLU5FV1BBUlNFUiAjaW5jbHVkZSAiQ1NTRm9udEZhbWlseVZhbHVlLmgiCisjaW5j
bHVkZSAiQ1NTRm9udEZlYXR1cmVWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0Z1bmN0aW9uVmFsdWUu
aCIKKyNpbmNsdWRlICJDU1NHcmlkQXV0b1JlcGVhdFZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTR3Jp
ZExpbmVOYW1lc1ZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5o
IgorI2luY2x1ZGUgIkNTU0luaGVyaXRlZFZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTSW5pdGlhbFZh
bHVlLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyRmFzdFBhdGhzLmgiCisjaW5jbHVkZSAiQ1NTUGFy
c2VySWRpb21zLmgiCisvLyBGSVhNRS1ORVdQQVJTRVIgI2luY2x1ZGUgIkNTU1BhdGhWYWx1ZS5o
IgorLy8gRklYTUUtTkVXUEFSU0VSICNpbmNsdWRlICJDU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFs
dWUuaCIKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCisjaW5jbHVkZSAi
Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmgiCisvLyBGSVhNRS1ORVdQQVJTRVIgI2luY2x1ZGUg
IkNTU1F1YWRWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1JlZmxlY3RWYWx1ZS5oIgorI2luY2x1ZGUg
IkNTU1NoYWRvd1ZhbHVlLmgiCisvLyBGSVhNRS1ORVdQQVJTRVIgI2luY2x1ZGUgIkNTU1N0cmlu
Z1ZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oIgorLy8gRklYTUUt
TkVXUEFSU0VSICNpbmNsdWRlICJDU1NVUklWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1VuaWNvZGVS
YW5nZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTVW5zZXRWYWx1ZS5oIgorLy8gRklYTUUtTkVXUEFS
U0VSICNpbmNsdWRlICJDU1NWYWx1ZVBhaXIuaCIKKy8vIEZJWE1FLU5FV1BBUlNFUiAjaW5jbHVk
ZSAiQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oIgorLy8gRklYTUUtTkVXUEFSU0VSICNpbmNs
dWRlICJDU1NWYXJpYWJsZVBhcnNlci5oIgorI2luY2x1ZGUgIkNvdW50ZXIuaCIKKyNpbmNsdWRl
ICJGb250RmFjZS5oIgorI2luY2x1ZGUgIkhhc2hUb29scy5oIgorI2luY2x1ZGUgIlJlbmRlclRo
ZW1lLmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlNW
R1BhdGhVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2hvcnRoYW5kLmgiCisj
aW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgYm9vbCBoYXNQcmVmaXgoY29uc3QgY2hhciog
c3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IGNoYXIqIHByZWZpeCkKK3sKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKCFwcmVmaXhb
aV0pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKHN0cmluZ1tpXSAhPSBw
cmVmaXhbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBm
YWxzZTsKK30KKworI2lmIFBMQVRGT1JNKElPUykKK3ZvaWQgY3NzUHJvcGVydHlOYW1lSU9TQWxp
YXNpbmcoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBjb25zdCBjaGFyKiYgcHJvcGVydHlOYW1l
QWxpYXMsIHVuc2lnbmVkJiBuZXdMZW5ndGgpCit7CisgICAgaWYgKCFzdHJjbXAocHJvcGVydHlO
YW1lLCAiLXdlYmtpdC1oeXBoZW5hdGUtbG9jYWxlIikpIHsKKyAgICAgICAgLy8gV29ya2VkIGlu
IGlPUyA0LjIuCisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIHdlYmtpdExvY2FsZVtdID0gIi13
ZWJraXQtbG9jYWxlIjsKKyAgICAgICAgcHJvcGVydHlOYW1lQWxpYXMgPSB3ZWJraXRMb2NhbGU7
CisgICAgICAgIG5ld0xlbmd0aCA9IHN0cmxlbih3ZWJraXRMb2NhbGUpOworICAgIH0KK30KKyNl
bmRpZgorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBDU1NQcm9w
ZXJ0eUlEIGNzc1Byb3BlcnR5SUQoY29uc3QgQ2hhcmFjdGVyVHlwZSogcHJvcGVydHlOYW1lLCB1
bnNpZ25lZCBsZW5ndGgpCit7CisgICAgY2hhciBidWZmZXJbbWF4Q1NTUHJvcGVydHlOYW1lTGVu
Z3RoICsgMSArIDFdOyAvLyAxIHRvIHR1cm4gImFwcGxlIi8ia2h0bWwiIGludG8gIndlYmtpdCIs
IDEgZm9yIG51bGwgY2hhcmFjdGVyCisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAh
PSBsZW5ndGg7ICsraSkgeworICAgICAgICBDaGFyYWN0ZXJUeXBlIGMgPSBwcm9wZXJ0eU5hbWVb
aV07CisgICAgICAgIGlmICghYyB8fCBjID49IDB4N0YpCisgICAgICAgICAgICByZXR1cm4gQ1NT
UHJvcGVydHlJbnZhbGlkOyAvLyBpbGxlZ2FsIGNoYXJhY3RlcgorICAgICAgICBidWZmZXJbaV0g
PSB0b0FTQ0lJTG93ZXIoYyk7CisgICAgfQorICAgIGJ1ZmZlcltsZW5ndGhdID0gJ1wwJzsKKyAg
ICAKKyAgICBjb25zdCBjaGFyKiBuYW1lID0gYnVmZmVyOworICAgIGlmIChidWZmZXJbMF0gPT0g
Jy0nKSB7CisjaWYgRU5BQkxFKExFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKQorICAgICAgICAv
LyBJZiB0aGUgcHJlZml4IGlzIC1hcHBsZS0gb3IgLWtodG1sLSwgY2hhbmdlIGl0IHRvIC13ZWJr
aXQtLgorICAgICAgICAvLyBUaGlzIG1ha2VzIHRoZSBzdHJpbmcgb25lIGNoYXJhY3RlciBsb25n
ZXIuCisgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LmxlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZCgpCisgICAgICAgICAgICAmJiAoaGFzUHJl
Zml4KGJ1ZmZlciwgbGVuZ3RoLCAiLWFwcGxlLSIpIHx8IGhhc1ByZWZpeChidWZmZXIsIGxlbmd0
aCwgIi1raHRtbC0iKSkpIHsKKyAgICAgICAgICAgIG1lbW1vdmUoYnVmZmVyICsgNywgYnVmZmVy
ICsgNiwgbGVuZ3RoICsgMSAtIDYpOworICAgICAgICAgICAgbWVtY3B5KGJ1ZmZlciwgIi13ZWJr
aXQiLCA3KTsKKyAgICAgICAgICAgICsrbGVuZ3RoOworICAgICAgICB9CisjZW5kaWYKKyNpZiBQ
TEFURk9STShJT1MpCisgICAgICAgIGNzc1Byb3BlcnR5TmFtZUlPU0FsaWFzaW5nKGJ1ZmZlciwg
bmFtZSwgbGVuZ3RoKTsKKyNlbmRpZgorICAgIH0KKyAgICAKKyAgICBjb25zdCBQcm9wZXJ0eSog
aGFzaFRhYmxlRW50cnkgPSBmaW5kUHJvcGVydHkobmFtZSwgbGVuZ3RoKTsKKyAgICByZXR1cm4g
aGFzaFRhYmxlRW50cnkgPyBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihoYXNoVGFibGVFbnRy
eS0+aWQpIDogQ1NTUHJvcGVydHlJbnZhbGlkOworfQorCitzdGF0aWMgYm9vbCBpc0FwcGxlTGVn
YWN5Q3NzVmFsdWVLZXl3b3JkKGNvbnN0IGNoYXIqIHZhbHVlS2V5d29yZCwgdW5zaWduZWQgbGVu
Z3RoKQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyIGFwcGxlUHJlZml4W10gPSAiLWFwcGxlLSI7
CisgICAgc3RhdGljIGNvbnN0IGNoYXIgYXBwbGVTeXN0ZW1QcmVmaXhbXSA9ICItYXBwbGUtc3lz
dGVtIjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogYXBwbGVXaXJlbGVzc1BsYXliYWNrVGFyZ2V0
QWN0aXZlID0gZ2V0VmFsdWVOYW1lKENTU1ZhbHVlQXBwbGVXaXJlbGVzc1BsYXliYWNrVGFyZ2V0
QWN0aXZlKTsKKyAgICAKKyAgICByZXR1cm4gaGFzUHJlZml4KHZhbHVlS2V5d29yZCwgbGVuZ3Ro
LCBhcHBsZVByZWZpeCkKKyAgICAmJiAhaGFzUHJlZml4KHZhbHVlS2V5d29yZCwgbGVuZ3RoLCBh
cHBsZVN5c3RlbVByZWZpeCkKKyAgICAmJiAhV1RGOjplcXVhbChyZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4odmFsdWVLZXl3b3JkKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KGFwcGxlV2lyZWxlc3NQbGF5YmFja1RhcmdldEFjdGl2ZSksIGxlbmd0aCk7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIENTU1ZhbHVlSUQgY3NzVmFsdWVL
ZXl3b3JkSUQoY29uc3QgQ2hhcmFjdGVyVHlwZSogdmFsdWVLZXl3b3JkLCB1bnNpZ25lZCBsZW5n
dGgpCit7CisgICAgY2hhciBidWZmZXJbbWF4Q1NTVmFsdWVLZXl3b3JkTGVuZ3RoICsgMSArIDFd
OyAvLyAxIHRvIHR1cm4gImFwcGxlIi8ia2h0bWwiIGludG8gIndlYmtpdCIsIDEgZm9yIG51bGwg
Y2hhcmFjdGVyCisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBsZW5ndGg7ICsr
aSkgeworICAgICAgICBDaGFyYWN0ZXJUeXBlIGMgPSB2YWx1ZUtleXdvcmRbaV07CisgICAgICAg
IGlmICghYyB8fCBjID49IDB4N0YpCisgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVJbnZhbGlk
OyAvLyBpbGxlZ2FsIGtleXdvcmQuCisgICAgICAgIGJ1ZmZlcltpXSA9IFdURjo6dG9BU0NJSUxv
d2VyKGMpOworICAgIH0KKyAgICBidWZmZXJbbGVuZ3RoXSA9ICdcMCc7CisgICAgCisgICAgaWYg
KGJ1ZmZlclswXSA9PSAnLScpIHsKKyAgICAgICAgLy8gSWYgdGhlIHByZWZpeCBpcyAtYXBwbGUt
IG9yIC1raHRtbC0sIGNoYW5nZSBpdCB0byAtd2Via2l0LS4KKyAgICAgICAgLy8gVGhpcyBtYWtl
cyB0aGUgc3RyaW5nIG9uZSBjaGFyYWN0ZXIgbG9uZ2VyLgorICAgICAgICAvLyBPbiBpT1Mgd2Ug
ZG9uJ3Qgd2FudCB0byBjaGFuZ2UgdmFsdWVzIHN0YXJ0aW5nIHdpdGggLWFwcGxlLXN5c3RlbSB0
byAtd2Via2l0LXN5c3RlbS4KKyAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1hbmdsaW5n
IHdpdGhvdXQgYnJlYWtpbmcgdGhlIHdlYi4KKyAgICAgICAgaWYgKGlzQXBwbGVMZWdhY3lDc3NW
YWx1ZUtleXdvcmQoYnVmZmVyLCBsZW5ndGgpIHx8IGhhc1ByZWZpeChidWZmZXIsIGxlbmd0aCwg
Ii1raHRtbC0iKSkgeworICAgICAgICAgICAgbWVtbW92ZShidWZmZXIgKyA3LCBidWZmZXIgKyA2
LCBsZW5ndGggKyAxIC0gNik7CisgICAgICAgICAgICBtZW1jcHkoYnVmZmVyLCAiLXdlYmtpdCIs
IDcpOworICAgICAgICAgICAgKytsZW5ndGg7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAg
Y29uc3QgVmFsdWUqIGhhc2hUYWJsZUVudHJ5ID0gZmluZFZhbHVlKGJ1ZmZlciwgbGVuZ3RoKTsK
KyAgICByZXR1cm4gaGFzaFRhYmxlRW50cnkgPyBzdGF0aWNfY2FzdDxDU1NWYWx1ZUlEPihoYXNo
VGFibGVFbnRyeS0+aWQpIDogQ1NTVmFsdWVJbnZhbGlkOworfQorCitDU1NWYWx1ZUlEIGNzc1Zh
bHVlS2V5d29yZElEKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIHVuc2lnbmVkIGxlbmd0aCA9
IHN0cmluZy5sZW5ndGgoKTsKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIENTU1Zh
bHVlSW52YWxpZDsKKyAgICBpZiAobGVuZ3RoID4gbWF4Q1NTVmFsdWVLZXl3b3JkTGVuZ3RoKQor
ICAgICAgICByZXR1cm4gQ1NTVmFsdWVJbnZhbGlkOworICAgIAorICAgIHJldHVybiBzdHJpbmcu
aXM4Qml0KCkgPyBjc3NWYWx1ZUtleXdvcmRJRChzdHJpbmcuY2hhcmFjdGVyczgoKSwgbGVuZ3Ro
KSA6IGNzc1ZhbHVlS2V5d29yZElEKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKTsKK30K
KworQ1NTUHJvcGVydHlJRCB1bnJlc29sdmVkQ1NTUHJvcGVydHlJRChTdHJpbmdWaWV3IHN0cmlu
ZykKK3sKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgCisgICAg
aWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiBDU1NQcm9wZXJ0eUludmFsaWQ7CisgICAgaWYg
KGxlbmd0aCA+IG1heENTU1Byb3BlcnR5TmFtZUxlbmd0aCkKKyAgICAgICAgcmV0dXJuIENTU1By
b3BlcnR5SW52YWxpZDsKKyAgICAKKyAgICByZXR1cm4gc3RyaW5nLmlzOEJpdCgpID8gY3NzUHJv
cGVydHlJRChzdHJpbmcuY2hhcmFjdGVyczgoKSwgbGVuZ3RoKSA6IGNzc1Byb3BlcnR5SUQoc3Ry
aW5nLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgpOworfQorICAgIAorLy8gRklYTUUtTkVXUEFSU0VS
CisvLyBDb21tZW50IG91dCBwcm9wZXJ0eSBwYXJzaW5nIGZvciBub3cuCisvKgordXNpbmcgbmFt
ZXNwYWNlIENTU1Byb3BlcnR5UGFyc2VySGVscGVyczsKKworCitDU1NQcm9wZXJ0eVBhcnNlcjo6
Q1NTUHJvcGVydHlQYXJzZXIoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsCisgICAg
Y29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+
KiBwYXJzZWRQcm9wZXJ0aWVzKQorICAgIDogbV9yYW5nZShyYW5nZSkKKyAgICAsIG1fY29udGV4
dChjb250ZXh0KQorICAgICwgbV9wYXJzZWRQcm9wZXJ0aWVzKHBhcnNlZFByb3BlcnRpZXMpCit7
CisgICAgbV9yYW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOworfQorCit2b2lkIENTU1Byb3BlcnR5
UGFyc2VyOjphZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NQcm9wZXJ0eUlE
IGN1cnJlbnRTaG9ydGhhbmQsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQs
IGJvb2wgaW1wbGljaXQpCit7CisgICAgQVNTRVJUKCFpc1Byb3BlcnR5QWxpYXMocHJvcGVydHkp
KTsKKworICAgIGludCBzaG9ydGhhbmRJbmRleCA9IDA7CisgICAgYm9vbCBzZXRGcm9tU2hvcnRo
YW5kID0gZmFsc2U7CisKKyAgICBpZiAoY3VycmVudFNob3J0aGFuZCkgeworICAgICAgICBWZWN0
b3I8U3R5bGVQcm9wZXJ0eVNob3J0aGFuZCwgND4gc2hvcnRoYW5kczsKKyAgICAgICAgZ2V0TWF0
Y2hpbmdTaG9ydGhhbmRzRm9yTG9uZ2hhbmQocHJvcGVydHksICZzaG9ydGhhbmRzKTsKKyAgICAg
ICAgc2V0RnJvbVNob3J0aGFuZCA9IHRydWU7CisgICAgICAgIGlmIChzaG9ydGhhbmRzLnNpemUo
KSA+IDEpCisgICAgICAgICAgICBzaG9ydGhhbmRJbmRleCA9IGluZGV4T2ZTaG9ydGhhbmRGb3JM
b25naGFuZChjdXJyZW50U2hvcnRoYW5kLCBzaG9ydGhhbmRzKTsKKyAgICB9CisKKyAgICBtX3Bh
cnNlZFByb3BlcnRpZXMtPmFwcGVuZChDU1NQcm9wZXJ0eShwcm9wZXJ0eSwgdmFsdWUsIGltcG9y
dGFudCwgc2V0RnJvbVNob3J0aGFuZCwgc2hvcnRoYW5kSW5kZXgsIGltcGxpY2l0KSk7Cit9CisK
K3ZvaWQgQ1NTUHJvcGVydHlQYXJzZXI6OmFkZEV4cGFuZGVkUHJvcGVydHlGb3JWYWx1ZShDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIGJvb2wgaW1wb3J0YW50
KQoreworICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCA9IHNob3J0
aGFuZEZvclByb3BlcnR5KHByb3BlcnR5KTsKKyAgICB1bnNpZ25lZCBzaG9ydGhhbmRMZW5ndGgg
PSBzaG9ydGhhbmQubGVuZ3RoKCk7CisgICAgQVNTRVJUKHNob3J0aGFuZExlbmd0aCk7CisgICAg
Y29uc3QgQ1NTUHJvcGVydHlJRCogbG9uZ2hhbmRzID0gc2hvcnRoYW5kLnByb3BlcnRpZXMoKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2hvcnRoYW5kTGVuZ3RoOyArK2kpCisgICAg
ICAgIGFkZFByb3BlcnR5KGxvbmdoYW5kc1tpXSwgcHJvcGVydHksIHZhbHVlLCBpbXBvcnRhbnQp
OworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQg
dW5yZXNvbHZlZFByb3BlcnR5LCBib29sIGltcG9ydGFudCwKKyAgICBjb25zdCBDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwKKyAgICBW
ZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4mIHBhcnNlZFByb3BlcnRpZXMsIFN0eWxlUnVsZTo6VHlw
ZSBydWxlVHlwZSkKK3sKKyAgICBpbnQgcGFyc2VkUHJvcGVydGllc1NpemUgPSBwYXJzZWRQcm9w
ZXJ0aWVzLnNpemUoKTsKKworICAgIENTU1Byb3BlcnR5UGFyc2VyIHBhcnNlcihyYW5nZSwgY29u
dGV4dCwgJnBhcnNlZFByb3BlcnRpZXMpOworICAgIENTU1Byb3BlcnR5SUQgcmVzb2x2ZWRQcm9w
ZXJ0eSA9IHJlc29sdmVDU1NQcm9wZXJ0eUlEKHVucmVzb2x2ZWRQcm9wZXJ0eSk7CisgICAgYm9v
bCBwYXJzZVN1Y2Nlc3M7CisKKyAgICBpZiAocnVsZVR5cGUgPT0gU3R5bGVSdWxlOjpWaWV3cG9y
dCkgeworICAgICAgICBwYXJzZVN1Y2Nlc3MgPSAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3Nz
Vmlld3BvcnRFbmFibGVkKCkgfHwgaXNVQVNoZWV0QmVoYXZpb3IoY29udGV4dC5tb2RlKCkpKQor
ICAgICAgICAgICAgJiYgcGFyc2VyLnBhcnNlVmlld3BvcnREZXNjcmlwdG9yKHJlc29sdmVkUHJv
cGVydHksIGltcG9ydGFudCk7CisgICAgfSBlbHNlIGlmIChydWxlVHlwZSA9PSBTdHlsZVJ1bGU6
OkZvbnRGYWNlKSB7CisgICAgICAgIHBhcnNlU3VjY2VzcyA9IHBhcnNlci5wYXJzZUZvbnRGYWNl
RGVzY3JpcHRvcihyZXNvbHZlZFByb3BlcnR5KTsKKyAgICB9IGVsc2UgeworICAgICAgICBwYXJz
ZVN1Y2Nlc3MgPSBwYXJzZXIucGFyc2VWYWx1ZVN0YXJ0KHVucmVzb2x2ZWRQcm9wZXJ0eSwgaW1w
b3J0YW50KTsKKyAgICB9CisKKyAgICAvLyBUaGlzIGRvZXNuJ3QgY291bnQgVUEgc3R5bGUgc2hl
ZXRzCisgICAgaWYgKHBhcnNlU3VjY2VzcyAmJiBjb250ZXh0LnVzZUNvdW50ZXIoKSkKKyAgICAg
ICAgY29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KGNvbnRleHQubW9kZSgpLCB1bnJlc29sdmVk
UHJvcGVydHkpOworCisgICAgaWYgKCFwYXJzZVN1Y2Nlc3MpCisgICAgICAgIHBhcnNlZFByb3Bl
cnRpZXMuc2hyaW5rKHBhcnNlZFByb3BlcnRpZXNTaXplKTsKKworICAgIHJldHVybiBwYXJzZVN1
Y2Nlc3M7Cit9CisKK2NvbnN0IENTU1ZhbHVlKiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VTaW5n
bGVWYWx1ZSgKKyAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBD
U1NQcm9wZXJ0eVBhcnNlciBwYXJzZXIocmFuZ2UsIGNvbnRleHQsIG51bGxwdHIpOworICAgIGNv
bnN0IENTU1ZhbHVlKiB2YWx1ZSA9IHBhcnNlci5wYXJzZVNpbmdsZVZhbHVlKHByb3BlcnR5KTsK
KyAgICBpZiAoIXZhbHVlIHx8ICFwYXJzZXIubV9yYW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJz
ZXI6OnBhcnNlVmFsdWVTdGFydChDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0eSwgYm9v
bCBpbXBvcnRhbnQpCit7CisgICAgaWYgKGNvbnN1bWVDU1NXaWRlS2V5d29yZCh1bnJlc29sdmVk
UHJvcGVydHksIGltcG9ydGFudCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgQ1NTUGFy
c2VyVG9rZW5SYW5nZSBvcmlnaW5hbFJhbmdlID0gbV9yYW5nZTsKKyAgICBDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5SWQgPSByZXNvbHZlQ1NTUHJvcGVydHlJRCh1bnJlc29sdmVkUHJvcGVydHkpOwor
ICAgIGJvb2wgaXNTaG9ydGhhbmQgPSBpc1Nob3J0aGFuZFByb3BlcnR5KHByb3BlcnR5SWQpOwor
CisgICAgaWYgKGlzU2hvcnRoYW5kKSB7CisgICAgICAgIC8vIFZhcmlhYmxlIHJlZmVyZW5jZXMg
d2lsbCBmYWlsIHRvIHBhcnNlIGhlcmUgYW5kIHdpbGwgZmFsbCBvdXQgdG8gdGhlIHZhcmlhYmxl
IHJlZiBwYXJzZXIgYmVsb3cuCisgICAgICAgIGlmIChwYXJzZVNob3J0aGFuZCh1bnJlc29sdmVk
UHJvcGVydHksIGltcG9ydGFudCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9IGVs
c2UgeworICAgICAgICBpZiAoY29uc3QgQ1NTVmFsdWUqIHBhcnNlZFZhbHVlID0gcGFyc2VTaW5n
bGVWYWx1ZSh1bnJlc29sdmVkUHJvcGVydHkpKSB7CisgICAgICAgICAgICBpZiAobV9yYW5nZS5h
dEVuZCgpKSB7CisgICAgICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydHlJZCwgQ1NTUHJv
cGVydHlJbnZhbGlkLCAqcGFyc2VkVmFsdWUsIGltcG9ydGFudCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzVmFyaWFibGVzRW5hYmxlZCgpICYmIENTU1Zhcmlh
YmxlUGFyc2VyOjpjb250YWluc1ZhbGlkVmFyaWFibGVSZWZlcmVuY2VzKG9yaWdpbmFsUmFuZ2Up
KSB7CisgICAgICAgIENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUqIHZhcmlhYmxlID0gQ1NTVmFy
aWFibGVSZWZlcmVuY2VWYWx1ZTo6Y3JlYXRlKENTU1ZhcmlhYmxlRGF0YTo6Y3JlYXRlKG9yaWdp
bmFsUmFuZ2UpKTsKKworICAgICAgICBpZiAoaXNTaG9ydGhhbmQpIHsKKyAgICAgICAgICAgIGNv
bnN0IENTU1BlbmRpbmdTdWJzdGl0dXRpb25WYWx1ZSYgcGVuZGluZ1ZhbHVlID0gKkNTU1BlbmRp
bmdTdWJzdGl0dXRpb25WYWx1ZTo6Y3JlYXRlKHByb3BlcnR5SWQsIHZhcmlhYmxlKTsKKyAgICAg
ICAgICAgIGFkZEV4cGFuZGVkUHJvcGVydHlGb3JWYWx1ZShwcm9wZXJ0eUlkLCBwZW5kaW5nVmFs
dWUsIGltcG9ydGFudCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhZGRQcm9wZXJ0
eShwcm9wZXJ0eUlkLCBDU1NQcm9wZXJ0eUludmFsaWQsICp2YXJpYWJsZSwgaW1wb3J0YW50KTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisgCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lQ1NTV2lkZUtleXdvcmQo
Q1NTUHJvcGVydHlJRCB1bnJlc29sdmVkUHJvcGVydHksIGJvb2wgaW1wb3J0YW50KQoreworICAg
IENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2VDb3B5ID0gbV9yYW5nZTsKKyAgICBDU1NWYWx1ZUlE
IGlkID0gcmFuZ2VDb3B5LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKKyAgICBp
ZiAoIXJhbmdlQ29weS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDU1NW
YWx1ZSogdmFsdWUgPSBudWxscHRyOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZUluaXRpYWwpCisg
ICAgICAgIHZhbHVlID0gQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGUoKTsKKyAgICBlbHNlIGlmIChp
ZCA9PSBDU1NWYWx1ZUluaGVyaXQpCisgICAgICAgIHZhbHVlID0gQ1NTSW5oZXJpdGVkVmFsdWU6
OmNyZWF0ZSgpOworICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlVW5zZXQpCisgICAgICAgIHZh
bHVlID0gQ1NTVW5zZXRWYWx1ZTo6Y3JlYXRlKCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5ID0gcmVzb2x2ZUNTU1Byb3BlcnR5
SUQodW5yZXNvbHZlZFByb3BlcnR5KTsKKyAgICBjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5k
JiBzaG9ydGhhbmQgPSBzaG9ydGhhbmRGb3JQcm9wZXJ0eShwcm9wZXJ0eSk7CisgICAgaWYgKCFz
aG9ydGhhbmQubGVuZ3RoKCkpIHsKKyAgICAgICAgaWYgKENTU1Byb3BlcnR5TWV0YWRhdGE6Omlz
RGVzY3JpcHRvck9ubHkodW5yZXNvbHZlZFByb3BlcnR5KSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydHksIENTU1Byb3BlcnR5SW52YWxpZCwg
KnZhbHVlLCBpbXBvcnRhbnQpOworICAgIH0gZWxzZSB7CisgICAgICAgIGFkZEV4cGFuZGVkUHJv
cGVydHlGb3JWYWx1ZShwcm9wZXJ0eSwgKnZhbHVlLCBpbXBvcnRhbnQpOworICAgIH0KKyAgICBt
X3JhbmdlID0gcmFuZ2VDb3B5OworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgQ1NTVmFs
dWVMaXN0KiBjb25zdW1lVHJhbnNmb3JtT3JpZ2luKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCit7
CisgICAgQ1NTVmFsdWUqIHJlc3VsdFggPSBudWxscHRyOworICAgIENTU1ZhbHVlKiByZXN1bHRZ
ID0gbnVsbHB0cjsKKyAgICBpZiAoY29uc3VtZU9uZU9yVHdvVmFsdWVkUG9zaXRpb24ocmFuZ2Us
IGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzLCByZXN1bHRYLCByZXN1bHRZKSkgeworICAgICAgICBD
U1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7
CisgICAgICAgIGxpc3QtPmFwcGVuZCgqcmVzdWx0WCk7CisgICAgICAgIGxpc3QtPmFwcGVuZCgq
cmVzdWx0WSk7CisgICAgICAgIENTU1ZhbHVlKiByZXN1bHRaID0gY29uc3VtZUxlbmd0aChyYW5n
ZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGlmICghcmVzdWx0WikK
KyAgICAgICAgICAgIHJlc3VsdFogPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAsIENTU1By
aW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGl4ZWxzKTsKKyAgICAgICAgbGlzdC0+YXBwZW5kKCpy
ZXN1bHRaKTsKKyAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgfQorICAgIHJldHVybiBudWxscHRy
OworfQorCisvLyBNZXRob2RzIGZvciBjb25zdW1pbmcgbm9uLXNob3J0aGFuZCBwcm9wZXJ0aWVz
IHN0YXJ0cyBoZXJlLgorc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lV2lsbENoYW5nZShDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NT
VmFsdWVBdXRvKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIENT
U1ZhbHVlTGlzdCogdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgp
OworICAgIC8vIEV2ZXJ5IGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGlkZW50aWZpZXJzIGlzIGEg
dmFsaWQgd2lsbC1jaGFuZ2UgdmFsdWUsCisgICAgLy8gdW5sZXNzIHRoZSBsaXN0IGluY2x1ZGVz
IGFuIGV4cGxpY2l0bHkgZGlzYWxsb3dlZCBpZGVudGlmaWVyLgorICAgIHdoaWxlICh0cnVlKSB7
CisgICAgICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgpICE9IElkZW50VG9rZW4pCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgQ1NTUHJvcGVydHlJRCB1bnJlc29sdmVkUHJv
cGVydHkgPSB1bnJlc29sdmVkQ1NTUHJvcGVydHlJRChyYW5nZS5wZWVrKCkudmFsdWUoKSk7Cisg
ICAgICAgIGlmICh1bnJlc29sdmVkUHJvcGVydHkpIHsKKyAgICAgICAgICAgIEFTU0VSVChDU1NQ
cm9wZXJ0eU1ldGFkYXRhOjppc0VuYWJsZWRQcm9wZXJ0eSh1bnJlc29sdmVkUHJvcGVydHkpKTsK
KyAgICAgICAgICAgIC8vIE5vdyAiYWxsIiBpcyB1c2VkIGJ5IGJvdGggQ1NTVmFsdWUgYW5kIENT
U1Byb3BlcnR5VmFsdWUuCisgICAgICAgICAgICAvLyBOZWVkIHRvIHJldHVybiBudWxscHRyIHdo
ZW4gY3VycmVudFZhbHVlIGlzIENTU1Byb3BlcnR5QWxsLgorICAgICAgICAgICAgaWYgKHVucmVz
b2x2ZWRQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdpbGxDaGFuZ2UgfHwgdW5yZXNvbHZlZFByb3Bl
cnR5ID09IENTU1Byb3BlcnR5QWxsKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoKkNTU0N1c3RvbUlkZW50VmFsdWU6OmNyZWF0ZSh1
bnJlc29sdmVkUHJvcGVydHkpKTsKKyAgICAgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdX
aGl0ZXNwYWNlKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2ggKHJhbmdl
LnBlZWsoKS5pZCgpKSB7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTm9uZToKKyAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWVBbGw6CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQXV0bzoKKyAg
ICAgICAgICAgIGNhc2UgQ1NTVmFsdWVEZWZhdWx0OgorICAgICAgICAgICAgY2FzZSBDU1NWYWx1
ZUluaXRpYWw6CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlSW5oZXJpdDoKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVDb250ZW50czoK
KyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTY3JvbGxQb3NpdGlvbjoKKyAgICAgICAgICAgICAg
ICB2YWx1ZXMtPmFwcGVuZCgqY29uc3VtZUlkZW50KHJhbmdlKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJhbmdlLmNvbnN1
bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAocmFuZ2UuYXRFbmQoKSkKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2Uo
cmFuZ2UpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJu
IHZhbHVlczsKK30KKworc3RhdGljIENTU0ZvbnRGZWF0dXJlVmFsdWUqIGNvbnN1bWVGb250RmVh
dHVyZVRhZyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICAvLyBGZWF0dXJlIHRh
ZyBuYW1lIGNvbnNpc3RzIG9mIDQtbGV0dGVyIGNoYXJhY3RlcnMuCisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHRhZ05hbWVMZW5ndGggPSA0OworCisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4m
IHRva2VuID0gcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAvLyBGZWF0
dXJlIHRhZyBuYW1lIGNvbWVzIGZpcnN0CisgICAgaWYgKHRva2VuLnR5cGUoKSAhPSBTdHJpbmdU
b2tlbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKHRva2VuLnZhbHVlKCkubGVu
Z3RoKCkgIT0gdGFnTmFtZUxlbmd0aCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQXRv
bWljU3RyaW5nIHRhZyA9IHRva2VuLnZhbHVlKCkudG9BdG9taWNTdHJpbmcoKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgdGFnTmFtZUxlbmd0aDsgKytpKSB7CisgICAgICAgIC8vIExp
bWl0cyB0aGUgcmFuZ2Ugb2YgY2hhcmFjdGVycyB0byAweDIwLTB4N0UsIGZvbGxvd2luZyB0aGUg
dGFnIG5hbWUgcnVsZXMgZGVmaWVuZCBpbiB0aGUgT3BlblR5cGUgc3BlY2lmaWNhdGlvbi4KKyAg
ICAgICAgVUNoYXIgY2hhcmFjdGVyID0gdGFnW2ldOworICAgICAgICBpZiAoY2hhcmFjdGVyIDwg
MHgyMCB8fCBjaGFyYWN0ZXIgPiAweDdFKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorCisgICAgaW50IHRhZ1ZhbHVlID0gMTsKKyAgICAvLyBGZWF0dXJlIHRhZyB2YWx1ZXMg
Y291bGQgZm9sbG93OiA8aW50ZWdlcj4gfCBvbiB8IG9mZgorICAgIGlmIChyYW5nZS5wZWVrKCku
dHlwZSgpID09IE51bWJlclRva2VuICYmIHJhbmdlLnBlZWsoKS5udW1lcmljVmFsdWVUeXBlKCkg
PT0gSW50ZWdlclZhbHVlVHlwZSAmJiByYW5nZS5wZWVrKCkubnVtZXJpY1ZhbHVlKCkgPj0gMCkg
eworICAgICAgICB0YWdWYWx1ZSA9IGNsYW1wVG88aW50PihyYW5nZS5jb25zdW1lSW5jbHVkaW5n
V2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgpKTsKKyAgICAgICAgaWYgKHRhZ1ZhbHVlIDwgMCkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0gZWxzZSBpZiAocmFuZ2UucGVlaygp
LmlkKCkgPT0gQ1NTVmFsdWVPbiB8fCByYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU9mZikg
eworICAgICAgICB0YWdWYWx1ZSA9IHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCku
aWQoKSA9PSBDU1NWYWx1ZU9uOworICAgIH0KKyAgICByZXR1cm4gQ1NTRm9udEZlYXR1cmVWYWx1
ZTo6Y3JlYXRlKHRhZywgdGFnVmFsdWUpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVG
b250RmVhdHVyZVNldHRpbmdzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlm
IChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVJZGVudChyYW5nZSk7CisgICAgQ1NTVmFsdWVMaXN0KiBzZXR0aW5ncyA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICBkbyB7CisgICAgICAgIENTU0ZvbnRG
ZWF0dXJlVmFsdWUqIGZvbnRGZWF0dXJlVmFsdWUgPSBjb25zdW1lRm9udEZlYXR1cmVUYWcocmFu
Z2UpOworICAgICAgICBpZiAoIWZvbnRGZWF0dXJlVmFsdWUpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgc2V0dGluZ3MtPmFwcGVuZCgqZm9udEZlYXR1cmVWYWx1ZSk7Cisg
ICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpOworICAg
IHJldHVybiBzZXR0aW5nczsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lUGFnZShDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0g
Q1NTVmFsdWVBdXRvKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICBy
ZXR1cm4gY29uc3VtZUN1c3RvbUlkZW50KHJhbmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lUXVvdGVzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5n
ZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRl
bnQocmFuZ2UpOworICAgIENTU1ZhbHVlTGlzdCogdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOworICAgIHdoaWxlICghcmFuZ2UuYXRFbmQoKSkgeworICAgICAg
ICBDU1NTdHJpbmdWYWx1ZSogcGFyc2VkVmFsdWUgPSBjb25zdW1lU3RyaW5nKHJhbmdlKTsKKyAg
ICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICB2YWx1ZXMtPmFwcGVuZCgqcGFyc2VkVmFsdWUpOworICAgIH0KKyAgICBpZiAodmFsdWVz
LT5sZW5ndGgoKSAmJiB2YWx1ZXMtPmxlbmd0aCgpICUgMiA9PSAwKQorICAgICAgICByZXR1cm4g
dmFsdWVzOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1
bWVXZWJraXRIaWdobGlnaHQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYg
KHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVTdHJpbmcocmFuZ2UpOworfQorCitj
bGFzcyBGb250VmFyaWFudExpZ2F0dXJlc1BhcnNlciB7CisgICAgU1RBQ0tfQUxMT0NBVEVEKCk7
CisKK3B1YmxpYzoKKyAgICBGb250VmFyaWFudExpZ2F0dXJlc1BhcnNlcigpCisgICAgICAgIDog
bV9zYXdDb21tb25MaWdhdHVyZXNWYWx1ZShmYWxzZSkKKyAgICAgICAgLCBtX3Nhd0Rpc2NyZXRp
b25hcnlMaWdhdHVyZXNWYWx1ZShmYWxzZSkKKyAgICAgICAgLCBtX3Nhd0hpc3RvcmljYWxMaWdh
dHVyZXNWYWx1ZShmYWxzZSkKKyAgICAgICAgLCBtX3Nhd0NvbnRleHR1YWxMaWdhdHVyZXNWYWx1
ZShmYWxzZSkKKyAgICAgICAgLCBtX3Jlc3VsdChDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2Vw
YXJhdGVkKCkpCisgICAgeworICAgIH0KKworICAgIGVudW0gY2xhc3MgUGFyc2VSZXN1bHQgewor
ICAgICAgICBDb25zdW1lZFZhbHVlLAorICAgICAgICBEaXNhbGxvd2VkVmFsdWUsCisgICAgICAg
IFVua25vd25WYWx1ZQorICAgIH07CisKKyAgICBQYXJzZVJlc3VsdCBjb25zdW1lTGlnYXR1cmUo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCisgICAgeworICAgICAgICBDU1NWYWx1ZUlEIHZh
bHVlSUQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICAgICAgc3dpdGNoICh2YWx1ZUlEKSB7Cisg
ICAgICAgIGNhc2UgQ1NTVmFsdWVOb0NvbW1vbkxpZ2F0dXJlczoKKyAgICAgICAgY2FzZSBDU1NW
YWx1ZUNvbW1vbkxpZ2F0dXJlczoKKyAgICAgICAgICAgIGlmIChtX3Nhd0NvbW1vbkxpZ2F0dXJl
c1ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBQYXJzZVJlc3VsdDo6RGlzYWxsb3dlZFZh
bHVlOworICAgICAgICAgICAgbV9zYXdDb21tb25MaWdhdHVyZXNWYWx1ZSA9IHRydWU7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZU5vRGlzY3JldGlvbmFyeUxpZ2F0
dXJlczoKKyAgICAgICAgY2FzZSBDU1NWYWx1ZURpc2NyZXRpb25hcnlMaWdhdHVyZXM6CisgICAg
ICAgICAgICBpZiAobV9zYXdEaXNjcmV0aW9uYXJ5TGlnYXR1cmVzVmFsdWUpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0OjpEaXNhbGxvd2VkVmFsdWU7CisgICAgICAgICAgICBt
X3Nhd0Rpc2NyZXRpb25hcnlMaWdhdHVyZXNWYWx1ZSA9IHRydWU7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZU5vSGlzdG9yaWNhbExpZ2F0dXJlczoKKyAgICAgICAg
Y2FzZSBDU1NWYWx1ZUhpc3RvcmljYWxMaWdhdHVyZXM6CisgICAgICAgICAgICBpZiAobV9zYXdI
aXN0b3JpY2FsTGlnYXR1cmVzVmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFBhcnNlUmVz
dWx0OjpEaXNhbGxvd2VkVmFsdWU7CisgICAgICAgICAgICBtX3Nhd0hpc3RvcmljYWxMaWdhdHVy
ZXNWYWx1ZSA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1
ZU5vQ29udGV4dHVhbDoKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUNvbnRleHR1YWw6CisgICAgICAg
ICAgICBpZiAobV9zYXdDb250ZXh0dWFsTGlnYXR1cmVzVmFsdWUpCisgICAgICAgICAgICAgICAg
cmV0dXJuIFBhcnNlUmVzdWx0OjpEaXNhbGxvd2VkVmFsdWU7CisgICAgICAgICAgICBtX3Nhd0Nv
bnRleHR1YWxMaWdhdHVyZXNWYWx1ZSA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBQYXJzZVJlc3VsdDo6VW5rbm93blZhbHVl
OworICAgICAgICB9CisgICAgICAgIG1fcmVzdWx0LT5hcHBlbmQoKmNvbnN1bWVJZGVudChyYW5n
ZSkpOworICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHQ6OkNvbnN1bWVkVmFsdWU7CisgICAgfQor
CisgICAgQ1NTVmFsdWUqIGZpbmFsaXplVmFsdWUoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3Jl
c3VsdC0+bGVuZ3RoKCkpCisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpOworICAgICAgICByZXR1cm4gbV9yZXN1bHQu
cmVsZWFzZSgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIG1fc2F3Q29tbW9uTGlnYXR1
cmVzVmFsdWU7CisgICAgYm9vbCBtX3Nhd0Rpc2NyZXRpb25hcnlMaWdhdHVyZXNWYWx1ZTsKKyAg
ICBib29sIG1fc2F3SGlzdG9yaWNhbExpZ2F0dXJlc1ZhbHVlOworICAgIGJvb2wgbV9zYXdDb250
ZXh0dWFsTGlnYXR1cmVzVmFsdWU7CisgICAgTWVtYmVyPENTU1ZhbHVlTGlzdD4gbV9yZXN1bHQ7
Cit9OworCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVGb250VmFyaWFudExpZ2F0dXJlcyhDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0g
Q1NTVmFsdWVOb3JtYWwgfHwgcmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAg
ICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIEZvbnRWYXJpYW50TGlnYXR1
cmVzUGFyc2VyIGxpZ2F0dXJlc1BhcnNlcjsKKyAgICBkbyB7CisgICAgICAgIGlmIChsaWdhdHVy
ZXNQYXJzZXIuY29uc3VtZUxpZ2F0dXJlKHJhbmdlKSAhPQorICAgICAgICAgICAgRm9udFZhcmlh
bnRMaWdhdHVyZXNQYXJzZXI6OlBhcnNlUmVzdWx0OjpDb25zdW1lZFZhbHVlKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpOworCisgICAg
cmV0dXJuIGxpZ2F0dXJlc1BhcnNlci5maW5hbGl6ZVZhbHVlKCk7Cit9CisKK3N0YXRpYyBDU1NQ
cmltaXRpdmVWYWx1ZSogY29uc3VtZUZvbnRWYXJpYW50Q2FwcyhDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSkKK3sKKyAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlTm9ybWFsLCBDU1NW
YWx1ZVNtYWxsQ2FwcywgQ1NTVmFsdWVBbGxTbWFsbENhcHMsCisgICAgICAgIENTU1ZhbHVlUGV0
aXRlQ2FwcywgQ1NTVmFsdWVBbGxQZXRpdGVDYXBzLAorICAgICAgICBDU1NWYWx1ZVVuaWNhc2Us
IENTU1ZhbHVlVGl0bGluZ0NhcHM+KHJhbmdlKTsKK30KKworY2xhc3MgRm9udFZhcmlhbnROdW1l
cmljUGFyc2VyIHsKKyAgICBTVEFDS19BTExPQ0FURUQoKTsKKworcHVibGljOgorICAgIEZvbnRW
YXJpYW50TnVtZXJpY1BhcnNlcigpCisgICAgICAgIDogbV9zYXdOdW1lcmljRmlndXJlVmFsdWUo
ZmFsc2UpCisgICAgICAgICwgbV9zYXdOdW1lcmljU3BhY2luZ1ZhbHVlKGZhbHNlKQorICAgICAg
ICAsIG1fc2F3TnVtZXJpY0ZyYWN0aW9uVmFsdWUoZmFsc2UpCisgICAgICAgICwgbV9zYXdPcmRp
bmFsVmFsdWUoZmFsc2UpCisgICAgICAgICwgbV9zYXdTbGFzaGVkWmVyb1ZhbHVlKGZhbHNlKQor
ICAgICAgICAsIG1fcmVzdWx0KENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKSkK
KyAgICB7CisgICAgfQorCisgICAgZW51bSBjbGFzcyBQYXJzZVJlc3VsdCB7CisgICAgICAgIENv
bnN1bWVkVmFsdWUsCisgICAgICAgIERpc2FsbG93ZWRWYWx1ZSwKKyAgICAgICAgVW5rbm93blZh
bHVlCisgICAgfTsKKworICAgIFBhcnNlUmVzdWx0IGNvbnN1bWVOdW1lcmljKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlKQorICAgIHsKKyAgICAgICAgQ1NTVmFsdWVJRCB2YWx1ZUlEID0gcmFu
Z2UucGVlaygpLmlkKCk7CisgICAgICAgIHN3aXRjaCAodmFsdWVJRCkgeworICAgICAgICBjYXNl
IENTU1ZhbHVlTGluaW5nTnVtczoKKyAgICAgICAgY2FzZSBDU1NWYWx1ZU9sZHN0eWxlTnVtczoK
KyAgICAgICAgICAgIGlmIChtX3Nhd051bWVyaWNGaWd1cmVWYWx1ZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gUGFyc2VSZXN1bHQ6OkRpc2FsbG93ZWRWYWx1ZTsKKyAgICAgICAgICAgIG1fc2F3
TnVtZXJpY0ZpZ3VyZVZhbHVlID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIENTU1ZhbHVlUHJvcG9ydGlvbmFsTnVtczoKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVRhYnVs
YXJOdW1zOgorICAgICAgICAgICAgaWYgKG1fc2F3TnVtZXJpY1NwYWNpbmdWYWx1ZSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHQ6OkRpc2FsbG93ZWRWYWx1ZTsKKyAgICAgICAg
ICAgIG1fc2F3TnVtZXJpY1NwYWNpbmdWYWx1ZSA9IHRydWU7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBDU1NWYWx1ZURpYWdvbmFsRnJhY3Rpb25zOgorICAgICAgICBjYXNlIENT
U1ZhbHVlU3RhY2tlZEZyYWN0aW9uczoKKyAgICAgICAgICAgIGlmIChtX3Nhd051bWVyaWNGcmFj
dGlvblZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBQYXJzZVJlc3VsdDo6RGlzYWxsb3dl
ZFZhbHVlOworICAgICAgICAgICAgbV9zYXdOdW1lcmljRnJhY3Rpb25WYWx1ZSA9IHRydWU7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZU9yZGluYWw6CisgICAgICAg
ICAgICBpZiAobV9zYXdPcmRpbmFsVmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFBhcnNl
UmVzdWx0OjpEaXNhbGxvd2VkVmFsdWU7CisgICAgICAgICAgICBtX3Nhd09yZGluYWxWYWx1ZSA9
IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVNsYXNoZWRa
ZXJvOgorICAgICAgICAgICAgaWYgKG1fc2F3U2xhc2hlZFplcm9WYWx1ZSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gUGFyc2VSZXN1bHQ6OkRpc2FsbG93ZWRWYWx1ZTsKKyAgICAgICAgICAgIG1f
c2F3U2xhc2hlZFplcm9WYWx1ZSA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBQYXJzZVJlc3VsdDo6VW5rbm93blZhbHVlOwor
ICAgICAgICB9CisgICAgICAgIG1fcmVzdWx0LT5hcHBlbmQoKmNvbnN1bWVJZGVudChyYW5nZSkp
OworICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHQ6OkNvbnN1bWVkVmFsdWU7CisgICAgfQorCisg
ICAgQ1NTVmFsdWUqIGZpbmFsaXplVmFsdWUoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3Jlc3Vs
dC0+bGVuZ3RoKCkpCisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpOworICAgICAgICByZXR1cm4gbV9yZXN1bHQucmVs
ZWFzZSgpOworICAgIH0KKworCitwcml2YXRlOgorICAgIGJvb2wgbV9zYXdOdW1lcmljRmlndXJl
VmFsdWU7CisgICAgYm9vbCBtX3Nhd051bWVyaWNTcGFjaW5nVmFsdWU7CisgICAgYm9vbCBtX3Nh
d051bWVyaWNGcmFjdGlvblZhbHVlOworICAgIGJvb2wgbV9zYXdPcmRpbmFsVmFsdWU7CisgICAg
Ym9vbCBtX3Nhd1NsYXNoZWRaZXJvVmFsdWU7CisgICAgTWVtYmVyPENTU1ZhbHVlTGlzdD4gbV9y
ZXN1bHQ7Cit9OworCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVGb250VmFyaWFudE51bWVyaWMo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgp
ID09IENTU1ZhbHVlTm9ybWFsKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsK
KworICAgIEZvbnRWYXJpYW50TnVtZXJpY1BhcnNlciBudW1lcmljUGFyc2VyOworICAgIGRvIHsK
KyAgICAgICAgaWYgKG51bWVyaWNQYXJzZXIuY29uc3VtZU51bWVyaWMocmFuZ2UpICE9CisgICAg
ICAgICAgICBGb250VmFyaWFudE51bWVyaWNQYXJzZXI6OlBhcnNlUmVzdWx0OjpDb25zdW1lZFZh
bHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfSB3aGlsZSAoIXJhbmdlLmF0
RW5kKCkpOworCisgICAgcmV0dXJuIG51bWVyaWNQYXJzZXIuZmluYWxpemVWYWx1ZSgpOworfQor
CitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVGb250VmFyaWFudENTUzIxKENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFs
dWVOb3JtYWwsIENTU1ZhbHVlU21hbGxDYXBzPihyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1
ZSogY29uc3VtZUZvbnRWYXJpYW50TGlzdChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sK
KyAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBh
cmF0ZWQoKTsKKyAgICBkbyB7CisgICAgICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NW
YWx1ZUFsbCkgeworICAgICAgICAgICAgLy8gRklYTUU6IENTU1Byb3BlcnR5UGFyc2VyOjpwYXJz
ZUZvbnRWYXJpYW50KCkgaW1wbGVtZW50cworICAgICAgICAgICAgLy8gdGhlIG9sZCBjc3MzIGRy
YWZ0OgorICAgICAgICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMi9XRC1jc3MzLXdl
YmZvbnRzLTIwMDIwODAyLyNmb250LXZhcmlhbnQKKyAgICAgICAgICAgIC8vICdhbGwnIGlzIG9u
bHkgYWxsb3dlZCBpbiBAZm9udC1mYWNlIGFuZCB3aXRoIG5vIG90aGVyIHZhbHVlcy4KKyAgICAg
ICAgICAgIGlmICh2YWx1ZXMtPmxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgICAgIH0K
KyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZvbnRWYXJpYW50ID0gY29uc3VtZUZvbnRWYXJp
YW50Q1NTMjEocmFuZ2UpOworICAgICAgICBpZiAoZm9udFZhcmlhbnQpCisgICAgICAgICAgICB2
YWx1ZXMtPmFwcGVuZCgqZm9udFZhcmlhbnQpOworICAgIH0gd2hpbGUgKGNvbnN1bWVDb21tYUlu
Y2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKTsKKworICAgIGlmICh2YWx1ZXMtPmxlbmd0aCgpKQor
ICAgICAgICByZXR1cm4gdmFsdWVzOworCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRp
YyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUZvbnRXZWlnaHQoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVl
aygpOworICAgIGlmICh0b2tlbi5pZCgpID49IENTU1ZhbHVlTm9ybWFsICYmIHRva2VuLmlkKCkg
PD0gQ1NTVmFsdWVMaWdodGVyKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsK
KyAgICBpZiAodG9rZW4udHlwZSgpICE9IE51bWJlclRva2VuIHx8IHRva2VuLm51bWVyaWNWYWx1
ZVR5cGUoKSAhPSBJbnRlZ2VyVmFsdWVUeXBlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBpbnQgd2VpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50Pih0b2tlbi5udW1lcmljVmFsdWUoKSk7Cisg
ICAgaWYgKCh3ZWlnaHQgJSAxMDApIHx8IHdlaWdodCA8IDEwMCB8fCB3ZWlnaHQgPiA5MDApCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNw
YWNlKCk7CisgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKHN0
YXRpY19jYXN0PENTU1ZhbHVlSUQ+KENTU1ZhbHVlMTAwICsgd2VpZ2h0IC8gMTAwIC0gMSkpOwor
fQorCitzdGF0aWMgU3RyaW5nIGNvbmNhdGVuYXRlRmFtaWx5TmFtZShDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSkKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYm9vbCBhZGRl
ZFNwYWNlID0gZmFsc2U7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIGZpcnN0VG9rZW4gPSBy
YW5nZS5wZWVrKCk7CisgICAgd2hpbGUgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gSWRlbnRUb2tl
bikgeworICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgnICcpOworICAgICAgICAgICAgYWRkZWRTcGFjZSA9IHRydWU7CisgICAgICAg
IH0KKyAgICAgICAgYnVpbGRlci5hcHBlbmQocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3Bh
Y2UoKS52YWx1ZSgpKTsKKyAgICB9CisgICAgaWYgKCFhZGRlZFNwYWNlICYmIGlzQ1NTV2lkZUtl
eXdvcmQoZmlyc3RUb2tlbi5pZCgpKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUZh
bWlseU5hbWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBl
ZWsoKS50eXBlKCkgPT0gU3RyaW5nVG9rZW4pCisgICAgICAgIHJldHVybiBDU1NGb250RmFtaWx5
VmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVlKCku
dG9TdHJpbmcoKSk7CisgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgIT0gSWRlbnRUb2tlbikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgU3RyaW5nIGZhbWlseU5hbWUgPSBjb25jYXRl
bmF0ZUZhbWlseU5hbWUocmFuZ2UpOworICAgIGlmIChmYW1pbHlOYW1lLmlzTnVsbCgpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gQ1NTRm9udEZhbWlseVZhbHVlOjpjcmVh
dGUoZmFtaWx5TmFtZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUdlbmVyaWNGYW1p
bHkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgcmV0dXJuIGNvbnN1bWVJZGVu
dFJhbmdlKHJhbmdlLCBDU1NWYWx1ZVNlcmlmLCBDU1NWYWx1ZVdlYmtpdEJvZHkpOworfQorCitz
dGF0aWMgQ1NTVmFsdWVMaXN0KiBjb25zdW1lRm9udEZhbWlseShDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSkKK3sKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgZG8geworICAgICAgICBDU1NWYWx1ZSogcGFyc2VkVmFs
dWUgPSBjb25zdW1lR2VuZXJpY0ZhbWlseShyYW5nZSk7CisgICAgICAgIGlmIChwYXJzZWRWYWx1
ZSkgeworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVGYW1pbHlOYW1lKHJhbmdl
KTsKKyAgICAgICAgICAgIGlmIChwYXJzZWRWYWx1ZSkgeworICAgICAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZCgqcGFyc2VkVmFsdWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gd2hp
bGUgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKTsKKyAgICByZXR1cm4g
bGlzdDsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lU3BhY2luZyhDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlmIChy
YW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVJZGVudChyYW5nZSk7CisgICAgLy8gRklYTUU6IGFsbG93IDxwZXJjZW50YWdlPnMgaW4gd29y
ZC1zcGFjaW5nLgorICAgIHJldHVybiBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2Rl
LCBWYWx1ZVJhbmdlQWxsLCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7Cit9CisKK3N0YXRpYyBDU1NW
YWx1ZSogY29uc3VtZVRhYlNpemUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNl
ck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcGFyc2VkVmFs
dWUgPSBjb25zdW1lSW50ZWdlcihyYW5nZSwgMCk7CisgICAgaWYgKHBhcnNlZFZhbHVlKQorICAg
ICAgICByZXR1cm4gcGFyc2VkVmFsdWU7CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGgocmFuZ2Us
IGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7Cit9CisKK3N0YXRpYyBDU1NW
YWx1ZSogY29uc3VtZVRleHRTaXplQWRqdXN0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBD
U1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgp
ID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7Cisg
ICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJu
IGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVQZXJjZW50KHJhbmdlLCBW
YWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVGb250
U2l6ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJN
b2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzID0gVW5pdGxlc3NRdWlyazo6Rm9yYmlkKQorewor
ICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA+PSBDU1NWYWx1ZVh4U21hbGwgJiYgcmFuZ2UucGVl
aygpLmlkKCkgPD0gQ1NTVmFsdWVMYXJnZXIpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQo
cmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJz
ZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUsIHVuaXRsZXNzKTsKK30KKworc3RhdGljIENT
U1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lTGluZUhlaWdodChDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlmIChyYW5nZS5wZWVr
KCkuaWQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChy
YW5nZSk7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogbGluZUhlaWdodCA9IGNvbnN1bWVOdW1i
ZXIocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgaWYgKGxpbmVIZWlnaHQpCisg
ICAgICAgIHJldHVybiBsaW5lSGVpZ2h0OworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJj
ZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworfQorCitz
dGF0aWMgQ1NTVmFsdWVMaXN0KiBjb25zdW1lUm90YXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UpCit7CisgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0luZGVwZW5k
ZW50VHJhbnNmb3JtUHJvcGVydGllc0VuYWJsZWQoKSk7CisgICAgQ1NTVmFsdWVMaXN0KiBsaXN0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworCisgICAgQ1NTVmFsdWUq
IHJvdGF0aW9uID0gY29uc3VtZUFuZ2xlKHJhbmdlKTsKKyAgICBpZiAoIXJvdGF0aW9uKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBsaXN0LT5hcHBlbmQoKnJvdGF0aW9uKTsKKworICAg
IGlmIChyYW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbGlzdDsKKworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCAzOyBpKyspIHsgLy8gMyBkaW1lbnNpb25zIG9mIHJvdGF0aW9uCisg
ICAgICAgIENTU1ZhbHVlKiBkaW1lbnNpb24gPSBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJh
bmdlQWxsKTsKKyAgICAgICAgaWYgKCFkaW1lbnNpb24pCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgbGlzdC0+YXBwZW5kKCpkaW1lbnNpb24pOworICAgIH0KKworICAgIHJl
dHVybiBsaXN0OworfQorCitzdGF0aWMgQ1NTVmFsdWVMaXN0KiBjb25zdW1lU2NhbGUoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OmNzc0luZGVwZW5kZW50VHJhbnNmb3JtUHJvcGVydGllc0VuYWJsZWQoKSk7CisKKyAgICBD
U1NWYWx1ZSogc2NhbGUgPSBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlQWxsKTsKKyAg
ICBpZiAoIXNjYWxlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZUxpc3Qq
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgbGlzdC0+
YXBwZW5kKCpzY2FsZSk7CisgICAgc2NhbGUgPSBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJh
bmdlQWxsKTsKKyAgICBpZiAoc2NhbGUpIHsKKyAgICAgICAgbGlzdC0+YXBwZW5kKCpzY2FsZSk7
CisgICAgICAgIHNjYWxlID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZUFsbCk7Cisg
ICAgICAgIGlmIChzY2FsZSkKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZCgqc2NhbGUpOworICAg
IH0KKworICAgIHJldHVybiBsaXN0OworfQorCitzdGF0aWMgQ1NTVmFsdWVMaXN0KiBjb25zdW1l
VHJhbnNsYXRlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1Bh
cnNlck1vZGUpCit7CisgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0luZGVw
ZW5kZW50VHJhbnNmb3JtUHJvcGVydGllc0VuYWJsZWQoKSk7CisgICAgQ1NTVmFsdWUqIHRyYW5z
bGF0ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVl
UmFuZ2VBbGwpOworICAgIGlmICghdHJhbnNsYXRlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJh
dGVkKCk7CisgICAgbGlzdC0+YXBwZW5kKCp0cmFuc2xhdGUpOworICAgIHRyYW5zbGF0ZSA9IGNv
bnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwp
OworICAgIGlmICh0cmFuc2xhdGUpIHsKKyAgICAgICAgbGlzdC0+YXBwZW5kKCp0cmFuc2xhdGUp
OworICAgICAgICB0cmFuc2xhdGUgPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2Rl
LCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgaWYgKHRyYW5zbGF0ZSkKKyAgICAgICAgICAgIGxp
c3QtPmFwcGVuZCgqdHJhbnNsYXRlKTsKKyAgICB9CisKKyAgICByZXR1cm4gbGlzdDsKK30KKwor
c3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQ291bnRlcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgaW50IGRlZmF1bHRWYWx1ZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NT
VmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIENT
U1ZhbHVlTGlzdCogbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsK
KyAgICBkbyB7CisgICAgICAgIENTU0N1c3RvbUlkZW50VmFsdWUqIGNvdW50ZXJOYW1lID0gY29u
c3VtZUN1c3RvbUlkZW50KHJhbmdlKTsKKyAgICAgICAgaWYgKCFjb3VudGVyTmFtZSkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBpbnQgaSA9IGRlZmF1bHRWYWx1ZTsKKyAg
ICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlKiBjb3VudGVyVmFsdWUgPSBjb25zdW1lSW50ZWdl
cihyYW5nZSkpCisgICAgICAgICAgICBpID0gY2xhbXBUbzxpbnQ+KGNvdW50ZXJWYWx1ZS0+Z2V0
RG91YmxlVmFsdWUoKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZCgqQ1NTVmFsdWVQYWlyOjpjcmVh
dGUoY291bnRlck5hbWUsCisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGks
IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6SW50ZWdlciksCisgICAgICAgICAgICBDU1NW
YWx1ZVBhaXI6OkRyb3BJZGVudGljYWxWYWx1ZXMpKTsKKyAgICB9IHdoaWxlICghcmFuZ2UuYXRF
bmQoKSk7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVBh
Z2VTaXplKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBjb25zdW1l
SWRlbnQ8Q1NTVmFsdWVBMywgQ1NTVmFsdWVBNCwgQ1NTVmFsdWVBNSwgQ1NTVmFsdWVCNCwgQ1NT
VmFsdWVCNSwgQ1NTVmFsdWVMZWRnZXIsIENTU1ZhbHVlTGVnYWwsIENTU1ZhbHVlTGV0dGVyPihy
YW5nZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZUxpc3QqIGNvbnN1bWVTaXplKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgQ1NT
VmFsdWVMaXN0KiByZXN1bHQgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7
CisKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBdXRvKSB7CisgICAgICAg
IHJlc3VsdC0+YXBwZW5kKCpjb25zdW1lSWRlbnQocmFuZ2UpKTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKKyAgICBpZiAoQ1NTVmFsdWUqIHdpZHRoID0gY29uc3VtZUxlbmd0aChy
YW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKSkgeworICAgICAgICBD
U1NWYWx1ZSogaGVpZ2h0ID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFs
dWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgcmVzdWx0LT5hcHBlbmQoKndpZHRoKTsKKyAg
ICAgICAgaWYgKGhlaWdodCkKKyAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKCpoZWlnaHQpOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIENTU1ZhbHVlKiBwYWdlU2l6ZSA9
IGNvbnN1bWVQYWdlU2l6ZShyYW5nZSk7CisgICAgQ1NTVmFsdWUqIG9yaWVudGF0aW9uID0gY29u
c3VtZUlkZW50PENTU1ZhbHVlUG9ydHJhaXQsIENTU1ZhbHVlTGFuZHNjYXBlPihyYW5nZSk7Cisg
ICAgaWYgKCFwYWdlU2l6ZSkKKyAgICAgICAgcGFnZVNpemUgPSBjb25zdW1lUGFnZVNpemUocmFu
Z2UpOworCisgICAgaWYgKCFvcmllbnRhdGlvbiAmJiAhcGFnZVNpemUpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIGlmIChwYWdlU2l6ZSkKKyAgICAgICAgcmVzdWx0LT5hcHBlbmQoKnBh
Z2VTaXplKTsKKyAgICBpZiAob3JpZW50YXRpb24pCisgICAgICAgIHJlc3VsdC0+YXBwZW5kKCpv
cmllbnRhdGlvbik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lU25hcEhlaWdodChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlKQoreworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB1bml0ID0gY29uc3Vt
ZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAg
ICBpZiAoIXVuaXQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIENTU1ZhbHVlTGlzdCog
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBsaXN0LT5h
cHBlbmQoKnVuaXQpOworCisgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlKiBwb3NpdGlvbiA9IGNv
bnN1bWVQb3NpdGl2ZUludGVnZXIocmFuZ2UpKSB7CisgICAgICAgIGlmIChwb3NpdGlvbi0+Z2V0
SW50VmFsdWUoKSA+IDEwMCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBs
aXN0LT5hcHBlbmQoKnBvc2l0aW9uKTsKKyAgICB9CisKKyAgICByZXR1cm4gbGlzdDsKK30KKwor
c3RhdGljIENTU1ZhbHVlKiBjb25zdW1lVGV4dEluZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIC8vIFsgPGxlbmd0aD4g
fCA8cGVyY2VudGFnZT4gXSAmJiBoYW5naW5nPyAmJiBlYWNoLWxpbmU/CisgICAgLy8gS2V5d29y
ZHMgb25seSBhbGxvd2VkIHdoZW4gY3NzM1RleHQgaXMgZW5hYmxlZC4KKyAgICBDU1NWYWx1ZUxp
c3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisKKyAgICBi
b29sIGhhc0xlbmd0aE9yUGVyY2VudGFnZSA9IGZhbHNlOworICAgIGJvb2wgaGFzRWFjaExpbmUg
PSBmYWxzZTsKKyAgICBib29sIGhhc0hhbmdpbmcgPSBmYWxzZTsKKworICAgIGRvIHsKKyAgICAg
ICAgaWYgKCFoYXNMZW5ndGhPclBlcmNlbnRhZ2UpIHsKKyAgICAgICAgICAgIGlmIChDU1NWYWx1
ZSogdGV4dEluZGVudCA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1v
ZGUsIFZhbHVlUmFuZ2VBbGwsIFVuaXRsZXNzUXVpcms6OkFsbG93KSkgeworICAgICAgICAgICAg
ICAgIGxpc3QtPmFwcGVuZCgqdGV4dEluZGVudCk7CisgICAgICAgICAgICAgICAgaGFzTGVuZ3Ro
T3JQZXJjZW50YWdlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpj
c3MzVGV4dEVuYWJsZWQoKSkgeworICAgICAgICAgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBl
ZWsoKS5pZCgpOworICAgICAgICAgICAgaWYgKCFoYXNFYWNoTGluZSAmJiBpZCA9PSBDU1NWYWx1
ZUVhY2hMaW5lKSB7CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKCpjb25zdW1lSWRlbnQo
cmFuZ2UpKTsKKyAgICAgICAgICAgICAgICBoYXNFYWNoTGluZSA9IHRydWU7CisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWhhc0hhbmdp
bmcgJiYgaWQgPT0gQ1NTVmFsdWVIYW5naW5nKSB7CisgICAgICAgICAgICAgICAgbGlzdC0+YXBw
ZW5kKCpjb25zdW1lSWRlbnQocmFuZ2UpKTsKKyAgICAgICAgICAgICAgICBoYXNIYW5naW5nID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9IHdoaWxlICghcmFuZ2UuYXRFbmQoKSk7
CisKKyAgICBpZiAoIWhhc0xlbmd0aE9yUGVyY2VudGFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICByZXR1cm4gbGlzdDsKK30KKworc3RhdGljIGJvb2wgdmFsaWRXaWR0aE9ySGVp
Z2h0S2V5d29yZChDU1NWYWx1ZUlEIGlkLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0
KQoreworICAgIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdE1pbkNvbnRlbnQgfHwgaWQgPT0gQ1NT
VmFsdWVXZWJraXRNYXhDb250ZW50IHx8IGlkID09IENTU1ZhbHVlV2Via2l0RmlsbEF2YWlsYWJs
ZSB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdEZpdENvbnRlbnQKKyAgICAgICAgfHwgaWQgPT0gQ1NT
VmFsdWVNaW5Db250ZW50IHx8IGlkID09IENTU1ZhbHVlTWF4Q29udGVudCB8fCBpZCA9PSBDU1NW
YWx1ZUZpdENvbnRlbnQpIHsKKyAgICAgICAgaWYgKGNvbnRleHQudXNlQ291bnRlcigpKSB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKGlkKSB7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlV2Via2l0
TWluQ29udGVudDoKKyAgICAgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQo
VXNlQ291bnRlcjo6Q1NTVmFsdWVQcmVmaXhlZE1pbkNvbnRlbnQpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdE1heENvbnRlbnQ6CisgICAg
ICAgICAgICAgICAgY29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkNTU1Zh
bHVlUHJlZml4ZWRNYXhDb250ZW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRGaWxsQXZhaWxhYmxlOgorICAgICAgICAgICAgICAgIGNv
bnRleHQudXNlQ291bnRlcigpLT5jb3VudChVc2VDb3VudGVyOjpDU1NWYWx1ZVByZWZpeGVkRmls
bEF2YWlsYWJsZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENT
U1ZhbHVlV2Via2l0Rml0Q29udGVudDoKKyAgICAgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50
ZXIoKS0+Y291bnQoVXNlQ291bnRlcjo6Q1NTVmFsdWVQcmVmaXhlZEZpdENvbnRlbnQpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVN
YXhXaWR0aE9ySGVpZ2h0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJz
ZXJDb250ZXh0JiBjb250ZXh0LCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzID0gVW5pdGxlc3NRdWly
azo6Rm9yYmlkKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUg
fHwgdmFsaWRXaWR0aE9ySGVpZ2h0S2V5d29yZChyYW5nZS5wZWVrKCkuaWQoKSwgY29udGV4dCkp
CisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1l
TGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZU5vbk5lZ2F0
aXZlLCB1bml0bGVzcyk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVdpZHRoT3JIZWln
aHQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNv
bnRleHQsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MgPSBVbml0bGVzc1F1aXJrOjpGb3JiaWQpCit7
CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0byB8fCB2YWxpZFdpZHRo
T3JIZWlnaHRLZXl3b3JkKHJhbmdlLnBlZWsoKS5pZCgpLCBjb250ZXh0KSkKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNl
bnQocmFuZ2UsIGNvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUsIHVuaXRsZXNz
KTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lTWFyZ2luT3JPZmZzZXQoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NR
dWlyayB1bml0bGVzcykKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVB
dXRvKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29u
c3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCwg
dW5pdGxlc3MpOworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVDbGlwQ29t
cG9uZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNl
ck1vZGUpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVMZW5n
dGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwsIFVuaXRsZXNzUXVpcms6OkFs
bG93KTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQ2xpcChDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlmIChyYW5n
ZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBjb25zdW1lSWRl
bnQocmFuZ2UpOworCisgICAgaWYgKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgIT0gQ1NTVmFs
dWVSZWN0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENTU1BhcnNlclRva2VuUmFu
Z2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7CisgICAgLy8gcmVjdCh0LCByLCBiLCBs
KSB8fCByZWN0KHQgciBiIGwpCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHRvcCA9IGNvbnN1bWVD
bGlwQ29tcG9uZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUpOworICAgIGlmICghdG9wKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICBib29sIG5lZWRzQ29tbWEgPSBjb25zdW1lQ29tbWFJbmNs
dWRpbmdXaGl0ZXNwYWNlKGFyZ3MpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiByaWdodCA9IGNv
bnN1bWVDbGlwQ29tcG9uZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUpOworICAgIGlmICghcmlnaHQg
fHwgKG5lZWRzQ29tbWEgJiYgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogYm90dG9t
ID0gY29uc3VtZUNsaXBDb21wb25lbnQoYXJncywgY3NzUGFyc2VyTW9kZSk7CisgICAgaWYgKCFi
b3R0b20gfHwgKG5lZWRzQ29tbWEgJiYgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2Uo
YXJncykpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSog
bGVmdCA9IGNvbnN1bWVDbGlwQ29tcG9uZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUpOworICAgIGlm
ICghbGVmdCB8fCAhYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gQ1NTUXVhZFZhbHVlOjpjcmVhdGUodG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBDU1NR
dWFkVmFsdWU6OlNlcmlhbGl6ZUFzUmVjdCk7Cit9CisKK3N0YXRpYyBib29sIGNvbnN1bWVQYW4o
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1ZhbHVlKiYgcGFuWCwgQ1NTVmFsdWUqJiBw
YW5ZKQoreworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICBpZiAo
KGlkID09IENTU1ZhbHVlUGFuWCB8fCBpZCA9PSBDU1NWYWx1ZVBhblJpZ2h0IHx8IGlkID09IENT
U1ZhbHVlUGFuTGVmdCkgJiYgIXBhblgpIHsKKyAgICAgICAgaWYgKGlkICE9IENTU1ZhbHVlUGFu
WCAmJiAhUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzVG91Y2hBY3Rpb25QYW5EaXJlY3Rpb25z
RW5hYmxlZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBwYW5YID0gY29u
c3VtZUlkZW50KHJhbmdlKTsKKyAgICB9IGVsc2UgaWYgKChpZCA9PSBDU1NWYWx1ZVBhblkgfHwg
aWQgPT0gQ1NTVmFsdWVQYW5Eb3duIHx8IGlkID09IENTU1ZhbHVlUGFuVXApICYmICFwYW5ZKSB7
CisgICAgICAgIGlmIChpZCAhPSBDU1NWYWx1ZVBhblkgJiYgIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OmNzc1RvdWNoQWN0aW9uUGFuRGlyZWN0aW9uc0VuYWJsZWQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgcGFuWSA9IGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lVG91Y2hBY3Rpb24oQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UpCit7CisgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuaWQo
KTsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlTm9uZSB8fCBp
ZCA9PSBDU1NWYWx1ZU1hbmlwdWxhdGlvbikgeworICAgICAgICBsaXN0LT5hcHBlbmQoKmNvbnN1
bWVJZGVudChyYW5nZSkpOworICAgICAgICByZXR1cm4gbGlzdDsKKyAgICB9CisKKyAgICBDU1NW
YWx1ZSogcGFuWCA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIHBhblkgPSBudWxscHRyOworICAg
IGlmICghY29uc3VtZVBhbihyYW5nZSwgcGFuWCwgcGFuWSkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIGlmICghcmFuZ2UuYXRFbmQoKSAmJiAhY29uc3VtZVBhbihyYW5nZSwgcGFuWCwg
cGFuWSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKHBhblgpCisgICAgICAg
IGxpc3QtPmFwcGVuZCgqcGFuWCk7CisgICAgaWYgKHBhblkpCisgICAgICAgIGxpc3QtPmFwcGVu
ZCgqcGFuWSk7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1
ZSogY29uc3VtZUxpbmVDbGFtcChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBp
ZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBQZXJjZW50YWdlVG9rZW4gJiYgcmFuZ2UucGVlaygp
LnR5cGUoKSAhPSBOdW1iZXJUb2tlbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIGNsYW1wVmFsdWUgPSBjb25zdW1lUGVyY2VudChyYW5nZSwgVmFsdWVS
YW5nZU5vbk5lZ2F0aXZlKTsKKyAgICBpZiAoY2xhbXBWYWx1ZSkKKyAgICAgICAgcmV0dXJuIGNs
YW1wVmFsdWU7CisgICAgLy8gV2hlbiBzcGVjaWZ5aW5nIG51bWJlciBvZiBsaW5lcywgZG9uJ3Qg
YWxsb3cgMCBhcyBhIHZhbGlkIHZhbHVlLgorICAgIHJldHVybiBjb25zdW1lUG9zaXRpdmVJbnRl
Z2VyKHJhbmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lTG9jYWxlKENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NW
YWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVy
biBjb25zdW1lU3RyaW5nKHJhbmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQ29s
dW1uV2lkdGgoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBl
ZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChy
YW5nZSk7CisgICAgLy8gQWx3YXlzIHBhcnNlIGxlbmd0aHMgaW4gc3RyaWN0IG1vZGUgaGVyZSwg
c2luY2UgaXQgd291bGQgYmUgYW1iaWd1b3VzIG90aGVyd2lzZSB3aGVuIHVzZWQgaW4KKyAgICAv
LyB0aGUgJ2NvbHVtbnMnIHNob3J0aGFuZCBwcm9wZXJ0eS4KKyAgICBDU1NQcmltaXRpdmVWYWx1
ZSogY29sdW1uV2lkdGggPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBIVE1MU3RhbmRhcmRNb2RlLCBW
YWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgIGlmICghY29sdW1uV2lkdGggfHwgKCFjb2x1bW5X
aWR0aC0+aXNDYWxjdWxhdGVkKCkgJiYgY29sdW1uV2lkdGgtPmdldERvdWJsZVZhbHVlKCkgPT0g
MCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjb2x1bW5XaWR0aDsKK30K
Kworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQ29sdW1uQ291bnQoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVQ
b3NpdGl2ZUludGVnZXIocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDb2x1
bW5HYXAoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2Vy
TW9kZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb3JtYWwpCisg
ICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lTGVu
Z3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworfQorCitz
dGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDb2x1bW5TcGFuKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlKQoreworICAgIHJldHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBbGwsIENTU1ZhbHVlTm9u
ZT4ocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVab29tKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAg
IGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogem9vbSA9IG51bGxwdHI7CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBJZGVu
dFRva2VuKSB7CisgICAgICAgIHpvb20gPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVOb3JtYWwsIENT
U1ZhbHVlUmVzZXQsIENTU1ZhbHVlRG9jdW1lbnQ+KHJhbmdlKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICB6b29tID0gY29uc3VtZVBlcmNlbnQocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7
CisgICAgICAgIGlmICghem9vbSkKKyAgICAgICAgICAgIHpvb20gPSBjb25zdW1lTnVtYmVyKHJh
bmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgIH0KKyAgICBpZiAoem9vbSAmJiBjb250
ZXh0LnVzZUNvdW50ZXIoKQorICAgICAgICAmJiAhKHRva2VuLmlkKCkgPT0gQ1NTVmFsdWVOb3Jt
YWwKKyAgICAgICAgICAgIHx8ICh0b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4gJiYgem9vbS0+
Z2V0RG91YmxlVmFsdWUoKSA9PSAxKQorICAgICAgICAgICAgfHwgKHRva2VuLnR5cGUoKSA9PSBQ
ZXJjZW50YWdlVG9rZW4gJiYgem9vbS0+Z2V0RG91YmxlVmFsdWUoKSA9PSAxMDApKSkKKyAgICAg
ICAgY29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkNTU1pvb21Ob3RFcXVh
bFRvT25lKTsKKyAgICByZXR1cm4gem9vbTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1l
QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7Cisg
ICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlSW5maW5pdGUpCisgICAgICAgIHJl
dHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lTnVtYmVyKHJhbmdl
LCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVB
bmltYXRpb25OYW1lKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJD
b250ZXh0JiBjb250ZXh0LCBib29sIGFsbG93UXVvdGVkTmFtZSkKK3sKKyAgICBpZiAocmFuZ2Uu
cGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50
KHJhbmdlKTsKKworICAgIGlmIChhbGxvd1F1b3RlZE5hbWUgJiYgcmFuZ2UucGVlaygpLnR5cGUo
KSA9PSBTdHJpbmdUb2tlbikgeworICAgICAgICAvLyBMZWdhY3kgc3VwcG9ydCBmb3Igc3RyaW5n
cyBpbiBwcmVmaXhlZCBhbmltYXRpb25zLgorICAgICAgICBpZiAoY29udGV4dC51c2VDb3VudGVy
KCkpCisgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291bnRlcjo6
UXVvdGVkQW5pbWF0aW9uTmFtZSk7CisKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRv
a2VuID0gcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgaWYgKGVx
dWFsSWdub3JpbmdBU0NJSUNhc2UodG9rZW4udmFsdWUoKSwgIm5vbmUiKSkKKyAgICAgICAgICAg
IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUp
OworICAgICAgICByZXR1cm4gQ1NTQ3VzdG9tSWRlbnRWYWx1ZTo6Y3JlYXRlKHRva2VuLnZhbHVl
KCkudG9TdHJpbmcoKSk7CisgICAgfQorCisgICAgcmV0dXJuIGNvbnN1bWVDdXN0b21JZGVudChy
YW5nZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVRyYW5zaXRpb25Qcm9wZXJ0eShD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYg
dG9rZW4gPSByYW5nZS5wZWVrKCk7CisgICAgaWYgKHRva2VuLnR5cGUoKSAhPSBJZGVudFRva2Vu
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAodG9rZW4uaWQoKSA9PSBDU1NWYWx1
ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgaWYgKENT
U1Byb3BlcnR5SUQgcHJvcGVydHkgPSB0b2tlbi5wYXJzZUFzVW5yZXNvbHZlZENTU1Byb3BlcnR5
SUQoKSkgeworICAgICAgICBBU1NFUlQoQ1NTUHJvcGVydHlNZXRhZGF0YTo6aXNFbmFibGVkUHJv
cGVydHkocHJvcGVydHkpKTsKKyAgICAgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3Bh
Y2UoKTsKKyAgICAgICAgcmV0dXJuIENTU0N1c3RvbUlkZW50VmFsdWU6OmNyZWF0ZShwcm9wZXJ0
eSk7CisgICAgfQorICAgIHJldHVybiBjb25zdW1lQ3VzdG9tSWRlbnQocmFuZ2UpOworfQorCitz
dGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVTdGVwcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkK
K3sKKyAgICBBU1NFUlQocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZVN0ZXBz
KTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlQ29weSA9IHJhbmdlOworICAgIENTU1Bh
cnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZUNvcHkpOworCisgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHN0ZXBzID0gY29uc3VtZVBvc2l0aXZlSW50ZWdlcihhcmdzKTsK
KyAgICBpZiAoIXN0ZXBzKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFN0ZXBzVGlt
aW5nRnVuY3Rpb246OlN0ZXBQb3NpdGlvbiBwb3NpdGlvbiA9IFN0ZXBzVGltaW5nRnVuY3Rpb246
OlN0ZXBQb3NpdGlvbjo6RU5EOworICAgIGlmIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNw
YWNlKGFyZ3MpKSB7CisgICAgICAgIHN3aXRjaCAoYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVz
cGFjZSgpLmlkKCkpIHsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZU1pZGRsZToKKyAgICAgICAgICAg
IGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2ViQW5pbWF0aW9uc0FQSUVuYWJsZWQoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHBvc2l0aW9uID0g
U3RlcHNUaW1pbmdGdW5jdGlvbjo6U3RlcFBvc2l0aW9uOjpNSURETEU7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVN0YXJ0OgorICAgICAgICAgICAgcG9zaXRpb24g
PSBTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVwUG9zaXRpb246OlNUQVJUOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVFbmQ6CisgICAgICAgICAgICBwb3NpdGlvbiA9
IFN0ZXBzVGltaW5nRnVuY3Rpb246OlN0ZXBQb3NpdGlvbjo6RU5EOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGlmICghYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIHJhbmdlID0gcmFuZ2VDb3B5OworICAgIHJldHVybiBDU1NTdGVwc1RpbWlu
Z0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShzdGVwcy0+Z2V0SW50VmFsdWUoKSwgcG9zaXRpb24pOwor
fQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDdWJpY0JlemllcihDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSkKK3sKKyAgICBBU1NFUlQocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBD
U1NWYWx1ZUN1YmljQmV6aWVyKTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlQ29weSA9
IHJhbmdlOworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihy
YW5nZUNvcHkpOworCisgICAgZG91YmxlIHgxLCB5MSwgeDIsIHkyOworICAgIGlmIChjb25zdW1l
TnVtYmVyUmF3KGFyZ3MsIHgxKQorICAgICAgICAmJiB4MSA+PSAwICYmIHgxIDw9IDEKKyAgICAg
ICAgJiYgY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKQorICAgICAgICAmJiBj
b25zdW1lTnVtYmVyUmF3KGFyZ3MsIHkxKQorICAgICAgICAmJiBjb25zdW1lQ29tbWFJbmNsdWRp
bmdXaGl0ZXNwYWNlKGFyZ3MpCisgICAgICAgICYmIGNvbnN1bWVOdW1iZXJSYXcoYXJncywgeDIp
CisgICAgICAgICYmIHgyID49IDAgJiYgeDIgPD0gMQorICAgICAgICAmJiBjb25zdW1lQ29tbWFJ
bmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpCisgICAgICAgICYmIGNvbnN1bWVOdW1iZXJSYXcoYXJn
cywgeTIpCisgICAgICAgICYmIGFyZ3MuYXRFbmQoKSkgeworICAgICAgICByYW5nZSA9IHJhbmdl
Q29weTsKKyAgICAgICAgcmV0dXJuIENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6
Y3JlYXRlKHgxLCB5MSwgeDIsIHkyKTsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
Kworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24oQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWso
KS5pZCgpOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZUVhc2UgfHwgaWQgPT0gQ1NTVmFsdWVMaW5l
YXIgfHwgaWQgPT0gQ1NTVmFsdWVFYXNlSW4KKyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVFYXNl
T3V0IHx8IGlkID09IENTU1ZhbHVlRWFzZUluT3V0IHx8IGlkID09IENTU1ZhbHVlU3RlcFN0YXJ0
CisgICAgICAgIHx8IGlkID09IENTU1ZhbHVlU3RlcEVuZCB8fCBpZCA9PSBDU1NWYWx1ZVN0ZXBN
aWRkbGUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgQ1NTVmFs
dWVJRCBmdW5jdGlvbiA9IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCk7CisgICAgaWYgKGZ1bmN0
aW9uID09IENTU1ZhbHVlU3RlcHMpCisgICAgICAgIHJldHVybiBjb25zdW1lU3RlcHMocmFuZ2Up
OworICAgIGlmIChmdW5jdGlvbiA9PSBDU1NWYWx1ZUN1YmljQmV6aWVyKQorICAgICAgICByZXR1
cm4gY29uc3VtZUN1YmljQmV6aWVyKHJhbmdlKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
c3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQW5pbWF0aW9uVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQm
IGNvbnRleHQsIGJvb2wgdXNlTGVnYWN5UGFyc2luZykKK3sKKyAgICBzd2l0Y2ggKHByb3BlcnR5
KSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkRlbGF5OgorICAgIGNhc2UgQ1NTUHJv
cGVydHlUcmFuc2l0aW9uRGVsYXk6CisgICAgICAgIHJldHVybiBjb25zdW1lVGltZShyYW5nZSwg
VmFsdWVSYW5nZUFsbCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkRpcmVjdGlvbjoK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudDxDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVBbHRl
cm5hdGUsIENTU1ZhbHVlUmV2ZXJzZSwgQ1NTVmFsdWVBbHRlcm5hdGVSZXZlcnNlPihyYW5nZSk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkR1cmF0aW9uOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlUcmFuc2l0aW9uRHVyYXRpb246CisgICAgICAgIHJldHVybiBjb25zdW1lVGltZShyYW5n
ZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9u
RmlsbE1vZGU6CisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVOb25lLCBDU1NW
YWx1ZUZvcndhcmRzLCBDU1NWYWx1ZUJhY2t3YXJkcywgQ1NTVmFsdWVCb3RoPihyYW5nZSk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OgorICAgICAgICByZXR1
cm4gY29uc3VtZUFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50KHJhbmdlKTsKKyAgICBjYXNlIENTU1By
b3BlcnR5QW5pbWF0aW9uTmFtZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVBbmltYXRpb25OYW1l
KHJhbmdlLCBjb250ZXh0LCB1c2VMZWdhY3lQYXJzaW5nKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
QW5pbWF0aW9uUGxheVN0YXRlOgorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVl
UnVubmluZywgQ1NTVmFsdWVQYXVzZWQ+KHJhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5VHJh
bnNpdGlvblByb3BlcnR5OgorICAgICAgICByZXR1cm4gY29uc3VtZVRyYW5zaXRpb25Qcm9wZXJ0
eShyYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb246CisgICAgICAgIHJl
dHVybiBjb25zdW1lQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24ocmFuZ2UpOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9Cit9CisKK3N0YXRpYyBib29sIGlzVmFsaWRBbmltYXRpb25Qcm9wZXJ0eUxpc3QoQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgQ1NTVmFsdWVMaXN0JiB2YWx1ZUxpc3QpCit7Cisg
ICAgaWYgKHByb3BlcnR5ICE9IENTU1Byb3BlcnR5VHJhbnNpdGlvblByb3BlcnR5IHx8IHZhbHVl
TGlzdC5sZW5ndGgoKSA8IDIpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGZvciAoYXV0byYg
dmFsdWUgOiB2YWx1ZUxpc3QpIHsKKyAgICAgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkgJiYgdG9DU1NQcmltaXRpdmVWYWx1ZSgqdmFsdWUpLmlzVmFsdWVJRCgpCisgICAgICAgICAg
ICAmJiB0b0NTU1ByaW1pdGl2ZVZhbHVlKCp2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVl
Tm9uZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3N0YXRpYyBDU1NWYWx1ZUxpc3QqIGNvbnN1bWVBbmltYXRpb25Qcm9wZXJ0eUxpc3Qo
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0
IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIGJvb2wgdXNlTGVnYWN5UGFyc2luZykKK3sKKyAg
ICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVk
KCk7CisgICAgZG8geworICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBjb25zdW1lQW5pbWF0aW9u
VmFsdWUocHJvcGVydHksIHJhbmdlLCBjb250ZXh0LCB1c2VMZWdhY3lQYXJzaW5nKTsKKyAgICAg
ICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBsaXN0
LT5hcHBlbmQoKnZhbHVlKTsKKyAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0
ZXNwYWNlKHJhbmdlKSk7CisgICAgaWYgKCFpc1ZhbGlkQW5pbWF0aW9uUHJvcGVydHlMaXN0KHBy
b3BlcnR5LCAqbGlzdCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIEFTU0VSVChsaXN0
LT5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJz
ZXI6OmNvbnN1bWVBbmltYXRpb25TaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFu
ZCYgc2hvcnRoYW5kLCBib29sIHVzZUxlZ2FjeVBhcnNpbmcsIGJvb2wgaW1wb3J0YW50KQorewor
ICAgIGNvbnN0IHVuc2lnbmVkIGxvbmdoYW5kQ291bnQgPSBzaG9ydGhhbmQubGVuZ3RoKCk7Cisg
ICAgQ1NTVmFsdWVMaXN0KiBsb25naGFuZHNbOF07CisgICAgQVNTRVJUKGxvbmdoYW5kQ291bnQg
PD0gOCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsb25naGFuZENvdW50OyArK2kpCisg
ICAgICAgIGxvbmdoYW5kc1tpXSA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQo
KTsKKworICAgIGRvIHsKKyAgICAgICAgYm9vbCBwYXJzZWRMb25naGFuZFs4XSA9IHsgZmFsc2Ug
fTsKKyAgICAgICAgZG8geworICAgICAgICAgICAgYm9vbCBmb3VuZFByb3BlcnR5ID0gZmFsc2U7
CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxvbmdoYW5kQ291bnQ7ICsraSkg
eworICAgICAgICAgICAgICAgIGlmIChwYXJzZWRMb25naGFuZFtpXSkKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBpZiAoQ1NTVmFsdWUqIHZhbHVlID0g
Y29uc3VtZUFuaW1hdGlvblZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV0sIG1fcmFuZ2Us
IG1fY29udGV4dCwgdXNlTGVnYWN5UGFyc2luZykpIHsKKyAgICAgICAgICAgICAgICAgICAgcGFy
c2VkTG9uZ2hhbmRbaV0gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBmb3VuZFByb3BlcnR5
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgbG9uZ2hhbmRzW2ldLT5hcHBlbmQoKnZhbHVl
KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKCFmb3VuZFByb3BlcnR5KQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfSB3aGlsZSAoIW1fcmFuZ2UuYXRFbmQoKSAmJiBtX3Jh
bmdlLnBlZWsoKS50eXBlKCkgIT0gQ29tbWFUb2tlbik7CisKKyAgICAgICAgLy8gRklYTUU6IFRo
aXMgd2lsbCBtYWtlIGludmFsaWQgbG9uZ2hhbmRzLCBzZWUgY3JidWcuY29tLzM4NjQ1OQorICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxvbmdoYW5kQ291bnQ7ICsraSkgeworICAgICAg
ICAgICAgaWYgKCFwYXJzZWRMb25naGFuZFtpXSkKKyAgICAgICAgICAgICAgICBsb25naGFuZHNb
aV0tPmFwcGVuZCgqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpKTsKKyAg
ICAgICAgICAgIHBhcnNlZExvbmdoYW5kW2ldID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9IHdo
aWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKG1fcmFuZ2UpKTsKKworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbG9uZ2hhbmRDb3VudDsgKytpKSB7CisgICAgICAgIGlmICgh
aXNWYWxpZEFuaW1hdGlvblByb3BlcnR5TGlzdChzaG9ydGhhbmQucHJvcGVydGllcygpW2ldLCAq
bG9uZ2hhbmRzW2ldKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGxvbmdoYW5kQ291bnQ7ICsraSkKKyAgICAgICAgYWRkUHJv
cGVydHkoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSwgc2hvcnRoYW5kLmlkKCksICpsb25naGFu
ZHNbaV0sIGltcG9ydGFudCk7CisKKyAgICByZXR1cm4gbV9yYW5nZS5hdEVuZCgpOworfQorCitz
dGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVaSW5kZXgoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Up
Cit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAg
cmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVJbnRlZ2VyKHJh
bmdlKTsKK30KKworc3RhdGljIENTU1NoYWRvd1ZhbHVlKiBwYXJzZVNpbmdsZVNoYWRvdyhDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBib29s
IGFsbG93SW5zZXQsIGJvb2wgYWxsb3dTcHJlYWQpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHN0eWxlID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogY29sb3IgPSBudWxscHRyOworCisgICAg
aWYgKHJhbmdlLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChyYW5n
ZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUluc2V0KSB7CisgICAgICAgIGlmICghYWxsb3dJbnNl
dCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBzdHlsZSA9IGNvbnN1bWVJ
ZGVudChyYW5nZSk7CisgICAgfQorICAgIGNvbG9yID0gY29uc3VtZUNvbG9yKHJhbmdlLCBjc3NQ
YXJzZXJNb2RlKTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBob3Jpem9udGFsT2Zmc2V0ID0g
Y29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAg
aWYgKCFob3Jpem9udGFsT2Zmc2V0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiB2ZXJ0aWNhbE9mZnNldCA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNz
c1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgIGlmICghdmVydGljYWxPZmZzZXQpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGJsdXJSYWRp
dXMgPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsK
KyAgICBDU1NQcmltaXRpdmVWYWx1ZSogc3ByZWFkRGlzdGFuY2UgPSBudWxscHRyOworICAgIGlm
IChibHVyUmFkaXVzKSB7CisgICAgICAgIC8vIEJsdXIgcmFkaXVzIG11c3QgYmUgbm9uLW5lZ2F0
aXZlLgorICAgICAgICBpZiAoYmx1clJhZGl1cy0+Z2V0RG91YmxlVmFsdWUoKSA8IDApCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKGFsbG93U3ByZWFkKQorICAgICAg
ICAgICAgc3ByZWFkRGlzdGFuY2UgPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2Rl
LCBWYWx1ZVJhbmdlQWxsKTsKKyAgICB9CisKKyAgICBpZiAoIXJhbmdlLmF0RW5kKCkpIHsKKyAg
ICAgICAgaWYgKCFjb2xvcikKKyAgICAgICAgICAgIGNvbG9yID0gY29uc3VtZUNvbG9yKHJhbmdl
LCBjc3NQYXJzZXJNb2RlKTsKKyAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1Zh
bHVlSW5zZXQpIHsKKyAgICAgICAgICAgIGlmICghYWxsb3dJbnNldCB8fCBzdHlsZSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHN0eWxlID0gY29uc3VtZUlk
ZW50KHJhbmdlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gQ1NTU2hhZG93VmFsdWU6
OmNyZWF0ZShob3Jpem9udGFsT2Zmc2V0LCB2ZXJ0aWNhbE9mZnNldCwgYmx1clJhZGl1cywKKyAg
ICAgICAgc3ByZWFkRGlzdGFuY2UsIHN0eWxlLCBjb2xvcik7Cit9CisKK3N0YXRpYyBDU1NWYWx1
ZSogY29uc3VtZVNoYWRvdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlLCBib29sIGlzQm94U2hhZG93UHJvcGVydHkpCit7CisgICAgaWYgKHJh
bmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJ
ZGVudChyYW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIHNoYWRvd1ZhbHVlTGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICBkbyB7CisgICAgICAgIGlmIChD
U1NTaGFkb3dWYWx1ZSogc2hhZG93VmFsdWUgPSBwYXJzZVNpbmdsZVNoYWRvdyhyYW5nZSwgY3Nz
UGFyc2VyTW9kZSwgaXNCb3hTaGFkb3dQcm9wZXJ0eSwgaXNCb3hTaGFkb3dQcm9wZXJ0eSkpCisg
ICAgICAgICAgICBzaGFkb3dWYWx1ZUxpc3QtPmFwcGVuZCgqc2hhZG93VmFsdWUpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9IHdoaWxlIChjb25zdW1l
Q29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSk7CisgICAgcmV0dXJuIHNoYWRvd1ZhbHVl
TGlzdDsKK30KKworc3RhdGljIENTU0Z1bmN0aW9uVmFsdWUqIGNvbnN1bWVGaWx0ZXJGdW5jdGlv
bihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29u
dGV4dCkKK3sKKyAgICBDU1NWYWx1ZUlEIGZpbHRlclR5cGUgPSByYW5nZS5wZWVrKCkuZnVuY3Rp
b25JZCgpOworICAgIGlmIChmaWx0ZXJUeXBlIDwgQ1NTVmFsdWVJbnZlcnQgfHwgZmlsdGVyVHlw
ZSA+IENTU1ZhbHVlRHJvcFNoYWRvdykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NT
UGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlKTsKKyAgICBDU1NG
dW5jdGlvblZhbHVlKiBmaWx0ZXJWYWx1ZSA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmaWx0
ZXJUeXBlKTsKKyAgICBDU1NWYWx1ZSogcGFyc2VkVmFsdWUgPSBudWxscHRyOworCisgICAgaWYg
KGZpbHRlclR5cGUgPT0gQ1NTVmFsdWVEcm9wU2hhZG93KSB7CisgICAgICAgIHBhcnNlZFZhbHVl
ID0gcGFyc2VTaW5nbGVTaGFkb3coYXJncywgY29udGV4dC5tb2RlKCksIGZhbHNlLCBmYWxzZSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGFyZ3MuYXRFbmQoKSkgeworICAgICAgICAgICAg
aWYgKGNvbnRleHQudXNlQ291bnRlcigpKQorICAgICAgICAgICAgICAgIGNvbnRleHQudXNlQ291
bnRlcigpLT5jb3VudChVc2VDb3VudGVyOjpDU1NGaWx0ZXJGdW5jdGlvbk5vQXJndW1lbnRzKTsK
KyAgICAgICAgICAgIHJldHVybiBmaWx0ZXJWYWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
ZmlsdGVyVHlwZSA9PSBDU1NWYWx1ZUJyaWdodG5lc3MpIHsKKyAgICAgICAgICAgIC8vIEZJWE1F
IChjcmJ1Zy5jb20vMzk3MDYxKTogU3VwcG9ydCBjYWxjIGV4cHJlc3Npb25zIGxpa2UgY2FsYygx
MCUgKyAwLjUpCisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVQZXJjZW50KGFyZ3Ms
IFZhbHVlUmFuZ2VBbGwpOworICAgICAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkKKyAgICAgICAg
ICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7
CisgICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyVHlwZSA9PSBDU1NWYWx1ZUh1ZVJvdGF0ZSkgewor
ICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lQW5nbGUoYXJncyk7CisgICAgICAgIH0g
ZWxzZSBpZiAoZmlsdGVyVHlwZSA9PSBDU1NWYWx1ZUJsdXIpIHsKKyAgICAgICAgICAgIHBhcnNl
ZFZhbHVlID0gY29uc3VtZUxlbmd0aChhcmdzLCBIVE1MU3RhbmRhcmRNb2RlLCBWYWx1ZVJhbmdl
Tm9uTmVnYXRpdmUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gRklYTUUgKGNy
YnVnLmNvbS8zOTcwNjEpOiBTdXBwb3J0IGNhbGMgZXhwcmVzc2lvbnMgbGlrZSBjYWxjKDEwJSAr
IDAuNSkKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZVBlcmNlbnQoYXJncywgVmFs
dWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAg
ICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lTnVtYmVyKGFyZ3MsIFZhbHVlUmFuZ2VO
b25OZWdhdGl2ZSk7CisgICAgICAgICAgICBpZiAocGFyc2VkVmFsdWUgJiYgZmlsdGVyVHlwZSAh
PSBDU1NWYWx1ZVNhdHVyYXRlICYmIGZpbHRlclR5cGUgIT0gQ1NTVmFsdWVDb250cmFzdCkgewor
ICAgICAgICAgICAgICAgIGJvb2wgaXNQZXJjZW50YWdlID0gdG9DU1NQcmltaXRpdmVWYWx1ZShw
YXJzZWRWYWx1ZSktPmlzUGVyY2VudGFnZSgpOworICAgICAgICAgICAgICAgIGRvdWJsZSBtYXhB
bGxvd2VkID0gaXNQZXJjZW50YWdlID8gMTAwLjAgOiAxLjA7CisgICAgICAgICAgICAgICAgaWYg
KHRvQ1NTUHJpbWl0aXZlVmFsdWUocGFyc2VkVmFsdWUpLT5nZXREb3VibGVWYWx1ZSgpID4gbWF4
QWxsb3dlZCkgeworICAgICAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUoCisgICAgICAgICAgICAgICAgICAgICAgICBtYXhBbGxvd2VkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgaXNQZXJjZW50YWdlID8gQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlOjpQZXJjZW50YWdlIDogQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpOdW1iZXIp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAg
ICBpZiAoIXBhcnNlZFZhbHVlIHx8ICFhcmdzLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIGZpbHRlclZhbHVlLT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICByZXR1cm4g
ZmlsdGVyVmFsdWU7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUZpbHRlcihDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sK
KyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1
cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBkbyB7CisgICAgICAgIENTU1Zh
bHVlKiBmaWx0ZXJWYWx1ZSA9IGNvbnN1bWVVcmwocmFuZ2UpOworICAgICAgICBpZiAoIWZpbHRl
clZhbHVlKSB7CisgICAgICAgICAgICBmaWx0ZXJWYWx1ZSA9IGNvbnN1bWVGaWx0ZXJGdW5jdGlv
bihyYW5nZSwgY29udGV4dCk7CisgICAgICAgICAgICBpZiAoIWZpbHRlclZhbHVlKQorICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIGxpc3QtPmFwcGVu
ZCgqZmlsdGVyVmFsdWUpOworICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgpKTsKKyAgICByZXR1
cm4gbGlzdDsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lVGV4dERlY29yYXRpb25MaW5l
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5n
ZS5wZWVrKCkuaWQoKTsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1
cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSogaWRlbnQgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVCbGlu
aywgQ1NTVmFsdWVVbmRlcmxpbmUsIENTU1ZhbHVlT3ZlcmxpbmUsIENTU1ZhbHVlTGluZVRocm91
Z2g+KHJhbmdlKTsKKyAgICAgICAgaWYgKCFpZGVudCkKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBpZiAobGlzdC0+aGFzVmFsdWUoKmlkZW50KSkKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICBsaXN0LT5hcHBlbmQoKmlkZW50KTsKKyAgICB9CisKKyAgICBpZiAoIWxp
c3QtPmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbGlzdDsK
K30KKworLy8gbm9uZSB8IHN0cmljdCB8IGNvbnRlbnQgfCBbIGxheW91dCB8fCBzdHlsZSB8fCBw
YWludCB8fCBzaXplIF0KK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUNvbnRhaW4oQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5p
ZCgpOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1l
SWRlbnQocmFuZ2UpOworCisgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0Ojpj
cmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZVN0cmljdCB8fCBp
ZCA9PSBDU1NWYWx1ZUNvbnRlbnQpIHsKKyAgICAgICAgbGlzdC0+YXBwZW5kKCpjb25zdW1lSWRl
bnQocmFuZ2UpKTsKKyAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgfQorICAgIHdoaWxlICh0cnVl
KSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBpZGVudCA9IGNvbnN1bWVJZGVudDxDU1NW
YWx1ZVBhaW50LCBDU1NWYWx1ZUxheW91dCwgQ1NTVmFsdWVTdHlsZSwgQ1NTVmFsdWVTaXplPihy
YW5nZSk7CisgICAgICAgIGlmICghaWRlbnQpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
aWYgKGxpc3QtPmhhc1ZhbHVlKCppZGVudCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgbGlzdC0+YXBwZW5kKCppZGVudCk7CisgICAgfQorCisgICAgaWYgKCFsaXN0LT5s
ZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisK
K3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVBhdGgoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Up
Cit7CisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciA8dXJsPiwgPGJhc2ljLXNoYXBlPiwg
PGdlb21ldHJ5LWJveD4uCisgICAgaWYgKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgIT0gQ1NT
VmFsdWVQYXRoKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENTU1BhcnNlclRva2Vu
UmFuZ2UgZnVuY3Rpb25SYW5nZSA9IHJhbmdlOworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgZnVu
Y3Rpb25BcmdzID0gY29uc3VtZUZ1bmN0aW9uKGZ1bmN0aW9uUmFuZ2UpOworCisgICAgaWYgKGZ1
bmN0aW9uQXJncy5wZWVrKCkudHlwZSgpICE9IFN0cmluZ1Rva2VuKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBTdHJpbmcgcGF0aFN0cmluZyA9IGZ1bmN0aW9uQXJncy5jb25zdW1lSW5j
bHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVlKCkudG9TdHJpbmcoKTsKKworICAgIHN0ZDo6dW5pcXVl
X3B0cjxTVkdQYXRoQnl0ZVN0cmVhbT4gYnl0ZVN0cmVhbSA9IFNWR1BhdGhCeXRlU3RyZWFtOjpj
cmVhdGUoKTsKKyAgICBpZiAoYnVpbGRCeXRlU3RyZWFtRnJvbVN0cmluZyhwYXRoU3RyaW5nLCAq
Ynl0ZVN0cmVhbSkgIT0gU1ZHUGFyc2VTdGF0dXM6Ok5vRXJyb3IKKyAgICAgICAgfHwgIWZ1bmN0
aW9uQXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJhbmdlID0g
ZnVuY3Rpb25SYW5nZTsKKyAgICBpZiAoYnl0ZVN0cmVhbS0+aXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKTsK
KyAgICByZXR1cm4gQ1NTUGF0aFZhbHVlOjpjcmVhdGUoc3RkOjptb3ZlKGJ5dGVTdHJlYW0pKTsK
K30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lUGF0aE9yTm9uZShDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSkKK3sKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7Cisg
ICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChy
YW5nZSk7CisKKyAgICByZXR1cm4gY29uc3VtZVBhdGgocmFuZ2UpOworfQorCitzdGF0aWMgQ1NT
VmFsdWUqIGNvbnN1bWVNb3Rpb25Sb3RhdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkK
K3sKKyAgICBDU1NWYWx1ZSogYW5nbGUgPSBjb25zdW1lQW5nbGUocmFuZ2UpOworICAgIENTU1Zh
bHVlKiBrZXl3b3JkID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVSZXZlcnNl
PihyYW5nZSk7CisgICAgaWYgKCFhbmdsZSAmJiAha2V5d29yZCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBpZiAoIWFuZ2xlKQorICAgICAgICBhbmdsZSA9IGNvbnN1bWVBbmdsZShy
YW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNw
YWNlU2VwYXJhdGVkKCk7CisgICAgaWYgKGtleXdvcmQpCisgICAgICAgIGxpc3QtPmFwcGVuZCgq
a2V5d29yZCk7CisgICAgaWYgKGFuZ2xlKQorICAgICAgICBsaXN0LT5hcHBlbmQoKmFuZ2xlKTsK
KyAgICByZXR1cm4gbGlzdDsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lVGV4dEVtcGhh
c2lzU3R5bGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTVmFsdWVJRCBp
ZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUpCisgICAg
ICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgaWYgKENTU1ZhbHVlKiB0ZXh0
RW1waGFzaXNTdHlsZSA9IGNvbnN1bWVTdHJpbmcocmFuZ2UpKQorICAgICAgICByZXR1cm4gdGV4
dEVtcGhhc2lzU3R5bGU7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogZmlsbCA9IGNvbnN1bWVJ
ZGVudDxDU1NWYWx1ZUZpbGxlZCwgQ1NTVmFsdWVPcGVuPihyYW5nZSk7CisgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHNoYXBlID0gY29uc3VtZUlkZW50PENTU1ZhbHVlRG90LCBDU1NWYWx1ZUNpcmNs
ZSwgQ1NTVmFsdWVEb3VibGVDaXJjbGUsIENTU1ZhbHVlVHJpYW5nbGUsIENTU1ZhbHVlU2VzYW1l
PihyYW5nZSk7CisgICAgaWYgKCFmaWxsKQorICAgICAgICBmaWxsID0gY29uc3VtZUlkZW50PENT
U1ZhbHVlRmlsbGVkLCBDU1NWYWx1ZU9wZW4+KHJhbmdlKTsKKyAgICBpZiAoZmlsbCAmJiBzaGFw
ZSkgeworICAgICAgICBDU1NWYWx1ZUxpc3QqIHBhcnNlZFZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6
Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgcGFyc2VkVmFsdWVzLT5hcHBlbmQoKmZp
bGwpOworICAgICAgICBwYXJzZWRWYWx1ZXMtPmFwcGVuZCgqc2hhcGUpOworICAgICAgICByZXR1
cm4gcGFyc2VkVmFsdWVzOworICAgIH0KKyAgICBpZiAoZmlsbCkKKyAgICAgICAgcmV0dXJuIGZp
bGw7CisgICAgaWYgKHNoYXBlKQorICAgICAgICByZXR1cm4gc2hhcGU7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZU91dGxpbmVDb2xvcihDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAg
IC8vIEFsbG93IHRoZSBzcGVjaWFsIGZvY3VzIGNvbG9yIGV2ZW4gaW4gSFRNTCBTdGFuZGFyZCBw
YXJzaW5nIG1vZGUuCisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlV2Via2l0
Rm9jdXNSaW5nQ29sb3IpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAg
IHJldHVybiBjb25zdW1lQ29sb3IocmFuZ2UsIGNzc1BhcnNlck1vZGUpOworfQorCitzdGF0aWMg
Q1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVMaW5lV2lkdGgoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVz
cykKK3sKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgaWYgKGlk
ID09IENTU1ZhbHVlVGhpbiB8fCBpZCA9PSBDU1NWYWx1ZU1lZGl1bSB8fCBpZCA9PSBDU1NWYWx1
ZVRoaWNrKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4g
Y29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZl
LCB1bml0bGVzcyk7Cit9CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUJvcmRl
cldpZHRoKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNl
ck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCit7CisgICAgcmV0dXJuIGNvbnN1bWVMaW5l
V2lkdGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKTsKK30KKworc3RhdGljIENTU1By
aW1pdGl2ZVZhbHVlKiBjb25zdW1lVGV4dFN0cm9rZVdpZHRoKENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgcmV0dXJuIGNvbnN1
bWVMaW5lV2lkdGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7
Cit9CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUNvbHVtblJ1bGVXaWR0aChD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQor
eworICAgIHJldHVybiBjb25zdW1lTGluZVdpZHRoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBVbml0
bGVzc1F1aXJrOjpGb3JiaWQpOworfQorCitzdGF0aWMgYm9vbCBjb25zdW1lVHJhbnNsYXRlM2Qo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBD
U1NGdW5jdGlvblZhbHVlKiYgdHJhbnNmb3JtVmFsdWUpCit7CisgICAgdW5zaWduZWQgbnVtYmVy
T2ZBcmd1bWVudHMgPSAyOworICAgIENTU1ZhbHVlKiBwYXJzZWRWYWx1ZSA9IG51bGxwdHI7Cisg
ICAgZG8geworICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJn
cywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGlmICghcGFyc2VkVmFs
dWUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5h
cHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdX
aGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gd2hpbGUg
KC0tbnVtYmVyT2ZBcmd1bWVudHMpOworICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUxlbmd0aChh
cmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBpZiAoIXBhcnNlZFZhbHVl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZCgqcGFy
c2VkVmFsdWUpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBjb25zdW1lTnVt
YmVycyhDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NGdW5jdGlvblZhbHVlKiYgdHJhbnNm
b3JtVmFsdWUsIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzKQoreworICAgIGRvIHsKKyAgICAg
ICAgQ1NTVmFsdWUqIHBhcnNlZFZhbHVlID0gY29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdl
QWxsKTsKKyAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZCgqcGFyc2VkVmFsdWUpOworICAgICAg
ICBpZiAoLS1udW1iZXJPZkFyZ3VtZW50cyAmJiAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVz
cGFjZShhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IHdoaWxlIChudW1i
ZXJPZkFyZ3VtZW50cyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGNvbnN1
bWVQZXJzcGVjdGl2ZShDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJNb2RlIGNz
c1BhcnNlck1vZGUsIENTU0Z1bmN0aW9uVmFsdWUqJiB0cmFuc2Zvcm1WYWx1ZSwgYm9vbCB1c2VM
ZWdhY3lQYXJzaW5nKQoreworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwYXJzZWRWYWx1ZSA9IGNv
bnN1bWVMZW5ndGgoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsK
KyAgICBpZiAoIXBhcnNlZFZhbHVlICYmIHVzZUxlZ2FjeVBhcnNpbmcpIHsKKyAgICAgICAgZG91
YmxlIHBlcnNwZWN0aXZlOworICAgICAgICBpZiAoIWNvbnN1bWVOdW1iZXJSYXcoYXJncywgcGVy
c3BlY3RpdmUpIHx8IHBlcnNwZWN0aXZlIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgcGFyc2VkVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHBlcnNwZWN0
aXZlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBpeGVscyk7CisgICAgfQorICAgIGlm
ICghcGFyc2VkVmFsdWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB0cmFuc2Zvcm1WYWx1
ZS0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBD
U1NWYWx1ZSogY29uc3VtZVRyYW5zZm9ybVZhbHVlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIGJvb2wgdXNlTGVnYWN5UGFyc2luZykKK3sK
KyAgICBDU1NWYWx1ZUlEIGZ1bmN0aW9uSWQgPSByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpOwor
ICAgIGlmIChmdW5jdGlvbklkID09IENTU1ZhbHVlSW52YWxpZCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJh
bmdlKTsKKyAgICBpZiAoYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBDU1NGdW5jdGlvblZhbHVlKiB0cmFuc2Zvcm1WYWx1ZSA9IENTU0Z1bmN0aW9uVmFsdWU6OmNy
ZWF0ZShmdW5jdGlvbklkKTsKKyAgICBDU1NWYWx1ZSogcGFyc2VkVmFsdWUgPSBudWxscHRyOwor
ICAgIHN3aXRjaCAoZnVuY3Rpb25JZCkgeworICAgIGNhc2UgQ1NTVmFsdWVSb3RhdGU6CisgICAg
Y2FzZSBDU1NWYWx1ZVJvdGF0ZVg6CisgICAgY2FzZSBDU1NWYWx1ZVJvdGF0ZVk6CisgICAgY2Fz
ZSBDU1NWYWx1ZVJvdGF0ZVo6CisgICAgY2FzZSBDU1NWYWx1ZVNrZXdYOgorICAgIGNhc2UgQ1NT
VmFsdWVTa2V3WToKKyAgICBjYXNlIENTU1ZhbHVlU2tldzoKKyAgICAgICAgcGFyc2VkVmFsdWUg
PSBjb25zdW1lQW5nbGUoYXJncyk7CisgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKGZ1bmN0aW9uSWQgPT0gQ1NTVmFsdWVT
a2V3ICYmIGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpIHsKKyAgICAgICAg
ICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICAgICAgICAgIHBh
cnNlZFZhbHVlID0gY29uc3VtZUFuZ2xlKGFyZ3MpOworICAgICAgICAgICAgaWYgKCFwYXJzZWRW
YWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlU2NhbGVYOgorICAgIGNhc2UgQ1NTVmFsdWVTY2Fs
ZVk6CisgICAgY2FzZSBDU1NWYWx1ZVNjYWxlWjoKKyAgICBjYXNlIENTU1ZhbHVlU2NhbGU6Cisg
ICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdlQWxsKTsK
KyAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICBpZiAoZnVuY3Rpb25JZCA9PSBDU1NWYWx1ZVNjYWxlICYmIGNvbnN1bWVDb21tYUlu
Y2x1ZGluZ1doaXRlc3BhY2UoYXJncykpIHsKKyAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5h
cHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZU51
bWJlcihhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VkVmFsdWUp
CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDU1NWYWx1ZVBlcnNwZWN0aXZlOgorICAgICAgICBpZiAoIWNvbnN1bWVQ
ZXJzcGVjdGl2ZShhcmdzLCBjc3NQYXJzZXJNb2RlLCB0cmFuc2Zvcm1WYWx1ZSwgdXNlTGVnYWN5
UGFyc2luZykpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBDU1NWYWx1ZVRyYW5zbGF0ZVg6CisgICAgY2FzZSBDU1NWYWx1ZVRyYW5zbGF0ZVk6
CisgICAgY2FzZSBDU1NWYWx1ZVRyYW5zbGF0ZToKKyAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25z
dW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOwor
ICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIGlmIChmdW5jdGlvbklkID09IENTU1ZhbHVlVHJhbnNsYXRlICYmIGNvbnN1bWVDb21t
YUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpIHsKKyAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVl
LT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3Vt
ZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAg
ICAgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZVRyYW5zbGF0
ZVo6CisgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUxlbmd0aChhcmdzLCBjc3NQYXJzZXJN
b2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZU1h
dHJpeDoKKyAgICBjYXNlIENTU1ZhbHVlTWF0cml4M2Q6CisgICAgICAgIGlmICghY29uc3VtZU51
bWJlcnMoYXJncywgdHJhbnNmb3JtVmFsdWUsIChmdW5jdGlvbklkID09IENTU1ZhbHVlTWF0cml4
M2QpID8gMTYgOiA2KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIENTU1ZhbHVlU2NhbGUzZDoKKyAgICAgICAgaWYgKCFjb25zdW1lTnVtYmVy
cyhhcmdzLCB0cmFuc2Zvcm1WYWx1ZSwgMykpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZVJvdGF0ZTNkOgorICAgICAgICBpZiAo
IWNvbnN1bWVOdW1iZXJzKGFyZ3MsIHRyYW5zZm9ybVZhbHVlLCAzKSB8fCAhY29uc3VtZUNvbW1h
SW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVBbmdsZShhcmdzKTsKKyAgICAgICAgaWYgKCFw
YXJzZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIENTU1ZhbHVlVHJhbnNsYXRlM2Q6CisgICAgICAgIGlmICghY29uc3VtZVRyYW5z
bGF0ZTNkKGFyZ3MsIGNzc1BhcnNlck1vZGUsIHRyYW5zZm9ybVZhbHVlKSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgaWYgKHBhcnNlZFZhbHVlKQorICAgICAgICB0cmFu
c2Zvcm1WYWx1ZS0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAgaWYgKCFhcmdzLmF0RW5kKCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiB0cmFuc2Zvcm1WYWx1ZTsKK30K
Kworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lVHJhbnNmb3JtKENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIGJvb2wgdXNlTGVnYWN5UGFyc2lu
ZykKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAg
ICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBkbyB7CisgICAgICAg
IENTU1ZhbHVlKiBwYXJzZWRUcmFuc2Zvcm1WYWx1ZSA9IGNvbnN1bWVUcmFuc2Zvcm1WYWx1ZShy
YW5nZSwgY3NzUGFyc2VyTW9kZSwgdXNlTGVnYWN5UGFyc2luZyk7CisgICAgICAgIGlmICghcGFy
c2VkVHJhbnNmb3JtVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
bGlzdC0+YXBwZW5kKCpwYXJzZWRUcmFuc2Zvcm1WYWx1ZSk7CisgICAgfSB3aGlsZSAoIXJhbmdl
LmF0RW5kKCkpOworCisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3RlbXBsYXRlIDxDU1NWYWx1ZUlE
IHN0YXJ0LCBDU1NWYWx1ZUlEIGVuZD4KK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVBvc2l0aW9u
TG9uZ2hhbmQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFy
c2VyTW9kZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBJZGVudFRva2VuKSB7
CisgICAgICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICAgICAgaW50
IHBlcmNlbnQ7CisgICAgICAgIGlmIChpZCA9PSBzdGFydCkKKyAgICAgICAgICAgIHBlcmNlbnQg
PSAwOworICAgICAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZUNlbnRlcikKKyAgICAgICAgICAg
IHBlcmNlbnQgPSA1MDsKKyAgICAgICAgZWxzZSBpZiAoaWQgPT0gZW5kKQorICAgICAgICAgICAg
cGVyY2VudCA9IDEwMDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHBlcmNlbnQsIENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZTo6UGVyY2VudGFnZSk7CisgICAgfQorICAgIHJldHVybiBjb25zdW1lTGVuZ3Ro
T3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKK30KKworc3Rh
dGljIENTU1ZhbHVlKiBjb25zdW1lUG9zaXRpb25YKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgcmV0dXJuIGNvbnN1bWVQb3Np
dGlvbkxvbmdoYW5kPENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodD4ocmFuZ2UsIGNzc1BhcnNl
ck1vZGUpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVQb3NpdGlvblkoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBy
ZXR1cm4gY29uc3VtZVBvc2l0aW9uTG9uZ2hhbmQ8Q1NTVmFsdWVUb3AsIENTU1ZhbHVlQm90dG9t
PihyYW5nZSwgY3NzUGFyc2VyTW9kZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVBh
aW50U3Ryb2tlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1Bh
cnNlck1vZGUpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgQ1NTVVJJVmFsdWUqIHVy
bCA9IGNvbnN1bWVVcmwocmFuZ2UpOworICAgIGlmICh1cmwpIHsKKyAgICAgICAgQ1NTVmFsdWUq
IHBhcnNlZFZhbHVlID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09
IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUlkZW50KHJh
bmdlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lQ29s
b3IocmFuZ2UsIGNzc1BhcnNlck1vZGUpOworICAgICAgICBpZiAocGFyc2VkVmFsdWUpIHsKKyAg
ICAgICAgICAgIENTU1ZhbHVlTGlzdCogdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFj
ZVNlcGFyYXRlZCgpOworICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoKnVybCk7CisgICAgICAg
ICAgICB2YWx1ZXMtPmFwcGVuZCgqcGFyc2VkVmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHZh
bHVlczsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdXJsOworICAgIH0KKyAgICByZXR1cm4g
Y29uc3VtZUNvbG9yKHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKK30KKworc3RhdGljIENTU1ZhbHVl
KiBjb25zdW1lUGFpbnRPcmRlcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBp
ZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb3JtYWwpCisgICAgICAgIHJldHVybiBj
b25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgVmVjdG9yPENTU1ZhbHVlSUQsIDM+IHBhaW50VHlw
ZUxpc3Q7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpbGwgPSBudWxscHRyOworICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBzdHJva2UgPSBudWxscHRyOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBt
YXJrZXJzID0gbnVsbHB0cjsKKyAgICBkbyB7CisgICAgICAgIENTU1ZhbHVlSUQgaWQgPSByYW5n
ZS5wZWVrKCkuaWQoKTsKKyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlRmlsbCAmJiAhZmlsbCkK
KyAgICAgICAgICAgIGZpbGwgPSBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgICAgICBlbHNlIGlm
IChpZCA9PSBDU1NWYWx1ZVN0cm9rZSAmJiAhc3Ryb2tlKQorICAgICAgICAgICAgc3Ryb2tlID0g
Y29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICAgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVNYXJr
ZXJzICYmICFtYXJrZXJzKQorICAgICAgICAgICAgbWFya2VycyA9IGNvbnN1bWVJZGVudChyYW5n
ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBw
YWludFR5cGVMaXN0LmFwcGVuZChpZCk7CisgICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpOwor
CisgICAgLy8gQWZ0ZXIgcGFyc2luZyB3ZSBzZXJpYWxpemUgdGhlIHBhaW50LW9yZGVyIGxpc3Qu
IFNpbmNlIGl0IGlzIG5vdCBwb3NzaWJsZSB0bworICAgIC8vIHBvcCBhIGxhc3QgbGlzdCBpdGVt
cyBmcm9tIENTU1ZhbHVlTGlzdCB3aXRob3V0IGJpZ2dlciBjb3N0LCB3ZSBjcmVhdGUgdGhlCisg
ICAgLy8gbGlzdCBhZnRlciBwYXJzaW5nLgorICAgIENTU1ZhbHVlSUQgZmlyc3RQYWludE9yZGVy
VHlwZSA9IHBhaW50VHlwZUxpc3QuYXQoMCk7CisgICAgQ1NTVmFsdWVMaXN0KiBwYWludE9yZGVy
TGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBzd2l0Y2gg
KGZpcnN0UGFpbnRPcmRlclR5cGUpIHsKKyAgICBjYXNlIENTU1ZhbHVlRmlsbDoKKyAgICBjYXNl
IENTU1ZhbHVlU3Ryb2tlOgorICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKGZpcnN0UGFp
bnRPcmRlclR5cGUgPT0gQ1NTVmFsdWVGaWxsID8gKmZpbGwgOiAqc3Ryb2tlKTsKKyAgICAgICAg
aWYgKHBhaW50VHlwZUxpc3Quc2l6ZSgpID4gMSkgeworICAgICAgICAgICAgaWYgKHBhaW50VHlw
ZUxpc3QuYXQoMSkgPT0gQ1NTVmFsdWVNYXJrZXJzKQorICAgICAgICAgICAgICAgIHBhaW50T3Jk
ZXJMaXN0LT5hcHBlbmQoKm1hcmtlcnMpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQ1NTVmFsdWVNYXJrZXJzOgorICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKCpt
YXJrZXJzKTsKKyAgICAgICAgaWYgKHBhaW50VHlwZUxpc3Quc2l6ZSgpID4gMSkgeworICAgICAg
ICAgICAgaWYgKHBhaW50VHlwZUxpc3QuYXQoMSkgPT0gQ1NTVmFsdWVTdHJva2UpCisgICAgICAg
ICAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZCgqc3Ryb2tlKTsKKyAgICAgICAgfQorICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICB9CisKKyAgICByZXR1cm4gcGFpbnRPcmRlckxpc3Q7Cit9CisKK3N0YXRpYyBDU1NWYWx1
ZSogY29uc3VtZU5vbmVPclVSSShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBp
ZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29u
c3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZVVybChyYW5nZSk7Cit9CisKK3N0
YXRpYyBDU1NWYWx1ZSogY29uc3VtZUZsZXhCYXNpcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIC8vIEZJWE1FOiBTdXBwb3J0
IGludHJpbnNpYyBkaW1lbnNpb25zIHRvby4KKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0g
Q1NTVmFsdWVBdXRvKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICBy
ZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVS
YW5nZU5vbk5lZ2F0aXZlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lU3Ryb2tlRGFz
aGFycmF5KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIENTU1ZhbHVlSUQgaWQg
PSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQorICAgICAg
ICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIENTU1ZhbHVlTGlzdCogZGFzaGVz
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgIGRvIHsKKyAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGRhc2ggPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdl
LCBTVkdBdHRyaWJ1dGVNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICBpZiAo
IWRhc2ggfHwgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpICYmIHJhbmdl
LmF0RW5kKCkpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGRhc2hlcy0+
YXBwZW5kKCpkYXNoKTsKKyAgICB9IHdoaWxlICghcmFuZ2UuYXRFbmQoKSk7CisgICAgcmV0dXJu
IGRhc2hlczsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lQmFzZWxpbmVT
aGlmdChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NWYWx1ZUlEIGlkID0g
cmFuZ2UucGVlaygpLmlkKCk7CisgICAgaWYgKGlkID09IENTU1ZhbHVlQmFzZWxpbmUgfHwgaWQg
PT0gQ1NTVmFsdWVTdWIgfHwgaWQgPT0gQ1NTVmFsdWVTdXBlcikKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFu
Z2UsIFNWR0F0dHJpYnV0ZU1vZGUsIFZhbHVlUmFuZ2VBbGwpOworfQorCitzdGF0aWMgQ1NTUHJp
bWl0aXZlVmFsdWUqIGNvbnN1bWVSeE9yUnkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7
CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNl
bnQocmFuZ2UsIFNWR0F0dHJpYnV0ZU1vZGUsIFZhbHVlUmFuZ2VBbGwsIFVuaXRsZXNzUXVpcms6
OkZvcmJpZCk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUN1cnNvcihDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgYm9vbCBp
blF1aXJrc01vZGUpCit7CisgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gbnVsbHB0cjsKKyAgICB3
aGlsZSAoQ1NTVmFsdWUqIGltYWdlID0gY29uc3VtZUltYWdlKHJhbmdlLCBjb250ZXh0LCBDb25z
dW1lR2VuZXJhdGVkSW1hZ2U6OkZvcmJpZCkpIHsKKyAgICAgICAgZG91YmxlIG51bTsKKyAgICAg
ICAgSW50UG9pbnQgaG90U3BvdCgtMSwgLTEpOworICAgICAgICBib29sIGhvdFNwb3RTcGVjaWZp
ZWQgPSBmYWxzZTsKKyAgICAgICAgaWYgKGNvbnN1bWVOdW1iZXJSYXcocmFuZ2UsIG51bSkpIHsK
KyAgICAgICAgICAgIGhvdFNwb3Quc2V0WChpbnQobnVtKSk7CisgICAgICAgICAgICBpZiAoIWNv
bnN1bWVOdW1iZXJSYXcocmFuZ2UsIG51bSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgICAgICBob3RTcG90LnNldFkoaW50KG51bSkpOworICAgICAgICAgICAgaG90
U3BvdFNwZWNpZmllZCA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWxpc3QpCisg
ICAgICAgICAgICBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwor
CisgICAgICAgIGxpc3QtPmFwcGVuZCgqQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Y3JlYXRlKGltYWdl
LCBob3RTcG90U3BlY2lmaWVkLCBob3RTcG90KSk7CisgICAgICAgIGlmICghY29uc3VtZUNvbW1h
SW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgaWYg
KCFyYW5nZS5hdEVuZCgpICYmIGNvbnRleHQudXNlQ291bnRlcigpKSB7CisgICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZVdlYmtpdFpvb21JbikKKyAgICAgICAgICAgIGNvbnRleHQudXNlQ291bnRl
cigpLT5jb3VudChVc2VDb3VudGVyOjpQcmVmaXhlZEN1cnNvclpvb21Jbik7CisgICAgICAgIGVs
c2UgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0Wm9vbU91dCkKKyAgICAgICAgICAgIGNvbnRleHQu
dXNlQ291bnRlcigpLT5jb3VudChVc2VDb3VudGVyOjpQcmVmaXhlZEN1cnNvclpvb21PdXQpOwor
ICAgIH0KKyAgICBDU1NWYWx1ZSogY3Vyc29yVHlwZSA9IG51bGxwdHI7CisgICAgaWYgKGlkID09
IENTU1ZhbHVlSGFuZCkgeworICAgICAgICBpZiAoIWluUXVpcmtzTW9kZSkgLy8gTm9uLXN0YW5k
YXJkIGJlaGF2aW9yCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgY3Vyc29y
VHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlUG9pbnRl
cik7CisgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgfSBl
bHNlIGlmICgoaWQgPj0gQ1NTVmFsdWVBdXRvICYmIGlkIDw9IENTU1ZhbHVlV2Via2l0Wm9vbU91
dCkgfHwgaWQgPT0gQ1NTVmFsdWVDb3B5IHx8IGlkID09IENTU1ZhbHVlTm9uZSkgeworICAgICAg
ICBjdXJzb3JUeXBlID0gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoIWxpc3QpCisgICAgICAgIHJldHVy
biBjdXJzb3JUeXBlOworICAgIGxpc3QtPmFwcGVuZCgqY3Vyc29yVHlwZSk7CisgICAgcmV0dXJu
IGxpc3Q7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUF0dHIoQ1NTUGFyc2VyVG9rZW5S
YW5nZSBhcmdzLCBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQpCit7CisgICAgaWYgKGFyZ3MucGVl
aygpLnR5cGUoKSAhPSBJZGVudFRva2VuKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IFN0cmluZyBhdHRyTmFtZSA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1
ZSgpLnRvU3RyaW5nKCk7CisgICAgaWYgKCFhcmdzLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgaWYgKGNvbnRleHQuaXNIVE1MRG9jdW1lbnQoKSkKKyAgICAgICAgYXR0
ck5hbWUgPSBhdHRyTmFtZS5sb3dlcigpOworCisgICAgQ1NTRnVuY3Rpb25WYWx1ZSogYXR0clZh
bHVlID0gQ1NTRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKENTU1ZhbHVlQXR0cik7CisgICAgYXR0clZh
bHVlLT5hcHBlbmQoKkNTU0N1c3RvbUlkZW50VmFsdWU6OmNyZWF0ZShhdHRyTmFtZSkpOworICAg
IHJldHVybiBhdHRyVmFsdWU7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUNvdW50ZXJD
b250ZW50KENTU1BhcnNlclRva2VuUmFuZ2UgYXJncywgYm9vbCBjb3VudGVycykKK3sKKyAgICBD
U1NDdXN0b21JZGVudFZhbHVlKiBpZGVudGlmaWVyID0gY29uc3VtZUN1c3RvbUlkZW50KGFyZ3Mp
OworICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBD
U1NTdHJpbmdWYWx1ZSogc2VwYXJhdG9yID0gbnVsbHB0cjsKKyAgICBpZiAoIWNvdW50ZXJzKSB7
CisgICAgICAgIHNlcGFyYXRvciA9IENTU1N0cmluZ1ZhbHVlOjpjcmVhdGUoU3RyaW5nKCkpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFj
ZShhcmdzKSB8fCBhcmdzLnBlZWsoKS50eXBlKCkgIT0gU3RyaW5nVG9rZW4pCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgc2VwYXJhdG9yID0gQ1NTU3RyaW5nVmFsdWU6OmNy
ZWF0ZShhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b1N0cmluZygp
KTsKKyAgICB9CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogbGlzdFN0eWxlID0gbnVsbHB0cjsK
KyAgICBpZiAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkgeworICAgICAg
ICBDU1NWYWx1ZUlEIGlkID0gYXJncy5wZWVrKCkuaWQoKTsKKyAgICAgICAgaWYgKChpZCAhPSBD
U1NWYWx1ZU5vbmUgJiYgKGlkIDwgQ1NTVmFsdWVEaXNjIHx8IGlkID4gQ1NTVmFsdWVLYXRha2Fu
YUlyb2hhKSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgbGlzdFN0eWxl
ID0gY29uc3VtZUlkZW50KGFyZ3MpOworICAgIH0gZWxzZSB7CisgICAgICAgIGxpc3RTdHlsZSA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlRGVjaW1hbCk7Cisg
ICAgfQorCisgICAgaWYgKCFhcmdzLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiBDU1NDb3VudGVyVmFsdWU6OmNyZWF0ZShpZGVudGlmaWVyLCBsaXN0U3R5bGUs
IHNlcGFyYXRvcik7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUNvbnRlbnQoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlckNvbnRleHQgY29udGV4dCkKK3sKKyAgICBp
ZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVOb3JtYWw+KHJhbmdlLnBlZWso
KS5pZCgpKSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBDU1NW
YWx1ZUxpc3QqIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsK
KworICAgIGRvIHsKKyAgICAgICAgQ1NTVmFsdWUqIHBhcnNlZFZhbHVlID0gY29uc3VtZUltYWdl
KHJhbmdlLCBjb250ZXh0KTsKKyAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkKKyAgICAgICAgICAg
IHBhcnNlZFZhbHVlID0gY29uc3VtZUlkZW50PENTU1ZhbHVlT3BlblF1b3RlLCBDU1NWYWx1ZUNs
b3NlUXVvdGUsIENTU1ZhbHVlTm9PcGVuUXVvdGUsIENTU1ZhbHVlTm9DbG9zZVF1b3RlPihyYW5n
ZSk7CisgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9
IGNvbnN1bWVTdHJpbmcocmFuZ2UpOworICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKSB7CisgICAg
ICAgICAgICBpZiAocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUF0dHIpCisg
ICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lQXR0cihjb25zdW1lRnVuY3Rpb24o
cmFuZ2UpLCBjb250ZXh0KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJhbmdlLnBlZWsoKS5mdW5j
dGlvbklkKCkgPT0gQ1NTVmFsdWVDb3VudGVyKQorICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVl
ID0gY29uc3VtZUNvdW50ZXJDb250ZW50KGNvbnN1bWVGdW5jdGlvbihyYW5nZSksIGZhbHNlKTsK
KyAgICAgICAgICAgIGVsc2UgaWYgKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFs
dWVDb3VudGVycykKKyAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVDb3VudGVy
Q29udGVudChjb25zdW1lRnVuY3Rpb24ocmFuZ2UpLCB0cnVlKTsKKyAgICAgICAgICAgIGlmICgh
cGFyc2VkVmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0K
KyAgICAgICAgdmFsdWVzLT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICB9IHdoaWxlICghcmFu
Z2UuYXRFbmQoKSk7CisKKyAgICByZXR1cm4gdmFsdWVzOworfQorCitzdGF0aWMgQ1NTUHJpbWl0
aXZlVmFsdWUqIGNvbnN1bWVQZXJzcGVjdGl2ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Q1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9w
ZXJ0eSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAg
ICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSog
cGFyc2VkVmFsdWUgPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJh
bmdlQWxsKTsKKyAgICBpZiAoIXBhcnNlZFZhbHVlICYmICh1bnJlc29sdmVkUHJvcGVydHkgPT0g
Q1NTUHJvcGVydHlBbGlhc1dlYmtpdFBlcnNwZWN0aXZlKSkgeworICAgICAgICBkb3VibGUgcGVy
c3BlY3RpdmU7CisgICAgICAgIGlmICghY29uc3VtZU51bWJlclJhdyhyYW5nZSwgcGVyc3BlY3Rp
dmUpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHBhcnNlZFZhbHVlID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShwZXJzcGVjdGl2ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlOjpQaXhlbHMpOworICAgIH0KKyAgICBpZiAocGFyc2VkVmFsdWUgJiYgKHBhcnNl
ZFZhbHVlLT5pc0NhbGN1bGF0ZWQoKSB8fCBwYXJzZWRWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSA+
IDApKQorICAgICAgICByZXR1cm4gcGFyc2VkVmFsdWU7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK3N0YXRpYyBDU1NWYWx1ZUxpc3QqIGNvbnN1bWVQb3NpdGlvbkxpc3QoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBDU1NW
YWx1ZUxpc3QqIHBvc2l0aW9ucyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQo
KTsKKyAgICBkbyB7CisgICAgICAgIENTU1ZhbHVlKiBwb3NpdGlvbiA9IGNvbnN1bWVQb3NpdGlv
bihyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKKyAgICAgICAg
aWYgKCFwb3NpdGlvbikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBwb3Np
dGlvbnMtPmFwcGVuZCgqcG9zaXRpb24pOworICAgIH0gd2hpbGUgKGNvbnN1bWVDb21tYUluY2x1
ZGluZ1doaXRlc3BhY2UocmFuZ2UpKTsKKyAgICByZXR1cm4gcG9zaXRpb25zOworfQorCitzdGF0
aWMgQ1NTVmFsdWUqIGNvbnN1bWVTY3JvbGxTbmFwQ29vcmRpbmF0ZShDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlmIChyYW5n
ZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRl
bnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lUG9zaXRpb25MaXN0KHJhbmdlLCBjc3NQYXJz
ZXJNb2RlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lU2Nyb2xsU25hcFBvaW50cyhD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQor
eworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJl
dHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25J
ZCgpID09IENTU1ZhbHVlUmVwZWF0KSB7CisgICAgICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYXJn
cyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBw
YXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9kZSwg
VmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgaWYgKGFyZ3MuYXRFbmQoKSAmJiBwYXJz
ZWRWYWx1ZSAmJiAocGFyc2VkVmFsdWUtPmlzQ2FsY3VsYXRlZCgpIHx8IHBhcnNlZFZhbHVlLT5n
ZXREb3VibGVWYWx1ZSgpID4gMCkpIHsKKyAgICAgICAgICAgIENTU0Z1bmN0aW9uVmFsdWUqIHJl
c3VsdCA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShDU1NWYWx1ZVJlcGVhdCk7CisgICAgICAg
ICAgICByZXN1bHQtPmFwcGVuZCgqcGFyc2VkVmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGlj
IENTU1ZhbHVlKiBjb25zdW1lQm9yZGVyUmFkaXVzQ29ybmVyKENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgQ1NTVmFsdWUqIHBh
cnNlZFZhbHVlMSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUs
IFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgaWYgKCFwYXJzZWRWYWx1ZTEpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIENTU1ZhbHVlKiBwYXJzZWRWYWx1ZTIgPSBjb25zdW1lTGVu
Z3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUp
OworICAgIGlmICghcGFyc2VkVmFsdWUyKQorICAgICAgICBwYXJzZWRWYWx1ZTIgPSBwYXJzZWRW
YWx1ZTE7CisgICAgcmV0dXJuIENTU1ZhbHVlUGFpcjo6Y3JlYXRlKHBhcnNlZFZhbHVlMSwgcGFy
c2VkVmFsdWUyLCBDU1NWYWx1ZVBhaXI6OkRyb3BJZGVudGljYWxWYWx1ZXMpOworfQorCitzdGF0
aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVWZXJ0aWNhbEFsaWduKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHBhcnNlZFZhbHVlID0gY29uc3VtZUlkZW50UmFuZ2UocmFuZ2UsIENTU1Zh
bHVlQmFzZWxpbmUsIENTU1ZhbHVlV2Via2l0QmFzZWxpbmVNaWRkbGUpOworICAgIGlmICghcGFy
c2VkVmFsdWUpCisgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChy
YW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCwgVW5pdGxlc3NRdWlyazo6QWxsb3cp
OworICAgIHJldHVybiBwYXJzZWRWYWx1ZTsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVl
KiBjb25zdW1lU2hhcGVSYWRpdXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2Vy
TW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVDbG9z
ZXN0U2lkZSwgQ1NTVmFsdWVGYXJ0aGVzdFNpZGU+KGFyZ3MucGVlaygpLmlkKCkpKQorICAgICAg
ICByZXR1cm4gY29uc3VtZUlkZW50KGFyZ3MpOworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQ
ZXJjZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7Cit9CisK
K3N0YXRpYyBDU1NCYXNpY1NoYXBlQ2lyY2xlVmFsdWUqIGNvbnN1bWVCYXNpY1NoYXBlQ2lyY2xl
KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRl
eHQpCit7CisgICAgLy8gc3BlYzogaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1zaGFwZXMv
I3N1cHBvcnRlZC1iYXNpYy1zaGFwZXMKKyAgICAvLyBjaXJjbGUoIFs8c2hhcGUtcmFkaXVzPl0/
IFthdCA8cG9zaXRpb24+XT8gKQorICAgIENTU0Jhc2ljU2hhcGVDaXJjbGVWYWx1ZSogc2hhcGUg
PSBDU1NCYXNpY1NoYXBlQ2lyY2xlVmFsdWU6OmNyZWF0ZSgpOworICAgIGlmIChDU1NQcmltaXRp
dmVWYWx1ZSogcmFkaXVzID0gY29uc3VtZVNoYXBlUmFkaXVzKGFyZ3MsIGNvbnRleHQubW9kZSgp
KSkKKyAgICAgICAgc2hhcGUtPnNldFJhZGl1cyhyYWRpdXMpOworICAgIGlmIChjb25zdW1lSWRl
bnQ8Q1NTVmFsdWVBdD4oYXJncykpIHsKKyAgICAgICAgQ1NTVmFsdWUqIGNlbnRlclggPSBudWxs
cHRyOworICAgICAgICBDU1NWYWx1ZSogY2VudGVyWSA9IG51bGxwdHI7CisgICAgICAgIGlmICgh
Y29uc3VtZVBvc2l0aW9uKGFyZ3MsIGNvbnRleHQubW9kZSgpLCBVbml0bGVzc1F1aXJrOjpGb3Ji
aWQsIGNlbnRlclgsIGNlbnRlclkpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHNoYXBlLT5zZXRDZW50ZXJYKGNlbnRlclgpOworICAgICAgICBzaGFwZS0+c2V0Q2VudGVy
WShjZW50ZXJZKTsKKyAgICB9CisgICAgcmV0dXJuIHNoYXBlOworfQorCitzdGF0aWMgQ1NTQmFz
aWNTaGFwZUVsbGlwc2VWYWx1ZSogY29uc3VtZUJhc2ljU2hhcGVFbGxpcHNlKENTU1BhcnNlclRv
a2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAg
Ly8gc3BlYzogaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1zaGFwZXMvI3N1cHBvcnRlZC1i
YXNpYy1zaGFwZXMKKyAgICAvLyBlbGxpcHNlKCBbPHNoYXBlLXJhZGl1cz57Mn1dPyBbYXQgPHBv
c2l0aW9uPl0/ICkKKyAgICBDU1NCYXNpY1NoYXBlRWxsaXBzZVZhbHVlKiBzaGFwZSA9IENTU0Jh
c2ljU2hhcGVFbGxpcHNlVmFsdWU6OmNyZWF0ZSgpOworICAgIGlmIChDU1NQcmltaXRpdmVWYWx1
ZSogcmFkaXVzWCA9IGNvbnN1bWVTaGFwZVJhZGl1cyhhcmdzLCBjb250ZXh0Lm1vZGUoKSkpIHsK
KyAgICAgICAgc2hhcGUtPnNldFJhZGl1c1gocmFkaXVzWCk7CisgICAgICAgIGlmIChDU1NQcmlt
aXRpdmVWYWx1ZSogcmFkaXVzWSA9IGNvbnN1bWVTaGFwZVJhZGl1cyhhcmdzLCBjb250ZXh0Lm1v
ZGUoKSkpCisgICAgICAgICAgICBzaGFwZS0+c2V0UmFkaXVzWShyYWRpdXNZKTsKKyAgICB9Cisg
ICAgaWYgKGNvbnN1bWVJZGVudDxDU1NWYWx1ZUF0PihhcmdzKSkgeworICAgICAgICBDU1NWYWx1
ZSogY2VudGVyWCA9IG51bGxwdHI7CisgICAgICAgIENTU1ZhbHVlKiBjZW50ZXJZID0gbnVsbHB0
cjsKKyAgICAgICAgaWYgKCFjb25zdW1lUG9zaXRpb24oYXJncywgY29udGV4dC5tb2RlKCksIFVu
aXRsZXNzUXVpcms6OkZvcmJpZCwgY2VudGVyWCwgY2VudGVyWSkpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgc2hhcGUtPnNldENlbnRlclgoY2VudGVyWCk7CisgICAgICAg
IHNoYXBlLT5zZXRDZW50ZXJZKGNlbnRlclkpOworICAgIH0KKyAgICByZXR1cm4gc2hhcGU7Cit9
CisKK3N0YXRpYyBDU1NCYXNpY1NoYXBlUG9seWdvblZhbHVlKiBjb25zdW1lQmFzaWNTaGFwZVBv
bHlnb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYg
Y29udGV4dCkKK3sKKyAgICBDU1NCYXNpY1NoYXBlUG9seWdvblZhbHVlKiBzaGFwZSA9IENTU0Jh
c2ljU2hhcGVQb2x5Z29uVmFsdWU6OmNyZWF0ZSgpOworICAgIGlmIChpZGVudE1hdGNoZXM8Q1NT
VmFsdWVFdmVub2RkLCBDU1NWYWx1ZU5vbnplcm8+KGFyZ3MucGVlaygpLmlkKCkpKSB7CisgICAg
ICAgIHNoYXBlLT5zZXRXaW5kUnVsZShhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCku
aWQoKSA9PSBDU1NWYWx1ZUV2ZW5vZGQgPyBSVUxFX0VWRU5PREQgOiBSVUxFX05PTlpFUk8pOwor
ICAgICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBkbyB7CisgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiB4TGVuZ3RoID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjb250
ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGlmICgheExlbmd0aCkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogeUxlbmd0
aCA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlKCksIFZhbHVlUmFu
Z2VBbGwpOworICAgICAgICBpZiAoIXlMZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgc2hhcGUtPmFwcGVuZFBvaW50KHhMZW5ndGgsIHlMZW5ndGgpOworICAgIH0g
d2hpbGUgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpOworICAgIHJldHVy
biBzaGFwZTsKK30KKworc3RhdGljIHZvaWQgY29tcGxldGU0U2lkZXMoQ1NTUHJpbWl0aXZlVmFs
dWUqIHNpZGVbNF0pCit7CisgICAgaWYgKHNpZGVbM10pCisgICAgICAgIHJldHVybjsKKyAgICBp
ZiAoIXNpZGVbMl0pIHsKKyAgICAgICAgaWYgKCFzaWRlWzFdKQorICAgICAgICAgICAgc2lkZVsx
XSA9IHNpZGVbMF07CisgICAgICAgIHNpZGVbMl0gPSBzaWRlWzBdOworICAgIH0KKyAgICBzaWRl
WzNdID0gc2lkZVsxXTsKK30KKworc3RhdGljIGJvb2wgY29uc3VtZVJhZGlpKENTU1ByaW1pdGl2
ZVZhbHVlKiBob3Jpem9udGFsUmFkaWlbNF0sIENTU1ByaW1pdGl2ZVZhbHVlKiB2ZXJ0aWNhbFJh
ZGlpWzRdLCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJz
ZXJNb2RlLCBib29sIHVzZUxlZ2FjeVBhcnNpbmcpCit7CisgICAgdW5zaWduZWQgaSA9IDA7Cisg
ICAgZm9yICg7IGkgPCA0ICYmICFyYW5nZS5hdEVuZCgpICYmIHJhbmdlLnBlZWsoKS50eXBlKCkg
IT0gRGVsaW1pdGVyVG9rZW47ICsraSkgeworICAgICAgICBob3Jpem9udGFsUmFkaWlbaV0gPSBj
b25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9u
TmVnYXRpdmUpOworICAgICAgICBpZiAoIWhvcml6b250YWxSYWRpaVtpXSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKCFob3Jpem9udGFsUmFkaWlbMF0pCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAocmFuZ2UuYXRFbmQoKSkgeworICAgICAgICAvLyBM
ZWdhY3kgc3ludGF4OiAtd2Via2l0LWJvcmRlci1yYWRpdXM6IGwxIGwyOyBpcyBlcXVpdmFsZW50
IHRvIGJvcmRlci1yYWRpdXM6IGwxIC8gbDI7CisgICAgICAgIGlmICh1c2VMZWdhY3lQYXJzaW5n
ICYmIGkgPT0gMikgeworICAgICAgICAgICAgdmVydGljYWxSYWRpaVswXSA9IGhvcml6b250YWxS
YWRpaVsxXTsKKyAgICAgICAgICAgIGhvcml6b250YWxSYWRpaVsxXSA9IG51bGxwdHI7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb21wbGV0ZTRTaWRlcyhob3Jpem9udGFsUmFkaWkp
OworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDQ7ICsraSkKKyAgICAgICAg
ICAgICAgICB2ZXJ0aWNhbFJhZGlpW2ldID0gaG9yaXpvbnRhbFJhZGlpW2ldOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIWNv
bnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNCAmJiAhcmFuZ2UuYXRFbmQoKTsgKytp
KSB7CisgICAgICAgICAgICB2ZXJ0aWNhbFJhZGlpW2ldID0gY29uc3VtZUxlbmd0aE9yUGVyY2Vu
dChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAg
ICAgIGlmICghdmVydGljYWxSYWRpaVtpXSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKCF2ZXJ0aWNhbFJhZGlpWzBdIHx8ICFyYW5nZS5hdEVu
ZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBjb21wbGV0ZTRTaWRl
cyhob3Jpem9udGFsUmFkaWkpOworICAgIGNvbXBsZXRlNFNpZGVzKHZlcnRpY2FsUmFkaWkpOwor
ICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgQ1NTQmFzaWNTaGFwZUluc2V0VmFsdWUqIGNv
bnN1bWVCYXNpY1NoYXBlSW5zZXQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NT
UGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBDU1NCYXNpY1NoYXBlSW5zZXRWYWx1ZSog
c2hhcGUgPSBDU1NCYXNpY1NoYXBlSW5zZXRWYWx1ZTo6Y3JlYXRlKCk7CisgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHRvcCA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2Rl
KCksIFZhbHVlUmFuZ2VBbGwpOworICAgIGlmICghdG9wKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcmlnaHQgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50
KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBDU1NQcmltaXRpdmVW
YWx1ZSogYm90dG9tID0gbnVsbHB0cjsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogbGVmdCA9IG51
bGxwdHI7CisgICAgaWYgKHJpZ2h0KSB7CisgICAgICAgIGJvdHRvbSA9IGNvbnN1bWVMZW5ndGhP
clBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBp
ZiAoYm90dG9tKQorICAgICAgICAgICAgbGVmdCA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJn
cywgY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VBbGwpOworICAgIH0KKyAgICBpZiAobGVmdCkK
KyAgICAgICAgc2hhcGUtPnVwZGF0ZVNoYXBlU2l6ZTRWYWx1ZXModG9wLCByaWdodCwgYm90dG9t
LCBsZWZ0KTsKKyAgICBlbHNlIGlmIChib3R0b20pCisgICAgICAgIHNoYXBlLT51cGRhdGVTaGFw
ZVNpemUzVmFsdWVzKHRvcCwgcmlnaHQsIGJvdHRvbSk7CisgICAgZWxzZSBpZiAocmlnaHQpCisg
ICAgICAgIHNoYXBlLT51cGRhdGVTaGFwZVNpemUyVmFsdWVzKHRvcCwgcmlnaHQpOworICAgIGVs
c2UKKyAgICAgICAgc2hhcGUtPnVwZGF0ZVNoYXBlU2l6ZTFWYWx1ZSh0b3ApOworCisgICAgaWYg
KGNvbnN1bWVJZGVudDxDU1NWYWx1ZVJvdW5kPihhcmdzKSkgeworICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogaG9yaXpvbnRhbFJhZGlpWzRdID0geyAwIH07CisgICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiB2ZXJ0aWNhbFJhZGlpWzRdID0geyAwIH07CisgICAgICAgIGlmICghY29uc3VtZVJh
ZGlpKGhvcml6b250YWxSYWRpaSwgdmVydGljYWxSYWRpaSwgYXJncywgY29udGV4dC5tb2RlKCks
IGZhbHNlKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBzaGFwZS0+c2V0
VG9wTGVmdFJhZGl1cyhDU1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsUmFkaWlbMF0sIHZl
cnRpY2FsUmFkaWlbMF0sIENTU1ZhbHVlUGFpcjo6RHJvcElkZW50aWNhbFZhbHVlcykpOworICAg
ICAgICBzaGFwZS0+c2V0VG9wUmlnaHRSYWRpdXMoQ1NTVmFsdWVQYWlyOjpjcmVhdGUoaG9yaXpv
bnRhbFJhZGlpWzFdLCB2ZXJ0aWNhbFJhZGlpWzFdLCBDU1NWYWx1ZVBhaXI6OkRyb3BJZGVudGlj
YWxWYWx1ZXMpKTsKKyAgICAgICAgc2hhcGUtPnNldEJvdHRvbVJpZ2h0UmFkaXVzKENTU1ZhbHVl
UGFpcjo6Y3JlYXRlKGhvcml6b250YWxSYWRpaVsyXSwgdmVydGljYWxSYWRpaVsyXSwgQ1NTVmFs
dWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVzKSk7CisgICAgICAgIHNoYXBlLT5zZXRCb3R0b21M
ZWZ0UmFkaXVzKENTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhvcml6b250YWxSYWRpaVszXSwgdmVydGlj
YWxSYWRpaVszXSwgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVzKSk7CisgICAgfQor
ICAgIHJldHVybiBzaGFwZTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQmFzaWNTaGFw
ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29u
dGV4dCkKK3sKKyAgICBDU1NWYWx1ZSogc2hhcGUgPSBudWxscHRyOworICAgIGlmIChyYW5nZS5w
ZWVrKCkudHlwZSgpICE9IEZ1bmN0aW9uVG9rZW4pCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpOworICAgIENTU1Bh
cnNlclRva2VuUmFuZ2UgcmFuZ2VDb3B5ID0gcmFuZ2U7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5n
ZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlQ29weSk7CisgICAgaWYgKGlkID09IENTU1Zh
bHVlQ2lyY2xlKQorICAgICAgICBzaGFwZSA9IGNvbnN1bWVCYXNpY1NoYXBlQ2lyY2xlKGFyZ3Ms
IGNvbnRleHQpOworICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlRWxsaXBzZSkKKyAgICAgICAg
c2hhcGUgPSBjb25zdW1lQmFzaWNTaGFwZUVsbGlwc2UoYXJncywgY29udGV4dCk7CisgICAgZWxz
ZSBpZiAoaWQgPT0gQ1NTVmFsdWVQb2x5Z29uKQorICAgICAgICBzaGFwZSA9IGNvbnN1bWVCYXNp
Y1NoYXBlUG9seWdvbihhcmdzLCBjb250ZXh0KTsKKyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1
ZUluc2V0KQorICAgICAgICBzaGFwZSA9IGNvbnN1bWVCYXNpY1NoYXBlSW5zZXQoYXJncywgY29u
dGV4dCk7CisgICAgaWYgKCFzaGFwZSB8fCAhYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByYW5nZSA9IHJhbmdlQ29weTsKKyAgICByZXR1cm4gc2hhcGU7Cit9CisK
K3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVdlYmtpdENsaXBQYXRoKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIGlmIChy
YW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1l
SWRlbnQocmFuZ2UpOworICAgIGlmIChDU1NVUklWYWx1ZSogdXJsID0gY29uc3VtZVVybChyYW5n
ZSkpCisgICAgICAgIHJldHVybiB1cmw7CisgICAgcmV0dXJuIGNvbnN1bWVCYXNpY1NoYXBlKHJh
bmdlLCBjb250ZXh0KTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lU2hhcGVPdXRzaWRl
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250
ZXh0KQoreworICAgIGlmIChDU1NWYWx1ZSogaW1hZ2VWYWx1ZSA9IGNvbnN1bWVJbWFnZU9yTm9u
ZShyYW5nZSwgY29udGV4dCkpCisgICAgICAgIHJldHVybiBpbWFnZVZhbHVlOworICAgIENTU1Zh
bHVlTGlzdCogbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAg
ICBpZiAoQ1NTVmFsdWUqIGJveFZhbHVlID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQ29udGVudEJv
eCwgQ1NTVmFsdWVQYWRkaW5nQm94LCBDU1NWYWx1ZUJvcmRlckJveCwgQ1NTVmFsdWVNYXJnaW5C
b3g+KHJhbmdlKSkKKyAgICAgICAgbGlzdC0+YXBwZW5kKCpib3hWYWx1ZSk7CisgICAgaWYgKENT
U1ZhbHVlKiBzaGFwZVZhbHVlID0gY29uc3VtZUJhc2ljU2hhcGUocmFuZ2UsIGNvbnRleHQpKSB7
CisgICAgICAgIGxpc3QtPmFwcGVuZCgqc2hhcGVWYWx1ZSk7CisgICAgICAgIGlmIChsaXN0LT5s
ZW5ndGgoKSA8IDIpIHsKKyAgICAgICAgICAgIGlmIChDU1NWYWx1ZSogYm94VmFsdWUgPSBjb25z
dW1lSWRlbnQ8Q1NTVmFsdWVDb250ZW50Qm94LCBDU1NWYWx1ZVBhZGRpbmdCb3gsIENTU1ZhbHVl
Qm9yZGVyQm94LCBDU1NWYWx1ZU1hcmdpbkJveD4ocmFuZ2UpKQorICAgICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZCgqYm94VmFsdWUpOworICAgICAgICB9CisgICAgfQorICAgIGlmICghbGlzdC0+
bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBsaXN0OworfQor
CitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDb250ZW50RGlzdHJpYnV0aW9uT3ZlcmZsb3dQb3Np
dGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAoaWRlbnRNYXRjaGVz
PENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZUJhc2VsaW5lLCBDU1NWYWx1ZUxhc3RCYXNlbGluZT4o
cmFuZ2UucGVlaygpLmlkKCkpKQorICAgICAgICByZXR1cm4gQ1NTQ29udGVudERpc3RyaWJ1dGlv
blZhbHVlOjpjcmVhdGUoQ1NTVmFsdWVJbnZhbGlkLCByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hp
dGVzcGFjZSgpLmlkKCksIENTU1ZhbHVlSW52YWxpZCk7CisKKyAgICBDU1NWYWx1ZUlEIGRpc3Ry
aWJ1dGlvbiA9IENTU1ZhbHVlSW52YWxpZDsKKyAgICBDU1NWYWx1ZUlEIHBvc2l0aW9uID0gQ1NT
VmFsdWVJbnZhbGlkOworICAgIENTU1ZhbHVlSUQgb3ZlcmZsb3cgPSBDU1NWYWx1ZUludmFsaWQ7
CisgICAgZG8geworICAgICAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7Cisg
ICAgICAgIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVTcGFjZUJldHdlZW4sIENTU1ZhbHVlU3Bh
Y2VBcm91bmQsIENTU1ZhbHVlU3BhY2VFdmVubHksIENTU1ZhbHVlU3RyZXRjaD4oaWQpKSB7Cisg
ICAgICAgICAgICBpZiAoZGlzdHJpYnV0aW9uICE9IENTU1ZhbHVlSW52YWxpZCkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGRpc3RyaWJ1dGlvbiA9IGlkOwor
ICAgICAgICB9IGVsc2UgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZVN0YXJ0LCBDU1NWYWx1ZUVu
ZCwgQ1NTVmFsdWVDZW50ZXIsIENTU1ZhbHVlRmxleFN0YXJ0LCBDU1NWYWx1ZUZsZXhFbmQsIENT
U1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodD4oaWQpKSB7CisgICAgICAgICAgICBpZiAocG9zaXRp
b24gIT0gQ1NTVmFsdWVJbnZhbGlkKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICAgICAgcG9zaXRpb24gPSBpZDsKKyAgICAgICAgfSBlbHNlIGlmIChpZGVudE1hdGNo
ZXM8Q1NTVmFsdWVVbnNhZmUsIENTU1ZhbHVlU2FmZT4oaWQpKSB7CisgICAgICAgICAgICBpZiAo
b3ZlcmZsb3cgIT0gQ1NTVmFsdWVJbnZhbGlkKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICAgICAgb3ZlcmZsb3cgPSBpZDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIHJhbmdlLmNvbnN1bWVJ
bmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpOworCisg
ICAgLy8gVGhlIGdyYW1tYXIgc3RhdGVzIHRoYXQgd2Ugc2hvdWxkIGhhdmUgYXQgbGVhc3QgPGNv
bnRlbnQtZGlzdHJpYnV0aW9uPiBvciA8Y29udGVudC1wb3NpdGlvbj4uCisgICAgaWYgKHBvc2l0
aW9uID09IENTU1ZhbHVlSW52YWxpZCAmJiBkaXN0cmlidXRpb24gPT0gQ1NTVmFsdWVJbnZhbGlk
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIFRoZSBncmFtbWFyIHN0YXRlcyB0
aGF0IDxvdmVyZmxvdy1wb3NpdGlvbj4gbXVzdCBiZSBhc3NvY2lhdGVkIHRvIDxjb250ZW50LXBv
c2l0aW9uPi4KKyAgICBpZiAob3ZlcmZsb3cgIT0gQ1NTVmFsdWVJbnZhbGlkICYmIHBvc2l0aW9u
ID09IENTU1ZhbHVlSW52YWxpZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1
cm4gQ1NTQ29udGVudERpc3RyaWJ1dGlvblZhbHVlOjpjcmVhdGUoZGlzdHJpYnV0aW9uLCBwb3Np
dGlvbiwgb3ZlcmZsb3cpOworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVC
b3JkZXJJbWFnZVJlcGVhdEtleXdvcmQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7Cisg
ICAgcmV0dXJuIGNvbnN1bWVJZGVudDxDU1NWYWx1ZVN0cmV0Y2gsIENTU1ZhbHVlUmVwZWF0LCBD
U1NWYWx1ZVNwYWNlLCBDU1NWYWx1ZVJvdW5kPihyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1
ZSogY29uc3VtZUJvcmRlckltYWdlUmVwZWF0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQor
eworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBob3Jpem9udGFsID0gY29uc3VtZUJvcmRlckltYWdl
UmVwZWF0S2V5d29yZChyYW5nZSk7CisgICAgaWYgKCFob3Jpem9udGFsKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmVydGljYWwgPSBjb25zdW1lQm9y
ZGVySW1hZ2VSZXBlYXRLZXl3b3JkKHJhbmdlKTsKKyAgICBpZiAoIXZlcnRpY2FsKQorICAgICAg
ICB2ZXJ0aWNhbCA9IGhvcml6b250YWw7CisgICAgcmV0dXJuIENTU1ZhbHVlUGFpcjo6Y3JlYXRl
KGhvcml6b250YWwsIHZlcnRpY2FsLCBDU1NWYWx1ZVBhaXI6OkRyb3BJZGVudGljYWxWYWx1ZXMp
OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVCb3JkZXJJbWFnZVNsaWNlKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHksIENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGJvb2wg
ZmlsbCA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUZpbGw+KHJhbmdlKTsKKyAgICBDU1NQcmltaXRp
dmVWYWx1ZSogc2xpY2VzWzRdID0geyAwIH07CisKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7
IGluZGV4IDwgNDsgKytpbmRleCkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUg
PSBjb25zdW1lUGVyY2VudChyYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAg
aWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHZhbHVlID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFs
dWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBzbGljZXNbaW5kZXhdID0gdmFsdWU7CisgICAgfQorICAgIGlmICghc2xp
Y2VzWzBdKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoY29uc3VtZUlkZW50PENT
U1ZhbHVlRmlsbD4ocmFuZ2UpKSB7CisgICAgICAgIGlmIChmaWxsKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIGZpbGwgPSB0cnVlOworICAgIH0KKyAgICBjb21wbGV0ZTRT
aWRlcyhzbGljZXMpOworICAgIC8vIEZJWE1FOiBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHks
IC13ZWJraXQtYm9yZGVyLWltYWdlLCAtd2Via2l0LW1hc2stYm94LWltYWdlIGFuZCAtd2Via2l0
LWJveC1yZWZsZWN0IGhhdmUgdG8gZG8gYSBmaWxsIGJ5IGRlZmF1bHQuCisgICAgLy8gRklYTUU6
IFdoYXQgZG8gd2UgZG8gd2l0aCAtd2Via2l0LWJveC1yZWZsZWN0IGFuZCAtd2Via2l0LW1hc2st
Ym94LWltYWdlPyBQcm9iYWJseSBqdXN0IGhhdmUgdG8gbGVhdmUgdGhlbSBmaWxsaW5nLi4uCisg
ICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2UgfHwgcHJvcGVy
dHkgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2UgfHwgcHJvcGVydHkgPT0gQ1NTUHJv
cGVydHlXZWJraXRCb3hSZWZsZWN0KQorICAgICAgICBmaWxsID0gdHJ1ZTsKKyAgICByZXR1cm4g
Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlOjpjcmVhdGUoQ1NTUXVhZFZhbHVlOjpjcmVhdGUoc2xp
Y2VzWzBdLCBzbGljZXNbMV0sIHNsaWNlc1syXSwgc2xpY2VzWzNdLCBDU1NRdWFkVmFsdWU6OlNl
cmlhbGl6ZUFzUXVhZCksIGZpbGwpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVCb3Jk
ZXJJbWFnZU91dHNldChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogb3V0c2V0c1s0XSA9IHsgMCB9OworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHZhbHVlID0gbnVsbHB0cjsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgNDsg
KytpbmRleCkgeworICAgICAgICB2YWx1ZSA9IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFu
Z2VOb25OZWdhdGl2ZSk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICB2YWx1ZSA9
IGNvbnN1bWVMZW5ndGgocmFuZ2UsIEhUTUxTdGFuZGFyZE1vZGUsIFZhbHVlUmFuZ2VOb25OZWdh
dGl2ZSk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
b3V0c2V0c1tpbmRleF0gPSB2YWx1ZTsKKyAgICB9CisgICAgaWYgKCFvdXRzZXRzWzBdKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBjb21wbGV0ZTRTaWRlcyhvdXRzZXRzKTsKKyAgICBy
ZXR1cm4gQ1NTUXVhZFZhbHVlOjpjcmVhdGUob3V0c2V0c1swXSwgb3V0c2V0c1sxXSwgb3V0c2V0
c1syXSwgb3V0c2V0c1szXSwgQ1NTUXVhZFZhbHVlOjpTZXJpYWxpemVBc1F1YWQpOworfQorCitz
dGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVCb3JkZXJJbWFnZVdpZHRoKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQoreworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB3aWR0aHNbNF0gPSB7IDAgfTsK
KworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSA9IG51bGxwdHI7CisgICAgZm9yIChzaXpl
X3QgaW5kZXggPSAwOyBpbmRleCA8IDQ7ICsraW5kZXgpIHsKKyAgICAgICAgdmFsdWUgPSBjb25z
dW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICBpZiAoIXZh
bHVlKQorICAgICAgICAgICAgdmFsdWUgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBI
VE1MU3RhbmRhcmRNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUsIFVuaXRsZXNzUXVpcms6OkZv
cmJpZCk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICB2YWx1ZSA9IGNvbnN1bWVJ
ZGVudDxDU1NWYWx1ZUF1dG8+KHJhbmdlKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB3aWR0aHNbaW5kZXhdID0gdmFsdWU7CisgICAgfQorICAgIGlm
ICghd2lkdGhzWzBdKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBjb21wbGV0ZTRTaWRl
cyh3aWR0aHMpOworICAgIHJldHVybiBDU1NRdWFkVmFsdWU6OmNyZWF0ZSh3aWR0aHNbMF0sIHdp
ZHRoc1sxXSwgd2lkdGhzWzJdLCB3aWR0aHNbM10sIENTU1F1YWRWYWx1ZTo6U2VyaWFsaXplQXNR
dWFkKTsKK30KKworc3RhdGljIGJvb2wgY29uc3VtZUJvcmRlckltYWdlQ29tcG9uZW50cyhDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NT
UGFyc2VyQ29udGV4dCYgY29udGV4dCwgQ1NTVmFsdWUqJiBzb3VyY2UsCisgICAgQ1NTVmFsdWUq
JiBzbGljZSwgQ1NTVmFsdWUqJiB3aWR0aCwgQ1NTVmFsdWUqJiBvdXRzZXQsIENTU1ZhbHVlKiYg
cmVwZWF0KQoreworICAgIGRvIHsKKyAgICAgICAgaWYgKCFzb3VyY2UpIHsKKyAgICAgICAgICAg
IHNvdXJjZSA9IGNvbnN1bWVJbWFnZU9yTm9uZShyYW5nZSwgY29udGV4dCk7CisgICAgICAgICAg
ICBpZiAoc291cmNlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAg
ICAgIGlmICghcmVwZWF0KSB7CisgICAgICAgICAgICByZXBlYXQgPSBjb25zdW1lQm9yZGVySW1h
Z2VSZXBlYXQocmFuZ2UpOworICAgICAgICAgICAgaWYgKHJlcGVhdCkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXNsaWNlKSB7CisgICAgICAgICAg
ICBzbGljZSA9IGNvbnN1bWVCb3JkZXJJbWFnZVNsaWNlKHByb3BlcnR5LCByYW5nZSk7CisgICAg
ICAgICAgICBpZiAoc2xpY2UpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIXdpZHRoICYmICFv
dXRzZXQpOworICAgICAgICAgICAgICAgIGlmIChjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNw
YWNlKHJhbmdlKSkgeworICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IGNvbnN1bWVCb3JkZXJJ
bWFnZVdpZHRoKHJhbmdlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnN1bWVTbGFzaElu
Y2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXRz
ZXQgPSBjb25zdW1lQm9yZGVySW1hZ2VPdXRzZXQocmFuZ2UpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFvdXRzZXQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF3aWR0aCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9IHdoaWxlICghcmFuZ2UuYXRFbmQoKSk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVdlYmtpdEJvcmRl
ckltYWdlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIENTU1ZhbHVlKiBzb3Vy
Y2UgPSBudWxscHRyOworICAgIENTU1ZhbHVlKiBzbGljZSA9IG51bGxwdHI7CisgICAgQ1NTVmFs
dWUqIHdpZHRoID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogb3V0c2V0ID0gbnVsbHB0cjsKKyAg
ICBDU1NWYWx1ZSogcmVwZWF0ID0gbnVsbHB0cjsKKyAgICBpZiAoY29uc3VtZUJvcmRlckltYWdl
Q29tcG9uZW50cyhwcm9wZXJ0eSwgcmFuZ2UsIGNvbnRleHQsIHNvdXJjZSwgc2xpY2UsIHdpZHRo
LCBvdXRzZXQsIHJlcGVhdCkpCisgICAgICAgIHJldHVybiBjcmVhdGVCb3JkZXJJbWFnZVZhbHVl
KHNvdXJjZSwgc2xpY2UsIHdpZHRoLCBvdXRzZXQsIHJlcGVhdCk7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVJlZmxlY3QoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIGRpcmVjdGlvbiA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUFib3ZlLCBD
U1NWYWx1ZUJlbG93LCBDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KHJhbmdlKTsKKyAgICBp
ZiAoIWRpcmVjdGlvbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBDU1NQcmltaXRp
dmVWYWx1ZSogb2Zmc2V0ID0gbnVsbHB0cjsKKyAgICBpZiAocmFuZ2UuYXRFbmQoKSkgeworICAg
ICAgICBvZmZzZXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAsIENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZTo6UGl4ZWxzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBvZmZzZXQgPSBj
b25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZUFs
bCwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKKyAgICAgICAgaWYgKCFvZmZzZXQpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBDU1NWYWx1ZSogbWFzayA9IG51bGxw
dHI7CisgICAgaWYgKCFyYW5nZS5hdEVuZCgpKSB7CisgICAgICAgIG1hc2sgPSBjb25zdW1lV2Vi
a2l0Qm9yZGVySW1hZ2UoQ1NTUHJvcGVydHlXZWJraXRCb3hSZWZsZWN0LCByYW5nZSwgY29udGV4
dCk7CisgICAgICAgIGlmICghbWFzaykKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKyAgICByZXR1cm4gQ1NTUmVmbGVjdFZhbHVlOjpjcmVhdGUoZGlyZWN0aW9uLCBvZmZzZXQs
IG1hc2spOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVGb250U2l6ZUFkanVzdChDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0g
Q1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICBy
ZXR1cm4gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKK30KKwor
c3RhdGljIENTU1ZhbHVlKiBjb25zdW1lSW1hZ2VPcmllbnRhdGlvbihDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVGcm9t
SW1hZ2UpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIGlmIChyYW5n
ZS5wZWVrKCkudHlwZSgpICE9IE51bWJlclRva2VuKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBhbmdsZSA9IGNvbnN1bWVBbmdsZShyYW5nZSk7CisgICAgICAgIGlmIChhbmdsZSAmJiBh
bmdsZS0+Z2V0RG91YmxlVmFsdWUoKSA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOwor
ICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1l
QmFja2dyb3VuZEJsZW5kTW9kZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBD
U1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgaWYgKGlkID09IENTU1ZhbHVl
Tm9ybWFsIHx8IGlkID09IENTU1ZhbHVlT3ZlcmxheSB8fCAoaWQgPj0gQ1NTVmFsdWVNdWx0aXBs
eSAmJiBpZCA8PSBDU1NWYWx1ZUx1bWlub3NpdHkpKQorICAgICAgICByZXR1cm4gY29uc3VtZUlk
ZW50KHJhbmdlKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lQmFja2dyb3VuZEF0dGFjaG1lbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7
CisgICAgcmV0dXJuIGNvbnN1bWVJZGVudDxDU1NWYWx1ZVNjcm9sbCwgQ1NTVmFsdWVGaXhlZCwg
Q1NTVmFsdWVMb2NhbD4ocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVCYWNr
Z3JvdW5kQm94KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBjb25z
dW1lSWRlbnQ8Q1NTVmFsdWVCb3JkZXJCb3gsIENTU1ZhbHVlUGFkZGluZ0JveCwgQ1NTVmFsdWVD
b250ZW50Qm94PihyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUJhY2tncm91
bmRDb21wb3NpdGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgcmV0dXJuIGNv
bnN1bWVJZGVudFJhbmdlKHJhbmdlLCBDU1NWYWx1ZUNsZWFyLCBDU1NWYWx1ZVBsdXNMaWdodGVy
KTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lTWFza1NvdXJjZVR5cGUoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OmNzc01hc2tTb3VyY2VUeXBlRW5hYmxlZCgpKTsKKyAgICByZXR1cm4gY29uc3VtZUlkZW50PENT
U1ZhbHVlQXV0bywgQ1NTVmFsdWVBbHBoYSwgQ1NTVmFsdWVMdW1pbmFuY2U+KHJhbmdlKTsKK30K
Kworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lUHJlZml4ZWRCYWNrZ3JvdW5kQm94KENTU1Byb3Bl
cnR5SUQgcHJvcGVydHksIENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJz
ZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIC8vIFRoZSB2YWx1ZXMgJ2JvcmRlcicsICdwYWRk
aW5nJyBhbmQgJ2NvbnRlbnQnIGFyZSBkZXByZWNhdGVkIGFuZCBkbyBub3QgYXBwbHkgdG8gdGhl
IHZlcnNpb24gb2YgdGhlIHByb3BlcnR5IHRoYXQgaGFzIHRoZSAtd2Via2l0LSBwcmVmaXggcmVt
b3ZlZC4KKyAgICBpZiAoQ1NTVmFsdWUqIHZhbHVlID0gY29uc3VtZUlkZW50UmFuZ2UocmFuZ2Us
IENTU1ZhbHVlQm9yZGVyLCBDU1NWYWx1ZVBhZGRpbmdCb3gpKQorICAgICAgICByZXR1cm4gdmFs
dWU7CisgICAgaWYgKChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDbGlw
IHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXApICYmIHJhbmdlLnBlZWso
KS5pZCgpID09IENTU1ZhbHVlVGV4dCkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5n
ZSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUJh
Y2tncm91bmRTaXplKENTU1Byb3BlcnR5SUQgdW5yZXNvbHZlZFByb3BlcnR5LCBDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlm
IChpZGVudE1hdGNoZXM8Q1NTVmFsdWVDb250YWluLCBDU1NWYWx1ZUNvdmVyPihyYW5nZS5wZWVr
KCkuaWQoKSkpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIGhvcml6b250YWwgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBdXRvPihy
YW5nZSk7CisgICAgaWYgKCFob3Jpem9udGFsKQorICAgICAgICBob3Jpem9udGFsID0gY29uc3Vt
ZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCwgVW5p
dGxlc3NRdWlyazo6Rm9yYmlkKTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2ZXJ0aWNhbCA9
IG51bGxwdHI7CisgICAgaWYgKCFyYW5nZS5hdEVuZCgpKSB7CisgICAgICAgIGlmIChyYW5nZS5w
ZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pIC8vIGBhdXRvJyBpcyB0aGUgZGVmYXVsdAorICAg
ICAgICAgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgdmVydGljYWwgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBj
c3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworICAg
IH0gZWxzZSBpZiAodW5yZXNvbHZlZFByb3BlcnR5ID09IENTU1Byb3BlcnR5QWxpYXNXZWJraXRC
YWNrZ3JvdW5kU2l6ZSkgeworICAgICAgICAvLyBMZWdhY3kgc3ludGF4OiAiLXdlYmtpdC1iYWNr
Z3JvdW5kLXNpemU6IDEwcHgiIGlzIGVxdWl2YWxlbnQgdG8gImJhY2tncm91bmQtc2l6ZTogMTBw
eCAxMHB4Ii4KKyAgICAgICAgdmVydGljYWwgPSBob3Jpem9udGFsOworICAgIH0KKyAgICBpZiAo
IXZlcnRpY2FsKQorICAgICAgICByZXR1cm4gaG9yaXpvbnRhbDsKKyAgICByZXR1cm4gQ1NTVmFs
dWVQYWlyOjpjcmVhdGUoaG9yaXpvbnRhbCwgdmVydGljYWwsIENTU1ZhbHVlUGFpcjo6S2VlcElk
ZW50aWNhbFZhbHVlcyk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZUxpc3QqIGNvbnN1bWVHcmlkQXV0
b0Zsb3coQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHJvd09yQ29sdW1uVmFsdWUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVSb3csIENTU1ZhbHVl
Q29sdW1uPihyYW5nZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGRlbnNlQWxnb3JpdGhtID0g
Y29uc3VtZUlkZW50PENTU1ZhbHVlRGVuc2U+KHJhbmdlKTsKKyAgICBpZiAoIXJvd09yQ29sdW1u
VmFsdWUpIHsKKyAgICAgICAgcm93T3JDb2x1bW5WYWx1ZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1
ZVJvdywgQ1NTVmFsdWVDb2x1bW4+KHJhbmdlKTsKKyAgICAgICAgaWYgKCFyb3dPckNvbHVtblZh
bHVlICYmICFkZW5zZUFsZ29yaXRobSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKyAgICBDU1NWYWx1ZUxpc3QqIHBhcnNlZFZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
U3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBpZiAocm93T3JDb2x1bW5WYWx1ZSkKKyAgICAgICAgcGFy
c2VkVmFsdWVzLT5hcHBlbmQoKnJvd09yQ29sdW1uVmFsdWUpOworICAgIGlmIChkZW5zZUFsZ29y
aXRobSkKKyAgICAgICAgcGFyc2VkVmFsdWVzLT5hcHBlbmQoKmRlbnNlQWxnb3JpdGhtKTsKKyAg
ICByZXR1cm4gcGFyc2VkVmFsdWVzOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVCYWNr
Z3JvdW5kQ29tcG9uZW50KENTU1Byb3BlcnR5SUQgdW5yZXNvbHZlZFByb3BlcnR5LCBDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sK
KyAgICBzd2l0Y2ggKHVucmVzb2x2ZWRQcm9wZXJ0eSkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQ2xpcDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCYWNrZ3JvdW5kQm94KHJhbmdl
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZEJsZW5kTW9kZToKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVCYWNrZ3JvdW5kQmxlbmRNb2RlKHJhbmdlKTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5QmFja2dyb3VuZEF0dGFjaG1lbnQ6CisgICAgICAgIHJldHVybiBjb25zdW1lQmFja2dyb3Vu
ZEF0dGFjaG1lbnQocmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2lu
OgorICAgICAgICByZXR1cm4gY29uc3VtZUJhY2tncm91bmRCb3gocmFuZ2UpOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlOgorICAgICAgICByZXR1cm4gY29uc3VtZUJh
Y2tncm91bmRDb21wb3NpdGUocmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlNYXNrU291cmNl
VHlwZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVNYXNrU291cmNlVHlwZShyYW5nZSk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDbGlwOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRCYWNrZ3JvdW5kT3JpZ2luOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNr
Q2xpcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbjoKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVQcmVmaXhlZEJhY2tncm91bmRCb3godW5yZXNvbHZlZFByb3BlcnR5LCByYW5n
ZSwgY29udGV4dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlOgorICAgICAgICByZXR1cm4gY29uc3VtZUlt
YWdlT3JOb25lKHJhbmdlLCBjb250ZXh0KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFBvc2l0aW9uWDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWDoKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVQb3NpdGlvblgocmFuZ2UsIGNvbnRleHQubW9kZSgpKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFza1Bvc2l0aW9uWToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVQb3NpdGlvblko
cmFuZ2UsIGNvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFNp
emU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFsaWFzV2Via2l0QmFja2dyb3VuZFNpemU6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplOgorICAgICAgICByZXR1cm4gY29uc3VtZUJh
Y2tncm91bmRTaXplKHVucmVzb2x2ZWRQcm9wZXJ0eSwgcmFuZ2UsIGNvbnRleHQubW9kZSgpKTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yOgorICAgICAgICByZXR1cm4gY29u
c3VtZUNvbG9yKHJhbmdlLCBjb250ZXh0Lm1vZGUoKSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
YnJlYWs7CisgICAgfTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIHZvaWQgYWRk
QmFja2dyb3VuZFZhbHVlKENTU1ZhbHVlKiYgbGlzdCwgQ1NTVmFsdWUqIHZhbHVlKQoreworICAg
IGlmIChsaXN0KSB7CisgICAgICAgIGlmICghbGlzdC0+aXNCYXNlVmFsdWVMaXN0KCkpIHsKKyAg
ICAgICAgICAgIENTU1ZhbHVlKiBmaXJzdFZhbHVlID0gbGlzdDsKKyAgICAgICAgICAgIGxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICB0b0NT
U1ZhbHVlTGlzdChsaXN0KS0+YXBwZW5kKCpmaXJzdFZhbHVlKTsKKyAgICAgICAgfQorICAgICAg
ICB0b0NTU1ZhbHVlTGlzdChsaXN0KS0+YXBwZW5kKCp2YWx1ZSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgLy8gVG8gY29uc2VydmUgbWVtb3J5IHdlIGRvbid0IGFjdHVhbGx5IHdyYXAgYSBzaW5n
bGUgdmFsdWUgaW4gYSBsaXN0LgorICAgICAgICBsaXN0ID0gdmFsdWU7CisgICAgfQorfQorCitz
dGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDb21tYVNlcGFyYXRlZEJhY2tncm91bmRDb21wb25lbnQo
Q1NTUHJvcGVydHlJRCB1bnJlc29sdmVkUHJvcGVydHksIENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIENTU1ZhbHVlKiBy
ZXN1bHQgPSBudWxscHRyOworICAgIGRvIHsKKyAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gY29u
c3VtZUJhY2tncm91bmRDb21wb25lbnQodW5yZXNvbHZlZFByb3BlcnR5LCByYW5nZSwgY29udGV4
dCk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgYWRkQmFja2dyb3VuZFZhbHVlKHJlc3VsdCwgdmFsdWUpOworICAgIH0gd2hpbGUgKGNv
bnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVTZWxmUG9zaXRpb25LZXl3
b3JkKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIENTU1ZhbHVlSUQgaWQgPSBy
YW5nZS5wZWVrKCkuaWQoKTsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVTdGFydCB8fCBpZCA9PSBD
U1NWYWx1ZUVuZCB8fCBpZCA9PSBDU1NWYWx1ZUNlbnRlcgorICAgICAgICB8fCBpZCA9PSBDU1NW
YWx1ZVNlbGZTdGFydCB8fCBpZCA9PSBDU1NWYWx1ZVNlbGZFbmQgfHwgaWQgPT0gQ1NTVmFsdWVG
bGV4U3RhcnQKKyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVGbGV4RW5kIHx8IGlkID09IENTU1Zh
bHVlTGVmdCB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0KQorICAgICAgICByZXR1cm4gY29uc3VtZUlk
ZW50KHJhbmdlKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lU2VsZlBvc2l0aW9uT3ZlcmZsb3dQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSkKK3sKKyAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVOb3Jt
YWwsIENTU1ZhbHVlU3RyZXRjaCwgQ1NTVmFsdWVCYXNlbGluZSwgQ1NTVmFsdWVMYXN0QmFzZWxp
bmU+KHJhbmdlLnBlZWsoKS5pZCgpKSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5n
ZSk7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogb3ZlcmZsb3dQb3NpdGlvbiA9IGNvbnN1bWVJ
ZGVudDxDU1NWYWx1ZVVuc2FmZSwgQ1NTVmFsdWVTYWZlPihyYW5nZSk7CisgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHNlbGZQb3NpdGlvbiA9IGNvbnN1bWVTZWxmUG9zaXRpb25LZXl3b3JkKHJhbmdl
KTsKKyAgICBpZiAoIXNlbGZQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
aWYgKCFvdmVyZmxvd1Bvc2l0aW9uKQorICAgICAgICBvdmVyZmxvd1Bvc2l0aW9uID0gY29uc3Vt
ZUlkZW50PENTU1ZhbHVlVW5zYWZlLCBDU1NWYWx1ZVNhZmU+KHJhbmdlKTsKKyAgICBpZiAob3Zl
cmZsb3dQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVlUGFpcjo6Y3JlYXRlKHNlbGZQ
b3NpdGlvbiwgb3ZlcmZsb3dQb3NpdGlvbiwgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFs
dWVzKTsKKyAgICByZXR1cm4gc2VsZlBvc2l0aW9uOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNv
bnN1bWVBbGlnbkl0ZW1zKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIC8vIGFs
aWduLWl0ZW1zIHByb3BlcnR5IGRvZXMgbm90IGFsbG93IHRoZSAnYXV0bycgdmFsdWUuCisgICAg
aWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZUF1dG8+KHJhbmdlLnBlZWsoKS5pZCgpKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNvbnN1bWVTZWxmUG9zaXRpb25PdmVyZmxv
d1Bvc2l0aW9uKHJhbmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lSnVzdGlmeUl0
ZW1zKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIENTU1BhcnNlclRva2VuUmFu
Z2UgcmFuZ2VDb3B5ID0gcmFuZ2U7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGxlZ2FjeSA9IGNv
bnN1bWVJZGVudDxDU1NWYWx1ZUxlZ2FjeT4ocmFuZ2VDb3B5KTsKKyAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcG9zaXRpb25LZXl3b3JkID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQ2VudGVyLCBDU1NW
YWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KHJhbmdlQ29weSk7CisgICAgaWYgKCFsZWdhY3kpCisg
ICAgICAgIGxlZ2FjeSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUxlZ2FjeT4ocmFuZ2VDb3B5KTsK
KyAgICBpZiAobGVnYWN5ICYmIHBvc2l0aW9uS2V5d29yZCkgeworICAgICAgICByYW5nZSA9IHJh
bmdlQ29weTsKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVlUGFpcjo6Y3JlYXRlKGxlZ2FjeSwgcG9z
aXRpb25LZXl3b3JkLCBDU1NWYWx1ZVBhaXI6OkRyb3BJZGVudGljYWxWYWx1ZXMpOworICAgIH0K
KyAgICByZXR1cm4gY29uc3VtZVNlbGZQb3NpdGlvbk92ZXJmbG93UG9zaXRpb24ocmFuZ2UpOwor
fQorCitzdGF0aWMgQ1NTQ3VzdG9tSWRlbnRWYWx1ZSogY29uc3VtZUN1c3RvbUlkZW50Rm9yR3Jp
ZExpbmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWso
KS5pZCgpID09IENTU1ZhbHVlQXV0byB8fCByYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZVNw
YW4pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjb25zdW1lQ3VzdG9tSWRl
bnQocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVHcmlkTGluZShDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NT
VmFsdWVBdXRvKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBzcGFuVmFsdWUgPSBudWxscHRyOworICAgIENTU0N1c3RvbUlkZW50
VmFsdWUqIGdyaWRMaW5lTmFtZSA9IG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIG51
bWVyaWNWYWx1ZSA9IGNvbnN1bWVJbnRlZ2VyKHJhbmdlKTsKKyAgICBpZiAobnVtZXJpY1ZhbHVl
KSB7CisgICAgICAgIGdyaWRMaW5lTmFtZSA9IGNvbnN1bWVDdXN0b21JZGVudEZvckdyaWRMaW5l
KHJhbmdlKTsKKyAgICAgICAgc3BhblZhbHVlID0gY29uc3VtZUlkZW50PENTU1ZhbHVlU3Bhbj4o
cmFuZ2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNwYW5WYWx1ZSA9IGNvbnN1bWVJZGVudDxD
U1NWYWx1ZVNwYW4+KHJhbmdlKTsKKyAgICAgICAgaWYgKHNwYW5WYWx1ZSkgeworICAgICAgICAg
ICAgbnVtZXJpY1ZhbHVlID0gY29uc3VtZUludGVnZXIocmFuZ2UpOworICAgICAgICAgICAgZ3Jp
ZExpbmVOYW1lID0gY29uc3VtZUN1c3RvbUlkZW50Rm9yR3JpZExpbmUocmFuZ2UpOworICAgICAg
ICAgICAgaWYgKCFudW1lcmljVmFsdWUpCisgICAgICAgICAgICAgICAgbnVtZXJpY1ZhbHVlID0g
Y29uc3VtZUludGVnZXIocmFuZ2UpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZ3Jp
ZExpbmVOYW1lID0gY29uc3VtZUN1c3RvbUlkZW50Rm9yR3JpZExpbmUocmFuZ2UpOworICAgICAg
ICAgICAgaWYgKGdyaWRMaW5lTmFtZSkgeworICAgICAgICAgICAgICAgIG51bWVyaWNWYWx1ZSA9
IGNvbnN1bWVJbnRlZ2VyKHJhbmdlKTsKKyAgICAgICAgICAgICAgICBzcGFuVmFsdWUgPSBjb25z
dW1lSWRlbnQ8Q1NTVmFsdWVTcGFuPihyYW5nZSk7CisgICAgICAgICAgICAgICAgaWYgKCFzcGFu
VmFsdWUgJiYgIW51bWVyaWNWYWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdyaWRM
aW5lTmFtZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc3BhblZh
bHVlICYmICFudW1lcmljVmFsdWUgJiYgIWdyaWRMaW5lTmFtZSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7IC8vICJzcGFuIiBrZXl3b3JkIGFsb25lIGlzIGludmFsaWQuCisgICAgaWYgKHNwYW5W
YWx1ZSAmJiBudW1lcmljVmFsdWUgJiYgbnVtZXJpY1ZhbHVlLT5nZXRJbnRWYWx1ZSgpIDwgMCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7IC8vIE5lZ2F0aXZlIG51bWJlcnMgYXJlIG5vdCBhbGxv
d2VkIGZvciBzcGFuLgorICAgIGlmIChudW1lcmljVmFsdWUgJiYgbnVtZXJpY1ZhbHVlLT5nZXRJ
bnRWYWx1ZSgpID09IDApCisgICAgICAgIHJldHVybiBudWxscHRyOyAvLyBBbiA8aW50ZWdlcj4g
dmFsdWUgb2YgemVybyBtYWtlcyB0aGUgZGVjbGFyYXRpb24gaW52YWxpZC4KKworICAgIENTU1Zh
bHVlTGlzdCogdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwor
ICAgIGlmIChzcGFuVmFsdWUpCisgICAgICAgIHZhbHVlcy0+YXBwZW5kKCpzcGFuVmFsdWUpOwor
ICAgIGlmIChudW1lcmljVmFsdWUpCisgICAgICAgIHZhbHVlcy0+YXBwZW5kKCpudW1lcmljVmFs
dWUpOworICAgIGlmIChncmlkTGluZU5hbWUpCisgICAgICAgIHZhbHVlcy0+YXBwZW5kKCpncmlk
TGluZU5hbWUpOworICAgIEFTU0VSVCh2YWx1ZXMtPmxlbmd0aCgpKTsKKyAgICByZXR1cm4gdmFs
dWVzOworfQorCitzdGF0aWMgYm9vbCBpc0dyaWRUcmFja0ZpeGVkU2l6ZWQoY29uc3QgQ1NTUHJp
bWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZhbHVlKQoreworICAgIENTU1ZhbHVlSUQgdmFsdWVJRCA9
IHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKTsKKyAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1
ZU1pbkNvbnRlbnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1heENvbnRlbnQgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUF1dG8gfHwgcHJpbWl0aXZlVmFsdWUuaXNGbGV4KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBpc0dyaWRUcmFj
a0ZpeGVkU2l6ZWQoY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoreworICAgIGlmICh2YWx1ZS5pc1By
aW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIHJldHVybiBpc0dyaWRUcmFja0ZpeGVkU2l6ZWQodG9D
U1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSkpOworCisgICAgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUm
IG1pblByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh0b0NTU0Z1bmN0aW9uVmFs
dWUodmFsdWUpLml0ZW0oMCkpOworICAgIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBtYXhQcmlt
aXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodG9DU1NGdW5jdGlvblZhbHVlKHZhbHVl
KS5pdGVtKDEpKTsKKyAgICByZXR1cm4gaXNHcmlkVHJhY2tGaXhlZFNpemVkKG1pblByaW1pdGl2
ZVZhbHVlKSB8fCBpc0dyaWRUcmFja0ZpeGVkU2l6ZWQobWF4UHJpbWl0aXZlVmFsdWUpOworfQor
CitzdGF0aWMgVmVjdG9yPFN0cmluZz4gcGFyc2VHcmlkVGVtcGxhdGVBcmVhc0NvbHVtbk5hbWVz
KGNvbnN0IFN0cmluZyYgZ3JpZFJvd05hbWVzKQoreworICAgIEFTU0VSVCghZ3JpZFJvd05hbWVz
LmlzRW1wdHkoKSk7CisgICAgVmVjdG9yPFN0cmluZz4gY29sdW1uTmFtZXM7CisgICAgLy8gVXNp
bmcgU3RyaW5nSW1wbCB0byBhdm9pZCBjaGVja3MgYW5kIGluZGlyZWN0aW9uIGluIGV2ZXJ5IGNh
bGwgdG8gU3RyaW5nOjpvcGVyYXRvcltdLgorICAgIFN0cmluZ0ltcGwmIHRleHQgPSAqZ3JpZFJv
d05hbWVzLmltcGwoKTsKKworICAgIFN0cmluZ0J1aWxkZXIgYXJlYU5hbWU7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHRleHQubGVuZ3RoKCk7ICsraSkgeworICAgICAgICBpZiAoaXND
U1NTcGFjZSh0ZXh0W2ldKSkgeworICAgICAgICAgICAgaWYgKCFhcmVhTmFtZS5pc0VtcHR5KCkp
IHsKKyAgICAgICAgICAgICAgICBjb2x1bW5OYW1lcy5hcHBlbmQoYXJlYU5hbWUudG9TdHJpbmco
KSk7CisgICAgICAgICAgICAgICAgYXJlYU5hbWUuY2xlYXIoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICh0ZXh0W2ldID09ICcu
JykgeworICAgICAgICAgICAgaWYgKGFyZWFOYW1lID09ICIuIikKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIGlmICghYXJlYU5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAg
ICAgICAgICAgY29sdW1uTmFtZXMuYXBwZW5kKGFyZWFOYW1lLnRvU3RyaW5nKCkpOworICAgICAg
ICAgICAgICAgIGFyZWFOYW1lLmNsZWFyKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBpZiAoIWlzTmFtZUNvZGVQb2ludCh0ZXh0W2ldKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKKyAgICAgICAgICAgIGlmIChhcmVhTmFt
ZSA9PSAiLiIpIHsKKyAgICAgICAgICAgICAgICBjb2x1bW5OYW1lcy5hcHBlbmQoYXJlYU5hbWUu
dG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgYXJlYU5hbWUuY2xlYXIoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGFyZWFOYW1lLmFwcGVuZCh0ZXh0W2ldKTsKKyAg
ICB9CisKKyAgICBpZiAoIWFyZWFOYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgY29sdW1uTmFtZXMu
YXBwZW5kKGFyZWFOYW1lLnRvU3RyaW5nKCkpOworCisgICAgcmV0dXJuIGNvbHVtbk5hbWVzOwor
fQorCitzdGF0aWMgYm9vbCBwYXJzZUdyaWRUZW1wbGF0ZUFyZWFzUm93KGNvbnN0IFN0cmluZyYg
Z3JpZFJvd05hbWVzLCBOYW1lZEdyaWRBcmVhTWFwJiBncmlkQXJlYU1hcCwgY29uc3Qgc2l6ZV90
IHJvd0NvdW50LCBzaXplX3QmIGNvbHVtbkNvdW50KQoreworICAgIGlmIChncmlkUm93TmFtZXMu
aXNFbXB0eSgpIHx8IGdyaWRSb3dOYW1lcy5jb250YWluc09ubHlXaGl0ZXNwYWNlKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIFZlY3RvcjxTdHJpbmc+IGNvbHVtbk5hbWVzID0gcGFy
c2VHcmlkVGVtcGxhdGVBcmVhc0NvbHVtbk5hbWVzKGdyaWRSb3dOYW1lcyk7CisgICAgaWYgKHJv
d0NvdW50ID09IDApIHsKKyAgICAgICAgY29sdW1uQ291bnQgPSBjb2x1bW5OYW1lcy5zaXplKCk7
CisgICAgICAgIGlmIChjb2x1bW5Db3VudCA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0gZWxzZSBpZiAoY29sdW1uQ291bnQgIT0gY29sdW1uTmFtZXMuc2l6ZSgpKSB7Cisg
ICAgICAgIC8vIFRoZSBkZWNsYXJhdGlvbiBpcyBpbnZhbGlkIGlmIGFsbCB0aGUgcm93cyBkb24n
dCBoYXZlIHRoZSBudW1iZXIgb2YgY29sdW1ucy4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGZvciAoc2l6ZV90IGN1cnJlbnRDb2x1bW4gPSAwOyBjdXJyZW50Q29sdW1uIDwg
Y29sdW1uQ291bnQ7ICsrY3VycmVudENvbHVtbikgeworICAgICAgICBjb25zdCBTdHJpbmcmIGdy
aWRBcmVhTmFtZSA9IGNvbHVtbk5hbWVzW2N1cnJlbnRDb2x1bW5dOworCisgICAgICAgIC8vIFVu
YW1lZCBhcmVhcyBhcmUgYWx3YXlzIHZhbGlkICh3ZSBjb25zaWRlciB0aGVtIHRvIGJlIDF4MSku
CisgICAgICAgIGlmIChncmlkQXJlYU5hbWUgPT0gIi4iKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgc2l6ZV90IGxvb2tBaGVhZENvbHVtbiA9IGN1cnJlbnRDb2x1bW4gKyAxOwor
ICAgICAgICB3aGlsZSAobG9va0FoZWFkQ29sdW1uIDwgY29sdW1uQ291bnQgJiYgY29sdW1uTmFt
ZXNbbG9va0FoZWFkQ29sdW1uXSA9PSBncmlkQXJlYU5hbWUpCisgICAgICAgICAgICBsb29rQWhl
YWRDb2x1bW4rKzsKKworICAgICAgICBOYW1lZEdyaWRBcmVhTWFwOjppdGVyYXRvciBncmlkQXJl
YUl0ID0gZ3JpZEFyZWFNYXAuZmluZChncmlkQXJlYU5hbWUpOworICAgICAgICBpZiAoZ3JpZEFy
ZWFJdCA9PSBncmlkQXJlYU1hcC5lbmQoKSkgeworICAgICAgICAgICAgZ3JpZEFyZWFNYXAuYWRk
KGdyaWRBcmVhTmFtZSwgR3JpZEFyZWEoR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRT
cGFuKHJvd0NvdW50LCByb3dDb3VudCArIDEpLCBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRl
R3JpZFNwYW4oY3VycmVudENvbHVtbiwgbG9va0FoZWFkQ29sdW1uKSkpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgR3JpZEFyZWEmIGdyaWRBcmVhID0gZ3JpZEFyZWFJdC0+dmFsdWU7
CisKKyAgICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgY2hlY2tzIHRlc3QgdGhhdCB0aGUgZ3Jp
ZCBhcmVhIGlzIGEgc2luZ2xlIGZpbGxlZC1pbiByZWN0YW5nbGUuCisgICAgICAgICAgICAvLyAx
LiBUaGUgbmV3IHJvdyBpcyBhZGphY2VudCB0byB0aGUgcHJldmlvdXNseSBwYXJzZWQgcm93Lgor
ICAgICAgICAgICAgaWYgKHJvd0NvdW50ICE9IGdyaWRBcmVhLnJvd3MuZW5kTGluZSgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgLy8gMi4gVGhlIG5ldyBh
cmVhIHN0YXJ0cyBhdCB0aGUgc2FtZSBwb3NpdGlvbiBhcyB0aGUgcHJldmlvdXNseSBwYXJzZWQg
YXJlYS4KKyAgICAgICAgICAgIGlmIChjdXJyZW50Q29sdW1uICE9IGdyaWRBcmVhLmNvbHVtbnMu
c3RhcnRMaW5lKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAg
ICAvLyAzLiBUaGUgbmV3IGFyZWEgZW5kcyBhdCB0aGUgc2FtZSBwb3NpdGlvbiBhcyB0aGUgcHJl
dmlvdXNseSBwYXJzZWQgYXJlYS4KKyAgICAgICAgICAgIGlmIChsb29rQWhlYWRDb2x1bW4gIT0g
Z3JpZEFyZWEuY29sdW1ucy5lbmRMaW5lKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgICAgICBncmlkQXJlYS5yb3dzID0gR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZp
bml0ZUdyaWRTcGFuKGdyaWRBcmVhLnJvd3Muc3RhcnRMaW5lKCksIGdyaWRBcmVhLnJvd3MuZW5k
TGluZSgpICsgMSk7CisgICAgICAgIH0KKyAgICAgICAgY3VycmVudENvbHVtbiA9IGxvb2tBaGVh
ZENvbHVtbiAtIDE7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBDU1NQ
cmltaXRpdmVWYWx1ZSogY29uc3VtZUdyaWRCcmVhZHRoKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgY29uc3QgQ1NTUGFyc2Vy
VG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOworICAgIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFs
dWVNaW5Db250ZW50LCBDU1NWYWx1ZU1heENvbnRlbnQsIENTU1ZhbHVlQXV0bz4odG9rZW4uaWQo
KSkpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIGlmICh0b2tlbi50
eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4gJiYgdG9rZW4udW5pdFR5cGUoKSA9PSBDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGU6OkZyYWN0aW9uKSB7CisgICAgICAgIGlmIChyYW5nZS5wZWVrKCku
bnVtZXJpY1ZhbHVlKCkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdX
aGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6
RnJhY3Rpb24pOworICAgIH0KKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5n
ZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlLCBVbml0bGVzc1F1aXJrOjpB
bGxvdyk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUdyaWRUcmFja1NpemUoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAg
ICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CisgICAgaWYgKGlk
ZW50TWF0Y2hlczxDU1NWYWx1ZUF1dG8+KHRva2VuLmlkKCkpKQorICAgICAgICByZXR1cm4gY29u
c3VtZUlkZW50KHJhbmdlKTsKKworICAgIGlmICh0b2tlbi5mdW5jdGlvbklkKCkgPT0gQ1NTVmFs
dWVNaW5tYXgpIHsKKyAgICAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSByYW5n
ZTsKKyAgICAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJh
bmdlQ29weSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBtaW5UcmFja0JyZWFkdGggPSBj
b25zdW1lR3JpZEJyZWFkdGgoYXJncywgY3NzUGFyc2VyTW9kZSk7CisgICAgICAgIGlmICghbWlu
VHJhY2tCcmVhZHRoIHx8IG1pblRyYWNrQnJlYWR0aC0+aXNGbGV4KCkgfHwgIWNvbnN1bWVDb21t
YUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIG1heFRyYWNrQnJlYWR0aCA9IGNvbnN1bWVHcmlk
QnJlYWR0aChhcmdzLCBjc3NQYXJzZXJNb2RlKTsKKyAgICAgICAgaWYgKCFtYXhUcmFja0JyZWFk
dGggfHwgIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICByYW5nZSA9IHJhbmdlQ29weTsKKyAgICAgICAgQ1NTRnVuY3Rpb25WYWx1ZSogcmVzdWx0ID0g
Q1NTRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKENTU1ZhbHVlTWlubWF4KTsKKyAgICAgICAgcmVzdWx0
LT5hcHBlbmQoKm1pblRyYWNrQnJlYWR0aCk7CisgICAgICAgIHJlc3VsdC0+YXBwZW5kKCptYXhU
cmFja0JyZWFkdGgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICByZXR1cm4g
Y29uc3VtZUdyaWRCcmVhZHRoKHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKK30KKworLy8gQXBwZW5k
cyB0byB0aGUgcGFzc2VkIGluIENTU0dyaWRMaW5lTmFtZXNWYWx1ZSBpZiBhbnksIG90aGVyd2lz
ZSBjcmVhdGVzIGEgbmV3IG9uZS4KK3N0YXRpYyBDU1NHcmlkTGluZU5hbWVzVmFsdWUqIGNvbnN1
bWVHcmlkTGluZU5hbWVzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NHcmlkTGluZU5h
bWVzVmFsdWUqIGxpbmVOYW1lcyA9IG51bGxwdHIpCit7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5n
ZSByYW5nZUNvcHkgPSByYW5nZTsKKyAgICBpZiAocmFuZ2VDb3B5LmNvbnN1bWVJbmNsdWRpbmdX
aGl0ZXNwYWNlKCkudHlwZSgpICE9IExlZnRCcmFja2V0VG9rZW4pCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIGlmICghbGluZU5hbWVzKQorICAgICAgICBsaW5lTmFtZXMgPSBDU1NHcmlk
TGluZU5hbWVzVmFsdWU6OmNyZWF0ZSgpOworICAgIHdoaWxlIChDU1NDdXN0b21JZGVudFZhbHVl
KiBsaW5lTmFtZSA9IGNvbnN1bWVDdXN0b21JZGVudEZvckdyaWRMaW5lKHJhbmdlQ29weSkpCisg
ICAgICAgIGxpbmVOYW1lcy0+YXBwZW5kKCpsaW5lTmFtZSk7CisgICAgaWYgKHJhbmdlQ29weS5j
b25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLnR5cGUoKSAhPSBSaWdodEJyYWNrZXRUb2tlbikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmFuZ2UgPSByYW5nZUNvcHk7CisgICAgcmV0
dXJuIGxpbmVOYW1lczsKK30KKworc3RhdGljIGJvb2wgY29uc3VtZUdyaWRUcmFja1JlcGVhdEZ1
bmN0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNl
ck1vZGUsIENTU1ZhbHVlTGlzdCYgbGlzdCwgYm9vbCYgaXNBdXRvUmVwZWF0LCBib29sJiBhbGxU
cmFja3NBcmVGaXhlZFNpemVkKQoreworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYXJncyA9IGNv
bnN1bWVGdW5jdGlvbihyYW5nZSk7CisgICAgLy8gVGhlIG51bWJlciBvZiByZXBldGl0aW9ucyBm
b3IgPGF1dG8tcmVwZWF0PiBpcyBub3QgaW1wb3J0YW50IGF0IHBhcnNpbmcgbGV2ZWwKKyAgICAv
LyBiZWNhdXNlIGl0IHdpbGwgYmUgY29tcHV0ZWQgbGF0ZXIsIGxldCdzIHNldCBpdCB0byAxLgor
ICAgIHNpemVfdCByZXBldGl0aW9ucyA9IDE7CisgICAgaXNBdXRvUmVwZWF0ID0gaWRlbnRNYXRj
aGVzPENTU1ZhbHVlQXV0b0ZpbGwsIENTU1ZhbHVlQXV0b0ZpdD4oYXJncy5wZWVrKCkuaWQoKSk7
CisgICAgQ1NTVmFsdWVMaXN0KiByZXBlYXRlZFZhbHVlczsKKyAgICBpZiAoaXNBdXRvUmVwZWF0
KSB7CisgICAgICAgIHJlcGVhdGVkVmFsdWVzID0gQ1NTR3JpZEF1dG9SZXBlYXRWYWx1ZTo6Y3Jl
YXRlKGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICAvLyBGSVhNRTogYSBjb25zdW1lSW50ZWdlclJhdyB3b3VsZCBiZSBtb3JlIGVm
ZmljaWVudCBoZXJlLgorICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcmVwZXRpdGlvbiA9IGNv
bnN1bWVQb3NpdGl2ZUludGVnZXIoYXJncyk7CisgICAgICAgIGlmICghcmVwZXRpdGlvbikKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmVwZXRpdGlvbnMgPSBjbGFtcFRvPHNp
emVfdD4ocmVwZXRpdGlvbi0+Z2V0RG91YmxlVmFsdWUoKSwgMCwga0dyaWRNYXhUcmFja3MpOwor
ICAgICAgICByZXBlYXRlZFZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0
ZWQoKTsKKyAgICB9CisgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFy
Z3MpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQ1NTR3JpZExpbmVOYW1lc1ZhbHVlKiBs
aW5lTmFtZXMgPSBjb25zdW1lR3JpZExpbmVOYW1lcyhhcmdzKTsKKyAgICBpZiAobGluZU5hbWVz
KQorICAgICAgICByZXBlYXRlZFZhbHVlcy0+YXBwZW5kKCpsaW5lTmFtZXMpOworCisgICAgc2l6
ZV90IG51bWJlck9mVHJhY2tzID0gMDsKKyAgICB3aGlsZSAoIWFyZ3MuYXRFbmQoKSkgeworICAg
ICAgICBDU1NWYWx1ZSogdHJhY2tTaXplID0gY29uc3VtZUdyaWRUcmFja1NpemUoYXJncywgY3Nz
UGFyc2VyTW9kZSk7CisgICAgICAgIGlmICghdHJhY2tTaXplKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBpZiAoYWxsVHJhY2tzQXJlRml4ZWRTaXplZCkKKyAgICAgICAgICAg
IGFsbFRyYWNrc0FyZUZpeGVkU2l6ZWQgPSBpc0dyaWRUcmFja0ZpeGVkU2l6ZWQoKnRyYWNrU2l6
ZSk7CisgICAgICAgIHJlcGVhdGVkVmFsdWVzLT5hcHBlbmQoKnRyYWNrU2l6ZSk7CisgICAgICAg
ICsrbnVtYmVyT2ZUcmFja3M7CisgICAgICAgIGxpbmVOYW1lcyA9IGNvbnN1bWVHcmlkTGluZU5h
bWVzKGFyZ3MpOworICAgICAgICBpZiAobGluZU5hbWVzKQorICAgICAgICAgICAgcmVwZWF0ZWRW
YWx1ZXMtPmFwcGVuZCgqbGluZU5hbWVzKTsKKyAgICB9CisgICAgLy8gV2Ugc2hvdWxkIGhhdmUg
Zm91bmQgYXQgbGVhc3Qgb25lIDx0cmFjay1zaXplPiBvciBlbHNlIGl0IGlzIG5vdCBhIHZhbGlk
IDx0cmFjay1saXN0Pi4KKyAgICBpZiAoIW51bWJlck9mVHJhY2tzKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoaXNBdXRvUmVwZWF0KSB7CisgICAgICAgIGxpc3QuYXBwZW5kKCpy
ZXBlYXRlZFZhbHVlcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gV2UgY2xhbXAgdGhlIHJl
cGV0aXRpb25zIHRvIGEgbXVsdGlwbGUgb2YgdGhlIHJlcGVhdCgpIHRyYWNrIGxpc3QncyBzaXpl
LCB3aGlsZSBzdGF5aW5nIGJlbG93IHRoZSBtYXggZ3JpZCBzaXplLgorICAgICAgICByZXBldGl0
aW9ucyA9IHN0ZDo6bWluKHJlcGV0aXRpb25zLCBrR3JpZE1heFRyYWNrcyAvIG51bWJlck9mVHJh
Y2tzKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXBldGl0aW9uczsgKytpKSB7
CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IHJlcGVhdGVkVmFsdWVzLT5sZW5n
dGgoKTsgKytqKQorICAgICAgICAgICAgICAgIGxpc3QuYXBwZW5kKHJlcGVhdGVkVmFsdWVzLT5p
dGVtKGopKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZW51bSBU
cmFja0xpc3RUeXBlIHsgR3JpZFRlbXBsYXRlLCBHcmlkVGVtcGxhdGVOb1JlcGVhdCwgR3JpZEF1
dG8gfTsKKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lR3JpZFRyYWNrTGlzdChDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBUcmFja0xpc3RU
eXBlIHRyYWNrTGlzdFR5cGUpCit7CisgICAgYm9vbCBhbGxvd0dyaWRMaW5lTmFtZXMgPSB0cmFj
a0xpc3RUeXBlICE9IEdyaWRBdXRvOworICAgIENTU1ZhbHVlTGlzdCogdmFsdWVzID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIENTU0dyaWRMaW5lTmFtZXNWYWx1
ZSogbGluZU5hbWVzID0gY29uc3VtZUdyaWRMaW5lTmFtZXMocmFuZ2UpOworICAgIGlmIChsaW5l
TmFtZXMpIHsKKyAgICAgICAgaWYgKCFhbGxvd0dyaWRMaW5lTmFtZXMpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgdmFsdWVzLT5hcHBlbmQoKmxpbmVOYW1lcyk7CisgICAg
fQorCisgICAgYm9vbCBhbGxvd1JlcGVhdCA9IHRyYWNrTGlzdFR5cGUgPT0gR3JpZFRlbXBsYXRl
OworICAgIGJvb2wgc2VlbkF1dG9SZXBlYXQgPSBmYWxzZTsKKyAgICBib29sIGFsbFRyYWNrc0Fy
ZUZpeGVkU2l6ZWQgPSB0cnVlOworICAgIGRvIHsKKyAgICAgICAgYm9vbCBpc0F1dG9SZXBlYXQ7
CisgICAgICAgIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlUmVwZWF0
KSB7CisgICAgICAgICAgICBpZiAoIWFsbG93UmVwZWF0KQorICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICAgICAgaWYgKCFjb25zdW1lR3JpZFRyYWNrUmVwZWF0RnVuY3Rp
b24ocmFuZ2UsIGNzc1BhcnNlck1vZGUsICp2YWx1ZXMsIGlzQXV0b1JlcGVhdCwgYWxsVHJhY2tz
QXJlRml4ZWRTaXplZCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
ICAgICBpZiAoaXNBdXRvUmVwZWF0ICYmIHNlZW5BdXRvUmVwZWF0KQorICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICAgICAgc2VlbkF1dG9SZXBlYXQgPSBzZWVuQXV0b1Jl
cGVhdCB8fCBpc0F1dG9SZXBlYXQ7CisgICAgICAgIH0gZWxzZSBpZiAoQ1NTVmFsdWUqIHZhbHVl
ID0gY29uc3VtZUdyaWRUcmFja1NpemUocmFuZ2UsIGNzc1BhcnNlck1vZGUpKSB7CisgICAgICAg
ICAgICBpZiAoYWxsVHJhY2tzQXJlRml4ZWRTaXplZCkKKyAgICAgICAgICAgICAgICBhbGxUcmFj
a3NBcmVGaXhlZFNpemVkID0gaXNHcmlkVHJhY2tGaXhlZFNpemVkKCp2YWx1ZSk7CisgICAgICAg
ICAgICB2YWx1ZXMtPmFwcGVuZCgqdmFsdWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNlZW5BdXRvUmVwZWF0
ICYmICFhbGxUcmFja3NBcmVGaXhlZFNpemVkKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIGxpbmVOYW1lcyA9IGNvbnN1bWVHcmlkTGluZU5hbWVzKHJhbmdlKTsKKyAgICAg
ICAgaWYgKGxpbmVOYW1lcykgeworICAgICAgICAgICAgaWYgKCFhbGxvd0dyaWRMaW5lTmFtZXMp
CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICB2YWx1ZXMtPmFw
cGVuZCgqbGluZU5hbWVzKTsKKyAgICAgICAgfQorICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgp
ICYmIHJhbmdlLnBlZWsoKS50eXBlKCkgIT0gRGVsaW1pdGVyVG9rZW4pOworICAgIHJldHVybiB2
YWx1ZXM7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUdyaWRUZW1wbGF0ZXNSb3dzT3JD
b2x1bW5zKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNl
ck1vZGUpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVHcmlk
VHJhY2tMaXN0KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBHcmlkVGVtcGxhdGUpOworfQorCitzdGF0
aWMgQ1NTVmFsdWUqIGNvbnN1bWVHcmlkVGVtcGxhdGVBcmVhcyhDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQor
ICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIE5hbWVkR3JpZEFyZWFN
YXAgZ3JpZEFyZWFNYXA7CisgICAgc2l6ZV90IHJvd0NvdW50ID0gMDsKKyAgICBzaXplX3QgY29s
dW1uQ291bnQgPSAwOworCisgICAgd2hpbGUgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gU3RyaW5n
VG9rZW4pIHsKKyAgICAgICAgaWYgKCFwYXJzZUdyaWRUZW1wbGF0ZUFyZWFzUm93KHJhbmdlLmNv
bnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b1N0cmluZygpLCBncmlkQXJlYU1h
cCwgcm93Q291bnQsIGNvbHVtbkNvdW50KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICArK3Jvd0NvdW50OworICAgIH0KKworICAgIGlmIChyb3dDb3VudCA9PSAwKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBBU1NFUlQoY29sdW1uQ291bnQpOworICAgIHJldHVy
biBDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlOjpjcmVhdGUoZ3JpZEFyZWFNYXAsIHJvd0NvdW50
LCBjb2x1bW5Db3VudCk7Cit9CisKK3N0YXRpYyB2b2lkIGNvdW50S2V5d29yZE9ubHlQcm9wZXJ0
eVVzYWdlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIFVzZUNvdW50ZXIqIGNvdW50ZXIsIENTU1Zh
bHVlSUQgdmFsdWVJRCkKK3sKKyAgICBpZiAoIWNvdW50ZXIpCisgICAgICAgIHJldHVybjsKKyAg
ICBzd2l0Y2ggKHByb3BlcnR5KSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFu
Y2U6CisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSkgeworICAgICAgICAgICAg
Y291bnRlci0+Y291bnQoVXNlQ291bnRlcjo6Q1NTVmFsdWVBcHBlYXJhbmNlTm9uZSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb3VudGVyLT5jb3VudChVc2VDb3VudGVyOjpDU1NW
YWx1ZUFwcGVhcmFuY2VOb3ROb25lKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1Zh
bHVlQnV0dG9uKQorICAgICAgICAgICAgICAgIGNvdW50ZXItPmNvdW50KFVzZUNvdW50ZXI6OkNT
U1ZhbHVlQXBwZWFyYW5jZUJ1dHRvbik7CisgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZUlEID09
IENTU1ZhbHVlQ2FyZXQpCisgICAgICAgICAgICAgICAgY291bnRlci0+Y291bnQoVXNlQ291bnRl
cjo6Q1NTVmFsdWVBcHBlYXJhbmNlQ2FyZXQpOworICAgICAgICAgICAgZWxzZSBpZiAodmFsdWVJ
RCA9PSBDU1NWYWx1ZUNoZWNrYm94KQorICAgICAgICAgICAgICAgIGNvdW50ZXItPmNvdW50KFVz
ZUNvdW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5jZUNoZWNrYm94KTsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVNZW51bGlzdCkKKyAgICAgICAgICAgICAgICBjb3VudGVy
LT5jb3VudChVc2VDb3VudGVyOjpDU1NWYWx1ZUFwcGVhcmFuY2VNZW51bGlzdCk7CisgICAgICAg
ICAgICBlbHNlIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlTWVudWxpc3RCdXR0b24pCisgICAgICAg
ICAgICAgICAgY291bnRlci0+Y291bnQoVXNlQ291bnRlcjo6Q1NTVmFsdWVBcHBlYXJhbmNlTWVu
dWxpc3RCdXR0b24pOworICAgICAgICAgICAgZWxzZSBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUxp
c3Rib3gpCisgICAgICAgICAgICAgICAgY291bnRlci0+Y291bnQoVXNlQ291bnRlcjo6Q1NTVmFs
dWVBcHBlYXJhbmNlTGlzdGJveCk7CisgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZUlEID09IENT
U1ZhbHVlUmFkaW8pCisgICAgICAgICAgICAgICAgY291bnRlci0+Y291bnQoVXNlQ291bnRlcjo6
Q1NTVmFsdWVBcHBlYXJhbmNlUmFkaW8pOworICAgICAgICAgICAgZWxzZSBpZiAodmFsdWVJRCA9
PSBDU1NWYWx1ZVNlYXJjaGZpZWxkKQorICAgICAgICAgICAgICAgIGNvdW50ZXItPmNvdW50KFVz
ZUNvdW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5jZVNlYXJjaEZpZWxkKTsKKyAgICAgICAgICAgIGVs
c2UgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVUZXh0ZmllbGQpCisgICAgICAgICAgICAgICAgY291
bnRlci0+Y291bnQoVXNlQ291bnRlcjo6Q1NTVmFsdWVBcHBlYXJhbmNlVGV4dEZpZWxkKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb3VudGVyLT5jb3VudChVc2VDb3VudGVy
OjpDU1NWYWx1ZUFwcGVhcmFuY2VPdGhlcnMpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitjb25zdCBDU1NWYWx1
ZSogQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlJRCB1bnJl
c29sdmVkUHJvcGVydHksIENTU1Byb3BlcnR5SUQgY3VycmVudFNob3J0aGFuZCkKK3sKKyAgICBD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5ID0gcmVzb2x2ZUNTU1Byb3BlcnR5SUQodW5yZXNvbHZlZFBy
b3BlcnR5KTsKKyAgICBpZiAoQ1NTUGFyc2VyRmFzdFBhdGhzOjppc0tleXdvcmRQcm9wZXJ0eUlE
KHByb3BlcnR5KSkgeworICAgICAgICBpZiAoIUNTU1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtl
eXdvcmRQcm9wZXJ0eUFuZFZhbHVlKHByb3BlcnR5LCBtX3JhbmdlLnBlZWsoKS5pZCgpLCBtX2Nv
bnRleHQubW9kZSgpKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBjb3Vu
dEtleXdvcmRPbmx5UHJvcGVydHlVc2FnZShwcm9wZXJ0eSwgbV9jb250ZXh0LnVzZUNvdW50ZXIo
KSwgbV9yYW5nZS5wZWVrKCkuaWQoKSk7CisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQobV9y
YW5nZSk7CisgICAgfQorICAgIHN3aXRjaCAocHJvcGVydHkpIHsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2lsbENoYW5nZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVXaWxsQ2hhbmdlKG1fcmFuZ2Up
OworICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlOgorICAgICAgICByZXR1cm4gY29uc3VtZVBhZ2Uo
bV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVF1b3RlczoKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVRdW90ZXMobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEhpZ2hsaWdo
dDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVXZWJraXRIaWdobGlnaHQobV9yYW5nZSk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50Q2FwczoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVG
b250VmFyaWFudENhcHMobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50
TGlnYXR1cmVzOgorICAgICAgICByZXR1cm4gY29uc3VtZUZvbnRWYXJpYW50TGlnYXR1cmVzKG1f
cmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250VmFyaWFudE51bWVyaWM6CisgICAgICAg
IHJldHVybiBjb25zdW1lRm9udFZhcmlhbnROdW1lcmljKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlGb250RmVhdHVyZVNldHRpbmdzOgorICAgICAgICByZXR1cm4gY29uc3VtZUZvbnRG
ZWF0dXJlU2V0dGluZ3MobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRGYW1pbHk6
CisgICAgICAgIHJldHVybiBjb25zdW1lRm9udEZhbWlseShtX3JhbmdlKTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5Rm9udFdlaWdodDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVGb250V2VpZ2h0KG1f
cmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXb3JkU3BhY2luZzoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTcGFjaW5nKG1fcmFu
Z2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlUYWJTaXplOgorICAg
ICAgICByZXR1cm4gY29uc3VtZVRhYlNpemUobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRTaXplQWRqdXN0OgorICAgICAgICByZXR1cm4gY29uc3Vt
ZVRleHRTaXplQWRqdXN0KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlGb250U2l6ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVGb250U2l6ZShtX3Jhbmdl
LCBtX2NvbnRleHQubW9kZSgpLCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUxpbmVIZWlnaHQ6CisgICAgICAgIHJldHVybiBjb25zdW1lTGluZUhlaWdodChtX3Jh
bmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Um90YXRlOgorICAg
ICAgICByZXR1cm4gY29uc3VtZVJvdGF0aW9uKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlTY2FsZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTY2FsZShtX3JhbmdlKTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5VHJhbnNsYXRlOgorICAgICAgICByZXR1cm4gY29uc3VtZVRyYW5zbGF0ZSht
X3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVySG9yaXpvbnRhbFNwYWNpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZl
cnRpY2FsU3BhY2luZzoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGgobV9yYW5nZSwgbV9j
b250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Q291bnRlckluY3JlbWVudDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q291bnRlclJlc2V0Ogor
ICAgICAgICByZXR1cm4gY29uc3VtZUNvdW50ZXIobV9yYW5nZSwgcHJvcGVydHkgPT0gQ1NTUHJv
cGVydHlDb3VudGVySW5jcmVtZW50ID8gMSA6IDApOworICAgIGNhc2UgQ1NTUHJvcGVydHlTaXpl
OgorICAgICAgICByZXR1cm4gY29uc3VtZVNpemUobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNuYXBIZWlnaHQ6CisgICAgICAgIHJldHVybiBjb25zdW1l
U25hcEhlaWdodChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5VGV4dEluZGVudDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVUZXh0SW5kZW50KG1fcmFuZ2Us
IG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhXaWR0aDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5TWF4SGVpZ2h0OgorICAgICAgICByZXR1cm4gY29uc3VtZU1heFdpZHRo
T3JIZWlnaHQobV9yYW5nZSwgbV9jb250ZXh0LCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxXaWR0aDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWF4TG9naWNhbEhlaWdodDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVNYXhXaWR0
aE9ySGVpZ2h0KG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbldp
ZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5IZWlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlIZWlnaHQ6CisgICAgICAgIHJldHVybiBjb25z
dW1lV2lkdGhPckhlaWdodChtX3JhbmdlLCBtX2NvbnRleHQsIFVuaXRsZXNzUXVpcms6OkFsbG93
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbFdpZHRoOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsSGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRMb2dpY2FsV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxIZWln
aHQ6CisgICAgICAgIHJldHVybiBjb25zdW1lV2lkdGhPckhlaWdodChtX3JhbmdlLCBtX2NvbnRl
eHQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5Ub3A6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eU1hcmdpblJpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b206CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvdHRvbToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5TGVmdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5UmlnaHQ6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVRvcDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVNYXJnaW5Pck9mZnNl
dChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblN0YXJ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5FbmQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZToK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXI6CisgICAgICAgIHJldHVybiBj
b25zdW1lTWFyZ2luT3JPZmZzZXQobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVW5pdGxlc3NR
dWlyazo6Rm9yYmlkKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1RvcDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nQm90
dG9tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nTGVmdDoKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVMZW5ndGhPclBlcmNlbnQobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5n
ZU5vbk5lZ2F0aXZlLCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFBhZGRpbmdTdGFydDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0Vu
ZDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0JlZm9yZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0UGFkZGluZ0FmdGVyOgorICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0
aE9yUGVyY2VudChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlTm9uTmVnYXRp
dmUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNsaXA6Cisg
ICAgICAgIHJldHVybiBjb25zdW1lQ2xpcChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5VG91Y2hBY3Rpb246CisgICAgICAgIHJldHVybiBjb25zdW1lVG91
Y2hBY3Rpb24obV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNjcm9sbFNuYXBEZXN0aW5h
dGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5T2JqZWN0UG9zaXRpb246CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVBlcnNwZWN0aXZlT3JpZ2luOgorICAgICAgICByZXR1cm4gY29uc3VtZVBvc2l0aW9u
KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVDbGFtcDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVM
aW5lQ2xhbXAobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTaXplRGVs
dGE6CisgICAgICAgIHJldHVybiBjb25zdW1lTGVuZ3RoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2Rl
KCksIFZhbHVlUmFuZ2VBbGwsIFVuaXRsZXNzUXVpcms6OkFsbG93KTsKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRMb2NhbGU6CisgICAgICAgIHJldHVybiBjb25zdW1lTG9jYWxlKG1fcmFuZ2UpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlDb2x1bW5XaWR0aDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb2x1bW5X
aWR0aChtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1uQ291bnQ6CisgICAgICAg
IHJldHVybiBjb25zdW1lQ29sdW1uQ291bnQobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUNvbHVtbkdhcDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb2x1bW5HYXAobV9yYW5nZSwgbV9j
b250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVtblNwYW46CisgICAgICAg
IHJldHVybiBjb25zdW1lQ29sdW1uU3BhbihtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
Wm9vbToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVab29tKG1fcmFuZ2UsIG1fY29udGV4dCk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkRlbGF5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlU
cmFuc2l0aW9uRGVsYXk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkRpcmVjdGlvbjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uRHVyYXRpb246CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRyYW5zaXRpb25EdXJhdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uRmls
bE1vZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OgorICAg
IGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25OYW1lOgorICAgIGNhc2UgQ1NTUHJvcGVydHlBbmlt
YXRpb25QbGF5U3RhdGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25Qcm9wZXJ0eToK
KyAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uVGltaW5nRnVuY3Rpb246CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbjoKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVBbmltYXRpb25Qcm9wZXJ0eUxpc3QocHJvcGVydHksIG1fcmFuZ2UsIG1fY29udGV4dCwgdW5y
ZXNvbHZlZFByb3BlcnR5ID09IENTU1Byb3BlcnR5QWxpYXNXZWJraXRBbmltYXRpb25OYW1lKTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZENvbHVtbkdhcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
R3JpZFJvd0dhcDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGgobV9yYW5nZSwgbV9jb250
ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
U2hhcGVNYXJnaW46CisgICAgICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KG1fcmFu
Z2UsIG1fY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVNoYXBlSW1hZ2VUaHJlc2hvbGQ6CisgICAgICAgIHJldHVybiBjb25zdW1lTnVt
YmVyKG1fcmFuZ2UsIFZhbHVlUmFuZ2VBbGwpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3hPcmRpbmFsR3JvdXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9ycGhhbnM6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdpZG93czoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVQb3NpdGl2ZUludGVnZXIo
bV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uQ29sb3I6CisgICAg
ICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3MzVGV4dERlY29yYXRpb25zRW5h
YmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb2xvcihtX3JhbmdlLCBtX2NvbnRleHQu
bW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoOgorICAg
ICAgICByZXR1cm4gY29uc3VtZVRleHRTdHJva2VXaWR0aChtX3JhbmdlLCBtX2NvbnRleHQubW9k
ZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJTdGFydENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvcjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlQ29sb3I6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRTdHJva2VDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5U3RvcENvbG9yOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlGbG9vZENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlMaWdodGlu
Z0NvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDb2x1bW5SdWxlQ29sb3I6CisgICAgICAgIHJl
dHVybiBjb25zdW1lQ29sb3IobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3I6Cisg
ICAgICAgIHJldHVybiBjb25zdW1lQ29sb3IobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgaW5R
dWlya3NNb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFdpZHRo
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckFmdGVyV2lkdGg6CisgICAgICAgIHJldHVybiBjb25zdW1lQm9yZGVyV2lkdGgo
bV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJv
cmRlckxlZnRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcjoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3I6IHsKKyAgICAgICAgYm9vbCBhbGxvd1F1
aXJreUNvbG9ycyA9IGluUXVpcmtzTW9kZSgpCisgICAgICAgICAgICAmJiAoY3VycmVudFNob3J0
aGFuZCA9PSBDU1NQcm9wZXJ0eUludmFsaWQgfHwgY3VycmVudFNob3J0aGFuZCA9PSBDU1NQcm9w
ZXJ0eUJvcmRlckNvbG9yKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb2xvcihtX3JhbmdlLCBt
X2NvbnRleHQubW9kZSgpLCBhbGxvd1F1aXJreUNvbG9ycyk7CisgICAgfQorICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVm
dFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aDogeworICAgICAgICBib29sIGFsbG93UXVpcmt5TGVu
Z3RocyA9IGluUXVpcmtzTW9kZSgpCisgICAgICAgICAgICAmJiAoY3VycmVudFNob3J0aGFuZCA9
PSBDU1NQcm9wZXJ0eUludmFsaWQgfHwgY3VycmVudFNob3J0aGFuZCA9PSBDU1NQcm9wZXJ0eUJv
cmRlcldpZHRoKTsKKyAgICAgICAgVW5pdGxlc3NRdWlyayB1bml0bGVzcyA9IGFsbG93UXVpcmt5
TGVuZ3RocyA/IFVuaXRsZXNzUXVpcms6OkFsbG93IDogVW5pdGxlc3NRdWlyazo6Rm9yYmlkOwor
ICAgICAgICByZXR1cm4gY29uc3VtZUJvcmRlcldpZHRoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2Rl
KCksIHVuaXRsZXNzKTsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eVpJbmRleDoKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVaSW5kZXgobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRl
eHRTaGFkb3c6IC8vIENTUzIgcHJvcGVydHksIGRyb3BwZWQgaW4gQ1NTMi4xLCBiYWNrIGluIENT
UzMsIHNvIHRyZWF0IGFzIENTUzMKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm94U2hhZG93OgorICAg
ICAgICByZXR1cm4gY29uc3VtZVNoYWRvdyhtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBwcm9w
ZXJ0eSA9PSBDU1NQcm9wZXJ0eUJveFNoYWRvdyk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbHRl
cjoKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2Ryb3BGaWx0ZXI6CisgICAgICAgIHJldHVybiBj
b25zdW1lRmlsdGVyKG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRl
eHREZWNvcmF0aW9uOgorICAgICAgICBBU1NFUlQoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNz
czNUZXh0RGVjb3JhdGlvbnNFbmFibGVkKCkpOworICAgICAgICAvLyBmYWxsdGhyb3VnaAorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25MaW5lOgorICAgICAgICByZXR1cm4gY29uc3VtZVRl
eHREZWNvcmF0aW9uTGluZShtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5RDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5TW90aW9uUGF0aDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVQYXRoT3JO
b25lKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlNb3Rpb25PZmZzZXQ6CisgICAgICAg
IHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCks
IFZhbHVlUmFuZ2VBbGwpOworICAgIGNhc2UgQ1NTUHJvcGVydHlNb3Rpb25Sb3RhdGlvbjoKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVNb3Rpb25Sb3RhdGlvbihtX3JhbmdlKTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5bGU6CisgICAgICAgIHJldHVybiBjb25zdW1l
VGV4dEVtcGhhc2lzU3R5bGUobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVD
b2xvcjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVPdXRsaW5lQ29sb3IobV9yYW5nZSwgbV9jb250
ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVPZmZzZXQ6CisgICAgICAg
IHJldHVybiBjb25zdW1lTGVuZ3RoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFZhbHVlUmFu
Z2VBbGwpOworICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGg6CisgICAgICAgIHJldHVy
biBjb25zdW1lTGluZVdpZHRoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFVuaXRsZXNzUXVp
cms6OkZvcmJpZCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zZm9ybToKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVUcmFuc2Zvcm0obV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgdW5yZXNvbHZl
ZFByb3BlcnR5ID09IENTU1Byb3BlcnR5QWxpYXNXZWJraXRUcmFuc2Zvcm0pOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRQZXJzcGVjdGl2ZU9yaWdpblg6CisgICAgICAgIHJldHVybiBjb25zdW1lUG9zaXRpb25Y
KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm1PcmlnaW5ZOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9y
aWdpblk6CisgICAgICAgIHJldHVybiBjb25zdW1lUG9zaXRpb25ZKG1fcmFuZ2UsIG1fY29udGV4
dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aOgor
ICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBW
YWx1ZVJhbmdlQWxsKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5RmlsbDoKKyAgICBjYXNlIENTU1By
b3BlcnR5U3Ryb2tlOgorICAgICAgICByZXR1cm4gY29uc3VtZVBhaW50U3Ryb2tlKG1fcmFuZ2Us
IG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlQYWludE9yZGVyOgorICAg
ICAgICByZXR1cm4gY29uc3VtZVBhaW50T3JkZXIobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eU1hcmtlclN0YXJ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJrZXJNaWQ6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eU1hcmtlckVuZDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q2xpcFBhdGg6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eU1hc2s6CisgICAgICAgIHJldHVybiBjb25zdW1lTm9uZU9yVVJJ
KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlGbGV4QmFzaXM6CisgICAgICAgIHJldHVy
biBjb25zdW1lRmxleEJhc2lzKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlGbGV4R3JvdzoKKyAgICBjYXNlIENTU1Byb3BlcnR5RmxleFNocmluazoKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVOdW1iZXIobV9yYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZl
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlRGFzaGFycmF5OgorICAgICAgICByZXR1cm4g
Y29uc3VtZVN0cm9rZURhc2hhcnJheShtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29s
dW1uUnVsZVdpZHRoOgorICAgICAgICByZXR1cm4gY29uc3VtZUNvbHVtblJ1bGVXaWR0aChtX3Jh
bmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlT3BhY2l0
eToKKyAgICBjYXNlIENTU1Byb3BlcnR5RmlsbE9wYWNpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVN0b3BPcGFjaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9vZE9wYWNpdHk6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eU9wYWNpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXg6
CisgICAgICAgIHJldHVybiBjb25zdW1lTnVtYmVyKG1fcmFuZ2UsIFZhbHVlUmFuZ2VBbGwpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYXNlbGluZVNoaWZ0OgorICAgICAgICByZXR1cm4gY29uc3Vt
ZUJhc2VsaW5lU2hpZnQobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZU1pdGVy
bGltaXQ6CisgICAgICAgIHJldHVybiBjb25zdW1lTnVtYmVyKG1fcmFuZ2UsIFZhbHVlUmFuZ2VO
b25OZWdhdGl2ZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZVdpZHRoOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlTdHJva2VEYXNob2Zmc2V0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlDeDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Q3k6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVg6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVI6CisgICAgICAgIHJldHVybiBjb25z
dW1lTGVuZ3RoT3JQZXJjZW50KG1fcmFuZ2UsIFNWR0F0dHJpYnV0ZU1vZGUsIFZhbHVlUmFuZ2VB
bGwsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVJ4OgorICAg
IGNhc2UgQ1NTUHJvcGVydHlSeToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVSeE9yUnkobV9yYW5n
ZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUN1cnNvcjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVD
dXJzb3IobV9yYW5nZSwgbV9jb250ZXh0LCBpblF1aXJrc01vZGUoKSk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUNvbnRhaW46CisgICAgICAgIHJldHVybiBjb25zdW1lQ29udGFpbihtX3JhbmdlKTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNmb3JtT3JpZ2luOgorICAgICAgICByZXR1cm4gY29u
c3VtZVRyYW5zZm9ybU9yaWdpbihtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBVbml0bGVzc1F1
aXJrOjpGb3JiaWQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlDb250ZW50OgorICAgICAgICByZXR1
cm4gY29uc3VtZUNvbnRlbnQobV9yYW5nZSwgbV9jb250ZXh0KTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5TGlzdFN0eWxlSW1hZ2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlU291cmNl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTb3VyY2U6CisgICAgICAg
IHJldHVybiBjb25zdW1lSW1hZ2VPck5vbmUobV9yYW5nZSwgbV9jb250ZXh0KTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5UGVyc3BlY3RpdmU6CisgICAgICAgIHJldHVybiBjb25zdW1lUGVyc3BlY3Rp
dmUobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgdW5yZXNvbHZlZFByb3BlcnR5KTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5U2Nyb2xsU25hcENvb3JkaW5hdGU6CisgICAgICAgIHJldHVybiBjb25z
dW1lU2Nyb2xsU25hcENvb3JkaW5hdGUobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVNjcm9sbFNuYXBQb2ludHNYOgorICAgIGNhc2UgQ1NTUHJvcGVydHlT
Y3JvbGxTbmFwUG9pbnRzWToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTY3JvbGxTbmFwUG9pbnRz
KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJU
b3BSaWdodFJhZGl1czoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1czoK
KyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1czoKKyAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6CisgICAgICAgIHJldHVybiBjb25zdW1l
Qm9yZGVyUmFkaXVzQ29ybmVyKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3hGbGV4R3JvdXA6CisgICAgICAgIHJldHVybiBjb25zdW1lSW50
ZWdlcihtX3JhbmdlLCAwKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5T3JkZXI6CisgICAgICAgIHJl
dHVybiBjb25zdW1lSW50ZWdlcihtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVu
ZGVybGluZVBvc2l0aW9uOgorICAgICAgICAvLyBhdXRvIHwgWyB1bmRlciB8fCBbIGxlZnQgfCBy
aWdodCBdIF0sIGJ1dCB3ZSBvbmx5IHN1cHBvcnQgYXV0byB8IHVuZGVyIGZvciBub3cKKyAgICAg
ICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzczNUZXh0RGVjb3JhdGlvbnNFbmFi
bGVkKCkpOworICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlQXV0bywgQ1NTVmFs
dWVVbmRlcj4obV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ246Cisg
ICAgICAgIHJldHVybiBjb25zdW1lVmVydGljYWxBbGlnbihtX3JhbmdlLCBtX2NvbnRleHQubW9k
ZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5U2hhcGVPdXRzaWRlOgorICAgICAgICByZXR1cm4g
Y29uc3VtZVNoYXBlT3V0c2lkZShtX3JhbmdlLCBtX2NvbnRleHQpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRDbGlwUGF0aDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVXZWJraXRDbGlwUGF0
aChtX3JhbmdlLCBtX2NvbnRleHQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlKdXN0aWZ5Q29udGVu
dDoKKyAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25Db250ZW50OgorICAgICAgICBBU1NFUlQoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzR3JpZExheW91dEVuYWJsZWQoKSk7CisgICAgICAgIHJl
dHVybiBjb25zdW1lQ29udGVudERpc3RyaWJ1dGlvbk92ZXJmbG93UG9zaXRpb24obV9yYW5nZSk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlUmVwZWF0OgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXNrQm94SW1hZ2VSZXBlYXQ6CisgICAgICAgIHJldHVybiBjb25zdW1lQm9y
ZGVySW1hZ2VSZXBlYXQobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdl
U2xpY2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVNsaWNlOgorICAg
ICAgICByZXR1cm4gY29uc3VtZUJvcmRlckltYWdlU2xpY2UocHJvcGVydHksIG1fcmFuZ2UpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZU91dHNldDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFza0JveEltYWdlT3V0c2V0OgorICAgICAgICByZXR1cm4gY29uc3VtZUJvcmRl
ckltYWdlT3V0c2V0KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVdp
ZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VXaWR0aDoKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVCb3JkZXJJbWFnZVdpZHRoKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJJbWFnZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVXZWJraXRC
b3JkZXJJbWFnZShwcm9wZXJ0eSwgbV9yYW5nZSwgbV9jb250ZXh0KTsKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm94UmVmbGVjdDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVSZWZsZWN0KG1f
cmFuZ2UsIG1fY29udGV4dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTaXplQWRqdXN0Ogor
ICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzRm9udFNpemVBZGp1c3RF
bmFibGVkKCkpOworICAgICAgICByZXR1cm4gY29uc3VtZUZvbnRTaXplQWRqdXN0KG1fcmFuZ2Up
OworICAgIGNhc2UgQ1NTUHJvcGVydHlJbWFnZU9yaWVudGF0aW9uOgorICAgICAgICBBU1NFUlQo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aW1hZ2VPcmllbnRhdGlvbkVuYWJsZWQoKSk7CisgICAg
ICAgIHJldHVybiBjb25zdW1lSW1hZ2VPcmllbnRhdGlvbihtX3JhbmdlKTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRCbGVuZE1vZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRPcmlnaW46CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblg6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblk6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRTaXplOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXNrU291cmNlVHlw
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENsaXA6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRPcmlnaW46CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tDbGlwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tPcmlnaW46CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlv
blg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblk6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplOgorICAgICAgICByZXR1cm4gY29uc3VtZUNvbW1hU2Vw
YXJhdGVkQmFja2dyb3VuZENvbXBvbmVudCh1bnJlc29sdmVkUHJvcGVydHksIG1fcmFuZ2UsIG1f
Y29udGV4dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WToKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFsaWduSXRlbXM6CisgICAgICAgIERDSEVDSyhSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpjc3NHcmlkTGF5b3V0RW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJu
IGNvbnN1bWVBbGlnbkl0ZW1zKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlKdXN0aWZ5
U2VsZjoKKyAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25TZWxmOgorICAgICAgICBBU1NFUlQoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzR3JpZExheW91dEVuYWJsZWQoKSk7CisgICAgICAgIHJl
dHVybiBjb25zdW1lU2VsZlBvc2l0aW9uT3ZlcmZsb3dQb3NpdGlvbihtX3JhbmdlKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5SnVzdGlmeUl0ZW1zOgorICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6Y3NzR3JpZExheW91dEVuYWJsZWQoKSk7CisgICAgICAgIHJldHVybiBjb25z
dW1lSnVzdGlmeUl0ZW1zKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkQ29sdW1u
RW5kOgorICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkQ29sdW1uU3RhcnQ6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUdyaWRSb3dFbmQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRSb3dTdGFydDoKKyAg
ICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVk
KCkpOworICAgICAgICByZXR1cm4gY29uc3VtZUdyaWRMaW5lKG1fcmFuZ2UpOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlHcmlkQXV0b0NvbHVtbnM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRBdXRv
Um93czoKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlv
dXRFbmFibGVkKCkpOworICAgICAgICByZXR1cm4gY29uc3VtZUdyaWRUcmFja0xpc3QobV9yYW5n
ZSwgbV9jb250ZXh0Lm1vZGUoKSwgR3JpZEF1dG8pOworICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlk
VGVtcGxhdGVDb2x1bW5zOgorICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVSb3dzOgor
ICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzR3JpZExheW91dEVuYWJs
ZWQoKSk7CisgICAgICAgIHJldHVybiBjb25zdW1lR3JpZFRlbXBsYXRlc1Jvd3NPckNvbHVtbnMo
bV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRUZW1w
bGF0ZUFyZWFzOgorICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzR3Jp
ZExheW91dEVuYWJsZWQoKSk7CisgICAgICAgIHJldHVybiBjb25zdW1lR3JpZFRlbXBsYXRlQXJl
YXMobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRBdXRvRmxvdzoKKyAgICAgICAg
QVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkpOwor
ICAgICAgICByZXR1cm4gY29uc3VtZUdyaWRBdXRvRmxvdyhtX3JhbmdlKTsKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cit9CisKK3N0YXRpYyBDU1NQcmltaXRp
dmVWYWx1ZSogY29uc3VtZUZvbnREaXNwbGF5KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQor
eworICAgIHJldHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBdXRvLCBDU1NWYWx1ZUJsb2NrLCBD
U1NWYWx1ZVN3YXAsIENTU1ZhbHVlRmFsbGJhY2ssIENTU1ZhbHVlT3B0aW9uYWw+KHJhbmdlKTsK
K30KKworc3RhdGljIENTU1ZhbHVlTGlzdCogY29uc3VtZUZvbnRGYWNlVW5pY29kZVJhbmdlKENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIENTU1ZhbHVlTGlzdCogdmFsdWVzID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworCisgICAgZG8geworICAgICAg
ICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hp
dGVzcGFjZSgpOworICAgICAgICBpZiAodG9rZW4udHlwZSgpICE9IFVuaWNvZGVSYW5nZVRva2Vu
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgVUNoYXIzMiBzdGFydCA9
IHRva2VuLnVuaWNvZGVSYW5nZVN0YXJ0KCk7CisgICAgICAgIFVDaGFyMzIgZW5kID0gdG9rZW4u
dW5pY29kZVJhbmdlRW5kKCk7CisgICAgICAgIGlmIChzdGFydCA+IGVuZCkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICB2YWx1ZXMtPmFwcGVuZCgqQ1NTVW5pY29kZVJhbmdl
VmFsdWU6OmNyZWF0ZShzdGFydCwgZW5kKSk7CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5j
bHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpOworCisgICAgcmV0dXJuIHZhbHVlczsKK30KKworc3Rh
dGljIENTU1ZhbHVlKiBjb25zdW1lRm9udEZhY2VTcmNVUkkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgU3RyaW5nIHVy
bCA9IGNvbnN1bWVVcmxBc1N0cmluZ1ZpZXcocmFuZ2UpLnRvU3RyaW5nKCk7CisgICAgaWYgKHVy
bC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NTRm9udEZhY2VTcmNW
YWx1ZSogdXJpVmFsdWUoQ1NTRm9udEZhY2VTcmNWYWx1ZTo6Y3JlYXRlKHVybCwgY29udGV4dC5j
b21wbGV0ZVVSTCh1cmwpLCBjb250ZXh0LnNob3VsZENoZWNrQ29udGVudFNlY3VyaXR5UG9saWN5
KCkpKTsKKyAgICB1cmlWYWx1ZS0+c2V0UmVmZXJyZXIoY29udGV4dC5yZWZlcnJlcigpKTsKKwor
ICAgIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpICE9IENTU1ZhbHVlRm9ybWF0KQorICAg
ICAgICByZXR1cm4gdXJpVmFsdWU7CisKKyAgICAvLyBGSVhNRTogaHR0cHM6Ly9kcmFmdHMuY3Nz
d2cub3JnL2Nzcy1mb250cyBzYXlzIHRoYXQgZm9ybWF0KCkgY29udGFpbnMgYSBjb21tYS1zZXBh
cmF0ZWQgbGlzdCBvZiBzdHJpbmdzLAorICAgIC8vIGJ1dCBDU1NGb250RmFjZVNyY1ZhbHVlIHN0
b3JlcyBvbmx5IG9uZSBmb3JtYXQuIEFsbG93aW5nIG9uZSBmb3JtYXQgZm9yIG5vdy4KKyAgICBD
U1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2UpOworICAgIGNv
bnN0IENTU1BhcnNlclRva2VuJiBhcmcgPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNl
KCk7CisgICAgaWYgKChhcmcudHlwZSgpICE9IFN0cmluZ1Rva2VuKSB8fCAhYXJncy5hdEVuZCgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB1cmlWYWx1ZS0+c2V0Rm9ybWF0KGFyZy52
YWx1ZSgpLnRvU3RyaW5nKCkpOworICAgIHJldHVybiB1cmlWYWx1ZTsKK30KKworc3RhdGljIENT
U1ZhbHVlKiBjb25zdW1lRm9udEZhY2VTcmNMb2NhbChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBDU1NQYXJzZXJUb2tl
blJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2UpOworICAgIENvbnRlbnRTZWN1cml0
eVBvbGljeURpc3Bvc2l0aW9uIHNob3VsZENoZWNrQ29udGVudFNlY3VyaXR5UG9saWN5ID0gY29u
dGV4dC5zaG91bGRDaGVja0NvbnRlbnRTZWN1cml0eVBvbGljeSgpOworICAgIGlmIChhcmdzLnBl
ZWsoKS50eXBlKCkgPT0gU3RyaW5nVG9rZW4pIHsKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9r
ZW4mIGFyZyA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgaWYg
KCFhcmdzLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuIENTU0ZvbnRGYWNlU3JjVmFsdWU6OmNyZWF0ZUxvY2FsKGFyZy52YWx1ZSgpLnRvU3RyaW5n
KCksIHNob3VsZENoZWNrQ29udGVudFNlY3VyaXR5UG9saWN5KTsKKyAgICB9CisgICAgaWYgKGFy
Z3MucGVlaygpLnR5cGUoKSA9PSBJZGVudFRva2VuKSB7CisgICAgICAgIFN0cmluZyBmYW1pbHlO
YW1lID0gY29uY2F0ZW5hdGVGYW1pbHlOYW1lKGFyZ3MpOworICAgICAgICBpZiAoIWFyZ3MuYXRF
bmQoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gQ1NTRm9u
dEZhY2VTcmNWYWx1ZTo6Y3JlYXRlTG9jYWwoZmFtaWx5TmFtZSwgc2hvdWxkQ2hlY2tDb250ZW50
U2VjdXJpdHlQb2xpY3kpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGlj
IENTU1ZhbHVlTGlzdCogY29uc3VtZUZvbnRGYWNlU3JjKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIENTU1ZhbHVlTGlz
dCogdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworCisgICAg
ZG8geworICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7
CisgICAgICAgIENTU1ZhbHVlKiBwYXJzZWRWYWx1ZSA9IG51bGxwdHI7CisgICAgICAgIGlmICh0
b2tlbi5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVMb2NhbCkKKyAgICAgICAgICAgIHBhcnNlZFZh
bHVlID0gY29uc3VtZUZvbnRGYWNlU3JjTG9jYWwocmFuZ2UsIGNvbnRleHQpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVGb250RmFjZVNyY1VSSShyYW5n
ZSwgY29udGV4dCk7CisgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgdmFsdWVzLT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICB9
IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSk7CisgICAgcmV0
dXJuIHZhbHVlczsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VGb250RmFjZURl
c2NyaXB0b3IoQ1NTUHJvcGVydHlJRCBwcm9wSWQpCit7CisgICAgQ1NTVmFsdWUqIHBhcnNlZFZh
bHVlID0gbnVsbHB0cjsKKyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAgIGNhc2UgQ1NTUHJvcGVy
dHlGb250RmFtaWx5OgorICAgICAgICBpZiAoY29uc3VtZUdlbmVyaWNGYW1pbHkobV9yYW5nZSkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3Vt
ZUZhbWlseU5hbWUobV9yYW5nZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlTcmM6IC8vIFRoaXMgaXMgYSBsaXN0IG9mIHVybHMgb3IgbG9jYWwgcmVmZXJlbmNlcy4KKyAg
ICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lRm9udEZhY2VTcmMobV9yYW5nZSwgbV9jb250ZXh0
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVVuaWNvZGVSYW5nZToKKyAg
ICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lRm9udEZhY2VVbmljb2RlUmFuZ2UobV9yYW5nZSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250RGlzcGxheToKKyAgICAg
ICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lRm9udERpc3BsYXkobV9yYW5nZSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3RyZXRjaDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Rm9udFN0eWxlOiB7CisgICAgICAgIENTU1ZhbHVlSUQgaWQgPSBtX3JhbmdlLmNvbnN1bWVJ
bmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKKyAgICAgICAgaWYgKCFDU1NQYXJzZXJGYXN0UGF0
aHM6OmlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRWYWx1ZShwcm9wSWQsIGlkLCBtX2NvbnRleHQu
bW9kZSgpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcGFyc2VkVmFsdWUg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihpZCk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQ6CisgICAgICAgIHBhcnNl
ZFZhbHVlID0gY29uc3VtZUZvbnRWYXJpYW50TGlzdChtX3JhbmdlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQ6CisgICAgICAgIHBhcnNlZFZhbHVlID0g
Y29uc3VtZUZvbnRXZWlnaHQobV9yYW5nZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
UHJvcGVydHlGb250RmVhdHVyZVNldHRpbmdzOgorICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1
bWVGb250RmVhdHVyZVNldHRpbmdzKG1fcmFuZ2UpOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoIXBhcnNlZFZhbHVlIHx8ICFt
X3JhbmdlLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGFkZFByb3BlcnR5
KHByb3BJZCwgQ1NTUHJvcGVydHlJbnZhbGlkLCAqcGFyc2VkVmFsdWUsIGZhbHNlKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZVN5c3RlbUZv
bnQoYm9vbCBpbXBvcnRhbnQpCit7CisgICAgQ1NTVmFsdWVJRCBzeXN0ZW1Gb250SUQgPSBtX3Jh
bmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKKyAgICBBU1NFUlQoc3lzdGVt
Rm9udElEID49IENTU1ZhbHVlQ2FwdGlvbiAmJiBzeXN0ZW1Gb250SUQgPD0gQ1NTVmFsdWVTdGF0
dXNCYXIpOworICAgIGlmICghbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBGb250U3R5bGUgZm9udFN0eWxlID0gRm9udFN0eWxlTm9ybWFsOworICAgIEZvbnRX
ZWlnaHQgZm9udFdlaWdodCA9IEZvbnRXZWlnaHROb3JtYWw7CisgICAgZmxvYXQgZm9udFNpemUg
PSAwOworICAgIEF0b21pY1N0cmluZyBmb250RmFtaWx5OworICAgIExheW91dFRoZW1lOjp0aGVt
ZSgpLnN5c3RlbUZvbnQoc3lzdGVtRm9udElELCBmb250U3R5bGUsIGZvbnRXZWlnaHQsIGZvbnRT
aXplLCBmb250RmFtaWx5KTsKKworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFN0eWxl
LCBDU1NQcm9wZXJ0eUZvbnQsICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihm
b250U3R5bGUgPT0gRm9udFN0eWxlSXRhbGljID8gQ1NTVmFsdWVJdGFsaWMgOiBDU1NWYWx1ZU5v
cm1hbCksIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250V2VpZ2h0
LCBDU1NQcm9wZXJ0eUZvbnQsICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGZvbnRXZWlnaHQp
LCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIENTU1By
b3BlcnR5Rm9udCwgKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoZm9udFNpemUsIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZTo6UGl4ZWxzKSwgaW1wb3J0YW50KTsKKyAgICBDU1NWYWx1ZUxp
c3QqIGZvbnRGYW1pbHlMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgp
OworICAgIGZvbnRGYW1pbHlMaXN0LT5hcHBlbmQoKkNTU0ZvbnRGYW1pbHlWYWx1ZTo6Y3JlYXRl
KGZvbnRGYW1pbHkpKTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRGYW1pbHksIENT
U1Byb3BlcnR5Rm9udCwgKmZvbnRGYW1pbHlMaXN0LCBpbXBvcnRhbnQpOworCisgICAgYWRkUHJv
cGVydHkoQ1NTUHJvcGVydHlGb250U3RyZXRjaCwgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOwor
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRDYXBzLCBDU1NQcm9wZXJ0eUZv
bnQsICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vcm1hbCks
IGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250VmFyaWFudExpZ2F0
dXJlcywgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZp
ZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3Bl
cnR5Rm9udFZhcmlhbnROdW1lcmljLCBDU1NQcm9wZXJ0eUZvbnQsICpDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vcm1hbCksIGltcG9ydGFudCk7CisgICAgYWRk
UHJvcGVydHkoQ1NTUHJvcGVydHlMaW5lSGVpZ2h0LCBDU1NQcm9wZXJ0eUZvbnQsICpDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vcm1hbCksIGltcG9ydGFudCk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVG
b250KGJvb2wgaW1wb3J0YW50KQoreworICAgIC8vIExldCdzIGNoZWNrIGlmIHRoZXJlIGlzIGFu
IGluaGVyaXQgb3IgaW5pdGlhbCBzb21ld2hlcmUgaW4gdGhlIHNob3J0aGFuZC4KKyAgICBDU1NQ
YXJzZXJUb2tlblJhbmdlIHJhbmdlID0gbV9yYW5nZTsKKyAgICB3aGlsZSAoIXJhbmdlLmF0RW5k
KCkpIHsKKyAgICAgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0
ZXNwYWNlKCkuaWQoKTsKKyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlSW5oZXJpdCB8fCBpZCA9
PSBDU1NWYWx1ZUluaXRpYWwpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IC8vIE9wdGlvbmFsIGZvbnQtc3R5bGUsIGZvbnQtdmFyaWFudCwgZm9udC1zdHJldGNoIGFuZCBm
b250LXdlaWdodC4KKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogZm9udFN0eWxlID0gbnVsbHB0cjsK
KyAgICBDU1NQcmltaXRpdmVWYWx1ZSogZm9udFZhcmlhbnRDYXBzID0gbnVsbHB0cjsKKyAgICBD
U1NQcmltaXRpdmVWYWx1ZSogZm9udFdlaWdodCA9IG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIGZvbnRTdHJldGNoID0gbnVsbHB0cjsKKyAgICB3aGlsZSAoIW1fcmFuZ2UuYXRFbmQo
KSkgeworICAgICAgICBDU1NWYWx1ZUlEIGlkID0gbV9yYW5nZS5wZWVrKCkuaWQoKTsKKyAgICAg
ICAgaWYgKCFmb250U3R5bGUgJiYgQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5d29yZFBy
b3BlcnR5QW5kVmFsdWUoQ1NTUHJvcGVydHlGb250U3R5bGUsIGlkLCBtX2NvbnRleHQubW9kZSgp
KSkgeworICAgICAgICAgICAgZm9udFN0eWxlID0gY29uc3VtZUlkZW50KG1fcmFuZ2UpOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmb250VmFyaWFudENh
cHMgJiYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlU21hbGxDYXBzKSkg
eworICAgICAgICAgICAgLy8gRm9udCB2YXJpYW50IGluIHRoZSBzaG9ydGhhbmQgaXMgcGFydGlj
dWxhciwgaXQgb25seSBhY2NlcHRzIG5vcm1hbCBvciBzbWFsbC1jYXBzLgorICAgICAgICAgICAg
Ly8gU2VlIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtZm9udHMvI3Byb3BkZWYtZm9udAor
ICAgICAgICAgICAgZm9udFZhcmlhbnRDYXBzID0gY29uc3VtZUZvbnRWYXJpYW50Q1NTMjEobV9y
YW5nZSk7CisgICAgICAgICAgICBpZiAoZm9udFZhcmlhbnRDYXBzKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICghZm9udFdlaWdodCkgeworICAgICAg
ICAgICAgZm9udFdlaWdodCA9IGNvbnN1bWVGb250V2VpZ2h0KG1fcmFuZ2UpOworICAgICAgICAg
ICAgaWYgKGZvbnRXZWlnaHQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKCFmb250U3RyZXRjaCAmJiBDU1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFsaWRL
ZXl3b3JkUHJvcGVydHlBbmRWYWx1ZShDU1NQcm9wZXJ0eUZvbnRTdHJldGNoLCBpZCwgbV9jb250
ZXh0Lm1vZGUoKSkpCisgICAgICAgICAgICBmb250U3RyZXRjaCA9IGNvbnN1bWVJZGVudChtX3Jh
bmdlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYg
KG1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYWRkUHJvcGVy
dHkoQ1NTUHJvcGVydHlGb250U3R5bGUsIENTU1Byb3BlcnR5Rm9udCwgZm9udFN0eWxlID8gKmZv
bnRTdHlsZSA6ICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5v
cm1hbCksIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250VmFyaWFu
dENhcHMsIENTU1Byb3BlcnR5Rm9udCwgZm9udFZhcmlhbnRDYXBzID8gKmZvbnRWYXJpYW50Q2Fw
cyA6ICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vcm1hbCks
IGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250VmFyaWFudExpZ2F0
dXJlcywgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZp
ZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3Bl
cnR5Rm9udFZhcmlhbnROdW1lcmljLCBDU1NQcm9wZXJ0eUZvbnQsICpDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vcm1hbCksIGltcG9ydGFudCk7CisKKyAgICBh
ZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsIENTU1Byb3BlcnR5Rm9udCwgZm9udFdl
aWdodCA/ICpmb250V2VpZ2h0IDogKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVy
KENTU1ZhbHVlTm9ybWFsKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0
eUZvbnRTdHJldGNoLCBDU1NQcm9wZXJ0eUZvbnQsIGZvbnRTdHJldGNoID8gKmZvbnRTdHJldGNo
IDogKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFsKSwg
aW1wb3J0YW50KTsKKworICAgIC8vIE5vdyBhIGZvbnQgc2l6ZSBfbXVzdF8gY29tZS4KKyAgICBD
U1NWYWx1ZSogZm9udFNpemUgPSBjb25zdW1lRm9udFNpemUobV9yYW5nZSwgbV9jb250ZXh0Lm1v
ZGUoKSk7CisgICAgaWYgKCFmb250U2l6ZSB8fCBtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIENTU1By
b3BlcnR5Rm9udCwgKmZvbnRTaXplLCBpbXBvcnRhbnQpOworCisgICAgaWYgKGNvbnN1bWVTbGFz
aEluY2x1ZGluZ1doaXRlc3BhY2UobV9yYW5nZSkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIGxpbmVIZWlnaHQgPSBjb25zdW1lTGluZUhlaWdodChtX3JhbmdlLCBtX2NvbnRleHQubW9k
ZSgpKTsKKyAgICAgICAgaWYgKCFsaW5lSGVpZ2h0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpbmVIZWlnaHQsIENTU1Byb3BlcnR5
Rm9udCwgKmxpbmVIZWlnaHQsIGltcG9ydGFudCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYWRk
UHJvcGVydHkoQ1NTUHJvcGVydHlMaW5lSGVpZ2h0LCBDU1NQcm9wZXJ0eUZvbnQsICpDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vcm1hbCksIGltcG9ydGFudCk7
CisgICAgfQorCisgICAgLy8gRm9udCBmYW1pbHkgbXVzdCBjb21lIG5vdy4KKyAgICBDU1NWYWx1
ZSogcGFyc2VkRmFtaWx5VmFsdWUgPSBjb25zdW1lRm9udEZhbWlseShtX3JhbmdlKTsKKyAgICBp
ZiAoIXBhcnNlZEZhbWlseVZhbHVlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhZGRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRGYW1pbHksIENTU1Byb3BlcnR5Rm9udCwgKnBhcnNlZEZh
bWlseVZhbHVlLCBpbXBvcnRhbnQpOworCisgICAgLy8gRklYTUU6IGh0dHA6Ly93d3cudzMub3Jn
L1RSLzIwMTEvV0QtY3NzMy1mb250cy0yMDExMDMyNC8jZm9udC1wcm9wIHJlcXVpcmVzIHRoYXQK
KyAgICAvLyAiZm9udC1zdHJldGNoIiwgImZvbnQtc2l6ZS1hZGp1c3QiLCBhbmQgImZvbnQta2Vy
bmluZyIgYmUgcmVzZXQgdG8gdGhlaXIgaW5pdGlhbCB2YWx1ZXMKKyAgICAvLyBidXQgd2UgZG9u
J3Qgc2VlbSB0byBzdXBwb3J0IHRoZW0gYXQgdGhlIG1vbWVudC4gVGhleSBzaG91bGQgYWxzbyBi
ZSBhZGRlZCBoZXJlIG9uY2UgaW1wbGVtZW50ZWQuCisgICAgcmV0dXJuIG1fcmFuZ2UuYXRFbmQo
KTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUZvbnRWYXJpYW50U2hvcnRo
YW5kKGJvb2wgaW1wb3J0YW50KQoreworICAgIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVOb3Jt
YWwsIENTU1ZhbHVlTm9uZT4obV9yYW5nZS5wZWVrKCkuaWQoKSkpIHsKKyAgICAgICAgYWRkUHJv
cGVydHkoQ1NTUHJvcGVydHlGb250VmFyaWFudExpZ2F0dXJlcywgQ1NTUHJvcGVydHlGb250VmFy
aWFudCwgKmNvbnN1bWVJZGVudChtX3JhbmdlKSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJv
cGVydHkoQ1NTUHJvcGVydHlGb250VmFyaWFudENhcHMsIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQs
ICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vcm1hbCksIGlt
cG9ydGFudCk7CisgICAgICAgIHJldHVybiBtX3JhbmdlLmF0RW5kKCk7CisgICAgfQorCisgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIGNhcHNWYWx1ZSA9IG51bGxwdHI7CisgICAgRm9udFZhcmlhbnRM
aWdhdHVyZXNQYXJzZXIgbGlnYXR1cmVzUGFyc2VyOworICAgIEZvbnRWYXJpYW50TnVtZXJpY1Bh
cnNlciBudW1lcmljUGFyc2VyOworICAgIGRvIHsKKyAgICAgICAgRm9udFZhcmlhbnRMaWdhdHVy
ZXNQYXJzZXI6OlBhcnNlUmVzdWx0IGxpZ2F0dXJlc1BhcnNlUmVzdWx0ID0gbGlnYXR1cmVzUGFy
c2VyLmNvbnN1bWVMaWdhdHVyZShtX3JhbmdlKTsKKyAgICAgICAgRm9udFZhcmlhbnROdW1lcmlj
UGFyc2VyOjpQYXJzZVJlc3VsdCBudW1lcmljUGFyc2VSZXN1bHQgPSBudW1lcmljUGFyc2VyLmNv
bnN1bWVOdW1lcmljKG1fcmFuZ2UpOworICAgICAgICBpZiAobGlnYXR1cmVzUGFyc2VSZXN1bHQg
PT0gRm9udFZhcmlhbnRMaWdhdHVyZXNQYXJzZXI6OlBhcnNlUmVzdWx0OjpDb25zdW1lZFZhbHVl
CisgICAgICAgICAgICB8fCBudW1lcmljUGFyc2VSZXN1bHQgPT0gRm9udFZhcmlhbnROdW1lcmlj
UGFyc2VyOjpQYXJzZVJlc3VsdDo6Q29uc3VtZWRWYWx1ZSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIGlmIChsaWdhdHVyZXNQYXJzZVJlc3VsdCA9PSBGb250VmFyaWFudExpZ2F0
dXJlc1BhcnNlcjo6UGFyc2VSZXN1bHQ6OkRpc2FsbG93ZWRWYWx1ZQorICAgICAgICAgICAgfHwg
bnVtZXJpY1BhcnNlUmVzdWx0ID09IEZvbnRWYXJpYW50TnVtZXJpY1BhcnNlcjo6UGFyc2VSZXN1
bHQ6OkRpc2FsbG93ZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg
ICBDU1NWYWx1ZUlEIGlkID0gbV9yYW5nZS5wZWVrKCkuaWQoKTsKKyAgICAgICAgc3dpdGNoIChp
ZCkgeworICAgICAgICBjYXNlIENTU1ZhbHVlU21hbGxDYXBzOgorICAgICAgICBjYXNlIENTU1Zh
bHVlQWxsU21hbGxDYXBzOgorICAgICAgICBjYXNlIENTU1ZhbHVlUGV0aXRlQ2FwczoKKyAgICAg
ICAgY2FzZSBDU1NWYWx1ZUFsbFBldGl0ZUNhcHM6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVVbmlj
YXNlOgorICAgICAgICBjYXNlIENTU1ZhbHVlVGl0bGluZ0NhcHM6CisgICAgICAgICAgICAvLyBP
bmx5IG9uZSBjYXBzIHZhbHVlIHBlcm1pdHRlZCBpbiBmb250LXZhcmlhbnQgZ3JhbW1hci4KKyAg
ICAgICAgICAgIGlmIChjYXBzVmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgY2Fwc1ZhbHVlID0gY29uc3VtZUlkZW50KG1fcmFuZ2UpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKyAgICB9IHdoaWxlICghbV9yYW5nZS5hdEVuZCgpKTsKKworICAgIGFkZFByb3Bl
cnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXMsIENTU1Byb3BlcnR5Rm9udFZhcmlh
bnQsICpsaWdhdHVyZXNQYXJzZXIuZmluYWxpemVWYWx1ZSgpLCBpbXBvcnRhbnQpOworICAgIGFk
ZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnROdW1lcmljLCBDU1NQcm9wZXJ0eUZvbnRW
YXJpYW50LCAqbnVtZXJpY1BhcnNlci5maW5hbGl6ZVZhbHVlKCksIGltcG9ydGFudCk7CisgICAg
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250VmFyaWFudENhcHMsIENTU1Byb3BlcnR5Rm9udFZh
cmlhbnQsIGNhcHNWYWx1ZSA/ICpjYXBzVmFsdWUgOiAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lQm9yZGVyU3BhY2luZyhib29s
IGltcG9ydGFudCkKK3sKKyAgICBDU1NWYWx1ZSogaG9yaXpvbnRhbFNwYWNpbmcgPSBjb25zdW1l
TGVuZ3RoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwg
VW5pdGxlc3NRdWlyazo6QWxsb3cpOworICAgIGlmICghaG9yaXpvbnRhbFNwYWNpbmcpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBDU1NWYWx1ZSogdmVydGljYWxTcGFjaW5nID0gaG9yaXpv
bnRhbFNwYWNpbmc7CisgICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgIHZlcnRpY2Fs
U3BhY2luZyA9IGNvbnN1bWVMZW5ndGgobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVmFsdWVS
YW5nZU5vbk5lZ2F0aXZlLCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7CisgICAgaWYgKCF2ZXJ0aWNh
bFNwYWNpbmcgfHwgIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcsIENT
U1Byb3BlcnR5Qm9yZGVyU3BhY2luZywgKmhvcml6b250YWxTcGFjaW5nLCBpbXBvcnRhbnQpOwor
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nLCBD
U1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcsICp2ZXJ0aWNhbFNwYWNpbmcsIGltcG9ydGFudCk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVNpbmdsZVZpZXdw
b3J0RGVzY3JpcHRvcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUHJvcGVydHlJRCBw
cm9wSWQsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBDU1NWYWx1ZUlEIGlk
ID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgc3dpdGNoIChwcm9wSWQpIHsKKyAgICBjYXNlIENT
U1Byb3BlcnR5TWluV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1heFdpZHRoOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlNaW5IZWlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1heEhlaWdodDoK
KyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZUludGVybmFs
RXh0ZW5kVG9ab29tKQorICAgICAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7Cisg
ICAgICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2Rl
LCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5ab29tOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhab29tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlab29tOiB7
CisgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgICAgICByZXR1cm4gY29u
c3VtZUlkZW50KHJhbmdlKTsKKyAgICAgICAgQ1NTVmFsdWUqIHBhcnNlZFZhbHVlID0gY29uc3Vt
ZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgaWYgKHBhcnNl
ZFZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIHBhcnNlZFZhbHVlOworICAgICAgICByZXR1cm4g
Y29uc3VtZVBlcmNlbnQocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgfQorICAg
IGNhc2UgQ1NTUHJvcGVydHlVc2VyWm9vbToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudDxD
U1NWYWx1ZVpvb20sIENTU1ZhbHVlRml4ZWQ+KHJhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
T3JpZW50YXRpb246CisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBdXRvLCBD
U1NWYWx1ZVBvcnRyYWl0LCBDU1NWYWx1ZUxhbmRzY2FwZT4ocmFuZ2UpOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYm9v
bCBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VWaWV3cG9ydERlc2NyaXB0b3IoQ1NTUHJvcGVydHlJ
RCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQoreworICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpjc3NWaWV3cG9ydEVuYWJsZWQoKSB8fCBpc1VBU2hlZXRCZWhhdmlvcihtX2NvbnRl
eHQubW9kZSgpKSk7CisKKyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAgIGNhc2UgQ1NTUHJvcGVy
dHlXaWR0aDogeworICAgICAgICBDU1NWYWx1ZSogbWluV2lkdGggPSBjb25zdW1lU2luZ2xlVmll
d3BvcnREZXNjcmlwdG9yKG1fcmFuZ2UsIENTU1Byb3BlcnR5TWluV2lkdGgsIG1fY29udGV4dC5t
b2RlKCkpOworICAgICAgICBpZiAoIW1pbldpZHRoKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBDU1NWYWx1ZSogbWF4V2lkdGggPSBtaW5XaWR0aDsKKyAgICAgICAgaWYgKCFt
X3JhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICBtYXhXaWR0aCA9IGNvbnN1bWVTaW5nbGVWaWV3
cG9ydERlc2NyaXB0b3IobV9yYW5nZSwgQ1NTUHJvcGVydHlNYXhXaWR0aCwgbV9jb250ZXh0Lm1v
ZGUoKSk7CisgICAgICAgIGlmICghbWF4V2lkdGggfHwgIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlNaW5X
aWR0aCwgQ1NTUHJvcGVydHlJbnZhbGlkLCAqbWluV2lkdGgsIGltcG9ydGFudCk7CisgICAgICAg
IGFkZFByb3BlcnR5KENTU1Byb3BlcnR5TWF4V2lkdGgsIENTU1Byb3BlcnR5SW52YWxpZCwgKm1h
eFdpZHRoLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUhlaWdodDogeworICAgICAgICBDU1NWYWx1ZSogbWluSGVpZ2h0ID0gY29u
c3VtZVNpbmdsZVZpZXdwb3J0RGVzY3JpcHRvcihtX3JhbmdlLCBDU1NQcm9wZXJ0eU1pbkhlaWdo
dCwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgICAgIGlmICghbWluSGVpZ2h0KQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBDU1NWYWx1ZSogbWF4SGVpZ2h0ID0gbWluSGVpZ2h0
OworICAgICAgICBpZiAoIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAgIG1heEhlaWdodCA9
IGNvbnN1bWVTaW5nbGVWaWV3cG9ydERlc2NyaXB0b3IobV9yYW5nZSwgQ1NTUHJvcGVydHlNYXhI
ZWlnaHQsIG1fY29udGV4dC5tb2RlKCkpOworICAgICAgICBpZiAoIW1heEhlaWdodCB8fCAhbV9y
YW5nZS5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhZGRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eU1pbkhlaWdodCwgQ1NTUHJvcGVydHlJbnZhbGlkLCAqbWluSGVpZ2h0
LCBpbXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1heEhlaWdodCwg
Q1NTUHJvcGVydHlJbnZhbGlkLCAqbWF4SGVpZ2h0LCBpbXBvcnRhbnQpOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbldpZHRoOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlNYXhXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWluSGVpZ2h0OgorICAg
IGNhc2UgQ1NTUHJvcGVydHlNYXhIZWlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1pblpvb206
CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1heFpvb206CisgICAgY2FzZSBDU1NQcm9wZXJ0eVpvb206
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVVzZXJab29tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPcmll
bnRhdGlvbjogeworICAgICAgICBDU1NWYWx1ZSogcGFyc2VkVmFsdWUgPSBjb25zdW1lU2luZ2xl
Vmlld3BvcnREZXNjcmlwdG9yKG1fcmFuZ2UsIHByb3BJZCwgbV9jb250ZXh0Lm1vZGUoKSk7Cisg
ICAgICAgIGlmICghcGFyc2VkVmFsdWUgfHwgIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgYWRkUHJvcGVydHkocHJvcElkLCBDU1NQcm9wZXJ0eUlu
dmFsaWQsICpwYXJzZWRWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3N0
YXRpYyBib29sIGNvbnN1bWVDb2x1bW5XaWR0aE9yQ291bnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UsIENTU1ZhbHVlKiYgY29sdW1uV2lkdGgsIENTU1ZhbHVlKiYgY29sdW1uQ291bnQpCit7
CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykgeworICAgICAgICBj
b25zdW1lSWRlbnQocmFuZ2UpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYg
KCFjb2x1bW5XaWR0aCkgeworICAgICAgICBjb2x1bW5XaWR0aCA9IGNvbnN1bWVDb2x1bW5XaWR0
aChyYW5nZSk7CisgICAgICAgIGlmIChjb2x1bW5XaWR0aCkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICBpZiAoIWNvbHVtbkNvdW50KQorICAgICAgICBjb2x1bW5Db3VudCA9
IGNvbnN1bWVDb2x1bW5Db3VudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbHVtbkNvdW50OworfQor
Citib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lQ29sdW1ucyhib29sIGltcG9ydGFudCkK
K3sKKyAgICBDU1NWYWx1ZSogY29sdW1uV2lkdGggPSBudWxscHRyOworICAgIENTU1ZhbHVlKiBj
b2x1bW5Db3VudCA9IG51bGxwdHI7CisgICAgaWYgKCFjb25zdW1lQ29sdW1uV2lkdGhPckNvdW50
KG1fcmFuZ2UsIGNvbHVtbldpZHRoLCBjb2x1bW5Db3VudCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBjb25zdW1lQ29sdW1uV2lkdGhPckNvdW50KG1fcmFuZ2UsIGNvbHVtbldpZHRoLCBj
b2x1bW5Db3VudCk7CisgICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIWNvbHVtbldpZHRoKQorICAgICAgICBjb2x1bW5XaWR0aCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlQXV0byk7CisgICAgaWYgKCFj
b2x1bW5Db3VudCkKKyAgICAgICAgY29sdW1uQ291bnQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlSWRlbnRpZmllcihDU1NWYWx1ZUF1dG8pOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5
Q29sdW1uV2lkdGgsIENTU1Byb3BlcnR5SW52YWxpZCwgKmNvbHVtbldpZHRoLCBpbXBvcnRhbnQp
OworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Q29sdW1uQ291bnQsIENTU1Byb3BlcnR5SW52
YWxpZCwgKmNvbHVtbkNvdW50LCBpbXBvcnRhbnQpOworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkoY29uc3QgU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kLCBib29sIGltcG9ydGFudCkKK3sKKyAgICBB
U1NFUlQoc2hvcnRoYW5kLmxlbmd0aCgpIDw9IDYpOyAvLyBFeGlzdGluZyBzaG9ydGhhbmRzIGhh
dmUgYXQgbW9zdCA2IGxvbmdoYW5kcy4KKyAgICBjb25zdCBDU1NWYWx1ZSogbG9uZ2hhbmRzWzZd
ID0geyBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
IH07CisgICAgY29uc3QgQ1NTUHJvcGVydHlJRCogc2hvcnRoYW5kUHJvcGVydGllcyA9IHNob3J0
aGFuZC5wcm9wZXJ0aWVzKCk7CisgICAgZG8geworICAgICAgICBib29sIGZvdW5kTG9uZ2hhbmQg
PSBmYWxzZTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7ICFmb3VuZExvbmdoYW5kICYmIGkg
PCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGxvbmdoYW5kc1tp
XSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGxvbmdoYW5kc1tpXSA9
IHBhcnNlU2luZ2xlVmFsdWUoc2hvcnRoYW5kUHJvcGVydGllc1tpXSwgc2hvcnRoYW5kLmlkKCkp
OworICAgICAgICAgICAgaWYgKGxvbmdoYW5kc1tpXSkKKyAgICAgICAgICAgICAgICBmb3VuZExv
bmdoYW5kID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZvdW5kTG9uZ2hhbmQpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSB3aGlsZSAoIW1fcmFuZ2UuYXRFbmQoKSk7
CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNob3J0aGFuZC5sZW5ndGgoKTsgKytpKSB7
CisgICAgICAgIGlmIChsb25naGFuZHNbaV0pCisgICAgICAgICAgICBhZGRQcm9wZXJ0eShzaG9y
dGhhbmRQcm9wZXJ0aWVzW2ldLCBzaG9ydGhhbmQuaWQoKSwgKmxvbmdoYW5kc1tpXSwgaW1wb3J0
YW50KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWRkUHJvcGVydHkoc2hvcnRoYW5kUHJv
cGVydGllc1tpXSwgc2hvcnRoYW5kLmlkKCksICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2Fj
eUltcGxpY2l0KCksIGltcG9ydGFudCk7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lRmxleChib29sIGltcG9ydGFudCkKK3sKKyAg
ICBzdGF0aWMgY29uc3QgZG91YmxlIHVuc2V0VmFsdWUgPSAtMTsKKyAgICBkb3VibGUgZmxleEdy
b3cgPSB1bnNldFZhbHVlOworICAgIGRvdWJsZSBmbGV4U2hyaW5rID0gdW5zZXRWYWx1ZTsKKyAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogZmxleEJhc2lzID0gbnVsbHB0cjsKKworICAgIGlmIChtX3Jh
bmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkgeworICAgICAgICBmbGV4R3JvdyA9IDA7
CisgICAgICAgIGZsZXhTaHJpbmsgPSAwOworICAgICAgICBmbGV4QmFzaXMgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUF1dG8pOworICAgICAgICBtX3Jhbmdl
LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdW5z
aWduZWQgaW5kZXggPSAwOworICAgICAgICB3aGlsZSAoIW1fcmFuZ2UuYXRFbmQoKSAmJiBpbmRl
eCsrIDwgMykgeworICAgICAgICAgICAgZG91YmxlIG51bTsKKyAgICAgICAgICAgIGlmIChjb25z
dW1lTnVtYmVyUmF3KG1fcmFuZ2UsIG51bSkpIHsKKyAgICAgICAgICAgICAgICBpZiAobnVtIDwg
MCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlm
IChmbGV4R3JvdyA9PSB1bnNldFZhbHVlKQorICAgICAgICAgICAgICAgICAgICBmbGV4R3JvdyA9
IG51bTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGV4U2hyaW5rID09IHVuc2V0VmFsdWUp
CisgICAgICAgICAgICAgICAgICAgIGZsZXhTaHJpbmsgPSBudW07CisgICAgICAgICAgICAgICAg
ZWxzZSBpZiAoIW51bSkgLy8gZmxleCBvbmx5IGFsbG93cyBhIGJhc2lzIG9mIDAgKHNhbnMgdW5p
dHMpIGlmIGZsZXgtZ3JvdyBhbmQgZmxleC1zaHJpbmsgdmFsdWVzIGhhdmUgYWxyZWFkeSBiZWVu
IHNldC4KKyAgICAgICAgICAgICAgICAgICAgZmxleEJhc2lzID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZSgwLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBpeGVscyk7CisgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKCFmbGV4QmFzaXMpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9yYW5n
ZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgICAgICAgICAgICAgIGZsZXhC
YXNpcyA9IGNvbnN1bWVJZGVudChtX3JhbmdlKTsKKyAgICAgICAgICAgICAgICBpZiAoIWZsZXhC
YXNpcykKKyAgICAgICAgICAgICAgICAgICAgZmxleEJhc2lzID0gY29uc3VtZUxlbmd0aE9yUGVy
Y2VudChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOwor
ICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PSAyICYmICFtX3JhbmdlLmF0RW5kKCkpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBpZiAoaW5kZXggPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgaWYgKGZsZXhHcm93ID09IHVuc2V0VmFsdWUpCisgICAgICAgICAgICBmbGV4R3JvdyA9IDE7
CisgICAgICAgIGlmIChmbGV4U2hyaW5rID09IHVuc2V0VmFsdWUpCisgICAgICAgICAgICBmbGV4
U2hyaW5rID0gMTsKKyAgICAgICAgaWYgKCFmbGV4QmFzaXMpCisgICAgICAgICAgICBmbGV4QmFz
aXMgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZTo6UGVyY2VudGFnZSk7CisgICAgfQorCisgICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZsZXhHcm93
LCBDU1NQcm9wZXJ0eUZsZXgsICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGNsYW1wVG88Zmxv
YXQ+KGZsZXhHcm93KSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpOdW1iZXIpLCBpbXBv
cnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5RmxleFNocmluaywgQ1NTUHJvcGVy
dHlGbGV4LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShjbGFtcFRvPGZsb2F0PihmbGV4U2hy
aW5rKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpOdW1iZXIpLCBpbXBvcnRhbnQpOwor
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5RmxleEJhc2lzLCBDU1NQcm9wZXJ0eUZsZXgsICpm
bGV4QmFzaXMsIGltcG9ydGFudCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTUHJv
cGVydHlQYXJzZXI6OmNvbnN1bWVCb3JkZXIoYm9vbCBpbXBvcnRhbnQpCit7CisgICAgQ1NTVmFs
dWUqIHdpZHRoID0gbnVsbHB0cjsKKyAgICBjb25zdCBDU1NWYWx1ZSogc3R5bGUgPSBudWxscHRy
OworICAgIENTU1ZhbHVlKiBjb2xvciA9IG51bGxwdHI7CisKKyAgICB3aGlsZSAoIXdpZHRoIHx8
ICFzdHlsZSB8fCAhY29sb3IpIHsKKyAgICAgICAgaWYgKCF3aWR0aCkgeworICAgICAgICAgICAg
d2lkdGggPSBjb25zdW1lTGluZVdpZHRoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFVuaXRs
ZXNzUXVpcms6OkZvcmJpZCk7CisgICAgICAgICAgICBpZiAod2lkdGgpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFzdHlsZSkgeworICAgICAgICAg
ICAgc3R5bGUgPSBwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBD
U1NQcm9wZXJ0eUJvcmRlcik7CisgICAgICAgICAgICBpZiAoc3R5bGUpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFjb2xvcikgeworICAgICAgICAg
ICAgY29sb3IgPSBjb25zdW1lQ29sb3IobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAg
ICAgICAgICBpZiAoY29sb3IpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKCF3aWR0aCAmJiAhc3R5bGUgJiYgIWNv
bG9yKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIXdpZHRoKQorICAgICAgICB3
aWR0aCA9IENTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKTsKKyAgICBpZiAo
IXN0eWxlKQorICAgICAgICBzdHlsZSA9IENTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1w
bGljaXQoKTsKKyAgICBpZiAoIWNvbG9yKQorICAgICAgICBjb2xvciA9IENTU0luaXRpYWxWYWx1
ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKTsKKworICAgIGFkZEV4cGFuZGVkUHJvcGVydHlGb3JW
YWx1ZShDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCAqd2lkdGgsIGltcG9ydGFudCk7CisgICAgYWRk
RXhwYW5kZWRQcm9wZXJ0eUZvclZhbHVlKENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsICpzdHlsZSwg
aW1wb3J0YW50KTsKKyAgICBhZGRFeHBhbmRlZFByb3BlcnR5Rm9yVmFsdWUoQ1NTUHJvcGVydHlC
b3JkZXJDb2xvciwgKmNvbG9yLCBpbXBvcnRhbnQpOworICAgIGFkZEV4cGFuZGVkUHJvcGVydHlG
b3JWYWx1ZShDU1NQcm9wZXJ0eUJvcmRlckltYWdlLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVM
ZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworCisgICAgcmV0dXJuIG1fcmFuZ2UuYXRFbmQo
KTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZTRWYWx1ZXMoY29uc3QgU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kLCBib29sIGltcG9ydGFudCkKK3sKKyAgICBB
U1NFUlQoc2hvcnRoYW5kLmxlbmd0aCgpID09IDQpOworICAgIGNvbnN0IENTU1Byb3BlcnR5SUQq
IGxvbmdoYW5kcyA9IHNob3J0aGFuZC5wcm9wZXJ0aWVzKCk7CisgICAgY29uc3QgQ1NTVmFsdWUq
IHRvcCA9IHBhcnNlU2luZ2xlVmFsdWUobG9uZ2hhbmRzWzBdLCBzaG9ydGhhbmQuaWQoKSk7Cisg
ICAgaWYgKCF0b3ApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IENTU1ZhbHVl
KiByaWdodCA9IHBhcnNlU2luZ2xlVmFsdWUobG9uZ2hhbmRzWzFdLCBzaG9ydGhhbmQuaWQoKSk7
CisgICAgY29uc3QgQ1NTVmFsdWUqIGJvdHRvbSA9IG51bGxwdHI7CisgICAgY29uc3QgQ1NTVmFs
dWUqIGxlZnQgPSBudWxscHRyOworICAgIGlmIChyaWdodCkgeworICAgICAgICBib3R0b20gPSBw
YXJzZVNpbmdsZVZhbHVlKGxvbmdoYW5kc1syXSwgc2hvcnRoYW5kLmlkKCkpOworICAgICAgICBp
ZiAoYm90dG9tKQorICAgICAgICAgICAgbGVmdCA9IHBhcnNlU2luZ2xlVmFsdWUobG9uZ2hhbmRz
WzNdLCBzaG9ydGhhbmQuaWQoKSk7CisgICAgfQorCisgICAgaWYgKCFyaWdodCkKKyAgICAgICAg
cmlnaHQgPSB0b3A7CisgICAgaWYgKCFib3R0b20pCisgICAgICAgIGJvdHRvbSA9IHRvcDsKKyAg
ICBpZiAoIWxlZnQpCisgICAgICAgIGxlZnQgPSByaWdodDsKKworICAgIGFkZFByb3BlcnR5KGxv
bmdoYW5kc1swXSwgc2hvcnRoYW5kLmlkKCksICp0b3AsIGltcG9ydGFudCk7CisgICAgYWRkUHJv
cGVydHkobG9uZ2hhbmRzWzFdLCBzaG9ydGhhbmQuaWQoKSwgKnJpZ2h0LCBpbXBvcnRhbnQpOwor
ICAgIGFkZFByb3BlcnR5KGxvbmdoYW5kc1syXSwgc2hvcnRoYW5kLmlkKCksICpib3R0b20sIGlt
cG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkobG9uZ2hhbmRzWzNdLCBzaG9ydGhhbmQuaWQoKSwg
KmxlZnQsIGltcG9ydGFudCk7CisKKyAgICByZXR1cm4gbV9yYW5nZS5hdEVuZCgpOworfQorCiti
b29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lQm9yZGVySW1hZ2UoQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eSwgYm9vbCBpbXBvcnRhbnQpCit7CisgICAgQ1NTVmFsdWUqIHNvdXJjZSA9IG51bGxw
dHI7CisgICAgQ1NTVmFsdWUqIHNsaWNlID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogd2lkdGgg
PSBudWxscHRyOworICAgIENTU1ZhbHVlKiBvdXRzZXQgPSBudWxscHRyOworICAgIENTU1ZhbHVl
KiByZXBlYXQgPSBudWxscHRyOworICAgIGlmIChjb25zdW1lQm9yZGVySW1hZ2VDb21wb25lbnRz
KHByb3BlcnR5LCBtX3JhbmdlLCBtX2NvbnRleHQsIHNvdXJjZSwgc2xpY2UsIHdpZHRoLCBvdXRz
ZXQsIHJlcGVhdCkpIHsKKyAgICAgICAgc3dpdGNoIChwcm9wZXJ0eSkgeworICAgICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlOgorICAgICAgICAgICAgYWRkUHJvcGVydHko
Q1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTb3VyY2UsIENTU1Byb3BlcnR5V2Via2l0TWFz
a0JveEltYWdlLCBzb3VyY2UgPyAqc291cmNlIDogKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVn
YWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1By
b3BlcnR5V2Via2l0TWFza0JveEltYWdlU2xpY2UsIENTU1Byb3BlcnR5V2Via2l0TWFza0JveElt
YWdlLCBzbGljZSA/ICpzbGljZSA6ICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxp
Y2l0KCksIGltcG9ydGFudCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tCb3hJbWFnZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgd2lk
dGggPyAqd2lkdGggOiAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBp
bXBvcnRhbnQpOworICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXNr
Qm94SW1hZ2VPdXRzZXQsIENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlLCBvdXRzZXQgPyAq
b3V0c2V0IDogKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0
YW50KTsKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFza0JveElt
YWdlUmVwZWF0LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgcmVwZWF0ID8gKnJlcGVh
dCA6ICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
ckltYWdlOgorICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNv
dXJjZSwgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZSwgc291cmNlID8gKnNvdXJjZSA6ICpDU1NJbml0
aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7CisgICAgICAgICAg
ICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckltYWdlU2xpY2UsIENTU1Byb3BlcnR5Qm9y
ZGVySW1hZ2UsIHNsaWNlID8gKnNsaWNlIDogKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5
SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3Bl
cnR5Qm9yZGVySW1hZ2VXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZSwgd2lkdGggPyAqd2lk
dGggOiAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQp
OworICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZU91dHNldCwg
Q1NTUHJvcGVydHlCb3JkZXJJbWFnZSwgb3V0c2V0ID8gKm91dHNldCA6ICpDU1NJbml0aWFsVmFs
dWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7CisgICAgICAgICAgICBhZGRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckltYWdlUmVwZWF0LCBDU1NQcm9wZXJ0eUJvcmRlcklt
YWdlLCByZXBlYXQgPyAqcmVwZWF0IDogKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1w
bGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitz
dGF0aWMgaW5saW5lIENTU1ZhbHVlSUQgbWFwRnJvbVBhZ2VCcmVha0JldHdlZW4oQ1NTVmFsdWVJ
RCB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUgPT0gQ1NTVmFsdWVBbHdheXMpCisgICAgICAgIHJl
dHVybiBDU1NWYWx1ZVBhZ2U7CisgICAgaWYgKHZhbHVlID09IENTU1ZhbHVlQXV0byB8fCB2YWx1
ZSA9PSBDU1NWYWx1ZUF2b2lkIHx8IHZhbHVlID09IENTU1ZhbHVlTGVmdCB8fCB2YWx1ZSA9PSBD
U1NWYWx1ZVJpZ2h0KQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgcmV0dXJuIENTU1ZhbHVl
SW52YWxpZDsKK30KKworc3RhdGljIGlubGluZSBDU1NWYWx1ZUlEIG1hcEZyb21Db2x1bW5CcmVh
a0JldHdlZW4oQ1NTVmFsdWVJRCB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUgPT0gQ1NTVmFsdWVB
bHdheXMpCisgICAgICAgIHJldHVybiBDU1NWYWx1ZUNvbHVtbjsKKyAgICBpZiAodmFsdWUgPT0g
Q1NTVmFsdWVBdXRvIHx8IHZhbHVlID09IENTU1ZhbHVlQXZvaWQpCisgICAgICAgIHJldHVybiB2
YWx1ZTsKKyAgICByZXR1cm4gQ1NTVmFsdWVJbnZhbGlkOworfQorCitzdGF0aWMgaW5saW5lIENT
U1ZhbHVlSUQgbWFwRnJvbUNvbHVtbk9yUGFnZUJyZWFrSW5zaWRlKENTU1ZhbHVlSUQgdmFsdWUp
Cit7CisgICAgaWYgKHZhbHVlID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZSA9PSBDU1NWYWx1ZUF2
b2lkKQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgcmV0dXJuIENTU1ZhbHVlSW52YWxpZDsK
K30KKworc3RhdGljIGlubGluZSBDU1NQcm9wZXJ0eUlEIG1hcEZyb21MZWdhY3lCcmVha1Byb3Bl
cnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHkpCit7CisgICAgaWYgKHByb3BlcnR5ID09IENTU1By
b3BlcnR5UGFnZUJyZWFrQWZ0ZXIgfHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5CcmVha0FmdGVyKQorICAgICAgICByZXR1cm4gQ1NTUHJvcGVydHlCcmVha0FmdGVyOworICAg
IGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0JlZm9yZSB8fCBwcm9wZXJ0eSA9
PSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQmVmb3JlKQorICAgICAgICByZXR1cm4gQ1NT
UHJvcGVydHlCcmVha0JlZm9yZTsKKyAgICBBU1NFUlQocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlQ
YWdlQnJlYWtJbnNpZGUgfHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVh
a0luc2lkZSk7CisgICAgcmV0dXJuIENTU1Byb3BlcnR5QnJlYWtJbnNpZGU7Cit9CisKK2Jvb2wg
Q1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVMZWdhY3lCcmVha1Byb3BlcnR5KENTU1Byb3BlcnR5
SUQgcHJvcGVydHksIGJvb2wgaW1wb3J0YW50KQoreworICAgIC8vIFRoZSBmcmFnbWVudGF0aW9u
IHNwZWMgc2F5cyB0aGF0IHBhZ2UtYnJlYWstKGFmdGVyfGJlZm9yZXxpbnNpZGUpIGFyZSB0byBi
ZSB0cmVhdGVkIGFzCisgICAgLy8gc2hvcnRoYW5kcyBmb3IgdGhlaXIgYnJlYWstKGFmdGVyfGJl
Zm9yZXxpbnNpZGUpIGNvdW50ZXJwYXJ0cy4gV2UnbGwgZG8gdGhlIHNhbWUgZm9yIHRoZQorICAg
IC8vIG5vbi1zdGFuZGFyZCBwcm9wZXJ0aWVzIC13ZWJraXQtY29sdW1uLWJyZWFrLShhZnRlcnxi
ZWZvcmV8aW5zaWRlKS4KKyAgICBDU1NQcmltaXRpdmVWYWx1ZSoga2V5d29yZCA9IGNvbnN1bWVJ
ZGVudChtX3JhbmdlKTsKKyAgICBpZiAoIWtleXdvcmQpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIENT
U1ZhbHVlSUQgdmFsdWUgPSBrZXl3b3JkLT5nZXRWYWx1ZUlEKCk7CisgICAgc3dpdGNoIChwcm9w
ZXJ0eSkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlQnJlYWtBZnRlcjoKKyAgICBjYXNlIENT
U1Byb3BlcnR5UGFnZUJyZWFrQmVmb3JlOgorICAgICAgICB2YWx1ZSA9IG1hcEZyb21QYWdlQnJl
YWtCZXR3ZWVuKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtbkJyZWFrQWZ0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJy
ZWFrQmVmb3JlOgorICAgICAgICB2YWx1ZSA9IG1hcEZyb21Db2x1bW5CcmVha0JldHdlZW4odmFs
dWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0luc2lkZToKKyAgICAgICAg
dmFsdWUgPSBtYXBGcm9tQ29sdW1uT3JQYWdlQnJlYWtJbnNpZGUodmFsdWUpOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
CisgICAgaWYgKHZhbHVlID09IENTU1ZhbHVlSW52YWxpZCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgQ1NTUHJvcGVydHlJRCBnZW5lcmljQnJlYWtQcm9wZXJ0eSA9IG1hcEZyb21MZWdh
Y3lCcmVha1Byb3BlcnR5KHByb3BlcnR5KTsKKyAgICBhZGRQcm9wZXJ0eShnZW5lcmljQnJlYWtQ
cm9wZXJ0eSwgcHJvcGVydHksICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcih2
YWx1ZSksIGltcG9ydGFudCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGNv
bnN1bWVCYWNrZ3JvdW5kUG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0
IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MsIENTU1Zh
bHVlKiYgcmVzdWx0WCwgQ1NTVmFsdWUqJiByZXN1bHRZKQoreworICAgIGRvIHsKKyAgICAgICAg
Q1NTVmFsdWUqIHBvc2l0aW9uWCA9IG51bGxwdHI7CisgICAgICAgIENTU1ZhbHVlKiBwb3NpdGlv
blkgPSBudWxscHRyOworICAgICAgICBpZiAoIWNvbnN1bWVQb3NpdGlvbihyYW5nZSwgY29udGV4
dC5tb2RlKCksIHVuaXRsZXNzLCBwb3NpdGlvblgsIHBvc2l0aW9uWSkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGFkZEJhY2tncm91bmRWYWx1ZShyZXN1bHRYLCBwb3NpdGlv
blgpOworICAgICAgICBhZGRCYWNrZ3JvdW5kVmFsdWUocmVzdWx0WSwgcG9zaXRpb25ZKTsKKyAg
ICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGNvbnN1bWVSZXBlYXRTdHlsZUNvbXBvbmVu
dChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTVmFsdWUqJiB2YWx1ZTEsIENTU1ZhbHVl
KiYgdmFsdWUyLCBib29sJiBpbXBsaWNpdCkKK3sKKyAgICBpZiAoY29uc3VtZUlkZW50PENTU1Zh
bHVlUmVwZWF0WD4ocmFuZ2UpKSB7CisgICAgICAgIHZhbHVlMSA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlUmVwZWF0KTsKKyAgICAgICAgdmFsdWUyID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb1JlcGVhdCk7CisgICAg
ICAgIGltcGxpY2l0ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlm
IChjb25zdW1lSWRlbnQ8Q1NTVmFsdWVSZXBlYXRZPihyYW5nZSkpIHsKKyAgICAgICAgdmFsdWUx
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb1JlcGVhdCk7
CisgICAgICAgIHZhbHVlMiA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENT
U1ZhbHVlUmVwZWF0KTsKKyAgICAgICAgaW1wbGljaXQgPSB0cnVlOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisgICAgdmFsdWUxID0gY29uc3VtZUlkZW50PENTU1ZhbHVlUmVwZWF0LCBD
U1NWYWx1ZU5vUmVwZWF0LCBDU1NWYWx1ZVJvdW5kLCBDU1NWYWx1ZVNwYWNlPihyYW5nZSk7Cisg
ICAgaWYgKCF2YWx1ZTEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHZhbHVlMiA9IGNv
bnN1bWVJZGVudDxDU1NWYWx1ZVJlcGVhdCwgQ1NTVmFsdWVOb1JlcGVhdCwgQ1NTVmFsdWVSb3Vu
ZCwgQ1NTVmFsdWVTcGFjZT4ocmFuZ2UpOworICAgIGlmICghdmFsdWUyKSB7CisgICAgICAgIHZh
bHVlMiA9IHZhbHVlMTsKKyAgICAgICAgaW1wbGljaXQgPSB0cnVlOworICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgY29uc3VtZVJlcGVhdFN0eWxlKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBDU1NWYWx1ZSomIHJlc3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSwg
Ym9vbCYgaW1wbGljaXQpCit7CisgICAgZG8geworICAgICAgICBDU1NWYWx1ZSogcmVwZWF0WCA9
IG51bGxwdHI7CisgICAgICAgIENTU1ZhbHVlKiByZXBlYXRZID0gbnVsbHB0cjsKKyAgICAgICAg
aWYgKCFjb25zdW1lUmVwZWF0U3R5bGVDb21wb25lbnQocmFuZ2UsIHJlcGVhdFgsIHJlcGVhdFks
IGltcGxpY2l0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYWRkQmFja2dy
b3VuZFZhbHVlKHJlc3VsdFgsIHJlcGVhdFgpOworICAgICAgICBhZGRCYWNrZ3JvdW5kVmFsdWUo
cmVzdWx0WSwgcmVwZWF0WSk7CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hp
dGVzcGFjZShyYW5nZSkpOworICAgIHJldHVybiB0cnVlOworfQorCisvLyBOb3RlOiBjb25zdW1l
QmFja2dyb3VuZFNob3J0aGFuZCBhc3N1bWVzIHkgcHJvcGVydGllcyAoZm9yIGV4YW1wbGUgYmFj
a2dyb3VuZC1wb3NpdGlvbi15KSBmb2xsb3cKKy8vIHRoZSB4IHByb3BlcnRpZXMgaW4gdGhlIHNo
b3J0aGFuZCBhcnJheS4KK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVCYWNrZ3JvdW5k
U2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCwgYm9vbCBp
bXBvcnRhbnQpCit7CisgICAgY29uc3QgdW5zaWduZWQgbG9uZ2hhbmRDb3VudCA9IHNob3J0aGFu
ZC5sZW5ndGgoKTsKKyAgICBDU1NWYWx1ZSogbG9uZ2hhbmRzWzEwXSA9IHsgMCB9OworICAgIEFT
U0VSVChsb25naGFuZENvdW50IDw9IDEwKTsKKworICAgIGJvb2wgaW1wbGljaXQgPSBmYWxzZTsK
KyAgICBkbyB7CisgICAgICAgIGJvb2wgcGFyc2VkTG9uZ2hhbmRbMTBdID0geyBmYWxzZSB9Owor
ICAgICAgICBDU1NWYWx1ZSogb3JpZ2luVmFsdWUgPSBudWxscHRyOworICAgICAgICBkbyB7Cisg
ICAgICAgICAgICBib29sIGZvdW5kUHJvcGVydHkgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbG9uZ2hhbmRDb3VudDsgKytpKSB7CisgICAgICAgICAgICAgICAg
aWYgKHBhcnNlZExvbmdoYW5kW2ldKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG51bGxwdHI7CisgICAgICAgICAgICAg
ICAgQ1NTVmFsdWUqIHZhbHVlWSA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eSA9IHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV07CisgICAgICAgICAgICAg
ICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFggfHwgcHJvcGVy
dHkgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WCkgeworICAgICAgICAgICAgICAgICAg
ICBjb25zdW1lUmVwZWF0U3R5bGVDb21wb25lbnQobV9yYW5nZSwgdmFsdWUsIHZhbHVlWSwgaW1w
bGljaXQpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUG9zaXRpb25YIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0TWFz
a1Bvc2l0aW9uWCkgeworICAgICAgICAgICAgICAgICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJh
bmdlQ29weSA9IG1fcmFuZ2U7CisgICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZVBvc2l0
aW9uKHJhbmdlQ29weSwgbV9jb250ZXh0Lm1vZGUoKSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCB2
YWx1ZSwgdmFsdWVZKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgICAgICBtX3JhbmdlID0gcmFuZ2VDb3B5OworICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSB8fCBwcm9wZXJ0eSA9
PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgh
Y29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShtX3JhbmdlKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGNvbnN1bWVC
YWNrZ3JvdW5kU2l6ZShwcm9wZXJ0eSwgbV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGlmICghdmFsdWUgfHwgIXBhcnNlZExvbmdoYW5kW2kgLSAxXSkgLy8g
UG9zaXRpb24gbXVzdCBoYXZlIGJlZW4gcGFyc2VkIGluIHRoZSBjdXJyZW50IGxheWVyLgorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZIHx8IHByb3Bl
cnR5ID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFkKKyAgICAgICAgICAgICAgICAgICAg
fHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZIHx8IHByb3BlcnR5
ID09IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFkpIHsKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
dmFsdWUgPSBjb25zdW1lQmFja2dyb3VuZENvbXBvbmVudChwcm9wZXJ0eSwgbV9yYW5nZSwgbV9j
b250ZXh0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91
bmRPcmlnaW4gfHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luKQorICAg
ICAgICAgICAgICAgICAgICAgICAgb3JpZ2luVmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgcGFyc2VkTG9uZ2hhbmRbaV0gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBmb3Vu
ZFByb3BlcnR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYWRkQmFja2dyb3VuZFZhbHVl
KGxvbmdoYW5kc1tpXSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVZKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRMb25naGFuZFtpICsgMV0gPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYWRkQmFja2dyb3VuZFZhbHVlKGxvbmdoYW5kc1tpICsg
MV0sIHZhbHVlWSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWZvdW5kUHJvcGVydHkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IHdoaWxlICghbV9yYW5nZS5hdEVuZCgpICYm
IG1fcmFuZ2UucGVlaygpLnR5cGUoKSAhPSBDb21tYVRva2VuKTsKKworICAgICAgICAvLyBGSVhN
RTogVGhpcyB3aWxsIG1ha2UgaW52YWxpZCBsb25naGFuZHMsIHNlZSBjcmJ1Zy5jb20vMzg2NDU5
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbG9uZ2hhbmRDb3VudDsgKytpKSB7Cisg
ICAgICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5ID0gc2hvcnRoYW5kLnByb3BlcnRpZXMo
KVtpXTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvciAmJiAhbV9yYW5nZS5hdEVuZCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHBhcnNlZExv
bmdoYW5kW2ldKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIENvbG9ycyBh
cmUgb25seSBhbGxvd2VkIGluIHRoZSBsYXN0IGxheWVyLgorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKChwcm9wZXJ0eSA9PSBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDbGlwIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0TWFza0Ns
aXApICYmICFwYXJzZWRMb25naGFuZFtpXSAmJiBvcmlnaW5WYWx1ZSkgeworICAgICAgICAgICAg
ICAgIGFkZEJhY2tncm91bmRWYWx1ZShsb25naGFuZHNbaV0sIG9yaWdpblZhbHVlKTsKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghcGFy
c2VkTG9uZ2hhbmRbaV0pCisgICAgICAgICAgICAgICAgYWRkQmFja2dyb3VuZFZhbHVlKGxvbmdo
YW5kc1tpXSwgQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpKTsKKyAgICAg
ICAgfQorICAgIH0gd2hpbGUgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UobV9yYW5n
ZSkpOworICAgIGlmICghbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxvbmdoYW5kQ291bnQ7ICsraSkgeworICAgICAg
ICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5ID0gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXTsKKyAg
ICAgICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUgJiYgbG9uZ2hh
bmRzW2ldICYmIG1fY29udGV4dC51c2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2
aW9yKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYWRkUHJvcGVydHkocHJvcGVy
dHksIHNob3J0aGFuZC5pZCgpLCAqbG9uZ2hhbmRzW2ldLCBpbXBvcnRhbnQsIGltcGxpY2l0KTsK
KyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNv
bnN1bWVHcmlkSXRlbVBvc2l0aW9uU2hvcnRoYW5kKENTU1Byb3BlcnR5SUQgc2hvcnRoYW5kSWQs
IGJvb2wgaW1wb3J0YW50KQoreworICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpj
c3NHcmlkTGF5b3V0RW5hYmxlZCgpKTsKKyAgICBjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5k
JiBzaG9ydGhhbmQgPSBzaG9ydGhhbmRGb3JQcm9wZXJ0eShzaG9ydGhhbmRJZCk7CisgICAgQVNT
RVJUKHNob3J0aGFuZC5sZW5ndGgoKSA9PSAyKTsKKyAgICBDU1NWYWx1ZSogc3RhcnRWYWx1ZSA9
IGNvbnN1bWVHcmlkTGluZShtX3JhbmdlKTsKKyAgICBpZiAoIXN0YXJ0VmFsdWUpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIENTU1ZhbHVlKiBlbmRWYWx1ZSA9IG51bGxwdHI7CisgICAg
aWYgKGNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UobV9yYW5nZSkpIHsKKyAgICAgICAg
ZW5kVmFsdWUgPSBjb25zdW1lR3JpZExpbmUobV9yYW5nZSk7CisgICAgICAgIGlmICghZW5kVmFs
dWUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZW5k
VmFsdWUgPSBzdGFydFZhbHVlLT5pc0N1c3RvbUlkZW50VmFsdWUoKSA/IHN0YXJ0VmFsdWUgOiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUF1dG8pOworICAgIH0K
KyAgICBpZiAoIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGFk
ZFByb3BlcnR5KHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbMF0sIHNob3J0aGFuZElkLCAqc3RhcnRW
YWx1ZSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShzaG9ydGhhbmQucHJvcGVydGllcygp
WzFdLCBzaG9ydGhhbmRJZCwgKmVuZFZhbHVlLCBpbXBvcnRhbnQpOworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lR3JpZEFyZWFTaG9ydGhhbmQo
Ym9vbCBpbXBvcnRhbnQpCit7CisgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNz
c0dyaWRMYXlvdXRFbmFibGVkKCkpOworICAgIEFTU0VSVChncmlkQXJlYVNob3J0aGFuZCgpLmxl
bmd0aCgpID09IDQpOworICAgIENTU1ZhbHVlKiByb3dTdGFydFZhbHVlID0gY29uc3VtZUdyaWRM
aW5lKG1fcmFuZ2UpOworICAgIGlmICghcm93U3RhcnRWYWx1ZSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIENTU1ZhbHVlKiBjb2x1bW5TdGFydFZhbHVlID0gbnVsbHB0cjsKKyAgICBDU1NW
YWx1ZSogcm93RW5kVmFsdWUgPSBudWxscHRyOworICAgIENTU1ZhbHVlKiBjb2x1bW5FbmRWYWx1
ZSA9IG51bGxwdHI7CisgICAgaWYgKGNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UobV9y
YW5nZSkpIHsKKyAgICAgICAgY29sdW1uU3RhcnRWYWx1ZSA9IGNvbnN1bWVHcmlkTGluZShtX3Jh
bmdlKTsKKyAgICAgICAgaWYgKCFjb2x1bW5TdGFydFZhbHVlKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBpZiAoY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShtX3Jh
bmdlKSkgeworICAgICAgICAgICAgcm93RW5kVmFsdWUgPSBjb25zdW1lR3JpZExpbmUobV9yYW5n
ZSk7CisgICAgICAgICAgICBpZiAoIXJvd0VuZFZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIGlmIChjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNl
KG1fcmFuZ2UpKSB7CisgICAgICAgICAgICAgICAgY29sdW1uRW5kVmFsdWUgPSBjb25zdW1lR3Jp
ZExpbmUobV9yYW5nZSk7CisgICAgICAgICAgICAgICAgaWYgKCFjb2x1bW5FbmRWYWx1ZSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorICAgIGlmICghbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKCFjb2x1bW5TdGFydFZhbHVlKQorICAgICAgICBjb2x1bW5TdGFydFZhbHVlID0g
cm93U3RhcnRWYWx1ZS0+aXNDdXN0b21JZGVudFZhbHVlKCkgPyByb3dTdGFydFZhbHVlIDogQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVBdXRvKTsKKyAgICBpZiAo
IXJvd0VuZFZhbHVlKQorICAgICAgICByb3dFbmRWYWx1ZSA9IHJvd1N0YXJ0VmFsdWUtPmlzQ3Vz
dG9tSWRlbnRWYWx1ZSgpID8gcm93U3RhcnRWYWx1ZSA6IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGVJZGVudGlmaWVyKENTU1ZhbHVlQXV0byk7CisgICAgaWYgKCFjb2x1bW5FbmRWYWx1ZSkKKyAg
ICAgICAgY29sdW1uRW5kVmFsdWUgPSBjb2x1bW5TdGFydFZhbHVlLT5pc0N1c3RvbUlkZW50VmFs
dWUoKSA/IGNvbHVtblN0YXJ0VmFsdWUgOiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRp
ZmllcihDU1NWYWx1ZUF1dG8pOworCisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkUm93
U3RhcnQsIENTU1Byb3BlcnR5R3JpZEFyZWEsICpyb3dTdGFydFZhbHVlLCBpbXBvcnRhbnQpOwor
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZENvbHVtblN0YXJ0LCBDU1NQcm9wZXJ0eUdy
aWRBcmVhLCAqY29sdW1uU3RhcnRWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUdyaWRSb3dFbmQsIENTU1Byb3BlcnR5R3JpZEFyZWEsICpyb3dFbmRWYWx1ZSwg
aW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRDb2x1bW5FbmQsIENT
U1Byb3BlcnR5R3JpZEFyZWEsICpjb2x1bW5FbmRWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUdyaWRUZW1wbGF0
ZVJvd3NBbmRBcmVhc0FuZENvbHVtbnMoQ1NTUHJvcGVydHlJRCBzaG9ydGhhbmRJZCwgYm9vbCBp
bXBvcnRhbnQpCit7CisgICAgTmFtZWRHcmlkQXJlYU1hcCBncmlkQXJlYU1hcDsKKyAgICBzaXpl
X3Qgcm93Q291bnQgPSAwOworICAgIHNpemVfdCBjb2x1bW5Db3VudCA9IDA7CisgICAgQ1NTVmFs
dWVMaXN0KiB0ZW1wbGF0ZVJvd3MgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVk
KCk7CisKKyAgICAvLyBQZXJzaXN0cyBiZXR3ZWVuIGxvb3AgaXRlcmF0aW9ucyBzbyB3ZSBjYW4g
dXNlIHRoZSBzYW1lIHZhbHVlIGZvcgorICAgIC8vIGNvbnNlY3V0aXZlIDxsaW5lLW5hbWVzPiB2
YWx1ZXMKKyAgICBDU1NHcmlkTGluZU5hbWVzVmFsdWUqIGxpbmVOYW1lcyA9IG51bGxwdHI7CisK
KyAgICBkbyB7CisgICAgICAgIC8vIEhhbmRsZSBsZWFkaW5nIDxjdXN0b20taWRlbnQ+Ki4KKyAg
ICAgICAgYm9vbCBoYXNQcmV2aW91c0xpbmVOYW1lcyA9IGxpbmVOYW1lczsKKyAgICAgICAgbGlu
ZU5hbWVzID0gY29uc3VtZUdyaWRMaW5lTmFtZXMobV9yYW5nZSwgbGluZU5hbWVzKTsKKyAgICAg
ICAgaWYgKGxpbmVOYW1lcyAmJiAhaGFzUHJldmlvdXNMaW5lTmFtZXMpCisgICAgICAgICAgICB0
ZW1wbGF0ZVJvd3MtPmFwcGVuZCgqbGluZU5hbWVzKTsKKworICAgICAgICAvLyBIYW5kbGUgYSB0
ZW1wbGF0ZS1hcmVhJ3Mgcm93LgorICAgICAgICBpZiAobV9yYW5nZS5wZWVrKCkudHlwZSgpICE9
IFN0cmluZ1Rva2VuIHx8ICFwYXJzZUdyaWRUZW1wbGF0ZUFyZWFzUm93KG1fcmFuZ2UuY29uc3Vt
ZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgpLnRvU3RyaW5nKCksIGdyaWRBcmVhTWFwLCBy
b3dDb3VudCwgY29sdW1uQ291bnQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICArK3Jvd0NvdW50OworCisgICAgICAgIC8vIEhhbmRsZSB0ZW1wbGF0ZS1yb3dzJ3MgdHJhY2st
c2l6ZS4KKyAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gY29uc3VtZUdyaWRUcmFja1NpemUobV9y
YW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAg
ICB2YWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlQXV0
byk7CisgICAgICAgIHRlbXBsYXRlUm93cy0+YXBwZW5kKCp2YWx1ZSk7CisKKyAgICAgICAgLy8g
VGhpcyB3aWxsIGhhbmRsZSB0aGUgdHJhaWxpbmcvbGVhZGluZyA8Y3VzdG9tLWlkZW50PiogaW4g
dGhlIGdyYW1tYXIuCisgICAgICAgIGxpbmVOYW1lcyA9IGNvbnN1bWVHcmlkTGluZU5hbWVzKG1f
cmFuZ2UpOworICAgICAgICBpZiAobGluZU5hbWVzKQorICAgICAgICAgICAgdGVtcGxhdGVSb3dz
LT5hcHBlbmQoKmxpbmVOYW1lcyk7CisgICAgfSB3aGlsZSAoIW1fcmFuZ2UuYXRFbmQoKSAmJiAh
KG1fcmFuZ2UucGVlaygpLnR5cGUoKSA9PSBEZWxpbWl0ZXJUb2tlbiAmJiBtX3JhbmdlLnBlZWso
KS5kZWxpbWl0ZXIoKSA9PSAnLycpKTsKKworICAgIENTU1ZhbHVlKiBjb2x1bW5zVmFsdWUgPSBu
dWxscHRyOworICAgIGlmICghbV9yYW5nZS5hdEVuZCgpKSB7CisgICAgICAgIGlmICghY29uc3Vt
ZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShtX3JhbmdlKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgY29sdW1uc1ZhbHVlID0gY29uc3VtZUdyaWRUcmFja0xpc3QobV9yYW5n
ZSwgbV9jb250ZXh0Lm1vZGUoKSwgR3JpZFRlbXBsYXRlTm9SZXBlYXQpOworICAgICAgICBpZiAo
IWNvbHVtbnNWYWx1ZSB8fCAhbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0gZWxzZSB7CisgICAgICAgIGNvbHVtbnNWYWx1ZSA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSk7CisgICAgfQorICAgIGFkZFByb3Bl
cnR5KENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlUm93cywgc2hvcnRoYW5kSWQsICp0ZW1wbGF0ZVJv
d3MsIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVD
b2x1bW5zLCBzaG9ydGhhbmRJZCwgKmNvbHVtbnNWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICBhZGRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZUFyZWFzLCBzaG9ydGhhbmRJZCwgKkNTU0dy
aWRUZW1wbGF0ZUFyZWFzVmFsdWU6OmNyZWF0ZShncmlkQXJlYU1hcCwgcm93Q291bnQsIGNvbHVt
bkNvdW50KSwgaW1wb3J0YW50KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NQcm9w
ZXJ0eVBhcnNlcjo6Y29uc3VtZUdyaWRUZW1wbGF0ZVNob3J0aGFuZChDU1NQcm9wZXJ0eUlEIHNo
b3J0aGFuZElkLCBib29sIGltcG9ydGFudCkKK3sKKyAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6Y3NzR3JpZExheW91dEVuYWJsZWQoKSk7CisgICAgQVNTRVJUKGdyaWRUZW1wbGF0
ZVNob3J0aGFuZCgpLmxlbmd0aCgpID09IDMpOworCisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBy
YW5nZUNvcHkgPSBtX3JhbmdlOworICAgIENTU1ZhbHVlKiByb3dzVmFsdWUgPSBjb25zdW1lSWRl
bnQ8Q1NTVmFsdWVOb25lPihtX3JhbmdlKTsKKworICAgIC8vIDEtICdub25lJyBjYXNlLgorICAg
IGlmIChyb3dzVmFsdWUgJiYgbV9yYW5nZS5hdEVuZCgpKSB7CisgICAgICAgIGFkZFByb3BlcnR5
KENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlUm93cywgc2hvcnRoYW5kSWQsICpDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpLCBpbXBvcnRhbnQpOworICAgICAg
ICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZUNvbHVtbnMsIHNob3J0aGFuZElk
LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKSwgaW1w
b3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVBcmVh
cywgc2hvcnRoYW5kSWQsICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NW
YWx1ZU5vbmUpLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg
ICAvLyAyLSA8Z3JpZC10ZW1wbGF0ZS1yb3dzPiAvIDxncmlkLXRlbXBsYXRlLWNvbHVtbnM+Cisg
ICAgaWYgKCFyb3dzVmFsdWUpCisgICAgICAgIHJvd3NWYWx1ZSA9IGNvbnN1bWVHcmlkVHJhY2tM
aXN0KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIEdyaWRUZW1wbGF0ZSk7CisKKyAgICBpZiAo
cm93c1ZhbHVlKSB7CisgICAgICAgIGlmICghY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFj
ZShtX3JhbmdlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgQ1NTVmFsdWUq
IGNvbHVtbnNWYWx1ZSA9IGNvbnN1bWVHcmlkVGVtcGxhdGVzUm93c09yQ29sdW1ucyhtX3Jhbmdl
LCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICAgICAgaWYgKCFjb2x1bW5zVmFsdWUgfHwgIW1fcmFu
Z2UuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBhZGRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZVJvd3MsIHNob3J0aGFuZElkLCAqcm93c1ZhbHVl
LCBpbXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0
ZUNvbHVtbnMsIHNob3J0aGFuZElkLCAqY29sdW1uc1ZhbHVlLCBpbXBvcnRhbnQpOworICAgICAg
ICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZUFyZWFzLCBzaG9ydGhhbmRJZCwg
KkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSksIGltcG9y
dGFudCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIDMtIFsgPGxpbmUt
bmFtZXM+PyA8c3RyaW5nPiA8dHJhY2stc2l6ZT4/IDxsaW5lLW5hbWVzPj8gXSsgWyAvIDx0cmFj
ay1saXN0PiBdPworICAgIG1fcmFuZ2UgPSByYW5nZUNvcHk7CisgICAgcmV0dXJuIGNvbnN1bWVH
cmlkVGVtcGxhdGVSb3dzQW5kQXJlYXNBbmRDb2x1bW5zKHNob3J0aGFuZElkLCBpbXBvcnRhbnQp
OworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lR3JpZFNob3J0aGFuZChib29s
IGltcG9ydGFudCkKK3sKKyAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzR3Jp
ZExheW91dEVuYWJsZWQoKSk7CisgICAgQVNTRVJUKHNob3J0aGFuZEZvclByb3BlcnR5KENTU1By
b3BlcnR5R3JpZCkubGVuZ3RoKCkgPT0gOCk7CisKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJh
bmdlQ29weSA9IG1fcmFuZ2U7CisKKyAgICAvLyAxLSA8Z3JpZC10ZW1wbGF0ZT4KKyAgICBpZiAo
Y29uc3VtZUdyaWRUZW1wbGF0ZVNob3J0aGFuZChDU1NQcm9wZXJ0eUdyaWQsIGltcG9ydGFudCkp
IHsKKyAgICAgICAgLy8gSXQgY2FuIG9ubHkgYmUgc3BlY2lmaWVkIHRoZSBleHBsaWNpdCBvciB0
aGUgaW1wbGljaXQgZ3JpZCBwcm9wZXJ0aWVzIGluIGEgc2luZ2xlIGdyaWQgZGVjbGFyYXRpb24u
CisgICAgICAgIC8vIFRoZSBzdWItcHJvcGVydGllcyBub3Qgc3BlY2lmaWVkIGFyZSBzZXQgdG8g
dGhlaXIgaW5pdGlhbCB2YWx1ZSwgYXMgbm9ybWFsIGZvciBzaG9ydGhhbmRzLgorICAgICAgICBh
ZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRBdXRvRmxvdywgQ1NTUHJvcGVydHlHcmlkLCAqQ1NT
SW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgICAg
ICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRBdXRvQ29sdW1ucywgQ1NTUHJvcGVydHlHcmlk
LCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOwor
ICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRBdXRvUm93cywgQ1NTUHJvcGVydHlH
cmlkLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQp
OworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRDb2x1bW5HYXAsIENTU1Byb3Bl
cnR5R3JpZCwgKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0
YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkUm93R2FwLCBDU1NQcm9w
ZXJ0eUdyaWQsICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9y
dGFudCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIG1fcmFuZ2UgPSByYW5n
ZUNvcHk7CisKKyAgICAvLyAyLSA8Z3JpZC1hdXRvLWZsb3c+IFsgPGdyaWQtYXV0by1yb3dzPiBb
IC8gPGdyaWQtYXV0by1jb2x1bW5zPiBdPyBdCisgICAgQ1NTVmFsdWVMaXN0KiBncmlkQXV0b0Zs
b3cgPSBjb25zdW1lR3JpZEF1dG9GbG93KG1fcmFuZ2UpOworICAgIGlmICghZ3JpZEF1dG9GbG93
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDU1NWYWx1ZSogYXV0b0NvbHVtbnNWYWx1
ZSA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIGF1dG9Sb3dzVmFsdWUgPSBudWxscHRyOworCisg
ICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkpIHsKKyAgICAgICAgYXV0b1Jvd3NWYWx1ZSA9IGNvbnN1
bWVHcmlkVHJhY2tMaXN0KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIEdyaWRBdXRvKTsKKyAg
ICAgICAgaWYgKCFhdXRvUm93c1ZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBpZiAoY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShtX3JhbmdlKSkgeworICAg
ICAgICAgICAgYXV0b0NvbHVtbnNWYWx1ZSA9IGNvbnN1bWVHcmlkVHJhY2tMaXN0KG1fcmFuZ2Us
IG1fY29udGV4dC5tb2RlKCksIEdyaWRBdXRvKTsKKyAgICAgICAgICAgIGlmICghYXV0b0NvbHVt
bnNWYWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgLy8gT3RoZXIgb21pdHRlZCB2YWx1ZXMgYXJlIHNldCB0byB0aGVp
ciBpbml0aWFsIHZhbHVlcy4KKyAgICAgICAgYXV0b0NvbHVtbnNWYWx1ZSA9IENTU0luaXRpYWxW
YWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKTsKKyAgICAgICAgYXV0b1Jvd3NWYWx1ZSA9IENT
U0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKTsKKyAgICB9CisKKyAgICAvLyBp
ZiA8Z3JpZC1hdXRvLWNvbHVtbnM+IHZhbHVlIGlzIG9taXR0ZWQsIGl0IGlzIHNldCB0byB0aGUg
dmFsdWUgc3BlY2lmaWVkIGZvciBncmlkLWF1dG8tcm93cy4KKyAgICBpZiAoIWF1dG9Db2x1bW5z
VmFsdWUpCisgICAgICAgIGF1dG9Db2x1bW5zVmFsdWUgPSBhdXRvUm93c1ZhbHVlOworCisgICAg
Ly8gSXQgY2FuIG9ubHkgYmUgc3BlY2lmaWVkIHRoZSBleHBsaWNpdCBvciB0aGUgaW1wbGljaXQg
Z3JpZCBwcm9wZXJ0aWVzIGluIGEgc2luZ2xlIGdyaWQgZGVjbGFyYXRpb24uCisgICAgLy8gVGhl
IHN1Yi1wcm9wZXJ0aWVzIG5vdCBzcGVjaWZpZWQgYXJlIHNldCB0byB0aGVpciBpbml0aWFsIHZh
bHVlLCBhcyBub3JtYWwgZm9yIHNob3J0aGFuZHMuCisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVy
dHlHcmlkVGVtcGxhdGVDb2x1bW5zLCBDU1NQcm9wZXJ0eUdyaWQsICpDU1NJbml0aWFsVmFsdWU6
OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NT
UHJvcGVydHlHcmlkVGVtcGxhdGVSb3dzLCBDU1NQcm9wZXJ0eUdyaWQsICpDU1NJbml0aWFsVmFs
dWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHko
Q1NTUHJvcGVydHlHcmlkVGVtcGxhdGVBcmVhcywgQ1NTUHJvcGVydHlHcmlkLCAqQ1NTSW5pdGlh
bFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3Bl
cnR5KENTU1Byb3BlcnR5R3JpZEF1dG9GbG93LCBDU1NQcm9wZXJ0eUdyaWQsICpncmlkQXV0b0Zs
b3csIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkQXV0b0NvbHVt
bnMsIENTU1Byb3BlcnR5R3JpZCwgKmF1dG9Db2x1bW5zVmFsdWUsIGltcG9ydGFudCk7CisgICAg
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkQXV0b1Jvd3MsIENTU1Byb3BlcnR5R3JpZCwgKmF1
dG9Sb3dzVmFsdWUsIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlk
Q29sdW1uR2FwLCBDU1NQcm9wZXJ0eUdyaWQsICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2Fj
eUltcGxpY2l0KCksIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlk
Um93R2FwLCBDU1NQcm9wZXJ0eUdyaWQsICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUlt
cGxpY2l0KCksIGltcG9ydGFudCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTUHJv
cGVydHlQYXJzZXI6OnBhcnNlU2hvcnRoYW5kKENTU1Byb3BlcnR5SUQgdW5yZXNvbHZlZFByb3Bl
cnR5LCBib29sIGltcG9ydGFudCkKK3sKKyAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5ID0gcmVz
b2x2ZUNTU1Byb3BlcnR5SUQodW5yZXNvbHZlZFByb3BlcnR5KTsKKworICAgIHN3aXRjaCAocHJv
cGVydHkpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2U6IHsKKyAg
ICAgICAgQ1NTVmFsdWVJRCBpZCA9IG1fcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2Uo
KS5pZCgpOworICAgICAgICBpZiAoIUNTU1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdvcmRQ
cm9wZXJ0eUFuZFZhbHVlKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UsIGlk
LCBtX2NvbnRleHQubW9kZSgpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
Q1NTVmFsdWUqIGJlZm9yZUNvbGxhcHNlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50
aWZpZXIoaWQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJl
Zm9yZUNvbGxhcHNlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlLCAqYmVmb3JlQ29s
bGFwc2UsIGltcG9ydGFudCk7CisgICAgICAgIGlmIChtX3JhbmdlLmF0RW5kKCkpIHsKKyAgICAg
ICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSwg
Q1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSwgKmJlZm9yZUNvbGxhcHNlLCBpbXBvcnRh
bnQpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWQgPSBt
X3JhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKKyAgICAgICAgaWYgKCFD
U1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRWYWx1ZShDU1NQcm9w
ZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UsIGlkLCBtX2NvbnRleHQubW9kZSgpKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNl
LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoaWQpLCBpbXBvcnRhbnQpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93
OiB7CisgICAgICAgIENTU1ZhbHVlSUQgaWQgPSBtX3JhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0
ZXNwYWNlKCkuaWQoKTsKKyAgICAgICAgaWYgKCFDU1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFsaWRL
ZXl3b3JkUHJvcGVydHlBbmRWYWx1ZShDU1NQcm9wZXJ0eU92ZXJmbG93WSwgaWQsIG1fY29udGV4
dC5tb2RlKCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIW1fcmFu
Z2UuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgQ1NTVmFsdWUq
IG92ZXJmbG93WVZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoaWQp
OworCisgICAgICAgIENTU1ZhbHVlKiBvdmVyZmxvd1hWYWx1ZSA9IG51bGxwdHI7CisKKyAgICAg
ICAgLy8gRklYTUU6IC13ZWJraXQtcGFnZWQteCBvciAtd2Via2l0LXBhZ2VkLXkgb25seSBhcHBs
eSB0byBvdmVyZmxvdy15LiBJZiB0aGlzIHZhbHVlIGhhcyBiZWVuCisgICAgICAgIC8vIHNldCB1
c2luZyB0aGUgc2hvcnRoYW5kLCB0aGVuIGZvciBub3cgb3ZlcmZsb3cteCB3aWxsIGRlZmF1bHQg
dG8gYXV0bywgYnV0IG9uY2Ugd2UgaW1wbGVtZW50CisgICAgICAgIC8vIHBhZ2luYXRpb24gY29u
dHJvbHMsIGl0IHNob3VsZCBkZWZhdWx0IHRvIGhpZGRlbi4gSWYgdGhlIG92ZXJmbG93LXkgdmFs
dWUgaXMgYW55dGhpbmcgYnV0CisgICAgICAgIC8vIHBhZ2VkLXggb3IgcGFnZWQteSwgdGhlbiBv
dmVyZmxvdy14IGFuZCBvdmVyZmxvdy15IHNob3VsZCBoYXZlIHRoZSBzYW1lIHZhbHVlLgorICAg
ICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRQYWdlZFggfHwgaWQgPT0gQ1NTVmFsdWVXZWJr
aXRQYWdlZFkpCisgICAgICAgICAgICBvdmVyZmxvd1hWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlQXV0byk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIG92ZXJmbG93WFZhbHVlID0gb3ZlcmZsb3dZVmFsdWU7CisgICAgICAgIGFkZFByb3BlcnR5
KENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBDU1NQcm9wZXJ0eU92ZXJmbG93LCAqb3ZlcmZsb3dYVmFs
dWUsIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5T3ZlcmZsb3dZ
LCBDU1NQcm9wZXJ0eU92ZXJmbG93LCAqb3ZlcmZsb3dZVmFsdWUsIGltcG9ydGFudCk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udDogeworICAg
ICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSBtX3JhbmdlLnBlZWsoKTsKKyAgICAg
ICAgaWYgKHRva2VuLmlkKCkgPj0gQ1NTVmFsdWVDYXB0aW9uICYmIHRva2VuLmlkKCkgPD0gQ1NT
VmFsdWVTdGF0dXNCYXIpCisgICAgICAgICAgICByZXR1cm4gY29uc3VtZVN5c3RlbUZvbnQoaW1w
b3J0YW50KTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVGb250KGltcG9ydGFudCk7CisgICAgfQor
ICAgIGNhc2UgQ1NTUHJvcGVydHlGb250VmFyaWFudDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVG
b250VmFyaWFudFNob3J0aGFuZChpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJTcGFjaW5nOgorICAgICAgICByZXR1cm4gY29uc3VtZUJvcmRlclNwYWNpbmcoaW1wb3J0YW50
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1uczoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVD
b2x1bW5zKGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbjoKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVBbmltYXRpb25TaG9ydGhhbmQoYW5pbWF0aW9uU2hvcnRoYW5kRm9y
UGFyc2luZygpLCB1bnJlc29sdmVkUHJvcGVydHkgPT0gQ1NTUHJvcGVydHlBbGlhc1dlYmtpdEFu
aW1hdGlvbiwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvbjoKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVBbmltYXRpb25TaG9ydGhhbmQodHJhbnNpdGlvblNob3J0aGFu
ZEZvclBhcnNpbmcoKSwgZmFsc2UsIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRl
eHREZWNvcmF0aW9uOgorICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3Nz
M1RleHREZWNvcmF0aW9uc0VuYWJsZWQoKSk7CisgICAgICAgIHJldHVybiBjb25zdW1lU2hvcnRo
YW5kR3JlZWRpbHkodGV4dERlY29yYXRpb25TaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5TWFyZ2luOgorICAgICAgICByZXR1cm4gY29uc3VtZTRWYWx1ZXMobWFy
Z2luU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmc6
CisgICAgICAgIHJldHVybiBjb25zdW1lNFZhbHVlcyhwYWRkaW5nU2hvcnRoYW5kKCksIGltcG9y
dGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1vdGlvbjoKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVTaG9ydGhhbmRHcmVlZGlseShtb3Rpb25TaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzOgorICAgICAgICByZXR1cm4gY29uc3Vt
ZVNob3J0aGFuZEdyZWVkaWx5KHdlYmtpdFRleHRFbXBoYXNpc1Nob3J0aGFuZCgpLCBpbXBvcnRh
bnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lOgorICAgICAgICByZXR1cm4gY29uc3Vt
ZVNob3J0aGFuZEdyZWVkaWx5KG91dGxpbmVTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnQ6CisgICAgICAgIHJldHVybiBjb25zdW1l
U2hvcnRoYW5kR3JlZWRpbHkod2Via2l0Qm9yZGVyU3RhcnRTaG9ydGhhbmQoKSwgaW1wb3J0YW50
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kOgorICAgICAgICByZXR1cm4g
Y29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KHdlYmtpdEJvcmRlckVuZFNob3J0aGFuZCgpLCBpbXBv
cnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmU6CisgICAgICAg
IHJldHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkod2Via2l0Qm9yZGVyQmVmb3JlU2hvcnRo
YW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVy
OgorICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KHdlYmtpdEJvcmRlckFm
dGVyU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRTdHJva2U6CisgICAgICAgIHJldHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkod2Via2l0
VGV4dFN0cm9rZVNob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlN
YXJrZXI6IHsKKyAgICAgICAgY29uc3QgQ1NTVmFsdWUqIG1hcmtlciA9IHBhcnNlU2luZ2xlVmFs
dWUoQ1NTUHJvcGVydHlNYXJrZXJTdGFydCk7CisgICAgICAgIGlmICghbWFya2VyIHx8ICFtX3Jh
bmdlLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFkZFByb3Bl
cnR5KENTU1Byb3BlcnR5TWFya2VyU3RhcnQsIENTU1Byb3BlcnR5TWFya2VyLCAqbWFya2VyLCBp
bXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmtlck1pZCwgQ1NT
UHJvcGVydHlNYXJrZXIsICptYXJrZXIsIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5
KENTU1Byb3BlcnR5TWFya2VyRW5kLCBDU1NQcm9wZXJ0eU1hcmtlciwgKm1hcmtlciwgaW1wb3J0
YW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlG
bGV4OgorICAgICAgICByZXR1cm4gY29uc3VtZUZsZXgoaW1wb3J0YW50KTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5RmxleEZsb3c6CisgICAgICAgIHJldHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRp
bHkoZmxleEZsb3dTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
Q29sdW1uUnVsZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhhbmRHcmVlZGlseShjb2x1
bW5SdWxlU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RT
dHlsZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhhbmRHcmVlZGlseShsaXN0U3R5bGVT
aG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVz
OiB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBob3Jpem9udGFsUmFkaWlbNF0gPSB7IDAg
fTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZlcnRpY2FsUmFkaWlbNF0gPSB7IDAgfTsK
KyAgICAgICAgaWYgKCFjb25zdW1lUmFkaWkoaG9yaXpvbnRhbFJhZGlpLCB2ZXJ0aWNhbFJhZGlp
LCBtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCB1bnJlc29sdmVkUHJvcGVydHkgPT0gQ1NTUHJv
cGVydHlBbGlhc1dlYmtpdEJvcmRlclJhZGl1cykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1cywgQ1NT
UHJvcGVydHlCb3JkZXJSYWRpdXMsICpDU1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsUmFk
aWlbMF0sIHZlcnRpY2FsUmFkaWlbMF0sIENTU1ZhbHVlUGFpcjo6RHJvcElkZW50aWNhbFZhbHVl
cyksIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyVG9w
UmlnaHRSYWRpdXMsIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzLCAqQ1NTVmFsdWVQYWlyOjpjcmVh
dGUoaG9yaXpvbnRhbFJhZGlpWzFdLCB2ZXJ0aWNhbFJhZGlpWzFdLCBDU1NWYWx1ZVBhaXI6OkRy
b3BJZGVudGljYWxWYWx1ZXMpLCBpbXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cywg
KkNTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhvcml6b250YWxSYWRpaVsyXSwgdmVydGljYWxSYWRpaVsy
XSwgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVzKSwgaW1wb3J0YW50KTsKKyAgICAg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLCBDU1NQcm9w
ZXJ0eUJvcmRlclJhZGl1cywgKkNTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhvcml6b250YWxSYWRpaVsz
XSwgdmVydGljYWxSYWRpaVszXSwgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVzKSwg
aW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJDb2xvcjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWU0VmFsdWVzKGJvcmRlckNv
bG9yU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclN0
eWxlOgorICAgICAgICByZXR1cm4gY29uc3VtZTRWYWx1ZXMoYm9yZGVyU3R5bGVTaG9ydGhhbmQo
KSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGg6CisgICAgICAg
IHJldHVybiBjb25zdW1lNFZhbHVlcyhib3JkZXJXaWR0aFNob3J0aGFuZCgpLCBpbXBvcnRhbnQp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3A6CisgICAgICAgIHJldHVybiBjb25zdW1l
U2hvcnRoYW5kR3JlZWRpbHkoYm9yZGVyVG9wU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0OgorICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0
aGFuZEdyZWVkaWx5KGJvcmRlclJpZ2h0U2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhh
bmRHcmVlZGlseShib3JkZXJCb3R0b21TaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyTGVmdDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhhbmRH
cmVlZGlseShib3JkZXJMZWZ0U2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlcjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCb3JkZXIoaW1wb3J0YW50KTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tCb3hJbWFnZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCb3JkZXJJbWFnZShwcm9w
ZXJ0eSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFnZUJyZWFrQWZ0ZXI6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0JlZm9yZToKKyAgICBjYXNlIENTU1Byb3BlcnR5
UGFnZUJyZWFrSW5zaWRlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0Fm
dGVyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0JlZm9yZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGU6CisgICAgICAgIHJldHVybiBj
b25zdW1lTGVnYWN5QnJlYWtQcm9wZXJ0eShwcm9wZXJ0eSwgaW1wb3J0YW50KTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUG9zaXRpb246IHsKKyAgICAgICAgQ1NTVmFsdWUqIHJlc3VsdFggPSBudWxscHRyOwor
ICAgICAgICBDU1NWYWx1ZSogcmVzdWx0WSA9IG51bGxwdHI7CisgICAgICAgIGlmICghY29uc3Vt
ZUJhY2tncm91bmRQb3NpdGlvbihtX3JhbmdlLCBtX2NvbnRleHQsIFVuaXRsZXNzUXVpcms6OkFs
bG93LCByZXN1bHRYLCByZXN1bHRZKSB8fCAhbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRQb3NpdGlvbiA/IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCA6IENT
U1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCwgcHJvcGVydHksICpyZXN1bHRYLCBpbXBvcnRh
bnQpOworICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91
bmRQb3NpdGlvbiA/IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSA6IENTU1Byb3BlcnR5
V2Via2l0TWFza1Bvc2l0aW9uWSwgcHJvcGVydHksICpyZXN1bHRZLCBpbXBvcnRhbnQpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRS
ZXBlYXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQ6IHsKKyAgICAgICAg
Q1NTVmFsdWUqIHJlc3VsdFggPSBudWxscHRyOworICAgICAgICBDU1NWYWx1ZSogcmVzdWx0WSA9
IG51bGxwdHI7CisgICAgICAgIGJvb2wgaW1wbGljaXQgPSBmYWxzZTsKKyAgICAgICAgaWYgKCFj
b25zdW1lUmVwZWF0U3R5bGUobV9yYW5nZSwgcmVzdWx0WCwgcmVzdWx0WSwgaW1wbGljaXQpIHx8
ICFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFk
ZFByb3BlcnR5KHByb3BlcnR5ID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCA/IENTU1By
b3BlcnR5QmFja2dyb3VuZFJlcGVhdFggOiBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLCBw
cm9wZXJ0eSwgKnJlc3VsdFgsIGltcG9ydGFudCwgaW1wbGljaXQpOworICAgICAgICBhZGRQcm9w
ZXJ0eShwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQgPyBDU1NQcm9wZXJ0
eUJhY2tncm91bmRSZXBlYXRZIDogQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSwgcHJvcGVy
dHksICpyZXN1bHRZLCBpbXBvcnRhbnQsIGltcGxpY2l0KTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kOgorICAgICAgICByZXR1cm4g
Y29uc3VtZUJhY2tncm91bmRTaG9ydGhhbmQoYmFja2dyb3VuZFNob3J0aGFuZCgpLCBpbXBvcnRh
bnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrOgorICAgICAgICByZXR1cm4gY29u
c3VtZUJhY2tncm91bmRTaG9ydGhhbmQod2Via2l0TWFza1Nob3J0aGFuZCgpLCBpbXBvcnRhbnQp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkR2FwOiB7CisgICAgICAgIEFTU0VSVChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpjc3NHcmlkTGF5b3V0RW5hYmxlZCgpICYmIHNob3J0aGFuZEZvclBy
b3BlcnR5KENTU1Byb3BlcnR5R3JpZEdhcCkubGVuZ3RoKCkgPT0gMik7CisgICAgICAgIENTU1Zh
bHVlKiByb3dHYXAgPSBjb25zdW1lTGVuZ3RoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFZh
bHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgIENTU1ZhbHVlKiBjb2x1bW5HYXAgPSBjb25z
dW1lTGVuZ3RoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VOb25OZWdhdGl2
ZSk7CisgICAgICAgIGlmICghcm93R2FwIHx8ICFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghY29sdW1uR2FwKQorICAgICAgICAgICAgY29s
dW1uR2FwID0gcm93R2FwOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRSb3dH
YXAsIENTU1Byb3BlcnR5R3JpZEdhcCwgKnJvd0dhcCwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRk
UHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkQ29sdW1uR2FwLCBDU1NQcm9wZXJ0eUdyaWRHYXAsICpj
b2x1bW5HYXAsIGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBj
YXNlIENTU1Byb3BlcnR5R3JpZENvbHVtbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZFJvdzoK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVHcmlkSXRlbVBvc2l0aW9uU2hvcnRoYW5kKHByb3BlcnR5
LCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkQXJlYToKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVHcmlkQXJlYVNob3J0aGFuZChpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlHcmlkVGVtcGxhdGU6CisgICAgICAgIHJldHVybiBjb25zdW1lR3JpZFRlbXBsYXRlU2hv
cnRoYW5kKENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlHcmlkOgorICAgICAgICByZXR1cm4gY29uc3VtZUdyaWRTaG9ydGhhbmQoaW1wb3J0
YW50KTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorKi8K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgTGFycyBLbm9sbCAoa25vbGxAa2Rl
Lm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAwOSwgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
RXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOSAtIDIw
MTAgIFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2lmbmRlZiBDU1NQcm9wZXJ0eVBhcnNlcl9oCisjZGVmaW5lIENTU1Byb3BlcnR5UGFyc2VyX2gK
KworI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuUmFuZ2UuaCIKKyNpbmNsdWRlICJTdHlsZVJ1bGUu
aCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgQ1NTUHJvcGVydHk7CitjbGFzcyBDU1NWYWx1ZTsKK2NsYXNzIFN0eWxlUHJv
cGVydHlTaG9ydGhhbmQ7CisKKy8vIElucHV0czogUHJvcGVydHlJRCwgaXNJbXBvcnRhbnQgYm9v
bCwgQ1NTUGFyc2VyVG9rZW5SYW5nZS4KKy8vIE91dHB1dHM6IFZlY3RvciBvZiBDU1NQcm9wZXJ0
aWVzCisKK2NsYXNzIENTU1Byb3BlcnR5UGFyc2VyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShDU1NQcm9wZXJ0eVBhcnNlcik7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgcGFyc2VWYWx1
ZShDU1NQcm9wZXJ0eUlELCBib29sIGltcG9ydGFudCwKKyAgICAgICAgY29uc3QgQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmLAorICAgICAgICBWZWN0b3I8Q1NT
UHJvcGVydHksIDI1Nj4mLCBTdHlsZVJ1bGU6OlR5cGUpOworCisgICAgLy8gUGFyc2VzIGEgbm9u
LXNob3J0aGFuZCBDU1MgcHJvcGVydHkKKyAgICBzdGF0aWMgY29uc3QgQ1NTVmFsdWUqIHBhcnNl
U2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlJRCwgY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNv
bnN0IENTU1BhcnNlckNvbnRleHQmKTsKKworcHJpdmF0ZToKKyAgICBDU1NQcm9wZXJ0eVBhcnNl
cihjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYsCisg
ICAgICAgIFZlY3RvcjxDU1NQcm9wZXJ0eSwgMjU2PiopOworCisgICAgLy8gRklYTUU6IFJlbmFt
ZSBvbmNlIHRoZSBDU1NQYXJzZXJWYWx1ZS1iYXNlZCBwYXJzZVZhbHVlIGlzIHJlbW92ZWQKKyAg
ICBib29sIHBhcnNlVmFsdWVTdGFydChDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0eSwg
Ym9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wgY29uc3VtZUNTU1dpZGVLZXl3b3JkKENTU1Byb3Bl
cnR5SUQgdW5yZXNvbHZlZFByb3BlcnR5LCBib29sIGltcG9ydGFudCk7CisgICAgY29uc3QgQ1NT
VmFsdWUqIHBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlJRCwgQ1NTUHJvcGVydHlJRCA9IENT
U1Byb3BlcnR5SW52YWxpZCk7CisKKyAgICBib29sIGluUXVpcmtzTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29udGV4dC5tb2RlID09IENTU1F1aXJrc01vZGU7IH0KKworICAgIGJvb2wgcGFyc2VW
aWV3cG9ydERlc2NyaXB0b3IoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsK
KyAgICBib29sIHBhcnNlRm9udEZhY2VEZXNjcmlwdG9yKENTU1Byb3BlcnR5SUQpOworCisgICAg
dm9pZCBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBDU1NQcm9wZXJ0eUlELCBjb25zdCBDU1NW
YWx1ZSYsIGJvb2wgaW1wb3J0YW50LCBib29sIGltcGxpY2l0ID0gZmFsc2UpOworICAgIHZvaWQg
YWRkRXhwYW5kZWRQcm9wZXJ0eUZvclZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBjb25zdCBD
U1NWYWx1ZSYsIGJvb2wpOworCisgICAgYm9vbCBjb25zdW1lQm9yZGVyKGJvb2wgaW1wb3J0YW50
KTsKKworICAgIGJvb2wgcGFyc2VTaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRh
bnQpOworICAgIGJvb2wgY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KGNvbnN0IFN0eWxlUHJvcGVy
dHlTaG9ydGhhbmQmLCBib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBjb25zdW1lNFZhbHVlcyhj
b25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiwgYm9vbCBpbXBvcnRhbnQpOworCisgICAgLy8g
TGVnYWN5IHBhcnNpbmcgYWxsb3dzIDxzdHJpbmc+cyBmb3IgYW5pbWF0aW9uLW5hbWUKKyAgICBi
b29sIGNvbnN1bWVBbmltYXRpb25TaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFu
ZCYsIGJvb2wgdXNlTGVnYWN5UGFyc2luZywgYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wgY29u
c3VtZUJhY2tncm91bmRTaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYsIGJv
b2wgaW1wb3J0YW50KTsKKworICAgIGJvb2wgY29uc3VtZUNvbHVtbnMoYm9vbCBpbXBvcnRhbnQp
OworCisgICAgYm9vbCBjb25zdW1lR3JpZEl0ZW1Qb3NpdGlvblNob3J0aGFuZChDU1NQcm9wZXJ0
eUlELCBib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBjb25zdW1lR3JpZFRlbXBsYXRlUm93c0Fu
ZEFyZWFzQW5kQ29sdW1ucyhDU1NQcm9wZXJ0eUlELCBib29sIGltcG9ydGFudCk7CisgICAgYm9v
bCBjb25zdW1lR3JpZFRlbXBsYXRlU2hvcnRoYW5kKENTU1Byb3BlcnR5SUQsIGJvb2wgaW1wb3J0
YW50KTsKKyAgICBib29sIGNvbnN1bWVHcmlkU2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KTsKKyAg
ICBib29sIGNvbnN1bWVHcmlkQXJlYVNob3J0aGFuZChib29sIGltcG9ydGFudCk7CisKKyAgICBi
b29sIGNvbnN1bWVGb250KGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29sIGNvbnN1bWVGb250VmFy
aWFudFNob3J0aGFuZChib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBjb25zdW1lU3lzdGVtRm9u
dChib29sIGltcG9ydGFudCk7CisKKyAgICBib29sIGNvbnN1bWVCb3JkZXJTcGFjaW5nKGJvb2wg
aW1wb3J0YW50KTsKKworICAgIC8vIENTUzMgUGFyc2luZyBSb3V0aW5lcyAoZm9yIHByb3BlcnRp
ZXMgc3BlY2lmaWMgdG8gQ1NTMykKKyAgICBib29sIGNvbnN1bWVCb3JkZXJJbWFnZShDU1NQcm9w
ZXJ0eUlELCBib29sIGltcG9ydGFudCk7CisKKyAgICBib29sIGNvbnN1bWVGbGV4KGJvb2wgaW1w
b3J0YW50KTsKKworICAgIGJvb2wgY29uc3VtZUxlZ2FjeUJyZWFrUHJvcGVydHkoQ1NTUHJvcGVy
dHlJRCwgYm9vbCBpbXBvcnRhbnQpOworCitwcml2YXRlOgorICAgIC8vIElucHV0czoKKyAgICBD
U1NQYXJzZXJUb2tlblJhbmdlIG1fcmFuZ2U7CisgICAgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYg
bV9jb250ZXh0OworICAgIC8vIE91dHB1dHM6CisgICAgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+
KiBtX3BhcnNlZFByb3BlcnRpZXM7Cit9OworCitDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRDU1NQ
cm9wZXJ0eUlEKFN0cmluZ1ZpZXcpOworQ1NTVmFsdWVJRCBjc3NWYWx1ZUtleXdvcmRJRChTdHJp
bmdWaWV3KTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ1NTUHJvcGVy
dHlQYXJzZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBh
cnNlckhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMTEwIEBACisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQ2hyb21pdW0gQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
Ly8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5
UGFyc2VySGVscGVycy5oIgorCisjaW5jbHVkZSAiQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oIgorLy8g
RklYTUUtTkVXUEFSU0VSOiAjaW5jbHVkZSAiQ1NTQ29sb3JWYWx1ZS5oIgorI2luY2x1ZGUgIkNT
U0Nyb3NzZmFkZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTR3JhZGllbnRWYWx1ZS5oIgorI2luY2x1
ZGUgIkNTU0ltYWdlU2V0VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NJbWFnZVZhbHVlLmgiCisvLyBG
SVhNRS1ORVdQQVJTRVI6ICNpbmNsdWRlICJDU1NQYWludFZhbHVlLmgiCisvLyBGSVhNRV9ORVdQ
QVJTRVI6ICNpbmNsdWRlICJDU1NTdHJpbmdWYWx1ZS5oIgorLy8gRklYTUUtTkVXUEFSU0VSOiAj
aW5jbHVkZSAiQ1NTVVJJVmFsdWUuaCIKKy8vIEZJWE1FX05FV1BBUlNFUjogI2luY2x1ZGUgIkNT
U1ZhbHVlUGFpci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8qIEZJWE1FLU5FV1BBUlNF
UjogRGlzYWJsZSBmb3Igbm93LgorIAorbmFtZXNwYWNlIENTU1Byb3BlcnR5UGFyc2VySGVscGVy
cyB7CisKK2Jvb2wgY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NQYXJzZXJUb2tlbiB2YWx1ZSA9IHJhbmdlLnBlZWso
KTsKKyAgICBpZiAodmFsdWUudHlwZSgpICE9IENvbW1hVG9rZW4pCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIGNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTUGFyc2VyVG9rZW4gdmFsdWUgPSByYW5n
ZS5wZWVrKCk7CisgICAgaWYgKHZhbHVlLnR5cGUoKSAhPSBEZWxpbWl0ZXJUb2tlbiB8fCB2YWx1
ZS5kZWxpbWl0ZXIoKSAhPSAnLycpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByYW5nZS5j
b25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgIHJldHVybiB0cnVlOworfQorCitDU1NQ
YXJzZXJUb2tlblJhbmdlIGNvbnN1bWVGdW5jdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSkKK3sKKyAgICBBU1NFUlQocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBGdW5jdGlvblRva2VuKTsK
KyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGNvbnRlbnRzID0gcmFuZ2UuY29uc3VtZUJsb2NrKCk7
CisgICAgcmFuZ2UuY29uc3VtZVdoaXRlc3BhY2UoKTsKKyAgICBjb250ZW50cy5jb25zdW1lV2hp
dGVzcGFjZSgpOworICAgIHJldHVybiBjb250ZW50czsKK30KKworLy8gRklYTUU6IGNvbnNpZGVy
IHB1bGxpbmcgaW4gdGhlIHBhcnNpbmcgbG9naWMgZnJvbSBDU1NDYWxjdWxhdGlvblZhbHVlLmNw
cC4KK2NsYXNzIENhbGNQYXJzZXIgeworCitwdWJsaWM6CisgICAgZXhwbGljaXQgQ2FsY1BhcnNl
cihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgVmFsdWVSYW5nZSB2YWx1ZVJhbmdlID0gVmFs
dWVSYW5nZUFsbCkKKyAgICAgICAgOiBtX3NvdXJjZVJhbmdlKHJhbmdlKQorICAgICAgICAsIG1f
cmFuZ2UocmFuZ2UpCisgICAgeworICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4g
PSByYW5nZS5wZWVrKCk7CisgICAgICAgIGlmICh0b2tlbi5mdW5jdGlvbklkKCkgPT0gQ1NTVmFs
dWVDYWxjIHx8IHRva2VuLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZVdlYmtpdENhbGMpCisgICAg
ICAgICAgICBtX2NhbGNWYWx1ZSA9IENTU0NhbGNWYWx1ZTo6Y3JlYXRlKGNvbnN1bWVGdW5jdGlv
bihtX3JhbmdlKSwgdmFsdWVSYW5nZSk7CisgICAgfQorCisgICAgY29uc3QgQ1NTQ2FsY1ZhbHVl
KiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsY1ZhbHVlLmdldCgpOyB9CisgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIGNvbnN1bWVWYWx1ZSgpCisgICAgeworICAgICAgICBpZiAoIW1fY2FsY1Zh
bHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIG1fc291cmNlUmFuZ2Ug
PSBtX3JhbmdlOworICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtX2Nh
bGNWYWx1ZS5yZWxlYXNlKCkpOworICAgIH0KKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3Vt
ZU51bWJlcigpCisgICAgeworICAgICAgICBpZiAoIW1fY2FsY1ZhbHVlKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIG1fc291cmNlUmFuZ2UgPSBtX3JhbmdlOworICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGUgdW5pdFR5cGUgPSBtX2NhbGNWYWx1ZS0+aXNJ
bnQoKSA/IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6SW50ZWdlciA6IENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyOworICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZShtX2NhbGNWYWx1ZS0+ZG91YmxlVmFsdWUoKSwgdW5pdFR5cGUpOworICAgIH0K
KworICAgIGJvb2wgY29uc3VtZU51bWJlclJhdyhkb3VibGUmIHJlc3VsdCkKKyAgICB7CisgICAg
ICAgIGlmICghbV9jYWxjVmFsdWUgfHwgbV9jYWxjVmFsdWUtPmNhdGVnb3J5KCkgIT0gQ2FsY051
bWJlcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbV9zb3VyY2VSYW5nZSA9
IG1fcmFuZ2U7CisgICAgICAgIHJlc3VsdCA9IG1fY2FsY1ZhbHVlLT5kb3VibGVWYWx1ZSgpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgbV9zb3VyY2VSYW5nZTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIG1fcmFuZ2U7
CisgICAgTWVtYmVyPENTU0NhbGNWYWx1ZT4gbV9jYWxjVmFsdWU7Cit9OworCitDU1NQcmltaXRp
dmVWYWx1ZSogY29uc3VtZUludGVnZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGRvdWJs
ZSBtaW5pbXVtVmFsdWUpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFu
Z2UucGVlaygpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4pIHsKKyAgICAg
ICAgaWYgKHRva2VuLm51bWVyaWNWYWx1ZVR5cGUoKSA9PSBOdW1iZXJWYWx1ZVR5cGUgfHwgdG9r
ZW4ubnVtZXJpY1ZhbHVlKCkgPCBtaW5pbXVtVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFuZ2UuY29u
c3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1lcmljVmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlOjpJbnRlZ2VyKTsKKyAgICB9CisgICAgQ2FsY1BhcnNlciBjYWxjUGFyc2Vy
KHJhbmdlKTsKKyAgICBpZiAoY29uc3QgQ1NTQ2FsY1ZhbHVlKiBjYWxjdWxhdGlvbiA9IGNhbGNQ
YXJzZXIudmFsdWUoKSkgeworICAgICAgICBpZiAoY2FsY3VsYXRpb24tPmNhdGVnb3J5KCkgIT0g
Q2FsY051bWJlciB8fCAhY2FsY3VsYXRpb24tPmlzSW50KCkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgZG91YmxlIHZhbHVlID0gY2FsY3VsYXRpb24tPmRvdWJsZVZhbHVl
KCk7CisgICAgICAgIGlmICh2YWx1ZSA8IG1pbmltdW1WYWx1ZSkKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICByZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lTnVtYmVyKCk7Cisg
ICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3Vt
ZVBvc2l0aXZlSW50ZWdlcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1
cm4gY29uc3VtZUludGVnZXIocmFuZ2UsIDEpOworfQorCitib29sIGNvbnN1bWVOdW1iZXJSYXco
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGRvdWJsZSYgcmVzdWx0KQoreworICAgIGlmIChy
YW5nZS5wZWVrKCkudHlwZSgpID09IE51bWJlclRva2VuKSB7CisgICAgICAgIHJlc3VsdCA9IHJh
bmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICBDYWxjUGFyc2VyIGNhbGNQYXJzZXIocmFuZ2UsIFZh
bHVlUmFuZ2VBbGwpOworICAgIHJldHVybiBjYWxjUGFyc2VyLmNvbnN1bWVOdW1iZXJSYXcocmVz
dWx0KTsKK30KKworLy8gRklYTUU6IFdvcmsgb3V0IGlmIHRoaXMgY2FuIGp1c3QgY2FsbCBjb25z
dW1lTnVtYmVyUmF3CitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZU51bWJlcihDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgVmFsdWVSYW5nZSB2YWx1ZVJhbmdlKQoreworICAgIGNvbnN0IENT
U1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICBpZiAodG9rZW4udHlwZSgp
ID09IE51bWJlclRva2VuKSB7CisgICAgICAgIGlmICh2YWx1ZVJhbmdlID09IFZhbHVlUmFuZ2VO
b25OZWdhdGl2ZSAmJiB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDApCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFu
Z2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1lcmljVmFsdWUoKSwgdG9rZW4udW5p
dFR5cGUoKSk7CisgICAgfQorICAgIENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgVmFsdWVS
YW5nZUFsbCk7CisgICAgaWYgKGNvbnN0IENTU0NhbGNWYWx1ZSogY2FsY3VsYXRpb24gPSBjYWxj
UGFyc2VyLnZhbHVlKCkpIHsKKyAgICAgICAgLy8gRklYTUU6IENhbGNzIHNob3VsZCBub3QgYmUg
c3ViamVjdCB0byBwYXJzZSB0aW1lIHJhbmdlIGNoZWNrcy4KKyAgICAgICAgLy8gc3BlYzogaHR0
cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy12YWx1ZXMtMy8jY2FsYy1yYW5nZQorICAgICAgICBp
ZiAoY2FsY3VsYXRpb24tPmNhdGVnb3J5KCkgIT0gQ2FsY051bWJlciB8fCAodmFsdWVSYW5nZSA9
PSBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUgJiYgY2FsY3VsYXRpb24tPmlzTmVnYXRpdmUoKSkpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGNhbGNQYXJzZXIuY29u
c3VtZU51bWJlcigpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworaW5saW5lIGJv
b2wgc2hvdWxkQWNjZXB0VW5pdGxlc3NMZW5ndGgoZG91YmxlIHZhbHVlLCBDU1NQYXJzZXJNb2Rl
IGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCit7CisgICAgLy8gRklYTUU6
IFByZXNlbnRhdGlvbmFsIEhUTUwgYXR0cmlidXRlcyBzaG91bGRuJ3QgdXNlIHRoZSBDU1MgcGFy
c2VyIGZvciBsZW5ndGhzCisgICAgcmV0dXJuIHZhbHVlID09IDAKKyAgICAgICAgfHwgaXNVbml0
TGVzc0xlbmd0aFBhcnNpbmdFbmFibGVkRm9yTW9kZShjc3NQYXJzZXJNb2RlKQorICAgICAgICB8
fCAoY3NzUGFyc2VyTW9kZSA9PSBIVE1MUXVpcmtzTW9kZSAmJiB1bml0bGVzcyA9PSBVbml0bGVz
c1F1aXJrOjpBbGxvdyk7Cit9CisKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lTGVuZ3RoKENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFZh
bHVlUmFuZ2UgdmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKK3sKKyAgICBjb25z
dCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CisgICAgaWYgKHRva2VuLnR5
cGUoKSA9PSBEaW1lbnNpb25Ub2tlbikgeworICAgICAgICBzd2l0Y2ggKHRva2VuLnVuaXRUeXBl
KCkpIHsKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlF1aXJreUVt
czoKKyAgICAgICAgICAgIGlmIChjc3NQYXJzZXJNb2RlICE9IFVBU2hlZXRNb2RlKQorICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAg
ICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpFbXM6CisgICAgICAgIGNhc2Ug
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpSZW1zOgorICAgICAgICBjYXNlIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZTo6Q2hzOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZTo6RXhzOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZTo6UGl4ZWxzOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6Q2Vu
dGltZXRlcnM6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpNaWxs
aW1ldGVyczoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkluY2hl
czoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBvaW50czoKKyAg
ICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBpY2FzOgorICAgICAgICBj
YXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6VXNlclVuaXRzOgorICAgICAgICBjYXNl
IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6Vmlld3BvcnRXaWR0aDoKKyAgICAgICAgY2Fz
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlZpZXdwb3J0SGVpZ2h0OgorICAgICAgICBj
YXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6Vmlld3BvcnRNaW46CisgICAgICAgIGNh
c2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpWaWV3cG9ydE1heDoKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlUmFuZ2UgPT0gVmFsdWVSYW5nZU5vbk5lZ2F0aXZl
ICYmIHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1l
SW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgpLCB0b2tlbi51bml0VHlwZSgpKTsK
KyAgICB9CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbikgeworICAgICAgICBp
ZiAoIXNob3VsZEFjY2VwdFVuaXRsZXNzTGVuZ3RoKHRva2VuLm51bWVyaWNWYWx1ZSgpLCBjc3NQ
YXJzZXJNb2RlLCB1bml0bGVzcykKKyAgICAgICAgICAgIHx8ICh2YWx1ZVJhbmdlID09IFZhbHVl
UmFuZ2VOb25OZWdhdGl2ZSAmJiB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDApKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZSB1
bml0VHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGl4ZWxzOworICAgICAgICBp
ZiAoY3NzUGFyc2VyTW9kZSA9PSBTVkdBdHRyaWJ1dGVNb2RlKQorICAgICAgICAgICAgdW5pdFR5
cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlVzZXJVbml0czsKKyAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRl
c3BhY2UoKS5udW1lcmljVmFsdWUoKSwgdW5pdFR5cGUpOworICAgIH0KKyAgICBpZiAoY3NzUGFy
c2VyTW9kZSA9PSBTVkdBdHRyaWJ1dGVNb2RlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBDYWxjUGFyc2VyIGNhbGNQYXJzZXIocmFuZ2UsIHZhbHVlUmFuZ2UpOworICAgIGlmIChjYWxj
UGFyc2VyLnZhbHVlKCkgJiYgY2FsY1BhcnNlci52YWx1ZSgpLT5jYXRlZ29yeSgpID09IENhbGNM
ZW5ndGgpCisgICAgICAgIHJldHVybiBjYWxjUGFyc2VyLmNvbnN1bWVWYWx1ZSgpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZVBlcmNlbnQoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSkKK3sKKyAgICBj
b25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CisgICAgaWYgKHRva2Vu
LnR5cGUoKSA9PSBQZXJjZW50YWdlVG9rZW4pIHsKKyAgICAgICAgaWYgKHZhbHVlUmFuZ2UgPT0g
VmFsdWVSYW5nZU5vbk5lZ2F0aXZlICYmIHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgMCkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBlcmNlbnRhZ2UpOworICAgIH0KKyAgICBD
YWxjUGFyc2VyIGNhbGNQYXJzZXIocmFuZ2UsIHZhbHVlUmFuZ2UpOworICAgIGlmIChjb25zdCBD
U1NDYWxjVmFsdWUqIGNhbGN1bGF0aW9uID0gY2FsY1BhcnNlci52YWx1ZSgpKSB7CisgICAgICAg
IGlmIChjYWxjdWxhdGlvbi0+Y2F0ZWdvcnkoKSA9PSBDYWxjUGVyY2VudCkKKyAgICAgICAgICAg
IHJldHVybiBjYWxjUGFyc2VyLmNvbnN1bWVWYWx1ZSgpOworICAgIH0KKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworYm9vbCBjYW5Db25zdW1lQ2FsY1ZhbHVlKENhbGN1bGF0aW9uQ2F0ZWdvcnkg
Y2F0ZWdvcnksIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAoY2F0ZWdv
cnkgPT0gQ2FsY0xlbmd0aCB8fCBjYXRlZ29yeSA9PSBDYWxjUGVyY2VudCB8fCBjYXRlZ29yeSA9
PSBDYWxjUGVyY2VudExlbmd0aCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoY3Nz
UGFyc2VyTW9kZSAhPSBTVkdBdHRyaWJ1dGVNb2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoY2F0ZWdvcnkgPT0gQ2FsY051bWJlciB8fCBjYXRlZ29yeSA9PSBDYWxjUGVyY2Vu
dE51bWJlciB8fCBjYXRlZ29yeSA9PSBDYWxjTGVuZ3RoTnVtYmVyIHx8IGNhdGVnb3J5ID09IENh
bGNQZXJjZW50TGVuZ3RoTnVtYmVyKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVy
biBmYWxzZTsKK30KKworQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwg
VmFsdWVSYW5nZSB2YWx1ZVJhbmdlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzKQoreworICAgIGNv
bnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICBpZiAodG9rZW4u
dHlwZSgpID09IERpbWVuc2lvblRva2VuIHx8IHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbikK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHZhbHVl
UmFuZ2UsIHVuaXRsZXNzKTsKKyAgICBpZiAodG9rZW4udHlwZSgpID09IFBlcmNlbnRhZ2VUb2tl
bikKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVQZXJjZW50KHJhbmdlLCB2YWx1ZVJhbmdlKTsKKyAg
ICBDYWxjUGFyc2VyIGNhbGNQYXJzZXIocmFuZ2UsIHZhbHVlUmFuZ2UpOworICAgIGlmIChjb25z
dCBDU1NDYWxjVmFsdWUqIGNhbGN1bGF0aW9uID0gY2FsY1BhcnNlci52YWx1ZSgpKSB7CisgICAg
ICAgIGlmIChjYW5Db25zdW1lQ2FsY1ZhbHVlKGNhbGN1bGF0aW9uLT5jYXRlZ29yeSgpLCBjc3NQ
YXJzZXJNb2RlKSkKKyAgICAgICAgICAgIHJldHVybiBjYWxjUGFyc2VyLmNvbnN1bWVWYWx1ZSgp
OworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworQ1NTUHJpbWl0aXZlVmFsdWUqIGNv
bnN1bWVBbmdsZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBjb25zdCBDU1NQ
YXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CisgICAgaWYgKHRva2VuLnR5cGUoKSA9
PSBEaW1lbnNpb25Ub2tlbikgeworICAgICAgICBzd2l0Y2ggKHRva2VuLnVuaXRUeXBlKCkpIHsK
KyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkRlZ3JlZXM6CisgICAg
ICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpSYWRpYW5zOgorICAgICAgICBj
YXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6R3JhZGlhbnM6CisgICAgICAgIGNhc2Ug
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpUdXJuczoKKyAgICAgICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNl
KCkubnVtZXJpY1ZhbHVlKCksIHRva2VuLnVuaXRUeXBlKCkpOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHRv
a2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbiAmJiB0b2tlbi5udW1lcmljVmFsdWUoKSA9PSAwKSB7
CisgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZTo6RGVncmVlcyk7CisgICAgfQorICAgIENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwg
VmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKGNvbnN0IENTU0NhbGNWYWx1ZSogY2FsY3VsYXRpb24g
PSBjYWxjUGFyc2VyLnZhbHVlKCkpIHsKKyAgICAgICAgaWYgKGNhbGN1bGF0aW9uLT5jYXRlZ29y
eSgpID09IENhbGNBbmdsZSkKKyAgICAgICAgICAgIHJldHVybiBjYWxjUGFyc2VyLmNvbnN1bWVW
YWx1ZSgpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworQ1NTUHJpbWl0aXZlVmFs
dWUqIGNvbnN1bWVUaW1lKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBWYWx1ZVJhbmdlIHZh
bHVlUmFuZ2UpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVl
aygpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4pIHsKKyAgICAgICAg
aWYgKHZhbHVlUmFuZ2UgPT0gVmFsdWVSYW5nZU5vbk5lZ2F0aXZlICYmIHRva2VuLm51bWVyaWNW
YWx1ZSgpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGUgdW5pdCA9IHRva2VuLnVuaXRUeXBlKCk7CisgICAgICAgIGlm
ICh1bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TWlsbGlzZWNvbmRzIHx8IHVu
aXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpTZWNvbmRzKQorICAgICAgICAgICAg
cmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1do
aXRlc3BhY2UoKS5udW1lcmljVmFsdWUoKSwgdG9rZW4udW5pdFR5cGUoKSk7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKyAgICBDYWxjUGFyc2VyIGNhbGNQYXJzZXIocmFuZ2UsIHZh
bHVlUmFuZ2UpOworICAgIGlmIChjb25zdCBDU1NDYWxjVmFsdWUqIGNhbGN1bGF0aW9uID0gY2Fs
Y1BhcnNlci52YWx1ZSgpKSB7CisgICAgICAgIGlmIChjYWxjdWxhdGlvbi0+Y2F0ZWdvcnkoKSA9
PSBDYWxjVGltZSkKKyAgICAgICAgICAgIHJldHVybiBjYWxjUGFyc2VyLmNvbnN1bWVWYWx1ZSgp
OworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworQ1NTUHJpbWl0aXZlVmFsdWUqIGNv
bnN1bWVJZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2Uu
cGVlaygpLnR5cGUoKSAhPSBJZGVudFRva2VuKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIocmFuZ2UuY29uc3Vt
ZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpKTsKK30KKworQ1NTUHJpbWl0aXZlVmFsdWUqIGNv
bnN1bWVJZGVudFJhbmdlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NWYWx1ZUlEIGxv
d2VyLCBDU1NWYWx1ZUlEIHVwcGVyKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA8IGxv
d2VyIHx8IHJhbmdlLnBlZWsoKS5pZCgpID4gdXBwZXIpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworfQorCitDU1NDdXN0b21JZGVudFZh
bHVlKiBjb25zdW1lQ3VzdG9tSWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7Cisg
ICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgIT0gSWRlbnRUb2tlbiB8fCBpc0NTU1dpZGVLZXl3
b3JkKHJhbmdlLnBlZWsoKS5pZCgpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIENTU0N1c3RvbUlkZW50VmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hp
dGVzcGFjZSgpLnZhbHVlKCkudG9TdHJpbmcoKSk7Cit9CisKK0NTU1N0cmluZ1ZhbHVlKiBjb25z
dW1lU3RyaW5nKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5w
ZWVrKCkudHlwZSgpICE9IFN0cmluZ1Rva2VuKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gQ1NTU3RyaW5nVmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hp
dGVzcGFjZSgpLnZhbHVlKCkudG9TdHJpbmcoKSk7Cit9CisKK1N0cmluZ1ZpZXcgY29uc3VtZVVy
bEFzU3RyaW5nVmlldyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBjb25zdCBD
U1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CisgICAgaWYgKHRva2VuLnR5cGUo
KSA9PSBVcmxUb2tlbikgeworICAgICAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFj
ZSgpOworICAgICAgICByZXR1cm4gdG9rZW4udmFsdWUoKTsKKyAgICB9CisgICAgaWYgKHRva2Vu
LmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZVVybCkgeworICAgICAgICBDU1NQYXJzZXJUb2tlblJh
bmdlIHVybFJhbmdlID0gcmFuZ2U7CisgICAgICAgIENTU1BhcnNlclRva2VuUmFuZ2UgdXJsQXJn
cyA9IHVybFJhbmdlLmNvbnN1bWVCbG9jaygpOworICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tl
biYgbmV4dCA9IHVybEFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAg
aWYgKG5leHQudHlwZSgpID09IEJhZFN0cmluZ1Rva2VuIHx8ICF1cmxBcmdzLmF0RW5kKCkpCisg
ICAgICAgICAgICByZXR1cm4gU3RyaW5nVmlldygpOworICAgICAgICBBU1NFUlQobmV4dC50eXBl
KCkgPT0gU3RyaW5nVG9rZW4pOworICAgICAgICByYW5nZSA9IHVybFJhbmdlOworICAgICAgICBy
YW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOworICAgICAgICByZXR1cm4gbmV4dC52YWx1ZSgpOwor
ICAgIH0KKworICAgIHJldHVybiBTdHJpbmdWaWV3KCk7Cit9CisKK0NTU1VSSVZhbHVlKiBjb25z
dW1lVXJsKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIFN0cmluZ1ZpZXcgdXJs
ID0gY29uc3VtZVVybEFzU3RyaW5nVmlldyhyYW5nZSk7CisgICAgaWYgKHVybC5pc051bGwoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIENTU1VSSVZhbHVlOjpjcmVhdGUo
dXJsLnRvU3RyaW5nKCkpOworfQorCitzdGF0aWMgaW50IGNsYW1wUkdCQ29tcG9uZW50KGNvbnN0
IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkKK3sKKyAgICBkb3VibGUgcmVzdWx0ID0gdmFsdWUu
Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAvLyBGSVhNRTogTXVsdGlwbHkgYnkgMi41NSBhbmQgcm91
bmQgaW5zdGVhZCBvZiBmbG9vci4KKyAgICBpZiAodmFsdWUuaXNQZXJjZW50YWdlKCkpCisgICAg
ICAgIHJlc3VsdCAqPSAyLjU2OworICAgIHJldHVybiBjbGFtcFRvPGludD4ocmVzdWx0LCAwLCAy
NTUpOworfQorCitzdGF0aWMgYm9vbCBwYXJzZVJHQlBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIFJHQkEzMiYgcmVzdWx0LCBib29sIHBhcnNlQWxwaGEpCit7CisgICAgQVNT
RVJUKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVSZ2IgfHwgcmFuZ2UucGVl
aygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZVJnYmEpOworICAgIENTU1BhcnNlclRva2VuUmFu
Z2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IGNvbG9yUGFyYW1ldGVyID0gY29uc3VtZUludGVnZXIoYXJncyk7CisgICAgaWYgKCFjb2xvclBh
cmFtZXRlcikKKyAgICAgICAgY29sb3JQYXJhbWV0ZXIgPSBjb25zdW1lUGVyY2VudChhcmdzLCBW
YWx1ZVJhbmdlQWxsKTsKKyAgICBpZiAoIWNvbG9yUGFyYW1ldGVyKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgY29uc3QgYm9vbCBpc1BlcmNlbnQgPSBjb2xvclBhcmFtZXRlci0+aXNQZXJj
ZW50YWdlKCk7CisgICAgaW50IGNvbG9yQXJyYXlbM107CisgICAgY29sb3JBcnJheVswXSA9IGNs
YW1wUkdCQ29tcG9uZW50KCpjb2xvclBhcmFtZXRlcik7CisgICAgZm9yIChpbnQgaSA9IDE7IGkg
PCAzOyBpKyspIHsKKyAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNl
KGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjb2xvclBhcmFtZXRl
ciA9IGlzUGVyY2VudCA/IGNvbnN1bWVQZXJjZW50KGFyZ3MsIFZhbHVlUmFuZ2VBbGwpIDogY29u
c3VtZUludGVnZXIoYXJncyk7CisgICAgICAgIGlmICghY29sb3JQYXJhbWV0ZXIpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNvbG9yQXJyYXlbaV0gPSBjbGFtcFJHQkNvbXBv
bmVudCgqY29sb3JQYXJhbWV0ZXIpOworICAgIH0KKyAgICBpZiAocGFyc2VBbHBoYSkgeworICAg
ICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRvdWJsZSBhbHBoYTsKKyAgICAgICAgaWYgKCFj
b25zdW1lTnVtYmVyUmF3KGFyZ3MsIGFscGhhKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgLy8gQ29udmVydCB0aGUgZmxvYXRpbmcgcG9pbnRlciBudW1iZXIgb2YgYWxwaGEg
dG8gYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgWzAsIDI1NiksCisgICAgICAgIC8vIHdpdGggYW4g
ZXF1YWwgZGlzdHJpYnV0aW9uIGFjcm9zcyBhbGwgMjU2IHZhbHVlcy4KKyAgICAgICAgaW50IGFs
cGhhQ29tcG9uZW50ID0gc3RhdGljX2Nhc3Q8aW50PihjbGFtcFRvPGRvdWJsZT4oYWxwaGEsIDAu
MCwgMS4wKSAqIG5leHRhZnRlcigyNTYuMCwgMC4wKSk7CisgICAgICAgIHJlc3VsdCA9IG1ha2VS
R0JBKGNvbG9yQXJyYXlbMF0sIGNvbG9yQXJyYXlbMV0sIGNvbG9yQXJyYXlbMl0sIGFscGhhQ29t
cG9uZW50KTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXN1bHQgPSBtYWtlUkdCKGNvbG9yQXJy
YXlbMF0sIGNvbG9yQXJyYXlbMV0sIGNvbG9yQXJyYXlbMl0pOworICAgIH0KKyAgICByZXR1cm4g
YXJncy5hdEVuZCgpOworfQorCitzdGF0aWMgYm9vbCBwYXJzZUhTTFBhcmFtZXRlcnMoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIFJHQkEzMiYgcmVzdWx0LCBib29sIHBhcnNlQWxwaGEpCit7
CisgICAgQVNTRVJUKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVIc2wgfHwg
cmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUhzbGEpOworICAgIENTU1BhcnNl
clRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7CisgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIGhzbFZhbHVlID0gY29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdlQWxsKTsK
KyAgICBpZiAoIWhzbFZhbHVlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZG91YmxlIGNv
bG9yQXJyYXlbM107CisgICAgY29sb3JBcnJheVswXSA9ICgoKGhzbFZhbHVlLT5nZXRJbnRWYWx1
ZSgpICUgMzYwKSArIDM2MCkgJSAzNjApIC8gMzYwLjA7CisgICAgZm9yIChpbnQgaSA9IDE7IGkg
PCAzOyBpKyspIHsKKyAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNl
KGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBoc2xWYWx1ZSA9IGNv
bnN1bWVQZXJjZW50KGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBpZiAoIWhzbFZhbHVl
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBkb3VibGUgZG91YmxlVmFsdWUg
PSBoc2xWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgY29sb3JBcnJheVtpXSA9IGNs
YW1wVG88ZG91YmxlPihkb3VibGVWYWx1ZSwgMC4wLCAxMDAuMCkgLyAxMDAuMDsgLy8gTmVlZHMg
dG8gYmUgdmFsdWUgYmV0d2VlbiAwIGFuZCAxLjAuCisgICAgfQorICAgIGRvdWJsZSBhbHBoYSA9
IDEuMDsKKyAgICBpZiAocGFyc2VBbHBoYSkgeworICAgICAgICBpZiAoIWNvbnN1bWVDb21tYUlu
Y2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGlmICghY29uc3VtZU51bWJlclJhdyhhcmdzLCBhbHBoYSkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGFscGhhID0gY2xhbXBUbzxkb3VibGU+KGFscGhhLCAwLjAsIDEu
MCk7CisgICAgfQorICAgIHJlc3VsdCA9IG1ha2VSR0JBRnJvbUhTTEEoY29sb3JBcnJheVswXSwg
Y29sb3JBcnJheVsxXSwgY29sb3JBcnJheVsyXSwgYWxwaGEpOworICAgIHJldHVybiBhcmdzLmF0
RW5kKCk7Cit9CisKK3N0YXRpYyBib29sIHBhcnNlSGV4Q29sb3IoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UsIFJHQkEzMiYgcmVzdWx0LCBib29sIGFjY2VwdFF1aXJreUNvbG9ycykKK3sKKyAg
ICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CisgICAgaWYgKHRv
a2VuLnR5cGUoKSA9PSBIYXNoVG9rZW4pIHsKKyAgICAgICAgaWYgKCFDb2xvcjo6cGFyc2VIZXhD
b2xvcih0b2tlbi52YWx1ZSgpLCByZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0gZWxzZSBpZiAoYWNjZXB0UXVpcmt5Q29sb3JzKSB7CisgICAgICAgIFN0cmluZyBjb2xv
cjsKKyAgICAgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbiB8fCB0b2tlbi50eXBl
KCkgPT0gRGltZW5zaW9uVG9rZW4pIHsKKyAgICAgICAgICAgIGlmICh0b2tlbi5udW1lcmljVmFs
dWVUeXBlKCkgIT0gSW50ZWdlclZhbHVlVHlwZQorICAgICAgICAgICAgICAgIHx8IHRva2VuLm51
bWVyaWNWYWx1ZSgpIDwgMC4gfHwgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPj0gMTAwMDAwMC4pCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKHRva2VuLnR5cGUo
KSA9PSBOdW1iZXJUb2tlbikgLy8gZS5nLiAxMTIyMzMKKyAgICAgICAgICAgICAgICBjb2xvciA9
IFN0cmluZzo6Zm9ybWF0KCIlZCIsIHN0YXRpY19jYXN0PGludD4odG9rZW4ubnVtZXJpY1ZhbHVl
KCkpKTsKKyAgICAgICAgICAgIGVsc2UgLy8gZS5nLiAwMDAxRkYKKyAgICAgICAgICAgICAgICBj
b2xvciA9IFN0cmluZzo6bnVtYmVyKHN0YXRpY19jYXN0PGludD4odG9rZW4ubnVtZXJpY1ZhbHVl
KCkpKSArIHRva2VuLnZhbHVlKCkudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIHdoaWxlIChjb2xv
ci5sZW5ndGgoKSA8IDYpCisgICAgICAgICAgICAgICAgY29sb3IgPSAiMCIgKyBjb2xvcjsKKyAg
ICAgICAgfSBlbHNlIGlmICh0b2tlbi50eXBlKCkgPT0gSWRlbnRUb2tlbikgeyAvLyBlLmcuIEZG
MDAwMAorICAgICAgICAgICAgY29sb3IgPSB0b2tlbi52YWx1ZSgpLnRvU3RyaW5nKCk7CisgICAg
ICAgIH0KKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gY29sb3IubGVuZ3RoKCk7CisgICAgICAg
IGlmIChsZW5ndGggIT0gMyAmJiBsZW5ndGggIT0gNikKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgaWYgKCFDb2xvcjo6cGFyc2VIZXhDb2xvcihjb2xvciwgcmVzdWx0KSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIHBhcnNlQ29sb3JGdW5jdGlvbihDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgUkdCQTMyJiByZXN1bHQpCit7CisgICAgQ1NTVmFsdWVJRCBm
dW5jdGlvbklkID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKTsKKyAgICBpZiAoZnVuY3Rpb25J
ZCA8IENTU1ZhbHVlUmdiIHx8IGZ1bmN0aW9uSWQgPiBDU1NWYWx1ZUhzbGEpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGNvbG9yUmFuZ2UgPSByYW5nZTsK
KyAgICBpZiAoKGZ1bmN0aW9uSWQgPD0gQ1NTVmFsdWVSZ2JhICYmICFwYXJzZVJHQlBhcmFtZXRl
cnMoY29sb3JSYW5nZSwgcmVzdWx0LCBmdW5jdGlvbklkID09IENTU1ZhbHVlUmdiYSkpCisgICAg
ICAgIHx8IChmdW5jdGlvbklkID49IENTU1ZhbHVlSHNsICYmICFwYXJzZUhTTFBhcmFtZXRlcnMo
Y29sb3JSYW5nZSwgcmVzdWx0LCBmdW5jdGlvbklkID09IENTU1ZhbHVlSHNsYSkpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmFuZ2UgPSBjb2xvclJhbmdlOworICAgIHJldHVybiB0cnVl
OworfQorCitDU1NWYWx1ZSogY29uc3VtZUNvbG9yKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIGJvb2wgYWNjZXB0UXVpcmt5Q29sb3JzKQor
eworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICBpZiAoU3R5bGVD
b2xvcjo6aXNDb2xvcktleXdvcmQoaWQpKSB7CisgICAgICAgIGlmICghaXNWYWx1ZUFsbG93ZWRJ
bk1vZGUoaWQsIGNzc1BhcnNlck1vZGUpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIH0KKyAgICBSR0JBMzIgY29s
b3IgPSBDb2xvcjo6dHJhbnNwYXJlbnQ7CisgICAgaWYgKCFwYXJzZUhleENvbG9yKHJhbmdlLCBj
b2xvciwgYWNjZXB0UXVpcmt5Q29sb3JzKSAmJiAhcGFyc2VDb2xvckZ1bmN0aW9uKHJhbmdlLCBj
b2xvcikpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBDU1NDb2xvclZhbHVl
OjpjcmVhdGUoY29sb3IpOworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVQ
b3NpdGlvbkNvbXBvbmVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzKQoreworICAgIGlmIChyYW5n
ZS5wZWVrKCkudHlwZSgpID09IElkZW50VG9rZW4pCisgICAgICAgIHJldHVybiBjb25zdW1lSWRl
bnQ8Q1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVRvcCwgQ1NTVmFsdWVCb3R0b20sIENTU1ZhbHVlUmln
aHQsIENTU1ZhbHVlQ2VudGVyPihyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBl
cmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwsIHVuaXRsZXNzKTsKK30K
Kworc3RhdGljIGJvb2wgaXNIb3Jpem9udGFsUG9zaXRpb25LZXl3b3JkT25seShjb25zdCBDU1NQ
cmltaXRpdmVWYWx1ZSYgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlLmlzVmFsdWVJRCgpICYm
ICh2YWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVMZWZ0IHx8IHZhbHVlLmdldFZhbHVlSUQo
KSA9PSBDU1NWYWx1ZVJpZ2h0KTsKK30KKworc3RhdGljIGJvb2wgaXNWZXJ0aWNhbFBvc2l0aW9u
S2V5d29yZE9ubHkoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQoreworICAgIHJldHVy
biB2YWx1ZS5pc1ZhbHVlSUQoKSAmJiAodmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlVG9w
IHx8IHZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUJvdHRvbSk7Cit9CisKK3N0YXRpYyB2
b2lkIHBvc2l0aW9uRnJvbU9uZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSwgQ1NTVmFs
dWUqJiByZXN1bHRYLCBDU1NWYWx1ZSomIHJlc3VsdFkpCit7CisgICAgYm9vbCB2YWx1ZUFwcGxp
ZXNUb1lBeGlzT25seSA9IGlzVmVydGljYWxQb3NpdGlvbktleXdvcmRPbmx5KCp2YWx1ZSk7Cisg
ICAgcmVzdWx0WCA9IHZhbHVlOworICAgIHJlc3VsdFkgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlSWRlbnRpZmllcihDU1NWYWx1ZUNlbnRlcik7CisgICAgaWYgKHZhbHVlQXBwbGllc1RvWUF4
aXNPbmx5KQorICAgICAgICBzdGQ6OnN3YXAocmVzdWx0WCwgcmVzdWx0WSk7Cit9CisKK3N0YXRp
YyBib29sIHBvc2l0aW9uRnJvbVR3b1ZhbHVlcyhDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUxLCBD
U1NQcmltaXRpdmVWYWx1ZSogdmFsdWUyLAorICAgIENTU1ZhbHVlKiYgcmVzdWx0WCwgQ1NTVmFs
dWUqJiByZXN1bHRZKQoreworICAgIGJvb2wgbXVzdE9yZGVyQXNYWSA9IGlzSG9yaXpvbnRhbFBv
c2l0aW9uS2V5d29yZE9ubHkoKnZhbHVlMSkgfHwgaXNWZXJ0aWNhbFBvc2l0aW9uS2V5d29yZE9u
bHkoKnZhbHVlMikKKyAgICAgICAgfHwgIXZhbHVlMS0+aXNWYWx1ZUlEKCkgfHwgIXZhbHVlMi0+
aXNWYWx1ZUlEKCk7CisgICAgYm9vbCBtdXN0T3JkZXJBc1lYID0gaXNWZXJ0aWNhbFBvc2l0aW9u
S2V5d29yZE9ubHkoKnZhbHVlMSkgfHwgaXNIb3Jpem9udGFsUG9zaXRpb25LZXl3b3JkT25seSgq
dmFsdWUyKTsKKyAgICBpZiAobXVzdE9yZGVyQXNYWSAmJiBtdXN0T3JkZXJBc1lYKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmVzdWx0WCA9IHZhbHVlMTsKKyAgICByZXN1bHRZID0gdmFs
dWUyOworICAgIGlmIChtdXN0T3JkZXJBc1lYKQorICAgICAgICBzdGQ6OnN3YXAocmVzdWx0WCwg
cmVzdWx0WSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIHBvc2l0aW9uRnJv
bVRocmVlT3JGb3VyVmFsdWVzKENTU1ByaW1pdGl2ZVZhbHVlKiogdmFsdWVzLCBDU1NWYWx1ZSom
IHJlc3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSkKK3sKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSog
Y2VudGVyID0gbnVsbHB0cjsKKyAgICBmb3IgKGludCBpID0gMDsgdmFsdWVzW2ldOyBpKyspIHsK
KyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGN1cnJlbnRWYWx1ZSA9IHZhbHVlc1tpXTsKKyAg
ICAgICAgaWYgKCFjdXJyZW50VmFsdWUtPmlzVmFsdWVJRCgpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBDU1NWYWx1ZUlEIGlkID0gY3VycmVudFZhbHVlLT5nZXRWYWx1ZUlE
KCk7CisKKyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQ2VudGVyKSB7CisgICAgICAgICAgICBp
ZiAoY2VudGVyKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGNl
bnRlciA9IGN1cnJlbnRWYWx1ZTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisK
KyAgICAgICAgQ1NTVmFsdWUqIHJlc3VsdCA9IG51bGxwdHI7CisgICAgICAgIGlmICh2YWx1ZXNb
aSArIDFdICYmICF2YWx1ZXNbaSArIDFdLT5pc1ZhbHVlSUQoKSkgeworICAgICAgICAgICAgcmVz
dWx0ID0gQ1NTVmFsdWVQYWlyOjpjcmVhdGUoY3VycmVudFZhbHVlLCB2YWx1ZXNbKytpXSwgQ1NT
VmFsdWVQYWlyOjpLZWVwSWRlbnRpY2FsVmFsdWVzKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IGN1cnJlbnRWYWx1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZUxlZnQgfHwgaWQgPT0gQ1NTVmFsdWVSaWdodCkgeworICAgICAgICAgICAg
aWYgKHJlc3VsdFgpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
cmVzdWx0WCA9IHJlc3VsdDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChp
ZCA9PSBDU1NWYWx1ZVRvcCB8fCBpZCA9PSBDU1NWYWx1ZUJvdHRvbSk7CisgICAgICAgICAgICBp
ZiAocmVzdWx0WSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBy
ZXN1bHRZID0gcmVzdWx0OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGNlbnRlcikgewor
ICAgICAgICBBU1NFUlQocmVzdWx0WCB8fCByZXN1bHRZKTsKKyAgICAgICAgaWYgKHJlc3VsdFgg
JiYgcmVzdWx0WSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFyZXN1
bHRYKQorICAgICAgICAgICAgcmVzdWx0WCA9IGNlbnRlcjsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcmVzdWx0WSA9IGNlbnRlcjsKKyAgICB9CisKKyAgICBBU1NFUlQocmVzdWx0WCAmJiBy
ZXN1bHRZKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gRklYTUU6IFRoaXMgbWF5IGNvbnN1
bWUgZnJvbSB0aGUgcmFuZ2UgdXBvbiBmYWlsdXJlLiBUaGUgYmFja2dyb3VuZAorLy8gc2hvcnRo
YW5kIHdvcmtzIGFyb3VuZCBpdCwgYnV0IHdlIHNob3VsZCBqdXN0IGZpeCBpdCBoZXJlLgorYm9v
bCBjb25zdW1lUG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1v
ZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcywgQ1NTVmFsdWUqJiByZXN1
bHRYLCBDU1NWYWx1ZSomIHJlc3VsdFkpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVl
MSA9IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxl
c3MpOworICAgIGlmICghdmFsdWUxKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogdmFsdWUyID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KHJhbmdlLCBj
c3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7CisgICAgaWYgKCF2YWx1ZTIpIHsKKyAgICAgICAgcG9z
aXRpb25Gcm9tT25lVmFsdWUodmFsdWUxLCByZXN1bHRYLCByZXN1bHRZKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlMyA9IGNvbnN1
bWVQb3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpOworICAg
IGlmICghdmFsdWUzKQorICAgICAgICByZXR1cm4gcG9zaXRpb25Gcm9tVHdvVmFsdWVzKHZhbHVl
MSwgdmFsdWUyLCByZXN1bHRYLCByZXN1bHRZKTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2
YWx1ZTQgPSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVu
aXRsZXNzKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWVzWzVdOworICAgIHZhbHVlc1sw
XSA9IHZhbHVlMTsKKyAgICB2YWx1ZXNbMV0gPSB2YWx1ZTI7CisgICAgdmFsdWVzWzJdID0gdmFs
dWUzOworICAgIHZhbHVlc1szXSA9IHZhbHVlNDsKKyAgICB2YWx1ZXNbNF0gPSBudWxscHRyOwor
ICAgIHJldHVybiBwb3NpdGlvbkZyb21UaHJlZU9yRm91clZhbHVlcyh2YWx1ZXMsIHJlc3VsdFgs
IHJlc3VsdFkpOworfQorCitDU1NWYWx1ZVBhaXIqIGNvbnN1bWVQb3NpdGlvbihDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1
aXJrIHVuaXRsZXNzKQoreworICAgIENTU1ZhbHVlKiByZXN1bHRYID0gbnVsbHB0cjsKKyAgICBD
U1NWYWx1ZSogcmVzdWx0WSA9IG51bGxwdHI7CisgICAgaWYgKGNvbnN1bWVQb3NpdGlvbihyYW5n
ZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MsIHJlc3VsdFgsIHJlc3VsdFkpKQorICAgICAgICBy
ZXR1cm4gQ1NTVmFsdWVQYWlyOjpjcmVhdGUocmVzdWx0WCwgcmVzdWx0WSwgQ1NTVmFsdWVQYWly
OjpLZWVwSWRlbnRpY2FsVmFsdWVzKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYm9vbCBj
b25zdW1lT25lT3JUd29WYWx1ZWRQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Q1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzLCBDU1NW
YWx1ZSomIHJlc3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSkKK3sKKyAgICBDU1NQcmltaXRpdmVW
YWx1ZSogdmFsdWUxID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQYXJzZXJN
b2RlLCB1bml0bGVzcyk7CisgICAgaWYgKCF2YWx1ZTEpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUyID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50
KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7CisgICAgaWYgKCF2YWx1ZTIpIHsKKyAg
ICAgICAgcG9zaXRpb25Gcm9tT25lVmFsdWUodmFsdWUxLCByZXN1bHRYLCByZXN1bHRZKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBwb3NpdGlvbkZyb21Ud29WYWx1
ZXModmFsdWUxLCB2YWx1ZTIsIHJlc3VsdFgsIHJlc3VsdFkpOworfQorCisvLyBUaGlzIHNob3Vs
ZCBnbyBhd2F5IG9uY2Ugd2UgZHJvcCBzdXBwb3J0IGZvciAtd2Via2l0LWdyYWRpZW50CitzdGF0
aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnRQb2ludChDU1NQ
YXJzZXJUb2tlblJhbmdlJiBhcmdzLCBib29sIGhvcml6b250YWwpCit7CisgICAgaWYgKGFyZ3Mu
cGVlaygpLnR5cGUoKSA9PSBJZGVudFRva2VuKSB7CisgICAgICAgIGlmICgoaG9yaXpvbnRhbCAm
JiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVMZWZ0PihhcmdzKSkgfHwgKCFob3Jpem9udGFsICYmIGNv
bnN1bWVJZGVudDxDU1NWYWx1ZVRvcD4oYXJncykpKQorICAgICAgICAgICAgcmV0dXJuIENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUoMC4sIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGVy
Y2VudGFnZSk7CisgICAgICAgIGlmICgoaG9yaXpvbnRhbCAmJiBjb25zdW1lSWRlbnQ8Q1NTVmFs
dWVSaWdodD4oYXJncykpIHx8ICghaG9yaXpvbnRhbCAmJiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVC
b3R0b20+KGFyZ3MpKSkKKyAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKDEwMC4sIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGVyY2VudGFnZSk7CisgICAg
ICAgIGlmIChjb25zdW1lSWRlbnQ8Q1NTVmFsdWVDZW50ZXI+KGFyZ3MpKQorICAgICAgICAgICAg
cmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoNTAuLCBDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGU6OlBlcmNlbnRhZ2UpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cisg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHJlc3VsdCA9IGNvbnN1bWVQZXJjZW50KGFyZ3MsIFZhbHVl
UmFuZ2VBbGwpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXN1bHQgPSBjb25zdW1lTnVt
YmVyKGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIFVz
ZWQgdG8gcGFyc2UgY29sb3JzIGZvciAtd2Via2l0LWdyYWRpZW50KC4uLikuCitzdGF0aWMgQ1NT
VmFsdWUqIGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnRTdG9wQ29sb3IoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlmIChhcmdz
LnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQ3VycmVudGNvbG9yKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICByZXR1cm4gY29uc3VtZUNvbG9yKGFyZ3MsIGNzc1BhcnNlck1vZGUpOworfQor
CitzdGF0aWMgYm9vbCBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50Q29sb3JTdG9wKENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlLCBDU1NHcmFkaWVudENvbG9yU3RvcCYgc3RvcCwgQ1NTUGFyc2Vy
TW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCku
ZnVuY3Rpb25JZCgpOworICAgIGlmIChpZCAhPSBDU1NWYWx1ZUZyb20gJiYgaWQgIT0gQ1NTVmFs
dWVUbyAmJiBpZCAhPSBDU1NWYWx1ZUNvbG9yU3RvcCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlKTsK
KyAgICBkb3VibGUgcG9zaXRpb247CisgICAgaWYgKGlkID09IENTU1ZhbHVlRnJvbSB8fCBpZCA9
PSBDU1NWYWx1ZVRvKSB7CisgICAgICAgIHBvc2l0aW9uID0gKGlkID09IENTU1ZhbHVlRnJvbSkg
PyAwIDogMTsKKyAgICB9IGVsc2UgeworICAgICAgICBEQ0hFQ0soaWQgPT0gQ1NTVmFsdWVDb2xv
clN0b3ApOworICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgYXJnID0gYXJncy5jb25zdW1l
SW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICBpZiAoYXJnLnR5cGUoKSA9PSBQZXJjZW50
YWdlVG9rZW4pCisgICAgICAgICAgICBwb3NpdGlvbiA9IGFyZy5udW1lcmljVmFsdWUoKSAvIDEw
MC4wOworICAgICAgICBlbHNlIGlmIChhcmcudHlwZSgpID09IE51bWJlclRva2VuKQorICAgICAg
ICAgICAgcG9zaXRpb24gPSBhcmcubnVtZXJpY1ZhbHVlKCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGlu
Z1doaXRlc3BhY2UoYXJncykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgc3RvcC5tX3Bvc2l0aW9uID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShwb3NpdGlvbiwg
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpOdW1iZXIpOworICAgIHN0b3AubV9jb2xvciA9
IGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnRTdG9wQ29sb3IoYXJncywgY3NzUGFyc2VyTW9kZSk7
CisgICAgcmV0dXJuIHN0b3AubV9jb2xvciAmJiBhcmdzLmF0RW5kKCk7Cit9CisKK3N0YXRpYyBD
U1NWYWx1ZSogY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBh
cmdzLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgQ1NTR3JhZGllbnRWYWx1
ZSogcmVzdWx0ID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZUlEIGlkID0gYXJncy5jb25zdW1lSW5j
bHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgYm9vbCBpc0RlcHJlY2F0ZWRSYWRpYWxHcmFk
aWVudCA9IChpZCA9PSBDU1NWYWx1ZVJhZGlhbCk7CisgICAgaWYgKGlzRGVwcmVjYXRlZFJhZGlh
bEdyYWRpZW50KQorICAgICAgICByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVh
dGUoTm9uUmVwZWF0aW5nLCBDU1NEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQpOworICAgIGVsc2Ug
aWYgKGlkID09IENTU1ZhbHVlTGluZWFyKQorICAgICAgICByZXN1bHQgPSBDU1NMaW5lYXJHcmFk
aWVudFZhbHVlOjpjcmVhdGUoTm9uUmVwZWF0aW5nLCBDU1NEZXByZWNhdGVkTGluZWFyR3JhZGll
bnQpOworICAgIGlmICghcmVzdWx0IHx8ICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNl
KGFyZ3MpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBwb2ludCA9IGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnRQb2ludChhcmdzLCB0cnVlKTsKKyAg
ICBpZiAoIXBvaW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXN1bHQtPnNldEZp
cnN0WChwb2ludCk7CisgICAgcG9pbnQgPSBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50UG9pbnQo
YXJncywgZmFsc2UpOworICAgIGlmICghcG9pbnQpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJlc3VsdC0+c2V0Rmlyc3RZKHBvaW50KTsKKworICAgIGlmICghY29uc3VtZUNvbW1hSW5j
bHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAv
LyBGb3IgcmFkaWFsIGdyYWRpZW50cyBvbmx5LCB3ZSBub3cgZXhwZWN0IGEgbnVtZXJpYyByYWRp
dXMuCisgICAgaWYgKGlzRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KSB7CisgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiByYWRpdXMgPSBjb25zdW1lTnVtYmVyKGFyZ3MsIFZhbHVlUmFuZ2VBbGwp
OworICAgICAgICBpZiAoIXJhZGl1cyB8fCAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFj
ZShhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB0b0NTU1JhZGlh
bEdyYWRpZW50VmFsdWUocmVzdWx0KS0+c2V0Rmlyc3RSYWRpdXMocmFkaXVzKTsKKyAgICB9CisK
KyAgICBwb2ludCA9IGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnRQb2ludChhcmdzLCB0cnVlKTsK
KyAgICBpZiAoIXBvaW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXN1bHQtPnNl
dFNlY29uZFgocG9pbnQpOworICAgIHBvaW50ID0gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudFBv
aW50KGFyZ3MsIGZhbHNlKTsKKyAgICBpZiAoIXBvaW50KQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXN1bHQtPnNldFNlY29uZFkocG9pbnQpOworCisgICAgLy8gRm9yIHJhZGlhbCBn
cmFkaWVudHMgb25seSwgd2Ugbm93IGV4cGVjdCB0aGUgc2Vjb25kIHJhZGl1cy4KKyAgICBpZiAo
aXNEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQpIHsKKyAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJ
bmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiByYWRpdXMgPSBjb25zdW1lTnVtYmVyKGFyZ3MsIFZh
bHVlUmFuZ2VBbGwpOworICAgICAgICBpZiAoIXJhZGl1cykKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICB0b0NTU1JhZGlhbEdyYWRpZW50VmFsdWUocmVzdWx0KS0+c2V0U2Vj
b25kUmFkaXVzKHJhZGl1cyk7CisgICAgfQorCisgICAgQ1NTR3JhZGllbnRDb2xvclN0b3Agc3Rv
cDsKKyAgICB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkgewor
ICAgICAgICBpZiAoIWNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnRDb2xvclN0b3AoYXJncywgc3Rv
cCwgY3NzUGFyc2VyTW9kZSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
cmVzdWx0LT5hZGRTdG9wKHN0b3ApOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3N0YXRpYyBib29sIGNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgQ1NTR3JhZGllbnRWYWx1ZSog
Z3JhZGllbnQpCit7CisgICAgYm9vbCBzdXBwb3J0c0NvbG9ySGludHMgPSBncmFkaWVudC0+Z3Jh
ZGllbnRUeXBlKCkgPT0gQ1NTTGluZWFyR3JhZGllbnQgfHwgZ3JhZGllbnQtPmdyYWRpZW50VHlw
ZSgpID09IENTU1JhZGlhbEdyYWRpZW50OworCisgICAgLy8gVGhlIGZpcnN0IGNvbG9yIHN0b3Ag
Y2Fubm90IGJlIGEgY29sb3IgaGludC4KKyAgICBib29sIHByZXZpb3VzU3RvcFdhc0NvbG9ySGlu
dCA9IHRydWU7CisgICAgZG8geworICAgICAgICBDU1NHcmFkaWVudENvbG9yU3RvcCBzdG9wOwor
ICAgICAgICBzdG9wLm1fY29sb3IgPSBjb25zdW1lQ29sb3IocmFuZ2UsIGNzc1BhcnNlck1vZGUp
OworICAgICAgICAvLyBUd28gaGludHMgaW4gYSByb3cgYXJlIG5vdCBhbGxvd2VkLgorICAgICAg
ICBpZiAoIXN0b3AubV9jb2xvciAmJiAoIXN1cHBvcnRzQ29sb3JIaW50cyB8fCBwcmV2aW91c1N0
b3BXYXNDb2xvckhpbnQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBwcmV2
aW91c1N0b3BXYXNDb2xvckhpbnQgPSAhc3RvcC5tX2NvbG9yOworICAgICAgICBzdG9wLm1fcG9z
aXRpb24gPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1
ZVJhbmdlQWxsKTsKKyAgICAgICAgaWYgKCFzdG9wLm1fY29sb3IgJiYgIXN0b3AubV9wb3NpdGlv
bikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZ3JhZGllbnQtPmFkZFN0b3Ao
c3RvcCk7CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5n
ZSkpOworCisgICAgLy8gVGhlIGxhc3QgY29sb3Igc3RvcCBjYW5ub3QgYmUgYSBjb2xvciBoaW50
LgorICAgIGlmIChwcmV2aW91c1N0b3BXYXNDb2xvckhpbnQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIC8vIE11c3QgaGF2ZSAyIG9yIG1vcmUgc3RvcHMgdG8gYmUgdmFsaWQuCisgICAg
cmV0dXJuIGdyYWRpZW50LT5zdG9wQ291bnQoKSA+PSAyOworfQorCitzdGF0aWMgQ1NTVmFsdWUq
IGNvbnN1bWVEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJn
cywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NHcmFkaWVudFJlcGVhdCByZXBlYXRp
bmcpCit7CisgICAgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZSogcmVzdWx0ID0gQ1NTUmFkaWFsR3Jh
ZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgQ1NTUHJlZml4ZWRSYWRpYWxHcmFkaWVudCk7
CisgICAgQ1NTVmFsdWUqIGNlbnRlclggPSBudWxscHRyOworICAgIENTU1ZhbHVlKiBjZW50ZXJZ
ID0gbnVsbHB0cjsKKyAgICBjb25zdW1lT25lT3JUd29WYWx1ZWRQb3NpdGlvbihhcmdzLCBjc3NQ
YXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQsIGNlbnRlclgsIGNlbnRlclkpOworICAg
IGlmICgoY2VudGVyWCB8fCBjZW50ZXJZKSAmJiAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVz
cGFjZShhcmdzKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXN1bHQtPnNldEZp
cnN0WCh0b0NTU1ByaW1pdGl2ZVZhbHVlKGNlbnRlclgpKTsKKyAgICByZXN1bHQtPnNldFNlY29u
ZFgodG9DU1NQcmltaXRpdmVWYWx1ZShjZW50ZXJYKSk7CisgICAgcmVzdWx0LT5zZXRGaXJzdFko
dG9DU1NQcmltaXRpdmVWYWx1ZShjZW50ZXJZKSk7CisgICAgcmVzdWx0LT5zZXRTZWNvbmRZKHRv
Q1NTUHJpbWl0aXZlVmFsdWUoY2VudGVyWSkpOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNo
YXBlID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQ2lyY2xlLCBDU1NWYWx1ZUVsbGlwc2U+KGFyZ3Mp
OworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzaXplS2V5d29yZCA9IGNvbnN1bWVJZGVudDxDU1NW
YWx1ZUNsb3Nlc3RTaWRlLCBDU1NWYWx1ZUNsb3Nlc3RDb3JuZXIsIENTU1ZhbHVlRmFydGhlc3RT
aWRlLCBDU1NWYWx1ZUZhcnRoZXN0Q29ybmVyLCBDU1NWYWx1ZUNvbnRhaW4sIENTU1ZhbHVlQ292
ZXI+KGFyZ3MpOworICAgIGlmICghc2hhcGUpCisgICAgICAgIHNoYXBlID0gY29uc3VtZUlkZW50
PENTU1ZhbHVlQ2lyY2xlLCBDU1NWYWx1ZUVsbGlwc2U+KGFyZ3MpOworICAgIHJlc3VsdC0+c2V0
U2hhcGUoc2hhcGUpOworICAgIHJlc3VsdC0+c2V0U2l6aW5nQmVoYXZpb3Ioc2l6ZUtleXdvcmQp
OworCisgICAgLy8gT3IsIHR3byBsZW5ndGhzIG9yIHBlcmNlbnRhZ2VzCisgICAgaWYgKCFzaGFw
ZSAmJiAhc2l6ZUtleXdvcmQpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGhvcml6b250
YWxTaXplID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1
ZVJhbmdlQWxsKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZlcnRpY2FsU2l6ZSA9IG51
bGxwdHI7CisgICAgICAgIGlmIChob3Jpem9udGFsU2l6ZSkgeworICAgICAgICAgICAgdmVydGlj
YWxTaXplID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1
ZVJhbmdlQWxsKTsKKyAgICAgICAgICAgIGlmICghdmVydGljYWxTaXplKQorICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hp
dGVzcGFjZShhcmdzKTsKKyAgICAgICAgICAgIHJlc3VsdC0+c2V0RW5kSG9yaXpvbnRhbFNpemUo
aG9yaXpvbnRhbFNpemUpOworICAgICAgICAgICAgcmVzdWx0LT5zZXRFbmRWZXJ0aWNhbFNpemUo
dmVydGljYWxTaXplKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGNvbnN1bWVD
b21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncyk7CisgICAgfQorICAgIGlmICghY29uc3VtZUdy
YWRpZW50Q29sb3JTdG9wcyhhcmdzLCBjc3NQYXJzZXJNb2RlLCByZXN1bHQpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBDU1NWYWx1
ZSogY29uc3VtZVJhZGlhbEdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1Bh
cnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nKQorewor
ICAgIENTU1JhZGlhbEdyYWRpZW50VmFsdWUqIHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFs
dWU6OmNyZWF0ZShyZXBlYXRpbmcsIENTU1JhZGlhbEdyYWRpZW50KTsKKworICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBzaGFwZSA9IG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNpemVL
ZXl3b3JkID0gbnVsbHB0cjsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogaG9yaXpvbnRhbFNpemUg
PSBudWxscHRyOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2ZXJ0aWNhbFNpemUgPSBudWxscHRy
OworCisgICAgLy8gRmlyc3QgcGFydCBvZiBncmFtbWFyLCB0aGUgc2l6ZS9zaGFwZSBjbGF1c2U6
CisgICAgLy8gWyBjaXJjbGUgfHwgPGxlbmd0aD4gXSB8CisgICAgLy8gWyBlbGxpcHNlIHx8IFsg
PGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gXXsyfSBdIHwKKyAgICAvLyBbIFsgY2lyY2xlIHwgZWxs
aXBzZV0gfHwgPHNpemUta2V5d29yZD4gXQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytp
KSB7CisgICAgICAgIGlmIChhcmdzLnBlZWsoKS50eXBlKCkgPT0gSWRlbnRUb2tlbikgeworICAg
ICAgICAgICAgQ1NTVmFsdWVJRCBpZCA9IGFyZ3MucGVlaygpLmlkKCk7CisgICAgICAgICAgICBp
ZiAoaWQgPT0gQ1NTVmFsdWVDaXJjbGUgfHwgaWQgPT0gQ1NTVmFsdWVFbGxpcHNlKSB7CisgICAg
ICAgICAgICAgICAgaWYgKHNoYXBlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgICAgICAgICBzaGFwZSA9IGNvbnN1bWVJZGVudChhcmdzKTsKKyAgICAgICAg
ICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVDbG9zZXN0U2lkZSB8fCBpZCA9PSBDU1NWYWx1
ZUNsb3Nlc3RDb3JuZXIgfHwgaWQgPT0gQ1NTVmFsdWVGYXJ0aGVzdFNpZGUgfHwgaWQgPT0gQ1NT
VmFsdWVGYXJ0aGVzdENvcm5lcikgeworICAgICAgICAgICAgICAgIGlmIChzaXplS2V5d29yZCkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAgICAgc2l6
ZUtleXdvcmQgPSBjb25zdW1lSWRlbnQoYXJncyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNlbnRlciA9IGNvbnN1bWVMZW5ndGhPclBlcmNl
bnQoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgICAgICBpZiAo
IWNlbnRlcikKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChob3Jpem9u
dGFsU2l6ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGhv
cml6b250YWxTaXplID0gY2VudGVyOworICAgICAgICAgICAgY2VudGVyID0gY29uc3VtZUxlbmd0
aE9yUGVyY2VudChhcmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAg
ICAgIGlmIChjZW50ZXIpIHsKKyAgICAgICAgICAgICAgICB2ZXJ0aWNhbFNpemUgPSBjZW50ZXI7
CisgICAgICAgICAgICAgICAgKytpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgLy8gWW91IGNhbiBzcGVjaWZ5IHNpemUgYXMgYSBrZXl3b3JkIG9yIGEgbGVuZ3RoL3Bl
cmNlbnRhZ2UsIG5vdCBib3RoLgorICAgIGlmIChzaXplS2V5d29yZCAmJiBob3Jpem9udGFsU2l6
ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgLy8gQ2lyY2xlcyBtdXN0IGhhdmUgMCBv
ciAxIGxlbmd0aHMuCisgICAgaWYgKHNoYXBlICYmIHNoYXBlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NT
VmFsdWVDaXJjbGUgJiYgdmVydGljYWxTaXplKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAvLyBFbGxpcHNlcyBtdXN0IGhhdmUgMCBvciAyIGxlbmd0aC9wZXJjZW50YWdlcy4KKyAgICBp
ZiAoc2hhcGUgJiYgc2hhcGUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUVsbGlwc2UgJiYgaG9y
aXpvbnRhbFNpemUgJiYgIXZlcnRpY2FsU2l6ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgLy8gSWYgdGhlcmUncyBvbmx5IG9uZSBzaXplLCBpdCBtdXN0IGJlIGEgbGVuZ3RoLgorICAg
IGlmICghdmVydGljYWxTaXplICYmIGhvcml6b250YWxTaXplICYmIGhvcml6b250YWxTaXplLT5p
c1BlcmNlbnRhZ2UoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKChob3Jpem9u
dGFsU2l6ZSAmJiBob3Jpem9udGFsU2l6ZS0+aXNDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhMZW5n
dGgoKSkKKyAgICAgICAgfHwgKHZlcnRpY2FsU2l6ZSAmJiB2ZXJ0aWNhbFNpemUtPmlzQ2FsY3Vs
YXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoKCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJlc3VsdC0+c2V0U2hhcGUoc2hhcGUpOworICAgIHJlc3VsdC0+c2V0U2l6aW5nQmVoYXZp
b3Ioc2l6ZUtleXdvcmQpOworICAgIHJlc3VsdC0+c2V0RW5kSG9yaXpvbnRhbFNpemUoaG9yaXpv
bnRhbFNpemUpOworICAgIHJlc3VsdC0+c2V0RW5kVmVydGljYWxTaXplKHZlcnRpY2FsU2l6ZSk7
CisKKyAgICBDU1NWYWx1ZSogY2VudGVyWCA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIGNlbnRl
clkgPSBudWxscHRyOworICAgIGlmIChhcmdzLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXQpIHsK
KyAgICAgICAgYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICBjb25z
dW1lUG9zaXRpb24oYXJncywgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBj
ZW50ZXJYLCBjZW50ZXJZKTsKKyAgICAgICAgaWYgKCEoY2VudGVyWCAmJiBjZW50ZXJZKSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXN1bHQtPnNldEZpcnN0WChjZW50
ZXJYKTsKKyAgICAgICAgcmVzdWx0LT5zZXRGaXJzdFkoY2VudGVyWSk7CisgICAgICAgIC8vIFJp
Z2h0IG5vdywgQ1NTIHJhZGlhbCBncmFkaWVudHMgaGF2ZSB0aGUgc2FtZSBzdGFydCBhbmQgZW5k
IGNlbnRlcnMuCisgICAgICAgIHJlc3VsdC0+c2V0U2Vjb25kWChjZW50ZXJYKTsKKyAgICAgICAg
cmVzdWx0LT5zZXRTZWNvbmRZKGNlbnRlclkpOworICAgIH0KKworICAgIGlmICgoc2hhcGUgfHwg
c2l6ZUtleXdvcmQgfHwgaG9yaXpvbnRhbFNpemUgfHwgY2VudGVyWCB8fCBjZW50ZXJZKSAmJiAh
Y29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgaWYgKCFjb25zdW1lR3JhZGllbnRDb2xvclN0b3BzKGFyZ3MsIGNzc1BhcnNl
ck1vZGUsIHJlc3VsdCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUxpbmVhckdyYWRpZW50KENTU1BhcnNl
clRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgQ1NTR3JhZGll
bnRSZXBlYXQgcmVwZWF0aW5nLCBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlKQoreworICAg
IENTU0xpbmVhckdyYWRpZW50VmFsdWUqIHJlc3VsdCA9IENTU0xpbmVhckdyYWRpZW50VmFsdWU6
OmNyZWF0ZShyZXBlYXRpbmcsIGdyYWRpZW50VHlwZSk7CisKKyAgICBib29sIGV4cGVjdENvbW1h
ID0gdHJ1ZTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogYW5nbGUgPSBjb25zdW1lQW5nbGUoYXJn
cyk7CisgICAgaWYgKGFuZ2xlKSB7CisgICAgICAgIHJlc3VsdC0+c2V0QW5nbGUoYW5nbGUpOwor
ICAgIH0gZWxzZSBpZiAoZ3JhZGllbnRUeXBlID09IENTU1ByZWZpeGVkTGluZWFyR3JhZGllbnQg
fHwgY29uc3VtZUlkZW50PENTU1ZhbHVlVG8+KGFyZ3MpKSB7CisgICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBlbmRYID0gY29uc3VtZUlkZW50PENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodD4o
YXJncyk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBlbmRZID0gY29uc3VtZUlkZW50PENT
U1ZhbHVlQm90dG9tLCBDU1NWYWx1ZVRvcD4oYXJncyk7CisgICAgICAgIGlmICghZW5kWCAmJiAh
ZW5kWSkgeworICAgICAgICAgICAgaWYgKGdyYWRpZW50VHlwZSA9PSBDU1NMaW5lYXJHcmFkaWVu
dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGVuZFkgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVRvcCk7CisgICAgICAg
ICAgICBleHBlY3RDb21tYSA9IGZhbHNlOworICAgICAgICB9IGVsc2UgaWYgKCFlbmRYKSB7Cisg
ICAgICAgICAgICBlbmRYID0gY29uc3VtZUlkZW50PENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdo
dD4oYXJncyk7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQtPnNldEZpcnN0WChlbmRYKTsK
KyAgICAgICAgcmVzdWx0LT5zZXRGaXJzdFkoZW5kWSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
ZXhwZWN0Q29tbWEgPSBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoZXhwZWN0Q29tbWEgJiYgIWNv
bnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIGlmICghY29uc3VtZUdyYWRpZW50Q29sb3JTdG9wcyhhcmdzLCBjc3NQYXJzZXJN
b2RlLCByZXN1bHQpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitDU1NWYWx1ZSogY29uc3VtZUltYWdlT3JOb25lKENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQpCit7CisgICAgaWYgKHJhbmdlLnBlZWso
KS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5n
ZSk7CisgICAgcmV0dXJuIGNvbnN1bWVJbWFnZShyYW5nZSwgY29udGV4dCk7Cit9CisKK3N0YXRp
YyBDU1NWYWx1ZSogY29uc3VtZUNyb3NzRmFkZShDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBD
U1NQYXJzZXJDb250ZXh0IGNvbnRleHQpCit7CisgICAgQ1NTVmFsdWUqIGZyb21JbWFnZVZhbHVl
ID0gY29uc3VtZUltYWdlT3JOb25lKGFyZ3MsIGNvbnRleHQpOworICAgIGlmICghZnJvbUltYWdl
VmFsdWUgfHwgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIENTU1ZhbHVlKiB0b0ltYWdlVmFsdWUgPSBjb25zdW1lSW1h
Z2VPck5vbmUoYXJncywgY29udGV4dCk7CisgICAgaWYgKCF0b0ltYWdlVmFsdWUgfHwgIWNvbnN1
bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBlcmNlbnRhZ2UgPSBudWxscHRyOworICAgIGNv
bnN0IENTU1BhcnNlclRva2VuJiBwZXJjZW50YWdlQXJnID0gYXJncy5jb25zdW1lSW5jbHVkaW5n
V2hpdGVzcGFjZSgpOworICAgIGlmIChwZXJjZW50YWdlQXJnLnR5cGUoKSA9PSBQZXJjZW50YWdl
VG9rZW4pCisgICAgICAgIHBlcmNlbnRhZ2UgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGNs
YW1wVG88ZG91YmxlPihwZXJjZW50YWdlQXJnLm51bWVyaWNWYWx1ZSgpIC8gMTAwLCAwLCAxKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpOdW1iZXIpOworICAgIGVsc2UgaWYgKHBlcmNl
bnRhZ2VBcmcudHlwZSgpID09IE51bWJlclRva2VuKQorICAgICAgICBwZXJjZW50YWdlID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShjbGFtcFRvPGRvdWJsZT4ocGVyY2VudGFnZUFyZy5udW1l
cmljVmFsdWUoKSwgMCwgMSksIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyKTsK
KworICAgIGlmICghcGVyY2VudGFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIENTU0Nyb3NzZmFkZVZhbHVlOjpjcmVhdGUoZnJvbUltYWdlVmFsdWUsIHRvSW1hZ2VWYWx1
ZSwgcGVyY2VudGFnZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVBhaW50KENTU1Bh
cnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlckNvbnRleHQgY29udGV4dCkKK3sKKyAgICBE
Q0hFQ0soUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzUGFpbnRBUElFbmFibGVkKCkpOworCisg
ICAgQ1NTQ3VzdG9tSWRlbnRWYWx1ZSogbmFtZSA9IGNvbnN1bWVDdXN0b21JZGVudChhcmdzKTsK
KyAgICBpZiAoIW5hbWUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIENT
U1BhaW50VmFsdWU6OmNyZWF0ZShuYW1lKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1l
R2VuZXJhdGVkSW1hZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlckNvbnRl
eHQgY29udGV4dCkKK3sKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9u
SWQoKTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlQ29weSA9IHJhbmdlOworICAgIENT
U1BhcnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZUNvcHkpOworICAg
IENTU1ZhbHVlKiByZXN1bHQgPSBudWxscHRyOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZVJhZGlh
bEdyYWRpZW50KSB7CisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVSYWRpYWxHcmFkaWVudChhcmdz
LCBjb250ZXh0Lm1vZGUoKSwgTm9uUmVwZWF0aW5nKTsKKyAgICB9IGVsc2UgaWYgKGlkID09IENT
U1ZhbHVlUmVwZWF0aW5nUmFkaWFsR3JhZGllbnQpIHsKKyAgICAgICAgcmVzdWx0ID0gY29uc3Vt
ZVJhZGlhbEdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBSZXBlYXRpbmcpOworICAgIH0g
ZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRMaW5lYXJHcmFkaWVudCkgeworICAgICAgICAv
LyBGSVhNRTogVGhpcyBzaG91bGQgc2VuZCBhIGRlcHJlY2F0aW9uIG1lc3NhZ2UuCisgICAgICAg
IGlmIChjb250ZXh0LnVzZUNvdW50ZXIoKSkKKyAgICAgICAgICAgIGNvbnRleHQudXNlQ291bnRl
cigpLT5jb3VudChVc2VDb3VudGVyOjpEZXByZWNhdGVkV2ViS2l0TGluZWFyR3JhZGllbnQpOwor
ICAgICAgICByZXN1bHQgPSBjb25zdW1lTGluZWFyR3JhZGllbnQoYXJncywgY29udGV4dC5tb2Rl
KCksIE5vblJlcGVhdGluZywgQ1NTUHJlZml4ZWRMaW5lYXJHcmFkaWVudCk7CisgICAgfSBlbHNl
IGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdFJlcGVhdGluZ0xpbmVhckdyYWRpZW50KSB7CisgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBzZW5kIGEgZGVwcmVjYXRpb24gbWVzc2FnZS4KKyAg
ICAgICAgaWYgKGNvbnRleHQudXNlQ291bnRlcigpKQorICAgICAgICAgICAgY29udGV4dC51c2VD
b3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkRlcHJlY2F0ZWRXZWJLaXRSZXBlYXRpbmdMaW5l
YXJHcmFkaWVudCk7CisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVMaW5lYXJHcmFkaWVudChhcmdz
LCBjb250ZXh0Lm1vZGUoKSwgUmVwZWF0aW5nLCBDU1NQcmVmaXhlZExpbmVhckdyYWRpZW50KTsK
KyAgICB9IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlUmVwZWF0aW5nTGluZWFyR3JhZGllbnQpIHsK
KyAgICAgICAgcmVzdWx0ID0gY29uc3VtZUxpbmVhckdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9k
ZSgpLCBSZXBlYXRpbmcsIENTU0xpbmVhckdyYWRpZW50KTsKKyAgICB9IGVsc2UgaWYgKGlkID09
IENTU1ZhbHVlTGluZWFyR3JhZGllbnQpIHsKKyAgICAgICAgcmVzdWx0ID0gY29uc3VtZUxpbmVh
ckdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBOb25SZXBlYXRpbmcsIENTU0xpbmVhckdy
YWRpZW50KTsKKyAgICB9IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0R3JhZGllbnQpIHsK
KyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHNlbmQgYSBkZXByZWNhdGlvbiBtZXNzYWdl
LgorICAgICAgICBpZiAoY29udGV4dC51c2VDb3VudGVyKCkpCisgICAgICAgICAgICBjb250ZXh0
LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291bnRlcjo6RGVwcmVjYXRlZFdlYktpdEdyYWRpZW50
KTsKKyAgICAgICAgcmVzdWx0ID0gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudChhcmdzLCBjb250
ZXh0Lm1vZGUoKSk7CisgICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdFJhZGlhbEdy
YWRpZW50KSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBzZW5kIGEgZGVwcmVjYXRp
b24gbWVzc2FnZS4KKyAgICAgICAgaWYgKGNvbnRleHQudXNlQ291bnRlcigpKQorICAgICAgICAg
ICAgY29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkRlcHJlY2F0ZWRXZWJL
aXRSYWRpYWxHcmFkaWVudCk7CisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVEZXByZWNhdGVkUmFk
aWFsR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCksIE5vblJlcGVhdGluZyk7CisgICAgfSBl
bHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdFJlcGVhdGluZ1JhZGlhbEdyYWRpZW50KSB7Cisg
ICAgICAgIGlmIChjb250ZXh0LnVzZUNvdW50ZXIoKSkKKyAgICAgICAgICAgIGNvbnRleHQudXNl
Q291bnRlcigpLT5jb3VudChVc2VDb3VudGVyOjpEZXByZWNhdGVkV2ViS2l0UmVwZWF0aW5nUmFk
aWFsR3JhZGllbnQpOworICAgICAgICByZXN1bHQgPSBjb25zdW1lRGVwcmVjYXRlZFJhZGlhbEdy
YWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBSZXBlYXRpbmcpOworICAgIH0gZWxzZSBpZiAo
aWQgPT0gQ1NTVmFsdWVXZWJraXRDcm9zc0ZhZGUpIHsKKyAgICAgICAgcmVzdWx0ID0gY29uc3Vt
ZUNyb3NzRmFkZShhcmdzLCBjb250ZXh0KTsKKyAgICB9IGVsc2UgaWYgKGlkID09IENTU1ZhbHVl
UGFpbnQpIHsKKyAgICAgICAgcmVzdWx0ID0gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzUGFp
bnRBUElFbmFibGVkKCkgPyBjb25zdW1lUGFpbnQoYXJncywgY29udGV4dCkgOiBudWxscHRyOwor
ICAgIH0KKyAgICBpZiAoIXJlc3VsdCB8fCAhYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByYW5nZSA9IHJhbmdlQ29weTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitzdGF0aWMgQ1NTVmFsdWUqIGNyZWF0ZUNTU0ltYWdlVmFsdWVXaXRoUmVmZXJyZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiByYXdWYWx1ZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkK
K3sKKyAgICBDU1NWYWx1ZSogaW1hZ2VWYWx1ZSA9IENTU0ltYWdlVmFsdWU6OmNyZWF0ZShyYXdW
YWx1ZSwgY29udGV4dC5jb21wbGV0ZVVSTChyYXdWYWx1ZSkpOworICAgIHRvQ1NTSW1hZ2VWYWx1
ZShpbWFnZVZhbHVlKS0+c2V0UmVmZXJyZXIoY29udGV4dC5yZWZlcnJlcigpKTsKKyAgICByZXR1
cm4gaW1hZ2VWYWx1ZTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lSW1hZ2VTZXQoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQp
Cit7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSByYW5nZTsKKyAgICBDU1NQ
YXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2VDb3B5KTsKKyAgICBD
U1NJbWFnZVNldFZhbHVlKiBpbWFnZVNldCA9IENTU0ltYWdlU2V0VmFsdWU6OmNyZWF0ZSgpOwor
ICAgIGRvIHsKKyAgICAgICAgQXRvbWljU3RyaW5nIHVybFZhbHVlID0gY29uc3VtZVVybEFzU3Ry
aW5nVmlldyhhcmdzKS50b0F0b21pY1N0cmluZygpOworICAgICAgICBpZiAodXJsVmFsdWUuaXNO
dWxsKCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBDU1NWYWx1ZSog
aW1hZ2UgPSBjcmVhdGVDU1NJbWFnZVZhbHVlV2l0aFJlZmVycmVyKHVybFZhbHVlLCBjb250ZXh0
KTsKKyAgICAgICAgaW1hZ2VTZXQtPmFwcGVuZCgqaW1hZ2UpOworCisgICAgICAgIGNvbnN0IENT
U1BhcnNlclRva2VuJiB0b2tlbiA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsK
KyAgICAgICAgaWYgKHRva2VuLnR5cGUoKSAhPSBEaW1lbnNpb25Ub2tlbikKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICBpZiAodG9rZW4udmFsdWUoKSAhPSAieCIpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgRENIRUNLKHRva2VuLnVuaXRUeXBlKCkg
PT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpVbmtub3duKTsKKyAgICAgICAgZG91Ymxl
IGltYWdlU2NhbGVGYWN0b3IgPSB0b2tlbi5udW1lcmljVmFsdWUoKTsKKyAgICAgICAgaWYgKGlt
YWdlU2NhbGVGYWN0b3IgPD0gMCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICBpbWFnZVNldC0+YXBwZW5kKCpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGltYWdlU2NhbGVG
YWN0b3IsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyKSk7CisgICAgfSB3aGls
ZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSk7CisgICAgaWYgKCFhcmdz
LmF0RW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJhbmdlID0gcmFuZ2VDb3B5
OworICAgIHJldHVybiBpbWFnZVNldDsKK30KKworc3RhdGljIGJvb2wgaXNHZW5lcmF0ZWRJbWFn
ZShDU1NWYWx1ZUlEIGlkKQoreworICAgIHJldHVybiBpZCA9PSBDU1NWYWx1ZUxpbmVhckdyYWRp
ZW50IHx8IGlkID09IENTU1ZhbHVlUmFkaWFsR3JhZGllbnQKKyAgICAgICAgfHwgaWQgPT0gQ1NT
VmFsdWVSZXBlYXRpbmdMaW5lYXJHcmFkaWVudCB8fCBpZCA9PSBDU1NWYWx1ZVJlcGVhdGluZ1Jh
ZGlhbEdyYWRpZW50CisgICAgICAgIHx8IGlkID09IENTU1ZhbHVlV2Via2l0TGluZWFyR3JhZGll
bnQgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRSYWRpYWxHcmFkaWVudAorICAgICAgICB8fCBpZCA9
PSBDU1NWYWx1ZVdlYmtpdFJlcGVhdGluZ0xpbmVhckdyYWRpZW50IHx8IGlkID09IENTU1ZhbHVl
V2Via2l0UmVwZWF0aW5nUmFkaWFsR3JhZGllbnQKKyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVX
ZWJraXRHcmFkaWVudCB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdENyb3NzRmFkZSB8fCBpZCA9PSBD
U1NWYWx1ZVBhaW50OworfQorCitDU1NWYWx1ZSogY29uc3VtZUltYWdlKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQsIENvbnN1bWVHZW5lcmF0ZWRJ
bWFnZSBnZW5lcmF0ZWRJbWFnZSkKK3sKKyAgICBBdG9taWNTdHJpbmcgdXJpID0gY29uc3VtZVVy
bEFzU3RyaW5nVmlldyhyYW5nZSkudG9BdG9taWNTdHJpbmcoKTsKKyAgICBpZiAoIXVyaS5pc051
bGwoKSkKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUNTU0ltYWdlVmFsdWVXaXRoUmVmZXJyZXIodXJp
LCBjb250ZXh0KTsKKyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBGdW5jdGlvblRva2Vu
KSB7CisgICAgICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpOwor
ICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRJbWFnZVNldCkKKyAgICAgICAgICAgIHJl
dHVybiBjb25zdW1lSW1hZ2VTZXQocmFuZ2UsIGNvbnRleHQpOworICAgICAgICBpZiAoZ2VuZXJh
dGVkSW1hZ2UgPT0gQ29uc3VtZUdlbmVyYXRlZEltYWdlOjpBbGxvdyAmJiBpc0dlbmVyYXRlZElt
YWdlKGlkKSkKKyAgICAgICAgICAgIHJldHVybiBjb25zdW1lR2VuZXJhdGVkSW1hZ2UocmFuZ2Us
IGNvbnRleHQpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzCisqLworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVy
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQ
YXJzZXJIZWxwZXJzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEy
MSBAQAorLy8gQ29weXJpZ2h0IDIwMTYgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6Cisv
LworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKwor
I2lmbmRlZiBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnNfaAorI2RlZmluZSBDU1NQcm9wZXJ0eVBh
cnNlckhlbHBlcnNfaAorCisvLyBGSVhNRS1ORVdQQVJTRVIgI2luY2x1ZGUgIkNTU0N1c3RvbUlk
ZW50VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCisjaW5jbHVkZSAiQ1NTUGFy
c2VyVG9rZW5SYW5nZS5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCisjaW5jbHVk
ZSAiTGVuZ3RoLmgiIC8vIEZvciBWYWx1ZVJhbmdlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgQ1NTU3RyaW5nVmFsdWU7CitjbGFzcyBDU1NVUklWYWx1ZTsKK2NsYXNzIENTU1ZhbHVl
UGFpcjsKKworLy8gV2hlbiB0aGVzZSBmdW5jdGlvbnMgYXJlIHN1Y2Nlc3NmdWwsIHRoZXkgd2ls
bCBjb25zdW1lIGFsbCB0aGUgcmVsZXZhbnQKKy8vIHRva2VucyBmcm9tIHRoZSByYW5nZSBhbmQg
YWxzbyBjb25zdW1lIGFueSB3aGl0ZXNwYWNlIHdoaWNoIGZvbGxvd3MuIFdoZW4KKy8vIHRoZSBz
dGFydCBvZiB0aGUgcmFuZ2UgZG9lc24ndCBtYXRjaCB0aGUgdHlwZSB3ZSdyZSBsb29raW5nIGZv
ciwgdGhlIHJhbmdlCisvLyB3aWxsIG5vdCBiZSBtb2RpZmllZC4KK25hbWVzcGFjZSBDU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnMgeworCisvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIHByb2JhYmx5IGp1
c3QgYmUgY29uc3VtZUNvbW1hIGFuZCBjb25zdW1lU2xhc2guCitib29sIGNvbnN1bWVDb21tYUlu
Y2x1ZGluZ1doaXRlc3BhY2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworYm9vbCBjb25zdW1lU2xh
c2hJbmNsdWRpbmdXaGl0ZXNwYWNlKENTU1BhcnNlclRva2VuUmFuZ2UmKTsKKy8vIGNvbnN1bWVG
dW5jdGlvbiBleHBlY3RzIHRoZSByYW5nZSBzdGFydHMgd2l0aCBhIEZ1bmN0aW9uVG9rZW4uCitD
U1NQYXJzZXJUb2tlblJhbmdlIGNvbnN1bWVGdW5jdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJik7
CisKK2VudW0gY2xhc3MgVW5pdGxlc3NRdWlyayB7CisgICAgQWxsb3csCisgICAgRm9yYmlkCit9
OworCitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUludGVnZXIoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYsIGRvdWJsZSBtaW5pbXVtVmFsdWUgPSAtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpt
YXgoKSk7CitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZVBvc2l0aXZlSW50ZWdlcihDU1NQYXJz
ZXJUb2tlblJhbmdlJik7Citib29sIGNvbnN1bWVOdW1iZXJSYXcoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYsIGRvdWJsZSYgcmVzdWx0KTsKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lTnVtYmVyKENT
U1BhcnNlclRva2VuUmFuZ2UmLCBWYWx1ZVJhbmdlKTsKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25z
dW1lTGVuZ3RoKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdl
LCBVbml0bGVzc1F1aXJrID0gVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKK0NTU1ByaW1pdGl2ZVZh
bHVlKiBjb25zdW1lUGVyY2VudChDU1NQYXJzZXJUb2tlblJhbmdlJiwgVmFsdWVSYW5nZSk7CitD
U1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUxlbmd0aE9yUGVyY2VudChDU1NQYXJzZXJUb2tlblJh
bmdlJiwgQ1NTUGFyc2VyTW9kZSwgVmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayA9IFVuaXRsZXNz
UXVpcms6OkZvcmJpZCk7CitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUFuZ2xlKENTU1BhcnNl
clRva2VuUmFuZ2UmKTsKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lVGltZShDU1NQYXJzZXJU
b2tlblJhbmdlJiwgVmFsdWVSYW5nZSk7CisKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lSWRl
bnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVJZGVu
dFJhbmdlKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NWYWx1ZUlEIGxvd2VyLCBDU1NWYWx1ZUlE
IHVwcGVyKTsKK3RlbXBsYXRlPENTU1ZhbHVlSUQsIENTU1ZhbHVlSUQuLi4+IGlubGluZSBib29s
IGlkZW50TWF0Y2hlcyhDU1NWYWx1ZUlEIGlkKTsKK3RlbXBsYXRlPENTU1ZhbHVlSUQuLi4gYWxs
b3dlZElkZW50cz4gQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVJZGVudChDU1NQYXJzZXJUb2tl
blJhbmdlJik7CisKKy8vIEZJWE1FLU5FV1BBUlNFUiBDU1NDdXN0b21JZGVudFZhbHVlKiBjb25z
dW1lQ3VzdG9tSWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworQ1NTU3RyaW5nVmFsdWUqIGNv
bnN1bWVTdHJpbmcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworU3RyaW5nVmlldyBjb25zdW1lVXJs
QXNTdHJpbmdWaWV3KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKK0NTU1VSSVZhbHVlKiBjb25zdW1l
VXJsKENTU1BhcnNlclRva2VuUmFuZ2UmKTsKKworQ1NTVmFsdWUqIGNvbnN1bWVDb2xvcihDU1NQ
YXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgYm9vbCBhY2NlcHRRdWlya3lDb2xvcnMg
PSBmYWxzZSk7CisKK0NTU1ZhbHVlUGFpciogY29uc3VtZVBvc2l0aW9uKENTU1BhcnNlclRva2Vu
UmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrKTsKK2Jvb2wgY29uc3VtZVBvc2l0
aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrLCBD
U1NWYWx1ZSomIHJlc3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSk7Citib29sIGNvbnN1bWVPbmVP
clR3b1ZhbHVlZFBvc2l0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBV
bml0bGVzc1F1aXJrLCBDU1NWYWx1ZSomIHJlc3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSk7CisK
K2VudW0gY2xhc3MgQ29uc3VtZUdlbmVyYXRlZEltYWdlIHsKKyAgICBBbGxvdywKKyAgICBGb3Ji
aWQKK307CisKK0NTU1ZhbHVlKiBjb25zdW1lSW1hZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENT
U1BhcnNlckNvbnRleHQsIENvbnN1bWVHZW5lcmF0ZWRJbWFnZSA9IENvbnN1bWVHZW5lcmF0ZWRJ
bWFnZTo6QWxsb3cpOworQ1NTVmFsdWUqIGNvbnN1bWVJbWFnZU9yTm9uZShDU1NQYXJzZXJUb2tl
blJhbmdlJiwgQ1NTUGFyc2VyQ29udGV4dCk7CisKKy8vIFRlbXBsYXRlIGltcGxlbWVudGF0aW9u
cyBhcmUgYXQgdGhlIGJvdHRvbSBvZiB0aGUgZmlsZSBmb3IgcmVhZGFiaWxpdHkuCisKK3RlbXBs
YXRlPHR5cGVuYW1lLi4uIGVtcHR5QmFzZUNhc2U+IGlubGluZSBib29sIGlkZW50TWF0Y2hlcyhD
U1NWYWx1ZUlEKSB7IHJldHVybiBmYWxzZTsgfQordGVtcGxhdGU8Q1NTVmFsdWVJRCBoZWFkLCBD
U1NWYWx1ZUlELi4uIHRhaWw+IGlubGluZSBib29sIGlkZW50TWF0Y2hlcyhDU1NWYWx1ZUlEIGlk
KQoreworICAgIHJldHVybiBpZCA9PSBoZWFkIHx8IGlkZW50TWF0Y2hlczx0YWlsLi4uPihpZCk7
Cit9CisKKy8vIEZJWE1FLU5FV1BBUlNFUiAtIGNvbnZlcnRlZCB0byBhIFJlZlB0ciByZXR1cm4g
dHlwZSBmcm9tIGEgcmF3IHB0ci4KK3RlbXBsYXRlPENTU1ZhbHVlSUQuLi4gbmFtZXM+IFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUlkZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgpICE9IElkZW50VG9rZW4gfHwgIWlk
ZW50TWF0Y2hlczxuYW1lcy4uLj4ocmFuZ2UucGVlaygpLmlkKCkpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIo
cmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpKTsKK30KKworc3RhdGljIGlu
bGluZSBib29sIGlzQ1NTV2lkZUtleXdvcmQoY29uc3QgQ1NTVmFsdWVJRCYgaWQpCit7CisgICAg
cmV0dXJuIGlkID09IENTU1ZhbHVlSW5pdGlhbCB8fCBpZCA9PSBDU1NWYWx1ZUluaGVyaXQgfHwg
aWQgPT0gQ1NTVmFsdWVVbnNldCB8fCBpZCA9PSBDU1NWYWx1ZURlZmF1bHQ7Cit9CisKK30gLy8g
bmFtZXNwYWNlIENTU1Byb3BlcnR5UGFyc2VySGVscGVycworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnNfaApJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw4ODggQEAKKy8vIENvcHlyaWdodCAyMDE1IFRoZSBDaHJvbWl1bSBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
Ky8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTVG9rZW5pemVyLmgi
CisKKyNpbmNsdWRlICJDU1NQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJPYnNl
cnZlcldyYXBwZXIuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJhbmdlLmgiCisjaW5jbHVk
ZSAiQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21z
LmgiCisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitDU1NUb2tlbml6ZXI6OlNjb3BlOjpTY29wZShjb25zdCBTdHJpbmcmIHN0
cmluZykKKyAgICA6IG1fc3RyaW5nKHN0cmluZykKK3sKKyAgICAvLyBBY2NvcmRpbmcgdG8gdGhl
IHNwZWMsIHdlIHNob3VsZCBwZXJmb3JtIHByZXByb2Nlc3NpbmcgaGVyZS4KKyAgICAvLyBTZWU6
IGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1zeW50YXgvI2lucHV0LXByZXByb2Nlc3NpbmcK
KyAgICAvLworICAgIC8vIEhvd2V2ZXIsIHdlIGNhbiBza2lwIHRoaXMgc3RlcCBzaW5jZToKKyAg
ICAvLyAqIFdlJ3JlIHVzaW5nIEhUTUwgc3BhY2VzICh3aGljaCBhY2NlcHQgXHIgYW5kIFxmIGFz
IGEgdmFsaWQgd2hpdGUgc3BhY2UpCisgICAgLy8gKiBEbyBub3QgY291bnQgd2hpdGUgc3BhY2Vz
CisgICAgLy8gKiBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbTo6bmV4dElucHV0Q2hhcigpIHJlcGxh
Y2VzIE5VTExzIGZvciByZXBsYWNlbWVudCBjaGFyYWN0ZXJzCisKKyAgICBpZiAoc3RyaW5nLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVG8gYXZvaWQgcmVzaXppbmcgd2Ug
ZXJyIG9uIHRoZSBzaWRlIG9mIHJlc2VydmluZyB0b28gbXVjaCBzcGFjZS4KKyAgICAvLyBNb3N0
IHN0cmluZ3Mgd2UgdG9rZW5pemUgaGF2ZSBhYm91dCAzLjUgdG8gNSBjaGFyYWN0ZXJzIHBlciB0
b2tlbi4KKyAgICBtX3Rva2Vucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHN0cmluZy5sZW5ndGgo
KSAvIDMpOworCisgICAgQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0gaW5wdXQoc3RyaW5nKTsKKyAg
ICBDU1NUb2tlbml6ZXIgdG9rZW5pemVyKGlucHV0LCAqdGhpcyk7CisgICAgd2hpbGUgKHRydWUp
IHsKKyAgICAgICAgQ1NTUGFyc2VyVG9rZW4gdG9rZW4gPSB0b2tlbml6ZXIubmV4dFRva2VuKCk7
CisgICAgICAgIGlmICh0b2tlbi50eXBlKCkgPT0gQ29tbWVudFRva2VuKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIGlmICh0b2tlbi50eXBlKCkgPT0gRU9GVG9rZW4pCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIG1fdG9rZW5zLmFwcGVuZCh0b2tlbik7CisgICAgfQorfQor
CitDU1NUb2tlbml6ZXI6OlNjb3BlOjpTY29wZShjb25zdCBTdHJpbmcmIHN0cmluZywgQ1NTUGFy
c2VyT2JzZXJ2ZXJXcmFwcGVyJiB3cmFwcGVyKQorICAgIDogbV9zdHJpbmcoc3RyaW5nKQorewor
ICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBDU1NUb2tl
bml6ZXJJbnB1dFN0cmVhbSBpbnB1dChzdHJpbmcpOworICAgIENTU1Rva2VuaXplciB0b2tlbml6
ZXIoaW5wdXQsICp0aGlzKTsKKworICAgIHVuc2lnbmVkIG9mZnNldCA9IDA7CisgICAgd2hpbGUg
KHRydWUpIHsKKyAgICAgICAgQ1NTUGFyc2VyVG9rZW4gdG9rZW4gPSB0b2tlbml6ZXIubmV4dFRv
a2VuKCk7CisgICAgICAgIGlmICh0b2tlbi50eXBlKCkgPT0gRU9GVG9rZW4pCisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBDb21tZW50VG9rZW4pCisgICAg
ICAgICAgICB3cmFwcGVyLmFkZENvbW1lbnQob2Zmc2V0LCBpbnB1dC5vZmZzZXQoKSwgbV90b2tl
bnMuc2l6ZSgpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtX3Rva2Vucy5hcHBlbmQo
dG9rZW4pOworICAgICAgICAgICAgd3JhcHBlci5hZGRUb2tlbihvZmZzZXQpOworICAgICAgICB9
CisgICAgICAgIG9mZnNldCA9IGlucHV0Lm9mZnNldCgpOworICAgIH0KKworICAgIHdyYXBwZXIu
YWRkVG9rZW4ob2Zmc2V0KTsKKyAgICB3cmFwcGVyLmZpbmFsaXplQ29uc3RydWN0aW9uKG1fdG9r
ZW5zLmJlZ2luKCkpOworfQorCitDU1NQYXJzZXJUb2tlblJhbmdlIENTU1Rva2VuaXplcjo6U2Nv
cGU6OnRva2VuUmFuZ2UoKQoreworICAgIHJldHVybiBtX3Rva2VuczsKK30KKwordW5zaWduZWQg
Q1NTVG9rZW5pemVyOjpTY29wZTo6dG9rZW5Db3VudCgpCit7CisgICAgcmV0dXJuIG1fdG9rZW5z
LnNpemUoKTsKK30KKworc3RhdGljIGJvb2wgaXNOZXdMaW5lKFVDaGFyIGNjKQoreworICAgIC8v
IFdlIGNoZWNrIFxyIGFuZCBcZiBoZXJlLCBzaW5jZSB3ZSBoYXZlIG5vIHByZXByb2Nlc3Npbmcg
c3RhZ2UKKyAgICByZXR1cm4gKGNjID09ICdccicgfHwgY2MgPT0gJ1xuJyB8fCBjYyA9PSAnXGYn
KTsKK30KKworLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXN5bnRheC8jY2hlY2staWYt
dHdvLWNvZGUtcG9pbnRzLWFyZS1hLXZhbGlkLWVzY2FwZQorc3RhdGljIGJvb2wgdHdvQ2hhcnNB
cmVWYWxpZEVzY2FwZShVQ2hhciBmaXJzdCwgVUNoYXIgc2Vjb25kKQoreworICAgIHJldHVybiBm
aXJzdCA9PSAnXFwnICYmICFpc05ld0xpbmUoc2Vjb25kKTsKK30KKworQ1NTVG9rZW5pemVyOjpD
U1NUb2tlbml6ZXIoQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0mIGlucHV0U3RyZWFtLCBTY29wZSYg
c2NvcGUpCisgICAgOiBtX2lucHV0KGlucHV0U3RyZWFtKQorICAgICwgbV9zY29wZShzY29wZSkK
K3sKK30KKwordm9pZCBDU1NUb2tlbml6ZXI6OnJlY29uc3VtZShVQ2hhciBjKQoreworICAgIG1f
aW5wdXQucHVzaEJhY2soYyk7Cit9CisKK1VDaGFyIENTU1Rva2VuaXplcjo6Y29uc3VtZSgpCit7
CisgICAgVUNoYXIgY3VycmVudCA9IG1faW5wdXQubmV4dElucHV0Q2hhcigpOworICAgIG1faW5w
dXQuYWR2YW5jZSgpOworICAgIHJldHVybiBjdXJyZW50OworfQorCitDU1NQYXJzZXJUb2tlbiBD
U1NUb2tlbml6ZXI6OndoaXRlU3BhY2UoVUNoYXIgLypjYyovKQoreworICAgIG1faW5wdXQuYWR2
YW5jZVVudGlsTm9uV2hpdGVzcGFjZSgpOworICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihXaGl0
ZXNwYWNlVG9rZW4pOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmJsb2NrU3Rh
cnQoQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUpCit7CisgICAgbV9ibG9ja1N0YWNrLmFwcGVuZCh0
eXBlKTsKKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4odHlwZSwgQ1NTUGFyc2VyVG9rZW46OkJs
b2NrU3RhcnQpOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmJsb2NrU3RhcnQo
Q1NTUGFyc2VyVG9rZW5UeXBlIGJsb2NrVHlwZSwgQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIFN0
cmluZ1ZpZXcgbmFtZSkKK3sKKyAgICBtX2Jsb2NrU3RhY2suYXBwZW5kKGJsb2NrVHlwZSk7Cisg
ICAgcmV0dXJuIENTU1BhcnNlclRva2VuKHR5cGUsIG5hbWUsIENTU1BhcnNlclRva2VuOjpCbG9j
a1N0YXJ0KTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpibG9ja0VuZChDU1NQ
YXJzZXJUb2tlblR5cGUgdHlwZSwgQ1NTUGFyc2VyVG9rZW5UeXBlIHN0YXJ0VHlwZSkKK3sKKyAg
ICBpZiAoIW1fYmxvY2tTdGFjay5pc0VtcHR5KCkgJiYgbV9ibG9ja1N0YWNrLmxhc3QoKSA9PSBz
dGFydFR5cGUpIHsKKyAgICAgICAgbV9ibG9ja1N0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAg
cmV0dXJuIENTU1BhcnNlclRva2VuKHR5cGUsIENTU1BhcnNlclRva2VuOjpCbG9ja0VuZCk7Cisg
ICAgfQorICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbih0eXBlKTsKK30KKworQ1NTUGFyc2VyVG9r
ZW4gQ1NTVG9rZW5pemVyOjpsZWZ0UGFyZW50aGVzaXMoVUNoYXIgLypjYyovKQoreworICAgIHJl
dHVybiBibG9ja1N0YXJ0KExlZnRQYXJlbnRoZXNpc1Rva2VuKTsKK30KKworQ1NTUGFyc2VyVG9r
ZW4gQ1NTVG9rZW5pemVyOjpyaWdodFBhcmVudGhlc2lzKFVDaGFyIC8qY2MqLykKK3sKKyAgICBy
ZXR1cm4gYmxvY2tFbmQoUmlnaHRQYXJlbnRoZXNpc1Rva2VuLCBMZWZ0UGFyZW50aGVzaXNUb2tl
bik7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6bGVmdEJyYWNrZXQoVUNoYXIg
LypjYyovKQoreworICAgIHJldHVybiBibG9ja1N0YXJ0KExlZnRCcmFja2V0VG9rZW4pOworfQor
CitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OnJpZ2h0QnJhY2tldChVQ2hhciAvKmNjKi8p
Cit7CisgICAgcmV0dXJuIGJsb2NrRW5kKFJpZ2h0QnJhY2tldFRva2VuLCBMZWZ0QnJhY2tldFRv
a2VuKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpsZWZ0QnJhY2UoVUNoYXIg
LypjYyovKQoreworICAgIHJldHVybiBibG9ja1N0YXJ0KExlZnRCcmFjZVRva2VuKTsKK30KKwor
Q1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpyaWdodEJyYWNlKFVDaGFyIC8qY2MqLykKK3sK
KyAgICByZXR1cm4gYmxvY2tFbmQoUmlnaHRCcmFjZVRva2VuLCBMZWZ0QnJhY2VUb2tlbik7Cit9
CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6cGx1c09yRnVsbFN0b3AoVUNoYXIgY2Mp
Cit7CisgICAgaWYgKG5leHRDaGFyc0FyZU51bWJlcihjYykpIHsKKyAgICAgICAgcmVjb25zdW1l
KGNjKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVOdW1lcmljVG9rZW4oKTsKKyAgICB9CisgICAg
cmV0dXJuIENTU1BhcnNlclRva2VuKERlbGltaXRlclRva2VuLCBjYyk7Cit9CisKK0NTU1BhcnNl
clRva2VuIENTU1Rva2VuaXplcjo6YXN0ZXJpc2soVUNoYXIgY2MpCit7CisgICAgQVNTRVJUX1VO
VVNFRChjYywgY2MgPT0gJyonKTsKKyAgICBpZiAoY29uc3VtZUlmTmV4dCgnPScpKQorICAgICAg
ICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oU3Vic3RyaW5nTWF0Y2hUb2tlbik7CisgICAgcmV0dXJu
IENTU1BhcnNlclRva2VuKERlbGltaXRlclRva2VuLCAnKicpOworfQorCitDU1NQYXJzZXJUb2tl
biBDU1NUb2tlbml6ZXI6Omxlc3NUaGFuKFVDaGFyIGNjKQoreworICAgIEFTU0VSVF9VTlVTRUQo
Y2MsIGNjID09ICc8Jyk7CisgICAgaWYgKG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgw
KSA9PSAnIScKKyAgICAgICAgJiYgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDEpID09
ICctJworICAgICAgICAmJiBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMikgPT0gJy0n
KSB7CisgICAgICAgIG1faW5wdXQuYWR2YW5jZSgzKTsKKyAgICAgICAgcmV0dXJuIENTU1BhcnNl
clRva2VuKENET1Rva2VuKTsKKyAgICB9CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKERlbGlt
aXRlclRva2VuLCAnPCcpOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmNvbW1h
KFVDaGFyIC8qY2MqLykKK3sKKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oQ29tbWFUb2tlbik7
Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6aHlwaGVuTWludXMoVUNoYXIgY2Mp
Cit7CisgICAgaWYgKG5leHRDaGFyc0FyZU51bWJlcihjYykpIHsKKyAgICAgICAgcmVjb25zdW1l
KGNjKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVOdW1lcmljVG9rZW4oKTsKKyAgICB9CisgICAg
aWYgKG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSA9PSAnLScKKyAgICAgICAgJiYg
bV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDEpID09ICc+JykgeworICAgICAgICBtX2lu
cHV0LmFkdmFuY2UoMik7CisgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihDRENUb2tlbik7
CisgICAgfQorICAgIGlmIChuZXh0Q2hhcnNBcmVJZGVudGlmaWVyKGNjKSkgeworICAgICAgICBy
ZWNvbnN1bWUoY2MpOworICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50TGlrZVRva2VuKCk7Cisg
ICAgfQorICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihEZWxpbWl0ZXJUb2tlbiwgY2MpOworfQor
CitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OnNvbGlkdXMoVUNoYXIgY2MpCit7CisgICAg
aWYgKGNvbnN1bWVJZk5leHQoJyonKSkgeworICAgICAgICAvLyBUaGVzZSBnZXQgaWdub3JlZCwg
YnV0IHdlIG5lZWQgYSB2YWx1ZSB0byByZXR1cm4uCisgICAgICAgIGNvbnN1bWVVbnRpbENvbW1l
bnRFbmRGb3VuZCgpOworICAgICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oQ29tbWVudFRva2Vu
KTsKKyAgICB9CisKKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oRGVsaW1pdGVyVG9rZW4sIGNj
KTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjb2xvbihVQ2hhciAvKmNjKi8p
Cit7CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKENvbG9uVG9rZW4pOworfQorCitDU1NQYXJz
ZXJUb2tlbiBDU1NUb2tlbml6ZXI6OnNlbWlDb2xvbihVQ2hhciAvKmNjKi8pCit7CisgICAgcmV0
dXJuIENTU1BhcnNlclRva2VuKFNlbWljb2xvblRva2VuKTsKK30KKworQ1NTUGFyc2VyVG9rZW4g
Q1NTVG9rZW5pemVyOjpoYXNoKFVDaGFyIGNjKQoreworICAgIFVDaGFyIG5leHRDaGFyID0gbV9p
bnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApOworICAgIGlmIChpc05hbWVDb2RlUG9pbnQo
bmV4dENoYXIpIHx8IHR3b0NoYXJzQXJlVmFsaWRFc2NhcGUobmV4dENoYXIsIG1faW5wdXQucGVl
a1dpdGhvdXRSZXBsYWNlbWVudCgxKSkpIHsKKyAgICAgICAgSGFzaFRva2VuVHlwZSB0eXBlID0g
bmV4dENoYXJzQXJlSWRlbnRpZmllcigpID8gSGFzaFRva2VuSWQgOiBIYXNoVG9rZW5VbnJlc3Ry
aWN0ZWQ7CisgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbih0eXBlLCBjb25zdW1lTmFtZSgp
KTsKKyAgICB9CisKKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oRGVsaW1pdGVyVG9rZW4sIGNj
KTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjaXJjdW1mbGV4QWNjZW50KFVD
aGFyIGNjKQoreworICAgIEFTU0VSVF9VTlVTRUQoY2MsIGNjID09ICdeJyk7CisgICAgaWYgKGNv
bnN1bWVJZk5leHQoJz0nKSkKKyAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKFByZWZpeE1h
dGNoVG9rZW4pOworICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihEZWxpbWl0ZXJUb2tlbiwgJ14n
KTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpkb2xsYXJTaWduKFVDaGFyIGNj
KQoreworICAgIEFTU0VSVF9VTlVTRUQoY2MsIGNjID09ICckJyk7CisgICAgaWYgKGNvbnN1bWVJ
Zk5leHQoJz0nKSkKKyAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKFN1ZmZpeE1hdGNoVG9r
ZW4pOworICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihEZWxpbWl0ZXJUb2tlbiwgJyQnKTsKK30K
KworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjp2ZXJ0aWNhbExpbmUoVUNoYXIgY2MpCit7
CisgICAgQVNTRVJUX1VOVVNFRChjYywgY2MgPT0gJ3wnKTsKKyAgICBpZiAoY29uc3VtZUlmTmV4
dCgnPScpKQorICAgICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oRGFzaE1hdGNoVG9rZW4pOwor
ICAgIGlmIChjb25zdW1lSWZOZXh0KCd8JykpCisgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tl
bihDb2x1bW5Ub2tlbik7CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKERlbGltaXRlclRva2Vu
LCAnfCcpOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OnRpbGRlKFVDaGFyIGNj
KQoreworICAgIEFTU0VSVF9VTlVTRUQoY2MsIGNjID09ICd+Jyk7CisgICAgaWYgKGNvbnN1bWVJ
Zk5leHQoJz0nKSkKKyAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKEluY2x1ZGVNYXRjaFRv
a2VuKTsKKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oRGVsaW1pdGVyVG9rZW4sICd+Jyk7Cit9
CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6Y29tbWVyY2lhbEF0KFVDaGFyIGNjKQor
eworICAgIEFTU0VSVF9VTlVTRUQoY2MsIGNjID09ICdAJyk7CisgICAgaWYgKG5leHRDaGFyc0Fy
ZUlkZW50aWZpZXIoKSkKKyAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKEF0S2V5d29yZFRv
a2VuLCBjb25zdW1lTmFtZSgpKTsKKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oRGVsaW1pdGVy
VG9rZW4sICdAJyk7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6cmV2ZXJzZVNv
bGlkdXMoVUNoYXIgY2MpCit7CisgICAgaWYgKHR3b0NoYXJzQXJlVmFsaWRFc2NhcGUoY2MsIG1f
aW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSkpIHsKKyAgICAgICAgcmVjb25zdW1lKGNj
KTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudExpa2VUb2tlbigpOworICAgIH0KKyAgICBy
ZXR1cm4gQ1NTUGFyc2VyVG9rZW4oRGVsaW1pdGVyVG9rZW4sIGNjKTsKK30KKworQ1NTUGFyc2Vy
VG9rZW4gQ1NTVG9rZW5pemVyOjphc2NpaURpZ2l0KFVDaGFyIGNjKQoreworICAgIHJlY29uc3Vt
ZShjYyk7CisgICAgcmV0dXJuIGNvbnN1bWVOdW1lcmljVG9rZW4oKTsKK30KKworQ1NTUGFyc2Vy
VG9rZW4gQ1NTVG9rZW5pemVyOjpsZXR0ZXJVKFVDaGFyIGNjKQoreworICAgIGlmIChtX2lucHV0
LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkgPT0gJysnCisgICAgICAgICYmIChpc0FTQ0lJSGV4
RGlnaXQobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDEpKQorICAgICAgICAgICAgfHwg
bV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDEpID09ICc/JykpIHsKKyAgICAgICAgbV9p
bnB1dC5hZHZhbmNlKCk7CisgICAgICAgIHJldHVybiBjb25zdW1lVW5pY29kZVJhbmdlKCk7Cisg
ICAgfQorICAgIHJlY29uc3VtZShjYyk7CisgICAgcmV0dXJuIGNvbnN1bWVJZGVudExpa2VUb2tl
bigpOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6Om5hbWVTdGFydChVQ2hhciBj
YykKK3sKKyAgICByZWNvbnN1bWUoY2MpOworICAgIHJldHVybiBjb25zdW1lSWRlbnRMaWtlVG9r
ZW4oKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpzdHJpbmdTdGFydChVQ2hh
ciBjYykKK3sKKyAgICByZXR1cm4gY29uc3VtZVN0cmluZ1Rva2VuVW50aWwoY2MpOworfQorCitD
U1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmVuZE9mRmlsZShVQ2hhciAvKmNjKi8pCit7Cisg
ICAgcmV0dXJuIENTU1BhcnNlclRva2VuKEVPRlRva2VuKTsKK30KKworY29uc3QgQ1NTVG9rZW5p
emVyOjpDb2RlUG9pbnQgQ1NTVG9rZW5pemVyOjpjb2RlUG9pbnRzWzEyOF0gPSB7CisgICAgJkNT
U1Rva2VuaXplcjo6ZW5kT2ZGaWxlLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisg
ICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAmQ1NTVG9rZW5pemVyOjp3aGl0ZVNw
YWNlLAorICAgICZDU1NUb2tlbml6ZXI6OndoaXRlU3BhY2UsCisgICAgMCwKKyAgICAmQ1NTVG9r
ZW5pemVyOjp3aGl0ZVNwYWNlLAorICAgICZDU1NUb2tlbml6ZXI6OndoaXRlU3BhY2UsCisgICAg
MCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAw
LAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAs
CisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgJkNTU1Rva2VuaXplcjo6d2hpdGVTcGFjZSwK
KyAgICAwLAorICAgICZDU1NUb2tlbml6ZXI6OnN0cmluZ1N0YXJ0LAorICAgICZDU1NUb2tlbml6
ZXI6Omhhc2gsCisgICAgJkNTU1Rva2VuaXplcjo6ZG9sbGFyU2lnbiwKKyAgICAwLAorICAgIDAs
CisgICAgJkNTU1Rva2VuaXplcjo6c3RyaW5nU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bGVm
dFBhcmVudGhlc2lzLAorICAgICZDU1NUb2tlbml6ZXI6OnJpZ2h0UGFyZW50aGVzaXMsCisgICAg
JkNTU1Rva2VuaXplcjo6YXN0ZXJpc2ssCisgICAgJkNTU1Rva2VuaXplcjo6cGx1c09yRnVsbFN0
b3AsCisgICAgJkNTU1Rva2VuaXplcjo6Y29tbWEsCisgICAgJkNTU1Rva2VuaXplcjo6aHlwaGVu
TWludXMsCisgICAgJkNTU1Rva2VuaXplcjo6cGx1c09yRnVsbFN0b3AsCisgICAgJkNTU1Rva2Vu
aXplcjo6c29saWR1cywKKyAgICAmQ1NTVG9rZW5pemVyOjphc2NpaURpZ2l0LAorICAgICZDU1NU
b2tlbml6ZXI6OmFzY2lpRGlnaXQsCisgICAgJkNTU1Rva2VuaXplcjo6YXNjaWlEaWdpdCwKKyAg
ICAmQ1NTVG9rZW5pemVyOjphc2NpaURpZ2l0LAorICAgICZDU1NUb2tlbml6ZXI6OmFzY2lpRGln
aXQsCisgICAgJkNTU1Rva2VuaXplcjo6YXNjaWlEaWdpdCwKKyAgICAmQ1NTVG9rZW5pemVyOjph
c2NpaURpZ2l0LAorICAgICZDU1NUb2tlbml6ZXI6OmFzY2lpRGlnaXQsCisgICAgJkNTU1Rva2Vu
aXplcjo6YXNjaWlEaWdpdCwKKyAgICAmQ1NTVG9rZW5pemVyOjphc2NpaURpZ2l0LAorICAgICZD
U1NUb2tlbml6ZXI6OmNvbG9uLAorICAgICZDU1NUb2tlbml6ZXI6OnNlbWlDb2xvbiwKKyAgICAm
Q1NTVG9rZW5pemVyOjpsZXNzVGhhbiwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAmQ1NT
VG9rZW5pemVyOjpjb21tZXJjaWFsQXQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAor
ICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3Rh
cnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5h
bWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXpl
cjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9r
ZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZD
U1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisg
ICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFy
dCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFt
ZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVy
OjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tl
bml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpsZXR0ZXJVLAorICAgICZDU1NU
b2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAg
JkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwK
KyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bGVmdEJy
YWNrZXQsCisgICAgJkNTU1Rva2VuaXplcjo6cmV2ZXJzZVNvbGlkdXMsCisgICAgJkNTU1Rva2Vu
aXplcjo6cmlnaHRCcmFja2V0LAorICAgICZDU1NUb2tlbml6ZXI6OmNpcmN1bWZsZXhBY2NlbnQs
CisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgIDAsCisgICAgJkNTU1Rva2VuaXpl
cjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9r
ZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZD
U1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisg
ICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFy
dCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFt
ZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVy
OjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tl
bml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNT
U1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAg
ICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0
LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpsZXR0
ZXJVLAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpu
YW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6
ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rv
a2VuaXplcjo6bGVmdEJyYWNlLAorICAgICZDU1NUb2tlbml6ZXI6OnZlcnRpY2FsTGluZSwKKyAg
ICAmQ1NTVG9rZW5pemVyOjpyaWdodEJyYWNlLAorICAgICZDU1NUb2tlbml6ZXI6OnRpbGRlLAor
ICAgIDAsCit9OworI2lmICFBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTl9ESVNBQkxF
RAorY29uc3QgdW5zaWduZWQgY29kZVBvaW50c051bWJlciA9IDEyODsKKyNlbmRpZgorCitDU1NQ
YXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6Om5leHRUb2tlbigpCit7CisgICAgLy8gVW5saWtlIHRo
ZSBIVE1MVG9rZW5pemVyLCB0aGUgQ1NTIFN5bnRheCBzcGVjIGlzIHdyaXR0ZW4KKyAgICAvLyBh
cyBhIHN0YXRlbGVzcywgKGZpeGVkLXNpemUpIGxvb2stYWhlYWQgdG9rZW5pemVyLgorICAgIC8v
IFdlIGNvdWxkIG1vdmUgdG8gdGhlIHN0YXRlZnVsIG1vZGVsIGFuZCBpbnN0ZWFkIGNyZWF0ZQor
ICAgIC8vIHN0YXRlcyBmb3IgYWxsIHRoZSAibmV4dCAzIGNvZGVwb2ludHMgYXJlIFgiIGNhc2Vz
LgorICAgIC8vIFN0YXRlLW1hY2hpbmUgdG9rZW5pemVycyBhcmUgZWFzaWVyIHRvIHdyaXRlIHRv
IGhhbmRsZQorICAgIC8vIGluY3JlbWVudGFsIHRva2VuaXphdGlvbiBvZiBwYXJ0aWFsIHNvdXJj
ZXMuCisgICAgLy8gSG93ZXZlciwgZm9yIG5vdyB3ZSBmb2xsb3cgdGhlIHNwZWMgZXhhY3RseS4K
KyAgICBVQ2hhciBjYyA9IGNvbnN1bWUoKTsKKyAgICBDb2RlUG9pbnQgY29kZVBvaW50RnVuYyA9
IDA7CisKKyAgICBpZiAoaXNBU0NJSShjYykpIHsKKyAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oY2MgPCBjb2RlUG9pbnRzTnVtYmVyKTsKKyAgICAgICAgY29kZVBvaW50
RnVuYyA9IGNvZGVQb2ludHNbY2NdOworICAgIH0gZWxzZQorICAgICAgICBjb2RlUG9pbnRGdW5j
ID0gJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0OworCisgICAgaWYgKGNvZGVQb2ludEZ1bmMpCisg
ICAgICAgIHJldHVybiAoKHRoaXMpLT4qKGNvZGVQb2ludEZ1bmMpKShjYyk7CisgICAgcmV0dXJu
IENTU1BhcnNlclRva2VuKERlbGltaXRlclRva2VuLCBjYyk7Cit9CisKKy8vIFRoaXMgbWV0aG9k
IG1lcmdlcyB0aGUgZm9sbG93aW5nIHNwZWMgc2VjdGlvbnMgZm9yIGVmZmljaWVuY3kKKy8vIGh0
dHA6Ly93d3cudzMub3JnL1RSL2NzczMtc3ludGF4LyNjb25zdW1lLWEtbnVtYmVyCisvLyBodHRw
Oi8vd3d3LnczLm9yZy9UUi9jc3MzLXN5bnRheC8jY29udmVydC1hLXN0cmluZy10by1hLW51bWJl
cgorQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjb25zdW1lTnVtYmVyKCkKK3sKKyAgICBB
U1NFUlQobmV4dENoYXJzQXJlTnVtYmVyKCkpOworCisgICAgTnVtZXJpY1ZhbHVlVHlwZSB0eXBl
ID0gSW50ZWdlclZhbHVlVHlwZTsKKyAgICBOdW1lcmljU2lnbiBzaWduID0gTm9TaWduOworICAg
IHVuc2lnbmVkIG51bWJlckxlbmd0aCA9IDA7CisKKyAgICBVQ2hhciBuZXh0ID0gbV9pbnB1dC5w
ZWVrV2l0aG91dFJlcGxhY2VtZW50KDApOworICAgIGlmIChuZXh0ID09ICcrJykgeworICAgICAg
ICArK251bWJlckxlbmd0aDsKKyAgICAgICAgc2lnbiA9IFBsdXNTaWduOworICAgIH0gZWxzZSBp
ZiAobmV4dCA9PSAnLScpIHsKKyAgICAgICAgKytudW1iZXJMZW5ndGg7CisgICAgICAgIHNpZ24g
PSBNaW51c1NpZ247CisgICAgfQorCisgICAgbnVtYmVyTGVuZ3RoID0gbV9pbnB1dC5za2lwV2hp
bGVQcmVkaWNhdGU8aXNBU0NJSURpZ2l0PihudW1iZXJMZW5ndGgpOworICAgIG5leHQgPSBtX2lu
cHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQobnVtYmVyTGVuZ3RoKTsKKyAgICBpZiAobmV4dCA9
PSAnLicgJiYgaXNBU0NJSURpZ2l0KG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudChudW1i
ZXJMZW5ndGggKyAxKSkpIHsKKyAgICAgICAgdHlwZSA9IE51bWJlclZhbHVlVHlwZTsKKyAgICAg
ICAgbnVtYmVyTGVuZ3RoID0gbV9pbnB1dC5za2lwV2hpbGVQcmVkaWNhdGU8aXNBU0NJSURpZ2l0
PihudW1iZXJMZW5ndGggKyAyKTsKKyAgICAgICAgbmV4dCA9IG1faW5wdXQucGVla1dpdGhvdXRS
ZXBsYWNlbWVudChudW1iZXJMZW5ndGgpOworICAgIH0KKworICAgIGlmIChuZXh0ID09ICdFJyB8
fCBuZXh0ID09ICdlJykgeworICAgICAgICBuZXh0ID0gbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxh
Y2VtZW50KG51bWJlckxlbmd0aCArIDEpOworICAgICAgICBpZiAoaXNBU0NJSURpZ2l0KG5leHQp
KSB7CisgICAgICAgICAgICB0eXBlID0gTnVtYmVyVmFsdWVUeXBlOworICAgICAgICAgICAgbnVt
YmVyTGVuZ3RoID0gbV9pbnB1dC5za2lwV2hpbGVQcmVkaWNhdGU8aXNBU0NJSURpZ2l0PihudW1i
ZXJMZW5ndGggKyAxKTsKKyAgICAgICAgfSBlbHNlIGlmICgobmV4dCA9PSAnKycgfHwgbmV4dCA9
PSAnLScpICYmIGlzQVNDSUlEaWdpdChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQobnVt
YmVyTGVuZ3RoICsgMikpKSB7CisgICAgICAgICAgICB0eXBlID0gTnVtYmVyVmFsdWVUeXBlOwor
ICAgICAgICAgICAgbnVtYmVyTGVuZ3RoID0gbV9pbnB1dC5za2lwV2hpbGVQcmVkaWNhdGU8aXNB
U0NJSURpZ2l0PihudW1iZXJMZW5ndGggKyAzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGRv
dWJsZSB2YWx1ZSA9IG1faW5wdXQuZ2V0RG91YmxlKDAsIG51bWJlckxlbmd0aCk7CisgICAgbV9p
bnB1dC5hZHZhbmNlKG51bWJlckxlbmd0aCk7CisKKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4o
TnVtYmVyVG9rZW4sIHZhbHVlLCB0eXBlLCBzaWduKTsKK30KKworLy8gaHR0cDovL3d3dy53My5v
cmcvVFIvY3NzMy1zeW50YXgvI2NvbnN1bWUtYS1udW1lcmljLXRva2VuCitDU1NQYXJzZXJUb2tl
biBDU1NUb2tlbml6ZXI6OmNvbnN1bWVOdW1lcmljVG9rZW4oKQoreworICAgIENTU1BhcnNlclRv
a2VuIHRva2VuID0gY29uc3VtZU51bWJlcigpOworICAgIGlmIChuZXh0Q2hhcnNBcmVJZGVudGlm
aWVyKCkpCisgICAgICAgIHRva2VuLmNvbnZlcnRUb0RpbWVuc2lvbldpdGhVbml0KGNvbnN1bWVO
YW1lKCkpOworICAgIGVsc2UgaWYgKGNvbnN1bWVJZk5leHQoJyUnKSkKKyAgICAgICAgdG9rZW4u
Y29udmVydFRvUGVyY2VudGFnZSgpOworICAgIHJldHVybiB0b2tlbjsKK30KKworLy8gaHR0cDov
L2Rldi53My5vcmcvY3Nzd2cvY3NzLXN5bnRheC8jY29uc3VtZS1pZGVudC1saWtlLXRva2VuCitD
U1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmNvbnN1bWVJZGVudExpa2VUb2tlbigpCit7Cisg
ICAgU3RyaW5nVmlldyBuYW1lID0gY29uc3VtZU5hbWUoKTsKKyAgICBpZiAoY29uc3VtZUlmTmV4
dCgnKCcpKSB7CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJ1cmwi
KSkgeworICAgICAgICAgICAgLy8gVGhlIHNwZWMgaXMgc2xpZ2h0bHkgZGlmZmVyZW50IHNvIGFz
IHRvIGF2b2lkIGRyb3BwaW5nIHdoaXRlc3BhY2UKKyAgICAgICAgICAgIC8vIHRva2VucywgYnV0
IHRoZXkgd291bGRuJ3QgYmUgdXNlZCBhbmQgdGhpcyBpcyBlYXNpZXIuCisgICAgICAgICAgICBt
X2lucHV0LmFkdmFuY2VVbnRpbE5vbldoaXRlc3BhY2UoKTsKKyAgICAgICAgICAgIFVDaGFyIG5l
eHQgPSBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCk7CisgICAgICAgICAgICBpZiAo
bmV4dCAhPSAnIicgJiYgbmV4dCAhPSAnXCcnKQorICAgICAgICAgICAgICAgIHJldHVybiBjb25z
dW1lVXJsVG9rZW4oKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYmxvY2tTdGFydChMZWZ0
UGFyZW50aGVzaXNUb2tlbiwgRnVuY3Rpb25Ub2tlbiwgbmFtZSk7CisgICAgfQorICAgIHJldHVy
biBDU1NQYXJzZXJUb2tlbihJZGVudFRva2VuLCBuYW1lKTsKK30KKworLy8gaHR0cDovL2Rldi53
My5vcmcvY3Nzd2cvY3NzLXN5bnRheC8jY29uc3VtZS1hLXN0cmluZy10b2tlbgorQ1NTUGFyc2Vy
VG9rZW4gQ1NTVG9rZW5pemVyOjpjb25zdW1lU3RyaW5nVG9rZW5VbnRpbChVQ2hhciBlbmRpbmdD
b2RlUG9pbnQpCit7CisgICAgLy8gU3RyaW5ncyB3aXRob3V0IGVzY2FwZXMgZ2V0IGhhbmRsZWQg
d2l0aG91dCBhbGxvY2F0aW9ucworICAgIGZvciAodW5zaWduZWQgc2l6ZSA9IDA7IDsgc2l6ZSsr
KSB7CisgICAgICAgIFVDaGFyIGNjID0gbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KHNp
emUpOworICAgICAgICBpZiAoY2MgPT0gZW5kaW5nQ29kZVBvaW50KSB7CisgICAgICAgICAgICB1
bnNpZ25lZCBzdGFydE9mZnNldCA9IG1faW5wdXQub2Zmc2V0KCk7CisgICAgICAgICAgICBtX2lu
cHV0LmFkdmFuY2Uoc2l6ZSArIDEpOworICAgICAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2Vu
KFN0cmluZ1Rva2VuLCBtX2lucHV0LnJhbmdlQXQoc3RhcnRPZmZzZXQsIHNpemUpKTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoaXNOZXdMaW5lKGNjKSkgeworICAgICAgICAgICAgbV9pbnB1dC5h
ZHZhbmNlKHNpemUpOworICAgICAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKEJhZFN0cmlu
Z1Rva2VuKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2MgPT0gJ1wwJyB8fCBjYyA9PSAnXFwn
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgU3RyaW5nQnVpbGRlciBvdXRwdXQ7
CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgVUNoYXIgY2MgPSBjb25zdW1lKCk7CisgICAg
ICAgIGlmIChjYyA9PSBlbmRpbmdDb2RlUG9pbnQgfHwgY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikK
KyAgICAgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihTdHJpbmdUb2tlbiwgcmVnaXN0ZXJT
dHJpbmcob3V0cHV0LnRvU3RyaW5nKCkpKTsKKyAgICAgICAgaWYgKGlzTmV3TGluZShjYykpIHsK
KyAgICAgICAgICAgIHJlY29uc3VtZShjYyk7CisgICAgICAgICAgICByZXR1cm4gQ1NTUGFyc2Vy
VG9rZW4oQmFkU3RyaW5nVG9rZW4pOworICAgICAgICB9CisgICAgICAgIGlmIChjYyA9PSAnXFwn
KSB7CisgICAgICAgICAgICBpZiAobV9pbnB1dC5uZXh0SW5wdXRDaGFyKCkgPT0ga0VuZE9mRmls
ZU1hcmtlcikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChpc05l
d0xpbmUobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApKSkKKyAgICAgICAgICAgICAg
ICBjb25zdW1lU2luZ2xlV2hpdGVzcGFjZUlmTmV4dCgpOyAvLyBUaGlzIGhhbmRsZXMgXHJcbiBm
b3IgdXMKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKGNv
bnN1bWVFc2NhcGUoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgb3V0cHV0LmFwcGVu
ZChjYyk7CisgICAgfQorfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmNvbnN1bWVV
bmljb2RlUmFuZ2UoKQoreworICAgIEFTU0VSVChpc0FTQ0lJSGV4RGlnaXQobV9pbnB1dC5wZWVr
V2l0aG91dFJlcGxhY2VtZW50KDApKSB8fCBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQo
MCkgPT0gJz8nKTsKKyAgICBpbnQgbGVuZ3RoUmVtYWluaW5nID0gNjsKKyAgICBVQ2hhcjMyIHN0
YXJ0ID0gMDsKKworICAgIHdoaWxlIChsZW5ndGhSZW1haW5pbmcgJiYgaXNBU0NJSUhleERpZ2l0
KG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSkpIHsKKyAgICAgICAgc3RhcnQgPSBz
dGFydCAqIDE2ICsgdG9BU0NJSUhleFZhbHVlKGNvbnN1bWUoKSk7CisgICAgICAgIC0tbGVuZ3Ro
UmVtYWluaW5nOworICAgIH0KKworICAgIFVDaGFyMzIgZW5kID0gc3RhcnQ7CisgICAgaWYgKGxl
bmd0aFJlbWFpbmluZyAmJiBjb25zdW1lSWZOZXh0KCc/JykpIHsKKyAgICAgICAgZG8geworICAg
ICAgICAgICAgc3RhcnQgKj0gMTY7CisgICAgICAgICAgICBlbmQgPSBlbmQgKiAxNiArIDB4RjsK
KyAgICAgICAgICAgIC0tbGVuZ3RoUmVtYWluaW5nOworICAgICAgICB9IHdoaWxlIChsZW5ndGhS
ZW1haW5pbmcgJiYgY29uc3VtZUlmTmV4dCgnPycpKTsKKyAgICB9IGVsc2UgaWYgKG1faW5wdXQu
cGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSA9PSAnLScgJiYgaXNBU0NJSUhleERpZ2l0KG1faW5w
dXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgxKSkpIHsKKyAgICAgICAgbV9pbnB1dC5hZHZhbmNl
KCk7CisgICAgICAgIGxlbmd0aFJlbWFpbmluZyA9IDY7CisgICAgICAgIGVuZCA9IDA7CisgICAg
ICAgIGRvIHsKKyAgICAgICAgICAgIGVuZCA9IGVuZCAqIDE2ICsgdG9BU0NJSUhleFZhbHVlKGNv
bnN1bWUoKSk7CisgICAgICAgICAgICAtLWxlbmd0aFJlbWFpbmluZzsKKyAgICAgICAgfSB3aGls
ZSAobGVuZ3RoUmVtYWluaW5nICYmIGlzQVNDSUlIZXhEaWdpdChtX2lucHV0LnBlZWtXaXRob3V0
UmVwbGFjZW1lbnQoMCkpKTsKKyAgICB9CisKKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oVW5p
Y29kZVJhbmdlVG9rZW4sIHN0YXJ0LCBlbmQpOworfQorCisvLyBodHRwOi8vZGV2LnczLm9yZy9j
c3N3Zy9jc3Mtc3ludGF4LyNub24tcHJpbnRhYmxlLWNvZGUtcG9pbnQKK3N0YXRpYyBib29sIGlz
Tm9uUHJpbnRhYmxlQ29kZVBvaW50KFVDaGFyIGNjKQoreworICAgIHJldHVybiAoY2MgPj0gJ1ww
JyAmJiBjYyA8PSAnXHg4JykgfHwgY2MgPT0gJ1x4YicgfHwgKGNjID49ICdceGUnICYmIGNjIDw9
ICdceDFmJykgfHwgY2MgPT0gJ1x4N2YnOworfQorCisvLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3
Zy9jc3Mtc3ludGF4LyNjb25zdW1lLXVybC10b2tlbgorQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5p
emVyOjpjb25zdW1lVXJsVG9rZW4oKQoreworICAgIG1faW5wdXQuYWR2YW5jZVVudGlsTm9uV2hp
dGVzcGFjZSgpOworCisgICAgLy8gVVJMIHRva2VucyB3aXRob3V0IGVzY2FwZXMgZ2V0IGhhbmRs
ZWQgd2l0aG91dCBhbGxvY2F0aW9ucworICAgIGZvciAodW5zaWduZWQgc2l6ZSA9IDA7IDsgc2l6
ZSsrKSB7CisgICAgICAgIFVDaGFyIGNjID0gbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50
KHNpemUpOworICAgICAgICBpZiAoY2MgPT0gJyknKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBz
dGFydE9mZnNldCA9IG1faW5wdXQub2Zmc2V0KCk7CisgICAgICAgICAgICBtX2lucHV0LmFkdmFu
Y2Uoc2l6ZSArIDEpOworICAgICAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKFVybFRva2Vu
LCBtX2lucHV0LnJhbmdlQXQoc3RhcnRPZmZzZXQsIHNpemUpKTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoY2MgPD0gJyAnIHx8IGNjID09ICdcXCcgfHwgY2MgPT0gJyInIHx8IGNjID09ICdcJycg
fHwgY2MgPT0gJygnIHx8IGNjID09ICdceDdmJykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAg
IFVDaGFyIGNjID0gY29uc3VtZSgpOworICAgICAgICBpZiAoY2MgPT0gJyknIHx8IGNjID09IGtF
bmRPZkZpbGVNYXJrZXIpCisgICAgICAgICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oVXJsVG9r
ZW4sIHJlZ2lzdGVyU3RyaW5nKHJlc3VsdC50b1N0cmluZygpKSk7CisKKyAgICAgICAgaWYgKGlz
SFRNTFNwYWNlKGNjKSkgeworICAgICAgICAgICAgbV9pbnB1dC5hZHZhbmNlVW50aWxOb25XaGl0
ZXNwYWNlKCk7CisgICAgICAgICAgICBpZiAoY29uc3VtZUlmTmV4dCgnKScpIHx8IG1faW5wdXQu
bmV4dElucHV0Q2hhcigpID09IGtFbmRPZkZpbGVNYXJrZXIpCisgICAgICAgICAgICAgICAgcmV0
dXJuIENTU1BhcnNlclRva2VuKFVybFRva2VuLCByZWdpc3RlclN0cmluZyhyZXN1bHQudG9TdHJp
bmcoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY2Mg
PT0gJyInIHx8IGNjID09ICdcJycgfHwgY2MgPT0gJygnIHx8IGlzTm9uUHJpbnRhYmxlQ29kZVBv
aW50KGNjKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmIChjYyA9PSAnXFwnKSB7
CisgICAgICAgICAgICBpZiAodHdvQ2hhcnNBcmVWYWxpZEVzY2FwZShjYywgbV9pbnB1dC5wZWVr
V2l0aG91dFJlcGxhY2VtZW50KDApKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
Y29uc3VtZUVzY2FwZSgpKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZChjYyk7CisgICAgfQorCisgICAgY29uc3VtZUJhZFVybFJlbW5hbnRzKCk7CisgICAgcmV0dXJu
IENTU1BhcnNlclRva2VuKEJhZFVybFRva2VuKTsKK30KKworLy8gaHR0cDovL2Rldi53My5vcmcv
Y3Nzd2cvY3NzLXN5bnRheC8jY29uc3VtZS10aGUtcmVtbmFudHMtb2YtYS1iYWQtdXJsCit2b2lk
IENTU1Rva2VuaXplcjo6Y29uc3VtZUJhZFVybFJlbW5hbnRzKCkKK3sKKyAgICB3aGlsZSAodHJ1
ZSkgeworICAgICAgICBVQ2hhciBjYyA9IGNvbnN1bWUoKTsKKyAgICAgICAgaWYgKGNjID09ICcp
JyB8fCBjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBpZiAodHdvQ2hhcnNBcmVWYWxpZEVzY2FwZShjYywgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxh
Y2VtZW50KDApKSkKKyAgICAgICAgICAgIGNvbnN1bWVFc2NhcGUoKTsKKyAgICB9Cit9CisKK3Zv
aWQgQ1NTVG9rZW5pemVyOjpjb25zdW1lU2luZ2xlV2hpdGVzcGFjZUlmTmV4dCgpCit7CisgICAg
Ly8gV2UgY2hlY2sgZm9yIFxyXG4gYW5kIEhUTUwgc3BhY2VzIHNpbmNlIHdlIGRvbid0IGRvIHBy
ZXByb2Nlc3NpbmcKKyAgICBVQ2hhciBuZXh0ID0gbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2Vt
ZW50KDApOworICAgIGlmIChuZXh0ID09ICdccicgJiYgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxh
Y2VtZW50KDEpID09ICdcbicpCisgICAgICAgIG1faW5wdXQuYWR2YW5jZSgyKTsKKyAgICBlbHNl
IGlmIChpc0hUTUxTcGFjZShuZXh0KSkKKyAgICAgICAgbV9pbnB1dC5hZHZhbmNlKCk7Cit9CisK
K3ZvaWQgQ1NTVG9rZW5pemVyOjpjb25zdW1lVW50aWxDb21tZW50RW5kRm91bmQoKQoreworICAg
IFVDaGFyIGMgPSBjb25zdW1lKCk7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKGMg
PT0ga0VuZE9mRmlsZU1hcmtlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGMg
IT0gJyonKSB7CisgICAgICAgICAgICBjID0gY29uc3VtZSgpOworICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIH0KKyAgICAgICAgYyA9IGNvbnN1bWUoKTsKKyAgICAgICAgaWYgKGMgPT0g
Jy8nKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworYm9vbCBDU1NUb2tlbml6ZXI6
OmNvbnN1bWVJZk5leHQoVUNoYXIgY2hhcmFjdGVyKQoreworICAgIC8vIFNpbmNlIHdlJ3JlIG5v
dCBkb2luZyByZXBsYWNlbWVudCB3ZSBjYW4ndCB0ZWxsIHRoZSBkaWZmZXJlbmNlIGZyb20KKyAg
ICAvLyBhIE5VTCBpbiB0aGUgbWlkZGxlIGFuZCB0aGUga0VuZE9mRmlsZU1hcmtlciwgc28gY2hh
cmFjdGVyIG11c3Qgbm90IGJlCisgICAgLy8gTlVMLgorICAgIEFTU0VSVChjaGFyYWN0ZXIpOwor
ICAgIGlmIChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkgPT0gY2hhcmFjdGVyKSB7
CisgICAgICAgIG1faW5wdXQuYWR2YW5jZSgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgcmV0dXJuIGZhbHNlOworfQorCisvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXN5
bnRheC8jY29uc3VtZS1hLW5hbWUKK1N0cmluZ1ZpZXcgQ1NTVG9rZW5pemVyOjpjb25zdW1lTmFt
ZSgpCit7CisgICAgLy8gTmFtZXMgd2l0aG91dCBlc2NhcGVzIGdldCBoYW5kbGVkIHdpdGhvdXQg
YWxsb2NhdGlvbnMKKyAgICBmb3IgKHVuc2lnbmVkIHNpemUgPSAwOyA7ICsrc2l6ZSkgeworICAg
ICAgICBVQ2hhciBjYyA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudChzaXplKTsKKyAg
ICAgICAgaWYgKGlzTmFtZUNvZGVQb2ludChjYykpCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgLy8gcGVla1dpdGhvdXRSZXBsYWNlbWVudCB3aWxsIHJldHVybiBOVUwgd2hlbiB3ZSBo
aXQgdGhlIGVuZCBvZiB0aGUKKyAgICAgICAgLy8gaW5wdXQuIEluIHRoYXQgY2FzZSB3ZSB3YW50
IHRvIHN0aWxsIHVzZSB0aGUgcmFuZ2VBdCgpIGZhc3QgcGF0aAorICAgICAgICAvLyBiZWxvdy4K
KyAgICAgICAgaWYgKGNjID09ICdcMCcgJiYgbV9pbnB1dC5vZmZzZXQoKSArIHNpemUgPCBtX2lu
cHV0Lmxlbmd0aCgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChjYyA9PSAnXFwn
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gbV9p
bnB1dC5vZmZzZXQoKTsKKyAgICAgICAgbV9pbnB1dC5hZHZhbmNlKHNpemUpOworICAgICAgICBy
ZXR1cm4gbV9pbnB1dC5yYW5nZUF0KHN0YXJ0T2Zmc2V0LCBzaXplKTsKKyAgICB9CisKKyAgICBT
dHJpbmdCdWlsZGVyIHJlc3VsdDsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBVQ2hhciBj
YyA9IGNvbnN1bWUoKTsKKyAgICAgICAgaWYgKGlzTmFtZUNvZGVQb2ludChjYykpIHsKKyAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoY2MpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKHR3b0NoYXJzQXJlVmFsaWRFc2NhcGUoY2MsIG1faW5wdXQucGVla1dp
dGhvdXRSZXBsYWNlbWVudCgwKSkpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY29uc3Vt
ZUVzY2FwZSgpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIHJl
Y29uc3VtZShjYyk7CisgICAgICAgIHJldHVybiByZWdpc3RlclN0cmluZyhyZXN1bHQudG9TdHJp
bmcoKSk7CisgICAgfQorfQorCisvLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3Mtc3ludGF4
LyNjb25zdW1lLWFuLWVzY2FwZWQtY29kZS1wb2ludAorVUNoYXIzMiBDU1NUb2tlbml6ZXI6OmNv
bnN1bWVFc2NhcGUoKQoreworICAgIFVDaGFyIGNjID0gY29uc3VtZSgpOworICAgIEFTU0VSVCgh
aXNOZXdMaW5lKGNjKSk7CisgICAgaWYgKGlzQVNDSUlIZXhEaWdpdChjYykpIHsKKyAgICAgICAg
dW5zaWduZWQgY29uc3VtZWRIZXhEaWdpdHMgPSAxOworICAgICAgICBTdHJpbmdCdWlsZGVyIGhl
eENoYXJzOworICAgICAgICBoZXhDaGFycy5hcHBlbmQoY2MpOworICAgICAgICB3aGlsZSAoY29u
c3VtZWRIZXhEaWdpdHMgPCA2ICYmIGlzQVNDSUlIZXhEaWdpdChtX2lucHV0LnBlZWtXaXRob3V0
UmVwbGFjZW1lbnQoMCkpKSB7CisgICAgICAgICAgICBjYyA9IGNvbnN1bWUoKTsKKyAgICAgICAg
ICAgIGhleENoYXJzLmFwcGVuZChjYyk7CisgICAgICAgICAgICBjb25zdW1lZEhleERpZ2l0cysr
OworICAgICAgICB9OworICAgICAgICBjb25zdW1lU2luZ2xlV2hpdGVzcGFjZUlmTmV4dCgpOwor
ICAgICAgICBib29sIG9rID0gZmFsc2U7CisgICAgICAgIFVDaGFyMzIgY29kZVBvaW50ID0gaGV4
Q2hhcnMudG9TdHJpbmcoKS50b1VJbnRTdHJpY3QoJm9rLCAxNik7CisgICAgICAgIEFTU0VSVChv
ayk7CisgICAgICAgIGlmICghY29kZVBvaW50IHx8ICgweEQ4MDAgPD0gY29kZVBvaW50ICYmIGNv
ZGVQb2ludCA8PSAweERGRkYpIHx8IGNvZGVQb2ludCA+IDB4MTBGRkZGKQorICAgICAgICAgICAg
cmV0dXJuIHJlcGxhY2VtZW50Q2hhcmFjdGVyOworICAgICAgICByZXR1cm4gY29kZVBvaW50Owor
ICAgIH0KKworICAgIGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKQorICAgICAgICByZXR1cm4g
cmVwbGFjZW1lbnRDaGFyYWN0ZXI7CisgICAgcmV0dXJuIGNjOworfQorCitib29sIENTU1Rva2Vu
aXplcjo6bmV4dFR3b0NoYXJzQXJlVmFsaWRFc2NhcGUoKQoreworICAgIHJldHVybiB0d29DaGFy
c0FyZVZhbGlkRXNjYXBlKG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSwgbV9pbnB1
dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDEpKTsKK30KKworLy8gaHR0cDovL3d3dy53My5vcmcv
VFIvY3NzMy1zeW50YXgvI3N0YXJ0cy13aXRoLWEtbnVtYmVyCitib29sIENTU1Rva2VuaXplcjo6
bmV4dENoYXJzQXJlTnVtYmVyKFVDaGFyIGZpcnN0KQoreworICAgIFVDaGFyIHNlY29uZCA9IG1f
aW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKTsKKyAgICBpZiAoaXNBU0NJSURpZ2l0KGZp
cnN0KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGZpcnN0ID09ICcrJyB8fCBmaXJz
dCA9PSAnLScpCisgICAgICAgIHJldHVybiAoKGlzQVNDSUlEaWdpdChzZWNvbmQpKSB8fCAoc2Vj
b25kID09ICcuJyAmJiBpc0FTQ0lJRGlnaXQobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50
KDEpKSkpOworICAgIGlmIChmaXJzdCA9PScuJykKKyAgICAgICAgcmV0dXJuIChpc0FTQ0lJRGln
aXQoc2Vjb25kKSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIENTU1Rva2VuaXplcjo6
bmV4dENoYXJzQXJlTnVtYmVyKCkKK3sKKyAgICBVQ2hhciBmaXJzdCA9IGNvbnN1bWUoKTsKKyAg
ICBib29sIGFyZU51bWJlciA9IG5leHRDaGFyc0FyZU51bWJlcihmaXJzdCk7CisgICAgcmVjb25z
dW1lKGZpcnN0KTsKKyAgICByZXR1cm4gYXJlTnVtYmVyOworfQorCisvLyBodHRwOi8vZGV2Lncz
Lm9yZy9jc3N3Zy9jc3Mtc3ludGF4LyN3b3VsZC1zdGFydC1hbi1pZGVudGlmaWVyCitib29sIENT
U1Rva2VuaXplcjo6bmV4dENoYXJzQXJlSWRlbnRpZmllcihVQ2hhciBmaXJzdCkKK3sKKyAgICBV
Q2hhciBzZWNvbmQgPSBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCk7CisgICAgaWYg
KGlzTmFtZVN0YXJ0Q29kZVBvaW50KGZpcnN0KSB8fCB0d29DaGFyc0FyZVZhbGlkRXNjYXBlKGZp
cnN0LCBzZWNvbmQpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChmaXJzdCA9PSAn
LScpCisgICAgICAgIHJldHVybiBpc05hbWVTdGFydENvZGVQb2ludChzZWNvbmQpIHx8IHNlY29u
ZCA9PSAnLScgfHwgbmV4dFR3b0NoYXJzQXJlVmFsaWRFc2NhcGUoKTsKKworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBDU1NUb2tlbml6ZXI6Om5leHRDaGFyc0FyZUlkZW50aWZpZXIoKQor
eworICAgIFVDaGFyIGZpcnN0ID0gY29uc3VtZSgpOworICAgIGJvb2wgYXJlSWRlbnRpZmllciA9
IG5leHRDaGFyc0FyZUlkZW50aWZpZXIoZmlyc3QpOworICAgIHJlY29uc3VtZShmaXJzdCk7Cisg
ICAgcmV0dXJuIGFyZUlkZW50aWZpZXI7Cit9CisKK1N0cmluZ1ZpZXcgQ1NTVG9rZW5pemVyOjpy
ZWdpc3RlclN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBtX3Njb3BlLnN0b3Jl
U3RyaW5nKHN0cmluZyk7CisgICAgcmV0dXJuIHN0cmluZzsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplci5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzkgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBD
aHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8v
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisv
LyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZuZGVmIENTU1Rva2VuaXplcl9oCisjZGVmaW5l
IENTU1Rva2VuaXplcl9oCisKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlbi5oIgorI2luY2x1ZGUg
IklucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmgiCisjaW5jbHVkZSA8Y2xpbWl0cz4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTVG9rZW5pemVySW5wdXRTdHJlYW07
CitjbGFzcyBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI7CitjbGFzcyBDU1NQYXJzZXJUb2tlblJh
bmdlOworCitjbGFzcyBDU1NUb2tlbml6ZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENT
U1Rva2VuaXplcik7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
Y2xhc3MgU2NvcGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgU2NvcGUoY29uc3QgU3RyaW5nJik7
CisgICAgICAgIFNjb3BlKGNvbnN0IFN0cmluZyYsIENTU1BhcnNlck9ic2VydmVyV3JhcHBlciYp
OyAvLyBGb3IgdGhlIGluc3BlY3RvcgorCisgICAgICAgIENTU1BhcnNlclRva2VuUmFuZ2UgdG9r
ZW5SYW5nZSgpOworICAgICAgICB1bnNpZ25lZCB0b2tlbkNvdW50KCk7CisKKyAgICBwcml2YXRl
OgorICAgICAgICB2b2lkIHN0b3JlU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7IG1fc3Ry
aW5nUG9vbC5hcHBlbmQoc3RyaW5nKTsgfQorICAgICAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4s
IDMyPiBtX3Rva2VuczsKKyAgICAgICAgLy8gV2Ugb25seSBhbGxvY2F0ZSBzdHJpbmdzIHdoZW4g
ZXNjYXBlcyBhcmUgdXNlZC4KKyAgICAgICAgVmVjdG9yPFN0cmluZz4gbV9zdHJpbmdQb29sOwor
ICAgICAgICBTdHJpbmcgbV9zdHJpbmc7CisKKyAgICAgICAgZnJpZW5kIGNsYXNzIENTU1Rva2Vu
aXplcjsKKyAgICB9OworCitwcml2YXRlOgorICAgIENTU1Rva2VuaXplcihDU1NUb2tlbml6ZXJJ
bnB1dFN0cmVhbSYsIFNjb3BlJik7CisKKyAgICBDU1NQYXJzZXJUb2tlbiBuZXh0VG9rZW4oKTsK
KworICAgIFVDaGFyIGNvbnN1bWUoKTsKKyAgICB2b2lkIHJlY29uc3VtZShVQ2hhcik7CisKKyAg
ICBDU1NQYXJzZXJUb2tlbiBjb25zdW1lTnVtZXJpY1Rva2VuKCk7CisgICAgQ1NTUGFyc2VyVG9r
ZW4gY29uc3VtZUlkZW50TGlrZVRva2VuKCk7CisgICAgQ1NTUGFyc2VyVG9rZW4gY29uc3VtZU51
bWJlcigpOworICAgIENTU1BhcnNlclRva2VuIGNvbnN1bWVTdHJpbmdUb2tlblVudGlsKFVDaGFy
KTsKKyAgICBDU1NQYXJzZXJUb2tlbiBjb25zdW1lVW5pY29kZVJhbmdlKCk7CisgICAgQ1NTUGFy
c2VyVG9rZW4gY29uc3VtZVVybFRva2VuKCk7CisKKyAgICB2b2lkIGNvbnN1bWVCYWRVcmxSZW1u
YW50cygpOworICAgIHZvaWQgY29uc3VtZVNpbmdsZVdoaXRlc3BhY2VJZk5leHQoKTsKKyAgICB2
b2lkIGNvbnN1bWVVbnRpbENvbW1lbnRFbmRGb3VuZCgpOworCisgICAgYm9vbCBjb25zdW1lSWZO
ZXh0KFVDaGFyKTsKKyAgICBTdHJpbmdWaWV3IGNvbnN1bWVOYW1lKCk7CisgICAgVUNoYXIzMiBj
b25zdW1lRXNjYXBlKCk7CisKKyAgICBib29sIG5leHRUd29DaGFyc0FyZVZhbGlkRXNjYXBlKCk7
CisgICAgYm9vbCBuZXh0Q2hhcnNBcmVOdW1iZXIoVUNoYXIpOworICAgIGJvb2wgbmV4dENoYXJz
QXJlTnVtYmVyKCk7CisgICAgYm9vbCBuZXh0Q2hhcnNBcmVJZGVudGlmaWVyKFVDaGFyKTsKKyAg
ICBib29sIG5leHRDaGFyc0FyZUlkZW50aWZpZXIoKTsKKworICAgIENTU1BhcnNlclRva2VuIGJs
b2NrU3RhcnQoQ1NTUGFyc2VyVG9rZW5UeXBlKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBibG9ja1N0
YXJ0KENTU1BhcnNlclRva2VuVHlwZSBibG9ja1R5cGUsIENTU1BhcnNlclRva2VuVHlwZSwgU3Ry
aW5nVmlldyk7CisgICAgQ1NTUGFyc2VyVG9rZW4gYmxvY2tFbmQoQ1NTUGFyc2VyVG9rZW5UeXBl
LCBDU1NQYXJzZXJUb2tlblR5cGUgc3RhcnRUeXBlKTsKKworICAgIENTU1BhcnNlclRva2VuIHdo
aXRlU3BhY2UoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIGxlZnRQYXJlbnRoZXNpcyhVQ2hh
cik7CisgICAgQ1NTUGFyc2VyVG9rZW4gcmlnaHRQYXJlbnRoZXNpcyhVQ2hhcik7CisgICAgQ1NT
UGFyc2VyVG9rZW4gbGVmdEJyYWNrZXQoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIHJpZ2h0
QnJhY2tldChVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gbGVmdEJyYWNlKFVDaGFyKTsKKyAg
ICBDU1NQYXJzZXJUb2tlbiByaWdodEJyYWNlKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBw
bHVzT3JGdWxsU3RvcChVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gY29tbWEoVUNoYXIpOwor
ICAgIENTU1BhcnNlclRva2VuIGh5cGhlbk1pbnVzKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tl
biBhc3RlcmlzayhVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gbGVzc1RoYW4oVUNoYXIpOwor
ICAgIENTU1BhcnNlclRva2VuIHNvbGlkdXMoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIGNv
bG9uKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBzZW1pQ29sb24oVUNoYXIpOworICAgIENT
U1BhcnNlclRva2VuIGhhc2goVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIGNpcmN1bWZsZXhB
Y2NlbnQoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIGRvbGxhclNpZ24oVUNoYXIpOworICAg
IENTU1BhcnNlclRva2VuIHZlcnRpY2FsTGluZShVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4g
dGlsZGUoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIGNvbW1lcmNpYWxBdChVQ2hhcik7Cisg
ICAgQ1NTUGFyc2VyVG9rZW4gcmV2ZXJzZVNvbGlkdXMoVUNoYXIpOworICAgIENTU1BhcnNlclRv
a2VuIGFzY2lpRGlnaXQoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIGxldHRlclUoVUNoYXIp
OworICAgIENTU1BhcnNlclRva2VuIG5hbWVTdGFydChVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9r
ZW4gc3RyaW5nU3RhcnQoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIGVuZE9mRmlsZShVQ2hh
cik7CisKKyAgICBTdHJpbmdWaWV3IHJlZ2lzdGVyU3RyaW5nKGNvbnN0IFN0cmluZyYpOworCisg
ICAgdXNpbmcgQ29kZVBvaW50ID0gQ1NTUGFyc2VyVG9rZW4gKENTU1Rva2VuaXplcjo6KikoVUNo
YXIpOworICAgIHN0YXRpYyBjb25zdCBDb2RlUG9pbnQgY29kZVBvaW50c1tdOworCisgICAgVmVj
dG9yPENTU1BhcnNlclRva2VuVHlwZSwgOD4gbV9ibG9ja1N0YWNrOworICAgIENTU1Rva2VuaXpl
cklucHV0U3RyZWFtJiBtX2lucHV0OworICAgIFNjb3BlJiBtX3Njb3BlOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ1NTVG9rZW5pemVyX2gKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0u
Y3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5p
emVySW5wdXRTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAKKy8vIENv
cHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlz
dHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisv
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaCIKKworI2luY2x1ZGUg
IkhUTUxQYXJzZXJJZGlvbXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDU1NUb2tlbml6
ZXJJbnB1dFN0cmVhbTo6Q1NTVG9rZW5pemVySW5wdXRTdHJlYW0oU3RyaW5nIGlucHV0KQorICAg
IDogbV9vZmZzZXQoMCkKKyAgICAsIG1fc3RyaW5nTGVuZ3RoKGlucHV0Lmxlbmd0aCgpKQorICAg
ICwgbV9zdHJpbmcoaW5wdXQuaW1wbCgpKQoreworfQorCit2b2lkIENTU1Rva2VuaXplcklucHV0
U3RyZWFtOjphZHZhbmNlVW50aWxOb25XaGl0ZXNwYWNlKCkKK3sKKyAgICAvLyBVc2luZyBIVE1M
IHNwYWNlIGhlcmUgcmF0aGVyIHRoYW4gQ1NTIHNwYWNlIHNpbmNlIHdlIGRvbid0IGRvIHByZXBy
b2Nlc3NpbmcKKyAgICBpZiAobV9zdHJpbmctPmlzOEJpdCgpKSB7CisgICAgICAgIGNvbnN0IExD
aGFyKiBjaGFyYWN0ZXJzID0gbV9zdHJpbmctPmNoYXJhY3RlcnM4KCk7CisgICAgICAgIHdoaWxl
IChtX29mZnNldCA8IG1fc3RyaW5nTGVuZ3RoICYmIGlzSFRNTFNwYWNlKGNoYXJhY3RlcnNbbV9v
ZmZzZXRdKSkKKyAgICAgICAgICAgICsrbV9vZmZzZXQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBtX3N0cmluZy0+Y2hhcmFjdGVyczE2KCk7CisgICAg
ICAgIHdoaWxlIChtX29mZnNldCA8IG1fc3RyaW5nTGVuZ3RoICYmIGlzSFRNTFNwYWNlKGNoYXJh
Y3RlcnNbbV9vZmZzZXRdKSkKKyAgICAgICAgICAgICsrbV9vZmZzZXQ7CisgICAgfQorfQorCitk
b3VibGUgQ1NTVG9rZW5pemVySW5wdXRTdHJlYW06OmdldERvdWJsZSh1bnNpZ25lZCBzdGFydCwg
dW5zaWduZWQgZW5kKSBjb25zdAoreworICAgIEFTU0VSVChzdGFydCA8PSBlbmQgJiYgKChtX29m
ZnNldCArIGVuZCkgPD0gbV9zdHJpbmdMZW5ndGgpKTsKKyAgICBib29sIGlzUmVzdWx0T0sgPSBm
YWxzZTsKKyAgICBkb3VibGUgcmVzdWx0ID0gMC4wOworICAgIGlmIChzdGFydCA8IGVuZCkgewor
ICAgICAgICBpZiAobV9zdHJpbmctPmlzOEJpdCgpKQorICAgICAgICAgICAgcmVzdWx0ID0gY2hh
cmFjdGVyc1RvRG91YmxlKG1fc3RyaW5nLT5jaGFyYWN0ZXJzOCgpICsgbV9vZmZzZXQgKyBzdGFy
dCwgZW5kIC0gc3RhcnQsICZpc1Jlc3VsdE9LKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cmVzdWx0ID0gY2hhcmFjdGVyc1RvRG91YmxlKG1fc3RyaW5nLT5jaGFyYWN0ZXJzMTYoKSArIG1f
b2Zmc2V0ICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCAmaXNSZXN1bHRPSyk7CisgICAgfQorICAgIC8v
IEZJWE1FOiBJdCBsb29rcyBsaWtlIGNhbGxlcnMgZW5zdXJlIHdlIGhhdmUgYSB2YWxpZCBudW1i
ZXIKKyAgICByZXR1cm4gaXNSZXN1bHRPSyA/IHJlc3VsdCA6IDAuMDsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NUb2tlbml6
ZXJJbnB1dFN0cmVhbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMDkgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
Ly8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisjaWZuZGVmIENTU1Rva2VuaXplcklucHV0U3RyZWFtX2gKKyNkZWZpbmUgQ1NTVG9r
ZW5pemVySW5wdXRTdHJlYW1faAorCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIENTU1Rva2VuaXplcklucHV0U3RyZWFtIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0oU3RyaW5nIGlu
cHV0KTsKKworICAgIC8vIEdldHMgdGhlIGNoYXIgaW4gdGhlIHN0cmVhbSByZXBsYWNpbmcgTlVM
IGNoYXJhY3RlcnMgd2l0aCBhIHVuaWNvZGUKKyAgICAvLyByZXBsYWNlbWVudCBjaGFyYWN0ZXIu
IFdpbGwgcmV0dXJuIChOVUwpIGtFbmRPZkZpbGVNYXJrZXIgd2hlbiBhdCB0aGUKKyAgICAvLyBl
bmQgb2YgdGhlIHN0cmVhbS4KKyAgICBVQ2hhciBuZXh0SW5wdXRDaGFyKCkgY29uc3QKKyAgICB7
CisgICAgICAgIGlmIChtX29mZnNldCA+PSBtX3N0cmluZ0xlbmd0aCkKKyAgICAgICAgICAgIHJl
dHVybiAnXDAnOworICAgICAgICBVQ2hhciByZXN1bHQgPSAoKm1fc3RyaW5nKVttX29mZnNldF07
CisgICAgICAgIHJldHVybiByZXN1bHQgPyByZXN1bHQgOiAweEZGRkQ7CisgICAgfQorCisgICAg
Ly8gR2V0cyB0aGUgY2hhciBhdCBsb29rYWhlYWRPZmZzZXQgZnJvbSB0aGUgY3VycmVudCBzdHJl
YW0gcG9zaXRpb24uIFdpbGwKKyAgICAvLyByZXR1cm4gTlVMIChrRW5kT2ZGaWxlTWFya2VyKSBp
ZiB0aGUgc3RyZWFtIHBvc2l0aW9uIGlzIGF0IHRoZSBlbmQuCisgICAgLy8gTk9URTogVGhpcyBt
YXkgKmFsc28qIHJldHVybiBOVUwgaWYgdGhlcmUncyBvbmUgaW4gdGhlIGlucHV0ISBOZXZlcgor
ICAgIC8vIGNvbXBhcmUgdGhlIHJldHVybiB2YWx1ZSB0byAnXDAnLgorICAgIFVDaGFyIHBlZWtX
aXRob3V0UmVwbGFjZW1lbnQodW5zaWduZWQgbG9va2FoZWFkT2Zmc2V0KSBjb25zdAorICAgIHsK
KyAgICAgICAgaWYgKChtX29mZnNldCArIGxvb2thaGVhZE9mZnNldCkgPj0gbV9zdHJpbmdMZW5n
dGgpCisgICAgICAgICAgICByZXR1cm4gJ1wwJzsKKyAgICAgICAgcmV0dXJuICgqbV9zdHJpbmcp
W21fb2Zmc2V0ICsgbG9va2FoZWFkT2Zmc2V0XTsKKyAgICB9CisKKyAgICB2b2lkIGFkdmFuY2Uo
dW5zaWduZWQgb2Zmc2V0ID0gMSkgeyBtX29mZnNldCArPSBvZmZzZXQ7IH0KKyAgICB2b2lkIHB1
c2hCYWNrKFVDaGFyIGNjKQorICAgIHsKKyAgICAgICAgLS1tX29mZnNldDsKKyAgICAgICAgQVNT
RVJUX1VOVVNFRChjYywgbmV4dElucHV0Q2hhcigpID09IGNjKTsKKyAgICB9CisKKyAgICBkb3Vi
bGUgZ2V0RG91YmxlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpIGNvbnN0OworCisgICAg
dGVtcGxhdGU8Ym9vbCBjaGFyYWN0ZXJQcmVkaWNhdGUoVUNoYXIpPgorICAgIHVuc2lnbmVkIHNr
aXBXaGlsZVByZWRpY2F0ZSh1bnNpZ25lZCBvZmZzZXQpCisgICAgeworICAgICAgICBpZiAobV9z
dHJpbmctPmlzOEJpdCgpKSB7CisgICAgICAgICAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVyczgg
PSBtX3N0cmluZy0+Y2hhcmFjdGVyczgoKTsKKyAgICAgICAgICAgIHdoaWxlICgobV9vZmZzZXQg
KyBvZmZzZXQpIDwgbV9zdHJpbmdMZW5ndGggJiYgY2hhcmFjdGVyUHJlZGljYXRlKGNoYXJhY3Rl
cnM4W21fb2Zmc2V0ICsgb2Zmc2V0XSkpCisgICAgICAgICAgICAgICAgKytvZmZzZXQ7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVyczE2ID0gbV9z
dHJpbmctPmNoYXJhY3RlcnMxNigpOworICAgICAgICAgICAgd2hpbGUgKChtX29mZnNldCArIG9m
ZnNldCkgPCBtX3N0cmluZ0xlbmd0aCAmJiBjaGFyYWN0ZXJQcmVkaWNhdGUoY2hhcmFjdGVyczE2
W21fb2Zmc2V0ICsgb2Zmc2V0XSkpCisgICAgICAgICAgICAgICAgKytvZmZzZXQ7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIG9mZnNldDsKKyAgICB9CisKKyAgICB2b2lkIGFkdmFuY2VVbnRp
bE5vbldoaXRlc3BhY2UoKTsKKworICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RyaW5nTGVuZ3RoOyB9CisgICAgdW5zaWduZWQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4g
c3RkOjptaW4obV9vZmZzZXQsIG1fc3RyaW5nTGVuZ3RoKTsgfQorCisgICAgU3RyaW5nVmlldyBy
YW5nZUF0KHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CisgICAgeworICAg
ICAgICBBU1NFUlQoc3RhcnQgKyBsZW5ndGggPD0gbV9zdHJpbmdMZW5ndGgpOworICAgICAgICBy
ZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZy5nZXQoKSkuc3Vic3RyaW5nKHN0YXJ0LCBsZW5ndGgp
OyAvLyBGSVhNRTogU2hvdWxkIG1ha2UgYSBjb25zdHJ1Y3RvciBvbiBTdHJpbmdWaWV3IGZvciB0
aGlzLgorICAgIH0KKworcHJpdmF0ZToKKyAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgY29uc3Qg
c2l6ZV90IG1fc3RyaW5nTGVuZ3RoOworICAgIGNvbnN0IFJlZlB0cjxTdHJpbmdJbXBsPiBtX3N0
cmluZzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENTU1Rva2Vu
aXplcklucHV0U3RyZWFtX2gKKwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3Ro
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgJKHJldmlz
aW9uIDIwNDk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw2ICs0MCwxMSBAQCBlbnVtIExlbmd0aFR5cGUgewogICAgIFVuZGVmaW5l
ZAogfTsKIAorZW51bSBWYWx1ZVJhbmdlIHsKKyAgICBWYWx1ZVJhbmdlQWxsLAorICAgIFZhbHVl
UmFuZ2VOb25OZWdhdGl2ZQorfTsKKwogY2xhc3MgQ2FsY3VsYXRpb25WYWx1ZTsKIGNsYXNzIFRl
eHRTdHJlYW07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287016</attachid>
            <date>2016-08-25 14:21:30 -0700</date>
            <delta_ts>2016-08-25 14:30:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>450979</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3NiBAQAorMjAxNi0wOC0yNCAgRGF2ZSBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBJbml0aWFsIGxhbmRpbmcgb2YgQ1NT
IFBhcnNlciBUb2tlbml6YXRpb24gKGFuZCBmaWxlcyB0byBzdXBwb3J0IHRoYXQpLiBOb3QgdXNl
ZCB5ZXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjExNzQKKworICAgICAgICBUaGlzIGNvZGUgaXMgaW1wb3J0ZWQgZnJvbSBCbGluayBhbmQgaXMg
dGhlaXIgQ1NTIHBhcnNlciAobW9kaWZpZWQgdG8gd29yayBpbiBXZWJLaXQpLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGNzcy9DU1NNYXJrdXAuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQ1NTVG9rZW5p
emVySWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVDaGFyYWN0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplQ2hhcmFjdGVyQXNDb2RlUG9pbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6c2VyaWFsaXplSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpzZXJp
YWxpemVTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplVVJJKToKKyAgICAgICAg
KFdlYkNvcmU6OnNlcmlhbGl6ZUZvbnRGYW1pbHkpOgorICAgICAgICAqIGNzcy9DU1NNYXJrdXAu
aDogQWRkZWQuCisgICAgICAgICogY3NzL0NTU09NVXRpbHMuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIGNzcy9DU1NPTVV0aWxzLmg6IFJlbW92ZWQuCisgICAgICAgICogY3NzL0NTU1NlbGVjdG9y
LmNwcDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHA6IEFkZGVk
LgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmg6IEFkZGVkLgorICAg
ICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6aXNDU1NTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjppc05hbWVTdGFydENvZGVQb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjppc05hbWVDb2RlUG9pbnQpOgorICAgICAgICAqIGNzcy9w
YXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJPYnNlcnZlcjo6fkNTU1BhcnNlck9ic2VydmVyKToKKyAgICAgICAgKiBjc3MvcGFyc2Vy
L0NTU1BhcnNlck9ic2VydmVyV3JhcHBlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyOjpzdGFydE9mZnNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OnByZXZpb3VzVG9rZW5TdGFydE9mZnNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OmVuZE9mZnNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OnNraXBDb21tZW50c0Jl
Zm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OnlpZWxk
Q29tbWVudHNCZWZvcmUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXJX
cmFwcGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyT2JzZXJ2ZXJXcmFw
cGVyOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyT2JzZXJ2ZXJXcmFwcGVyOjpvYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXJPYnNlcnZlcldyYXBwZXI6OmFkZENvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyT2JzZXJ2ZXJXcmFwcGVyOjphZGRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXJPYnNlcnZlcldyYXBwZXI6OmZpbmFsaXplQ29uc3RydWN0aW9uKToKKyAgICAgICAgKiBjc3Mv
cGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjc3NQ
cmltaXRpdmVWYWx1ZVVuaXRGcm9tVHJpZSk6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdUb1Vu
aXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpDU1NQYXJzZXJUb2tl
bik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6Y29udmVydFRvRGltZW5zaW9u
V2l0aFVuaXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OmNvbnZlcnRUb1Bl
cmNlbnRhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OmRlbGltaXRlcik6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6bnVtZXJpY1NpZ24pOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46Om51bWVyaWNWYWx1ZVR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46Om51bWVyaWNWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXJUb2tlbjo6cGFyc2VBc1VucmVzb2x2ZWRDU1NQcm9wZXJ0eUlEKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjppZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJUb2tlbjo6ZnVuY3Rpb25JZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tl
bjo6aGFzU3RyaW5nQmFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6
Y29weVdpdGhVcGRhdGVkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2Vu
Ojp2YWx1ZURhdGFDaGFyUmF3RXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9r
ZW46Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OnNlcmlh
bGl6ZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlclRva2VuOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clRva2VuOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6Z2V0SGFz
aFRva2VuVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6Z2V0QmxvY2tU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjp1bml0VHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6dW5pY29kZVJhbmdlU3RhcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OnVuaWNvZGVSYW5nZUVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6aW5pdFZhbHVlRnJvbVN0cmluZ1ZpZXcpOgorICAgICAg
ICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW5SYW5nZS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6ZW9mVG9rZW4pOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6bWFrZVN1YlJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlclRva2VuUmFuZ2U6OmNvbnN1bWVCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXJUb2tlblJhbmdlOjpjb25zdW1lQ29tcG9uZW50VmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6c2VyaWFsaXplKToKKyAgICAgICAgKiBjc3MvcGFy
c2VyL0NTU1BhcnNlclRva2VuUmFuZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJUb2tlblJhbmdlOjpDU1NQYXJzZXJUb2tlblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlclRva2VuUmFuZ2U6OmF0RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clRva2VuUmFuZ2U6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlblJhbmdl
OjpwZWVrKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuUmFuZ2U6OmNvbnN1bWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6Y29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6Y29u
c3VtZVdoaXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6
YmVnaW4pOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Omhhc1ByZWZpeCk6CisgICAgICAgIChXZWJDb3JlOjpjc3NQ
cm9wZXJ0eUlEKToKKyAgICAgICAgKFdlYkNvcmU6OmNzc1Byb3BlcnR5TmFtZUlPU0FsaWFzaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzQXBwbGVMZWdhY3lDc3NWYWx1ZUtleXdvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6Y3NzVmFsdWVLZXl3b3JkSUQpOgorICAgICAgICAoV2ViQ29yZTo6dW5y
ZXNvbHZlZENTU1Byb3BlcnR5SUQpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQ
YXJzZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6aW5R
dWlya3NNb2RlKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVy
cy5jcHA6IEFkZGVkLgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
OjppZGVudE1hdGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzOjpjb25zdW1lSWRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzOjppc0NTU1dpZGVLZXl3b3JkKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Rva2Vu
aXplci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpTY29wZTo6
U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpTY29wZTo6dG9rZW5SYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OlNjb3BlOjp0b2tlbkNvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OmlzTmV3TGluZSk6CisgICAgICAgIChXZWJDb3JlOjp0d29DaGFy
c0FyZVZhbGlkRXNjYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Q1NTVG9r
ZW5pemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6cmVjb25zdW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb2tlbml6ZXI6OndoaXRlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5p
emVyOjpibG9ja1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6YmxvY2tF
bmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpsZWZ0UGFyZW50aGVzaXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpyaWdodFBhcmVudGhlc2lzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6bGVmdEJyYWNrZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9rZW5pemVyOjpyaWdodEJyYWNrZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9r
ZW5pemVyOjpsZWZ0QnJhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpyaWdo
dEJyYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6cGx1c09yRnVsbFN0b3Ap
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjphc3Rlcmlzayk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb2tlbml6ZXI6Omxlc3NUaGFuKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rv
a2VuaXplcjo6Y29tbWEpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpoeXBoZW5N
aW51cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OnNvbGlkdXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb2xvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXI6OnNlbWlDb2xvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6Omhh
c2gpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjaXJjdW1mbGV4QWNjZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6ZG9sbGFyU2lnbik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb2tlbml6ZXI6OnZlcnRpY2FsTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NUb2tlbml6ZXI6OnRpbGRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29t
bWVyY2lhbEF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6cmV2ZXJzZVNvbGlk
dXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjphc2NpaURpZ2l0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6bGV0dGVyVSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NUb2tlbml6ZXI6Om5hbWVTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6
OnN0cmluZ1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6ZW5kT2ZGaWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6bmV4dFRva2VuKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZU51bWJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVOdW1lcmljVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVG9rZW5pemVyOjpjb25zdW1lSWRlbnRMaWtlVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVG9rZW5pemVyOjpjb25zdW1lU3RyaW5nVG9rZW5VbnRpbCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVVbmljb2RlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
aXNOb25QcmludGFibGVDb2RlUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVy
Ojpjb25zdW1lVXJsVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb25z
dW1lQmFkVXJsUmVtbmFudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb25z
dW1lU2luZ2xlV2hpdGVzcGFjZUlmTmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6
ZXI6OmNvbnN1bWVVbnRpbENvbW1lbnRFbmRGb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXI6OmNvbnN1bWVJZk5leHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVy
Ojpjb25zdW1lTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVF
c2NhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpuZXh0VHdvQ2hhcnNBcmVW
YWxpZEVzY2FwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6Om5leHRDaGFyc0Fy
ZU51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6Om5leHRDaGFyc0FyZUlk
ZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpyZWdpc3RlclN0cmlu
Zyk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OlNjb3BlOjpzdG9yZVN0cmluZyk6CisgICAgICAgICog
Y3NzL3BhcnNlci9DU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVG9rZW5pemVySW5wdXRTdHJlYW06OkNTU1Rva2VuaXplcklucHV0U3RyZWFt
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcklucHV0U3RyZWFtOjphZHZhbmNlVW50
aWxOb25XaGl0ZXNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcklucHV0U3Ry
ZWFtOjpnZXREb3VibGUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRT
dHJlYW0uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXJJbnB1dFN0cmVh
bTo6bmV4dElucHV0Q2hhcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXJJbnB1dFN0
cmVhbTo6cGVla1dpdGhvdXRSZXBsYWNlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tl
bml6ZXJJbnB1dFN0cmVhbTo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6
ZXJJbnB1dFN0cmVhbTo6cHVzaEJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVy
SW5wdXRTdHJlYW06OnNraXBXaGlsZVByZWRpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXJJbnB1dFN0cmVhbTo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2Vu
aXplcklucHV0U3RyZWFtOjpvZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVy
SW5wdXRTdHJlYW06OnJhbmdlQXQpOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5oOgorCiAy
MDE2LTA4LTI0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIHRo
ZSBhYmlsaXR5IHRvIG92ZXJyaWRlIHRoZSBpbXBsZW1lbnRhdGlvbiBuYW1lIG9mIElETCBlbnVt
cyBhbmQgZGljdGlvbmFyaWVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjA0
OTc4KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEzNDEsOSArMTM0MSw5IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3MvQ1NTS2V5ZnJh
bWVSdWxlLmNwcAogICAgIGNzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcAogICAgIGNzcy9DU1NMaW5l
Qm94Q29udGFpblZhbHVlLmNwcAorICAgIGNzcy9DU1NNYXJrdXAuY3BwCiAgICAgY3NzL0NTU01l
ZGlhUnVsZS5jcHAKICAgICBjc3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmNwcAotICAgIGNzcy9DU1NP
TVV0aWxzLmNwcAogICAgIGNzcy9DU1NQYWdlUnVsZS5jcHAKICAgICBjc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuY3BwCiAgICAgY3NzL0NTU1Byb3BlcnR5LmNwcApAQCAtMTQxMCw3ICsxNDEwLDE1IEBA
IHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3MvV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmNwcAog
CiAgICAgY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCisgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJG
YXN0UGF0aHMuY3BwCisgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3Bw
CisgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAKKyAgICBjc3MvcGFyc2VyL0NTU1Bh
cnNlclRva2VuUmFuZ2UuY3BwCiAgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJWYWx1ZXMuY3BwCisg
ICAgY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKyAgICBjc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VySGVscGVycy5jcHAKKyAgICBjc3MvcGFyc2VyL0NTU1Rva2VuaXplci5jcHAK
KyAgICBjc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcAogICAgIGNzcy9wYXJz
ZXIvU1ZHQ1NTUGFyc2VyLmNwcAogCiAgICAgY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyMDQ5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMzMzksNiArMzMzOSwyNiBAQAog
CQk5NDZEMzczMDFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzJCMUQ2Q0IyOEIw
MDc3MDg0RiAvKiBDU1NQYXJzZXJWYWx1ZXMuY3BwICovOyB9OwogCQk5NDZEMzczMTFENkNCMjk0
MDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzcyQzFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2Vy
VmFsdWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOTQ2RDM3MzMxRDZDQzQyQjAwNzcwODRGIC8qIFNWR0NTU1BhcnNlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzczMjFENkNDMzcyMDA3
NzA4NEYgLyogU1ZHQ1NTUGFyc2VyLmNwcCAqLzsgfTsKKwkJOTQ2RDM3MzkxRDZDREZDMDAwNzcw
ODRGIC8qIENTU1Rva2VuaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NDZEMzczNDFENkNERjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmNw
cCAqLzsgfTsKKwkJOTQ2RDM3M0ExRDZDREZDMDAwNzcwODRGIC8qIENTU1Rva2VuaXplci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3MzcxRDZD
REY5ODAwNzcwODRGIC8qIENTU1Rva2VuaXplci5oICovOyB9OworCQk5NDZEMzczQjFENkNERkMw
MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3MzUxRDZDREY5ODAwNzcwODRGIC8q
IENTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcCAqLzsgfTsKKwkJOTQ2RDM3M0MxRDZDREZDMDAw
NzcwODRGIC8qIENTU1Rva2VuaXplcklucHV0U3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzczODFENkNERjk4MDA3NzA4NEYgLyogQ1NT
VG9rZW5pemVySW5wdXRTdHJlYW0uaCAqLzsgfTsKKwkJOTQ2RDM3M0YxRDZDRTNDMjAwNzcwODRG
IC8qIENTU1BhcnNlclRva2VuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk0NkQzNzNFMUQ2Q0UzMUEwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlbi5j
cHAgKi87IH07CisJCTk0NkQzNzQwMUQ2Q0UzQzIwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3M0Qx
RDZDRTMxQTAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuLmggKi87IH07CisJCTk0NkQzNzQ0MUQ2
Q0Y3QjIwMDc3MDg0RiAvKiBDU1NQYXJzZXJJZGlvbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzQzMUQ2Q0Y3ODgwMDc3MDg0RiAvKiBDU1NQ
YXJzZXJJZGlvbXMuaCAqLzsgfTsKKwkJOTQ2RDM3NDUxRDZEMDFENDAwNzcwODRGIC8qIENTU1By
b3BlcnR5UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk0NkQzNzQxMUQ2Q0Y2MzIwMDc3MDg0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlci5jcHAg
Ki87IH07CisJCTk0NkQzNzQ2MUQ2RDAxRDQwMDc3MDg0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3NDIx
RDZDRjYzMjAwNzcwODRGIC8qIENTU1Byb3BlcnR5UGFyc2VyLmggKi87IH07CisJCTk0NkQzNzQ5
MUQ2RDA2MjgwMDc3MDg0RiAvKiBDU1NNYXJrdXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3NDcxRDZEMDYwQzAwNzcwODRGIC8qIENTU01h
cmt1cC5jcHAgKi87IH07CisJCTk0NkQzNzRBMUQ2RDA2MjgwMDc3MDg0RiAvKiBDU1NNYXJrdXAu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzQ4
MUQ2RDA2MEMwMDc3MDg0RiAvKiBDU1NNYXJrdXAuaCAqLzsgfTsKKwkJOTQ2RDM3NEQxRDZEMDhB
NjAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3NEIxRDZEMDdGNTAwNzcwODRGIC8qIENT
U1BhcnNlclRva2VuUmFuZ2UuY3BwICovOyB9OworCQk5NDZEMzc0RTFENkQwOEFBMDA3NzA4NEYg
LyogQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTQ2RDM3NEMxRDZEMDdGNTAwNzcwODRGIC8qIENTU1BhcnNlclRva2Vu
UmFuZ2UuaCAqLzsgfTsKKwkJOTQ5Qzc3MDAxRDZFMUQ5ODAwQzBERTRGIC8qIENTU1BhcnNlckZh
c3RQYXRocy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NDlDNzZGRTFENkUxRDhDMDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcCAqLzsg
fTsKKwkJOTQ5Qzc3MDExRDZFMUQ5ODAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRocy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5Qzc2RkYxRDZF
MUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRocy5oICovOyB9OworCQk5NDlDNzcwNDFE
NkUzOUVBMDBDMERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0OUM3NzAyMUQ2RTM5MzUwMEMw
REU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwICovOyB9OworCQk5NDlDNzcwNTFE
NkUzOUVBMDBDMERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDlDNzcwMzFENkUzOTM1MDBDMERF
NEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmggKi87IH07CisJCTk0OUM3NzA4MUQ2RTQ5
ODcwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5Qzc3MDYxRDZFNDhFRDAwQzBERTRG
IC8qIENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5jcHAgKi87IH07CisJCTk0OUM3NzA5MUQ2RTQ5
ODcwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0OUM3NzA3MUQ2RTQ4RUQwMEMwREU0RiAv
KiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaCAqLzsgfTsKKwkJOTQ5Qzc3MEIxRDZFNDlFRDAw
QzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NDlDNzcwQTFENkU0OUMzMDBDMERFNEYgLyogQ1NTUGFyc2Vy
T2JzZXJ2ZXIuaCAqLzsgfTsKIAkJOTZBQkE0MjMxNEJDQjgwRTAwRDU2MjA0IC8qIEdyYXBoaWNz
Q29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk2QUJBNDIyMTRCQ0I4MEUwMEQ1NjIwNCAvKiBHcmFwaGljc0NvbnRl
eHQzRE9wZW5HTENvbW1vbi5jcHAgKi87IH07CiAJCTk3MDNFMUJGMTVEQzRFMzcwMDFGMjRDOCAv
KiBKU1ZvaWRDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5N0U5RUM4QjE1REM0OTJGMDA0RjJFNzEgLyogSlNWb2lkQ2FsbGJhY2suY3Bw
ICovOyB9OwogCQk5NzA1OTk3NzEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzMx
MDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmNwcCAqLzsgfTsKQEAgLTYzMTgsOCAr
NjMzOCw2IEBACiAJCUY1RTBDNjVDMTY0M0M0MkMwMEQ2Q0I2OSAvKiBCYXNlQ2hvb3Nlck9ubHlE
YXRlQW5kVGltZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjVFMEM2NUExNjQzQzQyQzAwRDZDQjY5IC8qIEJhc2VDaG9vc2VyT25seURh
dGVBbmRUaW1lSW5wdXRUeXBlLmggKi87IH07CiAJCUY5MTZDNDhEMERCNTEwRjgwMDc2Q0Q4MyAv
KiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOTE2QzQ4QjBEQjUxMEY4MDA3NkNEODMgLyogSlNY
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3BwICovOyB9OwogCQlGOTE2QzQ4RTBEQjUxMEY4
MDA3NkNEODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5MTZDNDhDMERCNTEwRjgwMDc2Q0Q4
MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICovOyB9OwotCQlGOThGRkY0NDEx
QTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOThGRkY0MjExQTI2NzYyMDBGNTQ4RTggLyogQ1NTT01V
dGlscy5jcHAgKi87IH07Ci0JCUY5OEZGRjQ1MTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOThGRkY0
MzExQTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5oICovOyB9OwogCQlGOUYwRUQ3QTBEQjUw
Q0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOUYwRUQ3NzBEQjUwQ0EyMDBEMTZE
QjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi87IH07CiAJCUZBNjU0QTZCMTEw
OEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUb2tlbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE2NTRBNjkxMTA4QUJFRDAwMjYxNUUwIC8q
IE1hdGhNTFRva2VuRWxlbWVudC5jcHAgKi87IH07CiAJCUZBNjU0QTZCMTEwOEFCRUQwMDI2MTZG
MSAvKiBNYXRoTUxPcGVyYXRvckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkE2NTRBNjkxMTA4QUJFRDAwMjYxNkYxIC8qIE1hdGhNTE9w
ZXJhdG9yRWxlbWVudC5jcHAgKi87IH07CkBAIC0xMDQ1Myw2ICsxMDQ3MSwyNiBAQAogCQk5NDZE
MzcyQjFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1BhcnNlclZhbHVlcy5jcHA7IHBhdGggPSBwYXJz
ZXIvQ1NTUGFyc2VyVmFsdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ2
RDM3MkMxRDZDQjI4QjAwNzcwODRGIC8qIENTU1BhcnNlclZhbHVlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQYXJzZXJWYWx1ZXMuaDsgcGF0aCA9IHBhcnNlci9DU1NQ
YXJzZXJWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ2RDM3MzIxRDZD
QzM3MjAwNzcwODRGIC8qIFNWR0NTU1BhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBTVkdDU1NQYXJzZXIuY3BwOyBwYXRoID0gcGFyc2VyL1NWR0NTU1BhcnNl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NkQzNzM0MUQ2Q0RGOTgwMDc3
MDg0RiAvKiBDU1NUb2tlbml6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQ1NTVG9rZW5pemVyLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NUb2tlbml6ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzczNTFENkNERjk4MDA3NzA4NEYgLyog
Q1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwOyBwYXRoID0gcGFyc2VyL0NTU1Rv
a2VuaXplcklucHV0U3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ2
RDM3MzcxRDZDREY5ODAwNzcwODRGIC8qIENTU1Rva2VuaXplci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBDU1NUb2tlbml6ZXIuaDsgcGF0aCA9IHBhcnNlci9DU1NUb2tlbml6
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ2RDM3MzgxRDZDREY5ODAwNzcw
ODRGIC8qIENTU1Rva2VuaXplcklucHV0U3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IENTU1Rva2VuaXplcklucHV0U3RyZWFtLmg7IHBhdGggPSBwYXJzZXIvQ1NTVG9r
ZW5pemVySW5wdXRTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ2RDM3
M0QxRDZDRTMxQTAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IENTU1BhcnNlclRva2VuLmg7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2Vy
VG9rZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ2RDM3M0UxRDZDRTMxQTAw
NzcwODRGIC8qIENTU1BhcnNlclRva2VuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IENTU1BhcnNlclRva2VuLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJUb2tl
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NkQzNzQxMUQ2Q0Y2MzIwMDc3
MDg0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBDU1NQcm9wZXJ0eVBhcnNlci5jcHA7IHBhdGggPSBwYXJzZXIvQ1NTUHJvcGVy
dHlQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzc0MjFENkNG
NjMyMDA3NzA4NEYgLyogQ1NTUHJvcGVydHlQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQ1NTUHJvcGVydHlQYXJzZXIuaDsgcGF0aCA9IHBhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzc0MzFENkNGNzg4
MDA3NzA4NEYgLyogQ1NTUGFyc2VySWRpb21zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IENTU1BhcnNlcklkaW9tcy5oOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzc0NzFENkQwNjBDMDA3NzA4NEYg
LyogQ1NTTWFya3VwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENT
U01hcmt1cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NkQzNzQ4MUQ2RDA2
MEMwMDc3MDg0RiAvKiBDU1NNYXJrdXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ1NTTWFya3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NkQzNzRCMUQ2
RDA3RjUwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1BhcnNlclRva2VuUmFuZ2UuY3BwOyBwYXRoID0gcGFy
c2VyL0NTU1BhcnNlclRva2VuUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5NDZEMzc0QzFENkQwN0Y1MDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW5SYW5nZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQYXJzZXJUb2tlblJhbmdlLmg7IHBhdGgg
PSBwYXJzZXIvQ1NTUGFyc2VyVG9rZW5SYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5NDlDNzZGRTFENkUxRDhDMDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1BhcnNlckZhc3RQYXRocy5j
cHA7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTQ5Qzc2RkYxRDZFMUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQ
YXRocy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQYXJzZXJGYXN0UGF0
aHMuaDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTQ5Qzc3MDIxRDZFMzkzNTAwQzBERTRGIC8qIENTU1Byb3BlcnR5UGFy
c2VySGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDU1NQ
cm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwOyBwYXRoID0gcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2Vy
SGVscGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0OUM3NzAzMUQ2RTM5
MzUwMEMwREU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmg7IHBhdGggPSBwYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTk0OUM3NzA2MUQ2RTQ4RUQwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUGFyc2VyT2JzZXJ2
ZXJXcmFwcGVyLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDlDNzcwNzFENkU0OEVEMDBDMERFNEYg
LyogQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5oOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNl
ck9ic2VydmVyV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDlDNzcw
QTFENkU0OUMzMDBDMERFNEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQ1NTUGFyc2VyT2JzZXJ2ZXIuaDsgcGF0aCA9IHBhcnNlci9DU1NQ
YXJzZXJPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NTBDNEMwMkJF
RDg5MzZGODE4RTJGOTkgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHR3JhcGhpY3NFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk2QUJBNDIyMTRCQ0I4MEUwMEQ1NjIwNCAvKiBHcmFwaGljc0NvbnRl
eHQzRE9wZW5HTENvbW1vbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk3MDU5OTczMTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2xpY3lDYWxsYmFjay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzg5NCw4ICsxMzkzMiw2IEBACiAJCUY4
MjE2Mjk5MDI5RjRGQjUwMTAwMDEzMSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1l
d29yazsgcGF0aCA9IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJRjkxNkM0OEIwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0
cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUY5MTZDNDhDMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1
ZXN0UHJvZ3Jlc3NFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNY
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRjk4RkZGNDIxMUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTT01VdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUY5OEZGRjQzMTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU09NVXRpbHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjlGMEVENzcwREI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBS
ZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY5RjBFRDc4MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQTY1NEE2MzExMDhBQkI3MDAy
NjE1RTAgLyogbWF0aG1sLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gbWF0aG1sLmNz
czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MDczLDEyICsxODEwOSwzMCBAQAog
CQk5NDZEMzcyNzFENkNCMjI1MDA3NzA4NEYgLyogcGFyc2VyICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk5NDZEMzczMjFENkNDMzcyMDA3NzA4NEYgLyog
U1ZHQ1NTUGFyc2VyLmNwcCAqLywKIAkJCQk5NDZEMzcyODFENkNCMjhCMDA3NzA4NEYgLyogQ1NT
UGFyc2VyLmNwcCAqLywKIAkJCQk5NDZEMzcyOTFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2Vy
LmggKi8sCisJCQkJOTQ5Qzc2RkUxRDZFMUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRo
cy5jcHAgKi8sCisJCQkJOTQ5Qzc2RkYxRDZFMUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQ
YXRocy5oICovLAorCQkJCTk0NkQzNzQzMUQ2Q0Y3ODgwMDc3MDg0RiAvKiBDU1NQYXJzZXJJZGlv
bXMuaCAqLywKIAkJCQk5NDZEMzcyQTFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2VyTW9kZS5o
ICovLAorCQkJCTk0OUM3NzBBMUQ2RTQ5QzMwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlci5o
ICovLAorCQkJCTk0OUM3NzA2MUQ2RTQ4RUQwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldy
YXBwZXIuY3BwICovLAorCQkJCTk0OUM3NzA3MUQ2RTQ4RUQwMEMwREU0RiAvKiBDU1NQYXJzZXJP
YnNlcnZlcldyYXBwZXIuaCAqLywKKwkJCQk5NDZEMzczRTFENkNFMzFBMDA3NzA4NEYgLyogQ1NT
UGFyc2VyVG9rZW4uY3BwICovLAorCQkJCTk0NkQzNzNEMUQ2Q0UzMUEwMDc3MDg0RiAvKiBDU1NQ
YXJzZXJUb2tlbi5oICovLAorCQkJCTk0NkQzNzRCMUQ2RDA3RjUwMDc3MDg0RiAvKiBDU1NQYXJz
ZXJUb2tlblJhbmdlLmNwcCAqLywKKwkJCQk5NDZEMzc0QzFENkQwN0Y1MDA3NzA4NEYgLyogQ1NT
UGFyc2VyVG9rZW5SYW5nZS5oICovLAogCQkJCTk0NkQzNzJCMUQ2Q0IyOEIwMDc3MDg0RiAvKiBD
U1NQYXJzZXJWYWx1ZXMuY3BwICovLAogCQkJCTk0NkQzNzJDMUQ2Q0IyOEIwMDc3MDg0RiAvKiBD
U1NQYXJzZXJWYWx1ZXMuaCAqLywKKwkJCQk5NDZEMzc0MTFENkNGNjMyMDA3NzA4NEYgLyogQ1NT
UHJvcGVydHlQYXJzZXIuY3BwICovLAorCQkJCTk0NkQzNzQyMUQ2Q0Y2MzIwMDc3MDg0RiAvKiBD
U1NQcm9wZXJ0eVBhcnNlci5oICovLAorCQkJCTk0OUM3NzAyMUQ2RTM5MzUwMEMwREU0RiAvKiBD
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwICovLAorCQkJCTk0OUM3NzAzMUQ2RTM5MzUwMEMw
REU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaCAqLywKKwkJCQk5NDZEMzczNDFENkNE
Rjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmNwcCAqLywKKwkJCQk5NDZEMzczNzFENkNERjk4
MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmggKi8sCisJCQkJOTQ2RDM3MzUxRDZDREY5ODAwNzcw
ODRGIC8qIENTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcCAqLywKKwkJCQk5NDZEMzczODFENkNE
Rjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaCAqLywKKwkJCQk5NDZEMzcz
MjFENkNDMzcyMDA3NzA4NEYgLyogU1ZHQ1NTUGFyc2VyLmNwcCAqLywKIAkJCSk7CiAJCQluYW1l
ID0gcGFyc2VyOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIwOTQ2LDggKzIxMDAw
LDggQEAKIAkJCQlCRTZERjcxMDE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrTGlzdEN1
c3RvbS5jcHAgKi8sCiAJCQkJRkQ4QUE2M0IxNjk1MTQ4RTAwRDJFQTY4IC8qIEpTQmlxdWFkRmls
dGVyTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJODkzMURFNUExNEM0NEM0NDAwMERDOUQyIC8qIEpT
QmxvYkN1c3RvbS5jcHAgKi8sCi0JCQkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLywKIAkJCQk0NjU5RDI3MDFENkI5MDlG
MDA5NkZEODYgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0LmggKi8sCisJCQkJNDlFRUQxNEIx
MDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAq
LywKIAkJCQk3QzMzRjM1ODFCNEEwNDQ4MDA1MDJDQUYgLyogSlNDaGFyYWN0ZXJEYXRhQ3VzdG9t
LmNwcCAqLywKIAkJCQk0NkE1OEFDNDFENDZCM0ZBMDA0MzIwMzYgLyogSlNDbGllbnRSZWN0Q3Vz
dG9tLmNwcCAqLywKIAkJCQlBNTg0RkUzNzE4NjREQUMxMDA4NDNCMTAgLyogSlNDb21tYW5kTGlu
ZUFQSUhvc3RDdXN0b20uY3BwICovLApAQCAtMjIyNDAsMTMgKzIyMjk0LDEzIEBACiAJCQkJMzE2
RkUwOTIwRTZDQ0Q3RjAwQkY2MDg4IC8qIENTU0tleWZyYW1lc1J1bGUuaWRsICovLAogCQkJCUJD
NzcyRTE1MTMzMTYyQzIwMDFFQzlDRSAvKiBDU1NMaW5lQm94Q29udGFpblZhbHVlLmNwcCAqLywK
IAkJCQlCQzc3MkUxMjEzMzE2MjBDMDAxRUM5Q0UgLyogQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5o
ICovLAorCQkJCTk0NkQzNzQ3MUQ2RDA2MEMwMDc3MDg0RiAvKiBDU1NNYXJrdXAuY3BwICovLAor
CQkJCTk0NkQzNzQ4MUQ2RDA2MEMwMDc3MDg0RiAvKiBDU1NNYXJrdXAuaCAqLywKIAkJCQlBODBF
NkNEMjBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTTWVkaWFSdWxlLmNwcCAqLywKIAkJCQlBODBFNkNE
OTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTTWVkaWFSdWxlLmggKi8sCiAJCQkJODVDNTZDQTIwQUE4
OUMxMDAwRDk1NzU1IC8qIENTU01lZGlhUnVsZS5pZGwgKi8sCiAJCQkJMzE0QkUzQTIxQjMwRjZE
MTAwMTQxOTgyIC8qIENTU05hbWVkSW1hZ2VWYWx1ZS5jcHAgKi8sCiAJCQkJMzE0QkUzQTAxQjMw
RjZCNzAwMTQxOTgyIC8qIENTU05hbWVkSW1hZ2VWYWx1ZS5oICovLAotCQkJCUY5OEZGRjQyMTFB
MjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmNwcCAqLywKLQkJCQlGOThGRkY0MzExQTI2NzYy
MDBGNTQ4RTggLyogQ1NTT01VdGlscy5oICovLAogCQkJCUE4MEU2Q0NCMEExOTg5Q0EwMDdGQjhD
NSAvKiBDU1NQYWdlUnVsZS5jcHAgKi8sCiAJCQkJQTgwRTZDRDYwQTE5ODlDQTAwN0ZCOEM1IC8q
IENTU1BhZ2VSdWxlLmggKi8sCiAJCQkJODVDNTZDQTYwQUE4OUQ1RjAwRDk1NzU1IC8qIENTU1Bh
Z2VSdWxlLmlkbCAqLywKQEAgLTIzMTUzLDggKzIzMjA3LDYgQEAKIAkJCQlGQUJFNzJFRTEwNTlD
MUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oICovLAogCQkJCTBCQ0Y4M0VGMTA1OUMxRUIw
MEQ5OTlERCAvKiBNYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwICovLAogCQkJCTBCQ0Y4M0YwMTA1
OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxGcmFjdGlvbkVsZW1lbnQuaCAqLywKLQkJCQlGQUJFNzJF
RjEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAgKi8sCi0J
CQkJRkFCRTcyRjAxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQu
aCAqLywKIAkJCQlGQUJFNzJGMTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MTWF0aEVsZW1lbnQu
Y3BwICovLAogCQkJCUZBQkU3MkYyMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxNYXRoRWxlbWVu
dC5oICovLAogCQkJCUMzRTYxQzY1M0E2NDgwN0E4M0U3NkZCOCAvKiBNYXRoTUxNZW5jbG9zZUVs
ZW1lbnQuY3BwICovLApAQCAtMjMxNjUsNiArMjMyMTcsMTAgQEAKIAkJCQlGQTY1NEE2QTExMDhB
QkVEMDAyNjE2RjEgLyogTWF0aE1MT3BlcmF0b3JFbGVtZW50LmggKi8sCiAJCQkJQjU5Q0E1OUFG
MTcwRDhGQUE1QjhDQUJFIC8qIE1hdGhNTFBhZGRlZEVsZW1lbnQuY3BwICovLAogCQkJCUI1OUNB
ODQ5RDQxRTZGNjVEODExOThCQyAvKiBNYXRoTUxQYWRkZWRFbGVtZW50LmggKi8sCisJCQkJRkFC
RTcyRUYxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwICov
LAorCQkJCUZBQkU3MkYwMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxQcmVzZW50YXRpb25FbGVt
ZW50LmggKi8sCisJCQkJRkE3NjVBNjkxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFJvd0VsZW1l
bnQuY3BwICovLAorCQkJCUZBNzY1QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxSb3dFbGVt
ZW50LmggKi8sCiAJCQkJQjU5Q0E1OUFGMTcwRDhGQUE1QjhDOUFEIC8qIE1hdGhNTFNjcmlwdHNF
bGVtZW50LmNwcCAqLywKIAkJCQlCNTlDQTg0OUQ0MUU2RjY1RDgxMTk3QUIgLyogTWF0aE1MU2Ny
aXB0c0VsZW1lbnQuaCAqLywKIAkJCQlGNzVBMDU5QUYxNzBEOEZBQTVCOENBQkUgLyogTWF0aE1M
U2VsZWN0RWxlbWVudC5jcHAgKi8sCkBAIC0yMzE3Myw4ICsyMzIyOSw2IEBACiAJCQkJNEZBNjVB
NkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxlbWVudC5oICovLAogCQkJCUZBNjU0
QTY5MTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUb2tlbkVsZW1lbnQuY3BwICovLAogCQkJCUZB
NjU0QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUb2tlbkVsZW1lbnQuaCAqLywKLQkJCQlG
QTc2NUE2OTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MUm93RWxlbWVudC5jcHAgKi8sCi0JCQkJ
RkE3NjVBNkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFJvd0VsZW1lbnQuaCAqLywKIAkJCQlG
QTY1NEE2OTExMDhBQkVEMDAyNjI2RjEgLyogTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAgKi8s
CiAJCQkJRkE2NTRBNkExMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQu
aCAqLywKIAkJCQlGQUJFNzJGMzEwNTlDMUVCMDBEOTk5REQgLyogbWF0aHRhZ3MuaW4gKi8sCkBA
IC0yMzUzNiw4ICsyMzU5MCw2IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQk1MTA1OEFE
RTFENjc5MkMxMDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJNTEwNThBREMxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTcxNEVBRDFDRjY1OTUxMDA0NzIzQzQgLyogR0NPYnNlcnZhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDE3REE2REExMzczNEU2RTAwN0M1N0ZCIC8qIEludGVybmFscy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCRjdFRTAxNEM5MTc1QTAwMTQ0ODlEIC8qIEludGVybmFs
U2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLApAQCAtMjM1NTMsNiArMjM2MDUsOCBAQAogCQkJCUNE
QzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBNb2NrQ0RNLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
MUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTA1OEFEQzFENjc5MkMxMDA5QTUzOEMgLyog
TW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMDU4QURFMUQ2NzkyQzEwMDlBNTM4
QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDZGM0U5MTFD
MUVDQjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQky
RDk3RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBQTVGM0I4RDE2Q0MzM0QxMDA0NTVFQjAgLyogUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplck1vY2suaCBpbiBIZWFkZXJzICovLApAQCAtMjM2ODQsNyArMjM3MzgsNiBAQAog
CQkJCUJFRjI5RUVCMTcxNUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0RFM0E4NTQxN0Y1RkNFNjAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2
YXRlQVZGLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREUzQTg1ODE3RjYwMjA0MDBDNUJFMjAgLyog
QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTA1OEFFMjFE
NjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0Q1NEE3NjMxODBGOUY3MDAwQjA3NkM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0Q2QTRGODFCRjIzMDdEMDAxNzQxNDYg
LyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQz
MTYwOEIxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywK
QEAgLTIzOTY1LDcgKzI0MDE4LDYgQEAKIAkJCQkzMUJDNzQyRTFBQUZGNDVDMDA2QjQzNDAgLyog
Q1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDQUU5
RjkxMDE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkJENkFGODgxNUVGMjVDOTAwOEI3MTEwIC8qIENTU0Jhc2ljU2hhcGVzLmggaW4g
SGVhZGVycyAqLywKLQkJCQk1MTA1OEFFMDFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUxNkE4NEZBMTRDODVDQ0MwMDI5NzdERiAvKiBDU1NCb3Jk
ZXJJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyNzRCMkYxNDBFQkVCMjAwRUFERkE2IC8q
IENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlBRTJEOEYx
MzRFRTUwQzAwNzI5MjBBIC8qIENTU0NhbGN1bGF0aW9uVmFsdWUuaCBpbiBIZWFkZXJzICovLApA
QCAtMjQwMDUsMTYgKzI0MDU3LDI3IEBACiAJCQkJMzEyODhFNzMwRTMwMDVENjAwMzYxOUFFIC8q
IENTU0tleWZyYW1lUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEyODhFNzUwRTMwMDVENjAw
MzYxOUFFIC8qIENTU0tleWZyYW1lc1J1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzcyRTEz
MTMzMTYyMEMwMDFFQzlDRSAvKiBDU1NMaW5lQm94Q29udGFpblZhbHVlLmggaW4gSGVhZGVycyAq
LywKKwkJCQk5NDZEMzc0QTFENkQwNjI4MDA3NzA4NEYgLyogQ1NTTWFya3VwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBODBFNkQwMzBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTTWVkaWFSdWxlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkzMTRCRTNBMTFCMzBGNkI3MDAxNDE5ODIgLyogQ1NTTmFtZWRJbWFn
ZVZhbHVlLmggaW4gSGVhZGVycyAqLywKLQkJCQlGOThGRkY0NTExQTI2NzYyMDBGNTQ4RTggLyog
Q1NTT01VdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMDAwQTE5ODlDQTAwN0ZCOEM1
IC8qIENTU1BhZ2VSdWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZEMzcyRTFENkNCMjk0MDA3
NzA4NEYgLyogQ1NTUGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDlDNzcwMTFENkUxRDk4
MDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZE
Mzc0NDFENkNGN0IyMDA3NzA4NEYgLyogQ1NTUGFyc2VySWRpb21zLmggaW4gSGVhZGVycyAqLywK
KwkJCQk5NDZEMzcyRjFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyTW9kZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJOTQ5Qzc3MEIxRDZFNDlFRDAwQzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDlDNzcwOTFENkU0OTg3MDBDMERFNEYgLyogQ1NTUGFy
c2VyT2JzZXJ2ZXJXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZEMzc0MDFENkNFM0My
MDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW4uaCBpbiBIZWFkZXJzICovLAorCQkJCTk0NkQzNzRF
MUQ2RDA4QUEwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJhbmdlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk5NDZEMzczMTFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NzdCMzg2MzEyMjg4M0U5MDBCODFGRjggLyogQ1NTUHJlbG9hZFNjYW5u
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0U2MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQ
cmltaXRpdmVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFRDhBQzMwQ0M0OUJFMDAwQkZD
NTU3IC8qIENTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
MEU2Q0ZGMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzhEMDJCQzYxNTRBMThERjAwQjYyRDA1IC8qIENTU1Byb3BlcnR5QW5pbWF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk2NTY1ODBGNDA5RDEyQjIwMDAwRTYxRDcgLyogQ1NTUHJvcGVydHlO
YW1lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTQ2RDM3NDYxRDZEMDFENDAwNzcwODRGIC8qIENT
U1Byb3BlcnR5UGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDlDNzcwNTFENkUzOUVBMDBD
MERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
MkUzRDhERjEyMkVBMEQxMDAzQUU1QkMgLyogQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5MzYyNjQwQjBERTExMzdEMDA5RDVBMDAgLyogQ1NTUmVmbGVjdGlvbkRp
cmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1QTEyRTAwREMwNDE0ODAwQzlBRkFEIC8q
IENTU1JlZmxlY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDAzMCw2ICsyNDA5Myw4IEBA
CiAJCQkJQThFQTgwMDcwQTE5NTE2RTAwQThFRjVGIC8qIENTU1N0eWxlU2hlZXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZDNTREMDU3MTZBNzY3MzEwMDU3NUU0RCAvKiBDU1NTdXBwb3J0c1J1bGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDODBDOTg4MENEMjk0RUUwMEEwQjdCMyAvKiBDU1NUaW1p
bmdGdW5jdGlvblZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZEMzczQTFENkNERkMwMDA3
NzA4NEYgLyogQ1NTVG9rZW5pemVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZEMzczQzFENkNE
RkMwMDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaCBpbiBIZWFkZXJzICovLAog
CQkJCTlBQjFGMzgwMThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODgyREEyMzE1OTM4NDhEMDAwMTE1RUQgLyogQ1NTVG9T
dHlsZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzcxRjUzRTkwRDI3MDRGOTAwRUNFMEQ1IC8q
IENTU1VuaWNvZGVSYW5nZVZhbHVlLmggaW4gSGVhZGVycyAqLywKQEAgLTI0NzQ5LDYgKzI0ODE0
LDcgQEAKIAkJCQk2NURGMzIzQzA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNQYXR0ZXJuLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzIzQzA5RDFERTY1MDAxQkUzMjUgLyogSlNDYW52YXNQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFRUQxNDMxMDUxOTY5NDAwMDk5RkFCIC8qIEpT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY1OUQyNzExRDZC
OTBBNTAwOTZGRDg2IC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDlFRUQxNDUxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Y5QjdBMTBCQTYwMzI2MDA4NTQwNjQgLyogSlND
REFUQVNlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUZEQTE1RUEyMTJCMDNFRTEwMDNBNTgz
QSAvKiBKU0NoYW5uZWxNZXJnZXJOb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTI0OTc5LDcgKzI1
MDQ1LDYgQEAKIAkJCQlGRDIzQTEyNjEzRjVGQTU5MDBGNjcwMDEgLyogSlNNZWRpYUVsZW1lbnRB
dWRpb1NvdXJjZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYxNDE5MENENjgyNjkwMEZB
REE3NSAvKiBKU01lZGlhRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDM0MzOUI3MEMwRDNE
OEQwMDVGNEQ3QSAvKiBKU01lZGlhTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDY1OUQyNzEx
RDZCOTBBNTAwOTZGRDg2IC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTNENDM3QTMxRDU3QjdFMjAwQUI4NUVBIC8qIEpTTWVkaWFMaXN0Q3VzdG9tLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlEM0E5NEE0NzEyMkRDNDBGMDBBMzdCQkMgLyogSlNNZWRpYVF1
ZXJ5TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M1MzQzRkQxN0I3NEI2MzAwNDIzMkYwIC8q
IEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTE4Niw3ICsy
NTI1MSw2IEBACiAJCQkJQjJGQTNEQjUwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREI3MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NW
R1BhdGhTZWcuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREI5MEFCNzVBNkYwMDBFNUFDNCAv
KiBKU1NWR1BhdGhTZWdBcmNBYnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTk0NkQzNzJFMUQ2Q0Iy
OTQwMDc3MDg0RiAvKiBDU1NQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREJCMEFC
NzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdBcmNSZWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyRkEzREJEMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdDbG9zZVBhdGguaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyRkEzREJGMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdD
dXJ2ZXRvQ3ViaWNBYnMuaCBpbiBIZWFkZXJzICovLApAQCAtMjUzNTksNyArMjU0MjMsNiBAQAog
CQkJCUU0RTM5QUZCMTMzMEVGQTgwMDNBQjI3NCAvKiBMZWdhY3lUaWxlTGF5ZXJQb29sLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTJERDhGNTBEOTFFNkFGMDAwRjg5RUUgLyogTGVnYWN5V2ViQXJj
aGl2ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFNjVCRUIwRUFDREYxNjAwN0U0NTMzIC8qIExl
bmd0aC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTQ2RDM3MkYxRDZDQjI5NDAwNzcwODRGIC8qIENT
U1BhcnNlck1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkY2NDkxMEVBRDE1QzIwMEMxRDZG
NyAvKiBMZW5ndGhCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUU1QkE3RDYzMTUxNDM3Q0EwMEZF
MUUzRiAvKiBMZW5ndGhGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODcxNjcwMUM4
NjlEODMwMDRGRjBERSAvKiBMZW5ndGhQb2ludC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTQwNiwx
NCArMjU0NjksMTQgQEAKIAkJCQlGQUJFNzJGNTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDRBMjhBQUMxMkRGQjhBQzAwQUU5MjNCIC8qIE1h
dGhNTEVsZW1lbnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQkNGODNGNzEwNTlDMUVC
MDBEOTk5REQgLyogTWF0aE1MRnJhY3Rpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlG
QUJFNzJGNzEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkFCRTcyRjkxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTE1hdGhF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NEEyOEFBRjEyREZCOEJGMDBBRTkyM0IgLyog
TWF0aE1MTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZBNjU0QTZDMTEwOEFCRUQwMDI2MTZG
MSAvKiBNYXRoTUxPcGVyYXRvckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUZBQkU3MkY3
MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGQTc2NUE2QzExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MUm93RWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNEZBNjVBNkMxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNw
YWNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5MTc2RTAxMkRBMjVFMTdCQUY4MEEy
IC8qIE1hdGhNTFN0eWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQTY1NEE2QzExMDhBQkVEMDAy
NjE1RTAgLyogTWF0aE1MVG9rZW5FbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlGQTc2NUE2
QzExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MUm93RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkE2NTRBNkMxMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTQzOTA0NkVBMTJEQTI1RTgxMkFGODBBQyAvKiBNYXRoT3BlcmF0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RDVEQzJDMEY0MjNBNzMwMDhGMjBGRCAvKiBNYXRy
aXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTUzNCw2ICsyNTU5
Nyw4IEBACiAJCQkJNTJGMTA4NjYxNjJCNkRBODAwOUFDODFFIC8qIE1peGVkQ29udGVudENoZWNr
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMTI1MjQ5MUExNkMzQkMwMDg2NDQ4MCAvKiBNb2Jp
bGVHZXN0YWx0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYyQjAxMTE4MjA1NDA2MDBGMkI0
MjQgLyogTW9ja0JveC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwNThBRTAxRDY3QzIyOTAwOUE1
MzhDIC8qIE1vY2tHYW1lcGFkLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTA1OEFFMjFENjdDMjI5
MDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUVB
M0Q2REYxQzg1OUQ3RjAwMzAwQkJCIC8qIE1vY2tNZWRpYUVuZHBvaW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlDREYyQjAxMzE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhUGxheWVyTWVkaWFT
b3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjJCMDE1MTgyMDU0MDYwMEYyQjQyNCAvKiBN
b2NrTWVkaWFTb3VyY2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTI2NTM5LDcgKzI2NjA0
LDYgQEAKIAkJCQkwODEzQTRFQTEyODQxMzI2MDA5OTI1MTEgLyogU1ZHU3RhdGljUHJvcGVydHlU
ZWFyT2ZmLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FBOTBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHU3RvcEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUFDMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdTdHJpbmdMaXN0LmggaW4gSGVhZGVycyAqLywKLQkJCQk5NDZEMzczMTFENkNC
Mjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIy
N0FCODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3R5bGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjIyN0FCQjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU1ZHRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjIyMjdBQkUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N3aXRjaEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtMjcyNzIsNyArMjczMzYsNiBAQAogCQkJCTQxN0RBNkQ5MTM3
MzRFNkUwMDdDNTdGQiAvKiBJbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE3OUYw
REExQjk3NzRGRTAwRUQwQTI3IC8qIEludGVybmFscy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE3
QkY3RURGMTRDOTE3NUEwMDE0NDg5RCAvKiBJbnRlcm5hbFNldHRpbmdzLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzRTI5RTVFMTY3QThBMTkwMDU4NkQzRCAvKiBJbnRl
cm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNzE0RUIwMUNG
NjY1Q0UwMDQ3MjNDNCAvKiBKU0dDT2JzZXJ2YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDE3REE3MUQxMzczNURGQTAwN0M1N0ZCIC8qIEpTSW50ZXJuYWxzLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMjcyODIsMTIgKzI3MzQ1LDEzIEBACiAJCQkJQ0Q1MzkzRDMxNzVFMDE4NjAwQzA3MTIz
IC8qIEpTTWVtb3J5SW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTlBRUEyMjFBQUE4MDhB
MDBCNTJCMjUgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUExRTVCMzFGMUFBRDFEQTQwMDZFQkVGQiAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTEwNThBREIxRDY3OTJDMTAwOUE1
MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJENDE1MERFMUMxRjg2
OEMwMDBBM0JBMiAvKiBKU01vY2tQYWdlT3ZlcmxheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
QkY1MTIxQzE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0RDMjZCNDAxNjBBOENDNjAwMjY3NTdCIC8qIE1vY2tDRE0uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTFCRjZCODIxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50Rmls
dGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExQjVCMjlFMUFBQTg0NkUwMDhCNjA0MiAvKiBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMDU4QURC
MUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
MTA1OEFERDFENjc5MkMxMDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyRDZGM0U5MDFDMUVDQjI3MDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTdGMDQ3MTlERDQxM0MwMDFFRTlDMyAvKiBNb2Nr
UGFnZU92ZXJsYXlDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUE1RjNCOEYxNkNDNEIz
OTAwNDU1RUIwIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMjc2NzMsMTUgKzI3NzM3LDIzIEBACiAJCQkJMzEyODhFNzIwRTMwMDVENjAwMzYx
OUFFIC8qIENTU0tleWZyYW1lUnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTI4OEU3NDBF
MzAwNUQ2MDAzNjE5QUUgLyogQ1NTS2V5ZnJhbWVzUnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzc3MkUxNjEzMzE2MkMyMDAxRUM5Q0UgLyogQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk5NDZEMzc0OTFENkQwNjI4MDA3NzA4NEYgLyogQ1NTTWFya3Vw
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU2Q0ZDMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NN
ZWRpYVJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE0QkUzQTMxQjMwRjZEMTAwMTQxOTgy
IC8qIENTU05hbWVkSW1hZ2VWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGOThGRkY0NDEx
QTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBF
NkNGNTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUGFnZVJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJOTQ2RDM3MkQxRDZDQjI5NDAwNzcwODRGIC8qIENTU1BhcnNlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk5NDlDNzcwMDFENkUxRDk4MDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTk0OUM3NzA4MUQ2RTQ5ODcwMEMwREU0RiAvKiBDU1NQYXJz
ZXJPYnNlcnZlcldyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTQ2RDM3M0YxRDZDRTND
MjAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0NkQz
NzREMUQ2RDA4QTYwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJhbmdlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTk0NkQzNzMwMUQ2Q0IyOTQwMDc3MDg0RiAvKiBDU1NQYXJzZXJWYWx1ZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3QjM4NjIxMjI4ODNFOTAwQjgxRkY4IC8qIENTU1ByZWxv
YWRTY2FubmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU2RDA1MEExOTg5Q0EwMDdGQjhD
NSAvKiBDU1NQcmltaXRpdmVWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBFNkNGNzBB
MTk4OUNBMDA3RkI4QzUgLyogQ1NTUHJvcGVydHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzhE
MDJCQzUxNTRBMThERjAwQjYyRDA1IC8qIENTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBQkE3NkNBMTFEMjBFNTAwMDRDMjAxQyAvKiBDU1NQcm9wZXJ0eU5hbWVz
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0NkQzNzQ1MUQ2RDAxRDQwMDc3MDg0RiAvKiBDU1NQ
cm9wZXJ0eVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NDlDNzcwNDFENkUzOUVBMDBD
MERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTgyRTNEOERFMTIyRUEwRDEwMDNBRTVCQyAvKiBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkM1QTEyREYwREMwNDE0ODAwQzlBRkFEIC8qIENTU1JlZmxlY3RW
YWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzdEOEZGMzFCRDFBNDc5MDBGRkU1NDAgLyog
Q1NTUmV2ZXJ0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzY5NSw2ICsyNzc2Nyw4IEBA
CiAJCQkJQThFQTgwMDgwQTE5NTE2RTAwQThFRjVGIC8qIENTU1N0eWxlU2hlZXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkQ2Nzc3MzkxOTVDQUZCQTAwNzJFMEQzIC8qIENTU1N1cHBvcnRzUnVs
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzgwQzk4NzBDRDI5NEVFMDBBMEI3QjMgLyogQ1NT
VGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NDZEMzczOTFENkNE
RkMwMDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0NkQz
NzNCMUQ2Q0RGQzAwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5QUIxRjM4MTE4RTI0ODlBMDA1MzQ3NDMgLyogQ1NTVG9MZW5ndGhDb252
ZXJzaW9uRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODgyREEyMDE1OTM4NDZBMDAwMTE1
RUQgLyogQ1NTVG9TdHlsZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzFGNTNFQTBEMjcw
NEY5MDBFQ0UwRDUgLyogQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0yODM2Nyw2ICsyODQ0MSw3IEBACiAJCQkJOTc1Q0EyQTExMzAzNjc5RDAwRTk5QUQ5IC8qIEpT
Q3J5cHRvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTdBOEYwMTgxODU0MjUwMDlGODIxRCAv
KiBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFDNjU3
MTIxODE1RjlERDAwMjU2Q0REIC8qIEpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3Q0VGMjYxOTFENkE5MzE3MDBCRTkwNUQgLyogSlNDcnlwdG9DdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE1N0E4RTAxODE3MzMxQzAwOUY4MjFEIC8qIEpT
Q3J5cHRvS2V5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTdBOEU4MTgxODRDNjcwMDlGODIx
RCAvKiBKU0NyeXB0b0tleUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUY4MEI4RDE4
MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
Mjg2ODQsNyArMjg3NTksNiBAQAogCQkJCTFBNzUwRDhEMEE5MEU1MjEwMDBGRjIxNSAvKiBKU05v
ZGVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTc1MERENDBBOTBFNzI5MDAwRkYy
MTUgLyogSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNEOUMy
QzIwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
OTQ2RDM3MzAxRDZDQjI5NDAwNzcwODRGIC8qIENTU1BhcnNlclZhbHVlcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQ0Q5QzI2NTBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlTGlzdEN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzkxQTM4RjFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2Rl
T3JTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzM1MDNDQTMxMDE3OUFENzAwM0I0N0Ux
IC8qIEpTTm90aWZpY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkxMDEsMTkgKzI5MTc1
LDE5IEBACiAJCQkJRkFCRTcyRjQxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkFCRTcyRkQxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTEVs
ZW1lbnRGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBCQ0Y4M0Y2MTA1OUMxRUIwMEQ5
OTlERCAvKiBNYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkFC
RTcyRjYxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRkFCRTcyRjgxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTE1hdGhF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA1RDkxM0NFRUFCMkE2MDUzNDIxOEFDRiAv
KiBNYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkFCRTcyRkUx
MDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE2
RUEyNENFRUFCMkE2MDUzNDIxOEFDRiAvKiBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRkE2NTRBNkIxMTA4QUJFRDAwMjYxNkYxIC8qIE1hdGhNTE9wZXJh
dG9yRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTlDQTM5MENFRDY2QzMyNTVGNzJD
NTkgLyogTWF0aE1MUGFkZGVkRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGQUJFNzJG
NjEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlGQTc2NUE2QjExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MUm93RWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTlDQTM5MENFRDY2QzMyNTVGNzJCNDggLyogTWF0
aE1MU2NyaXB0c0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVENDgzOTBDRUQ2NkMz
MjU1RjcyQzU5IC8qIE1hdGhNTFNlbGVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NEZBNjVBNkIxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0MzkxNzZERjEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkE2NTRBNkIxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRv
a2VuRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGQTc2NUE2QjExMDhBQkVEMDAyNjE1
RTAgLyogTWF0aE1MUm93RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGQTY1NEE2QjEx
MDhBQkVEMDAyNjI2RjEgLyogTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0MzkwNDZFOTEyREEyNUU4MTJBRjgwQUMgLyogTWF0aE9wZXJhdG9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTQ5RDVEQzJCMEY0MjNBNzMwMDhGMjBGRCAvKiBNYXRyaXgzRFRyYW5z
Zm9ybU9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5MjE1LDYgKzI5Mjg5LDggQEAK
IAkJCQlDNTNEMzkzNDFDOTc4QTQ1MDA3RjNBRTkgLyogTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTJGMTA4NjUxNjJCNkRBNDAwOUFDODFFIC8qIE1peGVkQ29u
dGVudENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RGMkIwMTAxODIwNTQwNjAwRjJC
NDI0IC8qIE1vY2tCb3guY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEwNThBREYxRDY3QzIyOTAw
OUE1MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMDU4QUUxMUQ2
N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTVFQTNENkUwMUM4NTlEODQwMDMwMEJCQiAvKiBNb2NrTWVkaWFFbmRwb2ludC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDREYyQjAxMjE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RGMkIwMTQxODIwNTQwNjAw
RjJCNDI0IC8qIE1vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
OTI1Nyw3ICsyOTMzMyw2IEBACiAJCQkJNDQzRjA0MjcwRTc1QzhGQjAwN0U1NDA3IC8qIE5ldHdv
cmtTdGF0ZU5vdGlmaWVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3RkE2NDkwRERBM0NC
QTAwMjhGOEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyTWFjLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTVDM0M4NTZEMUQ1QTdBREUwMDg4QjlFQyAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb24uY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJNTEwNThBREYxRDY3QzIyOTAwOUE1MzhDIC8qIE1vY2tHYW1l
cGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxM0VGMzQ5MTY4NTBDNDcwMDM0QzgzRiAvKiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNjkzOTcy
NjFBNEE1RkJEMDBFODM0OUQgLyogTkZBLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2NzcyNjAw
MUE1QjNBRDkwMDNDMjRERCAvKiBORkFUb0RGQS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5Mjkx
LDcgKzI5MzY2LDYgQEAKIAkJCQlGREE5MzI1RDE2NzAzQjJBMDA4OTgyREMgLyogT2ZmbGluZUF1
ZGlvQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREEzRTk1QjEzNEE0OUVGMDA4RDRC
NUEgLyogT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyRDNEQTY0MEQwMDZDRDYwMEVGNkYzQSAvKiBPcGVuVHlwZUNHLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTUxMDU4QUUxMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUIyRDNEQTY0MEQwMDZDRDYwMEVGNkYyNyAvKiBPcGVuVHlw
ZU1hdGhEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERTdGQzQ0MTgxOTA0QjEwMDJCQkI3
NyAvKiBPcmRlckl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTAwMTQ2MjhBMTAzQ0Qx
REUwMDBCMjBEQiAvKiBPcmlnaW5BY2Nlc3NFbnRyeS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5
MzUwLDcgKzI5NDI0LDYgQEAKIAkJCQkwRjQzQzg1RDE4OUUxMENGMDAwMTlBRTIgLyogUGVyZm9y
bWFuY2VUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1ODFGQjQxNTIwRjkzQjAwM0E3
QTc1IC8qIFBlcmlvZGljV2F2ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUQ1REMyRDBGNDIz
QTczMDA4RjIwRkQgLyogUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJOTQ2RDM3MzMxRDZDQzQyQjAwNzcwODRGIC8qIFNWR0NTU1BhcnNlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlEMEZGMkE1RDExRjhDNDVBMDA3RTc0RTAgLyogUGluZ0xvYWRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDdEMzM0MzFDN0ExMjNGMDAwNDEyOTMgLyogUGl4
ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkRGNDVBNzFCRDFD
NkZEMDBFNEZBOEMgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI5NzY5LDcgKzI5ODQyLDYgQEAKIAkJCQk5MzMwOUUxNTA5OUU2NDkyMDA1NkU1ODEgLyogU3Bs
aXRUZXh0Tm9kZUNvbnRhaW5pbmdFbGVtZW50Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBMUUxMTU0ODEzMDE1QzVEMDA1NEFDOEMgLyogU3BvdExpZ2h0U291cmNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3QkM2QTNFMTUwNUYwODEwMDFCNzRBQyAvKiBTUUxFeGNlcHRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJN0NFRjI2MTkxRDZBOTMxNzAwQkU5MDVEIC8qIEpTQ3J5cHRv
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkU2RTdBMENDNTU2RDUwMDRBMjA2MiAv
KiBTUUxpdGVBdXRob3JpemVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMjI0NjQ5MENDOThE
REIwMEMwNTI0MCAvKiBTUUxpdGVEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RTQ3
NEUyMDEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMjk4ODQsNiArMjk5NTYsNyBAQAogCQkJCUIyMjI3OUExMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdDb2xvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlBNDBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjIyMjdCMDUwRDAwQkZGMTAwNzFCNzgyIC8qIFNWR0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NDZEMzczMzFENkNDNDJC
MDA3NzA4NEYgLyogU1ZHQ1NTUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUE3
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdDdXJzb3JFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUIyMjI3OUFEMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdEZWZzRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCMjIyNzlCMDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRGVzY0VsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDA4Niw3ICszMDE1OSw2IEBACiAJCQkJN0FBM0E2OTkx
OTRBNjRFNzAwMUNCRDI0IC8qIFRpbGVDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFGNzJCRjBBMTg3RkQ0NDkwMDA5QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJ
T1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FBM0E2QTMxOTRCNUMyMjAwMUNCRDI0IC8qIFRp
bGVDb3ZlcmFnZU1hcC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5NDZEMzcyRDFENkNCMjk0MDA3
NzA4NEYgLyogQ1NTUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBQTNBNjlCMTk0QTY0
RTcwMDFDQkQyNCAvKiBUaWxlR3JpZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTg3NzBGMjEy
NDJDNTM1MDAyMjI2QkEgLyogVGlsaW5nRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNTVC
M0REQjEyNTFGMTJEMDAzRUYyNjkgLyogVGltZUlucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcAkocmV2aXNpb24gMjA0OTc4KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIs
OSArNjIsOSBAQAogI2luY2x1ZGUgIkNTU0tleWZyYW1lUnVsZS5jcHAiCiAjaW5jbHVkZSAiQ1NT
S2V5ZnJhbWVzUnVsZS5jcHAiCiAjaW5jbHVkZSAiQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5jcHAi
CisjaW5jbHVkZSAiQ1NTTWFya3VwLmNwcCIKICNpbmNsdWRlICJDU1NNZWRpYVJ1bGUuY3BwIgog
I2luY2x1ZGUgIkNTU05hbWVkSW1hZ2VWYWx1ZS5jcHAiCi0jaW5jbHVkZSAiQ1NTT01VdGlscy5j
cHAiCiAjaW5jbHVkZSAiQ1NTUGFnZVJ1bGUuY3BwIgogI2luY2x1ZGUgIkNTU1BhcnNlci5jcHAi
CiAjaW5jbHVkZSAiQ1NTUGFyc2VyVmFsdWVzLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NNYXJrdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNYXJr
dXAuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNYXJrdXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDAzIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgQWxs
YW4gU2FuZGZlbGQgSmVuc2VuIChrZGVAY2FyZXdvbGYuY29tKQorICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBOaWNob2xh
cyBTaGFua3MgPHdlYmtpdEBuaWNrc2hhbmtzLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBF
cmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNo
IE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxl
LmNvbS8pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9y
YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJDU1NNYXJrdXAuaCIKKworI2luY2x1ZGUgIkNTU1BhcnNlcklkaW9tcy5oIgorI2luY2x1ZGUg
PHd0Zi9IZXhOdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgaW5saW5lIGJvb2wg
aXNDU1NUb2tlbml6ZXJJZGVudGlmaWVyKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBlbmQgPSBjaGFy
YWN0ZXJzICsgbGVuZ3RoOworCisgICAgLy8gLT8KKyAgICBpZiAoY2hhcmFjdGVycyAhPSBlbmQg
JiYgY2hhcmFjdGVyc1swXSA9PSAnLScpCisgICAgICAgICsrY2hhcmFjdGVyczsKKworICAgIC8v
IHtubXN0YXJ0fQorICAgIGlmIChjaGFyYWN0ZXJzID09IGVuZCB8fCAhaXNOYW1lU3RhcnRDb2Rl
UG9pbnQoY2hhcmFjdGVyc1swXSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICArK2NoYXJh
Y3RlcnM7CisKKyAgICAvLyB7bm1jaGFyfSoKKyAgICBmb3IgKDsgY2hhcmFjdGVycyAhPSBlbmQ7
ICsrY2hhcmFjdGVycykgeworICAgICAgICBpZiAoIWlzTmFtZUNvZGVQb2ludChjaGFyYWN0ZXJz
WzBdKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworLy8gImlkZW50IiBmcm9tIHRoZSBDU1MgdG9rZW5pemVyLCBtaW51cyBiYWNrc2xh
c2gtZXNjYXBlIHNlcXVlbmNlcworc3RhdGljIGJvb2wgaXNDU1NUb2tlbml6ZXJJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5s
ZW5ndGgoKTsKKworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gaXNDU1NUb2tlbml6ZXJJZGVu
dGlmaWVyKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpOworICAgIHJldHVybiBpc0NTU1Rv
a2VuaXplcklkZW50aWZpZXIoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgpOworfQorCitz
dGF0aWMgdm9pZCBzZXJpYWxpemVDaGFyYWN0ZXIoVUNoYXIzMiBjLCBTdHJpbmdCdWlsZGVyJiBh
cHBlbmRUbykKK3sKKyAgICBhcHBlbmRUby5hcHBlbmQoJ1xcJyk7CisgICAgYXBwZW5kVG8uYXBw
ZW5kKGMpOworfQorCitzdGF0aWMgdm9pZCBzZXJpYWxpemVDaGFyYWN0ZXJBc0NvZGVQb2ludChV
Q2hhcjMyIGMsIFN0cmluZ0J1aWxkZXImIGFwcGVuZFRvKQoreworICAgIGFwcGVuZFRvLmFwcGVu
ZCgnXFwnKTsKKyAgICBhcHBlbmRVbnNpZ25lZEFzSGV4KGMsIGFwcGVuZFRvLCBMb3dlcmNhc2Up
OworICAgIGFwcGVuZFRvLmFwcGVuZCgnICcpOworfQorCit2b2lkIHNlcmlhbGl6ZUlkZW50aWZp
ZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBTdHJpbmdCdWlsZGVyJiBhcHBlbmRUbywgYm9v
bCBza2lwU3RhcnRDaGVja3MpCit7CisgICAgYm9vbCBpc0ZpcnN0ID0gIXNraXBTdGFydENoZWNr
czsKKyAgICBib29sIGlzU2Vjb25kID0gZmFsc2U7CisgICAgYm9vbCBpc0ZpcnN0Q2hhckh5cGhl
biA9IGZhbHNlOworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICB3aGlsZSAoaW5kZXggPCBp
ZGVudGlmaWVyLmxlbmd0aCgpKSB7CisgICAgICAgIFVDaGFyMzIgYyA9IGlkZW50aWZpZXIuY2hh
cmFjdGVyU3RhcnRpbmdBdChpbmRleCk7CisgICAgICAgIGlmICghYykgeworICAgICAgICAgICAg
Ly8gQ2hlY2sgZm9yIGxvbmUgc3Vycm9nYXRlIHdoaWNoIGNoYXJhY3RlclN0YXJ0aW5nQXQgZG9l
cyBub3QgcmV0dXJuLgorICAgICAgICAgICAgYyA9IGlkZW50aWZpZXJbaW5kZXhdOworICAgICAg
ICB9CisKKyAgICAgICAgaW5kZXggKz0gVTE2X0xFTkdUSChjKTsKKworICAgICAgICBpZiAoIWMp
CisgICAgICAgICAgICBhcHBlbmRUby5hcHBlbmQoMHhmZmZkKTsKKyAgICAgICAgZWxzZSBpZiAo
YyA8PSAweDFmIHx8IGMgPT0gMHg3ZiB8fCAoMHgzMCA8PSBjICYmIGMgPD0gMHgzOSAmJiAoaXNG
aXJzdCB8fCAoaXNTZWNvbmQgJiYgaXNGaXJzdENoYXJIeXBoZW4pKSkpCisgICAgICAgICAgICBz
ZXJpYWxpemVDaGFyYWN0ZXJBc0NvZGVQb2ludChjLCBhcHBlbmRUbyk7CisgICAgICAgIGVsc2Ug
aWYgKGMgPT0gMHgyZCAmJiBpc0ZpcnN0ICYmIGluZGV4ID09IGlkZW50aWZpZXIubGVuZ3RoKCkp
CisgICAgICAgICAgICBzZXJpYWxpemVDaGFyYWN0ZXIoYywgYXBwZW5kVG8pOworICAgICAgICBl
bHNlIGlmICgweDgwIDw9IGMgfHwgYyA9PSAweDJkIHx8IGMgPT0gMHg1ZiB8fCAoMHgzMCA8PSBj
ICYmIGMgPD0gMHgzOSkgfHwgKDB4NDEgPD0gYyAmJiBjIDw9IDB4NWEpIHx8ICgweDYxIDw9IGMg
JiYgYyA8PSAweDdhKSkKKyAgICAgICAgICAgIGFwcGVuZFRvLmFwcGVuZChjKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgc2VyaWFsaXplQ2hhcmFjdGVyKGMsIGFwcGVuZFRvKTsKKworICAg
ICAgICBpZiAoaXNGaXJzdCkgeworICAgICAgICAgICAgaXNGaXJzdCA9IGZhbHNlOworICAgICAg
ICAgICAgaXNTZWNvbmQgPSB0cnVlOworICAgICAgICAgICAgaXNGaXJzdENoYXJIeXBoZW4gPSAo
YyA9PSAweDJkKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc1NlY29uZCkKKyAgICAgICAgICAgIGlz
U2Vjb25kID0gZmFsc2U7CisgICAgfQorfQorCit2b2lkIHNlcmlhbGl6ZVN0cmluZyhjb25zdCBT
dHJpbmcmIHN0cmluZywgU3RyaW5nQnVpbGRlciYgYXBwZW5kVG8pCit7CisgICAgYXBwZW5kVG8u
YXBwZW5kKCdcIicpOworCisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIHdoaWxlIChpbmRl
eCA8IHN0cmluZy5sZW5ndGgoKSkgeworICAgICAgICBVQ2hhcjMyIGMgPSBzdHJpbmcuY2hhcmFj
dGVyU3RhcnRpbmdBdChpbmRleCk7CisgICAgICAgIGluZGV4ICs9IFUxNl9MRU5HVEgoYyk7CisK
KyAgICAgICAgaWYgKGMgPD0gMHgxZiB8fCBjID09IDB4N2YpCisgICAgICAgICAgICBzZXJpYWxp
emVDaGFyYWN0ZXJBc0NvZGVQb2ludChjLCBhcHBlbmRUbyk7CisgICAgICAgIGVsc2UgaWYgKGMg
PT0gMHgyMiB8fCBjID09IDB4NWMpCisgICAgICAgICAgICBzZXJpYWxpemVDaGFyYWN0ZXIoYywg
YXBwZW5kVG8pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcHBlbmRUby5hcHBlbmQoYyk7
CisgICAgfQorCisgICAgYXBwZW5kVG8uYXBwZW5kKCdcIicpOworfQorCitTdHJpbmcgc2VyaWFs
aXplU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKKyAgICBzZXJpYWxpemVTdHJpbmcoc3RyaW5nLCBidWlsZGVyKTsKKyAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOworfQorCitTdHJpbmcgc2VyaWFsaXplVVJJKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQoreworICAgIHJldHVybiAidXJsKCIgKyBzZXJpYWxpemVTdHJpbmcoc3RyaW5n
KSArICIpIjsKK30KKworU3RyaW5nIHNlcmlhbGl6ZUZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCit7CisgICAgcmV0dXJuIGlzQ1NTVG9rZW5pemVySWRlbnRpZmllcihzdHJpbmcpID8g
c3RyaW5nIDogc2VyaWFsaXplU3RyaW5nKHN0cmluZyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNYXJrdXAuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWFya3VwLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0NTU01hcmt1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlk
ZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOSAtIDIwMTAgIFRvcmNo
IE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBD
U1NNYXJrdXBfaAorI2RlZmluZSBDU1NNYXJrdXBfaAorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKKy8vIEhlbHBlciBmdW5jdGlvbnMgZm9yIGNvbnZlcnRpbmcgZnJvbSBDU1NW
YWx1ZXMgdG8gdGV4dC4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBDb21tb24gc2VyaWFs
aXppbmcgbWV0aG9kcy4gU2VlOiBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3NvbS8jY29tbW9u
LXNlcmlhbGl6aW5nLWlkaW9tcwordm9pZCBzZXJpYWxpemVJZGVudGlmaWVyKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgU3RyaW5nQnVpbGRlciYgYXBwZW5kVG8sIGJvb2wgc2tpcFN0YXJ0Q2hl
Y2tzID0gZmFsc2UpOwordm9pZCBzZXJpYWxpemVTdHJpbmcoY29uc3QgU3RyaW5nJiwgU3RyaW5n
QnVpbGRlciYgYXBwZW5kVG8pOworU3RyaW5nIHNlcmlhbGl6ZVN0cmluZyhjb25zdCBTdHJpbmcm
KTsKK1N0cmluZyBzZXJpYWxpemVVUkkoY29uc3QgU3RyaW5nJik7CitTdHJpbmcgc2VyaWFsaXpl
Rm9udEZhbWlseShjb25zdCBTdHJpbmcmKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gQ1NTTWFya3VwX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NPTVV0aWxz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTT01VdGlscy5jcHAJKHJl
dmlzaW9uIDIwNDk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NPTVV0aWxzLmNwcAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDEwNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkNTU09NVXRpbHMuaCIKLQotI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBz
ZXJpYWxpemVDaGFyYWN0ZXIoVUNoYXIzMiBjLCBTdHJpbmdCdWlsZGVyJiBhcHBlbmRUbykKLXsK
LSAgICBhcHBlbmRUby5hcHBlbmQoJ1xcJyk7Ci0gICAgYXBwZW5kVG8uYXBwZW5kKGMpOwotfQot
Ci12b2lkIHNlcmlhbGl6ZUNoYXJhY3RlckFzQ29kZVBvaW50KFVDaGFyMzIgYywgU3RyaW5nQnVp
bGRlciYgYXBwZW5kVG8pCi17Ci0gICAgYXBwZW5kVG8uYXBwZW5kKCdcXCcpOwotICAgIGFwcGVu
ZFVuc2lnbmVkQXNIZXgoYywgYXBwZW5kVG8sIExvd2VyY2FzZSk7Ci0gICAgYXBwZW5kVG8uYXBw
ZW5kKCcgJyk7Ci19Ci0KLXZvaWQgc2VyaWFsaXplSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIFN0cmluZ0J1aWxkZXImIGFwcGVuZFRvKQotewotICAgIGJvb2wgaXNGaXJzdCA9
IHRydWU7Ci0gICAgYm9vbCBpc1NlY29uZCA9IGZhbHNlOwotICAgIGJvb2wgaXNGaXJzdENoYXJI
eXBoZW4gPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IDA7Ci0gICAgd2hpbGUgKGluZGV4
IDwgaWRlbnRpZmllci5sZW5ndGgoKSkgewotICAgICAgICBVQ2hhcjMyIGMgPSBpZGVudGlmaWVy
LmNoYXJhY3RlclN0YXJ0aW5nQXQoaW5kZXgpOwotICAgICAgICBpZiAoIWMpIHsKLSAgICAgICAg
ICAgIC8vIENoZWNrIGZvciBsb25lIHN1cnJvZ2F0ZSB3aGljaCBjaGFyYWN0ZXJTdGFydGluZ0F0
IGRvZXMgbm90IHJldHVybi4KLSAgICAgICAgICAgIGMgPSBpZGVudGlmaWVyW2luZGV4XTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGluZGV4ICs9IFUxNl9MRU5HVEgoYyk7Ci0KLSAgICAgICAgaWYg
KCFjKQotICAgICAgICAgICAgYXBwZW5kVG8uYXBwZW5kKDB4ZmZmZCk7Ci0gICAgICAgIGVsc2Ug
aWYgKGMgPD0gMHgxZiB8fCBjID09IDB4N2YgfHwgKDB4MzAgPD0gYyAmJiBjIDw9IDB4MzkgJiYg
KGlzRmlyc3QgfHwgKGlzU2Vjb25kICYmIGlzRmlyc3RDaGFySHlwaGVuKSkpKQotICAgICAgICAg
ICAgc2VyaWFsaXplQ2hhcmFjdGVyQXNDb2RlUG9pbnQoYywgYXBwZW5kVG8pOwotICAgICAgICBl
bHNlIGlmIChjID09IDB4MmQgJiYgaXNGaXJzdCAmJiBpbmRleCA9PSBpZGVudGlmaWVyLmxlbmd0
aCgpKQotICAgICAgICAgICAgc2VyaWFsaXplQ2hhcmFjdGVyKGMsIGFwcGVuZFRvKTsKLSAgICAg
ICAgZWxzZSBpZiAoMHg4MCA8PSBjIHx8IGMgPT0gMHgyZCB8fCBjID09IDB4NWYgfHwgKDB4MzAg
PD0gYyAmJiBjIDw9IDB4MzkpIHx8ICgweDQxIDw9IGMgJiYgYyA8PSAweDVhKSB8fCAoMHg2MSA8
PSBjICYmIGMgPD0gMHg3YSkpCi0gICAgICAgICAgICBhcHBlbmRUby5hcHBlbmQoYyk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHNlcmlhbGl6ZUNoYXJhY3RlcihjLCBhcHBlbmRUbyk7Ci0K
LSAgICAgICAgaWYgKGlzRmlyc3QpIHsKLSAgICAgICAgICAgIGlzRmlyc3QgPSBmYWxzZTsKLSAg
ICAgICAgICAgIGlzU2Vjb25kID0gdHJ1ZTsKLSAgICAgICAgICAgIGlzRmlyc3RDaGFySHlwaGVu
ID0gKGMgPT0gMHgyZCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNTZWNvbmQpCi0gICAgICAgICAg
ICBpc1NlY29uZCA9IGZhbHNlOwotICAgIH0KLX0KLQotdm9pZCBzZXJpYWxpemVTdHJpbmcoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIFN0cmluZ0J1aWxkZXImIGFwcGVuZFRvKQotewotICAgIGFwcGVu
ZFRvLmFwcGVuZCgnXCInKTsKLQotICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKLSAgICB3aGlsZSAo
aW5kZXggPCBzdHJpbmcubGVuZ3RoKCkpIHsKLSAgICAgICAgVUNoYXIzMiBjID0gc3RyaW5nLmNo
YXJhY3RlclN0YXJ0aW5nQXQoaW5kZXgpOwotICAgICAgICBpbmRleCArPSBVMTZfTEVOR1RIKGMp
OwotICAgICAgICBpZiAoYyA8PSAweDFmKQotICAgICAgICAgICAgc2VyaWFsaXplQ2hhcmFjdGVy
QXNDb2RlUG9pbnQoYywgYXBwZW5kVG8pOwotICAgICAgICBlbHNlIGlmIChjID09IDB4MjIgfHwg
YyA9PSAweDVjKQotICAgICAgICAgICAgc2VyaWFsaXplQ2hhcmFjdGVyKGMsIGFwcGVuZFRvKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXBwZW5kVG8uYXBwZW5kKGMpOwotICAgIH0KLQot
ICAgIGFwcGVuZFRvLmFwcGVuZCgnXCInKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoK
UHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvY3NzL0NTU09NVXRpbHMuY3BwCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U09NVXRpbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTT01VdGlscy5o
CShyZXZpc2lvbiAyMDQ5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTT01VdGlscy5oCShu
b25leGlzdGVudCkKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8dW5p
Y29kZS91bWFjaGluZS5oPgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLS8vIFV0aWxpdGll
cyBmb3IgQ1NTT00gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nzb20vCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotLy8gQ29tbW9uIHNlcmlhbGl6aW5nIG1ldGhvZHMuIFNlZTogaHR0cDovL2Rl
di53My5vcmcvY3Nzd2cvY3Nzb20vI2NvbW1vbi1zZXJpYWxpemluZy1pZGlvbXMKLXZvaWQgc2Vy
aWFsaXplQ2hhcmFjdGVyKFVDaGFyMzIsIFN0cmluZ0J1aWxkZXImKTsKLXZvaWQgc2VyaWFsaXpl
Q2hhcmFjdGVyQXNDb2RlUG9pbnQoVUNoYXIzMiwgU3RyaW5nQnVpbGRlciYpOwotdm9pZCBzZXJp
YWxpemVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgU3RyaW5nQnVpbGRlciYp
Owotdm9pZCBzZXJpYWxpemVTdHJpbmcoY29uc3QgU3RyaW5nJiwgU3RyaW5nQnVpbGRlciYpOwot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTT01VdGlscy5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQoj
IyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCShyZXZpc2lvbiAyMDQ5NzgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKIAot
I2luY2x1ZGUgIkNTU09NVXRpbHMuaCIKKyNpbmNsdWRlICJDU1NNYXJrdXAuaCIKICNpbmNsdWRl
ICJDU1NTZWxlY3Rvckxpc3QuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJT
ZWxlY3RvclBzZXVkb1R5cGVNYXAuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NO
YW1lc3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NOYW1l
c3BhY2UuY3BwCShyZXZpc2lvbiAyMDQ5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NT
TmFtZXNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkRPTUNTU05hbWVzcGFjZS5oIgogCi0jaW5jbHVkZSAiQ1NT
T01VdGlscy5oIgorI2luY2x1ZGUgIkNTU01hcmt1cC5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5o
IgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFz
dFBhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Bh
cnNlckZhc3RQYXRocy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEx
NyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6Cisv
LworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJGYXN0UGF0aHMuaCIKKworLy8g
RklYTUUtTkVXUEFSU0VSOiAjaW5jbHVkZSAiQ1NTQ29sb3JWYWx1ZS5oIgorI2luY2x1ZGUgIkNT
U0Z1bmN0aW9uVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NJbmhlcml0ZWRWYWx1ZS5oIgorI2luY2x1
ZGUgIkNTU0luaXRpYWxWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1BhcnNlcklkaW9tcy5oIgorI2lu
Y2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlQYXJzZXIu
aCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oIgorLy8gRklYTUUtTkVXUEFSU0VSOiAjaW5jbHVkZSAiU3R5bGVDb2xvci5o
IgorI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTaG9ydGhhbmQuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisvKiBGSVhNRS1ORVdQQVJTRVI6IFR1cm4gb2ZmIGZvciBub3cuCisgCitzdGF0aWMg
aW5saW5lIGJvb2wgaXNTaW1wbGVMZW5ndGhQcm9wZXJ0eUlEKENTU1Byb3BlcnR5SUQgcHJvcGVy
dHlJZCwgYm9vbCYgYWNjZXB0c05lZ2F0aXZlTnVtYmVycykKK3sKKyAgICBzd2l0Y2ggKHByb3Bl
cnR5SWQpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFNpemU6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUdyaWRDb2x1bW5HYXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRSb3dHYXA6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUhlaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2lkdGg6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eU1pbkhlaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWluV2lkdGg6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b206CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVBhZGRpbmdMZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQ6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVBhZGRpbmdUb3A6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2lj
YWxXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TG9naWNhbEhlaWdodDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNaW5Mb2dpY2FsSGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRk
aW5nQWZ0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmU6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdFbmQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFBhZGRpbmdTdGFydDoKKyAgLy8gIGNhc2UgQ1NTUHJvcGVydHlTaGFwZU1hcmdpbjoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5UjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Ung6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVJ5OgorICAgICAgICBhY2NlcHRzTmVnYXRpdmVOdW1iZXJzID0gZmFsc2U7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3R0b206CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUN4OgorICAgIGNhc2UgQ1NTUHJvcGVydHlDeToKKyAgICBjYXNlIENTU1By
b3BlcnR5TGVmdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlNYXJnaW5MZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5SaWdodDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luVG9wOgorIC8vICAgY2FzZSBDU1NQcm9wZXJ0eU1v
dGlvbk9mZnNldDoKKyAgICBjYXNlIENTU1Byb3BlcnR5UmlnaHQ6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRvcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXI6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFyZ2luRW5kOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5TdGFydDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5WDoKKyAgICBjYXNlIENTU1Byb3BlcnR5WToKKyAgICAgICAgYWNj
ZXB0c05lZ2F0aXZlTnVtYmVycyA9IHRydWU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGlubGluZSBib29sIHBhcnNlU2ltcGxlTGVuZ3Ro
KGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlcyYgdW5pdCwgZG91YmxlJiBudW1iZXIpCit7CisgICAgaWYg
KGxlbmd0aCA+IDIgJiYgKGNoYXJhY3RlcnNbbGVuZ3RoIC0gMl0gfCAweDIwKSA9PSAncCcgJiYg
KGNoYXJhY3RlcnNbbGVuZ3RoIC0gMV0gfCAweDIwKSA9PSAneCcpIHsKKyAgICAgICAgbGVuZ3Ro
IC09IDI7CisgICAgICAgIHVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1Nf
UFg7CisgICAgfSBlbHNlIGlmIChsZW5ndGggPiAxICYmIGNoYXJhY3RlcnNbbGVuZ3RoIC0gMV0g
PT0gJyUnKSB7CisgICAgICAgIGxlbmd0aCAtPSAxOworICAgICAgICB1bml0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1BFUkNFTlRBR0U7CisgICAgfQorCisgICAgLy8gV2Ug
cmVseSBvbiBjaGFyYWN0ZXJzVG9Eb3VibGUgZm9yIHZhbGlkYXRpb24gYXMgd2VsbC4gVGhlIGZ1
bmN0aW9uCisgICAgLy8gd2lsbCBzZXQgIm9rIiB0byAiZmFsc2UiIGlmIHRoZSBlbnRpcmUgcGFz
c2VkLWluIGNoYXJhY3RlciByYW5nZSBkb2VzCisgICAgLy8gbm90IHJlcHJlc2VudCBhIGRvdWJs
ZS4KKyAgICBib29sIG9rOworICAgIG51bWJlciA9IGNoYXJhY3RlcnNUb0RvdWJsZShjaGFyYWN0
ZXJzLCBsZW5ndGgsICZvayk7CisgICAgaWYgKCFvaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIG51bWJlciA9IGNsYW1wVG88ZG91YmxlPihudW1iZXIsIC1zdGQ6Om51bWVyaWNfbGltaXRz
PGZsb2F0Pjo6bWF4KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogcGFyc2VTaW1wbGVMZW5ndGhWYWx1
ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJz
ZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgQVNTRVJUKCFzdHJpbmcuaXNFbXB0eSgpKTsK
KyAgICBib29sIGFjY2VwdHNOZWdhdGl2ZU51bWJlcnMgPSBmYWxzZTsKKworICAgIC8vIEluIEB2
aWV3cG9ydCwgd2lkdGggYW5kIGhlaWdodCBhcmUgc2hvcnRoYW5kcywgbm90IHNpbXBsZSBsZW5n
dGggdmFsdWVzLgorICAgIGlmIChpc0NTU1ZpZXdwb3J0UGFyc2luZ0VuYWJsZWRGb3JNb2RlKGNz
c1BhcnNlck1vZGUpIHx8ICFpc1NpbXBsZUxlbmd0aFByb3BlcnR5SUQocHJvcGVydHlJZCwgYWNj
ZXB0c05lZ2F0aXZlTnVtYmVycykpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgdW5z
aWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAgIGRvdWJsZSBudW1iZXI7CisgICAg
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB1bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlczo6TnVtYmVyOworCisgICAgaWYgKHN0cmluZy5pczhCaXQoKSkgeworICAgICAgICBp
ZiAoIXBhcnNlU2ltcGxlTGVuZ3RoKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgsIHVuaXQs
IG51bWJlcikpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9IGVsc2UgeworICAg
ICAgICBpZiAoIXBhcnNlU2ltcGxlTGVuZ3RoKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3Ro
LCB1bml0LCBudW1iZXIpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisg
ICAgaWYgKHVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6TnVtYmVyKSB7Cisg
ICAgICAgIGlmIChjc3NQYXJzZXJNb2RlID09IFNWR0F0dHJpYnV0ZU1vZGUpCisgICAgICAgICAg
ICB1bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6VXNlclVuaXRzOworICAgICAg
ICBlbHNlIGlmICghbnVtYmVyKQorICAgICAgICAgICAgdW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZXM6OlBpeGVsczsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgaWYgKG51bWJlciA8IDAgJiYgIWFjY2VwdHNOZWdhdGl2ZU51
bWJlcnMpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUobnVtYmVyLCB1bml0KTsKK30KKworc3RhdGljIGlubGluZSBib29sIGlz
Q29sb3JQcm9wZXJ0eUlEKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCkKK3sKKyAgICBzd2l0Y2gg
KHByb3BlcnR5SWQpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3I6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9t
Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcjoKKyAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9w
Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGw6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZs
b29kQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpZ2h0aW5nQ29sb3I6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eU91dGxpbmVDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5U3RvcENvbG9yOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckFmdGVyQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNv
bG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvcjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5
Q29sdW1uUnVsZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXND
b2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlU
ZXh0RGVjb3JhdGlvbkNvbG9yOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCisvLyBSZXR1cm5zIHRoZSBudW1iZXIg
b2YgY2hhcmFjdGVycyB3aGljaCBmb3JtIGEgdmFsaWQgZG91YmxlCisvLyBhbmQgYXJlIHRlcm1p
bmF0ZWQgYnkgdGhlIGdpdmVuIHRlcm1pbmF0b3IgY2hhcmFjdGVyCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBpbnQgY2hlY2tGb3JWYWxpZERvdWJsZShjb25zdCBD
aGFyYWN0ZXJUeXBlKiBzdHJpbmcsIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCwgY29uc3QgY2hh
ciB0ZXJtaW5hdG9yKQoreworICAgIGludCBsZW5ndGggPSBlbmQgLSBzdHJpbmc7CisgICAgaWYg
KGxlbmd0aCA8IDEpCisgICAgICAgIHJldHVybiAwOworCisgICAgYm9vbCBkZWNpbWFsTWFya1Nl
ZW4gPSBmYWxzZTsKKyAgICBpbnQgcHJvY2Vzc2VkTGVuZ3RoID0gMDsKKworICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKHN0cmluZ1tpXSA9PSB0ZXJt
aW5hdG9yKSB7CisgICAgICAgICAgICBwcm9jZXNzZWRMZW5ndGggPSBpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoc3RyaW5nW2ldKSkg
eworICAgICAgICAgICAgaWYgKCFkZWNpbWFsTWFya1NlZW4gJiYgc3RyaW5nW2ldID09ICcuJykK
KyAgICAgICAgICAgICAgICBkZWNpbWFsTWFya1NlZW4gPSB0cnVlOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorCisgICAgaWYg
KGRlY2ltYWxNYXJrU2VlbiAmJiBwcm9jZXNzZWRMZW5ndGggPT0gMSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICByZXR1cm4gcHJvY2Vzc2VkTGVuZ3RoOworfQorCisvLyBSZXR1cm5zIHRoZSBu
dW1iZXIgb2YgY2hhcmFjdGVycyBjb25zdW1lZCBmb3IgcGFyc2luZyBhIHZhbGlkIGRvdWJsZQor
Ly8gdGVybWluYXRlZCBieSB0aGUgZ2l2ZW4gdGVybWluYXRvciBjaGFyYWN0ZXIKK3RlbXBsYXRl
IDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGludCBwYXJzZURvdWJsZShjb25zdCBD
aGFyYWN0ZXJUeXBlKiBzdHJpbmcsIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCwgY29uc3QgY2hh
ciB0ZXJtaW5hdG9yLCBkb3VibGUmIHZhbHVlKQoreworICAgIGludCBsZW5ndGggPSBjaGVja0Zv
clZhbGlkRG91YmxlKHN0cmluZywgZW5kLCB0ZXJtaW5hdG9yKTsKKyAgICBpZiAoIWxlbmd0aCkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpbnQgcG9zaXRpb24gPSAwOworICAgIGRvdWJsZSBs
b2NhbFZhbHVlID0gMDsKKworICAgIC8vIFRoZSBjb25zdW1lZCBjaGFyYWN0ZXJzIGhlcmUgYXJl
IGd1YXJhbnRlZWQgdG8gYmUKKyAgICAvLyBBU0NJSSBkaWdpdHMgd2l0aCBvciB3aXRob3V0IGEg
ZGVjaW1hbCBtYXJrCisgICAgZm9yICg7IHBvc2l0aW9uIDwgbGVuZ3RoOyArK3Bvc2l0aW9uKSB7
CisgICAgICAgIGlmIChzdHJpbmdbcG9zaXRpb25dID09ICcuJykKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBsb2NhbFZhbHVlID0gbG9jYWxWYWx1ZSAqIDEwICsgc3RyaW5nW3Bvc2l0aW9u
XSAtICcwJzsKKyAgICB9CisKKyAgICBpZiAoKytwb3NpdGlvbiA9PSBsZW5ndGgpIHsKKyAgICAg
ICAgdmFsdWUgPSBsb2NhbFZhbHVlOworICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgIH0KKwor
ICAgIGRvdWJsZSBmcmFjdGlvbiA9IDA7CisgICAgZG91YmxlIHNjYWxlID0gMTsKKworICAgIGNv
bnN0IGRvdWJsZSBtYXhTY2FsZSA9IDEwMDAwMDA7CisgICAgd2hpbGUgKHBvc2l0aW9uIDwgbGVu
Z3RoICYmIHNjYWxlIDwgbWF4U2NhbGUpIHsKKyAgICAgICAgZnJhY3Rpb24gPSBmcmFjdGlvbiAq
IDEwICsgc3RyaW5nW3Bvc2l0aW9uKytdIC0gJzAnOworICAgICAgICBzY2FsZSAqPSAxMDsKKyAg
ICB9CisKKyAgICB2YWx1ZSA9IGxvY2FsVmFsdWUgKyBmcmFjdGlvbiAvIHNjYWxlOworICAgIHJl
dHVybiBsZW5ndGg7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3Rh
dGljIGJvb2wgcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjb25zdCBDaGFyYWN0ZXJUeXBlKiYg
c3RyaW5nLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBlbmQsIGNvbnN0IGNoYXIgdGVybWluYXRvciwg
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyYgZXhwZWN0LCBpbnQmIHZhbHVlKQoreworICAg
IGNvbnN0IENoYXJhY3RlclR5cGUqIGN1cnJlbnQgPSBzdHJpbmc7CisgICAgZG91YmxlIGxvY2Fs
VmFsdWUgPSAwOworICAgIGJvb2wgbmVnYXRpdmUgPSBmYWxzZTsKKyAgICB3aGlsZSAoY3VycmVu
dCAhPSBlbmQgJiYgaXNIVE1MU3BhY2U8Q2hhcmFjdGVyVHlwZT4oKmN1cnJlbnQpKQorICAgICAg
ICBjdXJyZW50Kys7CisgICAgaWYgKGN1cnJlbnQgIT0gZW5kICYmICpjdXJyZW50ID09ICctJykg
eworICAgICAgICBuZWdhdGl2ZSA9IHRydWU7CisgICAgICAgIGN1cnJlbnQrKzsKKyAgICB9Cisg
ICAgaWYgKGN1cnJlbnQgPT0gZW5kIHx8ICFpc0FTQ0lJRGlnaXQoKmN1cnJlbnQpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgd2hpbGUgKGN1cnJlbnQgIT0gZW5kICYmIGlzQVNDSUlEaWdp
dCgqY3VycmVudCkpIHsKKyAgICAgICAgZG91YmxlIG5ld1ZhbHVlID0gbG9jYWxWYWx1ZSAqIDEw
ICsgKmN1cnJlbnQrKyAtICcwJzsKKyAgICAgICAgaWYgKG5ld1ZhbHVlID49IDI1NSkgeworICAg
ICAgICAgICAgLy8gQ2xhbXAgdmFsdWVzIGF0IDI1NS4KKyAgICAgICAgICAgIGxvY2FsVmFsdWUg
PSAyNTU7CisgICAgICAgICAgICB3aGlsZSAoY3VycmVudCAhPSBlbmQgJiYgaXNBU0NJSURpZ2l0
KCpjdXJyZW50KSkKKyAgICAgICAgICAgICAgICArK2N1cnJlbnQ7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBsb2NhbFZhbHVlID0gbmV3VmFsdWU7CisgICAgfQorCisg
ICAgaWYgKGN1cnJlbnQgPT0gZW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
ZXhwZWN0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6Ok51bWJlciAmJiAoKmN1cnJl
bnQgPT0gJy4nIHx8ICpjdXJyZW50ID09ICclJykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICgqY3VycmVudCA9PSAnLicpIHsKKyAgICAgICAgLy8gV2UgYWxyZWFkeSBwYXJzZWQg
dGhlIGludGVncmFsIHBhcnQsIHRyeSB0byBwYXJzZQorICAgICAgICAvLyB0aGUgZnJhY3Rpb24g
cGFydCBvZiB0aGUgcGVyY2VudGFnZSB2YWx1ZS4KKyAgICAgICAgZG91YmxlIHBlcmNlbnRhZ2Ug
PSAwOworICAgICAgICBpbnQgbnVtQ2hhcmFjdGVyc1BhcnNlZCA9IHBhcnNlRG91YmxlKGN1cnJl
bnQsIGVuZCwgJyUnLCBwZXJjZW50YWdlKTsKKyAgICAgICAgaWYgKCFudW1DaGFyYWN0ZXJzUGFy
c2VkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjdXJyZW50ICs9IG51bUNo
YXJhY3RlcnNQYXJzZWQ7CisgICAgICAgIGlmICgqY3VycmVudCAhPSAnJScpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGxvY2FsVmFsdWUgKz0gcGVyY2VudGFnZTsKKyAgICB9
CisKKyAgICBpZiAoZXhwZWN0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OlBlcmNl
bnRhZ2UgJiYgKmN1cnJlbnQgIT0gJyUnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoKmN1cnJlbnQgPT0gJyUnKSB7CisgICAgICAgIGV4cGVjdCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZXM6OlBlcmNlbnRhZ2U7CisgICAgICAgIGxvY2FsVmFsdWUgPSBsb2NhbFZhbHVl
IC8gMTAwLjAgKiAyNTYuMDsKKyAgICAgICAgLy8gQ2xhbXAgdmFsdWVzIGF0IDI1NSBmb3IgcGVy
Y2VudGFnZXMgb3ZlciAxMDAlCisgICAgICAgIGlmIChsb2NhbFZhbHVlID4gMjU1KQorICAgICAg
ICAgICAgbG9jYWxWYWx1ZSA9IDI1NTsKKyAgICAgICAgY3VycmVudCsrOworICAgIH0gZWxzZSB7
CisgICAgICAgIGV4cGVjdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6Ok51bWJlcjsK
KyAgICB9CisKKyAgICB3aGlsZSAoY3VycmVudCAhPSBlbmQgJiYgaXNIVE1MU3BhY2U8Q2hhcmFj
dGVyVHlwZT4oKmN1cnJlbnQpKQorICAgICAgICBjdXJyZW50Kys7CisgICAgaWYgKGN1cnJlbnQg
PT0gZW5kIHx8ICpjdXJyZW50KysgIT0gdGVybWluYXRvcikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIC8vIENsYW1wIG5lZ2F0aXZlIHZhbHVlcyBhdCB6ZXJvLgorICAgIHZhbHVlID0gbmVn
YXRpdmUgPyAwIDogc3RhdGljX2Nhc3Q8aW50Pihsb2NhbFZhbHVlKTsKKyAgICBzdHJpbmcgPSBj
dXJyZW50OworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1RlbnRoQWxwaGEoY29uc3QgQ2hhcmFjdGVy
VHlwZSogc3RyaW5nLCBjb25zdCBpbnQgbGVuZ3RoKQoreworICAgIC8vICIwLlgiCisgICAgaWYg
KGxlbmd0aCA9PSAzICYmIHN0cmluZ1swXSA9PSAnMCcgJiYgc3RyaW5nWzFdID09ICcuJyAmJiBp
c0FTQ0lJRGlnaXQoc3RyaW5nWzJdKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyAi
LlgiCisgICAgaWYgKGxlbmd0aCA9PSAyICYmIHN0cmluZ1swXSA9PSAnLicgJiYgaXNBU0NJSURp
Z2l0KHN0cmluZ1sxXSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNl
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBpbmxpbmUg
Ym9vbCBwYXJzZUFscGhhVmFsdWUoY29uc3QgQ2hhcmFjdGVyVHlwZSomIHN0cmluZywgY29uc3Qg
Q2hhcmFjdGVyVHlwZSogZW5kLCBjb25zdCBjaGFyIHRlcm1pbmF0b3IsIGludCYgdmFsdWUpCit7
CisgICAgd2hpbGUgKHN0cmluZyAhPSBlbmQgJiYgaXNIVE1MU3BhY2U8Q2hhcmFjdGVyVHlwZT4o
KnN0cmluZykpCisgICAgICAgIHN0cmluZysrOworCisgICAgYm9vbCBuZWdhdGl2ZSA9IGZhbHNl
OworCisgICAgaWYgKHN0cmluZyAhPSBlbmQgJiYgKnN0cmluZyA9PSAnLScpIHsKKyAgICAgICAg
bmVnYXRpdmUgPSB0cnVlOworICAgICAgICBzdHJpbmcrKzsKKyAgICB9CisKKyAgICB2YWx1ZSA9
IDA7CisKKyAgICBpbnQgbGVuZ3RoID0gZW5kIC0gc3RyaW5nOworICAgIGlmIChsZW5ndGggPCAy
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc3RyaW5nW2xlbmd0aCAtIDFdICE9
IHRlcm1pbmF0b3IgfHwgIWlzQVNDSUlEaWdpdChzdHJpbmdbbGVuZ3RoIC0gMl0pKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc3RyaW5nWzBdICE9ICcwJyAmJiBzdHJpbmdbMF0g
IT0gJzEnICYmIHN0cmluZ1swXSAhPSAnLicpIHsKKyAgICAgICAgaWYgKGNoZWNrRm9yVmFsaWRE
b3VibGUoc3RyaW5nLCBlbmQsIHRlcm1pbmF0b3IpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IG5l
Z2F0aXZlID8gMCA6IDI1NTsKKyAgICAgICAgICAgIHN0cmluZyA9IGVuZDsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBpZiAobGVuZ3RoID09IDIgJiYgc3RyaW5nWzBdICE9ICcuJykgeworICAgICAgICB2YWx1
ZSA9ICFuZWdhdGl2ZSAmJiBzdHJpbmdbMF0gPT0gJzEnID8gMjU1IDogMDsKKyAgICAgICAgc3Ry
aW5nID0gZW5kOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoaXNUZW50
aEFscGhhKHN0cmluZywgbGVuZ3RoIC0gMSkpIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCB0
ZW50aEFscGhhVmFsdWVzW10gPSB7IDAsIDI1LCA1MSwgNzYsIDEwMiwgMTI3LCAxNTMsIDE3OSwg
MjA0LCAyMzAgfTsKKyAgICAgICAgdmFsdWUgPSBuZWdhdGl2ZSA/IDAgOiB0ZW50aEFscGhhVmFs
dWVzW3N0cmluZ1tsZW5ndGggLSAyXSAtICcwJ107CisgICAgICAgIHN0cmluZyA9IGVuZDsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgZG91YmxlIGFscGhhID0gMDsKKyAgICBp
ZiAoIXBhcnNlRG91YmxlKHN0cmluZywgZW5kLCB0ZXJtaW5hdG9yLCBhbHBoYSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB2YWx1ZSA9IG5lZ2F0aXZlID8gMCA6IHN0YXRpY19jYXN0PGlu
dD4oYWxwaGEgKiBuZXh0YWZ0ZXIoMjU2LjAsIDAuMCkpOworICAgIHN0cmluZyA9IGVuZDsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citz
dGF0aWMgaW5saW5lIGJvb2wgbWlnaHRCZVJHQkEoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlmIChsZW5ndGggPCA1KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGNoYXJhY3RlcnNbNF0gPT0gJygnCisgICAgICAgICYm
IGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoY2hhcmFjdGVyc1swXSwgJ3InKQorICAgICAgICAm
JiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKGNoYXJhY3RlcnNbMV0sICdnJykKKyAgICAgICAg
JiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChjaGFyYWN0ZXJzWzJdLCAnYicpCisgICAgICAg
ICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoY2hhcmFjdGVyc1szXSwgJ2EnKTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgaW5saW5lIGJvb2wgbWln
aHRCZVJHQihjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgp
Cit7CisgICAgaWYgKGxlbmd0aCA8IDQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gY2hhcmFjdGVyc1szXSA9PSAnKCcKKyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NF
cXVhbChjaGFyYWN0ZXJzWzBdLCAncicpCisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNz
RXF1YWwoY2hhcmFjdGVyc1sxXSwgJ2cnKQorICAgICAgICAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVz
c0VxdWFsKGNoYXJhY3RlcnNbMl0sICdiJyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgorc3RhdGljIGJvb2wgZmFzdFBhcnNlQ29sb3JJbnRlcm5hbChSR0JBMzImIHJn
YiwgY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBib29s
IHF1aXJrc01vZGUpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyBleHBlY3Qg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpVbmtub3duOworCisgICAgaWYgKGxlbmd0
aCA+PSA0ICYmIGNoYXJhY3RlcnNbMF0gPT0gJyMnKQorICAgICAgICByZXR1cm4gQ29sb3I6OnBh
cnNlSGV4Q29sb3IoY2hhcmFjdGVycyArIDEsIGxlbmd0aCAtIDEsIHJnYik7CisKKyAgICBpZiAo
cXVpcmtzTW9kZSAmJiAobGVuZ3RoID09IDMgfHwgbGVuZ3RoID09IDYpKSB7CisgICAgICAgIGlm
IChDb2xvcjo6cGFyc2VIZXhDb2xvcihjaGFyYWN0ZXJzLCBsZW5ndGgsIHJnYikpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBUcnkgcmdiYSgpIHN5bnRheC4KKyAg
ICBpZiAobWlnaHRCZVJHQkEoY2hhcmFjdGVycywgbGVuZ3RoKSkgeworICAgICAgICBjb25zdCBD
aGFyYWN0ZXJUeXBlKiBjdXJyZW50ID0gY2hhcmFjdGVycyArIDU7CisgICAgICAgIGNvbnN0IENo
YXJhY3RlclR5cGUqIGVuZCA9IGNoYXJhY3RlcnMgKyBsZW5ndGg7CisgICAgICAgIGludCByZWQ7
CisgICAgICAgIGludCBncmVlbjsKKyAgICAgICAgaW50IGJsdWU7CisgICAgICAgIGludCBhbHBo
YTsKKworICAgICAgICBpZiAoIXBhcnNlQ29sb3JJbnRPclBlcmNlbnRhZ2UoY3VycmVudCwgZW5k
LCAnLCcsIGV4cGVjdCwgcmVkKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
aWYgKCFwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlKGN1cnJlbnQsIGVuZCwgJywnLCBleHBlY3Qs
IGdyZWVuKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFwYXJzZUNv
bG9ySW50T3JQZXJjZW50YWdlKGN1cnJlbnQsIGVuZCwgJywnLCBleHBlY3QsIGJsdWUpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIXBhcnNlQWxwaGFWYWx1ZShjdXJy
ZW50LCBlbmQsICcpJywgYWxwaGEpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpZiAoY3VycmVudCAhPSBlbmQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJnYiA9IG1ha2VSR0JBKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgLy8gVHJ5IHJnYigpIHN5bnRheC4KKyAgICBpZiAobWlnaHRC
ZVJHQihjaGFyYWN0ZXJzLCBsZW5ndGgpKSB7CisgICAgICAgIGNvbnN0IENoYXJhY3RlclR5cGUq
IGN1cnJlbnQgPSBjaGFyYWN0ZXJzICsgNDsKKyAgICAgICAgY29uc3QgQ2hhcmFjdGVyVHlwZSog
ZW5kID0gY2hhcmFjdGVycyArIGxlbmd0aDsKKyAgICAgICAgaW50IHJlZDsKKyAgICAgICAgaW50
IGdyZWVuOworICAgICAgICBpbnQgYmx1ZTsKKyAgICAgICAgaWYgKCFwYXJzZUNvbG9ySW50T3JQ
ZXJjZW50YWdlKGN1cnJlbnQsIGVuZCwgJywnLCBleHBlY3QsIHJlZCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjdXJy
ZW50LCBlbmQsICcsJywgZXhwZWN0LCBncmVlbikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIGlmICghcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjdXJyZW50LCBlbmQsICcp
JywgZXhwZWN0LCBibHVlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYg
KGN1cnJlbnQgIT0gZW5kKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZ2Ig
PSBtYWtlUkdCKHJlZCwgZ3JlZW4sIGJsdWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0NTU1ZhbHVlKiBDU1NQYXJzZXJGYXN0UGF0aHM6
OnBhcnNlQ29sb3IoY29uc3QgU3RyaW5nJiBzdHJpbmcsIENTU1BhcnNlck1vZGUgcGFyc2VyTW9k
ZSkKK3sKKyAgICBBU1NFUlQoIXN0cmluZy5pc0VtcHR5KCkpOworICAgIENTU1ZhbHVlSUQgdmFs
dWVJRCA9IGNzc1ZhbHVlS2V5d29yZElEKHN0cmluZyk7CisgICAgaWYgKFN0eWxlQ29sb3I6Omlz
Q29sb3JLZXl3b3JkKHZhbHVlSUQpKSB7CisgICAgICAgIGlmICghaXNWYWx1ZUFsbG93ZWRJbk1v
ZGUodmFsdWVJRCwgcGFyc2VyTW9kZSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKHZhbHVlSUQp
OworICAgIH0KKworICAgIFJHQkEzMiBjb2xvcjsKKyAgICBib29sIHF1aXJrc01vZGUgPSBpc1F1
aXJrc01vZGVCZWhhdmlvcihwYXJzZXJNb2RlKTsKKworICAgIC8vIEZhc3QgcGF0aCBmb3IgaGV4
IGNvbG9ycyBhbmQgcmdiKCkvcmdiYSgpIGNvbG9ycworICAgIGJvb2wgcGFyc2VSZXN1bHQ7Cisg
ICAgaWYgKHN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgcGFyc2VSZXN1bHQgPSBmYXN0UGFyc2VD
b2xvckludGVybmFsKGNvbG9yLCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgp
LCBxdWlya3NNb2RlKTsKKyAgICBlbHNlCisgICAgICAgIHBhcnNlUmVzdWx0ID0gZmFzdFBhcnNl
Q29sb3JJbnRlcm5hbChjb2xvciwgc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3Ro
KCksIHF1aXJrc01vZGUpOworICAgIGlmICghcGFyc2VSZXN1bHQpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBDU1NDb2xvclZhbHVlOjpjcmVhdGUoY29sb3IpOworfQorCiti
b29sIENTU1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJZCwgQ1NTVmFsdWVJRCB2YWx1ZUlELCBDU1NQYXJzZXJNb2Rl
IHBhcnNlck1vZGUpCit7CisgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVJbnZhbGlkIHx8ICFp
c1ZhbHVlQWxsb3dlZEluTW9kZSh2YWx1ZUlELCBwYXJzZXJNb2RlKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUFsaWdubWVudEJhc2VsaW5lOgorICAgICAgICAvLyBhdXRvIHwgYmFzZWxpbmUgfCBiZWZvcmUt
ZWRnZSB8IHRleHQtYmVmb3JlLWVkZ2UgfCBtaWRkbGUgfAorICAgICAgICAvLyBjZW50cmFsIHwg
YWZ0ZXItZWRnZSB8IHRleHQtYWZ0ZXItZWRnZSB8IGlkZW9ncmFwaGljIHwgYWxwaGFiZXRpYyB8
CisgICAgICAgIC8vIGhhbmdpbmcgfCBtYXRoZW1hdGljYWwKKyAgICAgICAgcmV0dXJuIHZhbHVl
SUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBbHBoYWJldGljIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVCYXNlbGluZQorICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZU1pZGRsZSB8fCAodmFsdWVJRCA+PSBDU1NWYWx1ZUJlZm9yZUVkZ2UgJiYgdmFsdWVJRCA8
PSBDU1NWYWx1ZU1hdGhlbWF0aWNhbCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFsbDoKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOyAvLyBPbmx5IGFjY2VwdHMgY3NzLXdpZGUga2V5d29yZHMKKyAgICBj
YXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFg6IC8vIHJlcGVhdCB8IG5vLXJlcGVhdAor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WTogLy8gcmVwZWF0IHwgbm8tcmVw
ZWF0CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlUmVwZWF0IHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVOb1JlcGVhdDsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2U6
IC8vIGNvbGxhcHNlIHwgc2VwYXJhdGUKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFs
dWVDb2xsYXBzZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2VwYXJhdGU7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlclRvcFN0eWxlOiAvLyA8Ym9yZGVyLXN0eWxlPgorICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJSaWdodFN0eWxlOiAvLyBEZWZpbmVkIGFzOiBub25lIHwgaGlkZGVuIHwgZG90
dGVkIHwgZGFzaGVkIHwKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGU6IC8v
IHNvbGlkIHwgZG91YmxlIHwgZ3Jvb3ZlIHwgcmlkZ2UgfCBpbnNldCB8IG91dHNldAorICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckFmdGVyU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9y
ZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Q29sdW1uUnVsZVN0eWxlOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA+PSBDU1NWYWx1ZU5v
bmUgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZURvdWJsZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm94
U2l6aW5nOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUJvcmRlckJveCB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlQ29udGVudEJveDsKKyAgICBjYXNlIENTU1Byb3BlcnR5QnVmZmVy
ZWRSZW5kZXJpbmc6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlRHluYW1pYyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3RhdGljOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlDYXB0aW9uU2lkZTogLy8gdG9wIHwgYm90dG9tIHwgbGVmdCB8
IHJpZ2h0CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTGVmdCB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlUmlnaHQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVRvcCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlQm90dG9tOworICAgIGNhc2UgQ1NTUHJvcGVydHlDbGVhcjogLy8gbm9uZSB8IGxl
ZnQgfCByaWdodCB8IGJvdGgKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25l
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVMZWZ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSaWdodCB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlQm90aDsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q2xpcFJ1bGU6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGxSdWxlOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9
PSBDU1NWYWx1ZU5vbnplcm8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUV2ZW5vZGQ7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29s
b3JJbnRlcnBvbGF0aW9uRmlsdGVyczoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFs
dWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTUkdCIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVM
aW5lYXJSR0I7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yUmVuZGVyaW5nOgorICAgICAgICBy
ZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU9wdGlt
aXplU3BlZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU9wdGltaXplUXVhbGl0eTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5RGlyZWN0aW9uOiAvLyBsdHIgfCBydGwKKyAgICAgICAgcmV0dXJuIHZhbHVl
SUQgPT0gQ1NTVmFsdWVMdHIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJ0bDsKKyAgICBjYXNlIENT
U1Byb3BlcnR5RGlzcGxheToKKyAgICAgICAgLy8gaW5saW5lIHwgYmxvY2sgfCBsaXN0LWl0ZW0g
fCBpbmxpbmUtYmxvY2sgfCB0YWJsZSB8CisgICAgICAgIC8vIGlubGluZS10YWJsZSB8IHRhYmxl
LXJvdy1ncm91cCB8IHRhYmxlLWhlYWRlci1ncm91cCB8IHRhYmxlLWZvb3Rlci1ncm91cCB8IHRh
YmxlLXJvdyB8CisgICAgICAgIC8vIHRhYmxlLWNvbHVtbi1ncm91cCB8IHRhYmxlLWNvbHVtbiB8
IHRhYmxlLWNlbGwgfCB0YWJsZS1jYXB0aW9uIHwgLXdlYmtpdC1ib3ggfCAtd2Via2l0LWlubGlu
ZS1ib3ggfCBub25lCisgICAgICAgIC8vIGZsZXggfCBpbmxpbmUtZmxleCB8IC13ZWJraXQtZmxl
eCB8IC13ZWJraXQtaW5saW5lLWZsZXggfCBncmlkIHwgaW5saW5lLWdyaWQKKyAgICAgICAgcmV0
dXJuICh2YWx1ZUlEID49IENTU1ZhbHVlSW5saW5lICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVJbmxp
bmVGbGV4KSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0RmxleCB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlV2Via2l0SW5saW5lRmxleCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZQorICAgICAg
ICAgICAgfHwgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkg
JiYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVHcmlkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVJbmxpbmVH
cmlkKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eURvbWluYW50QmFzZWxpbmU6CisgICAgICAgIC8v
IGF1dG8gfCB1c2Utc2NyaXB0IHwgbm8tY2hhbmdlIHwgcmVzZXQtc2l6ZSB8IGlkZW9ncmFwaGlj
IHwKKyAgICAgICAgLy8gYWxwaGFiZXRpYyB8IGhhbmdpbmcgfCBtYXRoZW1hdGljYWwgfCBjZW50
cmFsIHwgbWlkZGxlIHwKKyAgICAgICAgLy8gdGV4dC1hZnRlci1lZGdlIHwgdGV4dC1iZWZvcmUt
ZWRnZQorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUFscGhhYmV0aWMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1pZGRsZQorICAgICAg
ICAgICAgfHwgKHZhbHVlSUQgPj0gQ1NTVmFsdWVVc2VTY3JpcHQgJiYgdmFsdWVJRCA8PSBDU1NW
YWx1ZVJlc2V0U2l6ZSkKKyAgICAgICAgICAgIHx8ICh2YWx1ZUlEID49IENTU1ZhbHVlQ2VudHJh
bCAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlTWF0aGVtYXRpY2FsKTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5RW1wdHlDZWxsczogLy8gc2hvdyB8IGhpZGUKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0g
Q1NTVmFsdWVTaG93IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVIaWRlOworICAgIGNhc2UgQ1NTUHJv
cGVydHlGbG9hdDogLy8gbGVmdCB8IHJpZ2h0IHwgbm9uZQorICAgICAgICByZXR1cm4gdmFsdWVJ
RCA9PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVOb25lOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3R5bGU6IC8vIG5vcm1h
bCB8IGl0YWxpYyB8IG9ibGlxdWUKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVO
b3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUl0YWxpYyB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
T2JsaXF1ZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0cmV0Y2g6IC8vIG5vcm1hbCB8IHVs
dHJhLWNvbmRlbnNlZCB8IGV4dHJhLWNvbmRlbnNlZCB8IGNvbmRlbnNlZCB8IHNlbWktY29uZGVu
c2VkIHwgc2VtaS1leHBhbmRlZCB8IGV4cGFuZGVkIHwgZXh0cmEtZXhwYW5kZWQgfCB1bHRyYS1l
eHBhbmRlZAorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCAodmFs
dWVJRCA+PSBDU1NWYWx1ZVVsdHJhQ29uZGVuc2VkICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVVbHRy
YUV4cGFuZGVkKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5SW1hZ2VSZW5kZXJpbmc6IC8vIGF1dG8g
fCBvcHRpbWl6ZUNvbnRyYXN0IHwgcGl4ZWxhdGVkCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09
IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0T3B0aW1pemVDb250cmFz
dCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUGl4ZWxhdGVkOworICAgIGNhc2UgQ1NTUHJvcGVydHlJ
c29sYXRpb246IC8vIGF1dG8gfCBpc29sYXRlCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENT
U1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlSXNvbGF0ZTsKKyAgICBjYXNlIENTU1By
b3BlcnR5TGlzdFN0eWxlUG9zaXRpb246IC8vIGluc2lkZSB8IG91dHNpZGUKKyAgICAgICAgcmV0
dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVJbnNpZGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU91dHNp
ZGU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGU6CisgICAgICAgIC8vIFNlZSBz
ZWN0aW9uIENTU19QUk9QX0xJU1RfU1RZTEVfVFlQRSBvZiBmaWxlIENTU1ZhbHVlS2V5d29yZHMu
aW4KKyAgICAgICAgLy8gZm9yIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBsaXN0LXN0eWxlLXR5cGVz
LgorICAgICAgICByZXR1cm4gKHZhbHVlSUQgPj0gQ1NTVmFsdWVEaXNjICYmIHZhbHVlSUQgPD0g
Q1NTVmFsdWVLYXRha2FuYUlyb2hhKSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5TWFza1R5cGU6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1Zh
bHVlTHVtaW5hbmNlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBbHBoYTsKKyAgICBjYXNlIENTU1By
b3BlcnR5T2JqZWN0Rml0OgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUZpbGwg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbnRhaW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvdmVy
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTY2FsZURv
d247CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZTogLy8gKDxib3JkZXItc3R5bGU+
IGV4Y2VwdCBoaWRkZW4pIHwgYXV0bworICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1
ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgKHZhbHVlSUQgPj0gQ1NTVmFsdWVJ
bnNldCAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlRG91YmxlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
T3ZlcmZsb3dBbmNob3I6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlVmlzaWJs
ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXV0bzsK
KyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dXcmFwOiAvLyBub3JtYWwgfCBicmVhay13b3Jk
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRXcmFwOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9
PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQnJlYWtXb3JkOworICAgIGNh
c2UgQ1NTUHJvcGVydHlPdmVyZmxvd1g6IC8vIHZpc2libGUgfCBoaWRkZW4gfCBzY3JvbGwgfCBh
dXRvIHwgb3ZlcmxheQorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVZpc2libGUg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhpZGRlbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2Nyb2xs
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVPdmVybGF5
OworICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1k6IC8vIHZpc2libGUgfCBoaWRkZW4gfCBz
Y3JvbGwgfCBhdXRvIHwgb3ZlcmxheSB8IC13ZWJraXQtcGFnZWQteCB8IC13ZWJraXQtcGFnZWQt
eQorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUhpZGRlbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2Nyb2xsIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVPdmVybGF5IHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVXZWJraXRQYWdlZFggfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdlYmtpdFBhZ2Vk
WTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QnJlYWtBZnRlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5
QnJlYWtCZWZvcmU6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlQXZvaWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkUGFnZSB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlUGFnZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTGVmdCB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlUmlnaHQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJlY3RvIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVWZXJzbyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXZvaWRDb2x1bW4g
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbHVtbjsKKyAgICBjYXNlIENTU1Byb3BlcnR5QnJlYWtJ
bnNpZGU6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlQXZvaWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkUGFnZSB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlQXZvaWRDb2x1bW47CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBvaW50ZXJF
dmVudHM6CisgICAgICAgIC8vIG5vbmUgfCB2aXNpYmxlUGFpbnRlZCB8IHZpc2libGVGaWxsIHwg
dmlzaWJsZVN0cm9rZSB8IHZpc2libGUgfAorICAgICAgICAvLyBwYWludGVkIHwgZmlsbCB8IHN0
cm9rZSB8IGF1dG8gfCBhbGwgfCBib3VuZGluZy1ib3gKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQg
PT0gQ1NTVmFsdWVWaXNpYmxlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVBbGwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgKHZhbHVlSUQgPj0g
Q1NTVmFsdWVWaXNpYmxlUGFpbnRlZCAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlQm91bmRpbmdCb3gp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlQb3NpdGlvbjogLy8gc3RhdGljIHwgcmVsYXRpdmUgfCBh
YnNvbHV0ZSB8IGZpeGVkIHwgc3RpY2t5CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1Zh
bHVlU3RhdGljIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSZWxhdGl2ZSB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlQWJzb2x1dGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUZpeGVkIHx8IChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpjc3NTdGlja3lQb3NpdGlvbkVuYWJsZWQoKSAmJiB2YWx1ZUlEID09IENT
U1ZhbHVlU3RpY2t5KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5UmVzaXplOiAvLyBub25lIHwgYm90
aCB8IGhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGF1dG8KKyAgICAgICAgcmV0dXJuIHZhbHVlSUQg
PT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCb3RoIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVIb3Jpem9udGFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVWZXJ0aWNhbCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlQXV0bzsKKyAgICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xsQmVoYXZpb3I6
IC8vIGF1dG8gfCBzbW9vdGgKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OmNzc29tU21vb3RoU2Nyb2xsRW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0g
Q1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTbW9vdGg7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVNoYXBlUmVuZGVyaW5nOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1
ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU9wdGltaXplU3BlZWQgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUNyaXNwRWRnZXMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUdlb21ldHJpY1ByZWNpc2lv
bjsKKyAgICBjYXNlIENTU1Byb3BlcnR5U3BlYWs6IC8vIG5vbmUgfCBub3JtYWwgfCBzcGVsbC1v
dXQgfCBkaWdpdHMgfCBsaXRlcmFsLXB1bmN0dWF0aW9uIHwgbm8tcHVuY3R1YXRpb24KKyAgICAg
ICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVO
b3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNwZWxsT3V0IHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVEaWdpdHMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUxpdGVyYWxQdW5jdHVhdGlvbiB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlTm9QdW5jdHVhdGlvbjsKKyAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tl
TGluZWpvaW46CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTWl0ZXIgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZVJvdW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCZXZlbDsKKyAgICBj
YXNlIENTU1Byb3BlcnR5U3Ryb2tlTGluZWNhcDoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0g
Q1NTVmFsdWVCdXR0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSb3VuZCB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlU3F1YXJlOworICAgIGNhc2UgQ1NTUHJvcGVydHlUYWJsZUxheW91dDogLy8gYXV0byB8
IGZpeGVkCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlRml4ZWQ7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRBbGlnbjoKKyAgICAg
ICAgcmV0dXJuICh2YWx1ZUlEID49IENTU1ZhbHVlV2Via2l0QXV0byAmJiB2YWx1ZUlEIDw9IENT
U1ZhbHVlSW50ZXJuYWxDZW50ZXIpIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlRW5kOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0QWxpZ25MYXN0Ogor
ICAgICAgICAvLyBhdXRvIHwgc3RhcnQgfCBlbmQgfCBsZWZ0IHwgcmlnaHQgfCBjZW50ZXIgfCBq
dXN0aWZ5CisgICAgICAgIHJldHVybiAodmFsdWVJRCA+PSBDU1NWYWx1ZUxlZnQgJiYgdmFsdWVJ
RCA8PSBDU1NWYWx1ZUp1c3RpZnkpIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlRW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlUZXh0QW5jaG9yOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1
ZVN0YXJ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVNaWRkbGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUVuZDsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dENvbWJpbmVVcHJpZ2h0OgorICAgICAgICBy
ZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUFsbDsK
KyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25TdHlsZToKKyAgICAgICAgLy8gc29s
aWQgfCBkb3VibGUgfCBkb3R0ZWQgfCBkYXNoZWQgfCB3YXZ5CisgICAgICAgIEFTU0VSVChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3MzVGV4dERlY29yYXRpb25zRW5hYmxlZCgpKTsKKyAgICAg
ICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVTb2xpZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
RG91YmxlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEb3R0ZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZURhc2hlZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2F2eTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
VGV4dEp1c3RpZnk6CisgICAgICAgIC8vIGF1dG8gfCBub25lIHwgaW50ZXItd29yZCB8IGRpc3Ry
aWJ1dGUKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzczNUZXh0RW5h
YmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVJbnRlcldvcmQgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZURpc3RyaWJ1dGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8g
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPcmll
bnRhdGlvbjogLy8gbWl4ZWQgfCB1cHJpZ2h0IHwgc2lkZXdheXMgfCBzaWRld2F5cy1yaWdodAor
ICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU1peGVkIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVVcHJpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTaWRld2F5cyB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlU2lkZXdheXNSaWdodDsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dE9y
aWVudGF0aW9uOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVNpZGV3YXlzIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVTaWRld2F5c1JpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVW
ZXJ0aWNhbFJpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVVcHJpZ2h0OworICAgIGNhc2UgQ1NT
UHJvcGVydHlUZXh0T3ZlcmZsb3c6IC8vIGNsaXAgfCBlbGxpcHNpcworICAgICAgICByZXR1cm4g
dmFsdWVJRCA9PSBDU1NWYWx1ZUNsaXAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVsbGlwc2lzOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nOiAvLyBhdXRvIHwgb3B0aW1pemVTcGVl
ZCB8IG9wdGltaXplTGVnaWJpbGl0eSB8IGdlb21ldHJpY1ByZWNpc2lvbgorICAgICAgICByZXR1
cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU9wdGltaXpl
U3BlZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU9wdGltaXplTGVnaWJpbGl0eSB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlR2VvbWV0cmljUHJlY2lzaW9uOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0
VHJhbnNmb3JtOiAvLyBjYXBpdGFsaXplIHwgdXBwZXJjYXNlIHwgbG93ZXJjYXNlIHwgbm9uZQor
ICAgICAgICByZXR1cm4gKHZhbHVlSUQgPj0gQ1NTVmFsdWVDYXBpdGFsaXplICYmIHZhbHVlSUQg
PD0gQ1NTVmFsdWVMb3dlcmNhc2UpIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lOworICAgIGNh
c2UgQ1NTUHJvcGVydHlVbmljb2RlQmlkaToKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NT
VmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVtYmVkCisgICAgICAgICAgICB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlQmlkaU92ZXJyaWRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJr
aXRJc29sYXRlCisgICAgICAgICAgICB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0SXNvbGF0
ZU92ZXJyaWRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRQbGFpbnRleHQKKyAgICAgICAg
ICAgIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVJc29sYXRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVJ
c29sYXRlT3ZlcnJpZGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVBsYWludGV4dDsKKyAgICBjYXNl
IENTU1Byb3BlcnR5VmVjdG9yRWZmZWN0OgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NW
YWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vblNjYWxpbmdTdHJva2U7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVZpc2liaWxpdHk6IC8vIHZpc2libGUgfCBoaWRkZW4gfCBjb2xsYXBzZQor
ICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUhpZGRlbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ29sbGFwc2U7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEFwcFJlZ2lvbjoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPj0gQ1NT
VmFsdWVEcmFnICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVOb0RyYWc7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEFwcGVhcmFuY2U6CisgICAgICAgIHJldHVybiAodmFsdWVJRCA+PSBDU1NWYWx1
ZUNoZWNrYm94ICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVUZXh0YXJlYSkgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZU5vbmU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tmYWNlVmlzaWJpbGl0eToKKyAg
ICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVIaWRkZW47CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1peEJsZW5kTW9kZToKKyAgICAgICAg
cmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU11
bHRpcGx5IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTY3JlZW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZU92ZXJsYXkKKyAgICAgICAgICAgIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEYXJrZW4gfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZUxpZ2h0ZW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbG9yRG9kZ2Ug
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbG9yQnVybgorICAgICAgICAgICAgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUhhcmRMaWdodCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU29mdExpZ2h0IHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVEaWZmZXJlbmNlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFeGNsdXNp
b24KKyAgICAgICAgICAgIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVIdWUgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZVNhdHVyYXRpb24gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbG9yIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVMdW1pbm9zaXR5OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hBbGln
bjoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVTdHJldGNoIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRW5kIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVDZW50ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJhc2VsaW5lOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3hEZWNvcmF0aW9uQnJlYWs6CisgICAgICAgIHJldHVybiB2YWx1
ZUlEID09IENTU1ZhbHVlQ2xvbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNsaWNlOworICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb246CisgICAgICAgIHJldHVybiB2YWx1ZUlE
ID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSZXZlcnNlOworICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lczoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0g
Q1NTVmFsdWVTaW5nbGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU11bHRpcGxlOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQ6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENT
U1ZhbHVlSG9yaXpvbnRhbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVmVydGljYWwgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUlubGluZUF4aXMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJsb2NrQXhpczsK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UGFjazoKKyAgICAgICAgcmV0dXJuIHZhbHVl
SUQgPT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRW5kIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVDZW50ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUp1c3RpZnk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUNvbHVtbkZpbGw6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1Zh
bHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQmFsYW5jZTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5QWxpZ25Db250ZW50OgorICAgICAgICAvLyBGSVhNRTogUGVyIENTUyBhbGlnbm1lbnQsIHRo
aXMgcHJvcGVydHkgc2hvdWxkIGFjY2VwdCBhbiBvcHRpb25hbCA8b3ZlcmZsb3ctcG9zaXRpb24+
LiBXZSBzaG91bGQgc2hhcmUgdGhpcyBwYXJzaW5nIGNvZGUgd2l0aCAnanVzdGlmeS1zZWxmJy4K
KyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVGbGV4U3RhcnQgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUZsZXhFbmQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNlbnRlciB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlU3BhY2VCZXR3ZWVuIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTcGFjZUFyb3Vu
ZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3RyZXRjaDsKKyAgICBjYXNlIENTU1Byb3BlcnR5QWxp
Z25JdGVtczoKKyAgICAgICAgLy8gRklYTUU6IFBlciBDU1MgYWxpZ25tZW50LCB0aGlzIHByb3Bl
cnR5IHNob3VsZCBhY2NlcHQgdGhlIHNhbWUgYXJndW1lbnRzIGFzICdqdXN0aWZ5LXNlbGYnIHNv
IHdlIHNob3VsZCBzaGFyZSBpdHMgcGFyc2luZyBjb2RlLgorICAgICAgICByZXR1cm4gdmFsdWVJ
RCA9PSBDU1NWYWx1ZUZsZXhTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRmxleEVuZCB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlQ2VudGVyIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCYXNlbGluZSB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlU3RyZXRjaDsKKyAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25T
ZWxmOgorICAgICAgICAvLyBGSVhNRTogUGVyIENTUyBhbGlnbm1lbnQsIHRoaXMgcHJvcGVydHkg
c2hvdWxkIGFjY2VwdCB0aGUgc2FtZSBhcmd1bWVudHMgYXMgJ2p1c3RpZnktc2VsZicgc28gd2Ug
c2hvdWxkIHNoYXJlIGl0cyBwYXJzaW5nIGNvZGUuCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09
IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRmxleFN0YXJ0IHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVGbGV4RW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUJhc2VsaW5lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdHJldGNoOworICAg
IGNhc2UgQ1NTUHJvcGVydHlGbGV4RGlyZWN0aW9uOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9
PSBDU1NWYWx1ZVJvdyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUm93UmV2ZXJzZSB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlQ29sdW1uIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2x1bW5SZXZlcnNlOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlGbGV4V3JhcDoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0g
Q1NTVmFsdWVOb3dyYXAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdyYXAgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZVdyYXBSZXZlcnNlOworICAgIGNhc2UgQ1NTUHJvcGVydHlIeXBoZW5zOgorICAgICAg
ICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5v
bmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1hbnVhbDsKKyAgICBjYXNlIENTU1Byb3BlcnR5SnVz
dGlmeUNvbnRlbnQ6CisgICAgICAgIC8vIEZJWE1FOiBQZXIgQ1NTIGFsaWdubWVudCwgdGhpcyBw
cm9wZXJ0eSBzaG91bGQgYWNjZXB0IGFuIG9wdGlvbmFsIDxvdmVyZmxvdy1wb3NpdGlvbj4uIFdl
IHNob3VsZCBzaGFyZSB0aGlzIHBhcnNpbmcgY29kZSB3aXRoICdqdXN0aWZ5LXNlbGYnLgorICAg
ICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUZsZXhTdGFydCB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlRmxleEVuZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ2VudGVyIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVTcGFjZUJldHdlZW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNwYWNlQXJvdW5kOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlGb250S2VybmluZzoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQg
PT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZU5vbmU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmc6
CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQW50aWFsaWFzZWQgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZVN1YnBpeGVsQW50aWFsaWFzZWQ7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dExpbmVCcmVhazogLy8gYXV0byB8IGxvb3NlIHwgbm9ybWFsIHwgc3RyaWN0IHwgYWZ0ZXItd2hp
dGUtc3BhY2UKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVMb29zZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVTdHJpY3QgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUFmdGVyV2hpdGVTcGFj
ZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5Ub3BDb2xsYXBzZToKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFs
dWVDb2xsYXBzZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2VwYXJhdGUgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZURpc2NhcmQ7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFByaW50Q29sb3JBZGp1
c3Q6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlRXhhY3QgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUVjb25vbXk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5n
OgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUxvZ2ljYWwgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZVZpc3VhbDsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9u
OgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUJlZm9yZSB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlQWZ0ZXI7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lOgor
ICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZUhvcml6b250YWw7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bv
c2l0aW9uOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU92ZXIgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZVVuZGVyOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJp
dHk6IC8vIGRpc2MgfCBjaXJjbGUgfCBzcXVhcmUgfCBub25lCisgICAgICAgIHJldHVybiB2YWx1
ZUlEID09IENTU1ZhbHVlRGlzYyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ2lyY2xlIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVTcXVhcmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmU7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVRyYW5zZm9ybVN0eWxlOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBD
U1NWYWx1ZUZsYXQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVByZXNlcnZlM2Q7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnOiAvLyBhdXRvIHwgbm9uZSB8IGVsZW1lbnQKKyAgICAg
ICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVO
b25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFbGVtZW50OworICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRVc2VyTW9kaWZ5OiAvLyByZWFkLW9ubHkgfCByZWFkLXdyaXRlCisgICAgICAgIHJldHVy
biB2YWx1ZUlEID09IENTU1ZhbHVlUmVhZE9ubHkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJlYWRX
cml0ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmVhZFdyaXRlUGxhaW50ZXh0T25seTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5VXNlclNlbGVjdDogLy8gYXV0byB8IG5vbmUgfCB0ZXh0IHwgYWxsCisg
ICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVGV4dCB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
QWxsOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9kZToKKyAgICAgICAgcmV0
dXJuIHZhbHVlSUQgPj0gQ1NTVmFsdWVIb3Jpem9udGFsVGIgJiYgdmFsdWVJRCA8PSBDU1NWYWx1
ZVZlcnRpY2FsTHI7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdyaXRpbmdNb2RlOgorICAgICAgICBy
ZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUhvcml6b250YWxUYgorICAgICAgICAgICAgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZVZlcnRpY2FsUmwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVZlcnRpY2Fs
THIKKyAgICAgICAgICAgIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVMclRiIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVSbFRiIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVUYlJsCisgICAgICAgICAgICB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlTHIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJsIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVUYjsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2hpdGVTcGFjZTogLy8gbm9ybWFs
IHwgcHJlIHwgbm93cmFwCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFs
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVQcmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVByZVdyYXAg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVByZUxpbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vd3Jh
cDsKKyAgICBjYXNlIENTU1Byb3BlcnR5V29yZEJyZWFrOiAvLyBub3JtYWwgfCBicmVhay1hbGwg
fCBrZWVwLWFsbCB8IGJyZWFrLXdvcmQgKHRoaXMgaXMgYSBjdXN0b20gZXh0ZW5zaW9uKQorICAg
ICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlQnJlYWtBbGwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUtlZXBBbGwgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUJyZWFrV29yZDsKKyAgICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xsU25hcFR5cGU6IC8v
IG5vbmUgfCBtYW5kYXRvcnkgfCBwcm94aW1pdHkKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmNzc1Njcm9sbFNuYXBQb2ludHNFbmFibGVkKCkpOworICAgICAgICByZXR1
cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1hbmRhdG9y
eSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUHJveGltaXR5OworICAgIGRlZmF1bHQ6CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQor
Citib29sIENTU1BhcnNlckZhc3RQYXRoczo6aXNLZXl3b3JkUHJvcGVydHlJRChDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SWQpCit7CisgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUFsaWdubWVudEJhc2VsaW5lOgorICAgIGNhc2UgQ1NTUHJvcGVydHlBbGw6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eU1peEJsZW5kTW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5SXNv
bGF0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
ckJvdHRvbVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJSaWdodFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5Qm94U2l6aW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCdWZmZXJlZFJl
bmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q2FwdGlvblNpZGU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUNsZWFyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDbGlwUnVsZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5Q29sb3JJbnRlcnBvbGF0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvcklu
dGVycG9sYXRpb25GaWx0ZXJzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvclJlbmRlcmluZzoK
KyAgICBjYXNlIENTU1Byb3BlcnR5RGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlEaXNw
bGF5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlEb21pbmFudEJhc2VsaW5lOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlFbXB0eUNlbGxzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlGaWxsUnVsZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5RmxvYXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHlsZToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0cmV0Y2g6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUh5cGhl
bnM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUltYWdlUmVuZGVyaW5nOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlMaXN0U3R5bGVQb3NpdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlw
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFza1R5cGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9i
amVjdEZpdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlPdmVyZmxvd0FuY2hvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dXcmFw
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1g6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92
ZXJmbG93WToKKyAgICBjYXNlIENTU1Byb3BlcnR5QnJlYWtBZnRlcjoKKyAgICBjYXNlIENTU1By
b3BlcnR5QnJlYWtCZWZvcmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJyZWFrSW5zaWRlOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQb3Np
dGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5UmVzaXplOgorICAgIGNhc2UgQ1NTUHJvcGVydHlT
Y3JvbGxCZWhhdmlvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5U2hhcGVSZW5kZXJpbmc6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVNwZWFrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2VMaW5lY2Fw
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2VMaW5lam9pbjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5VGFibGVMYXlvdXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRBbGlnbjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5VGV4dEFsaWduTGFzdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEFuY2hv
cjoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dENvbWJpbmVVcHJpZ2h0OgorICAgIGNhc2UgQ1NT
UHJvcGVydHlUZXh0RGVjb3JhdGlvblN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0SnVz
dGlmeToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE9yaWVudGF0aW9uOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRUZXh0T3JpZW50YXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRP
dmVyZmxvdzoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZzoKKyAgICBjYXNlIENT
U1Byb3BlcnR5VGV4dFRyYW5zZm9ybToKKyAgICBjYXNlIENTU1Byb3BlcnR5VW5pY29kZUJpZGk6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVZlY3RvckVmZmVjdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
VmlzaWJpbGl0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXBwUmVnaW9uOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNr
ZmFjZVZpc2liaWxpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5
bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyU3RhcnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94QWxp
Z246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveERlY29yYXRpb25CcmVhazoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCb3hMaW5lczoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94T3JpZW50OgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDb2x1
bW5GaWxsOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDb2x1bW5SdWxlU3R5bGU6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUZsZXhEaXJlY3Rpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsZXhXcmFwOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlGb250S2VybmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Rm9udFNtb290aGluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hcmdpblRvcENvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQcmludENvbG9y
QWRqdXN0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmluZzoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0Q29tYmluZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzUG9z
aXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0eToKKyAgICBjYXNl
IENTU1Byb3BlcnR5VHJhbnNmb3JtU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVz
ZXJEcmFnOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlVc2VyU2VsZWN0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcml0aW5n
TW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2hpdGVTcGFjZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V29yZEJyZWFrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkV3JhcDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V3JpdGluZ01vZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNjcm9sbFNuYXBUeXBl
OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5SnVzdGlmeUNvbnRl
bnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFsaWduQ29udGVudDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5QWxpZ25JdGVtczoKKyAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25TZWxmOgorICAgICAgICBy
ZXR1cm4gIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCk7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworc3RhdGljIENT
U1ZhbHVlKiBwYXJzZUtleXdvcmRWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQsIGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJzZXJNb2RlIHBhcnNlck1vZGUpCit7CisgICAgQVNTRVJU
KCFzdHJpbmcuaXNFbXB0eSgpKTsKKworICAgIGlmICghQ1NTUGFyc2VyRmFzdFBhdGhzOjppc0tl
eXdvcmRQcm9wZXJ0eUlEKHByb3BlcnR5SWQpKSB7CisgICAgICAgIC8vIEFsbCBwcm9wZXJ0aWVz
IGFjY2VwdCB0aGUgdmFsdWVzIG9mICJpbml0aWFsIiBhbmQgImluaGVyaXQiLgorICAgICAgICBp
ZiAoIWVxdWFsSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAiaW5pdGlhbCIpICYmICFlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKHN0cmluZywgImluaGVyaXQiKSkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgICAgIC8vIFBhcnNlIGluaXRpYWwvaW5oZXJpdCBzaG9ydGhhbmRzIHVz
aW5nIHRoZSBDU1NQcm9wZXJ0eVBhcnNlci4KKyAgICAgICAgaWYgKHNob3J0aGFuZEZvclByb3Bl
cnR5KHByb3BlcnR5SWQpLmxlbmd0aCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICAgICAgLy8gRGVzY3JpcHRvcnMgZG8gbm90IHN1cHBvcnQgY3NzIHdpZGUga2V5d29yZHMu
CisgICAgICAgIGlmIChDU1NQcm9wZXJ0eU1ldGFkYXRhOjppc0Rlc2NyaXB0b3JPbmx5KHByb3Bl
cnR5SWQpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgQ1NTVmFs
dWVJRCB2YWx1ZUlEID0gY3NzVmFsdWVLZXl3b3JkSUQoc3RyaW5nKTsKKworICAgIGlmICghdmFs
dWVJRCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAodmFsdWVJRCA9PSBDU1NW
YWx1ZUluaGVyaXQpCisgICAgICAgIHJldHVybiBDU1NJbmhlcml0ZWRWYWx1ZTo6Y3JlYXRlKCk7
CisgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVJbml0aWFsKQorICAgICAgICByZXR1cm4gQ1NT
SW5pdGlhbFZhbHVlOjpjcmVhdGUoKTsKKyAgICBpZiAoQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1Zh
bGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUocHJvcGVydHlJZCwgdmFsdWVJRCwgcGFyc2VyTW9k
ZSkpCisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcih2
YWx1ZUlEKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENo
YXJUeXBlPgorc3RhdGljIGJvb2wgcGFyc2VUcmFuc2Zvcm1UcmFuc2xhdGVBcmd1bWVudHMoQ2hh
clR5cGUqJiBwb3MsIENoYXJUeXBlKiBlbmQsIHVuc2lnbmVkIGV4cGVjdGVkQ291bnQsIENTU0Z1
bmN0aW9uVmFsdWUqIHRyYW5zZm9ybVZhbHVlKQoreworICAgIHdoaWxlIChleHBlY3RlZENvdW50
KSB7CisgICAgICAgIHNpemVfdCBkZWxpbWl0ZXIgPSBXVEY6OmZpbmQocG9zLCBlbmQgLSBwb3Ms
IGV4cGVjdGVkQ291bnQgPT0gMSA/ICcpJyA6ICcsJyk7CisgICAgICAgIGlmIChkZWxpbWl0ZXIg
PT0ga05vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB1bnNpZ25l
ZCBhcmd1bWVudExlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZWxpbWl0ZXIpOworICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHVuaXQgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzOjpOdW1iZXI7CisgICAgICAgIGRvdWJsZSBudW1iZXI7CisgICAgICAgIGlm
ICghcGFyc2VTaW1wbGVMZW5ndGgocG9zLCBhcmd1bWVudExlbmd0aCwgdW5pdCwgbnVtYmVyKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHVuaXQgIT0gQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlczo6UGl4ZWxzICYmIChudW1iZXIgfHwgdW5pdCAhPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpOdW1iZXIpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKCpDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKG51bWJlciwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6UGl4ZWxzKSk7CisgICAg
ICAgIHBvcyArPSBhcmd1bWVudExlbmd0aCArIDE7CisgICAgICAgIC0tZXhwZWN0ZWRDb3VudDsK
KyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlw
ZT4KK3N0YXRpYyBib29sIHBhcnNlVHJhbnNmb3JtTnVtYmVyQXJndW1lbnRzKENoYXJUeXBlKiYg
cG9zLCBDaGFyVHlwZSogZW5kLCB1bnNpZ25lZCBleHBlY3RlZENvdW50LCBDU1NGdW5jdGlvblZh
bHVlKiB0cmFuc2Zvcm1WYWx1ZSkKK3sKKyAgICB3aGlsZSAoZXhwZWN0ZWRDb3VudCkgeworICAg
ICAgICBzaXplX3QgZGVsaW1pdGVyID0gV1RGOjpmaW5kKHBvcywgZW5kIC0gcG9zLCBleHBlY3Rl
ZENvdW50ID09IDEgPyAnKScgOiAnLCcpOworICAgICAgICBpZiAoZGVsaW1pdGVyID09IGtOb3RG
b3VuZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgdW5zaWduZWQgYXJndW1l
bnRMZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVsaW1pdGVyKTsKKyAgICAgICAgYm9v
bCBvazsKKyAgICAgICAgZG91YmxlIG51bWJlciA9IGNoYXJhY3RlcnNUb0RvdWJsZShwb3MsIGFy
Z3VtZW50TGVuZ3RoLCAmb2spOworICAgICAgICBpZiAoIW9rKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKCpDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKG51bWJlciwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6TnVtYmVyKSk7
CisgICAgICAgIHBvcyArPSBhcmd1bWVudExlbmd0aCArIDE7CisgICAgICAgIC0tZXhwZWN0ZWRD
b3VudDsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBjb25zdCBpbnQga1No
b3J0ZXN0VmFsaWRUcmFuc2Zvcm1TdHJpbmdMZW5ndGggPSAxMjsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJUeXBlPgorc3RhdGljIENTU0Z1bmN0aW9uVmFsdWUqIHBhcnNlU2ltcGxlVHJhbnNm
b3JtVmFsdWUoQ2hhclR5cGUqJiBwb3MsIENoYXJUeXBlKiBlbmQpCit7CisgICAgaWYgKGVuZCAt
IHBvcyA8IGtTaG9ydGVzdFZhbGlkVHJhbnNmb3JtU3RyaW5nTGVuZ3RoKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIGNvbnN0IGJvb2wgaXNUcmFuc2xhdGUgPSB0b0FTQ0lJTG93ZXIo
cG9zWzBdKSA9PSAndCcKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1sxXSkgPT0gJ3InCisg
ICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3NbMl0pID09ICdhJworICAgICAgICAmJiB0b0FTQ0lJ
TG93ZXIocG9zWzNdKSA9PSAnbicKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1s0XSkgPT0g
J3MnCisgICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3NbNV0pID09ICdsJworICAgICAgICAmJiB0
b0FTQ0lJTG93ZXIocG9zWzZdKSA9PSAnYScKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1s3
XSkgPT0gJ3QnCisgICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3NbOF0pID09ICdlJzsKKworICAg
IGlmIChpc1RyYW5zbGF0ZSkgeworICAgICAgICBDU1NWYWx1ZUlEIHRyYW5zZm9ybVR5cGU7Cisg
ICAgICAgIHVuc2lnbmVkIGV4cGVjdGVkQXJndW1lbnRDb3VudCA9IDE7CisgICAgICAgIHVuc2ln
bmVkIGFyZ3VtZW50U3RhcnQgPSAxMTsKKyAgICAgICAgQ2hhclR5cGUgYzkgPSB0b0FTQ0lJTG93
ZXIocG9zWzldKTsKKyAgICAgICAgaWYgKGM5ID09ICd4JyAmJiBwb3NbMTBdID09ICcoJykgewor
ICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSA9IENTU1ZhbHVlVHJhbnNsYXRlWDsKKyAgICAgICAg
fSBlbHNlIGlmIChjOSA9PSAneScgJiYgcG9zWzEwXSA9PSAnKCcpIHsKKyAgICAgICAgICAgIHRy
YW5zZm9ybVR5cGUgPSBDU1NWYWx1ZVRyYW5zbGF0ZVk7CisgICAgICAgIH0gZWxzZSBpZiAoYzkg
PT0gJ3onICYmIHBvc1sxMF0gPT0gJygnKSB7CisgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlID0g
Q1NTVmFsdWVUcmFuc2xhdGVaOworICAgICAgICB9IGVsc2UgaWYgKGM5ID09ICcoJykgeworICAg
ICAgICAgICAgdHJhbnNmb3JtVHlwZSA9IENTU1ZhbHVlVHJhbnNsYXRlOworICAgICAgICAgICAg
ZXhwZWN0ZWRBcmd1bWVudENvdW50ID0gMjsKKyAgICAgICAgICAgIGFyZ3VtZW50U3RhcnQgPSAx
MDsKKyAgICAgICAgfSBlbHNlIGlmIChjOSA9PSAnMycgJiYgdG9BU0NJSUxvd2VyKHBvc1sxMF0p
ID09ICdkJyAmJiBwb3NbMTFdID09ICcoJykgeworICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSA9
IENTU1ZhbHVlVHJhbnNsYXRlM2Q7CisgICAgICAgICAgICBleHBlY3RlZEFyZ3VtZW50Q291bnQg
PSAzOworICAgICAgICAgICAgYXJndW1lbnRTdGFydCA9IDEyOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgcG9zICs9IGFy
Z3VtZW50U3RhcnQ7CisgICAgICAgIENTU0Z1bmN0aW9uVmFsdWUqIHRyYW5zZm9ybVZhbHVlID0g
Q1NTRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKHRyYW5zZm9ybVR5cGUpOworICAgICAgICBpZiAoIXBh
cnNlVHJhbnNmb3JtVHJhbnNsYXRlQXJndW1lbnRzKHBvcywgZW5kLCBleHBlY3RlZEFyZ3VtZW50
Q291bnQsIHRyYW5zZm9ybVZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICByZXR1cm4gdHJhbnNmb3JtVmFsdWU7CisgICAgfQorCisgICAgY29uc3QgYm9vbCBpc01h
dHJpeDNkID0gdG9BU0NJSUxvd2VyKHBvc1swXSkgPT0gJ20nCisgICAgICAgICYmIHRvQVNDSUlM
b3dlcihwb3NbMV0pID09ICdhJworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzJdKSA9PSAn
dCcKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1szXSkgPT0gJ3InCisgICAgICAgICYmIHRv
QVNDSUlMb3dlcihwb3NbNF0pID09ICdpJworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzVd
KSA9PSAneCcKKyAgICAgICAgJiYgcG9zWzZdID09ICczJworICAgICAgICAmJiB0b0FTQ0lJTG93
ZXIocG9zWzddKSA9PSAnZCcKKyAgICAgICAgJiYgcG9zWzhdID09ICcoJzsKKworICAgIGlmIChp
c01hdHJpeDNkKSB7CisgICAgICAgIHBvcyArPSA5OworICAgICAgICBDU1NGdW5jdGlvblZhbHVl
KiB0cmFuc2Zvcm1WYWx1ZSA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShDU1NWYWx1ZU1hdHJp
eDNkKTsKKyAgICAgICAgaWYgKCFwYXJzZVRyYW5zZm9ybU51bWJlckFyZ3VtZW50cyhwb3MsIGVu
ZCwgMTYsIHRyYW5zZm9ybVZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICByZXR1cm4gdHJhbnNmb3JtVmFsdWU7CisgICAgfQorCisgICAgY29uc3QgYm9vbCBpc1Nj
YWxlM2QgPSB0b0FTQ0lJTG93ZXIocG9zWzBdKSA9PSAncycKKyAgICAgICAgJiYgdG9BU0NJSUxv
d2VyKHBvc1sxXSkgPT0gJ2MnCisgICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3NbMl0pID09ICdh
JworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzNdKSA9PSAnbCcKKyAgICAgICAgJiYgdG9B
U0NJSUxvd2VyKHBvc1s0XSkgPT0gJ2UnCisgICAgICAgICYmIHBvc1s1XSA9PSAnMycKKyAgICAg
ICAgJiYgdG9BU0NJSUxvd2VyKHBvc1s2XSkgPT0gJ2QnCisgICAgICAgICYmIHBvc1s3XSA9PSAn
KCc7CisKKyAgICBpZiAoaXNTY2FsZTNkKSB7CisgICAgICAgIHBvcyArPSA4OworICAgICAgICBD
U1NGdW5jdGlvblZhbHVlKiB0cmFuc2Zvcm1WYWx1ZSA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0
ZShDU1NWYWx1ZVNjYWxlM2QpOworICAgICAgICBpZiAoIXBhcnNlVHJhbnNmb3JtTnVtYmVyQXJn
dW1lbnRzKHBvcywgZW5kLCAzLCB0cmFuc2Zvcm1WYWx1ZSkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHRyYW5zZm9ybVZhbHVlOworICAgIH0KKworICAgIHJl
dHVybiBudWxscHRyOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CitzdGF0aWMg
Ym9vbCB0cmFuc2Zvcm1DYW5MaWtlbHlVc2VGYXN0UGF0aChjb25zdCBDaGFyVHlwZSogY2hhcnMs
IHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICAvLyBWZXJ5IGZhc3Qgc2NhbiB0aGF0IGF0dGVtcHRz
IHRvIHJlamVjdCBtb3N0IHRyYW5zZm9ybXMgdGhhdCBjb3VsZG4ndAorICAgIC8vIHRha2UgdGhl
IGZhc3QgcGF0aC4gVGhpcyBhdm9pZHMgZG9pbmcgdGhlIG1hbGxvYyBhbmQgc3RyaW5nLT5kb3Vi
bGUKKyAgICAvLyBjb252ZXJzaW9ucyBpbiBwYXJzZVNpbXBsZVRyYW5zZm9ybVZhbHVlIG9ubHkg
dG8gZGlzY2FyZCB0aGVtIHdoZW4gd2UKKyAgICAvLyBydW4gaW50byBhIHRyYW5zZm9ybSBjb21w
b25lbnQgd2UgZG9uJ3QgdW5kZXJzdGFuZC4KKyAgICB1bnNpZ25lZCBpID0gMDsKKyAgICB3aGls
ZSAoaSA8IGxlbmd0aCkgeworICAgICAgICBpZiAoaXNDU1NTcGFjZShjaGFyc1tpXSkpIHsKKyAg
ICAgICAgICAgICsraTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAg
IGlmIChsZW5ndGggLSBpIDwga1Nob3J0ZXN0VmFsaWRUcmFuc2Zvcm1TdHJpbmdMZW5ndGgpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGNo
YXJzW2ldKSkgeworICAgICAgICBjYXNlICd0JzoKKyAgICAgICAgICAgIC8vIHRyYW5zbGF0ZSwg
dHJhbnNsYXRlWCwgdHJhbnNsYXRlWSwgdHJhbnNsYXRlWiwgdHJhbnNsYXRlM2QuCisgICAgICAg
ICAgICBpZiAodG9BU0NJSUxvd2VyKGNoYXJzW2kgKyA4XSkgIT0gJ2UnKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGkgKz0gOTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlICdtJzoKKyAgICAgICAgICAgIC8vIG1hdHJpeDNkLgorICAgICAgICAg
ICAgaWYgKHRvQVNDSUlMb3dlcihjaGFyc1tpICsgN10pICE9ICdkJykKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpICs9IDg7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSAncyc6CisgICAgICAgICAgICAvLyBzY2FsZTNkLgorICAgICAgICAgICAg
aWYgKHRvQVNDSUlMb3dlcihjaGFyc1tpICsgNl0pICE9ICdkJykKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpICs9IDc7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vIEFsbCBvdGhlciB0aGluZ3MsIGV4LiByb3Rh
dGUuCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgc2l6ZV90
IGFyZ3VtZW50c0VuZCA9IFdURjo6ZmluZChjaGFycywgbGVuZ3RoLCAnKScsIGkpOworICAgICAg
ICBpZiAoYXJndW1lbnRzRW5kID09IGtOb3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgLy8gQWR2YW5jZSB0byB0aGUgZW5kIG9mIHRoZSBhcmd1bWVudHMuCisgICAg
ICAgIGkgPSBhcmd1bWVudHNFbmQgKyAxOworICAgIH0KKyAgICByZXR1cm4gaSA9PSBsZW5ndGg7
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KK3N0YXRpYyBDU1NWYWx1ZUxpc3Qq
IHBhcnNlU2ltcGxlVHJhbnNmb3JtTGlzdChjb25zdCBDaGFyVHlwZSogY2hhcnMsIHVuc2lnbmVk
IGxlbmd0aCkKK3sKKyAgICBpZiAoIXRyYW5zZm9ybUNhbkxpa2VseVVzZUZhc3RQYXRoKGNoYXJz
LCBsZW5ndGgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBjb25zdCBDaGFyVHlwZSom
IHBvcyA9IGNoYXJzOworICAgIGNvbnN0IENoYXJUeXBlKiBlbmQgPSBjaGFycyArIGxlbmd0aDsK
KyAgICBDU1NWYWx1ZUxpc3QqIHRyYW5zZm9ybUxpc3QgPSBudWxscHRyOworICAgIHdoaWxlIChw
b3MgPCBlbmQpIHsKKyAgICAgICAgd2hpbGUgKHBvcyA8IGVuZCAmJiBpc0NTU1NwYWNlKCpwb3Mp
KQorICAgICAgICAgICAgKytwb3M7CisgICAgICAgIGlmIChwb3MgPj0gZW5kKQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIENTU0Z1bmN0aW9uVmFsdWUqIHRyYW5zZm9ybVZhbHVlID0gcGFy
c2VTaW1wbGVUcmFuc2Zvcm1WYWx1ZShwb3MsIGVuZCk7CisgICAgICAgIGlmICghdHJhbnNmb3Jt
VmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKCF0cmFuc2Zv
cm1MaXN0KQorICAgICAgICAgICAgdHJhbnNmb3JtTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
U3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgdHJhbnNmb3JtTGlzdC0+YXBwZW5kKCp0cmFuc2Zv
cm1WYWx1ZSk7CisgICAgfQorICAgIHJldHVybiB0cmFuc2Zvcm1MaXN0OworfQorCitzdGF0aWMg
Q1NTVmFsdWUqIHBhcnNlU2ltcGxlVHJhbnNmb3JtKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwg
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgQVNTRVJUKCFzdHJpbmcuaXNFbXB0eSgpKTsK
KworICAgIGlmIChwcm9wZXJ0eUlEICE9IENTU1Byb3BlcnR5VHJhbnNmb3JtKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4g
cGFyc2VTaW1wbGVUcmFuc2Zvcm1MaXN0KHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVu
Z3RoKCkpOworICAgIHJldHVybiBwYXJzZVNpbXBsZVRyYW5zZm9ybUxpc3Qoc3RyaW5nLmNoYXJh
Y3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCkpOworfQorCitDU1NWYWx1ZSogQ1NTUGFyc2VyRmFz
dFBhdGhzOjptYXliZVBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBT
dHJpbmcmIHN0cmluZywgQ1NTUGFyc2VyTW9kZSBwYXJzZXJNb2RlKQoreworICAgIGlmIChDU1NW
YWx1ZSogbGVuZ3RoID0gcGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShwcm9wZXJ0eUlELCBzdHJpbmcs
IHBhcnNlck1vZGUpKQorICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgIGlmIChpc0NvbG9yUHJv
cGVydHlJRChwcm9wZXJ0eUlEKSkKKyAgICAgICAgcmV0dXJuIHBhcnNlQ29sb3Ioc3RyaW5nLCBw
YXJzZXJNb2RlKTsKKyAgICBpZiAoQ1NTVmFsdWUqIGtleXdvcmQgPSBwYXJzZUtleXdvcmRWYWx1
ZShwcm9wZXJ0eUlELCBzdHJpbmcsIHBhcnNlck1vZGUpKQorICAgICAgICByZXR1cm4ga2V5d29y
ZDsKKyAgICBpZiAoQ1NTVmFsdWUqIHRyYW5zZm9ybSA9IHBhcnNlU2ltcGxlVHJhbnNmb3JtKHBy
b3BlcnR5SUQsIHN0cmluZykpCisgICAgICAgIHJldHVybiB0cmFuc2Zvcm07CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKKyAgICAgKi8KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBD
aHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8v
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisv
LyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZuZGVmIENTU1BhcnNlckZhc3RQYXRoc19oCisj
ZGVmaW5lIENTU1BhcnNlckZhc3RQYXRoc19oCisKKyNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgi
CisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29y
ZHMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBDU1NWYWx1ZTsKKworY2xhc3MgQ1NTUGFyc2VyRmFzdFBhdGhzIHsKK3B1
YmxpYzoKKyAgICAvLyBQYXJzZXMgc2ltcGxlIHZhbHVlcyBsaWtlICcxMHB4JyBvciAnZ3JlZW4n
LCBidXQgbWFrZXMgbm8gZ3VhcmFudGVlcworICAgIC8vIGFib3V0IGhhbmRsaW5nIGFueSBwcm9w
ZXJ0eSBjb21wbGV0ZWx5LgorICAgIHN0YXRpYyBDU1NWYWx1ZSogbWF5YmVQYXJzZVZhbHVlKENT
U1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYsIENTU1BhcnNlck1vZGUpOworCisgICAgLy8gUHJv
cGVydGllcyBoYW5kbGVkIGhlcmUgc2hvdWxkbid0IGJlIGV4cGxpY2l0bHkgaGFuZGxlZCBpbiBD
U1NQcm9wZXJ0eVBhcnNlcgorICAgIHN0YXRpYyBib29sIGlzS2V5d29yZFByb3BlcnR5SUQoQ1NT
UHJvcGVydHlJRCk7CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZh
bHVlKENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlSUQsIENTU1BhcnNlck1vZGUpOworCisgICAgc3Rh
dGljIENTU1ZhbHVlKiBwYXJzZUNvbG9yKGNvbnN0IFN0cmluZyYsIENTU1BhcnNlck1vZGUpOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ1NTUGFyc2VyRmFzdFBh
dGhzX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklk
aW9tcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENTU1BhcnNlcklk
aW9tc19oCisjZGVmaW5lIENTU1BhcnNlcklkaW9tc19oCisKKyNpbmNsdWRlIDx3dGYvQVNDSUlD
VHlwZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFNwYWNlIGNoYXJhY3RlcnMgYXMg
ZGVmaW5lZCBieSB0aGUgQ1NTIHNwZWNpZmljYXRpb24uCisvLyBodHRwOi8vd3d3LnczLm9yZy9U
Ui9jc3MzLXN5bnRheC8jd2hpdGVzcGFjZQoraW5saW5lIGJvb2wgaXNDU1NTcGFjZShVQ2hhciBj
KQoreworICAgIHJldHVybiBjID09ICcgJyB8fCBjID09ICdcdCcgfHwgYyA9PSAnXG4nOworfQor
CisvLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3Mtc3ludGF4LyNuYW1lLXN0YXJ0LWNvZGUt
cG9pbnQKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorYm9vbCBpc05hbWVTdGFy
dENvZGVQb2ludChDaGFyYWN0ZXJUeXBlIGMpCit7CisgICAgcmV0dXJuIGlzQVNDSUlBbHBoYShj
KSB8fCBjID09ICdfJyB8fCAhaXNBU0NJSShjKTsKK30KKworLy8gaHR0cDovL2Rldi53My5vcmcv
Y3Nzd2cvY3NzLXN5bnRheC8jbmFtZS1jb2RlLXBvaW50Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4KK2Jvb2wgaXNOYW1lQ29kZVBvaW50KENoYXJhY3RlclR5cGUgYykKK3sKKyAg
ICByZXR1cm4gaXNOYW1lU3RhcnRDb2RlUG9pbnQoYykgfHwgaXNBU0NJSURpZ2l0KGMpIHx8IGMg
PT0gJy0nOworfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQYXJzZXJPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1BhcnNlck9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMyBMYXJzIEtub2xsIChrbm9sbEBrZGUu
b3JnKQorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBF
cmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5IC0gMjAx
MCAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aWZuZGVmIENTU1BhcnNlck9ic2VydmVyX2gKKyNkZWZpbmUgQ1NTUGFyc2VyT2JzZXJ2ZXJfaAor
CisjaW5jbHVkZSAiQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmgiCisjaW5jbHVkZSAiU3R5bGVSdWxl
LmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIENTU1BhcnNlclRva2VuOworY2xhc3MgQ1NTUGFyc2VyVG9rZW5SYW5nZTsKKworLy8gVGhp
cyBpcyBvbmx5IGZvciB0aGUgaW5zcGVjdG9yIGFuZCBzaG91bGRuJ3QgYmUgdXNlZCBlbHNld2hl
cmUuCitjbGFzcyBDU1NQYXJzZXJPYnNlcnZlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q1NT
UGFyc2VyT2JzZXJ2ZXIoKSB7IH07CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0UnVsZUhlYWRlcihT
dHlsZVJ1bGU6OlR5cGUsIHVuc2lnbmVkIG9mZnNldCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBl
bmRSdWxlSGVhZGVyKHVuc2lnbmVkIG9mZnNldCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvYnNl
cnZlU2VsZWN0b3IodW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzdGFydFJ1bGVCb2R5KHVuc2lnbmVkIG9mZnNldCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBlbmRSdWxlQm9keSh1bnNpZ25lZCBvZmZzZXQpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgb2JzZXJ2ZVByb3BlcnR5KHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQsIGJvb2wgaXNJbXBvcnRhbnQsIGJvb2wgaXNQYXJzZWQpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgb2JzZXJ2ZUNvbW1lbnQodW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCkgPSAwOworICAgIC8vIEZJWE1FOiBVbnVzZWQsIHNob3VsZCBiZSByZW1vdmVk
CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0TWVkaWFRdWVyeUV4cCh1bnNpZ25lZCBvZmZzZXQpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kTWVkaWFRdWVyeUV4cCh1bnNpZ25lZCBvZmZzZXQpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRNZWRpYVF1ZXJ5KCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBlbmRNZWRpYVF1ZXJ5KCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gQ1NTUGFyc2VyT2JzZXJ2ZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmNwcAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlck9ic2VydmVyV3Jh
cHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MSBAQAorLy8gQ29weXJpZ2h0IDIw
MTUgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8g
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24u
CisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaCIKKworI2luY2x1ZGUgIkNTU1BhcnNl
clRva2VuUmFuZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1bnNpZ25lZCBDU1NQYXJz
ZXJPYnNlcnZlcldyYXBwZXI6OnN0YXJ0T2Zmc2V0KGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlKQoreworICAgIHJldHVybiBtX3Rva2VuT2Zmc2V0c1tyYW5nZS5iZWdpbigpIC0gbV9m
aXJzdFBhcnNlclRva2VuXTsKK30KKwordW5zaWduZWQgQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVy
OjpwcmV2aW91c1Rva2VuU3RhcnRPZmZzZXQoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UpCit7CisgICAgaWYgKHJhbmdlLmJlZ2luKCkgPT0gbV9maXJzdFBhcnNlclRva2VuKQorICAg
ICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV90b2tlbk9mZnNldHNbcmFuZ2UuYmVnaW4oKSAt
IG1fZmlyc3RQYXJzZXJUb2tlbiAtIDFdOworfQorCit1bnNpZ25lZCBDU1NQYXJzZXJPYnNlcnZl
cldyYXBwZXI6OmVuZE9mZnNldChjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sK
KyAgICByZXR1cm4gbV90b2tlbk9mZnNldHNbcmFuZ2UuZW5kKCkgLSBtX2ZpcnN0UGFyc2VyVG9r
ZW5dOworfQorCit2b2lkIENTU1BhcnNlck9ic2VydmVyV3JhcHBlcjo6c2tpcENvbW1lbnRzQmVm
b3JlKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBib29sIGxlYXZlRGlyZWN0bHlC
ZWZvcmUpCit7CisgICAgdW5zaWduZWQgc3RhcnRJbmRleCA9IHJhbmdlLmJlZ2luKCkgLSBtX2Zp
cnN0UGFyc2VyVG9rZW47CisgICAgaWYgKCFsZWF2ZURpcmVjdGx5QmVmb3JlKQorICAgICAgICBz
dGFydEluZGV4Kys7CisgICAgd2hpbGUgKG1fY29tbWVudEl0ZXJhdG9yIDwgbV9jb21tZW50T2Zm
c2V0cy5lbmQoKSAmJiBtX2NvbW1lbnRJdGVyYXRvci0+dG9rZW5zQmVmb3JlIDwgc3RhcnRJbmRl
eCkKKyAgICAgICAgbV9jb21tZW50SXRlcmF0b3IrKzsKK30KKwordm9pZCBDU1NQYXJzZXJPYnNl
cnZlcldyYXBwZXI6OnlpZWxkQ29tbWVudHNCZWZvcmUoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UpCit7CisgICAgdW5zaWduZWQgc3RhcnRJbmRleCA9IHJhbmdlLmJlZ2luKCkgLSBt
X2ZpcnN0UGFyc2VyVG9rZW47CisgICAgd2hpbGUgKG1fY29tbWVudEl0ZXJhdG9yIDwgbV9jb21t
ZW50T2Zmc2V0cy5lbmQoKSAmJiBtX2NvbW1lbnRJdGVyYXRvci0+dG9rZW5zQmVmb3JlIDw9IHN0
YXJ0SW5kZXgpIHsKKyAgICAgICAgbV9vYnNlcnZlci5vYnNlcnZlQ29tbWVudChtX2NvbW1lbnRJ
dGVyYXRvci0+c3RhcnRPZmZzZXQsIG1fY29tbWVudEl0ZXJhdG9yLT5lbmRPZmZzZXQpOworICAg
ICAgICBtX2NvbW1lbnRJdGVyYXRvcisrOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlcldy
YXBwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNl
ck9ic2VydmVyV3JhcHBlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw3OSBAQAorLy8gQ29weXJpZ2h0IDIwMTUgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6
CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisv
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KyNpZm5kZWYgQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyX2gKKyNkZWZpbmUgQ1NTUGFyc2VyT2Jz
ZXJ2ZXJXcmFwcGVyX2gKKworI2luY2x1ZGUgIkNTU1BhcnNlck9ic2VydmVyLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyIHsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIoQ1NTUGFyc2VyT2JzZXJ2
ZXImIG9ic2VydmVyKQorICAgICAgICA6IG1fb2JzZXJ2ZXIob2JzZXJ2ZXIpCisgICAgeyB9CisK
KyAgICB1bnNpZ25lZCBzdGFydE9mZnNldChjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJik7Cisg
ICAgdW5zaWduZWQgcHJldmlvdXNUb2tlblN0YXJ0T2Zmc2V0KGNvbnN0IENTU1BhcnNlclRva2Vu
UmFuZ2UmKTsKKyAgICB1bnNpZ25lZCBlbmRPZmZzZXQoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYpOyAvLyBJbmNsdWRlcyB0cmFpbGluZyBjb21tZW50cworCisgICAgdm9pZCBza2lwQ29tbWVu
dHNCZWZvcmUoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGJvb2wgbGVhdmVEaXJlY3RseUJl
Zm9yZSk7CisgICAgdm9pZCB5aWVsZENvbW1lbnRzQmVmb3JlKGNvbnN0IENTU1BhcnNlclRva2Vu
UmFuZ2UmKTsKKworICAgIENTU1BhcnNlck9ic2VydmVyJiBvYnNlcnZlcigpIHsgcmV0dXJuIG1f
b2JzZXJ2ZXI7IH0KKyAgICB2b2lkIGFkZENvbW1lbnQodW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgdG9rZW5zQmVmb3JlKQorICAgIHsKKyAgICAgICAg
Q29tbWVudFBvc2l0aW9uIHBvc2l0aW9uID0ge3N0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIHRva2Vu
c0JlZm9yZX07CisgICAgICAgIG1fY29tbWVudE9mZnNldHMuYXBwZW5kKHBvc2l0aW9uKTsKKyAg
ICB9CisgICAgdm9pZCBhZGRUb2tlbih1bnNpZ25lZCBzdGFydE9mZnNldCkgeyBtX3Rva2VuT2Zm
c2V0cy5hcHBlbmQoc3RhcnRPZmZzZXQpOyB9CisgICAgdm9pZCBmaW5hbGl6ZUNvbnN0cnVjdGlv
bihDU1NQYXJzZXJUb2tlbiogZmlyc3RQYXJzZXJUb2tlbikKKyAgICB7CisgICAgICAgIG1fZmly
c3RQYXJzZXJUb2tlbiA9IGZpcnN0UGFyc2VyVG9rZW47CisgICAgICAgIG1fY29tbWVudEl0ZXJh
dG9yID0gbV9jb21tZW50T2Zmc2V0cy5iZWdpbigpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBD
U1NQYXJzZXJPYnNlcnZlciYgbV9vYnNlcnZlcjsKKyAgICBWZWN0b3I8dW5zaWduZWQ+IG1fdG9r
ZW5PZmZzZXRzOworICAgIENTU1BhcnNlclRva2VuKiBtX2ZpcnN0UGFyc2VyVG9rZW47CisKKyAg
ICBzdHJ1Y3QgQ29tbWVudFBvc2l0aW9uIHsKKyAgICAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQ7
CisgICAgICAgIHVuc2lnbmVkIGVuZE9mZnNldDsKKyAgICAgICAgdW5zaWduZWQgdG9rZW5zQmVm
b3JlOworICAgIH07CisKKyAgICBWZWN0b3I8Q29tbWVudFBvc2l0aW9uPiBtX2NvbW1lbnRPZmZz
ZXRzOworICAgIFZlY3RvcjxDb21tZW50UG9zaXRpb24+OjppdGVyYXRvciBtX2NvbW1lbnRJdGVy
YXRvcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENTU1BhcnNl
ck9ic2VydmVyV3JhcHBlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Bh
cnNlclRva2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlclRva2VuLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlclRva2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3NiBAQAor
Ly8gQ29weXJpZ2h0IDIwMTQgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8g
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisv
LyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisv
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlbi5oIgorCisjaW5jbHVkZSAiQ1NT
TWFya3VwLmgiCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NQ
cm9wZXJ0eVBhcnNlci5oIgorI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGVzIGNzc1ByaW1pdGl2ZVZhbHVlVW5pdEZyb21UcmllKGNvbnN0IENo
YXJhY3RlclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBBU1NFUlQoZGF0YSk7
CisgICAgQVNTRVJUKGxlbmd0aCk7CisgICAgc3dpdGNoIChsZW5ndGgpIHsKKyAgICBjYXNlIDE6
CisgICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGRhdGFbMF0pKSB7CisgICAgICAgIGNhc2Ug
J3MnOgorICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNT
U19TOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAgICAgc3dp
dGNoICh0b0FTQ0lJTG93ZXIoZGF0YVswXSkpIHsKKyAgICAgICAgY2FzZSAnYyc6CisgICAgICAg
ICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkgeworICAgICAgICAgICAgY2FzZSAn
aCc6CisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6
OkNTU19DSFM7CisgICAgICAgICAgICBjYXNlICdtJzoKKyAgICAgICAgICAgICAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0NNOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ2UnOgorICAgICAgICAgICAgc3dpdGNoICh0
b0FTQ0lJTG93ZXIoZGF0YVsxXSkpIHsKKyAgICAgICAgICAgIGNhc2UgJ20nOgorICAgICAgICAg
ICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfRU1TOworICAg
ICAgICAgICAgY2FzZSAneCc6CisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZXM6OkNTU19FWFM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSAnZic6CisgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGRhdGFb
MV0pID09ICdyJykKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlczo6Q1NTX0ZSOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ2gnOgor
ICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzFdKSA9PSAneicpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19IWjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdpJzoKKyAgICAgICAgICAgIGlmICh0b0FTQ0lJ
TG93ZXIoZGF0YVsxXSkgPT0gJ24nKQorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfSU47CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSAnbSc6CisgICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkgewor
ICAgICAgICAgICAgY2FzZSAnbSc6CisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19NTTsKKyAgICAgICAgICAgIGNhc2UgJ3MnOgorICAgICAg
ICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfTVM7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAncCc6CisgICAg
ICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkgeworICAgICAgICAgICAgY2Fz
ZSAnYyc6CisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZXM6OkNTU19QQzsKKyAgICAgICAgICAgIGNhc2UgJ3QnOgorICAgICAgICAgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUFQ7CisgICAgICAgICAgICBjYXNl
ICd4JzoKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBl
czo6Q1NTX1BYOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgJ3YnOgorICAgICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkpIHsKKyAg
ICAgICAgICAgIGNhc2UgJ2gnOgorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVW
YWx1ZTo6VW5pdFR5cGVzOjpDU1NfVkg7CisgICAgICAgICAgICBjYXNlICd3JzoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1ZXOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSAzOgorICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzBdKSkgewor
ICAgICAgICBjYXNlICdkJzoKKyAgICAgICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGRhdGFb
MV0pKSB7CisgICAgICAgICAgICBjYXNlICdlJzoKKyAgICAgICAgICAgICAgICBpZiAodG9BU0NJ
SUxvd2VyKGRhdGFbMl0pID09ICdnJykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1By
aW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19ERUc7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlICdwJzoKKyAgICAgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2Vy
KGRhdGFbMl0pID09ICdpJykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19EUEk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdrJzoKKyAgICAgICAgICAg
IGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkgPT0gJ2gnICYmIHRvQVNDSUlMb3dlcihkYXRhWzJd
KSA9PSAneicpCisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZXM6OkNTU19LSFo7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAncic6Cisg
ICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkgeworICAgICAgICAgICAg
Y2FzZSAnYSc6CisgICAgICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzJdKSA9PSAn
ZCcpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGVzOjpDU1NfUkFEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAn
ZSc6CisgICAgICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzJdKSA9PSAnbScpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpD
U1NfUkVNUzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGJyZWFrOworICAgIGNhc2UgNDoKKyAgICAgICAgc3dpdGNoICh0
b0FTQ0lJTG93ZXIoZGF0YVswXSkpIHsKKyAgICAgICAgY2FzZSAnZCc6CisgICAgICAgICAgICBz
d2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkgeworICAgICAgICAgICAgY2FzZSAncCc6Cisg
ICAgICAgICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVsyXSkpIHsKKyAgICAgICAg
ICAgICAgICBjYXNlICdjJzoKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihk
YXRhWzNdKSA9PSAnbScpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0RQQ007CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgJ3AnOgorICAgICAgICAgICAgICAgICAgICBpZiAodG9B
U0NJSUxvd2VyKGRhdGFbM10pID09ICd4JykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfRFBQWDsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ2cnOgorICAgICAgICAgICAgaWYg
KHRvQVNDSUlMb3dlcihkYXRhWzFdKSA9PSAncicgJiYgdG9BU0NJSUxvd2VyKGRhdGFbMl0pID09
ICdhJyAmJiB0b0FTQ0lJTG93ZXIoZGF0YVszXSkgPT0gJ2QnKQorICAgICAgICAgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfR1JBRDsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlICd0JzoKKyAgICAgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIo
ZGF0YVsxXSkgPT0gJ3UnICYmIHRvQVNDSUlMb3dlcihkYXRhWzJdKSA9PSAncicgJiYgdG9BU0NJ
SUxvd2VyKGRhdGFbM10pID09ICduJykKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1RVUk47CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSAndic6CisgICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkg
eworICAgICAgICAgICAgY2FzZSAnbSc6CisgICAgICAgICAgICAgICAgc3dpdGNoICh0b0FTQ0lJ
TG93ZXIoZGF0YVsyXSkpIHsKKyAgICAgICAgICAgICAgICBjYXNlICdhJzoKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzNdKSA9PSAneCcpCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1ZNQVg7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgJ2knOgor
ICAgICAgICAgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGRhdGFbM10pID09ICduJykKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVz
OjpDU1NfVk1JTjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA1OgorICAgICAgICBzd2l0
Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzBdKSkgeworICAgICAgICBjYXNlICdfJzoKKyAgICAgICAg
ICAgIGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkgPT0gJ18nICYmIHRvQVNDSUlMb3dlcihkYXRh
WzJdKSA9PSAncScgJiYgdG9BU0NJSUxvd2VyKGRhdGFbM10pID09ICdlJyAmJiB0b0FTQ0lJTG93
ZXIoZGF0YVs0XSkgPT0gJ20nKQorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVW
YWx1ZTo6VW5pdFR5cGVzOjpDU1NfRU1TOyAvLyBGSVhNRS1ORVdQQVJTRVI6IE5lZWQgcXVpcmt5
IGVtcy4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1VOS05PV047
Cit9CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHN0cmluZ1RvVW5pdFR5
cGUoU3RyaW5nVmlldyBzdHJpbmdWaWV3KQoreworICAgIGlmIChzdHJpbmdWaWV3LmlzOEJpdCgp
KQorICAgICAgICByZXR1cm4gY3NzUHJpbWl0aXZlVmFsdWVVbml0RnJvbVRyaWUoc3RyaW5nVmll
dy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmdWaWV3Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4gY3NzUHJp
bWl0aXZlVmFsdWVVbml0RnJvbVRyaWUoc3RyaW5nVmlldy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5n
Vmlldy5sZW5ndGgoKSk7Cit9CisKK0NTU1BhcnNlclRva2VuOjpDU1NQYXJzZXJUb2tlbihDU1NQ
YXJzZXJUb2tlblR5cGUgdHlwZSwgQmxvY2tUeXBlIGJsb2NrVHlwZSkKKyAgICA6IG1fdHlwZSh0
eXBlKQorICAgICwgbV9ibG9ja1R5cGUoYmxvY2tUeXBlKQoreworfQorCisvLyBKdXN0IGEgaGVs
cGVyIHVzZWQgZm9yIERlbGltaXRlciB0b2tlbnMuCitDU1NQYXJzZXJUb2tlbjo6Q1NTUGFyc2Vy
VG9rZW4oQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIFVDaGFyIGMpCisgICAgOiBtX3R5cGUodHlw
ZSkKKyAgICAsIG1fYmxvY2tUeXBlKE5vdEJsb2NrKQorICAgICwgbV9kZWxpbWl0ZXIoYykKK3sK
KyAgICBBU1NFUlQobV90eXBlID09IERlbGltaXRlclRva2VuKTsKK30KKworQ1NTUGFyc2VyVG9r
ZW46OkNTU1BhcnNlclRva2VuKENTU1BhcnNlclRva2VuVHlwZSB0eXBlLCBTdHJpbmdWaWV3IHZh
bHVlLCBCbG9ja1R5cGUgYmxvY2tUeXBlKQorICAgIDogbV90eXBlKHR5cGUpCisgICAgLCBtX2Js
b2NrVHlwZShibG9ja1R5cGUpCit7CisgICAgaW5pdFZhbHVlRnJvbVN0cmluZ1ZpZXcodmFsdWUp
OworICAgIG1faWQgPSAtMTsKK30KKworQ1NTUGFyc2VyVG9rZW46OkNTU1BhcnNlclRva2VuKENT
U1BhcnNlclRva2VuVHlwZSB0eXBlLCBkb3VibGUgbnVtZXJpY1ZhbHVlLCBOdW1lcmljVmFsdWVU
eXBlIG51bWVyaWNWYWx1ZVR5cGUsIE51bWVyaWNTaWduIHNpZ24pCisgICAgOiBtX3R5cGUodHlw
ZSkKKyAgICAsIG1fYmxvY2tUeXBlKE5vdEJsb2NrKQorICAgICwgbV9udW1lcmljVmFsdWVUeXBl
KG51bWVyaWNWYWx1ZVR5cGUpCisgICAgLCBtX251bWVyaWNTaWduKHNpZ24pCisgICAgLCBtX3Vu
aXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNT
U19OVU1CRVIpKQoreworICAgIEFTU0VSVCh0eXBlID09IE51bWJlclRva2VuKTsKKyAgICBtX251
bWVyaWNWYWx1ZSA9IGNsYW1wVG88ZG91YmxlPihudW1lcmljVmFsdWUsIC1zdGQ6Om51bWVyaWNf
bGltaXRzPGZsb2F0Pjo6bWF4KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSk7
Cit9CisKK0NTU1BhcnNlclRva2VuOjpDU1NQYXJzZXJUb2tlbihDU1NQYXJzZXJUb2tlblR5cGUg
dHlwZSwgVUNoYXIzMiBzdGFydCwgVUNoYXIzMiBlbmQpCisgICAgOiBtX3R5cGUoVW5pY29kZVJh
bmdlVG9rZW4pCisgICAgLCBtX2Jsb2NrVHlwZShOb3RCbG9jaykKK3sKKyAgICBBU1NFUlRfVU5V
U0VEKHR5cGUsIHR5cGUgPT0gVW5pY29kZVJhbmdlVG9rZW4pOworICAgIG1fdW5pY29kZVJhbmdl
LnN0YXJ0ID0gc3RhcnQ7CisgICAgbV91bmljb2RlUmFuZ2UuZW5kID0gZW5kOworfQorCitDU1NQ
YXJzZXJUb2tlbjo6Q1NTUGFyc2VyVG9rZW4oSGFzaFRva2VuVHlwZSB0eXBlLCBTdHJpbmdWaWV3
IHZhbHVlKQorICAgIDogbV90eXBlKEhhc2hUb2tlbikKKyAgICAsIG1fYmxvY2tUeXBlKE5vdEJs
b2NrKQorICAgICwgbV9oYXNoVG9rZW5UeXBlKHR5cGUpCit7CisgICAgaW5pdFZhbHVlRnJvbVN0
cmluZ1ZpZXcodmFsdWUpOworfQorCit2b2lkIENTU1BhcnNlclRva2VuOjpjb252ZXJ0VG9EaW1l
bnNpb25XaXRoVW5pdChTdHJpbmdWaWV3IHVuaXQpCit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBO
dW1iZXJUb2tlbik7CisgICAgbV90eXBlID0gRGltZW5zaW9uVG9rZW47CisgICAgaW5pdFZhbHVl
RnJvbVN0cmluZ1ZpZXcodW5pdCk7CisgICAgbV91bml0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHN0cmluZ1RvVW5pdFR5cGUodW5pdCkpOworfQorCit2b2lkIENTU1BhcnNlclRva2VuOjpjb252
ZXJ0VG9QZXJjZW50YWdlKCkKK3sKKyAgICBBU1NFUlQobV90eXBlID09IE51bWJlclRva2VuKTsK
KyAgICBtX3R5cGUgPSBQZXJjZW50YWdlVG9rZW47CisgICAgbV91bml0ID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19QRVJDRU5UQUdFKTsK
K30KKworVUNoYXIgQ1NTUGFyc2VyVG9rZW46OmRlbGltaXRlcigpIGNvbnN0Cit7CisgICAgQVNT
RVJUKG1fdHlwZSA9PSBEZWxpbWl0ZXJUb2tlbik7CisgICAgcmV0dXJuIG1fZGVsaW1pdGVyOwor
fQorCitOdW1lcmljU2lnbiBDU1NQYXJzZXJUb2tlbjo6bnVtZXJpY1NpZ24oKSBjb25zdAorewor
ICAgIC8vIFRoaXMgaXMgdmFsaWQgZm9yIERpbWVuc2lvblRva2VuIGFuZCBQZXJjZW50YWdlVG9r
ZW4sIGJ1dCBvbmx5IHVzZWQKKyAgICAvLyBpbiA8YW4rYj4gcGFyc2luZyBvbiBOdW1iZXJUb2tl
bnMuCisgICAgQVNTRVJUKG1fdHlwZSA9PSBOdW1iZXJUb2tlbik7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PE51bWVyaWNTaWduPihtX251bWVyaWNTaWduKTsKK30KKworTnVtZXJpY1ZhbHVlVHlw
ZSBDU1NQYXJzZXJUb2tlbjo6bnVtZXJpY1ZhbHVlVHlwZSgpIGNvbnN0Cit7CisgICAgQVNTRVJU
KG1fdHlwZSA9PSBOdW1iZXJUb2tlbiB8fCBtX3R5cGUgPT0gUGVyY2VudGFnZVRva2VuIHx8IG1f
dHlwZSA9PSBEaW1lbnNpb25Ub2tlbik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE51bWVyaWNW
YWx1ZVR5cGU+KG1fbnVtZXJpY1ZhbHVlVHlwZSk7Cit9CisKK2RvdWJsZSBDU1NQYXJzZXJUb2tl
bjo6bnVtZXJpY1ZhbHVlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09IE51bWJlclRv
a2VuIHx8IG1fdHlwZSA9PSBQZXJjZW50YWdlVG9rZW4gfHwgbV90eXBlID09IERpbWVuc2lvblRv
a2VuKTsKKyAgICByZXR1cm4gbV9udW1lcmljVmFsdWU7Cit9CisKK0NTU1Byb3BlcnR5SUQgQ1NT
UGFyc2VyVG9rZW46OnBhcnNlQXNVbnJlc29sdmVkQ1NTUHJvcGVydHlJRCgpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUKG1fdHlwZSA9PSBJZGVudFRva2VuKTsKKyAgICByZXR1cm4gdW5yZXNvbHZlZENT
U1Byb3BlcnR5SUQodmFsdWUoKSk7Cit9CisKK0NTU1ZhbHVlSUQgQ1NTUGFyc2VyVG9rZW46Omlk
KCkgY29uc3QKK3sKKyAgICBpZiAobV90eXBlICE9IElkZW50VG9rZW4pCisgICAgICAgIHJldHVy
biBDU1NWYWx1ZUludmFsaWQ7CisgICAgaWYgKG1faWQgPCAwKQorICAgICAgICBtX2lkID0gY3Nz
VmFsdWVLZXl3b3JkSUQodmFsdWUoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU1ZhbHVl
SUQ+KG1faWQpOworfQorCitDU1NWYWx1ZUlEIENTU1BhcnNlclRva2VuOjpmdW5jdGlvbklkKCkg
Y29uc3QKK3sKKyAgICBpZiAobV90eXBlICE9IEZ1bmN0aW9uVG9rZW4pCisgICAgICAgIHJldHVy
biBDU1NWYWx1ZUludmFsaWQ7CisgICAgaWYgKG1faWQgPCAwKQorICAgICAgICBtX2lkID0gY3Nz
VmFsdWVLZXl3b3JkSUQodmFsdWUoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU1ZhbHVl
SUQ+KG1faWQpOworfQorCitib29sIENTU1BhcnNlclRva2VuOjpoYXNTdHJpbmdCYWNraW5nKCkg
Y29uc3QKK3sKKyAgICBDU1NQYXJzZXJUb2tlblR5cGUgdG9rZW5UeXBlID0gdHlwZSgpOworICAg
IHJldHVybiB0b2tlblR5cGUgPT0gSWRlbnRUb2tlbgorICAgICAgICB8fCB0b2tlblR5cGUgPT0g
RnVuY3Rpb25Ub2tlbgorICAgICAgICB8fCB0b2tlblR5cGUgPT0gQXRLZXl3b3JkVG9rZW4KKyAg
ICAgICAgfHwgdG9rZW5UeXBlID09IEhhc2hUb2tlbgorICAgICAgICB8fCB0b2tlblR5cGUgPT0g
VXJsVG9rZW4KKyAgICAgICAgfHwgdG9rZW5UeXBlID09IERpbWVuc2lvblRva2VuCisgICAgICAg
IHx8IHRva2VuVHlwZSA9PSBTdHJpbmdUb2tlbjsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTUGFy
c2VyVG9rZW46OmNvcHlXaXRoVXBkYXRlZFN0cmluZyhjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcp
IGNvbnN0Cit7CisgICAgQ1NTUGFyc2VyVG9rZW4gY29weSgqdGhpcyk7CisgICAgY29weS5pbml0
VmFsdWVGcm9tU3RyaW5nVmlldyhzdHJpbmcpOworICAgIHJldHVybiBjb3B5OworfQorCitib29s
IENTU1BhcnNlclRva2VuOjp2YWx1ZURhdGFDaGFyUmF3RXF1YWwoY29uc3QgQ1NTUGFyc2VyVG9r
ZW4mIG90aGVyKSBjb25zdAoreworICAgIGlmIChtX3ZhbHVlTGVuZ3RoICE9IG90aGVyLm1fdmFs
dWVMZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX3ZhbHVlRGF0YUNo
YXJSYXcgPT0gb3RoZXIubV92YWx1ZURhdGFDaGFyUmF3ICYmIG1fdmFsdWVJczhCaXQgPT0gb3Ro
ZXIubV92YWx1ZUlzOEJpdCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAobV92YWx1
ZUlzOEJpdCkKKyAgICAgICAgcmV0dXJuIG90aGVyLm1fdmFsdWVJczhCaXQgPyBlcXVhbChzdGF0
aWNfY2FzdDxjb25zdCBMQ2hhcio+KG1fdmFsdWVEYXRhQ2hhclJhdyksIHN0YXRpY19jYXN0PGNv
bnN0IExDaGFyKj4ob3RoZXIubV92YWx1ZURhdGFDaGFyUmF3KSwgbV92YWx1ZUxlbmd0aCkgOiBl
cXVhbChzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KG1fdmFsdWVEYXRhQ2hhclJhdyksIHN0YXRp
Y19jYXN0PGNvbnN0IFVDaGFyKj4ob3RoZXIubV92YWx1ZURhdGFDaGFyUmF3KSwgbV92YWx1ZUxl
bmd0aCk7CisgICAgCisgICAgcmV0dXJuIG90aGVyLm1fdmFsdWVJczhCaXQgPyBlcXVhbChzdGF0
aWNfY2FzdDxjb25zdCBVQ2hhcio+KG1fdmFsdWVEYXRhQ2hhclJhdyksIHN0YXRpY19jYXN0PGNv
bnN0IExDaGFyKj4ob3RoZXIubV92YWx1ZURhdGFDaGFyUmF3KSwgbV92YWx1ZUxlbmd0aCkgOiBl
cXVhbChzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KG1fdmFsdWVEYXRhQ2hhclJhdyksIHN0YXRp
Y19jYXN0PGNvbnN0IFVDaGFyKj4ob3RoZXIubV92YWx1ZURhdGFDaGFyUmF3KSwgbV92YWx1ZUxl
bmd0aCk7Cit9CisKK2Jvb2wgQ1NTUGFyc2VyVG9rZW46Om9wZXJhdG9yPT0oY29uc3QgQ1NTUGFy
c2VyVG9rZW4mIG90aGVyKSBjb25zdAoreworICAgIGlmIChtX3R5cGUgIT0gb3RoZXIubV90eXBl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNl
IERlbGltaXRlclRva2VuOgorICAgICAgICByZXR1cm4gZGVsaW1pdGVyKCkgPT0gb3RoZXIuZGVs
aW1pdGVyKCk7CisgICAgY2FzZSBIYXNoVG9rZW46CisgICAgICAgIGlmIChtX2hhc2hUb2tlblR5
cGUgIT0gb3RoZXIubV9oYXNoVG9rZW5UeXBlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIElkZW50VG9rZW46CisgICAgY2FzZSBGdW5j
dGlvblRva2VuOgorICAgIGNhc2UgU3RyaW5nVG9rZW46CisgICAgY2FzZSBVcmxUb2tlbjoKKyAg
ICAgICAgcmV0dXJuIHZhbHVlRGF0YUNoYXJSYXdFcXVhbChvdGhlcik7CisgICAgY2FzZSBEaW1l
bnNpb25Ub2tlbjoKKyAgICAgICAgaWYgKCF2YWx1ZURhdGFDaGFyUmF3RXF1YWwob3RoZXIpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNl
IE51bWJlclRva2VuOgorICAgIGNhc2UgUGVyY2VudGFnZVRva2VuOgorICAgICAgICByZXR1cm4g
bV9udW1lcmljU2lnbiA9PSBvdGhlci5tX251bWVyaWNTaWduICYmIG1fbnVtZXJpY1ZhbHVlID09
IG90aGVyLm1fbnVtZXJpY1ZhbHVlICYmIG1fbnVtZXJpY1ZhbHVlVHlwZSA9PSBvdGhlci5tX251
bWVyaWNWYWx1ZVR5cGU7CisgICAgY2FzZSBVbmljb2RlUmFuZ2VUb2tlbjoKKyAgICAgICAgcmV0
dXJuIG1fdW5pY29kZVJhbmdlLnN0YXJ0ID09IG90aGVyLm1fdW5pY29kZVJhbmdlLnN0YXJ0ICYm
IG1fdW5pY29kZVJhbmdlLmVuZCA9PSBvdGhlci5tX3VuaWNvZGVSYW5nZS5lbmQ7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfQorCit2b2lkIENTU1BhcnNlclRv
a2VuOjpzZXJpYWxpemUoU3RyaW5nQnVpbGRlciYgYnVpbGRlcikgY29uc3QKK3sKKyAgICAvLyBU
aGlzIGlzIGN1cnJlbnRseSBvbmx5IHVzZWQgZm9yIEBzdXBwb3J0cyBDU1NPTS4gVG8ga2VlcCBv
dXIgaW1wbGVtZW50YXRpb24KKyAgICAvLyBzaW1wbGUgd2UgaGFuZGxlIHNvbWUgb2YgdGhlIGVk
Z2UgY2FzZXMgaW5jb3JyZWN0bHkgKHNlZSBjb21tZW50cyBiZWxvdykuCisgICAgc3dpdGNoICh0
eXBlKCkpIHsKKyAgICBjYXNlIElkZW50VG9rZW46CisgICAgICAgIHNlcmlhbGl6ZUlkZW50aWZp
ZXIodmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBGdW5jdGlvblRva2VuOgorICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKHZhbHVlKCkudG9T
dHJpbmcoKSwgYnVpbGRlcik7CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgnKCcpOwor
ICAgIGNhc2UgQXRLZXl3b3JkVG9rZW46CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdAJyk7Cisg
ICAgICAgIHNlcmlhbGl6ZUlkZW50aWZpZXIodmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVyKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIYXNoVG9rZW46CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCcjJyk7CisgICAgICAgIHNlcmlhbGl6ZUlkZW50aWZpZXIodmFsdWUoKS50b1N0cmluZygp
LCBidWlsZGVyLCAoZ2V0SGFzaFRva2VuVHlwZSgpID09IEhhc2hUb2tlblVucmVzdHJpY3RlZCkp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFVybFRva2VuOgorICAgICAgICBidWlsZGVyLmFw
cGVuZCgidXJsKCIpOworICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKHZhbHVlKCkudG9TdHJp
bmcoKSwgYnVpbGRlcik7CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgnKScpOworICAg
IGNhc2UgRGVsaW1pdGVyVG9rZW46CisgICAgICAgIGlmIChkZWxpbWl0ZXIoKSA9PSAnXFwnKQor
ICAgICAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCJcXFxuIik7CisgICAgICAgIHJldHVy
biBidWlsZGVyLmFwcGVuZChkZWxpbWl0ZXIoKSk7CisgICAgY2FzZSBOdW1iZXJUb2tlbjoKKyAg
ICAgICAgLy8gVGhlc2Ugd29uJ3QgcHJvcGVybHkgcHJlc2VydmUgdGhlIE51bWVyaWNWYWx1ZVR5
cGUgZmxhZworICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmROdW1iZXIobnVtZXJpY1ZhbHVl
KCkpOworICAgIGNhc2UgUGVyY2VudGFnZVRva2VuOgorICAgICAgICBidWlsZGVyLmFwcGVuZE51
bWJlcihudW1lcmljVmFsdWUoKSk7CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgnJScp
OworICAgIGNhc2UgRGltZW5zaW9uVG9rZW46CisgICAgICAgIC8vIFRoaXMgd2lsbCBpbmNvcnJl
Y3RseSBzZXJpYWxpemUgZS5nLiA0ZTNlMiBhcyA0MDAwZTIKKyAgICAgICAgYnVpbGRlci5hcHBl
bmROdW1iZXIobnVtZXJpY1ZhbHVlKCkpOworICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKHZh
bHVlKCkudG9TdHJpbmcoKSwgYnVpbGRlcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVW5p
Y29kZVJhbmdlVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZv
cm1hdCgiVSslWC0lWCIsIHVuaWNvZGVSYW5nZVN0YXJ0KCksIHVuaWNvZGVSYW5nZUVuZCgpKSk7
CisgICAgY2FzZSBTdHJpbmdUb2tlbjoKKyAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZVN0cmluZyh2
YWx1ZSgpLnRvU3RyaW5nKCksIGJ1aWxkZXIpOworCisgICAgY2FzZSBJbmNsdWRlTWF0Y2hUb2tl
bjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCJ+PSIpOworICAgIGNhc2UgRGFzaE1h
dGNoVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgifD0iKTsKKyAgICBjYXNl
IFByZWZpeE1hdGNoVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgiXj0iKTsK
KyAgICBjYXNlIFN1ZmZpeE1hdGNoVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVu
ZCgiJD0iKTsKKyAgICBjYXNlIFN1YnN0cmluZ01hdGNoVG9rZW46CisgICAgICAgIHJldHVybiBi
dWlsZGVyLmFwcGVuZCgiKj0iKTsKKyAgICBjYXNlIENvbHVtblRva2VuOgorICAgICAgICByZXR1
cm4gYnVpbGRlci5hcHBlbmQoInx8Iik7CisgICAgY2FzZSBDRE9Ub2tlbjoKKyAgICAgICAgcmV0
dXJuIGJ1aWxkZXIuYXBwZW5kKCI8IS0tIik7CisgICAgY2FzZSBDRENUb2tlbjoKKyAgICAgICAg
cmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCItLT4iKTsKKyAgICBjYXNlIEJhZFN0cmluZ1Rva2VuOgor
ICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoIidcbiIpOworICAgIGNhc2UgQmFkVXJsVG9r
ZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgidXJsKCgpIik7CisgICAgY2FzZSBX
aGl0ZXNwYWNlVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgnICcpOworICAg
IGNhc2UgQ29sb25Ub2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7Cisg
ICAgY2FzZSBTZW1pY29sb25Ub2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCc7
Jyk7CisgICAgY2FzZSBDb21tYVRva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQo
JywnKTsKKyAgICBjYXNlIExlZnRQYXJlbnRoZXNpc1Rva2VuOgorICAgICAgICByZXR1cm4gYnVp
bGRlci5hcHBlbmQoJygnKTsKKyAgICBjYXNlIFJpZ2h0UGFyZW50aGVzaXNUb2tlbjoKKyAgICAg
ICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CisgICAgY2FzZSBMZWZ0QnJhY2tldFRva2Vu
OgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJ1snKTsKKyAgICBjYXNlIFJpZ2h0QnJh
Y2tldFRva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJ10nKTsKKyAgICBjYXNl
IExlZnRCcmFjZVRva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJ3snKTsKKyAg
ICBjYXNlIFJpZ2h0QnJhY2VUb2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCd9
Jyk7CisKKyAgICBjYXNlIEVPRlRva2VuOgorICAgIGNhc2UgQ29tbWVudFRva2VuOgorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJUb2tlbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VyVG9rZW4uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlclRva2VuLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODAgQEAKKy8vIENv
cHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlz
dHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisv
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZuZGVmIENTU1Bh
cnNlclRva2VuX2gKKyNkZWZpbmUgQ1NTUGFyc2VyVG9rZW5faAorCisjaW5jbHVkZSAiQ1NTUHJp
bWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworZW51bSBDU1NQYXJzZXJUb2tlblR5cGUgeworICAgIElkZW50VG9r
ZW4gPSAwLAorICAgIEZ1bmN0aW9uVG9rZW4sCisgICAgQXRLZXl3b3JkVG9rZW4sCisgICAgSGFz
aFRva2VuLAorICAgIFVybFRva2VuLAorICAgIEJhZFVybFRva2VuLAorICAgIERlbGltaXRlclRv
a2VuLAorICAgIE51bWJlclRva2VuLAorICAgIFBlcmNlbnRhZ2VUb2tlbiwKKyAgICBEaW1lbnNp
b25Ub2tlbiwKKyAgICBJbmNsdWRlTWF0Y2hUb2tlbiwKKyAgICBEYXNoTWF0Y2hUb2tlbiwKKyAg
ICBQcmVmaXhNYXRjaFRva2VuLAorICAgIFN1ZmZpeE1hdGNoVG9rZW4sCisgICAgU3Vic3RyaW5n
TWF0Y2hUb2tlbiwKKyAgICBDb2x1bW5Ub2tlbiwKKyAgICBVbmljb2RlUmFuZ2VUb2tlbiwKKyAg
ICBXaGl0ZXNwYWNlVG9rZW4sCisgICAgQ0RPVG9rZW4sCisgICAgQ0RDVG9rZW4sCisgICAgQ29s
b25Ub2tlbiwKKyAgICBTZW1pY29sb25Ub2tlbiwKKyAgICBDb21tYVRva2VuLAorICAgIExlZnRQ
YXJlbnRoZXNpc1Rva2VuLAorICAgIFJpZ2h0UGFyZW50aGVzaXNUb2tlbiwKKyAgICBMZWZ0QnJh
Y2tldFRva2VuLAorICAgIFJpZ2h0QnJhY2tldFRva2VuLAorICAgIExlZnRCcmFjZVRva2VuLAor
ICAgIFJpZ2h0QnJhY2VUb2tlbiwKKyAgICBTdHJpbmdUb2tlbiwKKyAgICBCYWRTdHJpbmdUb2tl
biwKKyAgICBFT0ZUb2tlbiwKKyAgICBDb21tZW50VG9rZW4sCit9OworCitlbnVtIE51bWVyaWNT
aWduIHsKKyAgICBOb1NpZ24sCisgICAgUGx1c1NpZ24sCisgICAgTWludXNTaWduLAorfTsKKwor
ZW51bSBOdW1lcmljVmFsdWVUeXBlIHsKKyAgICBJbnRlZ2VyVmFsdWVUeXBlLAorICAgIE51bWJl
clZhbHVlVHlwZSwKK307CisKK2VudW0gSGFzaFRva2VuVHlwZSB7CisgICAgSGFzaFRva2VuSWQs
CisgICAgSGFzaFRva2VuVW5yZXN0cmljdGVkLAorfTsKKworY2xhc3MgQ1NTUGFyc2VyVG9rZW4g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGVudW0gQmxvY2tU
eXBlIHsKKyAgICAgICAgTm90QmxvY2ssCisgICAgICAgIEJsb2NrU3RhcnQsCisgICAgICAgIEJs
b2NrRW5kLAorICAgIH07CisKKyAgICBDU1NQYXJzZXJUb2tlbihDU1NQYXJzZXJUb2tlblR5cGUs
IEJsb2NrVHlwZSA9IE5vdEJsb2NrKTsKKyAgICBDU1NQYXJzZXJUb2tlbihDU1NQYXJzZXJUb2tl
blR5cGUsIFN0cmluZ1ZpZXcsIEJsb2NrVHlwZSA9IE5vdEJsb2NrKTsKKworICAgIENTU1BhcnNl
clRva2VuKENTU1BhcnNlclRva2VuVHlwZSwgVUNoYXIpOyAvLyBmb3IgRGVsaW1pdGVyVG9rZW4K
KyAgICBDU1NQYXJzZXJUb2tlbihDU1NQYXJzZXJUb2tlblR5cGUsIGRvdWJsZSwgTnVtZXJpY1Zh
bHVlVHlwZSwgTnVtZXJpY1NpZ24pOyAvLyBmb3IgTnVtYmVyVG9rZW4KKyAgICBDU1NQYXJzZXJU
b2tlbihDU1NQYXJzZXJUb2tlblR5cGUsIFVDaGFyMzIsIFVDaGFyMzIpOyAvLyBmb3IgVW5pY29k
ZVJhbmdlVG9rZW4KKworICAgIENTU1BhcnNlclRva2VuKEhhc2hUb2tlblR5cGUsIFN0cmluZ1Zp
ZXcpOworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1BhcnNlclRva2VuJiBvdGhlcikg
Y29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENTU1BhcnNlclRva2VuJiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKworICAgIC8vIENvbnZlcnRzIE51
bWJlclRva2VuIHRvIERpbWVuc2lvblRva2VuLgorICAgIHZvaWQgY29udmVydFRvRGltZW5zaW9u
V2l0aFVuaXQoU3RyaW5nVmlldyk7CisKKyAgICAvLyBDb252ZXJ0cyBOdW1iZXJUb2tlbiB0byBQ
ZXJjZW50YWdlVG9rZW4uCisgICAgdm9pZCBjb252ZXJ0VG9QZXJjZW50YWdlKCk7CisKKyAgICBD
U1NQYXJzZXJUb2tlblR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENTU1Bh
cnNlclRva2VuVHlwZT4obV90eXBlKTsgfQorICAgIFN0cmluZ1ZpZXcgdmFsdWUoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgaWYgKG1fdmFsdWVJczhCaXQpCisgICAgICAgICAgICByZXR1cm4gU3Ry
aW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV92YWx1ZURhdGFDaGFyUmF3
KSwgbV92YWx1ZUxlbmd0aCk7CisgICAgICAgIHJldHVybiBTdHJpbmdWaWV3KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVUNoYXIqPihtX3ZhbHVlRGF0YUNoYXJSYXcpLCBtX3ZhbHVlTGVuZ3RoKTsK
KyAgICB9CisKKyAgICBVQ2hhciBkZWxpbWl0ZXIoKSBjb25zdDsKKyAgICBOdW1lcmljU2lnbiBu
dW1lcmljU2lnbigpIGNvbnN0OworICAgIE51bWVyaWNWYWx1ZVR5cGUgbnVtZXJpY1ZhbHVlVHlw
ZSgpIGNvbnN0OworICAgIGRvdWJsZSBudW1lcmljVmFsdWUoKSBjb25zdDsKKyAgICBIYXNoVG9r
ZW5UeXBlIGdldEhhc2hUb2tlblR5cGUoKSBjb25zdCB7IEFTU0VSVChtX3R5cGUgPT0gSGFzaFRv
a2VuKTsgcmV0dXJuIG1faGFzaFRva2VuVHlwZTsgfQorICAgIEJsb2NrVHlwZSBnZXRCbG9ja1R5
cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCbG9ja1R5cGU+KG1fYmxvY2tUeXBlKTsg
fQorICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgdW5pdFR5cGUoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzPihtX3VuaXQpOyB9
CisgICAgVUNoYXIzMiB1bmljb2RlUmFuZ2VTdGFydCgpIGNvbnN0IHsgQVNTRVJUKG1fdHlwZSA9
PSBVbmljb2RlUmFuZ2VUb2tlbik7IHJldHVybiBtX3VuaWNvZGVSYW5nZS5zdGFydDsgfQorICAg
IFVDaGFyMzIgdW5pY29kZVJhbmdlRW5kKCkgY29uc3QgeyBBU1NFUlQobV90eXBlID09IFVuaWNv
ZGVSYW5nZVRva2VuKTsgcmV0dXJuIG1fdW5pY29kZVJhbmdlLmVuZDsgfQorICAgIENTU1ZhbHVl
SUQgaWQoKSBjb25zdDsKKyAgICBDU1NWYWx1ZUlEIGZ1bmN0aW9uSWQoKSBjb25zdDsKKworICAg
IGJvb2wgaGFzU3RyaW5nQmFja2luZygpIGNvbnN0OworCisgICAgQ1NTUHJvcGVydHlJRCBwYXJz
ZUFzVW5yZXNvbHZlZENTU1Byb3BlcnR5SUQoKSBjb25zdDsKKworICAgIHZvaWQgc2VyaWFsaXpl
KFN0cmluZ0J1aWxkZXImKSBjb25zdDsKKworICAgIENTU1BhcnNlclRva2VuIGNvcHlXaXRoVXBk
YXRlZFN0cmluZyhjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdm9p
ZCBpbml0VmFsdWVGcm9tU3RyaW5nVmlldyhTdHJpbmdWaWV3IHN0cmluZykKKyAgICB7CisgICAg
ICAgIG1fdmFsdWVMZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgICAgIG1fdmFsdWVJczhC
aXQgPSBzdHJpbmcuaXM4Qml0KCk7CisgICAgICAgIG1fdmFsdWVEYXRhQ2hhclJhdyA9IG1fdmFs
dWVJczhCaXQgPyBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oc3RyaW5nLmNoYXJhY3RlcnM4KCkp
IDogc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHN0cmluZy5jaGFyYWN0ZXJzMTYoKSk7CisgICAg
fQorICAgIHVuc2lnbmVkIG1fdHlwZSA6IDY7IC8vIENTU1BhcnNlclRva2VuVHlwZQorICAgIHVu
c2lnbmVkIG1fYmxvY2tUeXBlIDogMjsgLy8gQmxvY2tUeXBlCisgICAgdW5zaWduZWQgbV9udW1l
cmljVmFsdWVUeXBlIDogMTsgLy8gTnVtZXJpY1ZhbHVlVHlwZQorICAgIHVuc2lnbmVkIG1fbnVt
ZXJpY1NpZ24gOiAyOyAvLyBOdW1lcmljU2lnbgorICAgIHVuc2lnbmVkIG1fdW5pdCA6IDc7IC8v
IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMKKworICAgIGJvb2wgdmFsdWVEYXRhQ2hhclJh
d0VxdWFsKGNvbnN0IENTU1BhcnNlclRva2VuJiBvdGhlcikgY29uc3Q7CisKKyAgICAvLyBtX3Zh
bHVlLi4uIGlzIGFuIHVucGFja2VkIFN0cmluZ1ZpZXcgc28gdGhhdCB3ZSBjYW4gcGFjayBpdAor
ICAgIC8vIHRpZ2h0bHkgd2l0aCB0aGUgcmVzdCBvZiB0aGlzIG9iamVjdCBmb3IgYSBzbWFsbGVy
IG9iamVjdCBzaXplLgorICAgIGJvb2wgbV92YWx1ZUlzOEJpdCA6IDE7CisgICAgdW5zaWduZWQg
bV92YWx1ZUxlbmd0aDsKKyAgICBjb25zdCB2b2lkKiBtX3ZhbHVlRGF0YUNoYXJSYXc7IC8vIEVp
dGhlciBMQ2hhciogb3IgVUNoYXIqLgorCisgICAgdW5pb24geworICAgICAgICBVQ2hhciBtX2Rl
bGltaXRlcjsKKyAgICAgICAgSGFzaFRva2VuVHlwZSBtX2hhc2hUb2tlblR5cGU7CisgICAgICAg
IGRvdWJsZSBtX251bWVyaWNWYWx1ZTsKKyAgICAgICAgbXV0YWJsZSBpbnQgbV9pZDsKKworICAg
ICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgVUNoYXIzMiBzdGFydDsKKyAgICAgICAgICAgIFVD
aGFyMzIgZW5kOworICAgICAgICB9IG1fdW5pY29kZVJhbmdlOworICAgIH07Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NTUGFyc2VyVG9rZW5faApJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlblJhbmdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuUmFuZ2UuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVG9r
ZW5SYW5nZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NiBAQAorLy8gQ29weXJpZ2h0
IDIwMTQgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRp
b24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8v
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJhbmdlLmgiCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworQ1NTUGFyc2VyVG9rZW4mIENTU1BhcnNlclRva2VuUmFuZ2U6OmVv
ZlRva2VuKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q1NTUGFyc2VyVG9rZW4+IGVv
ZlRva2VuKEVPRlRva2VuKTsKKyAgICByZXR1cm4gZW9mVG9rZW4uZ2V0KCk7Cit9CisKK0NTU1Bh
cnNlclRva2VuUmFuZ2UgQ1NTUGFyc2VyVG9rZW5SYW5nZTo6bWFrZVN1YlJhbmdlKGNvbnN0IENT
U1BhcnNlclRva2VuKiBmaXJzdCwgY29uc3QgQ1NTUGFyc2VyVG9rZW4qIGxhc3QpIGNvbnN0Cit7
CisgICAgaWYgKGZpcnN0ID09ICZlb2ZUb2tlbigpKQorICAgICAgICBmaXJzdCA9IG1fbGFzdDsK
KyAgICBpZiAobGFzdCA9PSAmZW9mVG9rZW4oKSkKKyAgICAgICAgbGFzdCA9IG1fbGFzdDsKKyAg
ICBBU1NFUlQoZmlyc3QgPD0gbGFzdCk7CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuUmFuZ2Uo
Zmlyc3QsIGxhc3QpOworfQorCitDU1NQYXJzZXJUb2tlblJhbmdlIENTU1BhcnNlclRva2VuUmFu
Z2U6OmNvbnN1bWVCbG9jaygpCit7CisgICAgQVNTRVJUKHBlZWsoKS5nZXRCbG9ja1R5cGUoKSA9
PSBDU1NQYXJzZXJUb2tlbjo6QmxvY2tTdGFydCk7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4q
IHN0YXJ0ID0gJnBlZWsoKSArIDE7CisgICAgdW5zaWduZWQgbmVzdGluZ0xldmVsID0gMDsKKyAg
ICBkbyB7CisgICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IGNvbnN1bWUoKTsK
KyAgICAgICAgaWYgKHRva2VuLmdldEJsb2NrVHlwZSgpID09IENTU1BhcnNlclRva2VuOjpCbG9j
a1N0YXJ0KQorICAgICAgICAgICAgbmVzdGluZ0xldmVsKys7CisgICAgICAgIGVsc2UgaWYgKHRv
a2VuLmdldEJsb2NrVHlwZSgpID09IENTU1BhcnNlclRva2VuOjpCbG9ja0VuZCkKKyAgICAgICAg
ICAgIG5lc3RpbmdMZXZlbC0tOworICAgIH0gd2hpbGUgKG5lc3RpbmdMZXZlbCAmJiBtX2ZpcnN0
IDwgbV9sYXN0KTsKKworICAgIGlmIChuZXN0aW5nTGV2ZWwpCisgICAgICAgIHJldHVybiBtYWtl
U3ViUmFuZ2Uoc3RhcnQsIG1fZmlyc3QpOyAvLyBFbmRlZCBhdCBFT0YKKyAgICByZXR1cm4gbWFr
ZVN1YlJhbmdlKHN0YXJ0LCBtX2ZpcnN0IC0gMSk7Cit9CisKK3ZvaWQgQ1NTUGFyc2VyVG9rZW5S
YW5nZTo6Y29uc3VtZUNvbXBvbmVudFZhbHVlKCkKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBn
b2luZyB0byBkbyBtdWx0aXBsZSBwYXNzZXMgb3ZlciBsYXJnZSBzZWN0aW9ucyBvZiBhIHN0eWxl
c2hlZXQuCisgICAgLy8gV2Ugc2hvdWxkIGNvbnNpZGVyIG9wdGltaXNpbmcgdGhpcyBieSBwcmVj
b21wdXRpbmcgd2hlcmUgZWFjaCBibG9jayBlbmRzLgorICAgIHVuc2lnbmVkIG5lc3RpbmdMZXZl
bCA9IDA7CisgICAgZG8geworICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSBj
b25zdW1lKCk7CisgICAgICAgIGlmICh0b2tlbi5nZXRCbG9ja1R5cGUoKSA9PSBDU1NQYXJzZXJU
b2tlbjo6QmxvY2tTdGFydCkKKyAgICAgICAgICAgIG5lc3RpbmdMZXZlbCsrOworICAgICAgICBl
bHNlIGlmICh0b2tlbi5nZXRCbG9ja1R5cGUoKSA9PSBDU1NQYXJzZXJUb2tlbjo6QmxvY2tFbmQp
CisgICAgICAgICAgICBuZXN0aW5nTGV2ZWwtLTsKKyAgICB9IHdoaWxlIChuZXN0aW5nTGV2ZWwg
JiYgbV9maXJzdCA8IG1fbGFzdCk7Cit9CisKK1N0cmluZyBDU1NQYXJzZXJUb2tlblJhbmdlOjpz
ZXJpYWxpemUoKSBjb25zdAoreworICAgIC8vIFdlJ3JlIHN1cHBvc2VkIHRvIGluc2VydCBjb21t
ZW50cyBiZXR3ZWVuIGNlcnRhaW4gcGFpcnMgb2YgdG9rZW4gdHlwZXMKKyAgICAvLyBhcyBwZXIg
c3BlYywgYnV0IHNpbmNlIHRoaXMgaXMgY3VycmVudGx5IG9ubHkgdXNlZCBmb3IgQHN1cHBvcnRz
IENTU09NCisgICAgLy8gd2UganVzdCBnZXQgdGhlc2UgY2FzZXMgd3JvbmcgYW5kIGF2b2lkIHRo
ZSBhZGRpdGlvbmFsIGNvbXBsZXhpdHkuCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAg
IGZvciAoY29uc3QgQ1NTUGFyc2VyVG9rZW4qIGl0ID0gbV9maXJzdDsgaXQgPCBtX2xhc3Q7ICsr
aXQpCisgICAgICAgIGl0LT5zZXJpYWxpemUoYnVpbGRlcik7CisgICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlblJhbmdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlblJhbmdlLmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlblJhbmdlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDUgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJv
bWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZuZGVmIENTU1BhcnNlclRva2VuUmFuZ2VfaAorI2Rl
ZmluZSBDU1NQYXJzZXJUb2tlblJhbmdlX2gKKworI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuLmgi
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEEg
Q1NTUGFyc2VyVG9rZW5SYW5nZSBpcyBhbiBpdGVyYXRvciBvdmVyIGEgc3VicmFuZ2Ugb2YgYSB2
ZWN0b3Igb2YgQ1NTUGFyc2VyVG9rZW5zLgorLy8gQWNjZXNzaW5nIG91dHNpZGUgb2YgdGhlIHJh
bmdlIHdpbGwgcmV0dXJuIGFuIGVuZGxlc3Mgc3RyZWFtIG9mIEVPRiB0b2tlbnMuCisvLyBUaGlz
IGNsYXNzIHJlZmVycyB0byBoYWxmLW9wZW4gaW50ZXJ2YWxzIFtmaXJzdCwgbGFzdCkuCitjbGFz
cyBDU1NQYXJzZXJUb2tlblJhbmdlIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTxzaXplX3QgaW5s
aW5lQnVmZmVyPgorICAgIENTU1BhcnNlclRva2VuUmFuZ2UoY29uc3QgVmVjdG9yPENTU1BhcnNl
clRva2VuLCBpbmxpbmVCdWZmZXI+JiB2ZWN0b3IpCisgICAgICAgIDogbV9maXJzdCh2ZWN0b3Iu
YmVnaW4oKSkKKyAgICAgICAgLCBtX2xhc3QodmVjdG9yLmVuZCgpKQorICAgIHsKKyAgICB9CisK
KyAgICAvLyBUaGlzIHNob3VsZCBiZSBjYWxsZWQgb24gYSByYW5nZSB3aXRoIHRva2VucyByZXR1
cm5lZCBieSB0aGF0IHJhbmdlLgorICAgIENTU1BhcnNlclRva2VuUmFuZ2UgbWFrZVN1YlJhbmdl
KGNvbnN0IENTU1BhcnNlclRva2VuKiBmaXJzdCwgY29uc3QgQ1NTUGFyc2VyVG9rZW4qIGxhc3Qp
IGNvbnN0OworCisgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3QgPT0gbV9s
YXN0OyB9CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4qIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1f
bGFzdDsgfQorCisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHBlZWsodW5zaWduZWQgb2Zmc2V0
ID0gMCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2ZpcnN0ICsgb2Zmc2V0ID49IG1fbGFz
dCkKKyAgICAgICAgICAgIHJldHVybiBlb2ZUb2tlbigpOworICAgICAgICByZXR1cm4gKihtX2Zp
cnN0ICsgb2Zmc2V0KTsKKyAgICB9CisKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgY29uc3Vt
ZSgpCisgICAgeworICAgICAgICBpZiAobV9maXJzdCA9PSBtX2xhc3QpCisgICAgICAgICAgICBy
ZXR1cm4gZW9mVG9rZW4oKTsKKyAgICAgICAgcmV0dXJuICptX2ZpcnN0Kys7CisgICAgfQorCisg
ICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIGNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkKKyAg
ICB7CisgICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiByZXN1bHQgPSBjb25zdW1lKCk7Cisg
ICAgICAgIGNvbnN1bWVXaGl0ZXNwYWNlKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorCisgICAgLy8gVGhlIHJldHVybmVkIHJhbmdlIGRvZXNuJ3QgaW5jbHVkZSB0aGUgYnJhY2tl
dHMKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGNvbnN1bWVCbG9jaygpOworCisgICAgdm9pZCBj
b25zdW1lQ29tcG9uZW50VmFsdWUoKTsKKworICAgIHZvaWQgY29uc3VtZVdoaXRlc3BhY2UoKQor
ICAgIHsKKyAgICAgICAgd2hpbGUgKHBlZWsoKS50eXBlKCkgPT0gV2hpdGVzcGFjZVRva2VuKQor
ICAgICAgICAgICAgKyttX2ZpcnN0OworICAgIH0KKworICAgIFN0cmluZyBzZXJpYWxpemUoKSBj
b25zdDsKKworICAgIGNvbnN0IENTU1BhcnNlclRva2VuKiBiZWdpbigpIGNvbnN0IHsgcmV0dXJu
IG1fZmlyc3Q7IH0KKworICAgIHN0YXRpYyBDU1NQYXJzZXJUb2tlbiYgZW9mVG9rZW4oKTsKKwor
cHJpdmF0ZToKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlKGNvbnN0IENTU1BhcnNlclRva2VuKiBm
aXJzdCwgY29uc3QgQ1NTUGFyc2VyVG9rZW4qIGxhc3QpCisgICAgICAgIDogbV9maXJzdChmaXJz
dCkKKyAgICAgICAgLCBtX2xhc3QobGFzdCkKKyAgICB7IH0KKworICAgIGNvbnN0IENTU1BhcnNl
clRva2VuKiBtX2ZpcnN0OworICAgIGNvbnN0IENTU1BhcnNlclRva2VuKiBtX2xhc3Q7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NQYXJzZXJUb2tlblJhbmdl
X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJv
cGVydHlQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDc4MyBAQAorLy8gQ29w
eXJpZ2h0IDIwMTUgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0
cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNlci5oIgorCisjaW5jbHVkZSAiQ1NTQmFz
aWNTaGFwZXMuaCIKKyNpbmNsdWRlICJDU1NCb3JkZXJJbWFnZS5oIgorI2luY2x1ZGUgIkNTU0Nv
bnRlbnREaXN0cmlidXRpb25WYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUu
aCIKKy8vIEZJWE1FLU5FV1BBUlNFUiAjaW5jbHVkZSAiQ1NTQ3VzdG9tSWRlbnRWYWx1ZS5oIgor
I2luY2x1ZGUgIkNTU0ZvbnRGYWNlU3JjVmFsdWUuaCIKKy8vIEZJWE1FLU5FV1BBUlNFUiAjaW5j
bHVkZSAiQ1NTRm9udEZhbWlseVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTRm9udEZlYXR1cmVWYWx1
ZS5oIgorI2luY2x1ZGUgIkNTU0Z1bmN0aW9uVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NHcmlkQXV0
b1JlcGVhdFZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTR3JpZExpbmVOYW1lc1ZhbHVlLmgiCisjaW5j
bHVkZSAiQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0luaGVyaXRl
ZFZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTSW5pdGlhbFZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUGFy
c2VyRmFzdFBhdGhzLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VySWRpb21zLmgiCisvLyBGSVhNRS1O
RVdQQVJTRVIgI2luY2x1ZGUgIkNTU1BhdGhWYWx1ZS5oIgorLy8gRklYTUUtTkVXUEFSU0VSICNp
bmNsdWRlICJDU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NQcmlt
aXRpdmVWYWx1ZU1hcHBpbmdzLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
LmgiCisvLyBGSVhNRS1ORVdQQVJTRVIgI2luY2x1ZGUgIkNTU1F1YWRWYWx1ZS5oIgorI2luY2x1
ZGUgIkNTU1JlZmxlY3RWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1NoYWRvd1ZhbHVlLmgiCisvLyBG
SVhNRS1ORVdQQVJTRVIgI2luY2x1ZGUgIkNTU1N0cmluZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQ1NT
VGltaW5nRnVuY3Rpb25WYWx1ZS5oIgorLy8gRklYTUUtTkVXUEFSU0VSICNpbmNsdWRlICJDU1NV
UklWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1VuaWNvZGVSYW5nZVZhbHVlLmgiCisjaW5jbHVkZSAi
Q1NTVW5zZXRWYWx1ZS5oIgorLy8gRklYTUUtTkVXUEFSU0VSICNpbmNsdWRlICJDU1NWYWx1ZVBh
aXIuaCIKKy8vIEZJWE1FLU5FV1BBUlNFUiAjaW5jbHVkZSAiQ1NTVmFyaWFibGVSZWZlcmVuY2VW
YWx1ZS5oIgorLy8gRklYTUUtTkVXUEFSU0VSICNpbmNsdWRlICJDU1NWYXJpYWJsZVBhcnNlci5o
IgorI2luY2x1ZGUgIkNvdW50ZXIuaCIKKyNpbmNsdWRlICJGb250RmFjZS5oIgorI2luY2x1ZGUg
Ikhhc2hUb29scy5oIgorI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCisjaW5jbHVkZSAiUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlNWR1BhdGhVdGlsaXRpZXMuaCIKKyNpbmNs
dWRlICJTdHlsZVByb3BlcnR5U2hvcnRoYW5kLmgiCisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dGF0aWMgYm9vbCBoYXNQcmVmaXgoY29uc3QgY2hhciogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgs
IGNvbnN0IGNoYXIqIHByZWZpeCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgaWYgKCFwcmVmaXhbaV0pCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgaWYgKHN0cmluZ1tpXSAhPSBwcmVmaXhbaV0pCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworI2lmIFBMQVRGT1JN
KElPUykKK3N0YXRpYyB2b2lkIGNzc1Byb3BlcnR5TmFtZUlPU0FsaWFzaW5nKGNvbnN0IGNoYXIq
IHByb3BlcnR5TmFtZSwgY29uc3QgY2hhciomIHByb3BlcnR5TmFtZUFsaWFzLCB1bnNpZ25lZCYg
bmV3TGVuZ3RoKQoreworICAgIGlmICghc3RyY21wKHByb3BlcnR5TmFtZSwgIi13ZWJraXQtaHlw
aGVuYXRlLWxvY2FsZSIpKSB7CisgICAgICAgIC8vIFdvcmtlZCBpbiBpT1MgNC4yLgorICAgICAg
ICBzdGF0aWMgY29uc3QgY2hhciB3ZWJraXRMb2NhbGVbXSA9ICItd2Via2l0LWxvY2FsZSI7Cisg
ICAgICAgIHByb3BlcnR5TmFtZUFsaWFzID0gd2Via2l0TG9jYWxlOworICAgICAgICBuZXdMZW5n
dGggPSBzdHJsZW4od2Via2l0TG9jYWxlKTsKKyAgICB9Cit9CisjZW5kaWYKKwordGVtcGxhdGUg
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgQ1NTUHJvcGVydHlJRCBjc3NQcm9wZXJ0
eUlEKGNvbnN0IENoYXJhY3RlclR5cGUqIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgbGVuZ3RoKQor
eworICAgIGNoYXIgYnVmZmVyW21heENTU1Byb3BlcnR5TmFtZUxlbmd0aCArIDEgKyAxXTsgLy8g
MSB0byB0dXJuICJhcHBsZSIvImtodG1sIiBpbnRvICJ3ZWJraXQiLCAxIGZvciBudWxsIGNoYXJh
Y3RlcgorICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0gbGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgQ2hhcmFjdGVyVHlwZSBjID0gcHJvcGVydHlOYW1lW2ldOworICAgICAgICBpZiAo
IWMgfHwgYyA+PSAweDdGKQorICAgICAgICAgICAgcmV0dXJuIENTU1Byb3BlcnR5SW52YWxpZDsg
Ly8gaWxsZWdhbCBjaGFyYWN0ZXIKKyAgICAgICAgYnVmZmVyW2ldID0gdG9BU0NJSUxvd2VyKGMp
OworICAgIH0KKyAgICBidWZmZXJbbGVuZ3RoXSA9ICdcMCc7CisgICAgCisgICAgY29uc3QgY2hh
ciogbmFtZSA9IGJ1ZmZlcjsKKyAgICBpZiAoYnVmZmVyWzBdID09ICctJykgeworI2lmIEVOQUJM
RShMRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykKKyAgICAgICAgLy8gSWYgdGhlIHByZWZpeCBp
cyAtYXBwbGUtIG9yIC1raHRtbC0sIGNoYW5nZSBpdCB0byAtd2Via2l0LS4KKyAgICAgICAgLy8g
VGhpcyBtYWtlcyB0aGUgc3RyaW5nIG9uZSBjaGFyYWN0ZXIgbG9uZ2VyLgorICAgICAgICBpZiAo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5sZWdhY3lDU1NWZW5kb3JQ
cmVmaXhlc0VuYWJsZWQoKQorICAgICAgICAgICAgJiYgKGhhc1ByZWZpeChidWZmZXIsIGxlbmd0
aCwgIi1hcHBsZS0iKSB8fCBoYXNQcmVmaXgoYnVmZmVyLCBsZW5ndGgsICIta2h0bWwtIikpKSB7
CisgICAgICAgICAgICBtZW1tb3ZlKGJ1ZmZlciArIDcsIGJ1ZmZlciArIDYsIGxlbmd0aCArIDEg
LSA2KTsKKyAgICAgICAgICAgIG1lbWNweShidWZmZXIsICItd2Via2l0IiwgNyk7CisgICAgICAg
ICAgICArK2xlbmd0aDsKKyAgICAgICAgfQorI2VuZGlmCisjaWYgUExBVEZPUk0oSU9TKQorICAg
ICAgICBjc3NQcm9wZXJ0eU5hbWVJT1NBbGlhc2luZyhidWZmZXIsIG5hbWUsIGxlbmd0aCk7Cisj
ZW5kaWYKKyAgICB9CisgICAgCisgICAgY29uc3QgUHJvcGVydHkqIGhhc2hUYWJsZUVudHJ5ID0g
ZmluZFByb3BlcnR5KG5hbWUsIGxlbmd0aCk7CisgICAgcmV0dXJuIGhhc2hUYWJsZUVudHJ5ID8g
c3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaGFzaFRhYmxlRW50cnktPmlkKSA6IENTU1Byb3Bl
cnR5SW52YWxpZDsKK30KKworc3RhdGljIGJvb2wgaXNBcHBsZUxlZ2FjeUNzc1ZhbHVlS2V5d29y
ZChjb25zdCBjaGFyKiB2YWx1ZUtleXdvcmQsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBzdGF0
aWMgY29uc3QgY2hhciBhcHBsZVByZWZpeFtdID0gIi1hcHBsZS0iOworICAgIHN0YXRpYyBjb25z
dCBjaGFyIGFwcGxlU3lzdGVtUHJlZml4W10gPSAiLWFwcGxlLXN5c3RlbSI7CisgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIGFwcGxlV2lyZWxlc3NQbGF5YmFja1RhcmdldEFjdGl2ZSA9IGdldFZhbHVl
TmFtZShDU1NWYWx1ZUFwcGxlV2lyZWxlc3NQbGF5YmFja1RhcmdldEFjdGl2ZSk7CisgICAgCisg
ICAgcmV0dXJuIGhhc1ByZWZpeCh2YWx1ZUtleXdvcmQsIGxlbmd0aCwgYXBwbGVQcmVmaXgpCisg
ICAgJiYgIWhhc1ByZWZpeCh2YWx1ZUtleXdvcmQsIGxlbmd0aCwgYXBwbGVTeXN0ZW1QcmVmaXgp
CisgICAgJiYgIVdURjo6ZXF1YWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHZhbHVl
S2V5d29yZCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihhcHBsZVdpcmVsZXNzUGxh
eWJhY2tUYXJnZXRBY3RpdmUpLCBsZW5ndGgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4KK3N0YXRpYyBDU1NWYWx1ZUlEIGNzc1ZhbHVlS2V5d29yZElEKGNvbnN0IENo
YXJhY3RlclR5cGUqIHZhbHVlS2V5d29yZCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGNoYXIg
YnVmZmVyW21heENTU1ZhbHVlS2V5d29yZExlbmd0aCArIDEgKyAxXTsgLy8gMSB0byB0dXJuICJh
cHBsZSIvImtodG1sIiBpbnRvICJ3ZWJraXQiLCAxIGZvciBudWxsIGNoYXJhY3RlcgorICAgIAor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0gbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgQ2hh
cmFjdGVyVHlwZSBjID0gdmFsdWVLZXl3b3JkW2ldOworICAgICAgICBpZiAoIWMgfHwgYyA+PSAw
eDdGKQorICAgICAgICAgICAgcmV0dXJuIENTU1ZhbHVlSW52YWxpZDsgLy8gaWxsZWdhbCBrZXl3
b3JkLgorICAgICAgICBidWZmZXJbaV0gPSBXVEY6OnRvQVNDSUlMb3dlcihjKTsKKyAgICB9Cisg
ICAgYnVmZmVyW2xlbmd0aF0gPSAnXDAnOworICAgIAorICAgIGlmIChidWZmZXJbMF0gPT0gJy0n
KSB7CisgICAgICAgIC8vIElmIHRoZSBwcmVmaXggaXMgLWFwcGxlLSBvciAta2h0bWwtLCBjaGFu
Z2UgaXQgdG8gLXdlYmtpdC0uCisgICAgICAgIC8vIFRoaXMgbWFrZXMgdGhlIHN0cmluZyBvbmUg
Y2hhcmFjdGVyIGxvbmdlci4KKyAgICAgICAgLy8gT24gaU9TIHdlIGRvbid0IHdhbnQgdG8gY2hh
bmdlIHZhbHVlcyBzdGFydGluZyB3aXRoIC1hcHBsZS1zeXN0ZW0gdG8gLXdlYmtpdC1zeXN0ZW0u
CisgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBtYW5nbGluZyB3aXRob3V0IGJyZWFraW5n
IHRoZSB3ZWIuCisgICAgICAgIGlmIChpc0FwcGxlTGVnYWN5Q3NzVmFsdWVLZXl3b3JkKGJ1ZmZl
ciwgbGVuZ3RoKSB8fCBoYXNQcmVmaXgoYnVmZmVyLCBsZW5ndGgsICIta2h0bWwtIikpIHsKKyAg
ICAgICAgICAgIG1lbW1vdmUoYnVmZmVyICsgNywgYnVmZmVyICsgNiwgbGVuZ3RoICsgMSAtIDYp
OworICAgICAgICAgICAgbWVtY3B5KGJ1ZmZlciwgIi13ZWJraXQiLCA3KTsKKyAgICAgICAgICAg
ICsrbGVuZ3RoOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGNvbnN0IFZhbHVlKiBoYXNo
VGFibGVFbnRyeSA9IGZpbmRWYWx1ZShidWZmZXIsIGxlbmd0aCk7CisgICAgcmV0dXJuIGhhc2hU
YWJsZUVudHJ5ID8gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJRD4oaGFzaFRhYmxlRW50cnktPmlkKSA6
IENTU1ZhbHVlSW52YWxpZDsKK30KKworQ1NTVmFsdWVJRCBjc3NWYWx1ZUtleXdvcmRJRChTdHJp
bmdWaWV3IHN0cmluZykKK3sKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7
CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiBDU1NWYWx1ZUludmFsaWQ7CisgICAg
aWYgKGxlbmd0aCA+IG1heENTU1ZhbHVlS2V5d29yZExlbmd0aCkKKyAgICAgICAgcmV0dXJuIENT
U1ZhbHVlSW52YWxpZDsKKyAgICAKKyAgICByZXR1cm4gc3RyaW5nLmlzOEJpdCgpID8gY3NzVmFs
dWVLZXl3b3JkSUQoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCkgOiBjc3NWYWx1ZUtleXdv
cmRJRChzdHJpbmcuY2hhcmFjdGVyczE2KCksIGxlbmd0aCk7Cit9CisKK0NTU1Byb3BlcnR5SUQg
dW5yZXNvbHZlZENTU1Byb3BlcnR5SUQoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAgIAorICAgIGlmICghbGVuZ3RoKQorICAg
ICAgICByZXR1cm4gQ1NTUHJvcGVydHlJbnZhbGlkOworICAgIGlmIChsZW5ndGggPiBtYXhDU1NQ
cm9wZXJ0eU5hbWVMZW5ndGgpCisgICAgICAgIHJldHVybiBDU1NQcm9wZXJ0eUludmFsaWQ7Cisg
ICAgCisgICAgcmV0dXJuIHN0cmluZy5pczhCaXQoKSA/IGNzc1Byb3BlcnR5SUQoc3RyaW5nLmNo
YXJhY3RlcnM4KCksIGxlbmd0aCkgOiBjc3NQcm9wZXJ0eUlEKHN0cmluZy5jaGFyYWN0ZXJzMTYo
KSwgbGVuZ3RoKTsKK30KKyAgICAKKy8vIEZJWE1FLU5FV1BBUlNFUgorLy8gQ29tbWVudCBvdXQg
cHJvcGVydHkgcGFyc2luZyBmb3Igbm93LgorLyoKK3VzaW5nIG5hbWVzcGFjZSBDU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnM7CisKKworQ1NTUHJvcGVydHlQYXJzZXI6OkNTU1Byb3BlcnR5UGFyc2Vy
KGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLAorICAgIGNvbnN0IENTU1BhcnNlckNv
bnRleHQmIGNvbnRleHQsIFZlY3RvcjxDU1NQcm9wZXJ0eSwgMjU2PiogcGFyc2VkUHJvcGVydGll
cykKKyAgICA6IG1fcmFuZ2UocmFuZ2UpCisgICAgLCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAs
IG1fcGFyc2VkUHJvcGVydGllcyhwYXJzZWRQcm9wZXJ0aWVzKQoreworICAgIG1fcmFuZ2UuY29u
c3VtZVdoaXRlc3BhY2UoKTsKK30KKwordm9pZCBDU1NQcm9wZXJ0eVBhcnNlcjo6YWRkUHJvcGVy
dHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTUHJvcGVydHlJRCBjdXJyZW50U2hvcnRoYW5k
LCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBib29sIGltcGxpY2l0KQor
eworICAgIEFTU0VSVCghaXNQcm9wZXJ0eUFsaWFzKHByb3BlcnR5KSk7CisKKyAgICBpbnQgc2hv
cnRoYW5kSW5kZXggPSAwOworICAgIGJvb2wgc2V0RnJvbVNob3J0aGFuZCA9IGZhbHNlOworCisg
ICAgaWYgKGN1cnJlbnRTaG9ydGhhbmQpIHsKKyAgICAgICAgVmVjdG9yPFN0eWxlUHJvcGVydHlT
aG9ydGhhbmQsIDQ+IHNob3J0aGFuZHM7CisgICAgICAgIGdldE1hdGNoaW5nU2hvcnRoYW5kc0Zv
ckxvbmdoYW5kKHByb3BlcnR5LCAmc2hvcnRoYW5kcyk7CisgICAgICAgIHNldEZyb21TaG9ydGhh
bmQgPSB0cnVlOworICAgICAgICBpZiAoc2hvcnRoYW5kcy5zaXplKCkgPiAxKQorICAgICAgICAg
ICAgc2hvcnRoYW5kSW5kZXggPSBpbmRleE9mU2hvcnRoYW5kRm9yTG9uZ2hhbmQoY3VycmVudFNo
b3J0aGFuZCwgc2hvcnRoYW5kcyk7CisgICAgfQorCisgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLT5h
cHBlbmQoQ1NTUHJvcGVydHkocHJvcGVydHksIHZhbHVlLCBpbXBvcnRhbnQsIHNldEZyb21TaG9y
dGhhbmQsIHNob3J0aGFuZEluZGV4LCBpbXBsaWNpdCkpOworfQorCit2b2lkIENTU1Byb3BlcnR5
UGFyc2VyOjphZGRFeHBhbmRlZFByb3BlcnR5Rm9yVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlLCBib29sIGltcG9ydGFudCkKK3sKKyAgICBjb25zdCBT
dHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQgPSBzaG9ydGhhbmRGb3JQcm9wZXJ0eShw
cm9wZXJ0eSk7CisgICAgdW5zaWduZWQgc2hvcnRoYW5kTGVuZ3RoID0gc2hvcnRoYW5kLmxlbmd0
aCgpOworICAgIEFTU0VSVChzaG9ydGhhbmRMZW5ndGgpOworICAgIGNvbnN0IENTU1Byb3BlcnR5
SUQqIGxvbmdoYW5kcyA9IHNob3J0aGFuZC5wcm9wZXJ0aWVzKCk7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHNob3J0aGFuZExlbmd0aDsgKytpKQorICAgICAgICBhZGRQcm9wZXJ0eShs
b25naGFuZHNbaV0sIHByb3BlcnR5LCB2YWx1ZSwgaW1wb3J0YW50KTsKK30KKworYm9vbCBDU1NQ
cm9wZXJ0eVBhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0
eSwgYm9vbCBpbXBvcnRhbnQsCisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Us
IGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsCisgICAgVmVjdG9yPENTU1Byb3BlcnR5
LCAyNTY+JiBwYXJzZWRQcm9wZXJ0aWVzLCBTdHlsZVJ1bGU6OlR5cGUgcnVsZVR5cGUpCit7Cisg
ICAgaW50IHBhcnNlZFByb3BlcnRpZXNTaXplID0gcGFyc2VkUHJvcGVydGllcy5zaXplKCk7CisK
KyAgICBDU1NQcm9wZXJ0eVBhcnNlciBwYXJzZXIocmFuZ2UsIGNvbnRleHQsICZwYXJzZWRQcm9w
ZXJ0aWVzKTsKKyAgICBDU1NQcm9wZXJ0eUlEIHJlc29sdmVkUHJvcGVydHkgPSByZXNvbHZlQ1NT
UHJvcGVydHlJRCh1bnJlc29sdmVkUHJvcGVydHkpOworICAgIGJvb2wgcGFyc2VTdWNjZXNzOwor
CisgICAgaWYgKHJ1bGVUeXBlID09IFN0eWxlUnVsZTo6Vmlld3BvcnQpIHsKKyAgICAgICAgcGFy
c2VTdWNjZXNzID0gKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc1ZpZXdwb3J0RW5hYmxlZCgp
IHx8IGlzVUFTaGVldEJlaGF2aW9yKGNvbnRleHQubW9kZSgpKSkKKyAgICAgICAgICAgICYmIHBh
cnNlci5wYXJzZVZpZXdwb3J0RGVzY3JpcHRvcihyZXNvbHZlZFByb3BlcnR5LCBpbXBvcnRhbnQp
OworICAgIH0gZWxzZSBpZiAocnVsZVR5cGUgPT0gU3R5bGVSdWxlOjpGb250RmFjZSkgeworICAg
ICAgICBwYXJzZVN1Y2Nlc3MgPSBwYXJzZXIucGFyc2VGb250RmFjZURlc2NyaXB0b3IocmVzb2x2
ZWRQcm9wZXJ0eSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcGFyc2VTdWNjZXNzID0gcGFyc2Vy
LnBhcnNlVmFsdWVTdGFydCh1bnJlc29sdmVkUHJvcGVydHksIGltcG9ydGFudCk7CisgICAgfQor
CisgICAgLy8gVGhpcyBkb2Vzbid0IGNvdW50IFVBIHN0eWxlIHNoZWV0cworICAgIGlmIChwYXJz
ZVN1Y2Nlc3MgJiYgY29udGV4dC51c2VDb3VudGVyKCkpCisgICAgICAgIGNvbnRleHQudXNlQ291
bnRlcigpLT5jb3VudChjb250ZXh0Lm1vZGUoKSwgdW5yZXNvbHZlZFByb3BlcnR5KTsKKworICAg
IGlmICghcGFyc2VTdWNjZXNzKQorICAgICAgICBwYXJzZWRQcm9wZXJ0aWVzLnNocmluayhwYXJz
ZWRQcm9wZXJ0aWVzU2l6ZSk7CisKKyAgICByZXR1cm4gcGFyc2VTdWNjZXNzOworfQorCitjb25z
dCBDU1NWYWx1ZSogQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlU2luZ2xlVmFsdWUoCisgICAgQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNv
bnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ1NTUHJvcGVydHlQYXJzZXIg
cGFyc2VyKHJhbmdlLCBjb250ZXh0LCBudWxscHRyKTsKKyAgICBjb25zdCBDU1NWYWx1ZSogdmFs
dWUgPSBwYXJzZXIucGFyc2VTaW5nbGVWYWx1ZShwcm9wZXJ0eSk7CisgICAgaWYgKCF2YWx1ZSB8
fCAhcGFyc2VyLm1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuIHZhbHVlOworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVZhbHVlU3Rh
cnQoQ1NTUHJvcGVydHlJRCB1bnJlc29sdmVkUHJvcGVydHksIGJvb2wgaW1wb3J0YW50KQorewor
ICAgIGlmIChjb25zdW1lQ1NTV2lkZUtleXdvcmQodW5yZXNvbHZlZFByb3BlcnR5LCBpbXBvcnRh
bnQpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIENTU1BhcnNlclRva2VuUmFuZ2Ugb3Jp
Z2luYWxSYW5nZSA9IG1fcmFuZ2U7CisgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkID0gcmVz
b2x2ZUNTU1Byb3BlcnR5SUQodW5yZXNvbHZlZFByb3BlcnR5KTsKKyAgICBib29sIGlzU2hvcnRo
YW5kID0gaXNTaG9ydGhhbmRQcm9wZXJ0eShwcm9wZXJ0eUlkKTsKKworICAgIGlmIChpc1Nob3J0
aGFuZCkgeworICAgICAgICAvLyBWYXJpYWJsZSByZWZlcmVuY2VzIHdpbGwgZmFpbCB0byBwYXJz
ZSBoZXJlIGFuZCB3aWxsIGZhbGwgb3V0IHRvIHRoZSB2YXJpYWJsZSByZWYgcGFyc2VyIGJlbG93
LgorICAgICAgICBpZiAocGFyc2VTaG9ydGhhbmQodW5yZXNvbHZlZFByb3BlcnR5LCBpbXBvcnRh
bnQpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYg
KGNvbnN0IENTU1ZhbHVlKiBwYXJzZWRWYWx1ZSA9IHBhcnNlU2luZ2xlVmFsdWUodW5yZXNvbHZl
ZFByb3BlcnR5KSkgeworICAgICAgICAgICAgaWYgKG1fcmFuZ2UuYXRFbmQoKSkgeworICAgICAg
ICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnR5SWQsIENTU1Byb3BlcnR5SW52YWxpZCwgKnBh
cnNlZFZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmNzc1ZhcmlhYmxlc0VuYWJsZWQoKSAmJiBDU1NWYXJpYWJsZVBhcnNlcjo6Y29udGFp
bnNWYWxpZFZhcmlhYmxlUmVmZXJlbmNlcyhvcmlnaW5hbFJhbmdlKSkgeworICAgICAgICBDU1NW
YXJpYWJsZVJlZmVyZW5jZVZhbHVlKiB2YXJpYWJsZSA9IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFs
dWU6OmNyZWF0ZShDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZShvcmlnaW5hbFJhbmdlKSk7CisKKyAg
ICAgICAgaWYgKGlzU2hvcnRoYW5kKSB7CisgICAgICAgICAgICBjb25zdCBDU1NQZW5kaW5nU3Vi
c3RpdHV0aW9uVmFsdWUmIHBlbmRpbmdWYWx1ZSA9ICpDU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFs
dWU6OmNyZWF0ZShwcm9wZXJ0eUlkLCB2YXJpYWJsZSk7CisgICAgICAgICAgICBhZGRFeHBhbmRl
ZFByb3BlcnR5Rm9yVmFsdWUocHJvcGVydHlJZCwgcGVuZGluZ1ZhbHVlLCBpbXBvcnRhbnQpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydHlJZCwgQ1NT
UHJvcGVydHlJbnZhbGlkLCAqdmFyaWFibGUsIGltcG9ydGFudCk7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorIAorYm9vbCBD
U1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUNTU1dpZGVLZXl3b3JkKENTU1Byb3BlcnR5SUQgdW5y
ZXNvbHZlZFByb3BlcnR5LCBib29sIGltcG9ydGFudCkKK3sKKyAgICBDU1NQYXJzZXJUb2tlblJh
bmdlIHJhbmdlQ29weSA9IG1fcmFuZ2U7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlQ29weS5j
b25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgaWYgKCFyYW5nZUNvcHkuYXRF
bmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1NTVmFsdWUqIHZhbHVlID0gbnVs
bHB0cjsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVJbml0aWFsKQorICAgICAgICB2YWx1ZSA9IENT
U0luaXRpYWxWYWx1ZTo6Y3JlYXRlKCk7CisgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVJbmhl
cml0KQorICAgICAgICB2YWx1ZSA9IENTU0luaGVyaXRlZFZhbHVlOjpjcmVhdGUoKTsKKyAgICBl
bHNlIGlmIChpZCA9PSBDU1NWYWx1ZVVuc2V0KQorICAgICAgICB2YWx1ZSA9IENTU1Vuc2V0VmFs
dWU6OmNyZWF0ZSgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eSA9IHJlc29sdmVDU1NQcm9wZXJ0eUlEKHVucmVzb2x2ZWRQcm9w
ZXJ0eSk7CisgICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kID0gc2hv
cnRoYW5kRm9yUHJvcGVydHkocHJvcGVydHkpOworICAgIGlmICghc2hvcnRoYW5kLmxlbmd0aCgp
KSB7CisgICAgICAgIGlmIChDU1NQcm9wZXJ0eU1ldGFkYXRhOjppc0Rlc2NyaXB0b3JPbmx5KHVu
cmVzb2x2ZWRQcm9wZXJ0eSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFk
ZFByb3BlcnR5KHByb3BlcnR5LCBDU1NQcm9wZXJ0eUludmFsaWQsICp2YWx1ZSwgaW1wb3J0YW50
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBhZGRFeHBhbmRlZFByb3BlcnR5Rm9yVmFsdWUocHJv
cGVydHksICp2YWx1ZSwgaW1wb3J0YW50KTsKKyAgICB9CisgICAgbV9yYW5nZSA9IHJhbmdlQ29w
eTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIENTU1ZhbHVlTGlzdCogY29uc3VtZVRy
YW5zZm9ybU9yaWdpbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBj
c3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzKQoreworICAgIENTU1ZhbHVlKiBy
ZXN1bHRYID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogcmVzdWx0WSA9IG51bGxwdHI7CisgICAg
aWYgKGNvbnN1bWVPbmVPclR3b1ZhbHVlZFBvc2l0aW9uKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1
bml0bGVzcywgcmVzdWx0WCwgcmVzdWx0WSkpIHsKKyAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICBsaXN0LT5h
cHBlbmQoKnJlc3VsdFgpOworICAgICAgICBsaXN0LT5hcHBlbmQoKnJlc3VsdFkpOworICAgICAg
ICBDU1NWYWx1ZSogcmVzdWx0WiA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUs
IFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBpZiAoIXJlc3VsdFopCisgICAgICAgICAgICByZXN1
bHRaID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGU6OlBpeGVscyk7CisgICAgICAgIGxpc3QtPmFwcGVuZCgqcmVzdWx0Wik7CisgICAgICAg
IHJldHVybiBsaXN0OworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworLy8gTWV0aG9k
cyBmb3IgY29uc3VtaW5nIG5vbi1zaG9ydGhhbmQgcHJvcGVydGllcyBzdGFydHMgaGVyZS4KK3N0
YXRpYyBDU1NWYWx1ZSogY29uc3VtZVdpbGxDaGFuZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIHZhbHVl
cyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAvLyBFdmVyeSBj
b21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBpZGVudGlmaWVycyBpcyBhIHZhbGlkIHdpbGwtY2hhbmdl
IHZhbHVlLAorICAgIC8vIHVubGVzcyB0aGUgbGlzdCBpbmNsdWRlcyBhbiBleHBsaWNpdGx5IGRp
c2FsbG93ZWQgaWRlbnRpZmllci4KKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBpZiAocmFu
Z2UucGVlaygpLnR5cGUoKSAhPSBJZGVudFRva2VuKQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIENTU1Byb3BlcnR5SUQgdW5yZXNvbHZlZFByb3BlcnR5ID0gdW5yZXNvbHZl
ZENTU1Byb3BlcnR5SUQocmFuZ2UucGVlaygpLnZhbHVlKCkpOworICAgICAgICBpZiAodW5yZXNv
bHZlZFByb3BlcnR5KSB7CisgICAgICAgICAgICBBU1NFUlQoQ1NTUHJvcGVydHlNZXRhZGF0YTo6
aXNFbmFibGVkUHJvcGVydHkodW5yZXNvbHZlZFByb3BlcnR5KSk7CisgICAgICAgICAgICAvLyBO
b3cgImFsbCIgaXMgdXNlZCBieSBib3RoIENTU1ZhbHVlIGFuZCBDU1NQcm9wZXJ0eVZhbHVlLgor
ICAgICAgICAgICAgLy8gTmVlZCB0byByZXR1cm4gbnVsbHB0ciB3aGVuIGN1cnJlbnRWYWx1ZSBp
cyBDU1NQcm9wZXJ0eUFsbC4KKyAgICAgICAgICAgIGlmICh1bnJlc29sdmVkUHJvcGVydHkgPT0g
Q1NTUHJvcGVydHlXaWxsQ2hhbmdlIHx8IHVucmVzb2x2ZWRQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0
eUFsbCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHZhbHVl
cy0+YXBwZW5kKCpDU1NDdXN0b21JZGVudFZhbHVlOjpjcmVhdGUodW5yZXNvbHZlZFByb3BlcnR5
KSk7CisgICAgICAgICAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3dpdGNoIChyYW5nZS5wZWVrKCkuaWQoKSkgewor
ICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVl
QWxsOgorICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUF1dG86CisgICAgICAgICAgICBjYXNlIENT
U1ZhbHVlRGVmYXVsdDoKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVJbml0aWFsOgorICAgICAg
ICAgICAgY2FzZSBDU1NWYWx1ZUluaGVyaXQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQ29udGVudHM6CisgICAgICAgICAgICBjYXNl
IENTU1ZhbHVlU2Nyb2xsUG9zaXRpb246CisgICAgICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQo
KmNvbnN1bWVJZGVudChyYW5nZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVz
cGFjZSgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgaWYgKHJhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiB2YWx1ZXM7Cit9CisKK3N0
YXRpYyBDU1NGb250RmVhdHVyZVZhbHVlKiBjb25zdW1lRm9udEZlYXR1cmVUYWcoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgLy8gRmVhdHVyZSB0YWcgbmFtZSBjb25zaXN0cyBv
ZiA0LWxldHRlciBjaGFyYWN0ZXJzLgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB0YWdOYW1l
TGVuZ3RoID0gNDsKKworICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLmNv
bnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgLy8gRmVhdHVyZSB0YWcgbmFtZSBjb21l
cyBmaXJzdAorICAgIGlmICh0b2tlbi50eXBlKCkgIT0gU3RyaW5nVG9rZW4pCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIGlmICh0b2tlbi52YWx1ZSgpLmxlbmd0aCgpICE9IHRhZ05hbWVM
ZW5ndGgpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIEF0b21pY1N0cmluZyB0YWcgPSB0
b2tlbi52YWx1ZSgpLnRvQXRvbWljU3RyaW5nKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHRhZ05hbWVMZW5ndGg7ICsraSkgeworICAgICAgICAvLyBMaW1pdHMgdGhlIHJhbmdlIG9m
IGNoYXJhY3RlcnMgdG8gMHgyMC0weDdFLCBmb2xsb3dpbmcgdGhlIHRhZyBuYW1lIHJ1bGVzIGRl
ZmllbmQgaW4gdGhlIE9wZW5UeXBlIHNwZWNpZmljYXRpb24uCisgICAgICAgIFVDaGFyIGNoYXJh
Y3RlciA9IHRhZ1tpXTsKKyAgICAgICAgaWYgKGNoYXJhY3RlciA8IDB4MjAgfHwgY2hhcmFjdGVy
ID4gMHg3RSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGludCB0
YWdWYWx1ZSA9IDE7CisgICAgLy8gRmVhdHVyZSB0YWcgdmFsdWVzIGNvdWxkIGZvbGxvdzogPGlu
dGVnZXI+IHwgb24gfCBvZmYKKyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBOdW1iZXJU
b2tlbiAmJiByYW5nZS5wZWVrKCkubnVtZXJpY1ZhbHVlVHlwZSgpID09IEludGVnZXJWYWx1ZVR5
cGUgJiYgcmFuZ2UucGVlaygpLm51bWVyaWNWYWx1ZSgpID49IDApIHsKKyAgICAgICAgdGFnVmFs
dWUgPSBjbGFtcFRvPGludD4ocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1l
cmljVmFsdWUoKSk7CisgICAgICAgIGlmICh0YWdWYWx1ZSA8IDApCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9IGVsc2UgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVl
T24gfHwgcmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVPZmYpIHsKKyAgICAgICAgdGFnVmFs
dWUgPSByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCkgPT0gQ1NTVmFsdWVP
bjsKKyAgICB9CisgICAgcmV0dXJuIENTU0ZvbnRGZWF0dXJlVmFsdWU6OmNyZWF0ZSh0YWcsIHRh
Z1ZhbHVlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lRm9udEZlYXR1cmVTZXR0aW5n
cyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlk
KCkgPT0gQ1NTVmFsdWVOb3JtYWwpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2Up
OworICAgIENTU1ZhbHVlTGlzdCogc2V0dGluZ3MgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1h
U2VwYXJhdGVkKCk7CisgICAgZG8geworICAgICAgICBDU1NGb250RmVhdHVyZVZhbHVlKiBmb250
RmVhdHVyZVZhbHVlID0gY29uc3VtZUZvbnRGZWF0dXJlVGFnKHJhbmdlKTsKKyAgICAgICAgaWYg
KCFmb250RmVhdHVyZVZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IHNldHRpbmdzLT5hcHBlbmQoKmZvbnRGZWF0dXJlVmFsdWUpOworICAgIH0gd2hpbGUgKGNvbnN1
bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKTsKKyAgICByZXR1cm4gc2V0dGluZ3M7
Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVBhZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVDdXN0
b21JZGVudChyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVF1b3RlcyhDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0g
Q1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICBD
U1NWYWx1ZUxpc3QqIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQo
KTsKKyAgICB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpIHsKKyAgICAgICAgQ1NTU3RyaW5nVmFsdWUq
IHBhcnNlZFZhbHVlID0gY29uc3VtZVN0cmluZyhyYW5nZSk7CisgICAgICAgIGlmICghcGFyc2Vk
VmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgdmFsdWVzLT5hcHBl
bmQoKnBhcnNlZFZhbHVlKTsKKyAgICB9CisgICAgaWYgKHZhbHVlcy0+bGVuZ3RoKCkgJiYgdmFs
dWVzLT5sZW5ndGgoKSAlIDIgPT0gMCkKKyAgICAgICAgcmV0dXJuIHZhbHVlczsKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lV2Via2l0SGlnaGxpZ2h0
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQo
KSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwor
ICAgIHJldHVybiBjb25zdW1lU3RyaW5nKHJhbmdlKTsKK30KKworY2xhc3MgRm9udFZhcmlhbnRM
aWdhdHVyZXNQYXJzZXIgeworICAgIFNUQUNLX0FMTE9DQVRFRCgpOworCitwdWJsaWM6CisgICAg
Rm9udFZhcmlhbnRMaWdhdHVyZXNQYXJzZXIoKQorICAgICAgICA6IG1fc2F3Q29tbW9uTGlnYXR1
cmVzVmFsdWUoZmFsc2UpCisgICAgICAgICwgbV9zYXdEaXNjcmV0aW9uYXJ5TGlnYXR1cmVzVmFs
dWUoZmFsc2UpCisgICAgICAgICwgbV9zYXdIaXN0b3JpY2FsTGlnYXR1cmVzVmFsdWUoZmFsc2Up
CisgICAgICAgICwgbV9zYXdDb250ZXh0dWFsTGlnYXR1cmVzVmFsdWUoZmFsc2UpCisgICAgICAg
ICwgbV9yZXN1bHQoQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpKQorICAgIHsK
KyAgICB9CisKKyAgICBlbnVtIGNsYXNzIFBhcnNlUmVzdWx0IHsKKyAgICAgICAgQ29uc3VtZWRW
YWx1ZSwKKyAgICAgICAgRGlzYWxsb3dlZFZhbHVlLAorICAgICAgICBVbmtub3duVmFsdWUKKyAg
ICB9OworCisgICAgUGFyc2VSZXN1bHQgY29uc3VtZUxpZ2F0dXJlKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQorICAgIHsKKyAgICAgICAgQ1NTVmFsdWVJRCB2YWx1ZUlEID0gcmFuZ2UucGVl
aygpLmlkKCk7CisgICAgICAgIHN3aXRjaCAodmFsdWVJRCkgeworICAgICAgICBjYXNlIENTU1Zh
bHVlTm9Db21tb25MaWdhdHVyZXM6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVDb21tb25MaWdhdHVy
ZXM6CisgICAgICAgICAgICBpZiAobV9zYXdDb21tb25MaWdhdHVyZXNWYWx1ZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHQ6OkRpc2FsbG93ZWRWYWx1ZTsKKyAgICAgICAgICAg
IG1fc2F3Q29tbW9uTGlnYXR1cmVzVmFsdWUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQ1NTVmFsdWVOb0Rpc2NyZXRpb25hcnlMaWdhdHVyZXM6CisgICAgICAgIGNh
c2UgQ1NTVmFsdWVEaXNjcmV0aW9uYXJ5TGlnYXR1cmVzOgorICAgICAgICAgICAgaWYgKG1fc2F3
RGlzY3JldGlvbmFyeUxpZ2F0dXJlc1ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBQYXJz
ZVJlc3VsdDo6RGlzYWxsb3dlZFZhbHVlOworICAgICAgICAgICAgbV9zYXdEaXNjcmV0aW9uYXJ5
TGlnYXR1cmVzVmFsdWUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
Q1NTVmFsdWVOb0hpc3RvcmljYWxMaWdhdHVyZXM6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVIaXN0
b3JpY2FsTGlnYXR1cmVzOgorICAgICAgICAgICAgaWYgKG1fc2F3SGlzdG9yaWNhbExpZ2F0dXJl
c1ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBQYXJzZVJlc3VsdDo6RGlzYWxsb3dlZFZh
bHVlOworICAgICAgICAgICAgbV9zYXdIaXN0b3JpY2FsTGlnYXR1cmVzVmFsdWUgPSB0cnVlOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVOb0NvbnRleHR1YWw6Cisg
ICAgICAgIGNhc2UgQ1NTVmFsdWVDb250ZXh0dWFsOgorICAgICAgICAgICAgaWYgKG1fc2F3Q29u
dGV4dHVhbExpZ2F0dXJlc1ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBQYXJzZVJlc3Vs
dDo6RGlzYWxsb3dlZFZhbHVlOworICAgICAgICAgICAgbV9zYXdDb250ZXh0dWFsTGlnYXR1cmVz
VmFsdWUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHQ6OlVua25vd25WYWx1ZTsKKyAgICAgICAgfQorICAg
ICAgICBtX3Jlc3VsdC0+YXBwZW5kKCpjb25zdW1lSWRlbnQocmFuZ2UpKTsKKyAgICAgICAgcmV0
dXJuIFBhcnNlUmVzdWx0OjpDb25zdW1lZFZhbHVlOworICAgIH0KKworICAgIENTU1ZhbHVlKiBm
aW5hbGl6ZVZhbHVlKCkKKyAgICB7CisgICAgICAgIGlmICghbV9yZXN1bHQtPmxlbmd0aCgpKQor
ICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENT
U1ZhbHVlTm9ybWFsKTsKKyAgICAgICAgcmV0dXJuIG1fcmVzdWx0LnJlbGVhc2UoKTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX3Nhd0NvbW1vbkxpZ2F0dXJlc1ZhbHVlOworICAgIGJv
b2wgbV9zYXdEaXNjcmV0aW9uYXJ5TGlnYXR1cmVzVmFsdWU7CisgICAgYm9vbCBtX3Nhd0hpc3Rv
cmljYWxMaWdhdHVyZXNWYWx1ZTsKKyAgICBib29sIG1fc2F3Q29udGV4dHVhbExpZ2F0dXJlc1Zh
bHVlOworICAgIE1lbWJlcjxDU1NWYWx1ZUxpc3Q+IG1fcmVzdWx0OworfTsKKworc3RhdGljIENT
U1ZhbHVlKiBjb25zdW1lRm9udFZhcmlhbnRMaWdhdHVyZXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9ybWFsIHx8
IHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVJZGVudChyYW5nZSk7CisKKyAgICBGb250VmFyaWFudExpZ2F0dXJlc1BhcnNlciBsaWdhdHVy
ZXNQYXJzZXI7CisgICAgZG8geworICAgICAgICBpZiAobGlnYXR1cmVzUGFyc2VyLmNvbnN1bWVM
aWdhdHVyZShyYW5nZSkgIT0KKyAgICAgICAgICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzUGFyc2Vy
OjpQYXJzZVJlc3VsdDo6Q29uc3VtZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgpKTsKKworICAgIHJldHVybiBsaWdhdHVyZXNQ
YXJzZXIuZmluYWxpemVWYWx1ZSgpOworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNv
bnN1bWVGb250VmFyaWFudENhcHMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAg
cmV0dXJuIGNvbnN1bWVJZGVudDxDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVTbWFsbENhcHMsIENT
U1ZhbHVlQWxsU21hbGxDYXBzLAorICAgICAgICBDU1NWYWx1ZVBldGl0ZUNhcHMsIENTU1ZhbHVl
QWxsUGV0aXRlQ2FwcywKKyAgICAgICAgQ1NTVmFsdWVVbmljYXNlLCBDU1NWYWx1ZVRpdGxpbmdD
YXBzPihyYW5nZSk7Cit9CisKK2NsYXNzIEZvbnRWYXJpYW50TnVtZXJpY1BhcnNlciB7CisgICAg
U1RBQ0tfQUxMT0NBVEVEKCk7CisKK3B1YmxpYzoKKyAgICBGb250VmFyaWFudE51bWVyaWNQYXJz
ZXIoKQorICAgICAgICA6IG1fc2F3TnVtZXJpY0ZpZ3VyZVZhbHVlKGZhbHNlKQorICAgICAgICAs
IG1fc2F3TnVtZXJpY1NwYWNpbmdWYWx1ZShmYWxzZSkKKyAgICAgICAgLCBtX3Nhd051bWVyaWNG
cmFjdGlvblZhbHVlKGZhbHNlKQorICAgICAgICAsIG1fc2F3T3JkaW5hbFZhbHVlKGZhbHNlKQor
ICAgICAgICAsIG1fc2F3U2xhc2hlZFplcm9WYWx1ZShmYWxzZSkKKyAgICAgICAgLCBtX3Jlc3Vs
dChDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCkpCisgICAgeworICAgIH0KKwor
ICAgIGVudW0gY2xhc3MgUGFyc2VSZXN1bHQgeworICAgICAgICBDb25zdW1lZFZhbHVlLAorICAg
ICAgICBEaXNhbGxvd2VkVmFsdWUsCisgICAgICAgIFVua25vd25WYWx1ZQorICAgIH07CisKKyAg
ICBQYXJzZVJlc3VsdCBjb25zdW1lTnVtZXJpYyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkK
KyAgICB7CisgICAgICAgIENTU1ZhbHVlSUQgdmFsdWVJRCA9IHJhbmdlLnBlZWsoKS5pZCgpOwor
ICAgICAgICBzd2l0Y2ggKHZhbHVlSUQpIHsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUxpbmluZ051
bXM6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVPbGRzdHlsZU51bXM6CisgICAgICAgICAgICBpZiAo
bV9zYXdOdW1lcmljRmlndXJlVmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFBhcnNlUmVz
dWx0OjpEaXNhbGxvd2VkVmFsdWU7CisgICAgICAgICAgICBtX3Nhd051bWVyaWNGaWd1cmVWYWx1
ZSA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVByb3Bv
cnRpb25hbE51bXM6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVUYWJ1bGFyTnVtczoKKyAgICAgICAg
ICAgIGlmIChtX3Nhd051bWVyaWNTcGFjaW5nVmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJu
IFBhcnNlUmVzdWx0OjpEaXNhbGxvd2VkVmFsdWU7CisgICAgICAgICAgICBtX3Nhd051bWVyaWNT
cGFjaW5nVmFsdWUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NT
VmFsdWVEaWFnb25hbEZyYWN0aW9uczoKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVN0YWNrZWRGcmFj
dGlvbnM6CisgICAgICAgICAgICBpZiAobV9zYXdOdW1lcmljRnJhY3Rpb25WYWx1ZSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHQ6OkRpc2FsbG93ZWRWYWx1ZTsKKyAgICAgICAg
ICAgIG1fc2F3TnVtZXJpY0ZyYWN0aW9uVmFsdWUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQ1NTVmFsdWVPcmRpbmFsOgorICAgICAgICAgICAgaWYgKG1fc2F3T3Jk
aW5hbFZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBQYXJzZVJlc3VsdDo6RGlzYWxsb3dl
ZFZhbHVlOworICAgICAgICAgICAgbV9zYXdPcmRpbmFsVmFsdWUgPSB0cnVlOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVTbGFzaGVkWmVybzoKKyAgICAgICAgICAg
IGlmIChtX3Nhd1NsYXNoZWRaZXJvVmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFBhcnNl
UmVzdWx0OjpEaXNhbGxvd2VkVmFsdWU7CisgICAgICAgICAgICBtX3Nhd1NsYXNoZWRaZXJvVmFs
dWUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICByZXR1cm4gUGFyc2VSZXN1bHQ6OlVua25vd25WYWx1ZTsKKyAgICAgICAgfQorICAgICAg
ICBtX3Jlc3VsdC0+YXBwZW5kKCpjb25zdW1lSWRlbnQocmFuZ2UpKTsKKyAgICAgICAgcmV0dXJu
IFBhcnNlUmVzdWx0OjpDb25zdW1lZFZhbHVlOworICAgIH0KKworICAgIENTU1ZhbHVlKiBmaW5h
bGl6ZVZhbHVlKCkKKyAgICB7CisgICAgICAgIGlmICghbV9yZXN1bHQtPmxlbmd0aCgpKQorICAg
ICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1Zh
bHVlTm9ybWFsKTsKKyAgICAgICAgcmV0dXJuIG1fcmVzdWx0LnJlbGVhc2UoKTsKKyAgICB9CisK
KworcHJpdmF0ZToKKyAgICBib29sIG1fc2F3TnVtZXJpY0ZpZ3VyZVZhbHVlOworICAgIGJvb2wg
bV9zYXdOdW1lcmljU3BhY2luZ1ZhbHVlOworICAgIGJvb2wgbV9zYXdOdW1lcmljRnJhY3Rpb25W
YWx1ZTsKKyAgICBib29sIG1fc2F3T3JkaW5hbFZhbHVlOworICAgIGJvb2wgbV9zYXdTbGFzaGVk
WmVyb1ZhbHVlOworICAgIE1lbWJlcjxDU1NWYWx1ZUxpc3Q+IG1fcmVzdWx0OworfTsKKworc3Rh
dGljIENTU1ZhbHVlKiBjb25zdW1lRm9udFZhcmlhbnROdW1lcmljKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vcm1h
bCkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBGb250VmFyaWFu
dE51bWVyaWNQYXJzZXIgbnVtZXJpY1BhcnNlcjsKKyAgICBkbyB7CisgICAgICAgIGlmIChudW1l
cmljUGFyc2VyLmNvbnN1bWVOdW1lcmljKHJhbmdlKSAhPQorICAgICAgICAgICAgRm9udFZhcmlh
bnROdW1lcmljUGFyc2VyOjpQYXJzZVJlc3VsdDo6Q29uc3VtZWRWYWx1ZSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgpKTsKKworICAgIHJl
dHVybiBudW1lcmljUGFyc2VyLmZpbmFsaXplVmFsdWUoKTsKK30KKworc3RhdGljIENTU1ByaW1p
dGl2ZVZhbHVlKiBjb25zdW1lRm9udFZhcmlhbnRDU1MyMShDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSkKK3sKKyAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1
ZVNtYWxsQ2Fwcz4ocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVGb250VmFy
aWFudExpc3QoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTVmFsdWVMaXN0
KiB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgZG8g
eworICAgICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBbGwpIHsKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VGb250VmFyaWFudCgpIGlt
cGxlbWVudHMKKyAgICAgICAgICAgIC8vIHRoZSBvbGQgY3NzMyBkcmFmdDoKKyAgICAgICAgICAg
IC8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDIvV0QtY3NzMy13ZWJmb250cy0yMDAyMDgwMi8j
Zm9udC12YXJpYW50CisgICAgICAgICAgICAvLyAnYWxsJyBpcyBvbmx5IGFsbG93ZWQgaW4gQGZv
bnQtZmFjZSBhbmQgd2l0aCBubyBvdGhlciB2YWx1ZXMuCisgICAgICAgICAgICBpZiAodmFsdWVz
LT5sZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAg
IHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgICAgICB9CisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBmb250VmFyaWFudCA9IGNvbnN1bWVGb250VmFyaWFudENTUzIxKHJhbmdlKTsK
KyAgICAgICAgaWYgKGZvbnRWYXJpYW50KQorICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoKmZv
bnRWYXJpYW50KTsKKyAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNl
KHJhbmdlKSk7CisKKyAgICBpZiAodmFsdWVzLT5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIHZh
bHVlczsKKworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFs
dWUqIGNvbnN1bWVGb250V2VpZ2h0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAg
IGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICBpZiAodG9r
ZW4uaWQoKSA+PSBDU1NWYWx1ZU5vcm1hbCAmJiB0b2tlbi5pZCgpIDw9IENTU1ZhbHVlTGlnaHRl
cikKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgaWYgKHRva2VuLnR5
cGUoKSAhPSBOdW1iZXJUb2tlbiB8fCB0b2tlbi5udW1lcmljVmFsdWVUeXBlKCkgIT0gSW50ZWdl
clZhbHVlVHlwZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaW50IHdlaWdodCA9IHN0
YXRpY19jYXN0PGludD4odG9rZW4ubnVtZXJpY1ZhbHVlKCkpOworICAgIGlmICgod2VpZ2h0ICUg
MTAwKSB8fCB3ZWlnaHQgPCAxMDAgfHwgd2VpZ2h0ID4gOTAwKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihzdGF0aWNfY2FzdDxDU1NWYWx1
ZUlEPihDU1NWYWx1ZTEwMCArIHdlaWdodCAvIDEwMCAtIDEpKTsKK30KKworc3RhdGljIFN0cmlu
ZyBjb25jYXRlbmF0ZUZhbWlseU5hbWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7Cisg
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJvb2wgYWRkZWRTcGFjZSA9IGZhbHNlOwor
ICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiBmaXJzdFRva2VuID0gcmFuZ2UucGVlaygpOworICAg
IHdoaWxlIChyYW5nZS5wZWVrKCkudHlwZSgpID09IElkZW50VG9rZW4pIHsKKyAgICAgICAgaWYg
KCFidWlsZGVyLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsK
KyAgICAgICAgICAgIGFkZGVkU3BhY2UgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKSk7Cisg
ICAgfQorICAgIGlmICghYWRkZWRTcGFjZSAmJiBpc0NTU1dpZGVLZXl3b3JkKGZpcnN0VG9rZW4u
aWQoKSkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0
cmluZygpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVGYW1pbHlOYW1lKENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgpID09IFN0
cmluZ1Rva2VuKQorICAgICAgICByZXR1cm4gQ1NTRm9udEZhbWlseVZhbHVlOjpjcmVhdGUocmFu
Z2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgpLnRvU3RyaW5nKCkpOworICAg
IGlmIChyYW5nZS5wZWVrKCkudHlwZSgpICE9IElkZW50VG9rZW4pCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIFN0cmluZyBmYW1pbHlOYW1lID0gY29uY2F0ZW5hdGVGYW1pbHlOYW1lKHJh
bmdlKTsKKyAgICBpZiAoZmFtaWx5TmFtZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIENTU0ZvbnRGYW1pbHlWYWx1ZTo6Y3JlYXRlKGZhbWlseU5hbWUpOwor
fQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVHZW5lcmljRmFtaWx5KENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBjb25zdW1lSWRlbnRSYW5nZShyYW5nZSwgQ1NT
VmFsdWVTZXJpZiwgQ1NTVmFsdWVXZWJraXRCb2R5KTsKK30KKworc3RhdGljIENTU1ZhbHVlTGlz
dCogY29uc3VtZUZvbnRGYW1pbHkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAg
Q1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgp
OworICAgIGRvIHsKKyAgICAgICAgQ1NTVmFsdWUqIHBhcnNlZFZhbHVlID0gY29uc3VtZUdlbmVy
aWNGYW1pbHkocmFuZ2UpOworICAgICAgICBpZiAocGFyc2VkVmFsdWUpIHsKKyAgICAgICAgICAg
IGxpc3QtPmFwcGVuZCgqcGFyc2VkVmFsdWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lRmFtaWx5TmFtZShyYW5nZSk7CisgICAgICAgICAgICBp
ZiAocGFyc2VkVmFsdWUpIHsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoKnBhcnNlZFZh
bHVlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJ
bmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSk7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRp
YyBDU1NWYWx1ZSogY29uc3VtZVNwYWNpbmcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkg
PT0gQ1NTVmFsdWVOb3JtYWwpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwor
ICAgIC8vIEZJWE1FOiBhbGxvdyA8cGVyY2VudGFnZT5zIGluIHdvcmQtc3BhY2luZy4KKyAgICBy
ZXR1cm4gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCwg
VW5pdGxlc3NRdWlyazo6QWxsb3cpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVUYWJT
aXplKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1v
ZGUpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBhcnNlZFZhbHVlID0gY29uc3VtZUludGVn
ZXIocmFuZ2UsIDApOworICAgIGlmIChwYXJzZWRWYWx1ZSkKKyAgICAgICAgcmV0dXJuIHBhcnNl
ZFZhbHVlOworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBW
YWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVUZXh0
U2l6ZUFkanVzdChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQ
YXJzZXJNb2RlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8p
CisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIGlmIChyYW5nZS5wZWVr
KCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFu
Z2UpOworICAgIHJldHVybiBjb25zdW1lUGVyY2VudChyYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0
aXZlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lRm9udFNpemUoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWly
ayB1bml0bGVzcyA9IFVuaXRsZXNzUXVpcms6OkZvcmJpZCkKK3sKKyAgICBpZiAocmFuZ2UucGVl
aygpLmlkKCkgPj0gQ1NTVmFsdWVYeFNtYWxsICYmIHJhbmdlLnBlZWsoKS5pZCgpIDw9IENTU1Zh
bHVlTGFyZ2VyKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1
cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5n
ZU5vbk5lZ2F0aXZlLCB1bml0bGVzcyk7Cit9CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSog
Y29uc3VtZUxpbmVIZWlnaHQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1v
ZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFs
dWVOb3JtYWwpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIGxpbmVIZWlnaHQgPSBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJh
bmdlTm9uTmVnYXRpdmUpOworICAgIGlmIChsaW5lSGVpZ2h0KQorICAgICAgICByZXR1cm4gbGlu
ZUhlaWdodDsKKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFy
c2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKK30KKworc3RhdGljIENTU1ZhbHVlTGlz
dCogY29uc3VtZVJvdGF0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIEFT
U0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NJbmRlcGVuZGVudFRyYW5zZm9ybVByb3Bl
cnRpZXNFbmFibGVkKCkpOworICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IENTU1ZhbHVlTGlzdDo6
Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKworICAgIENTU1ZhbHVlKiByb3RhdGlvbiA9IGNvbnN1
bWVBbmdsZShyYW5nZSk7CisgICAgaWYgKCFyb3RhdGlvbikKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgbGlzdC0+YXBwZW5kKCpyb3RhdGlvbik7CisKKyAgICBpZiAocmFuZ2UuYXRFbmQo
KSkKKyAgICAgICAgcmV0dXJuIGxpc3Q7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
MzsgaSsrKSB7IC8vIDMgZGltZW5zaW9ucyBvZiByb3RhdGlvbgorICAgICAgICBDU1NWYWx1ZSog
ZGltZW5zaW9uID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAg
IGlmICghZGltZW5zaW9uKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGxp
c3QtPmFwcGVuZCgqZGltZW5zaW9uKTsKKyAgICB9CisKKyAgICByZXR1cm4gbGlzdDsKK30KKwor
c3RhdGljIENTU1ZhbHVlTGlzdCogY29uc3VtZVNjYWxlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlKQoreworICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NJbmRlcGVuZGVu
dFRyYW5zZm9ybVByb3BlcnRpZXNFbmFibGVkKCkpOworCisgICAgQ1NTVmFsdWUqIHNjYWxlID0g
Y29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKCFzY2FsZSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVM
aXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGxpc3QtPmFwcGVuZCgqc2NhbGUpOwor
ICAgIHNjYWxlID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYg
KHNjYWxlKSB7CisgICAgICAgIGxpc3QtPmFwcGVuZCgqc2NhbGUpOworICAgICAgICBzY2FsZSA9
IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBpZiAoc2NhbGUp
CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoKnNjYWxlKTsKKyAgICB9CisKKyAgICByZXR1cm4g
bGlzdDsKK30KKworc3RhdGljIENTU1ZhbHVlTGlzdCogY29uc3VtZVRyYW5zbGF0ZShDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAg
IEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NJbmRlcGVuZGVudFRyYW5zZm9ybVBy
b3BlcnRpZXNFbmFibGVkKCkpOworICAgIENTU1ZhbHVlKiB0cmFuc2xhdGUgPSBjb25zdW1lTGVu
Z3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBp
ZiAoIXRyYW5zbGF0ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NTVmFsdWVMaXN0
KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGxpc3Qt
PmFwcGVuZCgqdHJhbnNsYXRlKTsKKyAgICB0cmFuc2xhdGUgPSBjb25zdW1lTGVuZ3RoT3JQZXJj
ZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBpZiAodHJhbnNs
YXRlKSB7CisgICAgICAgIGxpc3QtPmFwcGVuZCgqdHJhbnNsYXRlKTsKKyAgICAgICAgdHJhbnNs
YXRlID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7
CisgICAgICAgIGlmICh0cmFuc2xhdGUpCisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoKnRyYW5z
bGF0ZSk7CisgICAgfQorCisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSog
Y29uc3VtZUNvdW50ZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGludCBkZWZhdWx0VmFs
dWUpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgZG8geworICAgICAg
ICBDU1NDdXN0b21JZGVudFZhbHVlKiBjb3VudGVyTmFtZSA9IGNvbnN1bWVDdXN0b21JZGVudChy
YW5nZSk7CisgICAgICAgIGlmICghY291bnRlck5hbWUpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgaW50IGkgPSBkZWZhdWx0VmFsdWU7CisgICAgICAgIGlmIChDU1NQcmlt
aXRpdmVWYWx1ZSogY291bnRlclZhbHVlID0gY29uc3VtZUludGVnZXIocmFuZ2UpKQorICAgICAg
ICAgICAgaSA9IGNsYW1wVG88aW50Pihjb3VudGVyVmFsdWUtPmdldERvdWJsZVZhbHVlKCkpOwor
ICAgICAgICBsaXN0LT5hcHBlbmQoKkNTU1ZhbHVlUGFpcjo6Y3JlYXRlKGNvdW50ZXJOYW1lLAor
ICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGU6OkludGVnZXIpLAorICAgICAgICAgICAgQ1NTVmFsdWVQYWlyOjpEcm9wSWRl
bnRpY2FsVmFsdWVzKSk7CisgICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpOworICAgIHJldHVy
biBsaXN0OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVQYWdlU2l6ZShDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlQTMs
IENTU1ZhbHVlQTQsIENTU1ZhbHVlQTUsIENTU1ZhbHVlQjQsIENTU1ZhbHVlQjUsIENTU1ZhbHVl
TGVkZ2VyLCBDU1NWYWx1ZUxlZ2FsLCBDU1NWYWx1ZUxldHRlcj4ocmFuZ2UpOworfQorCitzdGF0
aWMgQ1NTVmFsdWVMaXN0KiBjb25zdW1lU2l6ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Q1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIENTU1ZhbHVlTGlzdCogcmVzdWx0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworCisgICAgaWYgKHJhbmdl
LnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykgeworICAgICAgICByZXN1bHQtPmFwcGVuZCgq
Y29uc3VtZUlkZW50KHJhbmdlKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisg
ICAgaWYgKENTU1ZhbHVlKiB3aWR0aCA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1v
ZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSkpIHsKKyAgICAgICAgQ1NTVmFsdWUqIGhlaWdodCA9
IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2
ZSk7CisgICAgICAgIHJlc3VsdC0+YXBwZW5kKCp3aWR0aCk7CisgICAgICAgIGlmIChoZWlnaHQp
CisgICAgICAgICAgICByZXN1bHQtPmFwcGVuZCgqaGVpZ2h0KTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKKyAgICBDU1NWYWx1ZSogcGFnZVNpemUgPSBjb25zdW1lUGFnZVNpemUo
cmFuZ2UpOworICAgIENTU1ZhbHVlKiBvcmllbnRhdGlvbiA9IGNvbnN1bWVJZGVudDxDU1NWYWx1
ZVBvcnRyYWl0LCBDU1NWYWx1ZUxhbmRzY2FwZT4ocmFuZ2UpOworICAgIGlmICghcGFnZVNpemUp
CisgICAgICAgIHBhZ2VTaXplID0gY29uc3VtZVBhZ2VTaXplKHJhbmdlKTsKKworICAgIGlmICgh
b3JpZW50YXRpb24gJiYgIXBhZ2VTaXplKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBp
ZiAocGFnZVNpemUpCisgICAgICAgIHJlc3VsdC0+YXBwZW5kKCpwYWdlU2l6ZSk7CisgICAgaWYg
KG9yaWVudGF0aW9uKQorICAgICAgICByZXN1bHQtPmFwcGVuZCgqb3JpZW50YXRpb24pOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVNuYXBIZWlnaHQo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkK
K3sKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogdW5pdCA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNz
c1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgaWYgKCF1bml0KQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgbGlzdC0+YXBwZW5kKCp1bml0KTsKKwor
ICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZSogcG9zaXRpb24gPSBjb25zdW1lUG9zaXRpdmVJbnRl
Z2VyKHJhbmdlKSkgeworICAgICAgICBpZiAocG9zaXRpb24tPmdldEludFZhbHVlKCkgPiAxMDAp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgbGlzdC0+YXBwZW5kKCpwb3Np
dGlvbik7CisgICAgfQorCisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSog
Y29uc3VtZVRleHRJbmRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1v
ZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICAvLyBbIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IF0g
JiYgaGFuZ2luZz8gJiYgZWFjaC1saW5lPworICAgIC8vIEtleXdvcmRzIG9ubHkgYWxsb3dlZCB3
aGVuIGNzczNUZXh0IGlzIGVuYWJsZWQuCisgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworCisgICAgYm9vbCBoYXNMZW5ndGhPclBl
cmNlbnRhZ2UgPSBmYWxzZTsKKyAgICBib29sIGhhc0VhY2hMaW5lID0gZmFsc2U7CisgICAgYm9v
bCBoYXNIYW5naW5nID0gZmFsc2U7CisKKyAgICBkbyB7CisgICAgICAgIGlmICghaGFzTGVuZ3Ro
T3JQZXJjZW50YWdlKSB7CisgICAgICAgICAgICBpZiAoQ1NTVmFsdWUqIHRleHRJbmRlbnQgPSBj
b25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxs
LCBVbml0bGVzc1F1aXJrOjpBbGxvdykpIHsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQo
KnRleHRJbmRlbnQpOworICAgICAgICAgICAgICAgIGhhc0xlbmd0aE9yUGVyY2VudGFnZSA9IHRy
dWU7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzM1RleHRFbmFibGVkKCkp
IHsKKyAgICAgICAgICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICAg
ICAgICAgIGlmICghaGFzRWFjaExpbmUgJiYgaWQgPT0gQ1NTVmFsdWVFYWNoTGluZSkgeworICAg
ICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCgqY29uc3VtZUlkZW50KHJhbmdlKSk7CisgICAgICAg
ICAgICAgICAgaGFzRWFjaExpbmUgPSB0cnVlOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFoYXNIYW5naW5nICYmIGlkID09IENTU1Zh
bHVlSGFuZ2luZykgeworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCgqY29uc3VtZUlkZW50
KHJhbmdlKSk7CisgICAgICAgICAgICAgICAgaGFzSGFuZ2luZyA9IHRydWU7CisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpOworCisgICAgaWYgKCFoYXNM
ZW5ndGhPclBlcmNlbnRhZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJu
IGxpc3Q7Cit9CisKK3N0YXRpYyBib29sIHZhbGlkV2lkdGhPckhlaWdodEtleXdvcmQoQ1NTVmFs
dWVJRCBpZCwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVXZWJraXRNaW5Db250ZW50IHx8IGlkID09IENTU1ZhbHVlV2Via2l0TWF4Q29u
dGVudCB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdEZpbGxBdmFpbGFibGUgfHwgaWQgPT0gQ1NTVmFs
dWVXZWJraXRGaXRDb250ZW50CisgICAgICAgIHx8IGlkID09IENTU1ZhbHVlTWluQ29udGVudCB8
fCBpZCA9PSBDU1NWYWx1ZU1heENvbnRlbnQgfHwgaWQgPT0gQ1NTVmFsdWVGaXRDb250ZW50KSB7
CisgICAgICAgIGlmIChjb250ZXh0LnVzZUNvdW50ZXIoKSkgeworICAgICAgICAgICAgc3dpdGNo
IChpZCkgeworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdE1pbkNvbnRlbnQ6CisgICAg
ICAgICAgICAgICAgY29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkNTU1Zh
bHVlUHJlZml4ZWRNaW5Db250ZW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRNYXhDb250ZW50OgorICAgICAgICAgICAgICAgIGNvbnRl
eHQudXNlQ291bnRlcigpLT5jb3VudChVc2VDb3VudGVyOjpDU1NWYWx1ZVByZWZpeGVkTWF4Q29u
dGVudCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVl
V2Via2l0RmlsbEF2YWlsYWJsZToKKyAgICAgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIo
KS0+Y291bnQoVXNlQ291bnRlcjo6Q1NTVmFsdWVQcmVmaXhlZEZpbGxBdmFpbGFibGUpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEZpdENv
bnRlbnQ6CisgICAgICAgICAgICAgICAgY29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNv
dW50ZXI6OkNTU1ZhbHVlUHJlZml4ZWRGaXRDb250ZW50KTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lTWF4V2lkdGhPckhlaWdodChD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4
dCwgVW5pdGxlc3NRdWlyayB1bml0bGVzcyA9IFVuaXRsZXNzUXVpcms6OkZvcmJpZCkKK3sKKyAg
ICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbGlkV2lkdGhPckhl
aWdodEtleXdvcmQocmFuZ2UucGVlaygpLmlkKCksIGNvbnRleHQpKQorICAgICAgICByZXR1cm4g
Y29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChy
YW5nZSwgY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwgdW5pdGxlc3MpOwor
fQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVXaWR0aE9ySGVpZ2h0KENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBVbml0bGVzc1F1
aXJrIHVuaXRsZXNzID0gVW5pdGxlc3NRdWlyazo6Rm9yYmlkKQoreworICAgIGlmIChyYW5nZS5w
ZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsaWRXaWR0aE9ySGVpZ2h0S2V5d29yZChy
YW5nZS5wZWVrKCkuaWQoKSwgY29udGV4dCkpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQo
cmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjb250ZXh0
Lm1vZGUoKSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlLCB1bml0bGVzcyk7Cit9CisKK3N0YXRpYyBD
U1NWYWx1ZSogY29uc3VtZU1hcmdpbk9yT2Zmc2V0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCit7
CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNl
bnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwsIHVuaXRsZXNzKTsKK30KKwor
c3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lQ2xpcENvbXBvbmVudChDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlm
IChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBjb25z
dW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJz
ZXJNb2RlLCBWYWx1ZVJhbmdlQWxsLCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7Cit9CisKK3N0YXRp
YyBDU1NWYWx1ZSogY29uc3VtZUNsaXAoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1Bh
cnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0g
Q1NTVmFsdWVBdXRvKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAg
IGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpICE9IENTU1ZhbHVlUmVjdCkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1l
RnVuY3Rpb24ocmFuZ2UpOworICAgIC8vIHJlY3QodCwgciwgYiwgbCkgfHwgcmVjdCh0IHIgYiBs
KQorICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0b3AgPSBjb25zdW1lQ2xpcENvbXBvbmVudChhcmdz
LCBjc3NQYXJzZXJNb2RlKTsKKyAgICBpZiAoIXRvcCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgYm9vbCBuZWVkc0NvbW1hID0gY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShh
cmdzKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcmlnaHQgPSBjb25zdW1lQ2xpcENvbXBvbmVu
dChhcmdzLCBjc3NQYXJzZXJNb2RlKTsKKyAgICBpZiAoIXJpZ2h0IHx8IChuZWVkc0NvbW1hICYm
ICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGJvdHRvbSA9IGNvbnN1bWVDbGlwQ29t
cG9uZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUpOworICAgIGlmICghYm90dG9tIHx8IChuZWVkc0Nv
bW1hICYmICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGxlZnQgPSBjb25zdW1lQ2xp
cENvbXBvbmVudChhcmdzLCBjc3NQYXJzZXJNb2RlKTsKKyAgICBpZiAoIWxlZnQgfHwgIWFyZ3Mu
YXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIENTU1F1YWRWYWx1
ZTo6Y3JlYXRlKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCwgQ1NTUXVhZFZhbHVlOjpTZXJpYWxp
emVBc1JlY3QpOworfQorCitzdGF0aWMgYm9vbCBjb25zdW1lUGFuKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBDU1NWYWx1ZSomIHBhblgsIENTU1ZhbHVlKiYgcGFuWSkKK3sKKyAgICBDU1NW
YWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgaWYgKChpZCA9PSBDU1NWYWx1ZVBh
blggfHwgaWQgPT0gQ1NTVmFsdWVQYW5SaWdodCB8fCBpZCA9PSBDU1NWYWx1ZVBhbkxlZnQpICYm
ICFwYW5YKSB7CisgICAgICAgIGlmIChpZCAhPSBDU1NWYWx1ZVBhblggJiYgIVJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmNzc1RvdWNoQWN0aW9uUGFuRGlyZWN0aW9uc0VuYWJsZWQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcGFuWCA9IGNvbnN1bWVJZGVudChyYW5nZSk7
CisgICAgfSBlbHNlIGlmICgoaWQgPT0gQ1NTVmFsdWVQYW5ZIHx8IGlkID09IENTU1ZhbHVlUGFu
RG93biB8fCBpZCA9PSBDU1NWYWx1ZVBhblVwKSAmJiAhcGFuWSkgeworICAgICAgICBpZiAoaWQg
IT0gQ1NTVmFsdWVQYW5ZICYmICFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NUb3VjaEFjdGlv
blBhbkRpcmVjdGlvbnNFbmFibGVkKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHBhblkgPSBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBDU1NWYWx1
ZSogY29uc3VtZVRvdWNoQWN0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAg
IENTU1ZhbHVlTGlzdCogbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQo
KTsKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgaWYgKGlkID09
IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVNYW5p
cHVsYXRpb24pIHsKKyAgICAgICAgbGlzdC0+YXBwZW5kKCpjb25zdW1lSWRlbnQocmFuZ2UpKTsK
KyAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgfQorCisgICAgQ1NTVmFsdWUqIHBhblggPSBudWxs
cHRyOworICAgIENTU1ZhbHVlKiBwYW5ZID0gbnVsbHB0cjsKKyAgICBpZiAoIWNvbnN1bWVQYW4o
cmFuZ2UsIHBhblgsIHBhblkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIXJh
bmdlLmF0RW5kKCkgJiYgIWNvbnN1bWVQYW4ocmFuZ2UsIHBhblgsIHBhblkpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChwYW5YKQorICAgICAgICBsaXN0LT5hcHBlbmQoKnBh
blgpOworICAgIGlmIChwYW5ZKQorICAgICAgICBsaXN0LT5hcHBlbmQoKnBhblkpOworICAgIHJl
dHVybiBsaXN0OworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVMaW5lQ2xh
bXAoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS50
eXBlKCkgIT0gUGVyY2VudGFnZVRva2VuICYmIHJhbmdlLnBlZWsoKS50eXBlKCkgIT0gTnVtYmVy
VG9rZW4pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBj
bGFtcFZhbHVlID0gY29uc3VtZVBlcmNlbnQocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7
CisgICAgaWYgKGNsYW1wVmFsdWUpCisgICAgICAgIHJldHVybiBjbGFtcFZhbHVlOworICAgIC8v
IFdoZW4gc3BlY2lmeWluZyBudW1iZXIgb2YgbGluZXMsIGRvbid0IGFsbG93IDAgYXMgYSB2YWxp
ZCB2YWx1ZS4KKyAgICByZXR1cm4gY29uc3VtZVBvc2l0aXZlSW50ZWdlcihyYW5nZSk7Cit9CisK
K3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUxvY2FsZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBdXRvKQorICAgICAg
ICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZVN0cmluZyhy
YW5nZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUNvbHVtbldpZHRoKENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NW
YWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIC8vIEFs
d2F5cyBwYXJzZSBsZW5ndGhzIGluIHN0cmljdCBtb2RlIGhlcmUsIHNpbmNlIGl0IHdvdWxkIGJl
IGFtYmlndW91cyBvdGhlcndpc2Ugd2hlbiB1c2VkIGluCisgICAgLy8gdGhlICdjb2x1bW5zJyBz
aG9ydGhhbmQgcHJvcGVydHkuCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbHVtbldpZHRoID0g
Y29uc3VtZUxlbmd0aChyYW5nZSwgSFRNTFN0YW5kYXJkTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0
aXZlKTsKKyAgICBpZiAoIWNvbHVtbldpZHRoIHx8ICghY29sdW1uV2lkdGgtPmlzQ2FsY3VsYXRl
ZCgpICYmIGNvbHVtbldpZHRoLT5nZXREb3VibGVWYWx1ZSgpID09IDApKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY29sdW1uV2lkdGg7Cit9CisKK3N0YXRpYyBDU1NWYWx1
ZSogY29uc3VtZUNvbHVtbkNvdW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAg
IGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBj
b25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyKHJh
bmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQ29sdW1uR2FwKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgaWYg
KHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9ybWFsKQorICAgICAgICByZXR1cm4gY29u
c3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFy
c2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lQ29sdW1uU3BhbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1
cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlQWxsLCBDU1NWYWx1ZU5vbmU+KHJhbmdlKTsKK30KKwor
c3RhdGljIENTU1ZhbHVlKiBjb25zdW1lWm9vbShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Y29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBjb25zdCBDU1NQYXJzZXJU
b2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHpvb20g
PSBudWxscHRyOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSWRlbnRUb2tlbikgeworICAgICAg
ICB6b29tID0gY29uc3VtZUlkZW50PENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZVJlc2V0LCBDU1NW
YWx1ZURvY3VtZW50PihyYW5nZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgem9vbSA9IGNvbnN1
bWVQZXJjZW50KHJhbmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICBpZiAoIXpv
b20pCisgICAgICAgICAgICB6b29tID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZU5v
bk5lZ2F0aXZlKTsKKyAgICB9CisgICAgaWYgKHpvb20gJiYgY29udGV4dC51c2VDb3VudGVyKCkK
KyAgICAgICAgJiYgISh0b2tlbi5pZCgpID09IENTU1ZhbHVlTm9ybWFsCisgICAgICAgICAgICB8
fCAodG9rZW4udHlwZSgpID09IE51bWJlclRva2VuICYmIHpvb20tPmdldERvdWJsZVZhbHVlKCkg
PT0gMSkKKyAgICAgICAgICAgIHx8ICh0b2tlbi50eXBlKCkgPT0gUGVyY2VudGFnZVRva2VuICYm
IHpvb20tPmdldERvdWJsZVZhbHVlKCkgPT0gMTAwKSkpCisgICAgICAgIGNvbnRleHQudXNlQ291
bnRlcigpLT5jb3VudChVc2VDb3VudGVyOjpDU1Nab29tTm90RXF1YWxUb09uZSk7CisgICAgcmV0
dXJuIHpvb207Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUFuaW1hdGlvbkl0ZXJhdGlv
bkNvdW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVr
KCkuaWQoKSA9PSBDU1NWYWx1ZUluZmluaXRlKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50
KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZU5vbk5l
Z2F0aXZlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQW5pbWF0aW9uTmFtZShDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwg
Ym9vbCBhbGxvd1F1b3RlZE5hbWUpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENT
U1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBp
ZiAoYWxsb3dRdW90ZWROYW1lICYmIHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gU3RyaW5nVG9rZW4p
IHsKKyAgICAgICAgLy8gTGVnYWN5IHN1cHBvcnQgZm9yIHN0cmluZ3MgaW4gcHJlZml4ZWQgYW5p
bWF0aW9ucy4KKyAgICAgICAgaWYgKGNvbnRleHQudXNlQ291bnRlcigpKQorICAgICAgICAgICAg
Y29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OlF1b3RlZEFuaW1hdGlvbk5h
bWUpOworCisgICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLmNvbnN1
bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKHRva2VuLnZhbHVlKCksICJub25lIikpCisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKTsKKyAgICAgICAgcmV0dXJu
IENTU0N1c3RvbUlkZW50VmFsdWU6OmNyZWF0ZSh0b2tlbi52YWx1ZSgpLnRvU3RyaW5nKCkpOwor
ICAgIH0KKworICAgIHJldHVybiBjb25zdW1lQ3VzdG9tSWRlbnQocmFuZ2UpOworfQorCitzdGF0
aWMgQ1NTVmFsdWUqIGNvbnN1bWVUcmFuc2l0aW9uUHJvcGVydHkoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVl
aygpOworICAgIGlmICh0b2tlbi50eXBlKCkgIT0gSWRlbnRUb2tlbikKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgaWYgKHRva2VuLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICBy
ZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIGlmIChDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5ID0gdG9rZW4ucGFyc2VBc1VucmVzb2x2ZWRDU1NQcm9wZXJ0eUlEKCkpIHsKKyAgICAgICAg
QVNTRVJUKENTU1Byb3BlcnR5TWV0YWRhdGE6OmlzRW5hYmxlZFByb3BlcnR5KHByb3BlcnR5KSk7
CisgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIHJl
dHVybiBDU1NDdXN0b21JZGVudFZhbHVlOjpjcmVhdGUocHJvcGVydHkpOworICAgIH0KKyAgICBy
ZXR1cm4gY29uc3VtZUN1c3RvbUlkZW50KHJhbmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lU3RlcHMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQVNTRVJUKHJh
bmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVTdGVwcyk7CisgICAgQ1NTUGFyc2Vy
VG9rZW5SYW5nZSByYW5nZUNvcHkgPSByYW5nZTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFy
Z3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2VDb3B5KTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBzdGVwcyA9IGNvbnN1bWVQb3NpdGl2ZUludGVnZXIoYXJncyk7CisgICAgaWYgKCFzdGVwcykK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVw
UG9zaXRpb24gcG9zaXRpb24gPSBTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVwUG9zaXRpb246OkVO
RDsKKyAgICBpZiAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkgeworICAg
ICAgICBzd2l0Y2ggKGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpKSB7Cisg
ICAgICAgIGNhc2UgQ1NTVmFsdWVNaWRkbGU6CisgICAgICAgICAgICBpZiAoIVJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OndlYkFuaW1hdGlvbnNBUElFbmFibGVkKCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBwb3NpdGlvbiA9IFN0ZXBzVGltaW5nRnVuY3Rp
b246OlN0ZXBQb3NpdGlvbjo6TUlERExFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgQ1NTVmFsdWVTdGFydDoKKyAgICAgICAgICAgIHBvc2l0aW9uID0gU3RlcHNUaW1pbmdGdW5j
dGlvbjo6U3RlcFBvc2l0aW9uOjpTVEFSVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIENTU1ZhbHVlRW5kOgorICAgICAgICAgICAgcG9zaXRpb24gPSBTdGVwc1RpbWluZ0Z1bmN0
aW9uOjpTdGVwUG9zaXRpb246OkVORDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBpZiAoIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByYW5n
ZSA9IHJhbmdlQ29weTsKKyAgICByZXR1cm4gQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjpj
cmVhdGUoc3RlcHMtPmdldEludFZhbHVlKCksIHBvc2l0aW9uKTsKK30KKworc3RhdGljIENTU1Zh
bHVlKiBjb25zdW1lQ3ViaWNCZXppZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7Cisg
ICAgQVNTRVJUKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVDdWJpY0Jlemll
cik7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSByYW5nZTsKKyAgICBDU1NQ
YXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2VDb3B5KTsKKworICAg
IGRvdWJsZSB4MSwgeTEsIHgyLCB5MjsKKyAgICBpZiAoY29uc3VtZU51bWJlclJhdyhhcmdzLCB4
MSkKKyAgICAgICAgJiYgeDEgPj0gMCAmJiB4MSA8PSAxCisgICAgICAgICYmIGNvbnN1bWVDb21t
YUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykKKyAgICAgICAgJiYgY29uc3VtZU51bWJlclJhdyhh
cmdzLCB5MSkKKyAgICAgICAgJiYgY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdz
KQorICAgICAgICAmJiBjb25zdW1lTnVtYmVyUmF3KGFyZ3MsIHgyKQorICAgICAgICAmJiB4MiA+
PSAwICYmIHgyIDw9IDEKKyAgICAgICAgJiYgY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFj
ZShhcmdzKQorICAgICAgICAmJiBjb25zdW1lTnVtYmVyUmF3KGFyZ3MsIHkyKQorICAgICAgICAm
JiBhcmdzLmF0RW5kKCkpIHsKKyAgICAgICAgcmFuZ2UgPSByYW5nZUNvcHk7CisgICAgICAgIHJl
dHVybiBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZSh4MSwgeTEsIHgy
LCB5Mik7CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1
ZSogY29uc3VtZUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlKQoreworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVFYXNlIHx8IGlkID09IENTU1ZhbHVlTGluZWFyIHx8IGlkID09IENTU1Zh
bHVlRWFzZUluCisgICAgICAgIHx8IGlkID09IENTU1ZhbHVlRWFzZU91dCB8fCBpZCA9PSBDU1NW
YWx1ZUVhc2VJbk91dCB8fCBpZCA9PSBDU1NWYWx1ZVN0ZXBTdGFydAorICAgICAgICB8fCBpZCA9
PSBDU1NWYWx1ZVN0ZXBFbmQgfHwgaWQgPT0gQ1NTVmFsdWVTdGVwTWlkZGxlKQorICAgICAgICBy
ZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIENTU1ZhbHVlSUQgZnVuY3Rpb24gPSBy
YW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpOworICAgIGlmIChmdW5jdGlvbiA9PSBDU1NWYWx1ZVN0
ZXBzKQorICAgICAgICByZXR1cm4gY29uc3VtZVN0ZXBzKHJhbmdlKTsKKyAgICBpZiAoZnVuY3Rp
b24gPT0gQ1NTVmFsdWVDdWJpY0JlemllcikKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDdWJpY0Jl
emllcihyYW5nZSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSog
Y29uc3VtZUFuaW1hdGlvblZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBib29sIHVz
ZUxlZ2FjeVBhcnNpbmcpCit7CisgICAgc3dpdGNoIChwcm9wZXJ0eSkgeworICAgIGNhc2UgQ1NT
UHJvcGVydHlBbmltYXRpb25EZWxheToKKyAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvbkRl
bGF5OgorICAgICAgICByZXR1cm4gY29uc3VtZVRpbWUocmFuZ2UsIFZhbHVlUmFuZ2VBbGwpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25EaXJlY3Rpb246CisgICAgICAgIHJldHVybiBj
b25zdW1lSWRlbnQ8Q1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlQWx0ZXJuYXRlLCBDU1NWYWx1ZVJl
dmVyc2UsIENTU1ZhbHVlQWx0ZXJuYXRlUmV2ZXJzZT4ocmFuZ2UpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlBbmltYXRpb25EdXJhdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvbkR1
cmF0aW9uOgorICAgICAgICByZXR1cm4gY29uc3VtZVRpbWUocmFuZ2UsIFZhbHVlUmFuZ2VOb25O
ZWdhdGl2ZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkZpbGxNb2RlOgorICAgICAg
ICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVGb3J3YXJkcywgQ1NT
VmFsdWVCYWNrd2FyZHMsIENTU1ZhbHVlQm90aD4ocmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlBbmltYXRpb25JdGVyYXRpb25Db3VudDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVBbmltYXRp
b25JdGVyYXRpb25Db3VudChyYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbk5h
bWU6CisgICAgICAgIHJldHVybiBjb25zdW1lQW5pbWF0aW9uTmFtZShyYW5nZSwgY29udGV4dCwg
dXNlTGVnYWN5UGFyc2luZyk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvblBsYXlTdGF0
ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudDxDU1NWYWx1ZVJ1bm5pbmcsIENTU1ZhbHVl
UGF1c2VkPihyYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25Qcm9wZXJ0eToK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVUcmFuc2l0aW9uUHJvcGVydHkocmFuZ2UpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlBbmltYXRpb25UaW1pbmdGdW5jdGlvbjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOgorICAgICAgICByZXR1cm4gY29uc3VtZUFuaW1h
dGlvblRpbWluZ0Z1bmN0aW9uKHJhbmdlKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorfQorCitzdGF0
aWMgYm9vbCBpc1ZhbGlkQW5pbWF0aW9uUHJvcGVydHlMaXN0KENTU1Byb3BlcnR5SUQgcHJvcGVy
dHksIGNvbnN0IENTU1ZhbHVlTGlzdCYgdmFsdWVMaXN0KQoreworICAgIGlmIChwcm9wZXJ0eSAh
PSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25Qcm9wZXJ0eSB8fCB2YWx1ZUxpc3QubGVuZ3RoKCkgPCAy
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBmb3IgKGF1dG8mIHZhbHVlIDogdmFsdWVMaXN0
KSB7CisgICAgICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIHRvQ1NTUHJpbWl0
aXZlVmFsdWUoKnZhbHVlKS5pc1ZhbHVlSUQoKQorICAgICAgICAgICAgJiYgdG9DU1NQcmltaXRp
dmVWYWx1ZSgqdmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgQ1NT
VmFsdWVMaXN0KiBjb25zdW1lQW5pbWF0aW9uUHJvcGVydHlMaXN0KENTU1Byb3BlcnR5SUQgcHJv
cGVydHksIENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0
JiBjb250ZXh0LCBib29sIHVzZUxlZ2FjeVBhcnNpbmcpCit7CisgICAgQ1NTVmFsdWVMaXN0KiBs
aXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgIGRvIHsKKyAg
ICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gY29uc3VtZUFuaW1hdGlvblZhbHVlKHByb3BlcnR5LCBy
YW5nZSwgY29udGV4dCwgdXNlTGVnYWN5UGFyc2luZyk7CisgICAgICAgIGlmICghdmFsdWUpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgbGlzdC0+YXBwZW5kKCp2YWx1ZSk7
CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpOwor
ICAgIGlmICghaXNWYWxpZEFuaW1hdGlvblByb3BlcnR5TGlzdChwcm9wZXJ0eSwgKmxpc3QpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBBU1NFUlQobGlzdC0+bGVuZ3RoKCkpOworICAg
IHJldHVybiBsaXN0OworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lQW5pbWF0
aW9uU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCwgYm9v
bCB1c2VMZWdhY3lQYXJzaW5nLCBib29sIGltcG9ydGFudCkKK3sKKyAgICBjb25zdCB1bnNpZ25l
ZCBsb25naGFuZENvdW50ID0gc2hvcnRoYW5kLmxlbmd0aCgpOworICAgIENTU1ZhbHVlTGlzdCog
bG9uZ2hhbmRzWzhdOworICAgIEFTU0VSVChsb25naGFuZENvdW50IDw9IDgpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbG9uZ2hhbmRDb3VudDsgKytpKQorICAgICAgICBsb25naGFuZHNb
aV0gPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisKKyAgICBkbyB7Cisg
ICAgICAgIGJvb2wgcGFyc2VkTG9uZ2hhbmRbOF0gPSB7IGZhbHNlIH07CisgICAgICAgIGRvIHsK
KyAgICAgICAgICAgIGJvb2wgZm91bmRQcm9wZXJ0eSA9IGZhbHNlOworICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBsb25naGFuZENvdW50OyArK2kpIHsKKyAgICAgICAgICAgICAg
ICBpZiAocGFyc2VkTG9uZ2hhbmRbaV0pCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgICAgICAgICAgaWYgKENTU1ZhbHVlKiB2YWx1ZSA9IGNvbnN1bWVBbmltYXRpb25W
YWx1ZShzaG9ydGhhbmQucHJvcGVydGllcygpW2ldLCBtX3JhbmdlLCBtX2NvbnRleHQsIHVzZUxl
Z2FjeVBhcnNpbmcpKSB7CisgICAgICAgICAgICAgICAgICAgIHBhcnNlZExvbmdoYW5kW2ldID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgZm91bmRQcm9wZXJ0eSA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgIGxvbmdoYW5kc1tpXS0+YXBwZW5kKCp2YWx1ZSk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmICghZm91bmRQcm9wZXJ0eSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0gd2hpbGUgKCFtX3JhbmdlLmF0RW5kKCkgJiYgbV9yYW5nZS5wZWVrKCkudHlwZSgp
ICE9IENvbW1hVG9rZW4pOworCisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgbWFrZSBpbnZh
bGlkIGxvbmdoYW5kcywgc2VlIGNyYnVnLmNvbS8zODY0NTkKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsb25naGFuZENvdW50OyArK2kpIHsKKyAgICAgICAgICAgIGlmICghcGFyc2Vk
TG9uZ2hhbmRbaV0pCisgICAgICAgICAgICAgICAgbG9uZ2hhbmRzW2ldLT5hcHBlbmQoKkNTU0lu
aXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSk7CisgICAgICAgICAgICBwYXJzZWRM
b25naGFuZFtpXSA9IGZhbHNlOworICAgICAgICB9CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1h
SW5jbHVkaW5nV2hpdGVzcGFjZShtX3JhbmdlKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxvbmdoYW5kQ291bnQ7ICsraSkgeworICAgICAgICBpZiAoIWlzVmFsaWRBbmltYXRpb25Q
cm9wZXJ0eUxpc3Qoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSwgKmxvbmdoYW5kc1tpXSkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsb25naGFuZENvdW50OyArK2kpCisgICAgICAgIGFkZFByb3BlcnR5KHNob3J0aGFuZC5w
cm9wZXJ0aWVzKClbaV0sIHNob3J0aGFuZC5pZCgpLCAqbG9uZ2hhbmRzW2ldLCBpbXBvcnRhbnQp
OworCisgICAgcmV0dXJuIG1fcmFuZ2UuYXRFbmQoKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lWkluZGV4KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5n
ZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBjb25zdW1lSWRl
bnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lSW50ZWdlcihyYW5nZSk7Cit9CisKK3N0YXRp
YyBDU1NTaGFkb3dWYWx1ZSogcGFyc2VTaW5nbGVTaGFkb3coQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgYm9vbCBhbGxvd0luc2V0LCBib29s
IGFsbG93U3ByZWFkKQoreworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzdHlsZSA9IG51bGxwdHI7
CisgICAgQ1NTVmFsdWUqIGNvbG9yID0gbnVsbHB0cjsKKworICAgIGlmIChyYW5nZS5hdEVuZCgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0g
Q1NTVmFsdWVJbnNldCkgeworICAgICAgICBpZiAoIWFsbG93SW5zZXQpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgc3R5bGUgPSBjb25zdW1lSWRlbnQocmFuZ2UpOworICAg
IH0KKyAgICBjb2xvciA9IGNvbnN1bWVDb2xvcihyYW5nZSwgY3NzUGFyc2VyTW9kZSk7CisKKyAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogaG9yaXpvbnRhbE9mZnNldCA9IGNvbnN1bWVMZW5ndGgocmFu
Z2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgIGlmICghaG9yaXpvbnRhbE9m
ZnNldCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSog
dmVydGljYWxPZmZzZXQgPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1
ZVJhbmdlQWxsKTsKKyAgICBpZiAoIXZlcnRpY2FsT2Zmc2V0KQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBibHVyUmFkaXVzID0gY29uc3VtZUxlbmd0
aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHNwcmVhZERpc3RhbmNlID0gbnVsbHB0cjsKKyAgICBpZiAoYmx1clJhZGl1cykgewor
ICAgICAgICAvLyBCbHVyIHJhZGl1cyBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4KKyAgICAgICAgaWYg
KGJsdXJSYWRpdXMtPmdldERvdWJsZVZhbHVlKCkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIGlmIChhbGxvd1NwcmVhZCkKKyAgICAgICAgICAgIHNwcmVhZERpc3Rh
bmNlID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7
CisgICAgfQorCisgICAgaWYgKCFyYW5nZS5hdEVuZCgpKSB7CisgICAgICAgIGlmICghY29sb3Ip
CisgICAgICAgICAgICBjb2xvciA9IGNvbnN1bWVDb2xvcihyYW5nZSwgY3NzUGFyc2VyTW9kZSk7
CisgICAgICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUluc2V0KSB7CisgICAg
ICAgICAgICBpZiAoIWFsbG93SW5zZXQgfHwgc3R5bGUpCisgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgICAgICBzdHlsZSA9IGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgcmV0dXJuIENTU1NoYWRvd1ZhbHVlOjpjcmVhdGUoaG9yaXpvbnRh
bE9mZnNldCwgdmVydGljYWxPZmZzZXQsIGJsdXJSYWRpdXMsCisgICAgICAgIHNwcmVhZERpc3Rh
bmNlLCBzdHlsZSwgY29sb3IpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVTaGFkb3co
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwg
Ym9vbCBpc0JveFNoYWRvd1Byb3BlcnR5KQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9
PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisg
ICAgQ1NTVmFsdWVMaXN0KiBzaGFkb3dWYWx1ZUxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNv
bW1hU2VwYXJhdGVkKCk7CisgICAgZG8geworICAgICAgICBpZiAoQ1NTU2hhZG93VmFsdWUqIHNo
YWRvd1ZhbHVlID0gcGFyc2VTaW5nbGVTaGFkb3cocmFuZ2UsIGNzc1BhcnNlck1vZGUsIGlzQm94
U2hhZG93UHJvcGVydHksIGlzQm94U2hhZG93UHJvcGVydHkpKQorICAgICAgICAgICAgc2hhZG93
VmFsdWVMaXN0LT5hcHBlbmQoKnNoYWRvd1ZhbHVlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hp
dGVzcGFjZShyYW5nZSkpOworICAgIHJldHVybiBzaGFkb3dWYWx1ZUxpc3Q7Cit9CisKK3N0YXRp
YyBDU1NGdW5jdGlvblZhbHVlKiBjb25zdW1lRmlsdGVyRnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ1NT
VmFsdWVJRCBmaWx0ZXJUeXBlID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKTsKKyAgICBpZiAo
ZmlsdGVyVHlwZSA8IENTU1ZhbHVlSW52ZXJ0IHx8IGZpbHRlclR5cGUgPiBDU1NWYWx1ZURyb3BT
aGFkb3cpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIENTU1BhcnNlclRva2VuUmFuZ2Ug
YXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7CisgICAgQ1NTRnVuY3Rpb25WYWx1ZSogZmls
dGVyVmFsdWUgPSBDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUoZmlsdGVyVHlwZSk7CisgICAgQ1NT
VmFsdWUqIHBhcnNlZFZhbHVlID0gbnVsbHB0cjsKKworICAgIGlmIChmaWx0ZXJUeXBlID09IENT
U1ZhbHVlRHJvcFNoYWRvdykgeworICAgICAgICBwYXJzZWRWYWx1ZSA9IHBhcnNlU2luZ2xlU2hh
ZG93KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBmYWxzZSwgZmFsc2UpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGlmIChhcmdzLmF0RW5kKCkpIHsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LnVzZUNv
dW50ZXIoKSkKKyAgICAgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNl
Q291bnRlcjo6Q1NTRmlsdGVyRnVuY3Rpb25Ob0FyZ3VtZW50cyk7CisgICAgICAgICAgICByZXR1
cm4gZmlsdGVyVmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZpbHRlclR5cGUgPT0gQ1NT
VmFsdWVCcmlnaHRuZXNzKSB7CisgICAgICAgICAgICAvLyBGSVhNRSAoY3JidWcuY29tLzM5NzA2
MSk6IFN1cHBvcnQgY2FsYyBleHByZXNzaW9ucyBsaWtlIGNhbGMoMTAlICsgMC41KQorICAgICAg
ICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lUGVyY2VudChhcmdzLCBWYWx1ZVJhbmdlQWxsKTsK
KyAgICAgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICAgICAgcGFyc2VkVmFs
dWUgPSBjb25zdW1lTnVtYmVyKGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICB9IGVsc2Ug
aWYgKGZpbHRlclR5cGUgPT0gQ1NTVmFsdWVIdWVSb3RhdGUpIHsKKyAgICAgICAgICAgIHBhcnNl
ZFZhbHVlID0gY29uc3VtZUFuZ2xlKGFyZ3MpOworICAgICAgICB9IGVsc2UgaWYgKGZpbHRlclR5
cGUgPT0gQ1NTVmFsdWVCbHVyKSB7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVM
ZW5ndGgoYXJncywgSFRNTFN0YW5kYXJkTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEZJWE1FIChjcmJ1Zy5jb20vMzk3MDYxKTog
U3VwcG9ydCBjYWxjIGV4cHJlc3Npb25zIGxpa2UgY2FsYygxMCUgKyAwLjUpCisgICAgICAgICAg
ICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVQZXJjZW50KGFyZ3MsIFZhbHVlUmFuZ2VOb25OZWdhdGl2
ZSk7CisgICAgICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAgICAgIHBhcnNl
ZFZhbHVlID0gY29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAg
ICAgICAgICAgaWYgKHBhcnNlZFZhbHVlICYmIGZpbHRlclR5cGUgIT0gQ1NTVmFsdWVTYXR1cmF0
ZSAmJiBmaWx0ZXJUeXBlICE9IENTU1ZhbHVlQ29udHJhc3QpIHsKKyAgICAgICAgICAgICAgICBi
b29sIGlzUGVyY2VudGFnZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUocGFyc2VkVmFsdWUpLT5pc1Bl
cmNlbnRhZ2UoKTsKKyAgICAgICAgICAgICAgICBkb3VibGUgbWF4QWxsb3dlZCA9IGlzUGVyY2Vu
dGFnZSA/IDEwMC4wIDogMS4wOworICAgICAgICAgICAgICAgIGlmICh0b0NTU1ByaW1pdGl2ZVZh
bHVlKHBhcnNlZFZhbHVlKS0+Z2V0RG91YmxlVmFsdWUoKSA+IG1heEFsbG93ZWQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKAor
ICAgICAgICAgICAgICAgICAgICAgICAgbWF4QWxsb3dlZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlzUGVyY2VudGFnZSA/IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGVyY2VudGFn
ZSA6IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFwYXJzZWRWYWx1
ZSB8fCAhYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBmaWx0ZXJW
YWx1ZS0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAgcmV0dXJuIGZpbHRlclZhbHVlOworfQor
CitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVGaWx0ZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgaWYgKHJhbmdlLnBl
ZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChy
YW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNw
YWNlU2VwYXJhdGVkKCk7CisgICAgZG8geworICAgICAgICBDU1NWYWx1ZSogZmlsdGVyVmFsdWUg
PSBjb25zdW1lVXJsKHJhbmdlKTsKKyAgICAgICAgaWYgKCFmaWx0ZXJWYWx1ZSkgeworICAgICAg
ICAgICAgZmlsdGVyVmFsdWUgPSBjb25zdW1lRmlsdGVyRnVuY3Rpb24ocmFuZ2UsIGNvbnRleHQp
OworICAgICAgICAgICAgaWYgKCFmaWx0ZXJWYWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBsaXN0LT5hcHBlbmQoKmZpbHRlclZhbHVlKTsK
KyAgICB9IHdoaWxlICghcmFuZ2UuYXRFbmQoKSk7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0
YXRpYyBDU1NWYWx1ZSogY29uc3VtZVRleHREZWNvcmF0aW9uTGluZShDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSkKK3sKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7Cisg
ICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChy
YW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNw
YWNlU2VwYXJhdGVkKCk7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIGlkZW50ID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQmxpbmssIENTU1ZhbHVlVW5kZXJs
aW5lLCBDU1NWYWx1ZU92ZXJsaW5lLCBDU1NWYWx1ZUxpbmVUaHJvdWdoPihyYW5nZSk7CisgICAg
ICAgIGlmICghaWRlbnQpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGxpc3QtPmhh
c1ZhbHVlKCppZGVudCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgbGlz
dC0+YXBwZW5kKCppZGVudCk7CisgICAgfQorCisgICAgaWYgKCFsaXN0LT5sZW5ndGgoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKKy8vIG5vbmUgfCBz
dHJpY3QgfCBjb250ZW50IHwgWyBsYXlvdXQgfHwgc3R5bGUgfHwgcGFpbnQgfHwgc2l6ZSBdCitz
dGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDb250YWluKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
KQoreworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKwor
ICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0
ZWQoKTsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVTdHJpY3QgfHwgaWQgPT0gQ1NTVmFsdWVDb250
ZW50KSB7CisgICAgICAgIGxpc3QtPmFwcGVuZCgqY29uc3VtZUlkZW50KHJhbmdlKSk7CisgICAg
ICAgIHJldHVybiBsaXN0OworICAgIH0KKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogaWRlbnQgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVQYWludCwgQ1NTVmFs
dWVMYXlvdXQsIENTU1ZhbHVlU3R5bGUsIENTU1ZhbHVlU2l6ZT4ocmFuZ2UpOworICAgICAgICBp
ZiAoIWlkZW50KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChsaXN0LT5oYXNWYWx1
ZSgqaWRlbnQpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGxpc3QtPmFw
cGVuZCgqaWRlbnQpOworICAgIH0KKworICAgIGlmICghbGlzdC0+bGVuZ3RoKCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiBsaXN0OworfQorCitzdGF0aWMgQ1NTVmFsdWUq
IGNvbnN1bWVQYXRoKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIC8vIEZJWE1F
OiBBZGQgc3VwcG9ydCBmb3IgPHVybD4sIDxiYXNpYy1zaGFwZT4sIDxnZW9tZXRyeS1ib3g+Lgor
ICAgIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpICE9IENTU1ZhbHVlUGF0aCkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGZ1bmN0aW9uUmFu
Z2UgPSByYW5nZTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGZ1bmN0aW9uQXJncyA9IGNvbnN1
bWVGdW5jdGlvbihmdW5jdGlvblJhbmdlKTsKKworICAgIGlmIChmdW5jdGlvbkFyZ3MucGVlaygp
LnR5cGUoKSAhPSBTdHJpbmdUb2tlbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgU3Ry
aW5nIHBhdGhTdHJpbmcgPSBmdW5jdGlvbkFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2Uo
KS52YWx1ZSgpLnRvU3RyaW5nKCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHUGF0aEJ5dGVT
dHJlYW0+IGJ5dGVTdHJlYW0gPSBTVkdQYXRoQnl0ZVN0cmVhbTo6Y3JlYXRlKCk7CisgICAgaWYg
KGJ1aWxkQnl0ZVN0cmVhbUZyb21TdHJpbmcocGF0aFN0cmluZywgKmJ5dGVTdHJlYW0pICE9IFNW
R1BhcnNlU3RhdHVzOjpOb0Vycm9yCisgICAgICAgIHx8ICFmdW5jdGlvbkFyZ3MuYXRFbmQoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByYW5nZSA9IGZ1bmN0aW9uUmFuZ2U7Cisg
ICAgaWYgKGJ5dGVTdHJlYW0tPmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSk7CisgICAgcmV0dXJuIENTU1Bh
dGhWYWx1ZTo6Y3JlYXRlKHN0ZDo6bW92ZShieXRlU3RyZWFtKSk7Cit9CisKK3N0YXRpYyBDU1NW
YWx1ZSogY29uc3VtZVBhdGhPck5vbmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7Cisg
ICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgIGlmIChpZCA9PSBDU1NW
YWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgcmV0
dXJuIGNvbnN1bWVQYXRoKHJhbmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lTW90
aW9uUm90YXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTVmFsdWUq
IGFuZ2xlID0gY29uc3VtZUFuZ2xlKHJhbmdlKTsKKyAgICBDU1NWYWx1ZSoga2V5d29yZCA9IGNv
bnN1bWVJZGVudDxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlUmV2ZXJzZT4ocmFuZ2UpOworICAgIGlm
ICghYW5nbGUgJiYgIWtleXdvcmQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYg
KCFhbmdsZSkKKyAgICAgICAgYW5nbGUgPSBjb25zdW1lQW5nbGUocmFuZ2UpOworCisgICAgQ1NT
VmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwor
ICAgIGlmIChrZXl3b3JkKQorICAgICAgICBsaXN0LT5hcHBlbmQoKmtleXdvcmQpOworICAgIGlm
IChhbmdsZSkKKyAgICAgICAgbGlzdC0+YXBwZW5kKCphbmdsZSk7CisgICAgcmV0dXJuIGxpc3Q7
Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVRleHRFbXBoYXNpc1N0eWxlKENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCku
aWQoKTsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3Vt
ZUlkZW50KHJhbmdlKTsKKworICAgIGlmIChDU1NWYWx1ZSogdGV4dEVtcGhhc2lzU3R5bGUgPSBj
b25zdW1lU3RyaW5nKHJhbmdlKSkKKyAgICAgICAgcmV0dXJuIHRleHRFbXBoYXNpc1N0eWxlOwor
CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpbGwgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVGaWxs
ZWQsIENTU1ZhbHVlT3Blbj4ocmFuZ2UpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzaGFwZSA9
IGNvbnN1bWVJZGVudDxDU1NWYWx1ZURvdCwgQ1NTVmFsdWVDaXJjbGUsIENTU1ZhbHVlRG91Ymxl
Q2lyY2xlLCBDU1NWYWx1ZVRyaWFuZ2xlLCBDU1NWYWx1ZVNlc2FtZT4ocmFuZ2UpOworICAgIGlm
ICghZmlsbCkKKyAgICAgICAgZmlsbCA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUZpbGxlZCwgQ1NT
VmFsdWVPcGVuPihyYW5nZSk7CisgICAgaWYgKGZpbGwgJiYgc2hhcGUpIHsKKyAgICAgICAgQ1NT
VmFsdWVMaXN0KiBwYXJzZWRWYWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJh
dGVkKCk7CisgICAgICAgIHBhcnNlZFZhbHVlcy0+YXBwZW5kKCpmaWxsKTsKKyAgICAgICAgcGFy
c2VkVmFsdWVzLT5hcHBlbmQoKnNoYXBlKTsKKyAgICAgICAgcmV0dXJuIHBhcnNlZFZhbHVlczsK
KyAgICB9CisgICAgaWYgKGZpbGwpCisgICAgICAgIHJldHVybiBmaWxsOworICAgIGlmIChzaGFw
ZSkKKyAgICAgICAgcmV0dXJuIHNoYXBlOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0
aWMgQ1NTVmFsdWUqIGNvbnN1bWVPdXRsaW5lQ29sb3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICAvLyBBbGxvdyB0aGUgc3Bl
Y2lhbCBmb2N1cyBjb2xvciBldmVuIGluIEhUTUwgU3RhbmRhcmQgcGFyc2luZyBtb2RlLgorICAg
IGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZVdlYmtpdEZvY3VzUmluZ0NvbG9yKQor
ICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZUNv
bG9yKHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVl
KiBjb25zdW1lTGluZVdpZHRoKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJN
b2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCit7CisgICAgQ1NTVmFs
dWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZVRoaW4g
fHwgaWQgPT0gQ1NTVmFsdWVNZWRpdW0gfHwgaWQgPT0gQ1NTVmFsdWVUaGljaykKKyAgICAgICAg
cmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGgocmFu
Z2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwgdW5pdGxlc3MpOworfQor
CitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVCb3JkZXJXaWR0aChDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1
aXJrIHVuaXRsZXNzKQoreworICAgIHJldHVybiBjb25zdW1lTGluZVdpZHRoKHJhbmdlLCBjc3NQ
YXJzZXJNb2RlLCB1bml0bGVzcyk7Cit9CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29u
c3VtZVRleHRTdHJva2VXaWR0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2Vy
TW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIHJldHVybiBjb25zdW1lTGluZVdpZHRoKHJhbmdl
LCBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworfQorCitzdGF0aWMgQ1NT
UHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVDb2x1bW5SdWxlV2lkdGgoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICByZXR1cm4gY29u
c3VtZUxpbmVXaWR0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlk
KTsKK30KKworc3RhdGljIGJvb2wgY29uc3VtZVRyYW5zbGF0ZTNkKENTU1BhcnNlclRva2VuUmFu
Z2UmIGFyZ3MsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgQ1NTRnVuY3Rpb25WYWx1ZSom
IHRyYW5zZm9ybVZhbHVlKQoreworICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzID0gMjsK
KyAgICBDU1NWYWx1ZSogcGFyc2VkVmFsdWUgPSBudWxscHRyOworICAgIGRvIHsKKyAgICAgICAg
cGFyc2VkVmFsdWUgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUs
IFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKCpwYXJzZWRWYWx1
ZSk7CisgICAgICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IHdoaWxlICgtLW51bWJlck9mQXJndW1l
bnRzKTsKKyAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGgoYXJncywgY3NzUGFyc2VyTW9k
ZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKCFwYXJzZWRWYWx1ZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgY29uc3VtZU51bWJlcnMoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgYXJncywgQ1NTRnVuY3Rpb25WYWx1ZSomIHRyYW5zZm9ybVZhbHVlLCB1bnNpZ25l
ZCBudW1iZXJPZkFyZ3VtZW50cykKK3sKKyAgICBkbyB7CisgICAgICAgIENTU1ZhbHVlKiBwYXJz
ZWRWYWx1ZSA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGlm
ICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHRyYW5z
Zm9ybVZhbHVlLT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICAgICAgaWYgKC0tbnVtYmVyT2ZB
cmd1bWVudHMgJiYgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSB3aGlsZSAobnVtYmVyT2ZBcmd1bWVudHMpOwor
ICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBjb25zdW1lUGVyc3BlY3RpdmUoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NG
dW5jdGlvblZhbHVlKiYgdHJhbnNmb3JtVmFsdWUsIGJvb2wgdXNlTGVnYWN5UGFyc2luZykKK3sK
KyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcGFyc2VkVmFsdWUgPSBjb25zdW1lTGVuZ3RoKGFyZ3Ms
IGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgaWYgKCFwYXJzZWRW
YWx1ZSAmJiB1c2VMZWdhY3lQYXJzaW5nKSB7CisgICAgICAgIGRvdWJsZSBwZXJzcGVjdGl2ZTsK
KyAgICAgICAgaWYgKCFjb25zdW1lTnVtYmVyUmF3KGFyZ3MsIHBlcnNwZWN0aXZlKSB8fCBwZXJz
cGVjdGl2ZSA8IDApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHBhcnNlZFZh
bHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShwZXJzcGVjdGl2ZSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OlVuaXRUeXBlOjpQaXhlbHMpOworICAgIH0KKyAgICBpZiAoIXBhcnNlZFZhbHVlKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZCgqcGFyc2Vk
VmFsdWUpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVU
cmFuc2Zvcm1WYWx1ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBj
c3NQYXJzZXJNb2RlLCBib29sIHVzZUxlZ2FjeVBhcnNpbmcpCit7CisgICAgQ1NTVmFsdWVJRCBm
dW5jdGlvbklkID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKTsKKyAgICBpZiAoZnVuY3Rpb25J
ZCA9PSBDU1NWYWx1ZUludmFsaWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIENTU1Bh
cnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7CisgICAgaWYgKGFy
Z3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NTRnVuY3Rpb25WYWx1
ZSogdHJhbnNmb3JtVmFsdWUgPSBDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUoZnVuY3Rpb25JZCk7
CisgICAgQ1NTVmFsdWUqIHBhcnNlZFZhbHVlID0gbnVsbHB0cjsKKyAgICBzd2l0Y2ggKGZ1bmN0
aW9uSWQpIHsKKyAgICBjYXNlIENTU1ZhbHVlUm90YXRlOgorICAgIGNhc2UgQ1NTVmFsdWVSb3Rh
dGVYOgorICAgIGNhc2UgQ1NTVmFsdWVSb3RhdGVZOgorICAgIGNhc2UgQ1NTVmFsdWVSb3RhdGVa
OgorICAgIGNhc2UgQ1NTVmFsdWVTa2V3WDoKKyAgICBjYXNlIENTU1ZhbHVlU2tld1k6CisgICAg
Y2FzZSBDU1NWYWx1ZVNrZXc6CisgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUFuZ2xlKGFy
Z3MpOworICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIGlmIChmdW5jdGlvbklkID09IENTU1ZhbHVlU2tldyAmJiBjb25zdW1lQ29t
bWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKSB7CisgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1
ZS0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1
bWVBbmdsZShhcmdzKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDU1NWYWx1ZVNjYWxlWDoKKyAgICBjYXNlIENTU1ZhbHVlU2NhbGVZOgorICAgIGNhc2UgQ1NT
VmFsdWVTY2FsZVo6CisgICAgY2FzZSBDU1NWYWx1ZVNjYWxlOgorICAgICAgICBwYXJzZWRWYWx1
ZSA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGlmICghcGFy
c2VkVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKGZ1bmN0
aW9uSWQgPT0gQ1NTVmFsdWVTY2FsZSAmJiBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNl
KGFyZ3MpKSB7CisgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKCpwYXJzZWRWYWx1
ZSk7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVS
YW5nZUFsbCk7CisgICAgICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
VmFsdWVQZXJzcGVjdGl2ZToKKyAgICAgICAgaWYgKCFjb25zdW1lUGVyc3BlY3RpdmUoYXJncywg
Y3NzUGFyc2VyTW9kZSwgdHJhbnNmb3JtVmFsdWUsIHVzZUxlZ2FjeVBhcnNpbmcpKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVU
cmFuc2xhdGVYOgorICAgIGNhc2UgQ1NTVmFsdWVUcmFuc2xhdGVZOgorICAgIGNhc2UgQ1NTVmFs
dWVUcmFuc2xhdGU6CisgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUxlbmd0aE9yUGVyY2Vu
dChhcmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgaWYgKCFwYXJz
ZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBpZiAoZnVuY3Rp
b25JZCA9PSBDU1NWYWx1ZVRyYW5zbGF0ZSAmJiBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNw
YWNlKGFyZ3MpKSB7CisgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKCpwYXJzZWRW
YWx1ZSk7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQo
YXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgICAgICBpZiAoIXBh
cnNlZFZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVUcmFuc2xhdGVaOgorICAgICAgICBwYXJz
ZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGgoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFs
bCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVNYXRyaXg6CisgICAgY2FzZSBD
U1NWYWx1ZU1hdHJpeDNkOgorICAgICAgICBpZiAoIWNvbnN1bWVOdW1iZXJzKGFyZ3MsIHRyYW5z
Zm9ybVZhbHVlLCAoZnVuY3Rpb25JZCA9PSBDU1NWYWx1ZU1hdHJpeDNkKSA/IDE2IDogNikpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NW
YWx1ZVNjYWxlM2Q6CisgICAgICAgIGlmICghY29uc3VtZU51bWJlcnMoYXJncywgdHJhbnNmb3Jt
VmFsdWUsIDMpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQ1NTVmFsdWVSb3RhdGUzZDoKKyAgICAgICAgaWYgKCFjb25zdW1lTnVtYmVycyhh
cmdzLCB0cmFuc2Zvcm1WYWx1ZSwgMykgfHwgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3Bh
Y2UoYXJncykpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcGFyc2VkVmFs
dWUgPSBjb25zdW1lQW5nbGUoYXJncyk7CisgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1
ZVRyYW5zbGF0ZTNkOgorICAgICAgICBpZiAoIWNvbnN1bWVUcmFuc2xhdGUzZChhcmdzLCBjc3NQ
YXJzZXJNb2RlLCB0cmFuc2Zvcm1WYWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorICAgIGlmIChwYXJzZWRWYWx1ZSkKKyAgICAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVu
ZCgqcGFyc2VkVmFsdWUpOworICAgIGlmICghYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gdHJhbnNmb3JtVmFsdWU7Cit9CisKK3N0YXRpYyBDU1NWYWx1
ZSogY29uc3VtZVRyYW5zZm9ybShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2Vy
TW9kZSBjc3NQYXJzZXJNb2RlLCBib29sIHVzZUxlZ2FjeVBhcnNpbmcpCit7CisgICAgaWYgKHJh
bmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJ
ZGVudChyYW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNy
ZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgZG8geworICAgICAgICBDU1NWYWx1ZSogcGFyc2Vk
VHJhbnNmb3JtVmFsdWUgPSBjb25zdW1lVHJhbnNmb3JtVmFsdWUocmFuZ2UsIGNzc1BhcnNlck1v
ZGUsIHVzZUxlZ2FjeVBhcnNpbmcpOworICAgICAgICBpZiAoIXBhcnNlZFRyYW5zZm9ybVZhbHVl
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGxpc3QtPmFwcGVuZCgqcGFy
c2VkVHJhbnNmb3JtVmFsdWUpOworICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgpKTsKKworICAg
IHJldHVybiBsaXN0OworfQorCit0ZW1wbGF0ZSA8Q1NTVmFsdWVJRCBzdGFydCwgQ1NTVmFsdWVJ
RCBlbmQ+CitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVQb3NpdGlvbkxvbmdoYW5kKENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAg
aWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gSWRlbnRUb2tlbikgeworICAgICAgICBDU1NWYWx1
ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgICAgIGludCBwZXJjZW50OworICAgICAg
ICBpZiAoaWQgPT0gc3RhcnQpCisgICAgICAgICAgICBwZXJjZW50ID0gMDsKKyAgICAgICAgZWxz
ZSBpZiAoaWQgPT0gQ1NTVmFsdWVDZW50ZXIpCisgICAgICAgICAgICBwZXJjZW50ID0gNTA7Cisg
ICAgICAgIGVsc2UgaWYgKGlkID09IGVuZCkKKyAgICAgICAgICAgIHBlcmNlbnQgPSAxMDA7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByYW5nZS5j
b25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShwZXJjZW50LCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBlcmNl
bnRhZ2UpOworICAgIH0KKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwg
Y3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29u
c3VtZVBvc2l0aW9uWChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBj
c3NQYXJzZXJNb2RlKQoreworICAgIHJldHVybiBjb25zdW1lUG9zaXRpb25Mb25naGFuZDxDU1NW
YWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKK30KKworc3Rh
dGljIENTU1ZhbHVlKiBjb25zdW1lUG9zaXRpb25ZKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgcmV0dXJuIGNvbnN1bWVQb3Np
dGlvbkxvbmdoYW5kPENTU1ZhbHVlVG9wLCBDU1NWYWx1ZUJvdHRvbT4ocmFuZ2UsIGNzc1BhcnNl
ck1vZGUpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVQYWludFN0cm9rZShDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAg
IGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBj
b25zdW1lSWRlbnQocmFuZ2UpOworICAgIENTU1VSSVZhbHVlKiB1cmwgPSBjb25zdW1lVXJsKHJh
bmdlKTsKKyAgICBpZiAodXJsKSB7CisgICAgICAgIENTU1ZhbHVlKiBwYXJzZWRWYWx1ZSA9IG51
bGxwdHI7CisgICAgICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisg
ICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUNvbG9yKHJhbmdlLCBjc3NQYXJz
ZXJNb2RlKTsKKyAgICAgICAgaWYgKHBhcnNlZFZhbHVlKSB7CisgICAgICAgICAgICBDU1NWYWx1
ZUxpc3QqIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAg
ICAgICAgICAgIHZhbHVlcy0+YXBwZW5kKCp1cmwpOworICAgICAgICAgICAgdmFsdWVzLT5hcHBl
bmQoKnBhcnNlZFZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZXM7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHVybDsKKyAgICB9CisgICAgcmV0dXJuIGNvbnN1bWVDb2xvcihyYW5n
ZSwgY3NzUGFyc2VyTW9kZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVBhaW50T3Jk
ZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5p
ZCgpID09IENTU1ZhbHVlTm9ybWFsKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdl
KTsKKworICAgIFZlY3RvcjxDU1NWYWx1ZUlELCAzPiBwYWludFR5cGVMaXN0OworICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBmaWxsID0gbnVsbHB0cjsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogc3Ry
b2tlID0gbnVsbHB0cjsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogbWFya2VycyA9IG51bGxwdHI7
CisgICAgZG8geworICAgICAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7Cisg
ICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUZpbGwgJiYgIWZpbGwpCisgICAgICAgICAgICBmaWxs
ID0gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICAgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVT
dHJva2UgJiYgIXN0cm9rZSkKKyAgICAgICAgICAgIHN0cm9rZSA9IGNvbnN1bWVJZGVudChyYW5n
ZSk7CisgICAgICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlTWFya2VycyAmJiAhbWFya2VycykK
KyAgICAgICAgICAgIG1hcmtlcnMgPSBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcGFpbnRUeXBlTGlzdC5hcHBl
bmQoaWQpOworICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgpKTsKKworICAgIC8vIEFmdGVyIHBh
cnNpbmcgd2Ugc2VyaWFsaXplIHRoZSBwYWludC1vcmRlciBsaXN0LiBTaW5jZSBpdCBpcyBub3Qg
cG9zc2libGUgdG8KKyAgICAvLyBwb3AgYSBsYXN0IGxpc3QgaXRlbXMgZnJvbSBDU1NWYWx1ZUxp
c3Qgd2l0aG91dCBiaWdnZXIgY29zdCwgd2UgY3JlYXRlIHRoZQorICAgIC8vIGxpc3QgYWZ0ZXIg
cGFyc2luZy4KKyAgICBDU1NWYWx1ZUlEIGZpcnN0UGFpbnRPcmRlclR5cGUgPSBwYWludFR5cGVM
aXN0LmF0KDApOworICAgIENTU1ZhbHVlTGlzdCogcGFpbnRPcmRlckxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgc3dpdGNoIChmaXJzdFBhaW50T3JkZXJU
eXBlKSB7CisgICAgY2FzZSBDU1NWYWx1ZUZpbGw6CisgICAgY2FzZSBDU1NWYWx1ZVN0cm9rZToK
KyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZChmaXJzdFBhaW50T3JkZXJUeXBlID09IENT
U1ZhbHVlRmlsbCA/ICpmaWxsIDogKnN0cm9rZSk7CisgICAgICAgIGlmIChwYWludFR5cGVMaXN0
LnNpemUoKSA+IDEpIHsKKyAgICAgICAgICAgIGlmIChwYWludFR5cGVMaXN0LmF0KDEpID09IENT
U1ZhbHVlTWFya2VycykKKyAgICAgICAgICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKCpt
YXJrZXJzKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlTWFy
a2VyczoKKyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZCgqbWFya2Vycyk7CisgICAgICAg
IGlmIChwYWludFR5cGVMaXN0LnNpemUoKSA+IDEpIHsKKyAgICAgICAgICAgIGlmIChwYWludFR5
cGVMaXN0LmF0KDEpID09IENTU1ZhbHVlU3Ryb2tlKQorICAgICAgICAgICAgICAgIHBhaW50T3Jk
ZXJMaXN0LT5hcHBlbmQoKnN0cm9rZSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgcmV0
dXJuIHBhaW50T3JkZXJMaXN0OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVOb25lT3JV
UkkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5p
ZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7
CisgICAgcmV0dXJuIGNvbnN1bWVVcmwocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNv
bnN1bWVGbGV4QmFzaXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUg
Y3NzUGFyc2VyTW9kZSkKK3sKKyAgICAvLyBGSVhNRTogU3VwcG9ydCBpbnRyaW5zaWMgZGltZW5z
aW9ucyB0b28uCisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVMZW5n
dGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7
Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVN0cm9rZURhc2hhcnJheShDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlk
KCk7CisgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJ
ZGVudChyYW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIGRhc2hlcyA9IENTU1ZhbHVlTGlzdDo6
Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICBkbyB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBkYXNoID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgU1ZHQXR0cmlidXRlTW9k
ZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgaWYgKCFkYXNoIHx8IChjb25zdW1l
Q29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSAmJiByYW5nZS5hdEVuZCgpKSkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBkYXNoZXMtPmFwcGVuZCgqZGFzaCk7Cisg
ICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpOworICAgIHJldHVybiBkYXNoZXM7Cit9CisKK3N0
YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUJhc2VsaW5lU2hpZnQoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgp
OworICAgIGlmIChpZCA9PSBDU1NWYWx1ZUJhc2VsaW5lIHx8IGlkID09IENTU1ZhbHVlU3ViIHx8
IGlkID09IENTU1ZhbHVlU3VwZXIpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2Up
OworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBTVkdBdHRyaWJ1dGVN
b2RlLCBWYWx1ZVJhbmdlQWxsKTsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25z
dW1lUnhPclJ5KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5w
ZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQo
cmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBTVkdBdHRy
aWJ1dGVNb2RlLCBWYWx1ZVJhbmdlQWxsLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworfQorCitz
dGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDdXJzb3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Us
IGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIGJvb2wgaW5RdWlya3NNb2RlKQorewor
ICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IG51bGxwdHI7CisgICAgd2hpbGUgKENTU1ZhbHVlKiBp
bWFnZSA9IGNvbnN1bWVJbWFnZShyYW5nZSwgY29udGV4dCwgQ29uc3VtZUdlbmVyYXRlZEltYWdl
OjpGb3JiaWQpKSB7CisgICAgICAgIGRvdWJsZSBudW07CisgICAgICAgIEludFBvaW50IGhvdFNw
b3QoLTEsIC0xKTsKKyAgICAgICAgYm9vbCBob3RTcG90U3BlY2lmaWVkID0gZmFsc2U7CisgICAg
ICAgIGlmIChjb25zdW1lTnVtYmVyUmF3KHJhbmdlLCBudW0pKSB7CisgICAgICAgICAgICBob3RT
cG90LnNldFgoaW50KG51bSkpOworICAgICAgICAgICAgaWYgKCFjb25zdW1lTnVtYmVyUmF3KHJh
bmdlLCBudW0pKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAg
aG90U3BvdC5zZXRZKGludChudW0pKTsKKyAgICAgICAgICAgIGhvdFNwb3RTcGVjaWZpZWQgPSB0
cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFsaXN0KQorICAgICAgICAgICAgbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKworICAgICAgICBsaXN0LT5h
cHBlbmQoKkNTU0N1cnNvckltYWdlVmFsdWU6OmNyZWF0ZShpbWFnZSwgaG90U3BvdFNwZWNpZmll
ZCwgaG90U3BvdCkpOworICAgICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3Bh
Y2UocmFuZ2UpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgQ1NT
VmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgIGlmICghcmFuZ2UuYXRFbmQoKSAm
JiBjb250ZXh0LnVzZUNvdW50ZXIoKSkgeworICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJr
aXRab29tSW4pCisgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291
bnRlcjo6UHJlZml4ZWRDdXJzb3Jab29tSW4pOworICAgICAgICBlbHNlIGlmIChpZCA9PSBDU1NW
YWx1ZVdlYmtpdFpvb21PdXQpCisgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291
bnQoVXNlQ291bnRlcjo6UHJlZml4ZWRDdXJzb3Jab29tT3V0KTsKKyAgICB9CisgICAgQ1NTVmFs
dWUqIGN1cnNvclR5cGUgPSBudWxscHRyOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZUhhbmQpIHsK
KyAgICAgICAgaWYgKCFpblF1aXJrc01vZGUpIC8vIE5vbi1zdGFuZGFyZCBiZWhhdmlvcgorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGN1cnNvclR5cGUgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVBvaW50ZXIpOworICAgICAgICByYW5n
ZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgIH0gZWxzZSBpZiAoKGlkID49IENT
U1ZhbHVlQXV0byAmJiBpZCA8PSBDU1NWYWx1ZVdlYmtpdFpvb21PdXQpIHx8IGlkID09IENTU1Zh
bHVlQ29weSB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpIHsKKyAgICAgICAgY3Vyc29yVHlwZSA9IGNv
bnN1bWVJZGVudChyYW5nZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCisgICAgaWYgKCFsaXN0KQorICAgICAgICByZXR1cm4gY3Vyc29yVHlwZTsKKyAg
ICBsaXN0LT5hcHBlbmQoKmN1cnNvclR5cGUpOworICAgIHJldHVybiBsaXN0OworfQorCitzdGF0
aWMgQ1NTVmFsdWUqIGNvbnN1bWVBdHRyKENTU1BhcnNlclRva2VuUmFuZ2UgYXJncywgQ1NTUGFy
c2VyQ29udGV4dCBjb250ZXh0KQoreworICAgIGlmIChhcmdzLnBlZWsoKS50eXBlKCkgIT0gSWRl
bnRUb2tlbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBTdHJpbmcgYXR0ck5hbWUg
PSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b1N0cmluZygpOwor
ICAgIGlmICghYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlm
IChjb250ZXh0LmlzSFRNTERvY3VtZW50KCkpCisgICAgICAgIGF0dHJOYW1lID0gYXR0ck5hbWUu
bG93ZXIoKTsKKworICAgIENTU0Z1bmN0aW9uVmFsdWUqIGF0dHJWYWx1ZSA9IENTU0Z1bmN0aW9u
VmFsdWU6OmNyZWF0ZShDU1NWYWx1ZUF0dHIpOworICAgIGF0dHJWYWx1ZS0+YXBwZW5kKCpDU1ND
dXN0b21JZGVudFZhbHVlOjpjcmVhdGUoYXR0ck5hbWUpKTsKKyAgICByZXR1cm4gYXR0clZhbHVl
OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDb3VudGVyQ29udGVudChDU1NQYXJzZXJU
b2tlblJhbmdlIGFyZ3MsIGJvb2wgY291bnRlcnMpCit7CisgICAgQ1NTQ3VzdG9tSWRlbnRWYWx1
ZSogaWRlbnRpZmllciA9IGNvbnN1bWVDdXN0b21JZGVudChhcmdzKTsKKyAgICBpZiAoIWlkZW50
aWZpZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQ1NTU3RyaW5nVmFsdWUqIHNl
cGFyYXRvciA9IG51bGxwdHI7CisgICAgaWYgKCFjb3VudGVycykgeworICAgICAgICBzZXBhcmF0
b3IgPSBDU1NTdHJpbmdWYWx1ZTo6Y3JlYXRlKFN0cmluZygpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykgfHwgYXJncy5w
ZWVrKCkudHlwZSgpICE9IFN0cmluZ1Rva2VuKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIHNlcGFyYXRvciA9IENTU1N0cmluZ1ZhbHVlOjpjcmVhdGUoYXJncy5jb25zdW1l
SW5jbHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVlKCkudG9TdHJpbmcoKSk7CisgICAgfQorCisgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIGxpc3RTdHlsZSA9IG51bGxwdHI7CisgICAgaWYgKGNvbnN1bWVD
b21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpIHsKKyAgICAgICAgQ1NTVmFsdWVJRCBpZCA9
IGFyZ3MucGVlaygpLmlkKCk7CisgICAgICAgIGlmICgoaWQgIT0gQ1NTVmFsdWVOb25lICYmIChp
ZCA8IENTU1ZhbHVlRGlzYyB8fCBpZCA+IENTU1ZhbHVlS2F0YWthbmFJcm9oYSkpKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGxpc3RTdHlsZSA9IGNvbnN1bWVJZGVudChh
cmdzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBsaXN0U3R5bGUgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZURlY2ltYWwpOworICAgIH0KKworICAgIGlmICgh
YXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gQ1NTQ291
bnRlclZhbHVlOjpjcmVhdGUoaWRlbnRpZmllciwgbGlzdFN0eWxlLCBzZXBhcmF0b3IpOworfQor
CitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDb250ZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQpCit7CisgICAgaWYgKGlkZW50TWF0Y2hlczxD
U1NWYWx1ZU5vbmUsIENTU1ZhbHVlTm9ybWFsPihyYW5nZS5wZWVrKCkuaWQoKSkpCisgICAgICAg
IHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZXMg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisKKyAgICBkbyB7CisgICAg
ICAgIENTU1ZhbHVlKiBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVJbWFnZShyYW5nZSwgY29udGV4dCk7
CisgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNv
bnN1bWVJZGVudDxDU1NWYWx1ZU9wZW5RdW90ZSwgQ1NTVmFsdWVDbG9zZVF1b3RlLCBDU1NWYWx1
ZU5vT3BlblF1b3RlLCBDU1NWYWx1ZU5vQ2xvc2VRdW90ZT4ocmFuZ2UpOworICAgICAgICBpZiAo
IXBhcnNlZFZhbHVlKQorICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lU3RyaW5nKHJh
bmdlKTsKKyAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkgeworICAgICAgICAgICAgaWYgKHJhbmdl
LnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVBdHRyKQorICAgICAgICAgICAgICAgIHBh
cnNlZFZhbHVlID0gY29uc3VtZUF0dHIoY29uc3VtZUZ1bmN0aW9uKHJhbmdlKSwgY29udGV4dCk7
CisgICAgICAgICAgICBlbHNlIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1Zh
bHVlQ291bnRlcikKKyAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVDb3VudGVy
Q29udGVudChjb25zdW1lRnVuY3Rpb24ocmFuZ2UpLCBmYWxzZSk7CisgICAgICAgICAgICBlbHNl
IGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlQ291bnRlcnMpCisgICAg
ICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lQ291bnRlckNvbnRlbnQoY29uc3VtZUZ1
bmN0aW9uKHJhbmdlKSwgdHJ1ZSk7CisgICAgICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIHZhbHVlcy0+
YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpOworCisg
ICAgcmV0dXJuIHZhbHVlczsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1l
UGVyc3BlY3RpdmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3Nz
UGFyc2VyTW9kZSwgQ1NTUHJvcGVydHlJRCB1bnJlc29sdmVkUHJvcGVydHkpCit7CisgICAgaWYg
KHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVJZGVudChyYW5nZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBhcnNlZFZhbHVlID0gY29u
c3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYg
KCFwYXJzZWRWYWx1ZSAmJiAodW5yZXNvbHZlZFByb3BlcnR5ID09IENTU1Byb3BlcnR5QWxpYXNX
ZWJraXRQZXJzcGVjdGl2ZSkpIHsKKyAgICAgICAgZG91YmxlIHBlcnNwZWN0aXZlOworICAgICAg
ICBpZiAoIWNvbnN1bWVOdW1iZXJSYXcocmFuZ2UsIHBlcnNwZWN0aXZlKSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICBwYXJzZWRWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGUocGVyc3BlY3RpdmUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGl4ZWxz
KTsKKyAgICB9CisgICAgaWYgKHBhcnNlZFZhbHVlICYmIChwYXJzZWRWYWx1ZS0+aXNDYWxjdWxh
dGVkKCkgfHwgcGFyc2VkVmFsdWUtPmdldERvdWJsZVZhbHVlKCkgPiAwKSkKKyAgICAgICAgcmV0
dXJuIHBhcnNlZFZhbHVlOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgQ1NTVmFs
dWVMaXN0KiBjb25zdW1lUG9zaXRpb25MaXN0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBD
U1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgQ1NTVmFsdWVMaXN0KiBwb3NpdGlv
bnMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgZG8geworICAg
ICAgICBDU1NWYWx1ZSogcG9zaXRpb24gPSBjb25zdW1lUG9zaXRpb24ocmFuZ2UsIGNzc1BhcnNl
ck1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CisgICAgICAgIGlmICghcG9zaXRpb24pCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcG9zaXRpb25zLT5hcHBlbmQoKnBv
c2l0aW9uKTsKKyAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJh
bmdlKSk7CisgICAgcmV0dXJuIHBvc2l0aW9uczsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25z
dW1lU2Nyb2xsU25hcENvb3JkaW5hdGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1Bh
cnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0g
Q1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICBy
ZXR1cm4gY29uc3VtZVBvc2l0aW9uTGlzdChyYW5nZSwgY3NzUGFyc2VyTW9kZSk7Cit9CisKK3N0
YXRpYyBDU1NWYWx1ZSogY29uc3VtZVNjcm9sbFNuYXBQb2ludHMoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAocmFuZ2Uu
cGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50
KHJhbmdlKTsKKyAgICBpZiAocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZVJl
cGVhdCkgeworICAgICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rp
b24ocmFuZ2UpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcGFyc2VkVmFsdWUgPSBjb25z
dW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdh
dGl2ZSk7CisgICAgICAgIGlmIChhcmdzLmF0RW5kKCkgJiYgcGFyc2VkVmFsdWUgJiYgKHBhcnNl
ZFZhbHVlLT5pc0NhbGN1bGF0ZWQoKSB8fCBwYXJzZWRWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSA+
IDApKSB7CisgICAgICAgICAgICBDU1NGdW5jdGlvblZhbHVlKiByZXN1bHQgPSBDU1NGdW5jdGlv
blZhbHVlOjpjcmVhdGUoQ1NTVmFsdWVSZXBlYXQpOworICAgICAgICAgICAgcmVzdWx0LT5hcHBl
bmQoKnBhcnNlZFZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3Vt
ZUJvcmRlclJhZGl1c0Nvcm5lcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2Vy
TW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIENTU1ZhbHVlKiBwYXJzZWRWYWx1ZTEgPSBjb25z
dW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVn
YXRpdmUpOworICAgIGlmICghcGFyc2VkVmFsdWUxKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBDU1NWYWx1ZSogcGFyc2VkVmFsdWUyID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5n
ZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICBpZiAoIXBhcnNl
ZFZhbHVlMikKKyAgICAgICAgcGFyc2VkVmFsdWUyID0gcGFyc2VkVmFsdWUxOworICAgIHJldHVy
biBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShwYXJzZWRWYWx1ZTEsIHBhcnNlZFZhbHVlMiwgQ1NTVmFs
dWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVzKTsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZh
bHVlKiBjb25zdW1lVmVydGljYWxBbGlnbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NT
UGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwYXJz
ZWRWYWx1ZSA9IGNvbnN1bWVJZGVudFJhbmdlKHJhbmdlLCBDU1NWYWx1ZUJhc2VsaW5lLCBDU1NW
YWx1ZVdlYmtpdEJhc2VsaW5lTWlkZGxlKTsKKyAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAg
ICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1v
ZGUsIFZhbHVlUmFuZ2VBbGwsIFVuaXRsZXNzUXVpcms6OkFsbG93KTsKKyAgICByZXR1cm4gcGFy
c2VkVmFsdWU7Cit9CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZVNoYXBlUmFk
aXVzKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9k
ZSkKK3sKKyAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlQ2xvc2VzdFNpZGUsIENTU1ZhbHVl
RmFydGhlc3RTaWRlPihhcmdzLnBlZWsoKS5pZCgpKSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJ
ZGVudChhcmdzKTsKKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjc3NQ
YXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworfQorCitzdGF0aWMgQ1NTQmFzaWNT
aGFwZUNpcmNsZVZhbHVlKiBjb25zdW1lQmFzaWNTaGFwZUNpcmNsZShDU1NQYXJzZXJUb2tlblJh
bmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIC8vIHNw
ZWM6IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtc2hhcGVzLyNzdXBwb3J0ZWQtYmFzaWMt
c2hhcGVzCisgICAgLy8gY2lyY2xlKCBbPHNoYXBlLXJhZGl1cz5dPyBbYXQgPHBvc2l0aW9uPl0/
ICkKKyAgICBDU1NCYXNpY1NoYXBlQ2lyY2xlVmFsdWUqIHNoYXBlID0gQ1NTQmFzaWNTaGFwZUNp
cmNsZVZhbHVlOjpjcmVhdGUoKTsKKyAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWUqIHJhZGl1cyA9
IGNvbnN1bWVTaGFwZVJhZGl1cyhhcmdzLCBjb250ZXh0Lm1vZGUoKSkpCisgICAgICAgIHNoYXBl
LT5zZXRSYWRpdXMocmFkaXVzKTsKKyAgICBpZiAoY29uc3VtZUlkZW50PENTU1ZhbHVlQXQ+KGFy
Z3MpKSB7CisgICAgICAgIENTU1ZhbHVlKiBjZW50ZXJYID0gbnVsbHB0cjsKKyAgICAgICAgQ1NT
VmFsdWUqIGNlbnRlclkgPSBudWxscHRyOworICAgICAgICBpZiAoIWNvbnN1bWVQb3NpdGlvbihh
cmdzLCBjb250ZXh0Lm1vZGUoKSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBjZW50ZXJYLCBjZW50
ZXJZKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBzaGFwZS0+c2V0Q2Vu
dGVyWChjZW50ZXJYKTsKKyAgICAgICAgc2hhcGUtPnNldENlbnRlclkoY2VudGVyWSk7CisgICAg
fQorICAgIHJldHVybiBzaGFwZTsKK30KKworc3RhdGljIENTU0Jhc2ljU2hhcGVFbGxpcHNlVmFs
dWUqIGNvbnN1bWVCYXNpY1NoYXBlRWxsaXBzZShDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBj
b25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIC8vIHNwZWM6IGh0dHBzOi8v
ZHJhZnRzLmNzc3dnLm9yZy9jc3Mtc2hhcGVzLyNzdXBwb3J0ZWQtYmFzaWMtc2hhcGVzCisgICAg
Ly8gZWxsaXBzZSggWzxzaGFwZS1yYWRpdXM+ezJ9XT8gW2F0IDxwb3NpdGlvbj5dPyApCisgICAg
Q1NTQmFzaWNTaGFwZUVsbGlwc2VWYWx1ZSogc2hhcGUgPSBDU1NCYXNpY1NoYXBlRWxsaXBzZVZh
bHVlOjpjcmVhdGUoKTsKKyAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWUqIHJhZGl1c1ggPSBjb25z
dW1lU2hhcGVSYWRpdXMoYXJncywgY29udGV4dC5tb2RlKCkpKSB7CisgICAgICAgIHNoYXBlLT5z
ZXRSYWRpdXNYKHJhZGl1c1gpOworICAgICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWUqIHJhZGl1
c1kgPSBjb25zdW1lU2hhcGVSYWRpdXMoYXJncywgY29udGV4dC5tb2RlKCkpKQorICAgICAgICAg
ICAgc2hhcGUtPnNldFJhZGl1c1kocmFkaXVzWSk7CisgICAgfQorICAgIGlmIChjb25zdW1lSWRl
bnQ8Q1NTVmFsdWVBdD4oYXJncykpIHsKKyAgICAgICAgQ1NTVmFsdWUqIGNlbnRlclggPSBudWxs
cHRyOworICAgICAgICBDU1NWYWx1ZSogY2VudGVyWSA9IG51bGxwdHI7CisgICAgICAgIGlmICgh
Y29uc3VtZVBvc2l0aW9uKGFyZ3MsIGNvbnRleHQubW9kZSgpLCBVbml0bGVzc1F1aXJrOjpGb3Ji
aWQsIGNlbnRlclgsIGNlbnRlclkpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHNoYXBlLT5zZXRDZW50ZXJYKGNlbnRlclgpOworICAgICAgICBzaGFwZS0+c2V0Q2VudGVy
WShjZW50ZXJZKTsKKyAgICB9CisgICAgcmV0dXJuIHNoYXBlOworfQorCitzdGF0aWMgQ1NTQmFz
aWNTaGFwZVBvbHlnb25WYWx1ZSogY29uc3VtZUJhc2ljU2hhcGVQb2x5Z29uKENTU1BhcnNlclRv
a2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAg
Q1NTQmFzaWNTaGFwZVBvbHlnb25WYWx1ZSogc2hhcGUgPSBDU1NCYXNpY1NoYXBlUG9seWdvblZh
bHVlOjpjcmVhdGUoKTsKKyAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlRXZlbm9kZCwgQ1NT
VmFsdWVOb256ZXJvPihhcmdzLnBlZWsoKS5pZCgpKSkgeworICAgICAgICBzaGFwZS0+c2V0V2lu
ZFJ1bGUoYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCkgPT0gQ1NTVmFsdWVF
dmVub2RkID8gUlVMRV9FVkVOT0REIDogUlVMRV9OT05aRVJPKTsKKyAgICAgICAgaWYgKCFjb25z
dW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgZG8geworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogeExl
bmd0aCA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlKCksIFZhbHVl
UmFuZ2VBbGwpOworICAgICAgICBpZiAoIXhMZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHlMZW5ndGggPSBjb25zdW1lTGVuZ3Ro
T3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAg
aWYgKCF5TGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHNoYXBl
LT5hcHBlbmRQb2ludCh4TGVuZ3RoLCB5TGVuZ3RoKTsKKyAgICB9IHdoaWxlIChjb25zdW1lQ29t
bWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKTsKKyAgICByZXR1cm4gc2hhcGU7Cit9CisKK3N0
YXRpYyB2b2lkIGNvbXBsZXRlNFNpZGVzKENTU1ByaW1pdGl2ZVZhbHVlKiBzaWRlWzRdKQorewor
ICAgIGlmIChzaWRlWzNdKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFzaWRlWzJdKSB7Cisg
ICAgICAgIGlmICghc2lkZVsxXSkKKyAgICAgICAgICAgIHNpZGVbMV0gPSBzaWRlWzBdOworICAg
ICAgICBzaWRlWzJdID0gc2lkZVswXTsKKyAgICB9CisgICAgc2lkZVszXSA9IHNpZGVbMV07Cit9
CisKK3N0YXRpYyBib29sIGNvbnN1bWVSYWRpaShDU1NQcmltaXRpdmVWYWx1ZSogaG9yaXpvbnRh
bFJhZGlpWzRdLCBDU1NQcmltaXRpdmVWYWx1ZSogdmVydGljYWxSYWRpaVs0XSwgQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgYm9vbCB1c2VM
ZWdhY3lQYXJzaW5nKQoreworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIGZvciAoOyBpIDwgNCAm
JiAhcmFuZ2UuYXRFbmQoKSAmJiByYW5nZS5wZWVrKCkudHlwZSgpICE9IERlbGltaXRlclRva2Vu
OyArK2kpIHsKKyAgICAgICAgaG9yaXpvbnRhbFJhZGlpW2ldID0gY29uc3VtZUxlbmd0aE9yUGVy
Y2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAg
ICAgaWYgKCFob3Jpem9udGFsUmFkaWlbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIGlmICghaG9yaXpvbnRhbFJhZGlpWzBdKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKHJhbmdlLmF0RW5kKCkpIHsKKyAgICAgICAgLy8gTGVnYWN5IHN5bnRheDogLXdl
YmtpdC1ib3JkZXItcmFkaXVzOiBsMSBsMjsgaXMgZXF1aXZhbGVudCB0byBib3JkZXItcmFkaXVz
OiBsMSAvIGwyOworICAgICAgICBpZiAodXNlTGVnYWN5UGFyc2luZyAmJiBpID09IDIpIHsKKyAg
ICAgICAgICAgIHZlcnRpY2FsUmFkaWlbMF0gPSBob3Jpem9udGFsUmFkaWlbMV07CisgICAgICAg
ICAgICBob3Jpem9udGFsUmFkaWlbMV0gPSBudWxscHRyOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgY29tcGxldGU0U2lkZXMoaG9yaXpvbnRhbFJhZGlpKTsKKyAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCA0OyArK2kpCisgICAgICAgICAgICAgICAgdmVydGljYWxS
YWRpaVtpXSA9IGhvcml6b250YWxSYWRpaVtpXTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFjb25zdW1lU2xhc2hJbmNsdWRp
bmdXaGl0ZXNwYWNlKHJhbmdlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
Zm9yIChpID0gMDsgaSA8IDQgJiYgIXJhbmdlLmF0RW5kKCk7ICsraSkgeworICAgICAgICAgICAg
dmVydGljYWxSYWRpaVtpXSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNl
ck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgICAgICBpZiAoIXZlcnRpY2Fs
UmFkaWlbaV0pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
ICAgIGlmICghdmVydGljYWxSYWRpaVswXSB8fCAhcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgY29tcGxldGU0U2lkZXMoaG9yaXpvbnRhbFJhZGlp
KTsKKyAgICBjb21wbGV0ZTRTaWRlcyh2ZXJ0aWNhbFJhZGlpKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworc3RhdGljIENTU0Jhc2ljU2hhcGVJbnNldFZhbHVlKiBjb25zdW1lQmFzaWNTaGFwZUlu
c2V0KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNv
bnRleHQpCit7CisgICAgQ1NTQmFzaWNTaGFwZUluc2V0VmFsdWUqIHNoYXBlID0gQ1NTQmFzaWNT
aGFwZUluc2V0VmFsdWU6OmNyZWF0ZSgpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0b3AgPSBj
b25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxs
KTsKKyAgICBpZiAoIXRvcCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHJpZ2h0ID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjb250ZXh0Lm1v
ZGUoKSwgVmFsdWVSYW5nZUFsbCk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGJvdHRvbSA9IG51
bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGxlZnQgPSBudWxscHRyOworICAgIGlmIChy
aWdodCkgeworICAgICAgICBib3R0b20gPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNv
bnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgaWYgKGJvdHRvbSkKKyAgICAg
ICAgICAgIGxlZnQgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSgp
LCBWYWx1ZVJhbmdlQWxsKTsKKyAgICB9CisgICAgaWYgKGxlZnQpCisgICAgICAgIHNoYXBlLT51
cGRhdGVTaGFwZVNpemU0VmFsdWVzKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7CisgICAgZWxz
ZSBpZiAoYm90dG9tKQorICAgICAgICBzaGFwZS0+dXBkYXRlU2hhcGVTaXplM1ZhbHVlcyh0b3As
IHJpZ2h0LCBib3R0b20pOworICAgIGVsc2UgaWYgKHJpZ2h0KQorICAgICAgICBzaGFwZS0+dXBk
YXRlU2hhcGVTaXplMlZhbHVlcyh0b3AsIHJpZ2h0KTsKKyAgICBlbHNlCisgICAgICAgIHNoYXBl
LT51cGRhdGVTaGFwZVNpemUxVmFsdWUodG9wKTsKKworICAgIGlmIChjb25zdW1lSWRlbnQ8Q1NT
VmFsdWVSb3VuZD4oYXJncykpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGhvcml6b250
YWxSYWRpaVs0XSA9IHsgMCB9OworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmVydGljYWxS
YWRpaVs0XSA9IHsgMCB9OworICAgICAgICBpZiAoIWNvbnN1bWVSYWRpaShob3Jpem9udGFsUmFk
aWksIHZlcnRpY2FsUmFkaWksIGFyZ3MsIGNvbnRleHQubW9kZSgpLCBmYWxzZSkpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgc2hhcGUtPnNldFRvcExlZnRSYWRpdXMoQ1NT
VmFsdWVQYWlyOjpjcmVhdGUoaG9yaXpvbnRhbFJhZGlpWzBdLCB2ZXJ0aWNhbFJhZGlpWzBdLCBD
U1NWYWx1ZVBhaXI6OkRyb3BJZGVudGljYWxWYWx1ZXMpKTsKKyAgICAgICAgc2hhcGUtPnNldFRv
cFJpZ2h0UmFkaXVzKENTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhvcml6b250YWxSYWRpaVsxXSwgdmVy
dGljYWxSYWRpaVsxXSwgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVzKSk7CisgICAg
ICAgIHNoYXBlLT5zZXRCb3R0b21SaWdodFJhZGl1cyhDU1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jp
em9udGFsUmFkaWlbMl0sIHZlcnRpY2FsUmFkaWlbMl0sIENTU1ZhbHVlUGFpcjo6RHJvcElkZW50
aWNhbFZhbHVlcykpOworICAgICAgICBzaGFwZS0+c2V0Qm90dG9tTGVmdFJhZGl1cyhDU1NWYWx1
ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsUmFkaWlbM10sIHZlcnRpY2FsUmFkaWlbM10sIENTU1Zh
bHVlUGFpcjo6RHJvcElkZW50aWNhbFZhbHVlcykpOworICAgIH0KKyAgICByZXR1cm4gc2hhcGU7
Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUJhc2ljU2hhcGUoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ1NT
VmFsdWUqIHNoYXBlID0gbnVsbHB0cjsKKyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBG
dW5jdGlvblRva2VuKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZUlEIGlk
ID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJh
bmdlQ29weSA9IHJhbmdlOworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVG
dW5jdGlvbihyYW5nZUNvcHkpOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZUNpcmNsZSkKKyAgICAg
ICAgc2hhcGUgPSBjb25zdW1lQmFzaWNTaGFwZUNpcmNsZShhcmdzLCBjb250ZXh0KTsKKyAgICBl
bHNlIGlmIChpZCA9PSBDU1NWYWx1ZUVsbGlwc2UpCisgICAgICAgIHNoYXBlID0gY29uc3VtZUJh
c2ljU2hhcGVFbGxpcHNlKGFyZ3MsIGNvbnRleHQpOworICAgIGVsc2UgaWYgKGlkID09IENTU1Zh
bHVlUG9seWdvbikKKyAgICAgICAgc2hhcGUgPSBjb25zdW1lQmFzaWNTaGFwZVBvbHlnb24oYXJn
cywgY29udGV4dCk7CisgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVJbnNldCkKKyAgICAgICAg
c2hhcGUgPSBjb25zdW1lQmFzaWNTaGFwZUluc2V0KGFyZ3MsIGNvbnRleHQpOworICAgIGlmICgh
c2hhcGUgfHwgIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmFu
Z2UgPSByYW5nZUNvcHk7CisgICAgcmV0dXJuIHNoYXBlOworfQorCitzdGF0aWMgQ1NTVmFsdWUq
IGNvbnN1bWVXZWJraXRDbGlwUGF0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3Qg
Q1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkg
PT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAg
ICBpZiAoQ1NTVVJJVmFsdWUqIHVybCA9IGNvbnN1bWVVcmwocmFuZ2UpKQorICAgICAgICByZXR1
cm4gdXJsOworICAgIHJldHVybiBjb25zdW1lQmFzaWNTaGFwZShyYW5nZSwgY29udGV4dCk7Cit9
CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVNoYXBlT3V0c2lkZShDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBpZiAo
Q1NTVmFsdWUqIGltYWdlVmFsdWUgPSBjb25zdW1lSW1hZ2VPck5vbmUocmFuZ2UsIGNvbnRleHQp
KQorICAgICAgICByZXR1cm4gaW1hZ2VWYWx1ZTsKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgaWYgKENTU1ZhbHVlKiBi
b3hWYWx1ZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUNvbnRlbnRCb3gsIENTU1ZhbHVlUGFkZGlu
Z0JveCwgQ1NTVmFsdWVCb3JkZXJCb3gsIENTU1ZhbHVlTWFyZ2luQm94PihyYW5nZSkpCisgICAg
ICAgIGxpc3QtPmFwcGVuZCgqYm94VmFsdWUpOworICAgIGlmIChDU1NWYWx1ZSogc2hhcGVWYWx1
ZSA9IGNvbnN1bWVCYXNpY1NoYXBlKHJhbmdlLCBjb250ZXh0KSkgeworICAgICAgICBsaXN0LT5h
cHBlbmQoKnNoYXBlVmFsdWUpOworICAgICAgICBpZiAobGlzdC0+bGVuZ3RoKCkgPCAyKSB7Cisg
ICAgICAgICAgICBpZiAoQ1NTVmFsdWUqIGJveFZhbHVlID0gY29uc3VtZUlkZW50PENTU1ZhbHVl
Q29udGVudEJveCwgQ1NTVmFsdWVQYWRkaW5nQm94LCBDU1NWYWx1ZUJvcmRlckJveCwgQ1NTVmFs
dWVNYXJnaW5Cb3g+KHJhbmdlKSkKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoKmJveFZh
bHVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIWxpc3QtPmxlbmd0aCgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbGlzdDsKK30KKworc3RhdGljIENTU1ZhbHVl
KiBjb25zdW1lQ29udGVudERpc3RyaWJ1dGlvbk92ZXJmbG93UG9zaXRpb24oQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZU5vcm1hbCwg
Q1NTVmFsdWVCYXNlbGluZSwgQ1NTVmFsdWVMYXN0QmFzZWxpbmU+KHJhbmdlLnBlZWsoKS5pZCgp
KSkKKyAgICAgICAgcmV0dXJuIENTU0NvbnRlbnREaXN0cmlidXRpb25WYWx1ZTo6Y3JlYXRlKENT
U1ZhbHVlSW52YWxpZCwgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpLCBD
U1NWYWx1ZUludmFsaWQpOworCisgICAgQ1NTVmFsdWVJRCBkaXN0cmlidXRpb24gPSBDU1NWYWx1
ZUludmFsaWQ7CisgICAgQ1NTVmFsdWVJRCBwb3NpdGlvbiA9IENTU1ZhbHVlSW52YWxpZDsKKyAg
ICBDU1NWYWx1ZUlEIG92ZXJmbG93ID0gQ1NTVmFsdWVJbnZhbGlkOworICAgIGRvIHsKKyAgICAg
ICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgICAgICBpZiAoaWRlbnRN
YXRjaGVzPENTU1ZhbHVlU3BhY2VCZXR3ZWVuLCBDU1NWYWx1ZVNwYWNlQXJvdW5kLCBDU1NWYWx1
ZVNwYWNlRXZlbmx5LCBDU1NWYWx1ZVN0cmV0Y2g+KGlkKSkgeworICAgICAgICAgICAgaWYgKGRp
c3RyaWJ1dGlvbiAhPSBDU1NWYWx1ZUludmFsaWQpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgICAgICBkaXN0cmlidXRpb24gPSBpZDsKKyAgICAgICAgfSBlbHNlIGlm
IChpZGVudE1hdGNoZXM8Q1NTVmFsdWVTdGFydCwgQ1NTVmFsdWVFbmQsIENTU1ZhbHVlQ2VudGVy
LCBDU1NWYWx1ZUZsZXhTdGFydCwgQ1NTVmFsdWVGbGV4RW5kLCBDU1NWYWx1ZUxlZnQsIENTU1Zh
bHVlUmlnaHQ+KGlkKSkgeworICAgICAgICAgICAgaWYgKHBvc2l0aW9uICE9IENTU1ZhbHVlSW52
YWxpZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHBvc2l0
aW9uID0gaWQ7CisgICAgICAgIH0gZWxzZSBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlVW5zYWZl
LCBDU1NWYWx1ZVNhZmU+KGlkKSkgeworICAgICAgICAgICAgaWYgKG92ZXJmbG93ICE9IENTU1Zh
bHVlSW52YWxpZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAg
IG92ZXJmbG93ID0gaWQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgfQorICAgICAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFj
ZSgpOworICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgpKTsKKworICAgIC8vIFRoZSBncmFtbWFy
IHN0YXRlcyB0aGF0IHdlIHNob3VsZCBoYXZlIGF0IGxlYXN0IDxjb250ZW50LWRpc3RyaWJ1dGlv
bj4gb3IgPGNvbnRlbnQtcG9zaXRpb24+LgorICAgIGlmIChwb3NpdGlvbiA9PSBDU1NWYWx1ZUlu
dmFsaWQgJiYgZGlzdHJpYnV0aW9uID09IENTU1ZhbHVlSW52YWxpZCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICAvLyBUaGUgZ3JhbW1hciBzdGF0ZXMgdGhhdCA8b3ZlcmZsb3ctcG9z
aXRpb24+IG11c3QgYmUgYXNzb2NpYXRlZCB0byA8Y29udGVudC1wb3NpdGlvbj4uCisgICAgaWYg
KG92ZXJmbG93ICE9IENTU1ZhbHVlSW52YWxpZCAmJiBwb3NpdGlvbiA9PSBDU1NWYWx1ZUludmFs
aWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIENTU0NvbnRlbnREaXN0
cmlidXRpb25WYWx1ZTo6Y3JlYXRlKGRpc3RyaWJ1dGlvbiwgcG9zaXRpb24sIG92ZXJmbG93KTsK
K30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lQm9yZGVySW1hZ2VSZXBlYXRL
ZXl3b3JkKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBjb25zdW1l
SWRlbnQ8Q1NTVmFsdWVTdHJldGNoLCBDU1NWYWx1ZVJlcGVhdCwgQ1NTVmFsdWVTcGFjZSwgQ1NT
VmFsdWVSb3VuZD4ocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVCb3JkZXJJ
bWFnZVJlcGVhdChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NQcmltaXRp
dmVWYWx1ZSogaG9yaXpvbnRhbCA9IGNvbnN1bWVCb3JkZXJJbWFnZVJlcGVhdEtleXdvcmQocmFu
Z2UpOworICAgIGlmICghaG9yaXpvbnRhbCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHZlcnRpY2FsID0gY29uc3VtZUJvcmRlckltYWdlUmVwZWF0S2V5
d29yZChyYW5nZSk7CisgICAgaWYgKCF2ZXJ0aWNhbCkKKyAgICAgICAgdmVydGljYWwgPSBob3Jp
em9udGFsOworICAgIHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsLCB2ZXJ0
aWNhbCwgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVzKTsKK30KKworc3RhdGljIENT
U1ZhbHVlKiBjb25zdW1lQm9yZGVySW1hZ2VTbGljZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBib29sIGZpbGwgPSBjb25zdW1lSWRl
bnQ8Q1NTVmFsdWVGaWxsPihyYW5nZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNsaWNlc1s0
XSA9IHsgMCB9OworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IDQ7ICsraW5k
ZXgpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlID0gY29uc3VtZVBlcmNlbnQo
cmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAg
ICAgICAgICB2YWx1ZSA9IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2
ZSk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgc2xp
Y2VzW2luZGV4XSA9IHZhbHVlOworICAgIH0KKyAgICBpZiAoIXNsaWNlc1swXSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgaWYgKGNvbnN1bWVJZGVudDxDU1NWYWx1ZUZpbGw+KHJhbmdl
KSkgeworICAgICAgICBpZiAoZmlsbCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICBmaWxsID0gdHJ1ZTsKKyAgICB9CisgICAgY29tcGxldGU0U2lkZXMoc2xpY2VzKTsKKyAg
ICAvLyBGSVhNRTogRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCAtd2Via2l0LWJvcmRlci1p
bWFnZSwgLXdlYmtpdC1tYXNrLWJveC1pbWFnZSBhbmQgLXdlYmtpdC1ib3gtcmVmbGVjdCBoYXZl
IHRvIGRvIGEgZmlsbCBieSBkZWZhdWx0LgorICAgIC8vIEZJWE1FOiBXaGF0IGRvIHdlIGRvIHdp
dGggLXdlYmtpdC1ib3gtcmVmbGVjdCBhbmQgLXdlYmtpdC1tYXNrLWJveC1pbWFnZT8gUHJvYmFi
bHkganVzdCBoYXZlIHRvIGxlYXZlIHRoZW0gZmlsbGluZy4uLgorICAgIGlmIChwcm9wZXJ0eSA9
PSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5
V2Via2l0TWFza0JveEltYWdlIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Qm94UmVm
bGVjdCkKKyAgICAgICAgZmlsbCA9IHRydWU7CisgICAgcmV0dXJuIENTU0JvcmRlckltYWdlU2xp
Y2VWYWx1ZTo6Y3JlYXRlKENTU1F1YWRWYWx1ZTo6Y3JlYXRlKHNsaWNlc1swXSwgc2xpY2VzWzFd
LCBzbGljZXNbMl0sIHNsaWNlc1szXSwgQ1NTUXVhZFZhbHVlOjpTZXJpYWxpemVBc1F1YWQpLCBm
aWxsKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQm9yZGVySW1hZ2VPdXRzZXQoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIG91dHNl
dHNbNF0gPSB7IDAgfTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSA9IG51bGxwdHI7
CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IDQ7ICsraW5kZXgpIHsKKyAgICAg
ICAgdmFsdWUgPSBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOwor
ICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgdmFsdWUgPSBjb25zdW1lTGVuZ3RoKHJh
bmdlLCBIVE1MU3RhbmRhcmRNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICBp
ZiAoIXZhbHVlKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG91dHNldHNbaW5kZXhdID0g
dmFsdWU7CisgICAgfQorICAgIGlmICghb3V0c2V0c1swXSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgY29tcGxldGU0U2lkZXMob3V0c2V0cyk7CisgICAgcmV0dXJuIENTU1F1YWRWYWx1
ZTo6Y3JlYXRlKG91dHNldHNbMF0sIG91dHNldHNbMV0sIG91dHNldHNbMl0sIG91dHNldHNbM10s
IENTU1F1YWRWYWx1ZTo6U2VyaWFsaXplQXNRdWFkKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lQm9yZGVySW1hZ2VXaWR0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogd2lkdGhzWzRdID0geyAwIH07CisKKyAgICBDU1NQcmltaXRp
dmVWYWx1ZSogdmFsdWUgPSBudWxscHRyOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5k
ZXggPCA0OyArK2luZGV4KSB7CisgICAgICAgIHZhbHVlID0gY29uc3VtZU51bWJlcihyYW5nZSwg
VmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAg
IHZhbHVlID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgSFRNTFN0YW5kYXJkTW9kZSwg
VmFsdWVSYW5nZU5vbk5lZ2F0aXZlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworICAgICAgICBp
ZiAoIXZhbHVlKQorICAgICAgICAgICAgdmFsdWUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBdXRv
PihyYW5nZSk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgd2lkdGhzW2luZGV4XSA9IHZhbHVlOworICAgIH0KKyAgICBpZiAoIXdpZHRoc1swXSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgY29tcGxldGU0U2lkZXMod2lkdGhzKTsKKyAgICBy
ZXR1cm4gQ1NTUXVhZFZhbHVlOjpjcmVhdGUod2lkdGhzWzBdLCB3aWR0aHNbMV0sIHdpZHRoc1sy
XSwgd2lkdGhzWzNdLCBDU1NRdWFkVmFsdWU6OlNlcmlhbGl6ZUFzUXVhZCk7Cit9CisKK3N0YXRp
YyBib29sIGNvbnN1bWVCb3JkZXJJbWFnZUNvbXBvbmVudHMoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNv
bnRleHQsIENTU1ZhbHVlKiYgc291cmNlLAorICAgIENTU1ZhbHVlKiYgc2xpY2UsIENTU1ZhbHVl
KiYgd2lkdGgsIENTU1ZhbHVlKiYgb3V0c2V0LCBDU1NWYWx1ZSomIHJlcGVhdCkKK3sKKyAgICBk
byB7CisgICAgICAgIGlmICghc291cmNlKSB7CisgICAgICAgICAgICBzb3VyY2UgPSBjb25zdW1l
SW1hZ2VPck5vbmUocmFuZ2UsIGNvbnRleHQpOworICAgICAgICAgICAgaWYgKHNvdXJjZSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXJlcGVhdCkg
eworICAgICAgICAgICAgcmVwZWF0ID0gY29uc3VtZUJvcmRlckltYWdlUmVwZWF0KHJhbmdlKTsK
KyAgICAgICAgICAgIGlmIChyZXBlYXQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKCFzbGljZSkgeworICAgICAgICAgICAgc2xpY2UgPSBjb25zdW1l
Qm9yZGVySW1hZ2VTbGljZShwcm9wZXJ0eSwgcmFuZ2UpOworICAgICAgICAgICAgaWYgKHNsaWNl
KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKCF3aWR0aCAmJiAhb3V0c2V0KTsKKyAgICAgICAg
ICAgICAgICBpZiAoY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgd2lkdGggPSBjb25zdW1lQm9yZGVySW1hZ2VXaWR0aChyYW5nZSk7
CisgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNl
KHJhbmdlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3V0c2V0ID0gY29uc3VtZUJvcmRl
ckltYWdlT3V0c2V0KHJhbmdlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghb3V0c2V0
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIGlmICghd2lkdGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpOworICAgIHJldHVybiB0cnVlOwor
fQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVXZWJraXRCb3JkZXJJbWFnZShDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5LCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2Vy
Q29udGV4dCYgY29udGV4dCkKK3sKKyAgICBDU1NWYWx1ZSogc291cmNlID0gbnVsbHB0cjsKKyAg
ICBDU1NWYWx1ZSogc2xpY2UgPSBudWxscHRyOworICAgIENTU1ZhbHVlKiB3aWR0aCA9IG51bGxw
dHI7CisgICAgQ1NTVmFsdWUqIG91dHNldCA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIHJlcGVh
dCA9IG51bGxwdHI7CisgICAgaWYgKGNvbnN1bWVCb3JkZXJJbWFnZUNvbXBvbmVudHMocHJvcGVy
dHksIHJhbmdlLCBjb250ZXh0LCBzb3VyY2UsIHNsaWNlLCB3aWR0aCwgb3V0c2V0LCByZXBlYXQp
KQorICAgICAgICByZXR1cm4gY3JlYXRlQm9yZGVySW1hZ2VWYWx1ZShzb3VyY2UsIHNsaWNlLCB3
aWR0aCwgb3V0c2V0LCByZXBlYXQpOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMg
Q1NTVmFsdWUqIGNvbnN1bWVSZWZsZWN0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25z
dCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBk
aXJlY3Rpb24gPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBYm92ZSwgQ1NTVmFsdWVCZWxvdywgQ1NT
VmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0PihyYW5nZSk7CisgICAgaWYgKCFkaXJlY3Rpb24pCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIG9mZnNldCA9
IG51bGxwdHI7CisgICAgaWYgKHJhbmdlLmF0RW5kKCkpIHsKKyAgICAgICAgb2Zmc2V0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBp
eGVscyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgb2Zmc2V0ID0gY29uc3VtZUxlbmd0aE9yUGVy
Y2VudChyYW5nZSwgY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VBbGwsIFVuaXRsZXNzUXVpcms6
OkZvcmJpZCk7CisgICAgICAgIGlmICghb2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorCisgICAgQ1NTVmFsdWUqIG1hc2sgPSBudWxscHRyOworICAgIGlmICghcmFu
Z2UuYXRFbmQoKSkgeworICAgICAgICBtYXNrID0gY29uc3VtZVdlYmtpdEJvcmRlckltYWdlKENT
U1Byb3BlcnR5V2Via2l0Qm94UmVmbGVjdCwgcmFuZ2UsIGNvbnRleHQpOworICAgICAgICBpZiAo
IW1hc2spCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIENT
U1JlZmxlY3RWYWx1ZTo6Y3JlYXRlKGRpcmVjdGlvbiwgb2Zmc2V0LCBtYXNrKTsKK30KKworc3Rh
dGljIENTU1ZhbHVlKiBjb25zdW1lRm9udFNpemVBZGp1c3QoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVOdW1i
ZXIocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSog
Y29uc3VtZUltYWdlT3JpZW50YXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7Cisg
ICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlRnJvbUltYWdlKQorICAgICAgICBy
ZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAh
PSBOdW1iZXJUb2tlbikgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogYW5nbGUgPSBjb25z
dW1lQW5nbGUocmFuZ2UpOworICAgICAgICBpZiAoYW5nbGUgJiYgYW5nbGUtPmdldERvdWJsZVZh
bHVlKCkgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBhbmdsZTsKKyAgICB9CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUJhY2tncm91bmRCbGVuZE1v
ZGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJh
bmdlLnBlZWsoKS5pZCgpOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBD
U1NWYWx1ZU92ZXJsYXkgfHwgKGlkID49IENTU1ZhbHVlTXVsdGlwbHkgJiYgaWQgPD0gQ1NTVmFs
dWVMdW1pbm9zaXR5KSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUJhY2tncm91bmRB
dHRhY2htZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBjb25z
dW1lSWRlbnQ8Q1NTVmFsdWVTY3JvbGwsIENTU1ZhbHVlRml4ZWQsIENTU1ZhbHVlTG9jYWw+KHJh
bmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQmFja2dyb3VuZEJveChDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVl
Qm9yZGVyQm94LCBDU1NWYWx1ZVBhZGRpbmdCb3gsIENTU1ZhbHVlQ29udGVudEJveD4ocmFuZ2Up
OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVCYWNrZ3JvdW5kQ29tcG9zaXRlKENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBjb25zdW1lSWRlbnRSYW5nZShy
YW5nZSwgQ1NTVmFsdWVDbGVhciwgQ1NTVmFsdWVQbHVzTGlnaHRlcik7Cit9CisKK3N0YXRpYyBD
U1NWYWx1ZSogY29uc3VtZU1hc2tTb3VyY2VUeXBlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
KQoreworICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NNYXNrU291cmNlVHlw
ZUVuYWJsZWQoKSk7CisgICAgcmV0dXJuIGNvbnN1bWVJZGVudDxDU1NWYWx1ZUF1dG8sIENTU1Zh
bHVlQWxwaGEsIENTU1ZhbHVlTHVtaW5hbmNlPihyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1
ZSogY29uc3VtZVByZWZpeGVkQmFja2dyb3VuZEJveChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4
dCkKK3sKKyAgICAvLyBUaGUgdmFsdWVzICdib3JkZXInLCAncGFkZGluZycgYW5kICdjb250ZW50
JyBhcmUgZGVwcmVjYXRlZCBhbmQgZG8gbm90IGFwcGx5IHRvIHRoZSB2ZXJzaW9uIG9mIHRoZSBw
cm9wZXJ0eSB0aGF0IGhhcyB0aGUgLXdlYmtpdC0gcHJlZml4IHJlbW92ZWQuCisgICAgaWYgKENT
U1ZhbHVlKiB2YWx1ZSA9IGNvbnN1bWVJZGVudFJhbmdlKHJhbmdlLCBDU1NWYWx1ZUJvcmRlciwg
Q1NTVmFsdWVQYWRkaW5nQm94KSkKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGlmICgocHJv
cGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xpcCB8fCBwcm9wZXJ0eSA9PSBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwKSAmJiByYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1
ZVRleHQpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVCYWNrZ3JvdW5kU2l6ZShDU1NQ
cm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0eSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Us
IENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAoaWRlbnRNYXRjaGVzPENT
U1ZhbHVlQ29udGFpbiwgQ1NTVmFsdWVDb3Zlcj4ocmFuZ2UucGVlaygpLmlkKCkpKQorICAgICAg
ICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBo
b3Jpem9udGFsID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQXV0bz4ocmFuZ2UpOworICAgIGlmICgh
aG9yaXpvbnRhbCkKKyAgICAgICAgaG9yaXpvbnRhbCA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQo
cmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwsIFVuaXRsZXNzUXVpcms6OkZvcmJp
ZCk7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmVydGljYWwgPSBudWxscHRyOworICAgIGlm
ICghcmFuZ2UuYXRFbmQoKSkgeworICAgICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NT
VmFsdWVBdXRvKSAvLyBgYXV0bycgaXMgdGhlIGRlZmF1bHQKKyAgICAgICAgICAgIHJhbmdlLmNv
bnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZl
cnRpY2FsID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFs
dWVSYW5nZUFsbCwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKKyAgICB9IGVsc2UgaWYgKHVucmVz
b2x2ZWRQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUFsaWFzV2Via2l0QmFja2dyb3VuZFNpemUpIHsK
KyAgICAgICAgLy8gTGVnYWN5IHN5bnRheDogIi13ZWJraXQtYmFja2dyb3VuZC1zaXplOiAxMHB4
IiBpcyBlcXVpdmFsZW50IHRvICJiYWNrZ3JvdW5kLXNpemU6IDEwcHggMTBweCIuCisgICAgICAg
IHZlcnRpY2FsID0gaG9yaXpvbnRhbDsKKyAgICB9CisgICAgaWYgKCF2ZXJ0aWNhbCkKKyAgICAg
ICAgcmV0dXJuIGhvcml6b250YWw7CisgICAgcmV0dXJuIENTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhv
cml6b250YWwsIHZlcnRpY2FsLCBDU1NWYWx1ZVBhaXI6OktlZXBJZGVudGljYWxWYWx1ZXMpOwor
fQorCitzdGF0aWMgQ1NTVmFsdWVMaXN0KiBjb25zdW1lR3JpZEF1dG9GbG93KENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlKQoreworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiByb3dPckNvbHVtblZh
bHVlID0gY29uc3VtZUlkZW50PENTU1ZhbHVlUm93LCBDU1NWYWx1ZUNvbHVtbj4ocmFuZ2UpOwor
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBkZW5zZUFsZ29yaXRobSA9IGNvbnN1bWVJZGVudDxDU1NW
YWx1ZURlbnNlPihyYW5nZSk7CisgICAgaWYgKCFyb3dPckNvbHVtblZhbHVlKSB7CisgICAgICAg
IHJvd09yQ29sdW1uVmFsdWUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVSb3csIENTU1ZhbHVlQ29s
dW1uPihyYW5nZSk7CisgICAgICAgIGlmICghcm93T3JDb2x1bW5WYWx1ZSAmJiAhZGVuc2VBbGdv
cml0aG0pCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgQ1NTVmFsdWVM
aXN0KiBwYXJzZWRWYWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7
CisgICAgaWYgKHJvd09yQ29sdW1uVmFsdWUpCisgICAgICAgIHBhcnNlZFZhbHVlcy0+YXBwZW5k
KCpyb3dPckNvbHVtblZhbHVlKTsKKyAgICBpZiAoZGVuc2VBbGdvcml0aG0pCisgICAgICAgIHBh
cnNlZFZhbHVlcy0+YXBwZW5kKCpkZW5zZUFsZ29yaXRobSk7CisgICAgcmV0dXJuIHBhcnNlZFZh
bHVlczsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQmFja2dyb3VuZENvbXBvbmVudChD
U1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0eSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgc3dpdGNoICh1bnJl
c29sdmVkUHJvcGVydHkpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXA6Cisg
ICAgICAgIHJldHVybiBjb25zdW1lQmFja2dyb3VuZEJveChyYW5nZSk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRCbGVuZE1vZGU6CisgICAgICAgIHJldHVybiBjb25zdW1lQmFja2dy
b3VuZEJsZW5kTW9kZShyYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRh
Y2htZW50OgorICAgICAgICByZXR1cm4gY29uc3VtZUJhY2tncm91bmRBdHRhY2htZW50KHJhbmdl
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbjoKKyAgICAgICAgcmV0dXJu
IGNvbnN1bWVCYWNrZ3JvdW5kQm94KHJhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWFza0NvbXBvc2l0ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCYWNrZ3JvdW5kQ29tcG9zaXRl
KHJhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFza1NvdXJjZVR5cGU6CisgICAgICAgIHJl
dHVybiBjb25zdW1lTWFza1NvdXJjZVR5cGUocmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCYWNrZ3JvdW5kQ2xpcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3Vu
ZE9yaWdpbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXA6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW46CisgICAgICAgIHJldHVybiBjb25zdW1lUHJlZml4
ZWRCYWNrZ3JvdW5kQm94KHVucmVzb2x2ZWRQcm9wZXJ0eSwgcmFuZ2UsIGNvbnRleHQpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tJbWFnZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJbWFnZU9yTm9uZShyYW5nZSwg
Y29udGV4dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblg6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblg6CisgICAgICAgIHJldHVybiBjb25z
dW1lUG9zaXRpb25YKHJhbmdlLCBjb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRQb3NpdGlvblk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3Np
dGlvblk6CisgICAgICAgIHJldHVybiBjb25zdW1lUG9zaXRpb25ZKHJhbmdlLCBjb250ZXh0Lm1v
ZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlBbGlhc1dlYmtpdEJhY2tncm91bmRTaXplOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXNrU2l6ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCYWNrZ3JvdW5kU2l6ZSh1bnJl
c29sdmVkUHJvcGVydHksIHJhbmdlLCBjb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvcjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb2xvcihyYW5nZSwg
Y29udGV4dC5tb2RlKCkpOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH07Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyB2b2lkIGFkZEJhY2tncm91bmRWYWx1ZShD
U1NWYWx1ZSomIGxpc3QsIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAobGlzdCkgeworICAg
ICAgICBpZiAoIWxpc3QtPmlzQmFzZVZhbHVlTGlzdCgpKSB7CisgICAgICAgICAgICBDU1NWYWx1
ZSogZmlyc3RWYWx1ZSA9IGxpc3Q7CisgICAgICAgICAgICBsaXN0ID0gQ1NTVmFsdWVMaXN0Ojpj
cmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgdG9DU1NWYWx1ZUxpc3QobGlzdCkt
PmFwcGVuZCgqZmlyc3RWYWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgdG9DU1NWYWx1ZUxpc3Qo
bGlzdCktPmFwcGVuZCgqdmFsdWUpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFRvIGNvbnNl
cnZlIG1lbW9yeSB3ZSBkb24ndCBhY3R1YWxseSB3cmFwIGEgc2luZ2xlIHZhbHVlIGluIGEgbGlz
dC4KKyAgICAgICAgbGlzdCA9IHZhbHVlOworICAgIH0KK30KKworc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lQ29tbWFTZXBhcmF0ZWRCYWNrZ3JvdW5kQ29tcG9uZW50KENTU1Byb3BlcnR5SUQgdW5y
ZXNvbHZlZFByb3BlcnR5LCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFy
c2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBDU1NWYWx1ZSogcmVzdWx0ID0gbnVsbHB0cjsK
KyAgICBkbyB7CisgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IGNvbnN1bWVCYWNrZ3JvdW5kQ29t
cG9uZW50KHVucmVzb2x2ZWRQcm9wZXJ0eSwgcmFuZ2UsIGNvbnRleHQpOworICAgICAgICBpZiAo
IXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGFkZEJhY2tncm91
bmRWYWx1ZShyZXN1bHQsIHZhbHVlKTsKKyAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRp
bmdXaGl0ZXNwYWNlKHJhbmdlKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIENT
U1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lU2VsZlBvc2l0aW9uS2V5d29yZChDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7
CisgICAgaWYgKGlkID09IENTU1ZhbHVlU3RhcnQgfHwgaWQgPT0gQ1NTVmFsdWVFbmQgfHwgaWQg
PT0gQ1NTVmFsdWVDZW50ZXIKKyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVTZWxmU3RhcnQgfHwg
aWQgPT0gQ1NTVmFsdWVTZWxmRW5kIHx8IGlkID09IENTU1ZhbHVlRmxleFN0YXJ0CisgICAgICAg
IHx8IGlkID09IENTU1ZhbHVlRmxleEVuZCB8fCBpZCA9PSBDU1NWYWx1ZUxlZnQgfHwgaWQgPT0g
Q1NTVmFsdWVSaWdodCkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVNlbGZQb3NpdGlv
bk92ZXJmbG93UG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYg
KGlkZW50TWF0Y2hlczxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZVN0cmV0
Y2gsIENTU1ZhbHVlQmFzZWxpbmUsIENTU1ZhbHVlTGFzdEJhc2VsaW5lPihyYW5nZS5wZWVrKCku
aWQoKSkpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIG92ZXJmbG93UG9zaXRpb24gPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVVbnNh
ZmUsIENTU1ZhbHVlU2FmZT4ocmFuZ2UpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWxmUG9z
aXRpb24gPSBjb25zdW1lU2VsZlBvc2l0aW9uS2V5d29yZChyYW5nZSk7CisgICAgaWYgKCFzZWxm
UG9zaXRpb24pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghb3ZlcmZsb3dQb3Np
dGlvbikKKyAgICAgICAgb3ZlcmZsb3dQb3NpdGlvbiA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZVVu
c2FmZSwgQ1NTVmFsdWVTYWZlPihyYW5nZSk7CisgICAgaWYgKG92ZXJmbG93UG9zaXRpb24pCisg
ICAgICAgIHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShzZWxmUG9zaXRpb24sIG92ZXJmbG93
UG9zaXRpb24sIENTU1ZhbHVlUGFpcjo6RHJvcElkZW50aWNhbFZhbHVlcyk7CisgICAgcmV0dXJu
IHNlbGZQb3NpdGlvbjsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQWxpZ25JdGVtcyhD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICAvLyBhbGlnbi1pdGVtcyBwcm9wZXJ0
eSBkb2VzIG5vdCBhbGxvdyB0aGUgJ2F1dG8nIHZhbHVlLgorICAgIGlmIChpZGVudE1hdGNoZXM8
Q1NTVmFsdWVBdXRvPihyYW5nZS5wZWVrKCkuaWQoKSkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBjb25zdW1lU2VsZlBvc2l0aW9uT3ZlcmZsb3dQb3NpdGlvbihyYW5nZSk7
Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUp1c3RpZnlJdGVtcyhDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlQ29weSA9IHJh
bmdlOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBsZWdhY3kgPSBjb25zdW1lSWRlbnQ8Q1NTVmFs
dWVMZWdhY3k+KHJhbmdlQ29weSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBvc2l0aW9uS2V5
d29yZCA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUNlbnRlciwgQ1NTVmFsdWVMZWZ0LCBDU1NWYWx1
ZVJpZ2h0PihyYW5nZUNvcHkpOworICAgIGlmICghbGVnYWN5KQorICAgICAgICBsZWdhY3kgPSBj
b25zdW1lSWRlbnQ8Q1NTVmFsdWVMZWdhY3k+KHJhbmdlQ29weSk7CisgICAgaWYgKGxlZ2FjeSAm
JiBwb3NpdGlvbktleXdvcmQpIHsKKyAgICAgICAgcmFuZ2UgPSByYW5nZUNvcHk7CisgICAgICAg
IHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShsZWdhY3ksIHBvc2l0aW9uS2V5d29yZCwgQ1NT
VmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVzKTsKKyAgICB9CisgICAgcmV0dXJuIGNvbnN1
bWVTZWxmUG9zaXRpb25PdmVyZmxvd1Bvc2l0aW9uKHJhbmdlKTsKK30KKworc3RhdGljIENTU0N1
c3RvbUlkZW50VmFsdWUqIGNvbnN1bWVDdXN0b21JZGVudEZvckdyaWRMaW5lKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1
ZUF1dG8gfHwgcmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVTcGFuKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY29uc3VtZUN1c3RvbUlkZW50KHJhbmdlKTsKK30KKwor
c3RhdGljIENTU1ZhbHVlKiBjb25zdW1lR3JpZExpbmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSog
c3BhblZhbHVlID0gbnVsbHB0cjsKKyAgICBDU1NDdXN0b21JZGVudFZhbHVlKiBncmlkTGluZU5h
bWUgPSBudWxscHRyOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBudW1lcmljVmFsdWUgPSBjb25z
dW1lSW50ZWdlcihyYW5nZSk7CisgICAgaWYgKG51bWVyaWNWYWx1ZSkgeworICAgICAgICBncmlk
TGluZU5hbWUgPSBjb25zdW1lQ3VzdG9tSWRlbnRGb3JHcmlkTGluZShyYW5nZSk7CisgICAgICAg
IHNwYW5WYWx1ZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZVNwYW4+KHJhbmdlKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBzcGFuVmFsdWUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVTcGFuPihyYW5n
ZSk7CisgICAgICAgIGlmIChzcGFuVmFsdWUpIHsKKyAgICAgICAgICAgIG51bWVyaWNWYWx1ZSA9
IGNvbnN1bWVJbnRlZ2VyKHJhbmdlKTsKKyAgICAgICAgICAgIGdyaWRMaW5lTmFtZSA9IGNvbnN1
bWVDdXN0b21JZGVudEZvckdyaWRMaW5lKHJhbmdlKTsKKyAgICAgICAgICAgIGlmICghbnVtZXJp
Y1ZhbHVlKQorICAgICAgICAgICAgICAgIG51bWVyaWNWYWx1ZSA9IGNvbnN1bWVJbnRlZ2VyKHJh
bmdlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGdyaWRMaW5lTmFtZSA9IGNvbnN1
bWVDdXN0b21JZGVudEZvckdyaWRMaW5lKHJhbmdlKTsKKyAgICAgICAgICAgIGlmIChncmlkTGlu
ZU5hbWUpIHsKKyAgICAgICAgICAgICAgICBudW1lcmljVmFsdWUgPSBjb25zdW1lSW50ZWdlcihy
YW5nZSk7CisgICAgICAgICAgICAgICAgc3BhblZhbHVlID0gY29uc3VtZUlkZW50PENTU1ZhbHVl
U3Bhbj4ocmFuZ2UpOworICAgICAgICAgICAgICAgIGlmICghc3BhblZhbHVlICYmICFudW1lcmlj
VmFsdWUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBncmlkTGluZU5hbWU7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHNwYW5WYWx1ZSAmJiAhbnVtZXJpY1Zh
bHVlICYmICFncmlkTGluZU5hbWUpCisgICAgICAgIHJldHVybiBudWxscHRyOyAvLyAic3BhbiIg
a2V5d29yZCBhbG9uZSBpcyBpbnZhbGlkLgorICAgIGlmIChzcGFuVmFsdWUgJiYgbnVtZXJpY1Zh
bHVlICYmIG51bWVyaWNWYWx1ZS0+Z2V0SW50VmFsdWUoKSA8IDApCisgICAgICAgIHJldHVybiBu
dWxscHRyOyAvLyBOZWdhdGl2ZSBudW1iZXJzIGFyZSBub3QgYWxsb3dlZCBmb3Igc3Bhbi4KKyAg
ICBpZiAobnVtZXJpY1ZhbHVlICYmIG51bWVyaWNWYWx1ZS0+Z2V0SW50VmFsdWUoKSA9PSAwKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsgLy8gQW4gPGludGVnZXI+IHZhbHVlIG9mIHplcm8gbWFr
ZXMgdGhlIGRlY2xhcmF0aW9uIGludmFsaWQuCisKKyAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBpZiAoc3BhblZhbHVl
KQorICAgICAgICB2YWx1ZXMtPmFwcGVuZCgqc3BhblZhbHVlKTsKKyAgICBpZiAobnVtZXJpY1Zh
bHVlKQorICAgICAgICB2YWx1ZXMtPmFwcGVuZCgqbnVtZXJpY1ZhbHVlKTsKKyAgICBpZiAoZ3Jp
ZExpbmVOYW1lKQorICAgICAgICB2YWx1ZXMtPmFwcGVuZCgqZ3JpZExpbmVOYW1lKTsKKyAgICBB
U1NFUlQodmFsdWVzLT5sZW5ndGgoKSk7CisgICAgcmV0dXJuIHZhbHVlczsKK30KKworc3RhdGlj
IGJvb2wgaXNHcmlkVHJhY2tGaXhlZFNpemVkKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBwcmlt
aXRpdmVWYWx1ZSkKK3sKKyAgICBDU1NWYWx1ZUlEIHZhbHVlSUQgPSBwcmltaXRpdmVWYWx1ZS5n
ZXRWYWx1ZUlEKCk7CisgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVNaW5Db250ZW50IHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVNYXhDb250ZW50IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8
IHByaW1pdGl2ZVZhbHVlLmlzRmxleCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgaXNHcmlkVHJhY2tGaXhlZFNpemVkKGNvbnN0
IENTU1ZhbHVlJiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUuaXNQcmltaXRpdmVWYWx1ZSgpKQor
ICAgICAgICByZXR1cm4gaXNHcmlkVHJhY2tGaXhlZFNpemVkKHRvQ1NTUHJpbWl0aXZlVmFsdWUo
dmFsdWUpKTsKKworICAgIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBtaW5QcmltaXRpdmVWYWx1
ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodG9DU1NGdW5jdGlvblZhbHVlKHZhbHVlKS5pdGVtKDAp
KTsKKyAgICBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgbWF4UHJpbWl0aXZlVmFsdWUgPSB0b0NT
U1ByaW1pdGl2ZVZhbHVlKHRvQ1NTRnVuY3Rpb25WYWx1ZSh2YWx1ZSkuaXRlbSgxKSk7CisgICAg
cmV0dXJuIGlzR3JpZFRyYWNrRml4ZWRTaXplZChtaW5QcmltaXRpdmVWYWx1ZSkgfHwgaXNHcmlk
VHJhY2tGaXhlZFNpemVkKG1heFByaW1pdGl2ZVZhbHVlKTsKK30KKworc3RhdGljIFZlY3RvcjxT
dHJpbmc+IHBhcnNlR3JpZFRlbXBsYXRlQXJlYXNDb2x1bW5OYW1lcyhjb25zdCBTdHJpbmcmIGdy
aWRSb3dOYW1lcykKK3sKKyAgICBBU1NFUlQoIWdyaWRSb3dOYW1lcy5pc0VtcHR5KCkpOworICAg
IFZlY3RvcjxTdHJpbmc+IGNvbHVtbk5hbWVzOworICAgIC8vIFVzaW5nIFN0cmluZ0ltcGwgdG8g
YXZvaWQgY2hlY2tzIGFuZCBpbmRpcmVjdGlvbiBpbiBldmVyeSBjYWxsIHRvIFN0cmluZzo6b3Bl
cmF0b3JbXS4KKyAgICBTdHJpbmdJbXBsJiB0ZXh0ID0gKmdyaWRSb3dOYW1lcy5pbXBsKCk7CisK
KyAgICBTdHJpbmdCdWlsZGVyIGFyZWFOYW1lOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0ZXh0Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKGlzQ1NTU3BhY2UodGV4dFtpXSkp
IHsKKyAgICAgICAgICAgIGlmICghYXJlYU5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAg
ICAgY29sdW1uTmFtZXMuYXBwZW5kKGFyZWFOYW1lLnRvU3RyaW5nKCkpOworICAgICAgICAgICAg
ICAgIGFyZWFOYW1lLmNsZWFyKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodGV4dFtpXSA9PSAnLicpIHsKKyAgICAgICAgICAg
IGlmIChhcmVhTmFtZSA9PSAiLiIpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICBpZiAoIWFyZWFOYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIGNvbHVtbk5h
bWVzLmFwcGVuZChhcmVhTmFtZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBhcmVhTmFt
ZS5jbGVhcigpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
aWYgKCFpc05hbWVDb2RlUG9pbnQodGV4dFtpXSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFZl
Y3RvcjxTdHJpbmc+KCk7CisgICAgICAgICAgICBpZiAoYXJlYU5hbWUgPT0gIi4iKSB7CisgICAg
ICAgICAgICAgICAgY29sdW1uTmFtZXMuYXBwZW5kKGFyZWFOYW1lLnRvU3RyaW5nKCkpOworICAg
ICAgICAgICAgICAgIGFyZWFOYW1lLmNsZWFyKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBhcmVhTmFtZS5hcHBlbmQodGV4dFtpXSk7CisgICAgfQorCisgICAgaWYgKCFh
cmVhTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIGNvbHVtbk5hbWVzLmFwcGVuZChhcmVhTmFtZS50
b1N0cmluZygpKTsKKworICAgIHJldHVybiBjb2x1bW5OYW1lczsKK30KKworc3RhdGljIGJvb2wg
cGFyc2VHcmlkVGVtcGxhdGVBcmVhc1Jvdyhjb25zdCBTdHJpbmcmIGdyaWRSb3dOYW1lcywgTmFt
ZWRHcmlkQXJlYU1hcCYgZ3JpZEFyZWFNYXAsIGNvbnN0IHNpemVfdCByb3dDb3VudCwgc2l6ZV90
JiBjb2x1bW5Db3VudCkKK3sKKyAgICBpZiAoZ3JpZFJvd05hbWVzLmlzRW1wdHkoKSB8fCBncmlk
Um93TmFtZXMuY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBWZWN0b3I8U3RyaW5nPiBjb2x1bW5OYW1lcyA9IHBhcnNlR3JpZFRlbXBsYXRlQXJl
YXNDb2x1bW5OYW1lcyhncmlkUm93TmFtZXMpOworICAgIGlmIChyb3dDb3VudCA9PSAwKSB7Cisg
ICAgICAgIGNvbHVtbkNvdW50ID0gY29sdW1uTmFtZXMuc2l6ZSgpOworICAgICAgICBpZiAoY29s
dW1uQ291bnQgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IGVsc2UgaWYg
KGNvbHVtbkNvdW50ICE9IGNvbHVtbk5hbWVzLnNpemUoKSkgeworICAgICAgICAvLyBUaGUgZGVj
bGFyYXRpb24gaXMgaW52YWxpZCBpZiBhbGwgdGhlIHJvd3MgZG9uJ3QgaGF2ZSB0aGUgbnVtYmVy
IG9mIGNvbHVtbnMuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBmb3IgKHNp
emVfdCBjdXJyZW50Q29sdW1uID0gMDsgY3VycmVudENvbHVtbiA8IGNvbHVtbkNvdW50OyArK2N1
cnJlbnRDb2x1bW4pIHsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBncmlkQXJlYU5hbWUgPSBjb2x1
bW5OYW1lc1tjdXJyZW50Q29sdW1uXTsKKworICAgICAgICAvLyBVbmFtZWQgYXJlYXMgYXJlIGFs
d2F5cyB2YWxpZCAod2UgY29uc2lkZXIgdGhlbSB0byBiZSAxeDEpLgorICAgICAgICBpZiAoZ3Jp
ZEFyZWFOYW1lID09ICIuIikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHNpemVf
dCBsb29rQWhlYWRDb2x1bW4gPSBjdXJyZW50Q29sdW1uICsgMTsKKyAgICAgICAgd2hpbGUgKGxv
b2tBaGVhZENvbHVtbiA8IGNvbHVtbkNvdW50ICYmIGNvbHVtbk5hbWVzW2xvb2tBaGVhZENvbHVt
bl0gPT0gZ3JpZEFyZWFOYW1lKQorICAgICAgICAgICAgbG9va0FoZWFkQ29sdW1uKys7CisKKyAg
ICAgICAgTmFtZWRHcmlkQXJlYU1hcDo6aXRlcmF0b3IgZ3JpZEFyZWFJdCA9IGdyaWRBcmVhTWFw
LmZpbmQoZ3JpZEFyZWFOYW1lKTsKKyAgICAgICAgaWYgKGdyaWRBcmVhSXQgPT0gZ3JpZEFyZWFN
YXAuZW5kKCkpIHsKKyAgICAgICAgICAgIGdyaWRBcmVhTWFwLmFkZChncmlkQXJlYU5hbWUsIEdy
aWRBcmVhKEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3Bhbihyb3dDb3VudCwgcm93
Q291bnQgKyAxKSwgR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKGN1cnJlbnRD
b2x1bW4sIGxvb2tBaGVhZENvbHVtbikpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IEdyaWRBcmVhJiBncmlkQXJlYSA9IGdyaWRBcmVhSXQtPnZhbHVlOworCisgICAgICAgICAgICAv
LyBUaGUgZm9sbG93aW5nIGNoZWNrcyB0ZXN0IHRoYXQgdGhlIGdyaWQgYXJlYSBpcyBhIHNpbmds
ZSBmaWxsZWQtaW4gcmVjdGFuZ2xlLgorICAgICAgICAgICAgLy8gMS4gVGhlIG5ldyByb3cgaXMg
YWRqYWNlbnQgdG8gdGhlIHByZXZpb3VzbHkgcGFyc2VkIHJvdy4KKyAgICAgICAgICAgIGlmIChy
b3dDb3VudCAhPSBncmlkQXJlYS5yb3dzLmVuZExpbmUoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgICAgIC8vIDIuIFRoZSBuZXcgYXJlYSBzdGFydHMgYXQgdGhl
IHNhbWUgcG9zaXRpb24gYXMgdGhlIHByZXZpb3VzbHkgcGFyc2VkIGFyZWEuCisgICAgICAgICAg
ICBpZiAoY3VycmVudENvbHVtbiAhPSBncmlkQXJlYS5jb2x1bW5zLnN0YXJ0TGluZSgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgLy8gMy4gVGhlIG5ldyBh
cmVhIGVuZHMgYXQgdGhlIHNhbWUgcG9zaXRpb24gYXMgdGhlIHByZXZpb3VzbHkgcGFyc2VkIGFy
ZWEuCisgICAgICAgICAgICBpZiAobG9va0FoZWFkQ29sdW1uICE9IGdyaWRBcmVhLmNvbHVtbnMu
ZW5kTGluZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAg
Z3JpZEFyZWEucm93cyA9IEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3Bhbihncmlk
QXJlYS5yb3dzLnN0YXJ0TGluZSgpLCBncmlkQXJlYS5yb3dzLmVuZExpbmUoKSArIDEpOworICAg
ICAgICB9CisgICAgICAgIGN1cnJlbnRDb2x1bW4gPSBsb29rQWhlYWRDb2x1bW4gLSAxOworICAg
IH0KKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNv
bnN1bWVHcmlkQnJlYWR0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJh
bmdlLnBlZWsoKTsKKyAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlTWluQ29udGVudCwgQ1NT
VmFsdWVNYXhDb250ZW50LCBDU1NWYWx1ZUF1dG8+KHRva2VuLmlkKCkpKQorICAgICAgICByZXR1
cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICBpZiAodG9rZW4udHlwZSgpID09IERpbWVuc2lv
blRva2VuICYmIHRva2VuLnVuaXRUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBl
OjpGcmFjdGlvbikgeworICAgICAgICBpZiAocmFuZ2UucGVlaygpLm51bWVyaWNWYWx1ZSgpIDwg
MCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVy
aWNWYWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkZyYWN0aW9uKTsKKyAgICB9
CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUs
IFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOworfQorCitzdGF0
aWMgQ1NTVmFsdWUqIGNvbnN1bWVHcmlkVHJhY2tTaXplKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgY29uc3QgQ1NTUGFyc2Vy
VG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOworICAgIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFs
dWVBdXRvPih0b2tlbi5pZCgpKSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7
CisKKyAgICBpZiAodG9rZW4uZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlTWlubWF4KSB7CisgICAg
ICAgIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2VDb3B5ID0gcmFuZ2U7CisgICAgICAgIENTU1Bh
cnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZUNvcHkpOworICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogbWluVHJhY2tCcmVhZHRoID0gY29uc3VtZUdyaWRCcmVhZHRo
KGFyZ3MsIGNzc1BhcnNlck1vZGUpOworICAgICAgICBpZiAoIW1pblRyYWNrQnJlYWR0aCB8fCBt
aW5UcmFja0JyZWFkdGgtPmlzRmxleCgpIHx8ICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNw
YWNlKGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBtYXhUcmFja0JyZWFkdGggPSBjb25zdW1lR3JpZEJyZWFkdGgoYXJncywgY3Nz
UGFyc2VyTW9kZSk7CisgICAgICAgIGlmICghbWF4VHJhY2tCcmVhZHRoIHx8ICFhcmdzLmF0RW5k
KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmFuZ2UgPSByYW5nZUNv
cHk7CisgICAgICAgIENTU0Z1bmN0aW9uVmFsdWUqIHJlc3VsdCA9IENTU0Z1bmN0aW9uVmFsdWU6
OmNyZWF0ZShDU1NWYWx1ZU1pbm1heCk7CisgICAgICAgIHJlc3VsdC0+YXBwZW5kKCptaW5UcmFj
a0JyZWFkdGgpOworICAgICAgICByZXN1bHQtPmFwcGVuZCgqbWF4VHJhY2tCcmVhZHRoKTsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIGNvbnN1bWVHcmlkQnJlYWR0
aChyYW5nZSwgY3NzUGFyc2VyTW9kZSk7Cit9CisKKy8vIEFwcGVuZHMgdG8gdGhlIHBhc3NlZCBp
biBDU1NHcmlkTGluZU5hbWVzVmFsdWUgaWYgYW55LCBvdGhlcndpc2UgY3JlYXRlcyBhIG5ldyBv
bmUuCitzdGF0aWMgQ1NTR3JpZExpbmVOYW1lc1ZhbHVlKiBjb25zdW1lR3JpZExpbmVOYW1lcyhD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTR3JpZExpbmVOYW1lc1ZhbHVlKiBsaW5lTmFt
ZXMgPSBudWxscHRyKQoreworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2VDb3B5ID0gcmFu
Z2U7CisgICAgaWYgKHJhbmdlQ29weS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLnR5cGUo
KSAhPSBMZWZ0QnJhY2tldFRva2VuKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAo
IWxpbmVOYW1lcykKKyAgICAgICAgbGluZU5hbWVzID0gQ1NTR3JpZExpbmVOYW1lc1ZhbHVlOjpj
cmVhdGUoKTsKKyAgICB3aGlsZSAoQ1NTQ3VzdG9tSWRlbnRWYWx1ZSogbGluZU5hbWUgPSBjb25z
dW1lQ3VzdG9tSWRlbnRGb3JHcmlkTGluZShyYW5nZUNvcHkpKQorICAgICAgICBsaW5lTmFtZXMt
PmFwcGVuZCgqbGluZU5hbWUpOworICAgIGlmIChyYW5nZUNvcHkuY29uc3VtZUluY2x1ZGluZ1do
aXRlc3BhY2UoKS50eXBlKCkgIT0gUmlnaHRCcmFja2V0VG9rZW4pCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJhbmdlID0gcmFuZ2VDb3B5OworICAgIHJldHVybiBsaW5lTmFtZXM7Cit9
CisKK3N0YXRpYyBib29sIGNvbnN1bWVHcmlkVHJhY2tSZXBlYXRGdW5jdGlvbihDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NWYWx1ZUxp
c3QmIGxpc3QsIGJvb2wmIGlzQXV0b1JlcGVhdCwgYm9vbCYgYWxsVHJhY2tzQXJlRml4ZWRTaXpl
ZCkKK3sKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFu
Z2UpOworICAgIC8vIFRoZSBudW1iZXIgb2YgcmVwZXRpdGlvbnMgZm9yIDxhdXRvLXJlcGVhdD4g
aXMgbm90IGltcG9ydGFudCBhdCBwYXJzaW5nIGxldmVsCisgICAgLy8gYmVjYXVzZSBpdCB3aWxs
IGJlIGNvbXB1dGVkIGxhdGVyLCBsZXQncyBzZXQgaXQgdG8gMS4KKyAgICBzaXplX3QgcmVwZXRp
dGlvbnMgPSAxOworICAgIGlzQXV0b1JlcGVhdCA9IGlkZW50TWF0Y2hlczxDU1NWYWx1ZUF1dG9G
aWxsLCBDU1NWYWx1ZUF1dG9GaXQ+KGFyZ3MucGVlaygpLmlkKCkpOworICAgIENTU1ZhbHVlTGlz
dCogcmVwZWF0ZWRWYWx1ZXM7CisgICAgaWYgKGlzQXV0b1JlcGVhdCkgeworICAgICAgICByZXBl
YXRlZFZhbHVlcyA9IENTU0dyaWRBdXRvUmVwZWF0VmFsdWU6OmNyZWF0ZShhcmdzLmNvbnN1bWVJ
bmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gRklY
TUU6IGEgY29uc3VtZUludGVnZXJSYXcgd291bGQgYmUgbW9yZSBlZmZpY2llbnQgaGVyZS4KKyAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHJlcGV0aXRpb24gPSBjb25zdW1lUG9zaXRpdmVJbnRl
Z2VyKGFyZ3MpOworICAgICAgICBpZiAoIXJlcGV0aXRpb24pCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJlcGV0aXRpb25zID0gY2xhbXBUbzxzaXplX3Q+KHJlcGV0aXRpb24t
PmdldERvdWJsZVZhbHVlKCksIDAsIGtHcmlkTWF4VHJhY2tzKTsKKyAgICAgICAgcmVwZWF0ZWRW
YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgfQorICAg
IGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIENTU0dyaWRMaW5lTmFtZXNWYWx1ZSogbGluZU5hbWVzID0gY29uc3Vt
ZUdyaWRMaW5lTmFtZXMoYXJncyk7CisgICAgaWYgKGxpbmVOYW1lcykKKyAgICAgICAgcmVwZWF0
ZWRWYWx1ZXMtPmFwcGVuZCgqbGluZU5hbWVzKTsKKworICAgIHNpemVfdCBudW1iZXJPZlRyYWNr
cyA9IDA7CisgICAgd2hpbGUgKCFhcmdzLmF0RW5kKCkpIHsKKyAgICAgICAgQ1NTVmFsdWUqIHRy
YWNrU2l6ZSA9IGNvbnN1bWVHcmlkVHJhY2tTaXplKGFyZ3MsIGNzc1BhcnNlck1vZGUpOworICAg
ICAgICBpZiAoIXRyYWNrU2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
aWYgKGFsbFRyYWNrc0FyZUZpeGVkU2l6ZWQpCisgICAgICAgICAgICBhbGxUcmFja3NBcmVGaXhl
ZFNpemVkID0gaXNHcmlkVHJhY2tGaXhlZFNpemVkKCp0cmFja1NpemUpOworICAgICAgICByZXBl
YXRlZFZhbHVlcy0+YXBwZW5kKCp0cmFja1NpemUpOworICAgICAgICArK251bWJlck9mVHJhY2tz
OworICAgICAgICBsaW5lTmFtZXMgPSBjb25zdW1lR3JpZExpbmVOYW1lcyhhcmdzKTsKKyAgICAg
ICAgaWYgKGxpbmVOYW1lcykKKyAgICAgICAgICAgIHJlcGVhdGVkVmFsdWVzLT5hcHBlbmQoKmxp
bmVOYW1lcyk7CisgICAgfQorICAgIC8vIFdlIHNob3VsZCBoYXZlIGZvdW5kIGF0IGxlYXN0IG9u
ZSA8dHJhY2stc2l6ZT4gb3IgZWxzZSBpdCBpcyBub3QgYSB2YWxpZCA8dHJhY2stbGlzdD4uCisg
ICAgaWYgKCFudW1iZXJPZlRyYWNrcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KGlzQXV0b1JlcGVhdCkgeworICAgICAgICBsaXN0LmFwcGVuZCgqcmVwZWF0ZWRWYWx1ZXMpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFdlIGNsYW1wIHRoZSByZXBldGl0aW9ucyB0byBhIG11
bHRpcGxlIG9mIHRoZSByZXBlYXQoKSB0cmFjayBsaXN0J3Mgc2l6ZSwgd2hpbGUgc3RheWluZyBi
ZWxvdyB0aGUgbWF4IGdyaWQgc2l6ZS4KKyAgICAgICAgcmVwZXRpdGlvbnMgPSBzdGQ6Om1pbihy
ZXBldGl0aW9ucywga0dyaWRNYXhUcmFja3MgLyBudW1iZXJPZlRyYWNrcyk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVwZXRpdGlvbnM7ICsraSkgeworICAgICAgICAgICAgZm9y
IChzaXplX3QgaiA9IDA7IGogPCByZXBlYXRlZFZhbHVlcy0+bGVuZ3RoKCk7ICsraikKKyAgICAg
ICAgICAgICAgICBsaXN0LmFwcGVuZChyZXBlYXRlZFZhbHVlcy0+aXRlbShqKSk7CisgICAgICAg
IH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2VudW0gVHJhY2tMaXN0VHlwZSB7IEdy
aWRUZW1wbGF0ZSwgR3JpZFRlbXBsYXRlTm9SZXBlYXQsIEdyaWRBdXRvIH07CisKK3N0YXRpYyBD
U1NWYWx1ZSogY29uc3VtZUdyaWRUcmFja0xpc3QoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Us
IENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVHJhY2tMaXN0VHlwZSB0cmFja0xpc3RUeXBl
KQoreworICAgIGJvb2wgYWxsb3dHcmlkTGluZU5hbWVzID0gdHJhY2tMaXN0VHlwZSAhPSBHcmlk
QXV0bzsKKyAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3Bh
Y2VTZXBhcmF0ZWQoKTsKKyAgICBDU1NHcmlkTGluZU5hbWVzVmFsdWUqIGxpbmVOYW1lcyA9IGNv
bnN1bWVHcmlkTGluZU5hbWVzKHJhbmdlKTsKKyAgICBpZiAobGluZU5hbWVzKSB7CisgICAgICAg
IGlmICghYWxsb3dHcmlkTGluZU5hbWVzKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHZhbHVlcy0+YXBwZW5kKCpsaW5lTmFtZXMpOworICAgIH0KKworICAgIGJvb2wgYWxs
b3dSZXBlYXQgPSB0cmFja0xpc3RUeXBlID09IEdyaWRUZW1wbGF0ZTsKKyAgICBib29sIHNlZW5B
dXRvUmVwZWF0ID0gZmFsc2U7CisgICAgYm9vbCBhbGxUcmFja3NBcmVGaXhlZFNpemVkID0gdHJ1
ZTsKKyAgICBkbyB7CisgICAgICAgIGJvb2wgaXNBdXRvUmVwZWF0OworICAgICAgICBpZiAocmFu
Z2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZVJlcGVhdCkgeworICAgICAgICAgICAg
aWYgKCFhbGxvd1JlcGVhdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgICAgIGlmICghY29uc3VtZUdyaWRUcmFja1JlcGVhdEZ1bmN0aW9uKHJhbmdlLCBjc3NQYXJz
ZXJNb2RlLCAqdmFsdWVzLCBpc0F1dG9SZXBlYXQsIGFsbFRyYWNrc0FyZUZpeGVkU2l6ZWQpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgaWYgKGlzQXV0b1Jl
cGVhdCAmJiBzZWVuQXV0b1JlcGVhdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgICAgIHNlZW5BdXRvUmVwZWF0ID0gc2VlbkF1dG9SZXBlYXQgfHwgaXNBdXRvUmVw
ZWF0OworICAgICAgICB9IGVsc2UgaWYgKENTU1ZhbHVlKiB2YWx1ZSA9IGNvbnN1bWVHcmlkVHJh
Y2tTaXplKHJhbmdlLCBjc3NQYXJzZXJNb2RlKSkgeworICAgICAgICAgICAgaWYgKGFsbFRyYWNr
c0FyZUZpeGVkU2l6ZWQpCisgICAgICAgICAgICAgICAgYWxsVHJhY2tzQXJlRml4ZWRTaXplZCA9
IGlzR3JpZFRyYWNrRml4ZWRTaXplZCgqdmFsdWUpOworICAgICAgICAgICAgdmFsdWVzLT5hcHBl
bmQoKnZhbHVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICB9CisgICAgICAgIGlmIChzZWVuQXV0b1JlcGVhdCAmJiAhYWxsVHJhY2tzQXJl
Rml4ZWRTaXplZCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBsaW5lTmFt
ZXMgPSBjb25zdW1lR3JpZExpbmVOYW1lcyhyYW5nZSk7CisgICAgICAgIGlmIChsaW5lTmFtZXMp
IHsKKyAgICAgICAgICAgIGlmICghYWxsb3dHcmlkTGluZU5hbWVzKQorICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoKmxpbmVOYW1lcyk7
CisgICAgICAgIH0KKyAgICB9IHdoaWxlICghcmFuZ2UuYXRFbmQoKSAmJiByYW5nZS5wZWVrKCku
dHlwZSgpICE9IERlbGltaXRlclRva2VuKTsKKyAgICByZXR1cm4gdmFsdWVzOworfQorCitzdGF0
aWMgQ1NTVmFsdWUqIGNvbnN1bWVHcmlkVGVtcGxhdGVzUm93c09yQ29sdW1ucyhDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlm
IChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25z
dW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lR3JpZFRyYWNrTGlzdChyYW5nZSwg
Y3NzUGFyc2VyTW9kZSwgR3JpZFRlbXBsYXRlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25z
dW1lR3JpZFRlbXBsYXRlQXJlYXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAg
aWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBOYW1lZEdyaWRBcmVhTWFwIGdyaWRBcmVhTWFwOwor
ICAgIHNpemVfdCByb3dDb3VudCA9IDA7CisgICAgc2l6ZV90IGNvbHVtbkNvdW50ID0gMDsKKwor
ICAgIHdoaWxlIChyYW5nZS5wZWVrKCkudHlwZSgpID09IFN0cmluZ1Rva2VuKSB7CisgICAgICAg
IGlmICghcGFyc2VHcmlkVGVtcGxhdGVBcmVhc1JvdyhyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hp
dGVzcGFjZSgpLnZhbHVlKCkudG9TdHJpbmcoKSwgZ3JpZEFyZWFNYXAsIHJvd0NvdW50LCBjb2x1
bW5Db3VudCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgKytyb3dDb3Vu
dDsKKyAgICB9CisKKyAgICBpZiAocm93Q291bnQgPT0gMCkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgQVNTRVJUKGNvbHVtbkNvdW50KTsKKyAgICByZXR1cm4gQ1NTR3JpZFRlbXBsYXRl
QXJlYXNWYWx1ZTo6Y3JlYXRlKGdyaWRBcmVhTWFwLCByb3dDb3VudCwgY29sdW1uQ291bnQpOwor
fQorCitzdGF0aWMgdm9pZCBjb3VudEtleXdvcmRPbmx5UHJvcGVydHlVc2FnZShDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5LCBVc2VDb3VudGVyKiBjb3VudGVyLCBDU1NWYWx1ZUlEIHZhbHVlSUQpCit7
CisgICAgaWYgKCFjb3VudGVyKQorICAgICAgICByZXR1cm47CisgICAgc3dpdGNoIChwcm9wZXJ0
eSkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlOgorICAgICAgICBpZiAo
dmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUpIHsKKyAgICAgICAgICAgIGNvdW50ZXItPmNvdW50KFVz
ZUNvdW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5jZU5vbmUpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgY291bnRlci0+Y291bnQoVXNlQ291bnRlcjo6Q1NTVmFsdWVBcHBlYXJhbmNlTm90
Tm9uZSk7CisgICAgICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUJ1dHRvbikKKyAgICAg
ICAgICAgICAgICBjb3VudGVyLT5jb3VudChVc2VDb3VudGVyOjpDU1NWYWx1ZUFwcGVhcmFuY2VC
dXR0b24pOworICAgICAgICAgICAgZWxzZSBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUNhcmV0KQor
ICAgICAgICAgICAgICAgIGNvdW50ZXItPmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlQXBwZWFy
YW5jZUNhcmV0KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVDaGVj
a2JveCkKKyAgICAgICAgICAgICAgICBjb3VudGVyLT5jb3VudChVc2VDb3VudGVyOjpDU1NWYWx1
ZUFwcGVhcmFuY2VDaGVja2JveCk7CisgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZUlEID09IENT
U1ZhbHVlTWVudWxpc3QpCisgICAgICAgICAgICAgICAgY291bnRlci0+Y291bnQoVXNlQ291bnRl
cjo6Q1NTVmFsdWVBcHBlYXJhbmNlTWVudWxpc3QpOworICAgICAgICAgICAgZWxzZSBpZiAodmFs
dWVJRCA9PSBDU1NWYWx1ZU1lbnVsaXN0QnV0dG9uKQorICAgICAgICAgICAgICAgIGNvdW50ZXIt
PmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5jZU1lbnVsaXN0QnV0dG9uKTsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVMaXN0Ym94KQorICAgICAgICAg
ICAgICAgIGNvdW50ZXItPmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5jZUxpc3Ri
b3gpOworICAgICAgICAgICAgZWxzZSBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVJhZGlvKQorICAg
ICAgICAgICAgICAgIGNvdW50ZXItPmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5j
ZVJhZGlvKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVTZWFyY2hm
aWVsZCkKKyAgICAgICAgICAgICAgICBjb3VudGVyLT5jb3VudChVc2VDb3VudGVyOjpDU1NWYWx1
ZUFwcGVhcmFuY2VTZWFyY2hGaWVsZCk7CisgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZUlEID09
IENTU1ZhbHVlVGV4dGZpZWxkKQorICAgICAgICAgICAgICAgIGNvdW50ZXItPmNvdW50KFVzZUNv
dW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5jZVRleHRGaWVsZCk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgY291bnRlci0+Y291bnQoVXNlQ291bnRlcjo6Q1NTVmFsdWVBcHBlYXJh
bmNlT3RoZXJzKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIGJyZWFrOworICAgIH0KK30KKworY29uc3QgQ1NTVmFsdWUqIENTU1Byb3BlcnR5UGFy
c2VyOjpwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5SUQgdW5yZXNvbHZlZFByb3BlcnR5LCBD
U1NQcm9wZXJ0eUlEIGN1cnJlbnRTaG9ydGhhbmQpCit7CisgICAgQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eSA9IHJlc29sdmVDU1NQcm9wZXJ0eUlEKHVucmVzb2x2ZWRQcm9wZXJ0eSk7CisgICAgaWYg
KENTU1BhcnNlckZhc3RQYXRoczo6aXNLZXl3b3JkUHJvcGVydHlJRChwcm9wZXJ0eSkpIHsKKyAg
ICAgICAgaWYgKCFDU1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRW
YWx1ZShwcm9wZXJ0eSwgbV9yYW5nZS5wZWVrKCkuaWQoKSwgbV9jb250ZXh0Lm1vZGUoKSkpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgY291bnRLZXl3b3JkT25seVByb3Bl
cnR5VXNhZ2UocHJvcGVydHksIG1fY29udGV4dC51c2VDb3VudGVyKCksIG1fcmFuZ2UucGVlaygp
LmlkKCkpOworICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KG1fcmFuZ2UpOworICAgIH0KKyAg
ICBzd2l0Y2ggKHByb3BlcnR5KSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdpbGxDaGFuZ2U6Cisg
ICAgICAgIHJldHVybiBjb25zdW1lV2lsbENoYW5nZShtX3JhbmdlKTsKKyAgICBjYXNlIENTU1By
b3BlcnR5UGFnZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVQYWdlKG1fcmFuZ2UpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlRdW90ZXM6CisgICAgICAgIHJldHVybiBjb25zdW1lUXVvdGVzKG1fcmFu
Z2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIaWdobGlnaHQ6CisgICAgICAgIHJldHVy
biBjb25zdW1lV2Via2l0SGlnaGxpZ2h0KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlG
b250VmFyaWFudENhcHM6CisgICAgICAgIHJldHVybiBjb25zdW1lRm9udFZhcmlhbnRDYXBzKG1f
cmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250VmFyaWFudExpZ2F0dXJlczoKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVGb250VmFyaWFudExpZ2F0dXJlcyhtX3JhbmdlKTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5Rm9udFZhcmlhbnROdW1lcmljOgorICAgICAgICByZXR1cm4gY29uc3VtZUZv
bnRWYXJpYW50TnVtZXJpYyhtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEZlYXR1
cmVTZXR0aW5nczoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVGb250RmVhdHVyZVNldHRpbmdzKG1f
cmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250RmFtaWx5OgorICAgICAgICByZXR1cm4g
Y29uc3VtZUZvbnRGYW1pbHkobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRXZWln
aHQ6CisgICAgICAgIHJldHVybiBjb25zdW1lRm9udFdlaWdodChtX3JhbmdlKTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V29yZFNwYWNp
bmc6CisgICAgICAgIHJldHVybiBjb25zdW1lU3BhY2luZyhtX3JhbmdlLCBtX2NvbnRleHQubW9k
ZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGFiU2l6ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVUYWJTaXplKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlUZXh0U2l6ZUFkanVzdDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVUZXh0U2l6ZUFkanVzdCht
X3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFNpemU6
CisgICAgICAgIHJldHVybiBjb25zdW1lRm9udFNpemUobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUo
KSwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOworICAgIGNhc2UgQ1NTUHJvcGVydHlMaW5lSGVpZ2h0
OgorICAgICAgICByZXR1cm4gY29uc3VtZUxpbmVIZWlnaHQobV9yYW5nZSwgbV9jb250ZXh0Lm1v
ZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVJvdGF0ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVSb3RhdGlvbihtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5U2NhbGU6CisgICAgICAg
IHJldHVybiBjb25zdW1lU2NhbGUobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5z
bGF0ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVUcmFuc2xhdGUobV9yYW5nZSwgbV9jb250ZXh0
Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFj
aW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmc6Cisg
ICAgICAgIHJldHVybiBjb25zdW1lTGVuZ3RoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFZh
bHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvdW50ZXJJbmNyZW1l
bnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvdW50ZXJSZXNldDoKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVDb3VudGVyKG1fcmFuZ2UsIHByb3BlcnR5ID09IENTU1Byb3BlcnR5Q291bnRlckluY3Jl
bWVudCA/IDEgOiAwKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5U2l6ZToKKyAgICAgICAgcmV0dXJu
IGNvbnN1bWVTaXplKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlTbmFwSGVpZ2h0OgorICAgICAgICByZXR1cm4gY29uc3VtZVNuYXBIZWlnaHQobV9yYW5n
ZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRJbmRlbnQ6Cisg
ICAgICAgIHJldHVybiBjb25zdW1lVGV4dEluZGVudChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgp
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWF4V2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1h
eEhlaWdodDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVNYXhXaWR0aE9ySGVpZ2h0KG1fcmFuZ2Us
IG1fY29udGV4dCwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOworICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXhMb2dpY2FsV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2lj
YWxIZWlnaHQ6CisgICAgICAgIHJldHVybiBjb25zdW1lTWF4V2lkdGhPckhlaWdodChtX3Jhbmdl
LCBtX2NvbnRleHQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5XaWR0aDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5TWluSGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXaWR0aDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5SGVpZ2h0OgorICAgICAgICByZXR1cm4gY29uc3VtZVdpZHRoT3JIZWlnaHQo
bV9yYW5nZSwgbV9jb250ZXh0LCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWluTG9naWNhbEhlaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TG9naWNhbFdpZHRo
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMb2dpY2FsSGVpZ2h0OgorICAgICAgICByZXR1
cm4gY29uc3VtZVdpZHRoT3JIZWlnaHQobV9yYW5nZSwgbV9jb250ZXh0KTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5TWFyZ2luVG9wOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5SaWdodDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJn
aW5MZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3R0b206CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUxlZnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVJpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlU
b3A6CisgICAgICAgIHJldHVybiBjb25zdW1lTWFyZ2luT3JPZmZzZXQobV9yYW5nZSwgbV9jb250
ZXh0Lm1vZGUoKSwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOworICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5TdGFydDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luRW5kOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmU6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcmdpbkFmdGVyOgorICAgICAgICByZXR1cm4gY29uc3VtZU1hcmdpbk9yT2Zm
c2V0KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdUb3A6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRp
bmdSaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ0JvdHRvbToKKyAgICBjYXNlIENT
U1Byb3BlcnR5UGFkZGluZ0xlZnQ6CisgICAgICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJj
ZW50KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwgVW5p
dGxlc3NRdWlyazo6QWxsb3cpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nU3Rh
cnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdFbmQ6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBh
ZGRpbmdBZnRlcjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQobV9yYW5n
ZSwgbV9jb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlLCBVbml0bGVzc1F1aXJr
OjpGb3JiaWQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlDbGlwOgorICAgICAgICByZXR1cm4gY29u
c3VtZUNsaXAobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVRvdWNoQWN0aW9uOgorICAgICAgICByZXR1cm4gY29uc3VtZVRvdWNoQWN0aW9uKG1fcmFuZ2Up
OworICAgIGNhc2UgQ1NTUHJvcGVydHlTY3JvbGxTbmFwRGVzdGluYXRpb246CisgICAgY2FzZSBD
U1NQcm9wZXJ0eU9iamVjdFBvc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQZXJzcGVjdGl2
ZU9yaWdpbjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVQb3NpdGlvbihtX3JhbmdlLCBtX2NvbnRl
eHQubW9kZSgpLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRMaW5lQ2xhbXA6CisgICAgICAgIHJldHVybiBjb25zdW1lTGluZUNsYW1wKG1fcmFuZ2Up
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250U2l6ZURlbHRhOgorICAgICAgICByZXR1
cm4gY29uc3VtZUxlbmd0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxs
LCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhl
bmF0ZUNoYXJhY3RlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TG9jYWxlOgorICAgICAg
ICByZXR1cm4gY29uc3VtZUxvY2FsZShtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29s
dW1uV2lkdGg6CisgICAgICAgIHJldHVybiBjb25zdW1lQ29sdW1uV2lkdGgobV9yYW5nZSk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVtbkNvdW50OgorICAgICAgICByZXR1cm4gY29uc3VtZUNv
bHVtbkNvdW50KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlDb2x1bW5HYXA6CisgICAg
ICAgIHJldHVybiBjb25zdW1lQ29sdW1uR2FwKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlDb2x1bW5TcGFuOgorICAgICAgICByZXR1cm4gY29uc3VtZUNv
bHVtblNwYW4obV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVpvb206CisgICAgICAgIHJl
dHVybiBjb25zdW1lWm9vbShtX3JhbmdlLCBtX2NvbnRleHQpOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlBbmltYXRpb25EZWxheToKKyAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvbkRlbGF5Ogor
ICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25EaXJlY3Rpb246CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUFuaW1hdGlvbkR1cmF0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uRHVy
YXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkZpbGxNb2RlOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlBbmltYXRpb25JdGVyYXRpb25Db3VudDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
QW5pbWF0aW9uTmFtZToKKyAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uUGxheVN0YXRlOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uUHJvcGVydHk6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0
aW9uVGltaW5nRnVuY3Rpb246CisgICAgICAgIHJldHVybiBjb25zdW1lQW5pbWF0aW9uUHJvcGVy
dHlMaXN0KHByb3BlcnR5LCBtX3JhbmdlLCBtX2NvbnRleHQsIHVucmVzb2x2ZWRQcm9wZXJ0eSA9
PSBDU1NQcm9wZXJ0eUFsaWFzV2Via2l0QW5pbWF0aW9uTmFtZSk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUdyaWRDb2x1bW5HYXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRSb3dHYXA6CisgICAg
ICAgIHJldHVybiBjb25zdW1lTGVuZ3RoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFZhbHVl
UmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNoYXBlTWFyZ2luOgorICAg
ICAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChtX3JhbmdlLCBtX2NvbnRleHQubW9k
ZSgpLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgIGNhc2UgQ1NTUHJvcGVydHlTaGFwZUlt
YWdlVGhyZXNob2xkOgorICAgICAgICByZXR1cm4gY29uc3VtZU51bWJlcihtX3JhbmdlLCBWYWx1
ZVJhbmdlQWxsKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94T3JkaW5hbEdyb3VwOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlPcnBoYW5zOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXaWRvd3M6
CisgICAgICAgIHJldHVybiBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyKG1fcmFuZ2UpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkNvbG9yOgorICAgICAgICBBU1NFUlQoUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6Y3NzM1RleHREZWNvcmF0aW9uc0VuYWJsZWQoKSk7CisgICAgICAg
IHJldHVybiBjb25zdW1lQ29sb3IobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aDoKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVUZXh0U3Ryb2tlV2lkdGgobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRhcEhpZ2hsaWdodENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFz
aXNDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvcjoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3I6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJBZnRlckNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29s
b3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0b3BDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5
Rmxvb2RDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlnaHRpbmdDb2xvcjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5Q29sdW1uUnVsZUNvbG9yOgorICAgICAgICByZXR1cm4gY29uc3VtZUNvbG9y
KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvcjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yOgorICAgICAgICByZXR1cm4gY29u
c3VtZUNvbG9yKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIGluUXVpcmtzTW9kZSgpKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRXaWR0aDoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyRW5kV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckJlZm9yZVdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldp
ZHRoOgorICAgICAgICByZXR1cm4gY29uc3VtZUJvcmRlcldpZHRoKG1fcmFuZ2UsIG1fY29udGV4
dC5tb2RlKCksIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3I6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlclRvcENvbG9yOiB7CisgICAgICAgIGJvb2wgYWxsb3dRdWlya3lDb2xvcnMgPSBpblF1
aXJrc01vZGUoKQorICAgICAgICAgICAgJiYgKGN1cnJlbnRTaG9ydGhhbmQgPT0gQ1NTUHJvcGVy
dHlJbnZhbGlkIHx8IGN1cnJlbnRTaG9ydGhhbmQgPT0gQ1NTUHJvcGVydHlCb3JkZXJDb2xvcik7
CisgICAgICAgIHJldHVybiBjb25zdW1lQ29sb3IobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwg
YWxsb3dRdWlya3lDb2xvcnMpOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90
dG9tV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
VG9wV2lkdGg6IHsKKyAgICAgICAgYm9vbCBhbGxvd1F1aXJreUxlbmd0aHMgPSBpblF1aXJrc01v
ZGUoKQorICAgICAgICAgICAgJiYgKGN1cnJlbnRTaG9ydGhhbmQgPT0gQ1NTUHJvcGVydHlJbnZh
bGlkIHx8IGN1cnJlbnRTaG9ydGhhbmQgPT0gQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCk7CisgICAg
ICAgIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MgPSBhbGxvd1F1aXJreUxlbmd0aHMgPyBVbml0bGVz
c1F1aXJrOjpBbGxvdyA6IFVuaXRsZXNzUXVpcms6OkZvcmJpZDsKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVCb3JkZXJXaWR0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCB1bml0bGVzcyk7Cisg
ICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlaSW5kZXg6CisgICAgICAgIHJldHVybiBjb25zdW1l
WkluZGV4KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0U2hhZG93OiAvLyBDU1My
IHByb3BlcnR5LCBkcm9wcGVkIGluIENTUzIuMSwgYmFjayBpbiBDU1MzLCBzbyB0cmVhdCBhcyBD
U1MzCisgICAgY2FzZSBDU1NQcm9wZXJ0eUJveFNoYWRvdzoKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVTaGFkb3cobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgcHJvcGVydHkgPT0gQ1NTUHJvcGVy
dHlCb3hTaGFkb3cpOworICAgIGNhc2UgQ1NTUHJvcGVydHlGaWx0ZXI6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJhY2tkcm9wRmlsdGVyOgorICAgICAgICByZXR1cm4gY29uc3VtZUZpbHRlcihtX3Jh
bmdlLCBtX2NvbnRleHQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbjoKKyAg
ICAgICAgQVNTRVJUKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3MzVGV4dERlY29yYXRpb25z
RW5hYmxlZCgpKTsKKyAgICAgICAgLy8gZmFsbHRocm91Z2gKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3Q6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRE
ZWNvcmF0aW9uTGluZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVUZXh0RGVjb3JhdGlvbkxpbmUo
bV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1v
dGlvblBhdGg6CisgICAgICAgIHJldHVybiBjb25zdW1lUGF0aE9yTm9uZShtX3JhbmdlKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5TW90aW9uT2Zmc2V0OgorICAgICAgICByZXR1cm4gY29uc3VtZUxl
bmd0aE9yUGVyY2VudChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxsKTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5TW90aW9uUm90YXRpb246CisgICAgICAgIHJldHVybiBjb25z
dW1lTW90aW9uUm90YXRpb24obV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRFbXBoYXNpc1N0eWxlOgorICAgICAgICByZXR1cm4gY29uc3VtZVRleHRFbXBoYXNpc1N0eWxl
KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3I6CisgICAgICAgIHJl
dHVybiBjb25zdW1lT3V0bGluZUNvbG9yKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lT2Zmc2V0OgorICAgICAgICByZXR1cm4gY29uc3VtZUxl
bmd0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5T3V0bGluZVdpZHRoOgorICAgICAgICByZXR1cm4gY29uc3VtZUxpbmVXaWR0
aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlUcmFuc2Zvcm06CisgICAgICAgIHJldHVybiBjb25zdW1lVHJhbnNm
b3JtKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIHVucmVzb2x2ZWRQcm9wZXJ0eSA9PSBDU1NQ
cm9wZXJ0eUFsaWFzV2Via2l0VHJhbnNmb3JtKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VHJhbnNmb3JtT3JpZ2luWDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVP
cmlnaW5YOgorICAgICAgICByZXR1cm4gY29uc3VtZVBvc2l0aW9uWChtX3JhbmdlLCBtX2NvbnRl
eHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWToK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZOgorICAgICAgICBy
ZXR1cm4gY29uc3VtZVBvc2l0aW9uWShtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWjoKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVMZW5ndGgobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZUFsbCk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGw6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZToKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVQYWludFN0cm9rZShtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgp
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFpbnRPcmRlcjoKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVQYWludE9yZGVyKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJrZXJTdGFydDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5TWFya2VyTWlkOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJr
ZXJFbmQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNsaXBQYXRoOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlNYXNrOgorICAgICAgICByZXR1cm4gY29uc3VtZU5vbmVPclVSSShtX3JhbmdlKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5RmxleEJhc2lzOgorICAgICAgICByZXR1cm4gY29uc3VtZUZsZXhCYXNp
cyhtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5RmxleEdy
b3c6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsZXhTaHJpbms6CisgICAgICAgIHJldHVybiBjb25z
dW1lTnVtYmVyKG1fcmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVN0cm9rZURhc2hhcnJheToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTdHJva2VEYXNo
YXJyYXkobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVtblJ1bGVXaWR0aDoKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVDb2x1bW5SdWxlV2lkdGgobV9yYW5nZSwgbV9jb250ZXh0Lm1v
ZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZU9wYWNpdHk6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUZpbGxPcGFjaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlTdG9wT3BhY2l0eToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Rmxvb2RPcGFjaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlPcGFj
aXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4OgorICAgICAgICByZXR1cm4g
Y29uc3VtZU51bWJlcihtX3JhbmdlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5QmFzZWxpbmVTaGlmdDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCYXNlbGluZVNoaWZ0KG1f
cmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2VNaXRlcmxpbWl0OgorICAgICAgICBy
ZXR1cm4gY29uc3VtZU51bWJlcihtX3JhbmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlTdHJva2VXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tl
RGFzaG9mZnNldDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q3g6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUN5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlYOgorICAgIGNhc2UgQ1NTUHJvcGVydHlZOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlSOgorICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2Vu
dChtX3JhbmdlLCBTVkdBdHRyaWJ1dGVNb2RlLCBWYWx1ZVJhbmdlQWxsLCBVbml0bGVzc1F1aXJr
OjpGb3JiaWQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlSeDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
Unk6CisgICAgICAgIHJldHVybiBjb25zdW1lUnhPclJ5KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlDdXJzb3I6CisgICAgICAgIHJldHVybiBjb25zdW1lQ3Vyc29yKG1fcmFuZ2UsIG1f
Y29udGV4dCwgaW5RdWlya3NNb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlDb250YWluOgor
ICAgICAgICByZXR1cm4gY29uc3VtZUNvbnRhaW4obV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRyYW5zZm9ybU9yaWdpbjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVUcmFuc2Zvcm1Pcmln
aW4obV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Q29udGVudDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb250ZW50
KG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZToKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWFza0JveEltYWdlU291cmNlOgorICAgICAgICByZXR1cm4gY29uc3VtZUlt
YWdlT3JOb25lKG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBlcnNw
ZWN0aXZlOgorICAgICAgICByZXR1cm4gY29uc3VtZVBlcnNwZWN0aXZlKG1fcmFuZ2UsIG1fY29u
dGV4dC5tb2RlKCksIHVucmVzb2x2ZWRQcm9wZXJ0eSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNj
cm9sbFNuYXBDb29yZGluYXRlOgorICAgICAgICByZXR1cm4gY29uc3VtZVNjcm9sbFNuYXBDb29y
ZGluYXRlKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlT
Y3JvbGxTbmFwUG9pbnRzWDoKKyAgICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xsU25hcFBvaW50c1k6
CisgICAgICAgIHJldHVybiBjb25zdW1lU2Nyb2xsU25hcFBvaW50cyhtX3JhbmdlLCBtX2NvbnRl
eHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXM6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXM6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbVJpZ2h0UmFkaXVzOgorICAgICAgICByZXR1cm4gY29uc3VtZUJvcmRlclJhZGl1c0Nvcm5l
cihtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm94RmxleEdyb3VwOgorICAgICAgICByZXR1cm4gY29uc3VtZUludGVnZXIobV9yYW5nZSwgMCk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9yZGVyOgorICAgICAgICByZXR1cm4gY29uc3VtZUludGVn
ZXIobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVQb3NpdGlvbjoK
KyAgICAgICAgLy8gYXV0byB8IFsgdW5kZXIgfHwgWyBsZWZ0IHwgcmlnaHQgXSBdLCBidXQgd2Ug
b25seSBzdXBwb3J0IGF1dG8gfCB1bmRlciBmb3Igbm93CisgICAgICAgIEFTU0VSVChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpjc3MzVGV4dERlY29yYXRpb25zRW5hYmxlZCgpKTsKKyAgICAgICAg
cmV0dXJuIGNvbnN1bWVJZGVudDxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlVW5kZXI+KG1fcmFuZ2Up
OworICAgIGNhc2UgQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduOgorICAgICAgICByZXR1cm4gY29u
c3VtZVZlcnRpY2FsQWxpZ24obV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVNoYXBlT3V0c2lkZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaGFwZU91dHNp
ZGUobV9yYW5nZSwgbV9jb250ZXh0KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q2xpcFBh
dGg6CisgICAgICAgIHJldHVybiBjb25zdW1lV2Via2l0Q2xpcFBhdGgobV9yYW5nZSwgbV9jb250
ZXh0KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5SnVzdGlmeUNvbnRlbnQ6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUFsaWduQ29udGVudDoKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkpOworICAgICAgICByZXR1cm4gY29uc3VtZUNvbnRl
bnREaXN0cmlidXRpb25PdmVyZmxvd1Bvc2l0aW9uKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJJbWFnZVJlcGVhdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0Jv
eEltYWdlUmVwZWF0OgorICAgICAgICByZXR1cm4gY29uc3VtZUJvcmRlckltYWdlUmVwZWF0KG1f
cmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNsaWNlOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTbGljZToKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVCb3JkZXJJbWFnZVNsaWNlKHByb3BlcnR5LCBtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVySW1hZ2VPdXRzZXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJ
bWFnZU91dHNldDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCb3JkZXJJbWFnZU91dHNldChtX3Jh
bmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VXaWR0aDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlV2lkdGg6CisgICAgICAgIHJldHVybiBjb25zdW1l
Qm9yZGVySW1hZ2VXaWR0aChtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVySW1hZ2U6CisgICAgICAgIHJldHVybiBjb25zdW1lV2Via2l0Qm9yZGVySW1hZ2UocHJvcGVy
dHksIG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFJl
ZmxlY3Q6CisgICAgICAgIHJldHVybiBjb25zdW1lUmVmbGVjdChtX3JhbmdlLCBtX2NvbnRleHQp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U2l6ZUFkanVzdDoKKyAgICAgICAgQVNTRVJUKFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0ZvbnRTaXplQWRqdXN0RW5hYmxlZCgpKTsKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVGb250U2l6ZUFkanVzdChtX3JhbmdlKTsKKyAgICBjYXNlIENTU1By
b3BlcnR5SW1hZ2VPcmllbnRhdGlvbjoKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmltYWdlT3JpZW50YXRpb25FbmFibGVkKCkpOworICAgICAgICByZXR1cm4gY29uc3Vt
ZUltYWdlT3JpZW50YXRpb24obV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91
bmRBdHRhY2htZW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQmxlbmRNb2RlOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
QmFja2dyb3VuZEltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
U2l6ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFza1NvdXJjZVR5cGU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDbGlwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
YWNrZ3JvdW5kT3JpZ2luOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0NvbXBvc2l0ZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFza0ltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2lu
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
YXNrU2l6ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb21tYVNlcGFyYXRlZEJhY2tncm91bmRD
b21wb25lbnQodW5yZXNvbHZlZFByb3BlcnR5LCBtX3JhbmdlLCBtX2NvbnRleHQpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFza1JlcGVhdFk6CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGNhc2UgQ1NTUHJv
cGVydHlBbGlnbkl0ZW1zOgorICAgICAgICBEQ0hFQ0soUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
Y3NzR3JpZExheW91dEVuYWJsZWQoKSk7CisgICAgICAgIHJldHVybiBjb25zdW1lQWxpZ25JdGVt
cyhtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5SnVzdGlmeVNlbGY6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUFsaWduU2VsZjoKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkpOworICAgICAgICByZXR1cm4gY29uc3VtZVNlbGZQ
b3NpdGlvbk92ZXJmbG93UG9zaXRpb24obV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUp1
c3RpZnlJdGVtczoKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dy
aWRMYXlvdXRFbmFibGVkKCkpOworICAgICAgICByZXR1cm4gY29uc3VtZUp1c3RpZnlJdGVtcyht
X3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZENvbHVtbkVuZDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5R3JpZENvbHVtblN0YXJ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkUm93RW5k
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkUm93U3RhcnQ6CisgICAgICAgIEFTU0VSVChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NHcmlkTGF5b3V0RW5hYmxlZCgpKTsKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVHcmlkTGluZShtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZEF1
dG9Db2x1bW5zOgorICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkQXV0b1Jvd3M6CisgICAgICAgIEFT
U0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NHcmlkTGF5b3V0RW5hYmxlZCgpKTsKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVHcmlkVHJhY2tMaXN0KG1fcmFuZ2UsIG1fY29udGV4dC5tb2Rl
KCksIEdyaWRBdXRvKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQ29sdW1uczoK
KyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlUm93czoKKyAgICAgICAgQVNTRVJUKFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkpOworICAgICAgICBy
ZXR1cm4gY29uc3VtZUdyaWRUZW1wbGF0ZXNSb3dzT3JDb2x1bW5zKG1fcmFuZ2UsIG1fY29udGV4
dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVBcmVhczoKKyAgICAg
ICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkp
OworICAgICAgICByZXR1cm4gY29uc3VtZUdyaWRUZW1wbGF0ZUFyZWFzKG1fcmFuZ2UpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlHcmlkQXV0b0Zsb3c6CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpjc3NHcmlkTGF5b3V0RW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVHcmlkQXV0b0Zsb3cobV9yYW5nZSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVG
b250RGlzcGxheShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4gY29u
c3VtZUlkZW50PENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVCbG9jaywgQ1NTVmFsdWVTd2FwLCBDU1NW
YWx1ZUZhbGxiYWNrLCBDU1NWYWx1ZU9wdGlvbmFsPihyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NW
YWx1ZUxpc3QqIGNvbnN1bWVGb250RmFjZVVuaWNvZGVSYW5nZShDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSkKK3sKKyAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlQ29tbWFTZXBhcmF0ZWQoKTsKKworICAgIGRvIHsKKyAgICAgICAgY29uc3QgQ1NTUGFyc2Vy
VG9rZW4mIHRva2VuID0gcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAg
ICAgaWYgKHRva2VuLnR5cGUoKSAhPSBVbmljb2RlUmFuZ2VUb2tlbikKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgICAgIFVDaGFyMzIgc3RhcnQgPSB0b2tlbi51bmljb2RlUmFu
Z2VTdGFydCgpOworICAgICAgICBVQ2hhcjMyIGVuZCA9IHRva2VuLnVuaWNvZGVSYW5nZUVuZCgp
OworICAgICAgICBpZiAoc3RhcnQgPiBlbmQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgdmFsdWVzLT5hcHBlbmQoKkNTU1VuaWNvZGVSYW5nZVZhbHVlOjpjcmVhdGUoc3Rh
cnQsIGVuZCkpOworICAgIH0gd2hpbGUgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2Uo
cmFuZ2UpKTsKKworICAgIHJldHVybiB2YWx1ZXM7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29u
c3VtZUZvbnRGYWNlU3JjVVJJKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQ
YXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIFN0cmluZyB1cmwgPSBjb25zdW1lVXJsQXNT
dHJpbmdWaWV3KHJhbmdlKS50b1N0cmluZygpOworICAgIGlmICh1cmwuaXNOdWxsKCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIENTU0ZvbnRGYWNlU3JjVmFsdWUqIHVyaVZhbHVlKENT
U0ZvbnRGYWNlU3JjVmFsdWU6OmNyZWF0ZSh1cmwsIGNvbnRleHQuY29tcGxldGVVUkwodXJsKSwg
Y29udGV4dC5zaG91bGRDaGVja0NvbnRlbnRTZWN1cml0eVBvbGljeSgpKSk7CisgICAgdXJpVmFs
dWUtPnNldFJlZmVycmVyKGNvbnRleHQucmVmZXJyZXIoKSk7CisKKyAgICBpZiAocmFuZ2UucGVl
aygpLmZ1bmN0aW9uSWQoKSAhPSBDU1NWYWx1ZUZvcm1hdCkKKyAgICAgICAgcmV0dXJuIHVyaVZh
bHVlOworCisgICAgLy8gRklYTUU6IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtZm9udHMg
c2F5cyB0aGF0IGZvcm1hdCgpIGNvbnRhaW5zIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Ygc3Ry
aW5ncywKKyAgICAvLyBidXQgQ1NTRm9udEZhY2VTcmNWYWx1ZSBzdG9yZXMgb25seSBvbmUgZm9y
bWF0LiBBbGxvd2luZyBvbmUgZm9ybWF0IGZvciBub3cuCisgICAgQ1NTUGFyc2VyVG9rZW5SYW5n
ZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlKTsKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tl
biYgYXJnID0gYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgIGlmICgoYXJn
LnR5cGUoKSAhPSBTdHJpbmdUb2tlbikgfHwgIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgdXJpVmFsdWUtPnNldEZvcm1hdChhcmcudmFsdWUoKS50b1N0cmluZygp
KTsKKyAgICByZXR1cm4gdXJpVmFsdWU7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUZv
bnRGYWNlU3JjTG9jYWwoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNl
ckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29u
c3VtZUZ1bmN0aW9uKHJhbmdlKTsKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXNwb3NpdGlv
biBzaG91bGRDaGVja0NvbnRlbnRTZWN1cml0eVBvbGljeSA9IGNvbnRleHQuc2hvdWxkQ2hlY2tD
b250ZW50U2VjdXJpdHlQb2xpY3koKTsKKyAgICBpZiAoYXJncy5wZWVrKCkudHlwZSgpID09IFN0
cmluZ1Rva2VuKSB7CisgICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiBhcmcgPSBhcmdzLmNv
bnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIGlmICghYXJncy5hdEVuZCgpKQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBDU1NGb250RmFjZVNy
Y1ZhbHVlOjpjcmVhdGVMb2NhbChhcmcudmFsdWUoKS50b1N0cmluZygpLCBzaG91bGRDaGVja0Nv
bnRlbnRTZWN1cml0eVBvbGljeSk7CisgICAgfQorICAgIGlmIChhcmdzLnBlZWsoKS50eXBlKCkg
PT0gSWRlbnRUb2tlbikgeworICAgICAgICBTdHJpbmcgZmFtaWx5TmFtZSA9IGNvbmNhdGVuYXRl
RmFtaWx5TmFtZShhcmdzKTsKKyAgICAgICAgaWYgKCFhcmdzLmF0RW5kKCkpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIENTU0ZvbnRGYWNlU3JjVmFsdWU6OmNy
ZWF0ZUxvY2FsKGZhbWlseU5hbWUsIHNob3VsZENoZWNrQ29udGVudFNlY3VyaXR5UG9saWN5KTsK
KyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZUxpc3QqIGNv
bnN1bWVGb250RmFjZVNyYyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFy
c2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKworICAgIGRvIHsKKyAgICAgICAgY29u
c3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOworICAgICAgICBDU1NWYWx1
ZSogcGFyc2VkVmFsdWUgPSBudWxscHRyOworICAgICAgICBpZiAodG9rZW4uZnVuY3Rpb25JZCgp
ID09IENTU1ZhbHVlTG9jYWwpCisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVGb250
RmFjZVNyY0xvY2FsKHJhbmdlLCBjb250ZXh0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cGFyc2VkVmFsdWUgPSBjb25zdW1lRm9udEZhY2VTcmNVUkkocmFuZ2UsIGNvbnRleHQpOworICAg
ICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHZhbHVlcy0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAgfSB3aGlsZSAoY29uc3VtZUNv
bW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpOworICAgIHJldHVybiB2YWx1ZXM7Cit9CisK
K2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlRm9udEZhY2VEZXNjcmlwdG9yKENTU1Byb3Bl
cnR5SUQgcHJvcElkKQoreworICAgIENTU1ZhbHVlKiBwYXJzZWRWYWx1ZSA9IG51bGxwdHI7Cisg
ICAgc3dpdGNoIChwcm9wSWQpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEZhbWlseToKKyAg
ICAgICAgaWYgKGNvbnN1bWVHZW5lcmljRmFtaWx5KG1fcmFuZ2UpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVGYW1pbHlOYW1lKG1fcmFu
Z2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5U3JjOiAvLyBUaGlzIGlz
IGEgbGlzdCBvZiB1cmxzIG9yIGxvY2FsIHJlZmVyZW5jZXMuCisgICAgICAgIHBhcnNlZFZhbHVl
ID0gY29uc3VtZUZvbnRGYWNlU3JjKG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTUHJvcGVydHlVbmljb2RlUmFuZ2U6CisgICAgICAgIHBhcnNlZFZhbHVl
ID0gY29uc3VtZUZvbnRGYWNlVW5pY29kZVJhbmdlKG1fcmFuZ2UpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udERpc3BsYXk6CisgICAgICAgIHBhcnNlZFZhbHVlID0g
Y29uc3VtZUZvbnREaXNwbGF5KG1fcmFuZ2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENT
U1Byb3BlcnR5Rm9udFN0cmV0Y2g6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHlsZTogewor
ICAgICAgICBDU1NWYWx1ZUlEIGlkID0gbV9yYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFj
ZSgpLmlkKCk7CisgICAgICAgIGlmICghQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5d29y
ZFByb3BlcnR5QW5kVmFsdWUocHJvcElkLCBpZCwgbV9jb250ZXh0Lm1vZGUoKSkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHBhcnNlZFZhbHVlID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZUlkZW50aWZpZXIoaWQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50OgorICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVG
b250VmFyaWFudExpc3QobV9yYW5nZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJv
cGVydHlGb250V2VpZ2h0OgorICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVGb250V2VpZ2h0
KG1fcmFuZ2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEZlYXR1
cmVTZXR0aW5nczoKKyAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lRm9udEZlYXR1cmVTZXR0
aW5ncyhtX3JhbmdlKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgaWYgKCFwYXJzZWRWYWx1ZSB8fCAhbV9yYW5nZS5hdEVuZCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIENTU1Byb3Bl
cnR5SW52YWxpZCwgKnBhcnNlZFZhbHVlLCBmYWxzZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVTeXN0ZW1Gb250KGJvb2wgaW1wb3J0YW50
KQoreworICAgIENTU1ZhbHVlSUQgc3lzdGVtRm9udElEID0gbV9yYW5nZS5jb25zdW1lSW5jbHVk
aW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgQVNTRVJUKHN5c3RlbUZvbnRJRCA+PSBDU1NWYWx1
ZUNhcHRpb24gJiYgc3lzdGVtRm9udElEIDw9IENTU1ZhbHVlU3RhdHVzQmFyKTsKKyAgICBpZiAo
IW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRm9udFN0eWxl
IGZvbnRTdHlsZSA9IEZvbnRTdHlsZU5vcm1hbDsKKyAgICBGb250V2VpZ2h0IGZvbnRXZWlnaHQg
PSBGb250V2VpZ2h0Tm9ybWFsOworICAgIGZsb2F0IGZvbnRTaXplID0gMDsKKyAgICBBdG9taWNT
dHJpbmcgZm9udEZhbWlseTsKKyAgICBMYXlvdXRUaGVtZTo6dGhlbWUoKS5zeXN0ZW1Gb250KHN5
c3RlbUZvbnRJRCwgZm9udFN0eWxlLCBmb250V2VpZ2h0LCBmb250U2l6ZSwgZm9udEZhbWlseSk7
CisKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgQ1NTUHJvcGVydHlGb250
LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoZm9udFN0eWxlID09IEZvbnRT
dHlsZUl0YWxpYyA/IENTU1ZhbHVlSXRhbGljIDogQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQp
OworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFdlaWdodCwgQ1NTUHJvcGVydHlGb250
LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShmb250V2VpZ2h0KSwgaW1wb3J0YW50KTsKKyAg
ICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBDU1NQcm9wZXJ0eUZvbnQsICpDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGZvbnRTaXplLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGU6OlBpeGVscyksIGltcG9ydGFudCk7CisgICAgQ1NTVmFsdWVMaXN0KiBmb250RmFtaWx5TGlz
dCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICBmb250RmFtaWx5
TGlzdC0+YXBwZW5kKCpDU1NGb250RmFtaWx5VmFsdWU6OmNyZWF0ZShmb250RmFtaWx5KSk7Cisg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFtaWx5LCBDU1NQcm9wZXJ0eUZvbnQsICpm
b250RmFtaWx5TGlzdCwgaW1wb3J0YW50KTsKKworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5
Rm9udFN0cmV0Y2gsIENTU1Byb3BlcnR5Rm9udCwgKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJ
ZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFsKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUZvbnRWYXJpYW50Q2FwcywgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAg
IGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXMsIENTU1Byb3BlcnR5
Rm9udCwgKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFs
KSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50TnVt
ZXJpYywgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZp
ZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3Bl
cnR5TGluZUhlaWdodCwgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lRm9udChib29sIGltcG9ydGFu
dCkKK3sKKyAgICAvLyBMZXQncyBjaGVjayBpZiB0aGVyZSBpcyBhbiBpbmhlcml0IG9yIGluaXRp
YWwgc29tZXdoZXJlIGluIHRoZSBzaG9ydGhhbmQuCisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBy
YW5nZSA9IG1fcmFuZ2U7CisgICAgd2hpbGUgKCFyYW5nZS5hdEVuZCgpKSB7CisgICAgICAgIENT
U1ZhbHVlSUQgaWQgPSByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7Cisg
ICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUluaGVyaXQgfHwgaWQgPT0gQ1NTVmFsdWVJbml0aWFs
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAvLyBPcHRpb25hbCBmb250
LXN0eWxlLCBmb250LXZhcmlhbnQsIGZvbnQtc3RyZXRjaCBhbmQgZm9udC13ZWlnaHQuCisgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIGZvbnRTdHlsZSA9IG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIGZvbnRWYXJpYW50Q2FwcyA9IG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IGZvbnRXZWlnaHQgPSBudWxscHRyOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmb250U3RyZXRj
aCA9IG51bGxwdHI7CisgICAgd2hpbGUgKCFtX3JhbmdlLmF0RW5kKCkpIHsKKyAgICAgICAgQ1NT
VmFsdWVJRCBpZCA9IG1fcmFuZ2UucGVlaygpLmlkKCk7CisgICAgICAgIGlmICghZm9udFN0eWxl
ICYmIENTU1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKENT
U1Byb3BlcnR5Rm9udFN0eWxlLCBpZCwgbV9jb250ZXh0Lm1vZGUoKSkpIHsKKyAgICAgICAgICAg
IGZvbnRTdHlsZSA9IGNvbnN1bWVJZGVudChtX3JhbmdlKTsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisgICAgICAgIGlmICghZm9udFZhcmlhbnRDYXBzICYmIChpZCA9PSBDU1NW
YWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZVNtYWxsQ2FwcykpIHsKKyAgICAgICAgICAgIC8v
IEZvbnQgdmFyaWFudCBpbiB0aGUgc2hvcnRoYW5kIGlzIHBhcnRpY3VsYXIsIGl0IG9ubHkgYWNj
ZXB0cyBub3JtYWwgb3Igc21hbGwtY2Fwcy4KKyAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2Ry
YWZ0cy5jc3N3Zy5vcmcvY3NzLWZvbnRzLyNwcm9wZGVmLWZvbnQKKyAgICAgICAgICAgIGZvbnRW
YXJpYW50Q2FwcyA9IGNvbnN1bWVGb250VmFyaWFudENTUzIxKG1fcmFuZ2UpOworICAgICAgICAg
ICAgaWYgKGZvbnRWYXJpYW50Q2FwcykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoIWZvbnRXZWlnaHQpIHsKKyAgICAgICAgICAgIGZvbnRXZWlnaHQg
PSBjb25zdW1lRm9udFdlaWdodChtX3JhbmdlKTsKKyAgICAgICAgICAgIGlmIChmb250V2VpZ2h0
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICghZm9u
dFN0cmV0Y2ggJiYgQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5k
VmFsdWUoQ1NTUHJvcGVydHlGb250U3RyZXRjaCwgaWQsIG1fY29udGV4dC5tb2RlKCkpKQorICAg
ICAgICAgICAgZm9udFN0cmV0Y2ggPSBjb25zdW1lSWRlbnQobV9yYW5nZSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChtX3JhbmdlLmF0RW5kKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9u
dFN0eWxlLCBDU1NQcm9wZXJ0eUZvbnQsIGZvbnRTdHlsZSA/ICpmb250U3R5bGUgOiAqQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQp
OworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRDYXBzLCBDU1NQcm9wZXJ0
eUZvbnQsIGZvbnRWYXJpYW50Q2FwcyA/ICpmb250VmFyaWFudENhcHMgOiAqQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAg
IGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXMsIENTU1Byb3BlcnR5
Rm9udCwgKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFs
KSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50TnVt
ZXJpYywgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZp
ZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworCisgICAgYWRkUHJvcGVydHkoQ1NTUHJv
cGVydHlGb250V2VpZ2h0LCBDU1NQcm9wZXJ0eUZvbnQsIGZvbnRXZWlnaHQgPyAqZm9udFdlaWdo
dCA6ICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vcm1hbCks
IGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250U3RyZXRjaCwgQ1NT
UHJvcGVydHlGb250LCBmb250U3RyZXRjaCA/ICpmb250U3RyZXRjaCA6ICpDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vcm1hbCksIGltcG9ydGFudCk7CisKKyAg
ICAvLyBOb3cgYSBmb250IHNpemUgX211c3RfIGNvbWUuCisgICAgQ1NTVmFsdWUqIGZvbnRTaXpl
ID0gY29uc3VtZUZvbnRTaXplKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGlmICgh
Zm9udFNpemUgfHwgbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBDU1NQcm9wZXJ0eUZvbnQsICpmb250
U2l6ZSwgaW1wb3J0YW50KTsKKworICAgIGlmIChjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNw
YWNlKG1fcmFuZ2UpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBsaW5lSGVpZ2h0ID0g
Y29uc3VtZUxpbmVIZWlnaHQobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgICAgIGlm
ICghbGluZUhlaWdodCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYWRkUHJv
cGVydHkoQ1NTUHJvcGVydHlMaW5lSGVpZ2h0LCBDU1NQcm9wZXJ0eUZvbnQsICpsaW5lSGVpZ2h0
LCBpbXBvcnRhbnQpOworICAgIH0gZWxzZSB7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3Bl
cnR5TGluZUhlaWdodCwgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAgIH0KKworICAgIC8v
IEZvbnQgZmFtaWx5IG11c3QgY29tZSBub3cuCisgICAgQ1NTVmFsdWUqIHBhcnNlZEZhbWlseVZh
bHVlID0gY29uc3VtZUZvbnRGYW1pbHkobV9yYW5nZSk7CisgICAgaWYgKCFwYXJzZWRGYW1pbHlW
YWx1ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVy
dHlGb250RmFtaWx5LCBDU1NQcm9wZXJ0eUZvbnQsICpwYXJzZWRGYW1pbHlWYWx1ZSwgaW1wb3J0
YW50KTsKKworICAgIC8vIEZJWE1FOiBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1dELWNzczMt
Zm9udHMtMjAxMTAzMjQvI2ZvbnQtcHJvcCByZXF1aXJlcyB0aGF0CisgICAgLy8gImZvbnQtc3Ry
ZXRjaCIsICJmb250LXNpemUtYWRqdXN0IiwgYW5kICJmb250LWtlcm5pbmciIGJlIHJlc2V0IHRv
IHRoZWlyIGluaXRpYWwgdmFsdWVzCisgICAgLy8gYnV0IHdlIGRvbid0IHNlZW0gdG8gc3VwcG9y
dCB0aGVtIGF0IHRoZSBtb21lbnQuIFRoZXkgc2hvdWxkIGFsc28gYmUgYWRkZWQgaGVyZSBvbmNl
IGltcGxlbWVudGVkLgorICAgIHJldHVybiBtX3JhbmdlLmF0RW5kKCk7Cit9CisKK2Jvb2wgQ1NT
UHJvcGVydHlQYXJzZXI6OmNvbnN1bWVGb250VmFyaWFudFNob3J0aGFuZChib29sIGltcG9ydGFu
dCkKK3sKKyAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZU5vbmU+
KG1fcmFuZ2UucGVlaygpLmlkKCkpKSB7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5
Rm9udFZhcmlhbnRMaWdhdHVyZXMsIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsICpjb25zdW1lSWRl
bnQobV9yYW5nZSksIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5
Rm9udFZhcmlhbnRDYXBzLCBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LCAqQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAgICAg
ICByZXR1cm4gbV9yYW5nZS5hdEVuZCgpOworICAgIH0KKworICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBjYXBzVmFsdWUgPSBudWxscHRyOworICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzUGFyc2VyIGxp
Z2F0dXJlc1BhcnNlcjsKKyAgICBGb250VmFyaWFudE51bWVyaWNQYXJzZXIgbnVtZXJpY1BhcnNl
cjsKKyAgICBkbyB7CisgICAgICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzUGFyc2VyOjpQYXJzZVJl
c3VsdCBsaWdhdHVyZXNQYXJzZVJlc3VsdCA9IGxpZ2F0dXJlc1BhcnNlci5jb25zdW1lTGlnYXR1
cmUobV9yYW5nZSk7CisgICAgICAgIEZvbnRWYXJpYW50TnVtZXJpY1BhcnNlcjo6UGFyc2VSZXN1
bHQgbnVtZXJpY1BhcnNlUmVzdWx0ID0gbnVtZXJpY1BhcnNlci5jb25zdW1lTnVtZXJpYyhtX3Jh
bmdlKTsKKyAgICAgICAgaWYgKGxpZ2F0dXJlc1BhcnNlUmVzdWx0ID09IEZvbnRWYXJpYW50TGln
YXR1cmVzUGFyc2VyOjpQYXJzZVJlc3VsdDo6Q29uc3VtZWRWYWx1ZQorICAgICAgICAgICAgfHwg
bnVtZXJpY1BhcnNlUmVzdWx0ID09IEZvbnRWYXJpYW50TnVtZXJpY1BhcnNlcjo6UGFyc2VSZXN1
bHQ6OkNvbnN1bWVkVmFsdWUpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAo
bGlnYXR1cmVzUGFyc2VSZXN1bHQgPT0gRm9udFZhcmlhbnRMaWdhdHVyZXNQYXJzZXI6OlBhcnNl
UmVzdWx0OjpEaXNhbGxvd2VkVmFsdWUKKyAgICAgICAgICAgIHx8IG51bWVyaWNQYXJzZVJlc3Vs
dCA9PSBGb250VmFyaWFudE51bWVyaWNQYXJzZXI6OlBhcnNlUmVzdWx0OjpEaXNhbGxvd2VkVmFs
dWUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgQ1NTVmFsdWVJRCBpZCA9
IG1fcmFuZ2UucGVlaygpLmlkKCk7CisgICAgICAgIHN3aXRjaCAoaWQpIHsKKyAgICAgICAgY2Fz
ZSBDU1NWYWx1ZVNtYWxsQ2FwczoKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUFsbFNtYWxsQ2FwczoK
KyAgICAgICAgY2FzZSBDU1NWYWx1ZVBldGl0ZUNhcHM6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVB
bGxQZXRpdGVDYXBzOgorICAgICAgICBjYXNlIENTU1ZhbHVlVW5pY2FzZToKKyAgICAgICAgY2Fz
ZSBDU1NWYWx1ZVRpdGxpbmdDYXBzOgorICAgICAgICAgICAgLy8gT25seSBvbmUgY2FwcyB2YWx1
ZSBwZXJtaXR0ZWQgaW4gZm9udC12YXJpYW50IGdyYW1tYXIuCisgICAgICAgICAgICBpZiAoY2Fw
c1ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGNhcHNW
YWx1ZSA9IGNvbnN1bWVJZGVudChtX3JhbmdlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfSB3
aGlsZSAoIW1fcmFuZ2UuYXRFbmQoKSk7CisKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZv
bnRWYXJpYW50TGlnYXR1cmVzLCBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LCAqbGlnYXR1cmVzUGFy
c2VyLmZpbmFsaXplVmFsdWUoKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUZvbnRWYXJpYW50TnVtZXJpYywgQ1NTUHJvcGVydHlGb250VmFyaWFudCwgKm51bWVyaWNQ
YXJzZXIuZmluYWxpemVWYWx1ZSgpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1By
b3BlcnR5Rm9udFZhcmlhbnRDYXBzLCBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LCBjYXBzVmFsdWUg
PyAqY2Fwc1ZhbHVlIDogKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1Zh
bHVlTm9ybWFsKSwgaW1wb3J0YW50KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NQ
cm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUJvcmRlclNwYWNpbmcoYm9vbCBpbXBvcnRhbnQpCit7Cisg
ICAgQ1NTVmFsdWUqIGhvcml6b250YWxTcGFjaW5nID0gY29uc3VtZUxlbmd0aChtX3JhbmdlLCBt
X2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUsIFVuaXRsZXNzUXVpcms6OkFs
bG93KTsKKyAgICBpZiAoIWhvcml6b250YWxTcGFjaW5nKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgQ1NTVmFsdWUqIHZlcnRpY2FsU3BhY2luZyA9IGhvcml6b250YWxTcGFjaW5nOworICAg
IGlmICghbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICB2ZXJ0aWNhbFNwYWNpbmcgPSBjb25zdW1l
TGVuZ3RoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwg
VW5pdGxlc3NRdWlyazo6QWxsb3cpOworICAgIGlmICghdmVydGljYWxTcGFjaW5nIHx8ICFtX3Jh
bmdlLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0eUJvcmRlclNw
YWNpbmcsICpob3Jpem9udGFsU3BhY2luZywgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZywgQ1NTUHJvcGVydHlCb3JkZXJT
cGFjaW5nLCAqdmVydGljYWxTcGFjaW5nLCBpbXBvcnRhbnQpOworICAgIHJldHVybiB0cnVlOwor
fQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVTaW5nbGVWaWV3cG9ydERlc2NyaXB0b3IoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1Byb3BlcnR5SUQgcHJvcElkLCBDU1NQYXJzZXJN
b2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5p
ZCgpOworICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbldpZHRo
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWlu
SGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhIZWlnaHQ6CisgICAgICAgIGlmIChpZCA9
PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVJbnRlcm5hbEV4dGVuZFRvWm9vbSkKKyAg
ICAgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgICAgICByZXR1cm4gY29u
c3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5l
Z2F0aXZlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWluWm9vbToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5TWF4Wm9vbToKKyAgICBjYXNlIENTU1Byb3BlcnR5Wm9vbTogeworICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7
CisgICAgICAgIENTU1ZhbHVlKiBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZh
bHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgIGlmIChwYXJzZWRWYWx1ZSkKKyAgICAgICAg
ICAgIHJldHVybiBwYXJzZWRWYWx1ZTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVQZXJjZW50KHJh
bmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5
VXNlclpvb206CisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVab29tLCBDU1NW
YWx1ZUZpeGVkPihyYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9yaWVudGF0aW9uOgorICAg
ICAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVQb3J0cmFpdCwg
Q1NTVmFsdWVMYW5kc2NhcGU+KHJhbmdlKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJz
ZXI6OnBhcnNlVmlld3BvcnREZXNjcmlwdG9yKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGlt
cG9ydGFudCkKK3sKKyAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzVmlld3Bv
cnRFbmFibGVkKCkgfHwgaXNVQVNoZWV0QmVoYXZpb3IobV9jb250ZXh0Lm1vZGUoKSkpOworCisg
ICAgc3dpdGNoIChwcm9wSWQpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2lkdGg6IHsKKyAgICAg
ICAgQ1NTVmFsdWUqIG1pbldpZHRoID0gY29uc3VtZVNpbmdsZVZpZXdwb3J0RGVzY3JpcHRvciht
X3JhbmdlLCBDU1NQcm9wZXJ0eU1pbldpZHRoLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICAgICAg
aWYgKCFtaW5XaWR0aCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgQ1NTVmFs
dWUqIG1heFdpZHRoID0gbWluV2lkdGg7CisgICAgICAgIGlmICghbV9yYW5nZS5hdEVuZCgpKQor
ICAgICAgICAgICAgbWF4V2lkdGggPSBjb25zdW1lU2luZ2xlVmlld3BvcnREZXNjcmlwdG9yKG1f
cmFuZ2UsIENTU1Byb3BlcnR5TWF4V2lkdGgsIG1fY29udGV4dC5tb2RlKCkpOworICAgICAgICBp
ZiAoIW1heFdpZHRoIHx8ICFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5TWluV2lkdGgsIENTU1Byb3BlcnR5
SW52YWxpZCwgKm1pbldpZHRoLCBpbXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eU1heFdpZHRoLCBDU1NQcm9wZXJ0eUludmFsaWQsICptYXhXaWR0aCwgaW1wb3J0YW50
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlIZWln
aHQ6IHsKKyAgICAgICAgQ1NTVmFsdWUqIG1pbkhlaWdodCA9IGNvbnN1bWVTaW5nbGVWaWV3cG9y
dERlc2NyaXB0b3IobV9yYW5nZSwgQ1NTUHJvcGVydHlNaW5IZWlnaHQsIG1fY29udGV4dC5tb2Rl
KCkpOworICAgICAgICBpZiAoIW1pbkhlaWdodCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgQ1NTVmFsdWUqIG1heEhlaWdodCA9IG1pbkhlaWdodDsKKyAgICAgICAgaWYgKCFt
X3JhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICBtYXhIZWlnaHQgPSBjb25zdW1lU2luZ2xlVmll
d3BvcnREZXNjcmlwdG9yKG1fcmFuZ2UsIENTU1Byb3BlcnR5TWF4SGVpZ2h0LCBtX2NvbnRleHQu
bW9kZSgpKTsKKyAgICAgICAgaWYgKCFtYXhIZWlnaHQgfHwgIW1fcmFuZ2UuYXRFbmQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlN
aW5IZWlnaHQsIENTU1Byb3BlcnR5SW52YWxpZCwgKm1pbkhlaWdodCwgaW1wb3J0YW50KTsKKyAg
ICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlNYXhIZWlnaHQsIENTU1Byb3BlcnR5SW52YWxp
ZCwgKm1heEhlaWdodCwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5XaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWF4V2lk
dGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbkhlaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
TWF4SGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5ab29tOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlNYXhab29tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlab29tOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlVc2VyWm9vbToKKyAgICBjYXNlIENTU1Byb3BlcnR5T3JpZW50YXRpb246IHsKKyAgICAg
ICAgQ1NTVmFsdWUqIHBhcnNlZFZhbHVlID0gY29uc3VtZVNpbmdsZVZpZXdwb3J0RGVzY3JpcHRv
cihtX3JhbmdlLCBwcm9wSWQsIG1fY29udGV4dC5tb2RlKCkpOworICAgICAgICBpZiAoIXBhcnNl
ZFZhbHVlIHx8ICFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGFkZFByb3BlcnR5KHByb3BJZCwgQ1NTUHJvcGVydHlJbnZhbGlkLCAqcGFyc2VkVmFs
dWUsIGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBjb25zdW1l
Q29sdW1uV2lkdGhPckNvdW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NWYWx1ZSom
IGNvbHVtbldpZHRoLCBDU1NWYWx1ZSomIGNvbHVtbkNvdW50KQoreworICAgIGlmIChyYW5nZS5w
ZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pIHsKKyAgICAgICAgY29uc3VtZUlkZW50KHJhbmdl
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmICghY29sdW1uV2lkdGgpIHsK
KyAgICAgICAgY29sdW1uV2lkdGggPSBjb25zdW1lQ29sdW1uV2lkdGgocmFuZ2UpOworICAgICAg
ICBpZiAoY29sdW1uV2lkdGgpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
aWYgKCFjb2x1bW5Db3VudCkKKyAgICAgICAgY29sdW1uQ291bnQgPSBjb25zdW1lQ29sdW1uQ291
bnQocmFuZ2UpOworICAgIHJldHVybiBjb2x1bW5Db3VudDsKK30KKworYm9vbCBDU1NQcm9wZXJ0
eVBhcnNlcjo6Y29uc3VtZUNvbHVtbnMoYm9vbCBpbXBvcnRhbnQpCit7CisgICAgQ1NTVmFsdWUq
IGNvbHVtbldpZHRoID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogY29sdW1uQ291bnQgPSBudWxs
cHRyOworICAgIGlmICghY29uc3VtZUNvbHVtbldpZHRoT3JDb3VudChtX3JhbmdlLCBjb2x1bW5X
aWR0aCwgY29sdW1uQ291bnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY29uc3VtZUNv
bHVtbldpZHRoT3JDb3VudChtX3JhbmdlLCBjb2x1bW5XaWR0aCwgY29sdW1uQ291bnQpOworICAg
IGlmICghbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFj
b2x1bW5XaWR0aCkKKyAgICAgICAgY29sdW1uV2lkdGggPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlSWRlbnRpZmllcihDU1NWYWx1ZUF1dG8pOworICAgIGlmICghY29sdW1uQ291bnQpCisgICAg
ICAgIGNvbHVtbkNvdW50ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NT
VmFsdWVBdXRvKTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbHVtbldpZHRoLCBDU1NQ
cm9wZXJ0eUludmFsaWQsICpjb2x1bW5XaWR0aCwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0
eShDU1NQcm9wZXJ0eUNvbHVtbkNvdW50LCBDU1NQcm9wZXJ0eUludmFsaWQsICpjb2x1bW5Db3Vu
dCwgaW1wb3J0YW50KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBh
cnNlcjo6Y29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhh
bmQmIHNob3J0aGFuZCwgYm9vbCBpbXBvcnRhbnQpCit7CisgICAgQVNTRVJUKHNob3J0aGFuZC5s
ZW5ndGgoKSA8PSA2KTsgLy8gRXhpc3Rpbmcgc2hvcnRoYW5kcyBoYXZlIGF0IG1vc3QgNiBsb25n
aGFuZHMuCisgICAgY29uc3QgQ1NTVmFsdWUqIGxvbmdoYW5kc1s2XSA9IHsgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OworICAgIGNvbnN0IENT
U1Byb3BlcnR5SUQqIHNob3J0aGFuZFByb3BlcnRpZXMgPSBzaG9ydGhhbmQucHJvcGVydGllcygp
OworICAgIGRvIHsKKyAgICAgICAgYm9vbCBmb3VuZExvbmdoYW5kID0gZmFsc2U7CisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyAhZm91bmRMb25naGFuZCAmJiBpIDwgc2hvcnRoYW5kLmxlbmd0
aCgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChsb25naGFuZHNbaV0pCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICBsb25naGFuZHNbaV0gPSBwYXJzZVNpbmdsZVZhbHVl
KHNob3J0aGFuZFByb3BlcnRpZXNbaV0sIHNob3J0aGFuZC5pZCgpKTsKKyAgICAgICAgICAgIGlm
IChsb25naGFuZHNbaV0pCisgICAgICAgICAgICAgICAgZm91bmRMb25naGFuZCA9IHRydWU7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKCFmb3VuZExvbmdoYW5kKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0gd2hpbGUgKCFtX3JhbmdlLmF0RW5kKCkpOworCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsraSkgeworICAgICAgICBpZiAobG9u
Z2hhbmRzW2ldKQorICAgICAgICAgICAgYWRkUHJvcGVydHkoc2hvcnRoYW5kUHJvcGVydGllc1tp
XSwgc2hvcnRoYW5kLmlkKCksICpsb25naGFuZHNbaV0sIGltcG9ydGFudCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KHNob3J0aGFuZFByb3BlcnRpZXNbaV0sIHNob3J0
aGFuZC5pZCgpLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBv
cnRhbnQpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBh
cnNlcjo6Y29uc3VtZUZsZXgoYm9vbCBpbXBvcnRhbnQpCit7CisgICAgc3RhdGljIGNvbnN0IGRv
dWJsZSB1bnNldFZhbHVlID0gLTE7CisgICAgZG91YmxlIGZsZXhHcm93ID0gdW5zZXRWYWx1ZTsK
KyAgICBkb3VibGUgZmxleFNocmluayA9IHVuc2V0VmFsdWU7CisgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIGZsZXhCYXNpcyA9IG51bGxwdHI7CisKKyAgICBpZiAobV9yYW5nZS5wZWVrKCkuaWQoKSA9
PSBDU1NWYWx1ZU5vbmUpIHsKKyAgICAgICAgZmxleEdyb3cgPSAwOworICAgICAgICBmbGV4U2hy
aW5rID0gMDsKKyAgICAgICAgZmxleEJhc2lzID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlk
ZW50aWZpZXIoQ1NTVmFsdWVBdXRvKTsKKyAgICAgICAgbV9yYW5nZS5jb25zdW1lSW5jbHVkaW5n
V2hpdGVzcGFjZSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsK
KyAgICAgICAgd2hpbGUgKCFtX3JhbmdlLmF0RW5kKCkgJiYgaW5kZXgrKyA8IDMpIHsKKyAgICAg
ICAgICAgIGRvdWJsZSBudW07CisgICAgICAgICAgICBpZiAoY29uc3VtZU51bWJlclJhdyhtX3Jh
bmdlLCBudW0pKSB7CisgICAgICAgICAgICAgICAgaWYgKG51bSA8IDApCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoZmxleEdyb3cgPT0gdW5z
ZXRWYWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgZmxleEdyb3cgPSBudW07CisgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoZmxleFNocmluayA9PSB1bnNldFZhbHVlKQorICAgICAgICAgICAgICAg
ICAgICBmbGV4U2hyaW5rID0gbnVtOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFudW0pIC8v
IGZsZXggb25seSBhbGxvd3MgYSBiYXNpcyBvZiAwIChzYW5zIHVuaXRzKSBpZiBmbGV4LWdyb3cg
YW5kIGZsZXgtc2hyaW5rIHZhbHVlcyBoYXZlIGFscmVhZHkgYmVlbiBzZXQuCisgICAgICAgICAg
ICAgICAgICAgIGZsZXhCYXNpcyA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMCwgQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQaXhlbHMpOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfSBlbHNlIGlmICgh
ZmxleEJhc2lzKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fcmFuZ2UucGVlaygpLmlkKCkgPT0g
Q1NTVmFsdWVBdXRvKQorICAgICAgICAgICAgICAgICAgICBmbGV4QmFzaXMgPSBjb25zdW1lSWRl
bnQobV9yYW5nZSk7CisgICAgICAgICAgICAgICAgaWYgKCFmbGV4QmFzaXMpCisgICAgICAgICAg
ICAgICAgICAgIGZsZXhCYXNpcyA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQobV9yYW5nZSwgbV9j
b250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgICAgICAgICBp
ZiAoaW5kZXggPT0gMiAmJiAhbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGluZGV4
ID09IDApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChmbGV4R3JvdyA9
PSB1bnNldFZhbHVlKQorICAgICAgICAgICAgZmxleEdyb3cgPSAxOworICAgICAgICBpZiAoZmxl
eFNocmluayA9PSB1bnNldFZhbHVlKQorICAgICAgICAgICAgZmxleFNocmluayA9IDE7CisgICAg
ICAgIGlmICghZmxleEJhc2lzKQorICAgICAgICAgICAgZmxleEJhc2lzID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZSgwLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBlcmNlbnRhZ2Up
OworICAgIH0KKworICAgIGlmICghbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGbGV4R3JvdywgQ1NTUHJvcGVydHlGbGV4
LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShjbGFtcFRvPGZsb2F0PihmbGV4R3JvdyksIENT
U1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUZsZXhTaHJpbmssIENTU1Byb3BlcnR5RmxleCwgKkNTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGUoY2xhbXBUbzxmbG9hdD4oZmxleFNocmluayksIENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUZsZXhCYXNpcywgQ1NTUHJvcGVydHlGbGV4LCAqZmxleEJhc2lzLCBpbXBvcnRh
bnQpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25z
dW1lQm9yZGVyKGJvb2wgaW1wb3J0YW50KQoreworICAgIENTU1ZhbHVlKiB3aWR0aCA9IG51bGxw
dHI7CisgICAgY29uc3QgQ1NTVmFsdWUqIHN0eWxlID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSog
Y29sb3IgPSBudWxscHRyOworCisgICAgd2hpbGUgKCF3aWR0aCB8fCAhc3R5bGUgfHwgIWNvbG9y
KSB7CisgICAgICAgIGlmICghd2lkdGgpIHsKKyAgICAgICAgICAgIHdpZHRoID0gY29uc3VtZUxp
bmVXaWR0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQp
OworICAgICAgICAgICAgaWYgKHdpZHRoKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CisgICAgICAgIGlmICghc3R5bGUpIHsKKyAgICAgICAgICAgIHN0eWxlID0gcGFyc2VT
aW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXIp
OworICAgICAgICAgICAgaWYgKHN0eWxlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CisgICAgICAgIGlmICghY29sb3IpIHsKKyAgICAgICAgICAgIGNvbG9yID0gY29uc3Vt
ZUNvbG9yKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgICAgICAgICAgaWYgKGNvbG9y
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIGlmICghd2lkdGggJiYgIXN0eWxlICYmICFjb2xvcikKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKCF3aWR0aCkKKyAgICAgICAgd2lkdGggPSBDU1NJbml0aWFs
VmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCk7CisgICAgaWYgKCFzdHlsZSkKKyAgICAgICAg
c3R5bGUgPSBDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCk7CisgICAgaWYg
KCFjb2xvcikKKyAgICAgICAgY29sb3IgPSBDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUlt
cGxpY2l0KCk7CisKKyAgICBhZGRFeHBhbmRlZFByb3BlcnR5Rm9yVmFsdWUoQ1NTUHJvcGVydHlC
b3JkZXJXaWR0aCwgKndpZHRoLCBpbXBvcnRhbnQpOworICAgIGFkZEV4cGFuZGVkUHJvcGVydHlG
b3JWYWx1ZShDU1NQcm9wZXJ0eUJvcmRlclN0eWxlLCAqc3R5bGUsIGltcG9ydGFudCk7CisgICAg
YWRkRXhwYW5kZWRQcm9wZXJ0eUZvclZhbHVlKENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IsICpjb2xv
ciwgaW1wb3J0YW50KTsKKyAgICBhZGRFeHBhbmRlZFByb3BlcnR5Rm9yVmFsdWUoQ1NTUHJvcGVy
dHlCb3JkZXJJbWFnZSwgKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwg
aW1wb3J0YW50KTsKKworICAgIHJldHVybiBtX3JhbmdlLmF0RW5kKCk7Cit9CisKK2Jvb2wgQ1NT
UHJvcGVydHlQYXJzZXI6OmNvbnN1bWU0VmFsdWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhh
bmQmIHNob3J0aGFuZCwgYm9vbCBpbXBvcnRhbnQpCit7CisgICAgQVNTRVJUKHNob3J0aGFuZC5s
ZW5ndGgoKSA9PSA0KTsKKyAgICBjb25zdCBDU1NQcm9wZXJ0eUlEKiBsb25naGFuZHMgPSBzaG9y
dGhhbmQucHJvcGVydGllcygpOworICAgIGNvbnN0IENTU1ZhbHVlKiB0b3AgPSBwYXJzZVNpbmds
ZVZhbHVlKGxvbmdoYW5kc1swXSwgc2hvcnRoYW5kLmlkKCkpOworICAgIGlmICghdG9wKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCBDU1NWYWx1ZSogcmlnaHQgPSBwYXJzZVNp
bmdsZVZhbHVlKGxvbmdoYW5kc1sxXSwgc2hvcnRoYW5kLmlkKCkpOworICAgIGNvbnN0IENTU1Zh
bHVlKiBib3R0b20gPSBudWxscHRyOworICAgIGNvbnN0IENTU1ZhbHVlKiBsZWZ0ID0gbnVsbHB0
cjsKKyAgICBpZiAocmlnaHQpIHsKKyAgICAgICAgYm90dG9tID0gcGFyc2VTaW5nbGVWYWx1ZShs
b25naGFuZHNbMl0sIHNob3J0aGFuZC5pZCgpKTsKKyAgICAgICAgaWYgKGJvdHRvbSkKKyAgICAg
ICAgICAgIGxlZnQgPSBwYXJzZVNpbmdsZVZhbHVlKGxvbmdoYW5kc1szXSwgc2hvcnRoYW5kLmlk
KCkpOworICAgIH0KKworICAgIGlmICghcmlnaHQpCisgICAgICAgIHJpZ2h0ID0gdG9wOworICAg
IGlmICghYm90dG9tKQorICAgICAgICBib3R0b20gPSB0b3A7CisgICAgaWYgKCFsZWZ0KQorICAg
ICAgICBsZWZ0ID0gcmlnaHQ7CisKKyAgICBhZGRQcm9wZXJ0eShsb25naGFuZHNbMF0sIHNob3J0
aGFuZC5pZCgpLCAqdG9wLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KGxvbmdoYW5kc1sx
XSwgc2hvcnRoYW5kLmlkKCksICpyaWdodCwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShs
b25naGFuZHNbMl0sIHNob3J0aGFuZC5pZCgpLCAqYm90dG9tLCBpbXBvcnRhbnQpOworICAgIGFk
ZFByb3BlcnR5KGxvbmdoYW5kc1szXSwgc2hvcnRoYW5kLmlkKCksICpsZWZ0LCBpbXBvcnRhbnQp
OworCisgICAgcmV0dXJuIG1fcmFuZ2UuYXRFbmQoKTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBh
cnNlcjo6Y29uc3VtZUJvcmRlckltYWdlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGJvb2wgaW1w
b3J0YW50KQoreworICAgIENTU1ZhbHVlKiBzb3VyY2UgPSBudWxscHRyOworICAgIENTU1ZhbHVl
KiBzbGljZSA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIHdpZHRoID0gbnVsbHB0cjsKKyAgICBD
U1NWYWx1ZSogb3V0c2V0ID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogcmVwZWF0ID0gbnVsbHB0
cjsKKyAgICBpZiAoY29uc3VtZUJvcmRlckltYWdlQ29tcG9uZW50cyhwcm9wZXJ0eSwgbV9yYW5n
ZSwgbV9jb250ZXh0LCBzb3VyY2UsIHNsaWNlLCB3aWR0aCwgb3V0c2V0LCByZXBlYXQpKSB7Cisg
ICAgICAgIHN3aXRjaCAocHJvcGVydHkpIHsKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tCb3hJbWFnZToKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0
TWFza0JveEltYWdlU291cmNlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgc291cmNl
ID8gKnNvdXJjZSA6ICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGlt
cG9ydGFudCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tC
b3hJbWFnZVNsaWNlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgc2xpY2UgPyAqc2xp
Y2UgOiAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQp
OworICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VX
aWR0aCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2UsIHdpZHRoID8gKndpZHRoIDogKkNT
U0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICAg
ICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlT3V0c2V0LCBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgb3V0c2V0ID8gKm91dHNldCA6ICpDU1NJbml0
aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7CisgICAgICAgICAg
ICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVJlcGVhdCwgQ1NTUHJv
cGVydHlXZWJraXRNYXNrQm94SW1hZ2UsIHJlcGVhdCA/ICpyZXBlYXQgOiAqQ1NTSW5pdGlhbFZh
bHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZToKKyAgICAgICAg
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VTb3VyY2UsIENTU1Byb3BlcnR5
Qm9yZGVySW1hZ2UsIHNvdXJjZSA/ICpzb3VyY2UgOiAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVM
ZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NT
UHJvcGVydHlCb3JkZXJJbWFnZVNsaWNlLCBDU1NQcm9wZXJ0eUJvcmRlckltYWdlLCBzbGljZSA/
ICpzbGljZSA6ICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9y
dGFudCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckltYWdlV2lk
dGgsIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2UsIHdpZHRoID8gKndpZHRoIDogKkNTU0luaXRpYWxW
YWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgIGFk
ZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VPdXRzZXQsIENTU1Byb3BlcnR5Qm9yZGVy
SW1hZ2UsIG91dHNldCA/ICpvdXRzZXQgOiAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJ
bXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVy
dHlCb3JkZXJJbWFnZVJlcGVhdCwgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZSwgcmVwZWF0ID8gKnJl
cGVhdCA6ICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFu
dCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGlubGluZSBDU1NW
YWx1ZUlEIG1hcEZyb21QYWdlQnJlYWtCZXR3ZWVuKENTU1ZhbHVlSUQgdmFsdWUpCit7CisgICAg
aWYgKHZhbHVlID09IENTU1ZhbHVlQWx3YXlzKQorICAgICAgICByZXR1cm4gQ1NTVmFsdWVQYWdl
OworICAgIGlmICh2YWx1ZSA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWUgPT0gQ1NTVmFsdWVBdm9p
ZCB8fCB2YWx1ZSA9PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWUgPT0gQ1NTVmFsdWVSaWdodCkKKyAg
ICAgICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBDU1NWYWx1ZUludmFsaWQ7Cit9CisKK3N0
YXRpYyBpbmxpbmUgQ1NTVmFsdWVJRCBtYXBGcm9tQ29sdW1uQnJlYWtCZXR3ZWVuKENTU1ZhbHVl
SUQgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlID09IENTU1ZhbHVlQWx3YXlzKQorICAgICAgICBy
ZXR1cm4gQ1NTVmFsdWVDb2x1bW47CisgICAgaWYgKHZhbHVlID09IENTU1ZhbHVlQXV0byB8fCB2
YWx1ZSA9PSBDU1NWYWx1ZUF2b2lkKQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgcmV0dXJu
IENTU1ZhbHVlSW52YWxpZDsKK30KKworc3RhdGljIGlubGluZSBDU1NWYWx1ZUlEIG1hcEZyb21D
b2x1bW5PclBhZ2VCcmVha0luc2lkZShDU1NWYWx1ZUlEIHZhbHVlKQoreworICAgIGlmICh2YWx1
ZSA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWUgPT0gQ1NTVmFsdWVBdm9pZCkKKyAgICAgICAgcmV0
dXJuIHZhbHVlOworICAgIHJldHVybiBDU1NWYWx1ZUludmFsaWQ7Cit9CisKK3N0YXRpYyBpbmxp
bmUgQ1NTUHJvcGVydHlJRCBtYXBGcm9tTGVnYWN5QnJlYWtQcm9wZXJ0eShDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5KQoreworICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0Fm
dGVyIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtBZnRlcikKKyAg
ICAgICAgcmV0dXJuIENTU1Byb3BlcnR5QnJlYWtBZnRlcjsKKyAgICBpZiAocHJvcGVydHkgPT0g
Q1NTUHJvcGVydHlQYWdlQnJlYWtCZWZvcmUgfHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJr
aXRDb2x1bW5CcmVha0JlZm9yZSkKKyAgICAgICAgcmV0dXJuIENTU1Byb3BlcnR5QnJlYWtCZWZv
cmU7CisgICAgQVNTRVJUKHByb3BlcnR5ID09IENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlIHx8
IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGUpOworICAgIHJl
dHVybiBDU1NQcm9wZXJ0eUJyZWFrSW5zaWRlOworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2Vy
Ojpjb25zdW1lTGVnYWN5QnJlYWtQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBib29s
IGltcG9ydGFudCkKK3sKKyAgICAvLyBUaGUgZnJhZ21lbnRhdGlvbiBzcGVjIHNheXMgdGhhdCBw
YWdlLWJyZWFrLShhZnRlcnxiZWZvcmV8aW5zaWRlKSBhcmUgdG8gYmUgdHJlYXRlZCBhcworICAg
IC8vIHNob3J0aGFuZHMgZm9yIHRoZWlyIGJyZWFrLShhZnRlcnxiZWZvcmV8aW5zaWRlKSBjb3Vu
dGVycGFydHMuIFdlJ2xsIGRvIHRoZSBzYW1lIGZvciB0aGUKKyAgICAvLyBub24tc3RhbmRhcmQg
cHJvcGVydGllcyAtd2Via2l0LWNvbHVtbi1icmVhay0oYWZ0ZXJ8YmVmb3JlfGluc2lkZSkuCisg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGtleXdvcmQgPSBjb25zdW1lSWRlbnQobV9yYW5nZSk7Cisg
ICAgaWYgKCFrZXl3b3JkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX3Jhbmdl
LmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBDU1NWYWx1ZUlEIHZhbHVlID0g
a2V5d29yZC0+Z2V0VmFsdWVJRCgpOworICAgIHN3aXRjaCAocHJvcGVydHkpIHsKKyAgICBjYXNl
IENTU1Byb3BlcnR5UGFnZUJyZWFrQWZ0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVh
a0JlZm9yZToKKyAgICAgICAgdmFsdWUgPSBtYXBGcm9tUGFnZUJyZWFrQmV0d2Vlbih2YWx1ZSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0Fm
dGVyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0JlZm9yZToKKyAgICAg
ICAgdmFsdWUgPSBtYXBGcm9tQ29sdW1uQnJlYWtCZXR3ZWVuKHZhbHVlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0luc2lkZToKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGU6CisgICAgICAgIHZhbHVlID0gbWFwRnJvbUNv
bHVtbk9yUGFnZUJyZWFrSW5zaWRlKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIGlmICh2YWx1ZSA9
PSBDU1NWYWx1ZUludmFsaWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENTU1Byb3Bl
cnR5SUQgZ2VuZXJpY0JyZWFrUHJvcGVydHkgPSBtYXBGcm9tTGVnYWN5QnJlYWtQcm9wZXJ0eShw
cm9wZXJ0eSk7CisgICAgYWRkUHJvcGVydHkoZ2VuZXJpY0JyZWFrUHJvcGVydHksIHByb3BlcnR5
LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIodmFsdWUpLCBpbXBvcnRhbnQp
OworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBjb25zdW1lQmFja2dyb3VuZFBv
c2l0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0
JiBjb250ZXh0LCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzLCBDU1NWYWx1ZSomIHJlc3VsdFgsIENT
U1ZhbHVlKiYgcmVzdWx0WSkKK3sKKyAgICBkbyB7CisgICAgICAgIENTU1ZhbHVlKiBwb3NpdGlv
blggPSBudWxscHRyOworICAgICAgICBDU1NWYWx1ZSogcG9zaXRpb25ZID0gbnVsbHB0cjsKKyAg
ICAgICAgaWYgKCFjb25zdW1lUG9zaXRpb24ocmFuZ2UsIGNvbnRleHQubW9kZSgpLCB1bml0bGVz
cywgcG9zaXRpb25YLCBwb3NpdGlvblkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBhZGRCYWNrZ3JvdW5kVmFsdWUocmVzdWx0WCwgcG9zaXRpb25YKTsKKyAgICAgICAgYWRk
QmFja2dyb3VuZFZhbHVlKHJlc3VsdFksIHBvc2l0aW9uWSk7CisgICAgfSB3aGlsZSAoY29uc3Vt
ZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpOworICAgIHJldHVybiB0cnVlOworfQor
CitzdGF0aWMgYm9vbCBjb25zdW1lUmVwZWF0U3R5bGVDb21wb25lbnQoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIENTU1ZhbHVlKiYgdmFsdWUxLCBDU1NWYWx1ZSomIHZhbHVlMiwgYm9vbCYg
aW1wbGljaXQpCit7CisgICAgaWYgKGNvbnN1bWVJZGVudDxDU1NWYWx1ZVJlcGVhdFg+KHJhbmdl
KSkgeworICAgICAgICB2YWx1ZTEgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmll
cihDU1NWYWx1ZVJlcGVhdCk7CisgICAgICAgIHZhbHVlMiA9IENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9SZXBlYXQpOworICAgICAgICBpbXBsaWNpdCA9IHRy
dWU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoY29uc3VtZUlkZW50PENT
U1ZhbHVlUmVwZWF0WT4ocmFuZ2UpKSB7CisgICAgICAgIHZhbHVlMSA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9SZXBlYXQpOworICAgICAgICB2YWx1ZTIg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVJlcGVhdCk7Cisg
ICAgICAgIGltcGxpY2l0ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IHZhbHVlMSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZVJlcGVhdCwgQ1NTVmFsdWVOb1JlcGVhdCwg
Q1NTVmFsdWVSb3VuZCwgQ1NTVmFsdWVTcGFjZT4ocmFuZ2UpOworICAgIGlmICghdmFsdWUxKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2YWx1ZTIgPSBjb25zdW1lSWRlbnQ8Q1NTVmFs
dWVSZXBlYXQsIENTU1ZhbHVlTm9SZXBlYXQsIENTU1ZhbHVlUm91bmQsIENTU1ZhbHVlU3BhY2U+
KHJhbmdlKTsKKyAgICBpZiAoIXZhbHVlMikgeworICAgICAgICB2YWx1ZTIgPSB2YWx1ZTE7Cisg
ICAgICAgIGltcGxpY2l0ID0gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0
YXRpYyBib29sIGNvbnN1bWVSZXBlYXRTdHlsZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Q1NTVmFsdWUqJiByZXN1bHRYLCBDU1NWYWx1ZSomIHJlc3VsdFksIGJvb2wmIGltcGxpY2l0KQor
eworICAgIGRvIHsKKyAgICAgICAgQ1NTVmFsdWUqIHJlcGVhdFggPSBudWxscHRyOworICAgICAg
ICBDU1NWYWx1ZSogcmVwZWF0WSA9IG51bGxwdHI7CisgICAgICAgIGlmICghY29uc3VtZVJlcGVh
dFN0eWxlQ29tcG9uZW50KHJhbmdlLCByZXBlYXRYLCByZXBlYXRZLCBpbXBsaWNpdCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFkZEJhY2tncm91bmRWYWx1ZShyZXN1bHRY
LCByZXBlYXRYKTsKKyAgICAgICAgYWRkQmFja2dyb3VuZFZhbHVlKHJlc3VsdFksIHJlcGVhdFkp
OworICAgIH0gd2hpbGUgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gTm90ZTogY29uc3VtZUJhY2tncm91bmRTaG9ydGhh
bmQgYXNzdW1lcyB5IHByb3BlcnRpZXMgKGZvciBleGFtcGxlIGJhY2tncm91bmQtcG9zaXRpb24t
eSkgZm9sbG93CisvLyB0aGUgeCBwcm9wZXJ0aWVzIGluIHRoZSBzaG9ydGhhbmQgYXJyYXkuCiti
b29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lQmFja2dyb3VuZFNob3J0aGFuZChjb25zdCBT
dHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQsIGJvb2wgaW1wb3J0YW50KQoreworICAg
IGNvbnN0IHVuc2lnbmVkIGxvbmdoYW5kQ291bnQgPSBzaG9ydGhhbmQubGVuZ3RoKCk7CisgICAg
Q1NTVmFsdWUqIGxvbmdoYW5kc1sxMF0gPSB7IDAgfTsKKyAgICBBU1NFUlQobG9uZ2hhbmRDb3Vu
dCA8PSAxMCk7CisKKyAgICBib29sIGltcGxpY2l0ID0gZmFsc2U7CisgICAgZG8geworICAgICAg
ICBib29sIHBhcnNlZExvbmdoYW5kWzEwXSA9IHsgZmFsc2UgfTsKKyAgICAgICAgQ1NTVmFsdWUq
IG9yaWdpblZhbHVlID0gbnVsbHB0cjsKKyAgICAgICAgZG8geworICAgICAgICAgICAgYm9vbCBm
b3VuZFByb3BlcnR5ID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGxvbmdoYW5kQ291bnQ7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChwYXJzZWRMb25naGFu
ZFtpXSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBD
U1NWYWx1ZSogdmFsdWUgPSBudWxscHRyOworICAgICAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1
ZVkgPSBudWxscHRyOworICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHkgPSBz
aG9ydGhhbmQucHJvcGVydGllcygpW2ldOworICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eSA9
PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5
V2Via2l0TWFza1JlcGVhdFgpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3VtZVJlcGVhdFN0
eWxlQ29tcG9uZW50KG1fcmFuZ2UsIHZhbHVlLCB2YWx1ZVksIGltcGxpY2l0KTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0
aW9uWCB8fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSBtX3Jhbmdl
OworICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWVQb3NpdGlvbihyYW5nZUNvcHksIG1f
Y29udGV4dC5tb2RlKCksIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgdmFsdWUsIHZhbHVlWSkpCisg
ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgbV9y
YW5nZSA9IHJhbmdlQ29weTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5ID09
IENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUgfHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJr
aXRNYXNrU2l6ZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWVTbGFzaEluY2x1
ZGluZ1doaXRlc3BhY2UobV9yYW5nZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBjb25zdW1lQmFja2dyb3VuZFNpemUocHJv
cGVydHksIG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoIXZhbHVlIHx8ICFwYXJzZWRMb25naGFuZFtpIC0gMV0pIC8vIFBvc2l0aW9uIG11c3QgaGF2
ZSBiZWVuIHBhcnNlZCBpbiB0aGUgY3VycmVudCBsYXllci4KKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5ID09
IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSB8fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRSZXBlYXRZCisgICAgICAgICAgICAgICAgICAgIHx8IHByb3BlcnR5ID09IENT
U1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSB8fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tSZXBlYXRZKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gY29uc3VtZUJh
Y2tncm91bmRDb21wb25lbnQocHJvcGVydHksIG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luIHx8IHByb3Bl
cnR5ID09IENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbikKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG9yaWdpblZhbHVlID0gdmFsdWU7CisgICAgICAgICAgICAgICAgICAgIHBhcnNlZExvbmdo
YW5kW2ldID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgZm91bmRQcm9wZXJ0eSA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgIGFkZEJhY2tncm91bmRWYWx1ZShsb25naGFuZHNbaV0sIHZh
bHVlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlWSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgcGFyc2VkTG9uZ2hhbmRbaSArIDFdID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGFkZEJhY2tncm91bmRWYWx1ZShsb25naGFuZHNbaSArIDFdLCB2YWx1ZVkpOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKCFmb3VuZFByb3BlcnR5KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfSB3aGlsZSAoIW1fcmFuZ2UuYXRFbmQoKSAmJiBtX3JhbmdlLnBlZWsoKS50
eXBlKCkgIT0gQ29tbWFUb2tlbik7CisKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgd2lsbCBtYWtl
IGludmFsaWQgbG9uZ2hhbmRzLCBzZWUgY3JidWcuY29tLzM4NjQ1OQorICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGxvbmdoYW5kQ291bnQ7ICsraSkgeworICAgICAgICAgICAgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eSA9IHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV07CisgICAgICAgICAg
ICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IgJiYgIW1fcmFuZ2Uu
YXRFbmQoKSkgeworICAgICAgICAgICAgICAgIGlmIChwYXJzZWRMb25naGFuZFtpXSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBDb2xvcnMgYXJlIG9ubHkgYWxsb3dlZCBp
biB0aGUgbGFzdCBsYXllci4KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmICgocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xp
cCB8fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwKSAmJiAhcGFyc2VkTG9u
Z2hhbmRbaV0gJiYgb3JpZ2luVmFsdWUpIHsKKyAgICAgICAgICAgICAgICBhZGRCYWNrZ3JvdW5k
VmFsdWUobG9uZ2hhbmRzW2ldLCBvcmlnaW5WYWx1ZSk7CisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIXBhcnNlZExvbmdoYW5kW2ldKQor
ICAgICAgICAgICAgICAgIGFkZEJhY2tncm91bmRWYWx1ZShsb25naGFuZHNbaV0sIENTU0luaXRp
YWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSk7CisgICAgICAgIH0KKyAgICB9IHdoaWxl
IChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKG1fcmFuZ2UpKTsKKyAgICBpZiAoIW1f
cmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsb25naGFuZENvdW50OyArK2kpIHsKKyAgICAgICAgQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eSA9IHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV07CisgICAgICAgIGlmIChwcm9wZXJ0
eSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplICYmIGxvbmdoYW5kc1tpXSAmJiBtX2NvbnRl
eHQudXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvcigpKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnR5LCBzaG9ydGhhbmQuaWQo
KSwgKmxvbmdoYW5kc1tpXSwgaW1wb3J0YW50LCBpbXBsaWNpdCk7CisgICAgfQorICAgIHJldHVy
biB0cnVlOworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lR3JpZEl0ZW1Qb3Np
dGlvblNob3J0aGFuZChDU1NQcm9wZXJ0eUlEIHNob3J0aGFuZElkLCBib29sIGltcG9ydGFudCkK
K3sKKyAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzR3JpZExheW91dEVuYWJs
ZWQoKSk7CisgICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kID0gc2hv
cnRoYW5kRm9yUHJvcGVydHkoc2hvcnRoYW5kSWQpOworICAgIEFTU0VSVChzaG9ydGhhbmQubGVu
Z3RoKCkgPT0gMik7CisgICAgQ1NTVmFsdWUqIHN0YXJ0VmFsdWUgPSBjb25zdW1lR3JpZExpbmUo
bV9yYW5nZSk7CisgICAgaWYgKCFzdGFydFZhbHVlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBDU1NWYWx1ZSogZW5kVmFsdWUgPSBudWxscHRyOworICAgIGlmIChjb25zdW1lU2xhc2hJ
bmNsdWRpbmdXaGl0ZXNwYWNlKG1fcmFuZ2UpKSB7CisgICAgICAgIGVuZFZhbHVlID0gY29uc3Vt
ZUdyaWRMaW5lKG1fcmFuZ2UpOworICAgICAgICBpZiAoIWVuZFZhbHVlKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICAgIGVuZFZhbHVlID0gc3RhcnRWYWx1
ZS0+aXNDdXN0b21JZGVudFZhbHVlKCkgPyBzdGFydFZhbHVlIDogQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVBdXRvKTsKKyAgICB9CisgICAgaWYgKCFtX3Jhbmdl
LmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZGRQcm9wZXJ0eShzaG9ydGhh
bmQucHJvcGVydGllcygpWzBdLCBzaG9ydGhhbmRJZCwgKnN0YXJ0VmFsdWUsIGltcG9ydGFudCk7
CisgICAgYWRkUHJvcGVydHkoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVsxXSwgc2hvcnRoYW5kSWQs
ICplbmRWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NQ
cm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUdyaWRBcmVhU2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KQor
eworICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NHcmlkTGF5b3V0RW5hYmxl
ZCgpKTsKKyAgICBBU1NFUlQoZ3JpZEFyZWFTaG9ydGhhbmQoKS5sZW5ndGgoKSA9PSA0KTsKKyAg
ICBDU1NWYWx1ZSogcm93U3RhcnRWYWx1ZSA9IGNvbnN1bWVHcmlkTGluZShtX3JhbmdlKTsKKyAg
ICBpZiAoIXJvd1N0YXJ0VmFsdWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBDU1NWYWx1
ZSogY29sdW1uU3RhcnRWYWx1ZSA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIHJvd0VuZFZhbHVl
ID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogY29sdW1uRW5kVmFsdWUgPSBudWxscHRyOworICAg
IGlmIChjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKG1fcmFuZ2UpKSB7CisgICAgICAg
IGNvbHVtblN0YXJ0VmFsdWUgPSBjb25zdW1lR3JpZExpbmUobV9yYW5nZSk7CisgICAgICAgIGlm
ICghY29sdW1uU3RhcnRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
aWYgKGNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UobV9yYW5nZSkpIHsKKyAgICAgICAg
ICAgIHJvd0VuZFZhbHVlID0gY29uc3VtZUdyaWRMaW5lKG1fcmFuZ2UpOworICAgICAgICAgICAg
aWYgKCFyb3dFbmRWYWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICBpZiAoY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShtX3JhbmdlKSkgeworICAg
ICAgICAgICAgICAgIGNvbHVtbkVuZFZhbHVlID0gY29uc3VtZUdyaWRMaW5lKG1fcmFuZ2UpOwor
ICAgICAgICAgICAgICAgIGlmICghY29sdW1uRW5kVmFsdWUpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAo
IW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY29sdW1u
U3RhcnRWYWx1ZSkKKyAgICAgICAgY29sdW1uU3RhcnRWYWx1ZSA9IHJvd1N0YXJ0VmFsdWUtPmlz
Q3VzdG9tSWRlbnRWYWx1ZSgpID8gcm93U3RhcnRWYWx1ZSA6IENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlQXV0byk7CisgICAgaWYgKCFyb3dFbmRWYWx1ZSkKKyAg
ICAgICAgcm93RW5kVmFsdWUgPSByb3dTdGFydFZhbHVlLT5pc0N1c3RvbUlkZW50VmFsdWUoKSA/
IHJvd1N0YXJ0VmFsdWUgOiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NW
YWx1ZUF1dG8pOworICAgIGlmICghY29sdW1uRW5kVmFsdWUpCisgICAgICAgIGNvbHVtbkVuZFZh
bHVlID0gY29sdW1uU3RhcnRWYWx1ZS0+aXNDdXN0b21JZGVudFZhbHVlKCkgPyBjb2x1bW5TdGFy
dFZhbHVlIDogQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVBdXRv
KTsKKworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFJvd1N0YXJ0LCBDU1NQcm9wZXJ0
eUdyaWRBcmVhLCAqcm93U3RhcnRWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUdyaWRDb2x1bW5TdGFydCwgQ1NTUHJvcGVydHlHcmlkQXJlYSwgKmNvbHVtblN0
YXJ0VmFsdWUsIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkUm93
RW5kLCBDU1NQcm9wZXJ0eUdyaWRBcmVhLCAqcm93RW5kVmFsdWUsIGltcG9ydGFudCk7CisgICAg
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkQ29sdW1uRW5kLCBDU1NQcm9wZXJ0eUdyaWRBcmVh
LCAqY29sdW1uRW5kVmFsdWUsIGltcG9ydGFudCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVHcmlkVGVtcGxhdGVSb3dzQW5kQXJlYXNBbmRD
b2x1bW5zKENTU1Byb3BlcnR5SUQgc2hvcnRoYW5kSWQsIGJvb2wgaW1wb3J0YW50KQoreworICAg
IE5hbWVkR3JpZEFyZWFNYXAgZ3JpZEFyZWFNYXA7CisgICAgc2l6ZV90IHJvd0NvdW50ID0gMDsK
KyAgICBzaXplX3QgY29sdW1uQ291bnQgPSAwOworICAgIENTU1ZhbHVlTGlzdCogdGVtcGxhdGVS
b3dzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworCisgICAgLy8gUGVy
c2lzdHMgYmV0d2VlbiBsb29wIGl0ZXJhdGlvbnMgc28gd2UgY2FuIHVzZSB0aGUgc2FtZSB2YWx1
ZSBmb3IKKyAgICAvLyBjb25zZWN1dGl2ZSA8bGluZS1uYW1lcz4gdmFsdWVzCisgICAgQ1NTR3Jp
ZExpbmVOYW1lc1ZhbHVlKiBsaW5lTmFtZXMgPSBudWxscHRyOworCisgICAgZG8geworICAgICAg
ICAvLyBIYW5kbGUgbGVhZGluZyA8Y3VzdG9tLWlkZW50PiouCisgICAgICAgIGJvb2wgaGFzUHJl
dmlvdXNMaW5lTmFtZXMgPSBsaW5lTmFtZXM7CisgICAgICAgIGxpbmVOYW1lcyA9IGNvbnN1bWVH
cmlkTGluZU5hbWVzKG1fcmFuZ2UsIGxpbmVOYW1lcyk7CisgICAgICAgIGlmIChsaW5lTmFtZXMg
JiYgIWhhc1ByZXZpb3VzTGluZU5hbWVzKQorICAgICAgICAgICAgdGVtcGxhdGVSb3dzLT5hcHBl
bmQoKmxpbmVOYW1lcyk7CisKKyAgICAgICAgLy8gSGFuZGxlIGEgdGVtcGxhdGUtYXJlYSdzIHJv
dy4KKyAgICAgICAgaWYgKG1fcmFuZ2UucGVlaygpLnR5cGUoKSAhPSBTdHJpbmdUb2tlbiB8fCAh
cGFyc2VHcmlkVGVtcGxhdGVBcmVhc1JvdyhtX3JhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNw
YWNlKCkudmFsdWUoKS50b1N0cmluZygpLCBncmlkQXJlYU1hcCwgcm93Q291bnQsIGNvbHVtbkNv
dW50KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgKytyb3dDb3VudDsKKwor
ICAgICAgICAvLyBIYW5kbGUgdGVtcGxhdGUtcm93cydzIHRyYWNrLXNpemUuCisgICAgICAgIENT
U1ZhbHVlKiB2YWx1ZSA9IGNvbnN1bWVHcmlkVHJhY2tTaXplKG1fcmFuZ2UsIG1fY29udGV4dC5t
b2RlKCkpOworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgdmFsdWUgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUF1dG8pOworICAgICAgICB0ZW1w
bGF0ZVJvd3MtPmFwcGVuZCgqdmFsdWUpOworCisgICAgICAgIC8vIFRoaXMgd2lsbCBoYW5kbGUg
dGhlIHRyYWlsaW5nL2xlYWRpbmcgPGN1c3RvbS1pZGVudD4qIGluIHRoZSBncmFtbWFyLgorICAg
ICAgICBsaW5lTmFtZXMgPSBjb25zdW1lR3JpZExpbmVOYW1lcyhtX3JhbmdlKTsKKyAgICAgICAg
aWYgKGxpbmVOYW1lcykKKyAgICAgICAgICAgIHRlbXBsYXRlUm93cy0+YXBwZW5kKCpsaW5lTmFt
ZXMpOworICAgIH0gd2hpbGUgKCFtX3JhbmdlLmF0RW5kKCkgJiYgIShtX3JhbmdlLnBlZWsoKS50
eXBlKCkgPT0gRGVsaW1pdGVyVG9rZW4gJiYgbV9yYW5nZS5wZWVrKCkuZGVsaW1pdGVyKCkgPT0g
Jy8nKSk7CisKKyAgICBDU1NWYWx1ZSogY29sdW1uc1ZhbHVlID0gbnVsbHB0cjsKKyAgICBpZiAo
IW1fcmFuZ2UuYXRFbmQoKSkgeworICAgICAgICBpZiAoIWNvbnN1bWVTbGFzaEluY2x1ZGluZ1do
aXRlc3BhY2UobV9yYW5nZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNv
bHVtbnNWYWx1ZSA9IGNvbnN1bWVHcmlkVHJhY2tMaXN0KG1fcmFuZ2UsIG1fY29udGV4dC5tb2Rl
KCksIEdyaWRUZW1wbGF0ZU5vUmVwZWF0KTsKKyAgICAgICAgaWYgKCFjb2x1bW5zVmFsdWUgfHwg
IW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBjb2x1bW5zVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRp
ZmllcihDU1NWYWx1ZU5vbmUpOworICAgIH0KKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdy
aWRUZW1wbGF0ZVJvd3MsIHNob3J0aGFuZElkLCAqdGVtcGxhdGVSb3dzLCBpbXBvcnRhbnQpOwor
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQ29sdW1ucywgc2hvcnRoYW5k
SWQsICpjb2x1bW5zVmFsdWUsIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVy
dHlHcmlkVGVtcGxhdGVBcmVhcywgc2hvcnRoYW5kSWQsICpDU1NHcmlkVGVtcGxhdGVBcmVhc1Zh
bHVlOjpjcmVhdGUoZ3JpZEFyZWFNYXAsIHJvd0NvdW50LCBjb2x1bW5Db3VudCksIGltcG9ydGFu
dCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1
bWVHcmlkVGVtcGxhdGVTaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCBzaG9ydGhhbmRJZCwgYm9vbCBp
bXBvcnRhbnQpCit7CisgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRM
YXlvdXRFbmFibGVkKCkpOworICAgIEFTU0VSVChncmlkVGVtcGxhdGVTaG9ydGhhbmQoKS5sZW5n
dGgoKSA9PSAzKTsKKworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2VDb3B5ID0gbV9yYW5n
ZTsKKyAgICBDU1NWYWx1ZSogcm93c1ZhbHVlID0gY29uc3VtZUlkZW50PENTU1ZhbHVlTm9uZT4o
bV9yYW5nZSk7CisKKyAgICAvLyAxLSAnbm9uZScgY2FzZS4KKyAgICBpZiAocm93c1ZhbHVlICYm
IG1fcmFuZ2UuYXRFbmQoKSkgeworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRU
ZW1wbGF0ZVJvd3MsIHNob3J0aGFuZElkLCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50
aWZpZXIoQ1NTVmFsdWVOb25lKSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NT
UHJvcGVydHlHcmlkVGVtcGxhdGVDb2x1bW5zLCBzaG9ydGhhbmRJZCwgKkNTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSksIGltcG9ydGFudCk7CisgICAgICAg
IGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQXJlYXMsIHNob3J0aGFuZElkLCAq
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKSwgaW1wb3J0
YW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gMi0gPGdyaWQtdGVt
cGxhdGUtcm93cz4gLyA8Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zPgorICAgIGlmICghcm93c1ZhbHVl
KQorICAgICAgICByb3dzVmFsdWUgPSBjb25zdW1lR3JpZFRyYWNrTGlzdChtX3JhbmdlLCBtX2Nv
bnRleHQubW9kZSgpLCBHcmlkVGVtcGxhdGUpOworCisgICAgaWYgKHJvd3NWYWx1ZSkgeworICAg
ICAgICBpZiAoIWNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UobV9yYW5nZSkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIENTU1ZhbHVlKiBjb2x1bW5zVmFsdWUgPSBj
b25zdW1lR3JpZFRlbXBsYXRlc1Jvd3NPckNvbHVtbnMobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUo
KSk7CisgICAgICAgIGlmICghY29sdW1uc1ZhbHVlIHx8ICFtX3JhbmdlLmF0RW5kKCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlH
cmlkVGVtcGxhdGVSb3dzLCBzaG9ydGhhbmRJZCwgKnJvd3NWYWx1ZSwgaW1wb3J0YW50KTsKKyAg
ICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVDb2x1bW5zLCBzaG9ydGhh
bmRJZCwgKmNvbHVtbnNWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NT
UHJvcGVydHlHcmlkVGVtcGxhdGVBcmVhcywgc2hvcnRoYW5kSWQsICpDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpLCBpbXBvcnRhbnQpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyAzLSBbIDxsaW5lLW5hbWVzPj8gPHN0cmluZz4g
PHRyYWNrLXNpemU+PyA8bGluZS1uYW1lcz4/IF0rIFsgLyA8dHJhY2stbGlzdD4gXT8KKyAgICBt
X3JhbmdlID0gcmFuZ2VDb3B5OworICAgIHJldHVybiBjb25zdW1lR3JpZFRlbXBsYXRlUm93c0Fu
ZEFyZWFzQW5kQ29sdW1ucyhzaG9ydGhhbmRJZCwgaW1wb3J0YW50KTsKK30KKworYm9vbCBDU1NQ
cm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUdyaWRTaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpCit7Cisg
ICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkp
OworICAgIEFTU0VSVChzaG9ydGhhbmRGb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWQpLmxlbmd0
aCgpID09IDgpOworCisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSBtX3Jhbmdl
OworCisgICAgLy8gMS0gPGdyaWQtdGVtcGxhdGU+CisgICAgaWYgKGNvbnN1bWVHcmlkVGVtcGxh
dGVTaG9ydGhhbmQoQ1NTUHJvcGVydHlHcmlkLCBpbXBvcnRhbnQpKSB7CisgICAgICAgIC8vIEl0
IGNhbiBvbmx5IGJlIHNwZWNpZmllZCB0aGUgZXhwbGljaXQgb3IgdGhlIGltcGxpY2l0IGdyaWQg
cHJvcGVydGllcyBpbiBhIHNpbmdsZSBncmlkIGRlY2xhcmF0aW9uLgorICAgICAgICAvLyBUaGUg
c3ViLXByb3BlcnRpZXMgbm90IHNwZWNpZmllZCBhcmUgc2V0IHRvIHRoZWlyIGluaXRpYWwgdmFs
dWUsIGFzIG5vcm1hbCBmb3Igc2hvcnRoYW5kcy4KKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJv
cGVydHlHcmlkQXV0b0Zsb3csIENTU1Byb3BlcnR5R3JpZCwgKkNTU0luaXRpYWxWYWx1ZTo6Y3Jl
YXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NT
UHJvcGVydHlHcmlkQXV0b0NvbHVtbnMsIENTU1Byb3BlcnR5R3JpZCwgKkNTU0luaXRpYWxWYWx1
ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVy
dHkoQ1NTUHJvcGVydHlHcmlkQXV0b1Jvd3MsIENTU1Byb3BlcnR5R3JpZCwgKkNTU0luaXRpYWxW
YWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJv
cGVydHkoQ1NTUHJvcGVydHlHcmlkQ29sdW1uR2FwLCBDU1NQcm9wZXJ0eUdyaWQsICpDU1NJbml0
aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7CisgICAgICAgIGFk
ZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFJvd0dhcCwgQ1NTUHJvcGVydHlHcmlkLCAqQ1NTSW5p
dGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBtX3JhbmdlID0gcmFuZ2VDb3B5OworCisgICAgLy8g
Mi0gPGdyaWQtYXV0by1mbG93PiBbIDxncmlkLWF1dG8tcm93cz4gWyAvIDxncmlkLWF1dG8tY29s
dW1ucz4gXT8gXQorICAgIENTU1ZhbHVlTGlzdCogZ3JpZEF1dG9GbG93ID0gY29uc3VtZUdyaWRB
dXRvRmxvdyhtX3JhbmdlKTsKKyAgICBpZiAoIWdyaWRBdXRvRmxvdykKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgQ1NTVmFsdWUqIGF1dG9Db2x1bW5zVmFsdWUgPSBudWxscHRyOworICAg
IENTU1ZhbHVlKiBhdXRvUm93c1ZhbHVlID0gbnVsbHB0cjsKKworICAgIGlmICghbV9yYW5nZS5h
dEVuZCgpKSB7CisgICAgICAgIGF1dG9Sb3dzVmFsdWUgPSBjb25zdW1lR3JpZFRyYWNrTGlzdCht
X3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBHcmlkQXV0byk7CisgICAgICAgIGlmICghYXV0b1Jv
d3NWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGNvbnN1bWVT
bGFzaEluY2x1ZGluZ1doaXRlc3BhY2UobV9yYW5nZSkpIHsKKyAgICAgICAgICAgIGF1dG9Db2x1
bW5zVmFsdWUgPSBjb25zdW1lR3JpZFRyYWNrTGlzdChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgp
LCBHcmlkQXV0byk7CisgICAgICAgICAgICBpZiAoIWF1dG9Db2x1bW5zVmFsdWUpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmICghbV9yYW5nZS5h
dEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICAg
IC8vIE90aGVyIG9taXR0ZWQgdmFsdWVzIGFyZSBzZXQgdG8gdGhlaXIgaW5pdGlhbCB2YWx1ZXMu
CisgICAgICAgIGF1dG9Db2x1bW5zVmFsdWUgPSBDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2Fj
eUltcGxpY2l0KCk7CisgICAgICAgIGF1dG9Sb3dzVmFsdWUgPSBDU1NJbml0aWFsVmFsdWU6OmNy
ZWF0ZUxlZ2FjeUltcGxpY2l0KCk7CisgICAgfQorCisgICAgLy8gaWYgPGdyaWQtYXV0by1jb2x1
bW5zPiB2YWx1ZSBpcyBvbWl0dGVkLCBpdCBpcyBzZXQgdG8gdGhlIHZhbHVlIHNwZWNpZmllZCBm
b3IgZ3JpZC1hdXRvLXJvd3MuCisgICAgaWYgKCFhdXRvQ29sdW1uc1ZhbHVlKQorICAgICAgICBh
dXRvQ29sdW1uc1ZhbHVlID0gYXV0b1Jvd3NWYWx1ZTsKKworICAgIC8vIEl0IGNhbiBvbmx5IGJl
IHNwZWNpZmllZCB0aGUgZXhwbGljaXQgb3IgdGhlIGltcGxpY2l0IGdyaWQgcHJvcGVydGllcyBp
biBhIHNpbmdsZSBncmlkIGRlY2xhcmF0aW9uLgorICAgIC8vIFRoZSBzdWItcHJvcGVydGllcyBu
b3Qgc3BlY2lmaWVkIGFyZSBzZXQgdG8gdGhlaXIgaW5pdGlhbCB2YWx1ZSwgYXMgbm9ybWFsIGZv
ciBzaG9ydGhhbmRzLgorICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQ29s
dW1ucywgQ1NTUHJvcGVydHlHcmlkLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBs
aWNpdCgpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFRlbXBs
YXRlUm93cywgQ1NTUHJvcGVydHlHcmlkLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJ
bXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFRl
bXBsYXRlQXJlYXMsIENTU1Byb3BlcnR5R3JpZCwgKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVn
YWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdy
aWRBdXRvRmxvdywgQ1NTUHJvcGVydHlHcmlkLCAqZ3JpZEF1dG9GbG93LCBpbXBvcnRhbnQpOwor
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZEF1dG9Db2x1bW5zLCBDU1NQcm9wZXJ0eUdy
aWQsICphdXRvQ29sdW1uc1ZhbHVlLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1By
b3BlcnR5R3JpZEF1dG9Sb3dzLCBDU1NQcm9wZXJ0eUdyaWQsICphdXRvUm93c1ZhbHVlLCBpbXBv
cnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZENvbHVtbkdhcCwgQ1NTUHJv
cGVydHlHcmlkLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBv
cnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFJvd0dhcCwgQ1NTUHJvcGVy
dHlHcmlkLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRh
bnQpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpwYXJz
ZVNob3J0aGFuZChDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0eSwgYm9vbCBpbXBvcnRh
bnQpCit7CisgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSA9IHJlc29sdmVDU1NQcm9wZXJ0eUlE
KHVucmVzb2x2ZWRQcm9wZXJ0eSk7CisKKyAgICBzd2l0Y2ggKHByb3BlcnR5KSB7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlOiB7CisgICAgICAgIENTU1ZhbHVlSUQg
aWQgPSBtX3JhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKKyAgICAgICAg
aWYgKCFDU1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRWYWx1ZShD
U1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlLCBpZCwgbV9jb250ZXh0Lm1vZGUo
KSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIENTU1ZhbHVlKiBiZWZvcmVD
b2xsYXBzZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKGlkKTsKKyAgICAg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSwgQ1NT
UHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSwgKmJlZm9yZUNvbGxhcHNlLCBpbXBvcnRhbnQp
OworICAgICAgICBpZiAobV9yYW5nZS5hdEVuZCgpKSB7CisgICAgICAgICAgICBhZGRQcm9wZXJ0
eShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UsIENTU1Byb3BlcnR5V2Via2l0
TWFyZ2luQ29sbGFwc2UsICpiZWZvcmVDb2xsYXBzZSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlkID0gbV9yYW5nZS5jb25zdW1lSW5j
bHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgICAgIGlmICghQ1NTUGFyc2VyRmFzdFBhdGhz
Ojppc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5B
ZnRlckNvbGxhcHNlLCBpZCwgbV9jb250ZXh0Lm1vZGUoKSkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJD
b2xsYXBzZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSwgKkNTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGVJZGVudGlmaWVyKGlkKSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvdzogeworICAgICAgICBDU1NW
YWx1ZUlEIGlkID0gbV9yYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7Cisg
ICAgICAgIGlmICghQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5k
VmFsdWUoQ1NTUHJvcGVydHlPdmVyZmxvd1ksIGlkLCBtX2NvbnRleHQubW9kZSgpKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIENTU1ZhbHVlKiBvdmVyZmxvd1lWYWx1ZSA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKGlkKTsKKworICAgICAgICBDU1NW
YWx1ZSogb3ZlcmZsb3dYVmFsdWUgPSBudWxscHRyOworCisgICAgICAgIC8vIEZJWE1FOiAtd2Vi
a2l0LXBhZ2VkLXggb3IgLXdlYmtpdC1wYWdlZC15IG9ubHkgYXBwbHkgdG8gb3ZlcmZsb3cteS4g
SWYgdGhpcyB2YWx1ZSBoYXMgYmVlbgorICAgICAgICAvLyBzZXQgdXNpbmcgdGhlIHNob3J0aGFu
ZCwgdGhlbiBmb3Igbm93IG92ZXJmbG93LXggd2lsbCBkZWZhdWx0IHRvIGF1dG8sIGJ1dCBvbmNl
IHdlIGltcGxlbWVudAorICAgICAgICAvLyBwYWdpbmF0aW9uIGNvbnRyb2xzLCBpdCBzaG91bGQg
ZGVmYXVsdCB0byBoaWRkZW4uIElmIHRoZSBvdmVyZmxvdy15IHZhbHVlIGlzIGFueXRoaW5nIGJ1
dAorICAgICAgICAvLyBwYWdlZC14IG9yIHBhZ2VkLXksIHRoZW4gb3ZlcmZsb3cteCBhbmQgb3Zl
cmZsb3cteSBzaG91bGQgaGF2ZSB0aGUgc2FtZSB2YWx1ZS4KKyAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlV2Via2l0UGFnZWRYIHx8IGlkID09IENTU1ZhbHVlV2Via2l0UGFnZWRZKQorICAgICAg
ICAgICAgb3ZlcmZsb3dYVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmll
cihDU1NWYWx1ZUF1dG8pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvdmVyZmxvd1hWYWx1
ZSA9IG92ZXJmbG93WVZhbHVlOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU92ZXJm
bG93WCwgQ1NTUHJvcGVydHlPdmVyZmxvdywgKm92ZXJmbG93WFZhbHVlLCBpbXBvcnRhbnQpOwor
ICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU92ZXJmbG93WSwgQ1NTUHJvcGVydHlPdmVy
ZmxvdywgKm92ZXJmbG93WVZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnQ6IHsKKyAgICAgICAgY29uc3QgQ1NTUGFy
c2VyVG9rZW4mIHRva2VuID0gbV9yYW5nZS5wZWVrKCk7CisgICAgICAgIGlmICh0b2tlbi5pZCgp
ID49IENTU1ZhbHVlQ2FwdGlvbiAmJiB0b2tlbi5pZCgpIDw9IENTU1ZhbHVlU3RhdHVzQmFyKQor
ICAgICAgICAgICAgcmV0dXJuIGNvbnN1bWVTeXN0ZW1Gb250KGltcG9ydGFudCk7CisgICAgICAg
IHJldHVybiBjb25zdW1lRm9udChpbXBvcnRhbnQpOworICAgIH0KKyAgICBjYXNlIENTU1Byb3Bl
cnR5Rm9udFZhcmlhbnQ6CisgICAgICAgIHJldHVybiBjb25zdW1lRm9udFZhcmlhbnRTaG9ydGhh
bmQoaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZzoKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVCb3JkZXJTcGFjaW5nKGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUNvbHVtbnM6CisgICAgICAgIHJldHVybiBjb25zdW1lQ29sdW1ucyhpbXBvcnRhbnQp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb246CisgICAgICAgIHJldHVybiBjb25zdW1l
QW5pbWF0aW9uU2hvcnRoYW5kKGFuaW1hdGlvblNob3J0aGFuZEZvclBhcnNpbmcoKSwgdW5yZXNv
bHZlZFByb3BlcnR5ID09IENTU1Byb3BlcnR5QWxpYXNXZWJraXRBbmltYXRpb24sIGltcG9ydGFu
dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb246CisgICAgICAgIHJldHVybiBjb25z
dW1lQW5pbWF0aW9uU2hvcnRoYW5kKHRyYW5zaXRpb25TaG9ydGhhbmRGb3JQYXJzaW5nKCksIGZh
bHNlLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbjoKKyAg
ICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzczNUZXh0RGVjb3JhdGlvbnNF
bmFibGVkKCkpOworICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KHRleHRE
ZWNvcmF0aW9uU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1h
cmdpbjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWU0VmFsdWVzKG1hcmdpblNob3J0aGFuZCgpLCBp
bXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nOgorICAgICAgICByZXR1cm4g
Y29uc3VtZTRWYWx1ZXMocGFkZGluZ1Nob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlNb3Rpb246CisgICAgICAgIHJldHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRp
bHkobW90aW9uU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRFbXBoYXNpczoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhhbmRHcmVlZGls
eSh3ZWJraXRUZXh0RW1waGFzaXNTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5T3V0bGluZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhhbmRHcmVlZGls
eShvdXRsaW5lU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlclN0YXJ0OgorICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5
KHdlYmtpdEJvcmRlclN0YXJ0U2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckVuZDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhhbmRH
cmVlZGlseSh3ZWJraXRCb3JkZXJFbmRTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlOgorICAgICAgICByZXR1cm4gY29uc3VtZVNo
b3J0aGFuZEdyZWVkaWx5KHdlYmtpdEJvcmRlckJlZm9yZVNob3J0aGFuZCgpLCBpbXBvcnRhbnQp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcjoKKyAgICAgICAgcmV0dXJu
IGNvbnN1bWVTaG9ydGhhbmRHcmVlZGlseSh3ZWJraXRCb3JkZXJBZnRlclNob3J0aGFuZCgpLCBp
bXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlOgorICAgICAg
ICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KHdlYmtpdFRleHRTdHJva2VTaG9ydGhh
bmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFya2VyOiB7CisgICAgICAg
IGNvbnN0IENTU1ZhbHVlKiBtYXJrZXIgPSBwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5TWFy
a2VyU3RhcnQpOworICAgICAgICBpZiAoIW1hcmtlciB8fCAhbV9yYW5nZS5hdEVuZCgpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1h
cmtlclN0YXJ0LCBDU1NQcm9wZXJ0eU1hcmtlciwgKm1hcmtlciwgaW1wb3J0YW50KTsKKyAgICAg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJrZXJNaWQsIENTU1Byb3BlcnR5TWFya2VyLCAq
bWFya2VyLCBpbXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmtl
ckVuZCwgQ1NTUHJvcGVydHlNYXJrZXIsICptYXJrZXIsIGltcG9ydGFudCk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5RmxleDoKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVGbGV4KGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsZXhGbG93
OgorICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KGZsZXhGbG93U2hvcnRo
YW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVtblJ1bGU6CisgICAg
ICAgIHJldHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkoY29sdW1uUnVsZVNob3J0aGFuZCgp
LCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGU6CisgICAgICAgIHJl
dHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkobGlzdFN0eWxlU2hvcnRoYW5kKCksIGltcG9y
dGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1czogeworICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogaG9yaXpvbnRhbFJhZGlpWzRdID0geyAwIH07CisgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiB2ZXJ0aWNhbFJhZGlpWzRdID0geyAwIH07CisgICAgICAgIGlmICghY29u
c3VtZVJhZGlpKGhvcml6b250YWxSYWRpaSwgdmVydGljYWxSYWRpaSwgbV9yYW5nZSwgbV9jb250
ZXh0Lm1vZGUoKSwgdW5yZXNvbHZlZFByb3BlcnR5ID09IENTU1Byb3BlcnR5QWxpYXNXZWJraXRC
b3JkZXJSYWRpdXMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhZGRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXMsIENTU1Byb3BlcnR5Qm9yZGVyUmFk
aXVzLCAqQ1NTVmFsdWVQYWlyOjpjcmVhdGUoaG9yaXpvbnRhbFJhZGlpWzBdLCB2ZXJ0aWNhbFJh
ZGlpWzBdLCBDU1NWYWx1ZVBhaXI6OkRyb3BJZGVudGljYWxWYWx1ZXMpLCBpbXBvcnRhbnQpOwor
ICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzLCBDU1NQ
cm9wZXJ0eUJvcmRlclJhZGl1cywgKkNTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhvcml6b250YWxSYWRp
aVsxXSwgdmVydGljYWxSYWRpaVsxXSwgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVz
KSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21SaWdodFJhZGl1cywgQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMsICpDU1NWYWx1ZVBhaXI6OmNy
ZWF0ZShob3Jpem9udGFsUmFkaWlbMl0sIHZlcnRpY2FsUmFkaWlbMl0sIENTU1ZhbHVlUGFpcjo6
RHJvcElkZW50aWNhbFZhbHVlcyksIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywgQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMs
ICpDU1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsUmFkaWlbM10sIHZlcnRpY2FsUmFkaWlb
M10sIENTU1ZhbHVlUGFpcjo6RHJvcElkZW50aWNhbFZhbHVlcyksIGltcG9ydGFudCk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3I6
CisgICAgICAgIHJldHVybiBjb25zdW1lNFZhbHVlcyhib3JkZXJDb2xvclNob3J0aGFuZCgpLCBp
bXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZToKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWU0VmFsdWVzKGJvcmRlclN0eWxlU2hvcnRoYW5kKCksIGltcG9ydGFudCk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoOgorICAgICAgICByZXR1cm4gY29uc3VtZTRW
YWx1ZXMoYm9yZGVyV2lkdGhTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyVG9wOgorICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5
KGJvcmRlclRvcFNob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJSaWdodDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhhbmRHcmVlZGlseShib3Jk
ZXJSaWdodFNob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJCb3R0b206CisgICAgICAgIHJldHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkoYm9yZGVy
Qm90dG9tU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
ckxlZnQ6CisgICAgICAgIHJldHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkoYm9yZGVyTGVm
dFNob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6Cisg
ICAgICAgIHJldHVybiBjb25zdW1lQm9yZGVyKGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlckltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2U6
CisgICAgICAgIHJldHVybiBjb25zdW1lQm9yZGVySW1hZ2UocHJvcGVydHksIGltcG9ydGFudCk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlQYWdlQnJlYWtCZWZvcmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0luc2lkZToK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtBZnRlcjoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtCZWZvcmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtbkJyZWFrSW5zaWRlOgorICAgICAgICByZXR1cm4gY29uc3VtZUxlZ2FjeUJyZWFr
UHJvcGVydHkocHJvcGVydHksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tQb3NpdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uOiB7
CisgICAgICAgIENTU1ZhbHVlKiByZXN1bHRYID0gbnVsbHB0cjsKKyAgICAgICAgQ1NTVmFsdWUq
IHJlc3VsdFkgPSBudWxscHRyOworICAgICAgICBpZiAoIWNvbnN1bWVCYWNrZ3JvdW5kUG9zaXRp
b24obV9yYW5nZSwgbV9jb250ZXh0LCBVbml0bGVzc1F1aXJrOjpBbGxvdywgcmVzdWx0WCwgcmVz
dWx0WSkgfHwgIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgYWRkUHJvcGVydHkocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRp
b24gPyBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblggOiBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tQb3NpdGlvblgsIHByb3BlcnR5LCAqcmVzdWx0WCwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRk
UHJvcGVydHkocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24gPyBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblkgOiBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlv
blksIHByb3BlcnR5LCAqcmVzdWx0WSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0OiB7CisgICAgICAgIENTU1ZhbHVlKiByZXN1bHRY
ID0gbnVsbHB0cjsKKyAgICAgICAgQ1NTVmFsdWUqIHJlc3VsdFkgPSBudWxscHRyOworICAgICAg
ICBib29sIGltcGxpY2l0ID0gZmFsc2U7CisgICAgICAgIGlmICghY29uc3VtZVJlcGVhdFN0eWxl
KG1fcmFuZ2UsIHJlc3VsdFgsIHJlc3VsdFksIGltcGxpY2l0KSB8fCAhbV9yYW5nZS5hdEVuZCgp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0
eSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQgPyBDU1NQcm9wZXJ0eUJhY2tncm91bmRS
ZXBlYXRYIDogQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WCwgcHJvcGVydHksICpyZXN1bHRY
LCBpbXBvcnRhbnQsIGltcGxpY2l0KTsKKyAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydHkgPT0g
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0ID8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0
WSA6IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFksIHByb3BlcnR5LCAqcmVzdWx0WSwgaW1w
b3J0YW50LCBpbXBsaWNpdCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBjYXNl
IENTU1Byb3BlcnR5QmFja2dyb3VuZDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCYWNrZ3JvdW5k
U2hvcnRoYW5kKGJhY2tncm91bmRTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFzazoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCYWNrZ3JvdW5kU2hv
cnRoYW5kKHdlYmtpdE1hc2tTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1By
b3BlcnR5R3JpZEdhcDogeworICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
Y3NzR3JpZExheW91dEVuYWJsZWQoKSAmJiBzaG9ydGhhbmRGb3JQcm9wZXJ0eShDU1NQcm9wZXJ0
eUdyaWRHYXApLmxlbmd0aCgpID09IDIpOworICAgICAgICBDU1NWYWx1ZSogcm93R2FwID0gY29u
c3VtZUxlbmd0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlTm9uTmVnYXRp
dmUpOworICAgICAgICBDU1NWYWx1ZSogY29sdW1uR2FwID0gY29uc3VtZUxlbmd0aChtX3Jhbmdl
LCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICBpZiAo
IXJvd0dhcCB8fCAhbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBpZiAoIWNvbHVtbkdhcCkKKyAgICAgICAgICAgIGNvbHVtbkdhcCA9IHJvd0dhcDsK
KyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkUm93R2FwLCBDU1NQcm9wZXJ0eUdy
aWRHYXAsICpyb3dHYXAsIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3Bl
cnR5R3JpZENvbHVtbkdhcCwgQ1NTUHJvcGVydHlHcmlkR2FwLCAqY29sdW1uR2FwLCBpbXBvcnRh
bnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdy
aWRDb2x1bW46CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRSb3c6CisgICAgICAgIHJldHVybiBj
b25zdW1lR3JpZEl0ZW1Qb3NpdGlvblNob3J0aGFuZChwcm9wZXJ0eSwgaW1wb3J0YW50KTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5R3JpZEFyZWE6CisgICAgICAgIHJldHVybiBjb25zdW1lR3JpZEFy
ZWFTaG9ydGhhbmQoaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZFRlbXBsYXRl
OgorICAgICAgICByZXR1cm4gY29uc3VtZUdyaWRUZW1wbGF0ZVNob3J0aGFuZChDU1NQcm9wZXJ0
eUdyaWRUZW1wbGF0ZSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZDoKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVHcmlkU2hvcnRoYW5kKGltcG9ydGFudCk7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKyovCisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5
UGFyc2VyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
cm9wZXJ0eVBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDAzIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmlj
QHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgLSAyMDEwICBUb3JjaCBNb2JpbGUg
KEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgQ1NTUHJvcGVy
dHlQYXJzZXJfaAorI2RlZmluZSBDU1NQcm9wZXJ0eVBhcnNlcl9oCisKKyNpbmNsdWRlICJDU1NQ
YXJzZXJUb2tlblJhbmdlLmgiCisjaW5jbHVkZSAiU3R5bGVSdWxlLmgiCisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nVmlldy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1By
b3BlcnR5OworY2xhc3MgQ1NTVmFsdWU7CitjbGFzcyBTdHlsZVByb3BlcnR5U2hvcnRoYW5kOwor
CisvLyBJbnB1dHM6IFByb3BlcnR5SUQsIGlzSW1wb3J0YW50IGJvb2wsIENTU1BhcnNlclRva2Vu
UmFuZ2UuCisvLyBPdXRwdXRzOiBWZWN0b3Igb2YgQ1NTUHJvcGVydGllcworCitjbGFzcyBDU1NQ
cm9wZXJ0eVBhcnNlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ1NTUHJvcGVydHlQYXJz
ZXIpOworcHVibGljOgorICAgIHN0YXRpYyBib29sIHBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCwg
Ym9vbCBpbXBvcnRhbnQsCisgICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmLCBjb25z
dCBDU1NQYXJzZXJDb250ZXh0JiwKKyAgICAgICAgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+Jiwg
U3R5bGVSdWxlOjpUeXBlKTsKKworICAgIC8vIFBhcnNlcyBhIG5vbi1zaG9ydGhhbmQgQ1NTIHBy
b3BlcnR5CisgICAgc3RhdGljIGNvbnN0IENTU1ZhbHVlKiBwYXJzZVNpbmdsZVZhbHVlKENTU1By
b3BlcnR5SUQsIGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmLCBjb25zdCBDU1NQYXJzZXJDb250
ZXh0Jik7CisKK3ByaXZhdGU6CisgICAgQ1NTUHJvcGVydHlQYXJzZXIoY29uc3QgQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmLAorICAgICAgICBWZWN0b3I8Q1NT
UHJvcGVydHksIDI1Nj4qKTsKKworICAgIC8vIEZJWE1FOiBSZW5hbWUgb25jZSB0aGUgQ1NTUGFy
c2VyVmFsdWUtYmFzZWQgcGFyc2VWYWx1ZSBpcyByZW1vdmVkCisgICAgYm9vbCBwYXJzZVZhbHVl
U3RhcnQoQ1NTUHJvcGVydHlJRCB1bnJlc29sdmVkUHJvcGVydHksIGJvb2wgaW1wb3J0YW50KTsK
KyAgICBib29sIGNvbnN1bWVDU1NXaWRlS2V5d29yZChDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQ
cm9wZXJ0eSwgYm9vbCBpbXBvcnRhbnQpOworICAgIGNvbnN0IENTU1ZhbHVlKiBwYXJzZVNpbmds
ZVZhbHVlKENTU1Byb3BlcnR5SUQsIENTU1Byb3BlcnR5SUQgPSBDU1NQcm9wZXJ0eUludmFsaWQp
OworCisgICAgYm9vbCBpblF1aXJrc01vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQubW9k
ZSA9PSBDU1NRdWlya3NNb2RlOyB9CisKKyAgICBib29sIHBhcnNlVmlld3BvcnREZXNjcmlwdG9y
KENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBwYXJzZUZv
bnRGYWNlRGVzY3JpcHRvcihDU1NQcm9wZXJ0eUlEKTsKKworICAgIHZvaWQgYWRkUHJvcGVydHko
Q1NTUHJvcGVydHlJRCwgQ1NTUHJvcGVydHlJRCwgY29uc3QgQ1NTVmFsdWUmLCBib29sIGltcG9y
dGFudCwgYm9vbCBpbXBsaWNpdCA9IGZhbHNlKTsKKyAgICB2b2lkIGFkZEV4cGFuZGVkUHJvcGVy
dHlGb3JWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgY29uc3QgQ1NTVmFsdWUmLCBib29sKTsK
KworICAgIGJvb2wgY29uc3VtZUJvcmRlcihib29sIGltcG9ydGFudCk7CisKKyAgICBib29sIHBh
cnNlU2hvcnRoYW5kKENTU1Byb3BlcnR5SUQsIGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29sIGNv
bnN1bWVTaG9ydGhhbmRHcmVlZGlseShjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiwgYm9v
bCBpbXBvcnRhbnQpOworICAgIGJvb2wgY29uc3VtZTRWYWx1ZXMoY29uc3QgU3R5bGVQcm9wZXJ0
eVNob3J0aGFuZCYsIGJvb2wgaW1wb3J0YW50KTsKKworICAgIC8vIExlZ2FjeSBwYXJzaW5nIGFs
bG93cyA8c3RyaW5nPnMgZm9yIGFuaW1hdGlvbi1uYW1lCisgICAgYm9vbCBjb25zdW1lQW5pbWF0
aW9uU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmLCBib29sIHVzZUxlZ2Fj
eVBhcnNpbmcsIGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29sIGNvbnN1bWVCYWNrZ3JvdW5kU2hv
cnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmLCBib29sIGltcG9ydGFudCk7CisK
KyAgICBib29sIGNvbnN1bWVDb2x1bW5zKGJvb2wgaW1wb3J0YW50KTsKKworICAgIGJvb2wgY29u
c3VtZUdyaWRJdGVtUG9zaXRpb25TaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRh
bnQpOworICAgIGJvb2wgY29uc3VtZUdyaWRUZW1wbGF0ZVJvd3NBbmRBcmVhc0FuZENvbHVtbnMo
Q1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wgY29uc3VtZUdyaWRUZW1w
bGF0ZVNob3J0aGFuZChDU1NQcm9wZXJ0eUlELCBib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBj
b25zdW1lR3JpZFNob3J0aGFuZChib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBjb25zdW1lR3Jp
ZEFyZWFTaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpOworCisgICAgYm9vbCBjb25zdW1lRm9udChi
b29sIGltcG9ydGFudCk7CisgICAgYm9vbCBjb25zdW1lRm9udFZhcmlhbnRTaG9ydGhhbmQoYm9v
bCBpbXBvcnRhbnQpOworICAgIGJvb2wgY29uc3VtZVN5c3RlbUZvbnQoYm9vbCBpbXBvcnRhbnQp
OworCisgICAgYm9vbCBjb25zdW1lQm9yZGVyU3BhY2luZyhib29sIGltcG9ydGFudCk7CisKKyAg
ICAvLyBDU1MzIFBhcnNpbmcgUm91dGluZXMgKGZvciBwcm9wZXJ0aWVzIHNwZWNpZmljIHRvIENT
UzMpCisgICAgYm9vbCBjb25zdW1lQm9yZGVySW1hZ2UoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBv
cnRhbnQpOworCisgICAgYm9vbCBjb25zdW1lRmxleChib29sIGltcG9ydGFudCk7CisKKyAgICBi
b29sIGNvbnN1bWVMZWdhY3lCcmVha1Byb3BlcnR5KENTU1Byb3BlcnR5SUQsIGJvb2wgaW1wb3J0
YW50KTsKKworcHJpdmF0ZToKKyAgICAvLyBJbnB1dHM6CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5n
ZSBtX3JhbmdlOworICAgIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIG1fY29udGV4dDsKKyAgICAv
LyBPdXRwdXRzOgorICAgIFZlY3RvcjxDU1NQcm9wZXJ0eSwgMjU2PiogbV9wYXJzZWRQcm9wZXJ0
aWVzOworfTsKKworQ1NTUHJvcGVydHlJRCB1bnJlc29sdmVkQ1NTUHJvcGVydHlJRChTdHJpbmdW
aWV3KTsKK0NTU1ZhbHVlSUQgY3NzVmFsdWVLZXl3b3JkSUQoU3RyaW5nVmlldyk7CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENTU1Byb3BlcnR5UGFyc2VyX2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2Vy
SGVscGVycy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEx
MCBAQAorLy8gQ29weXJpZ2h0IDIwMTYgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6Cisv
LworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaCIK
KworI2luY2x1ZGUgIkNTU0NhbGN1bGF0aW9uVmFsdWUuaCIKKy8vIEZJWE1FLU5FV1BBUlNFUjog
I2luY2x1ZGUgIkNTU0NvbG9yVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NDcm9zc2ZhZGVWYWx1ZS5o
IgorI2luY2x1ZGUgIkNTU0dyYWRpZW50VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NJbWFnZVNldFZh
bHVlLmgiCisjaW5jbHVkZSAiQ1NTSW1hZ2VWYWx1ZS5oIgorLy8gRklYTUUtTkVXUEFSU0VSOiAj
aW5jbHVkZSAiQ1NTUGFpbnRWYWx1ZS5oIgorLy8gRklYTUVfTkVXUEFSU0VSOiAjaW5jbHVkZSAi
Q1NTU3RyaW5nVmFsdWUuaCIKKy8vIEZJWE1FLU5FV1BBUlNFUjogI2luY2x1ZGUgIkNTU1VSSVZh
bHVlLmgiCisvLyBGSVhNRV9ORVdQQVJTRVI6ICNpbmNsdWRlICJDU1NWYWx1ZVBhaXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisvKiBGSVhNRS1ORVdQQVJTRVI6IERpc2FibGUgZm9yIG5v
dy4KKyAKK25hbWVzcGFjZSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMgeworCitib29sIGNvbnN1
bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7
CisgICAgQ1NTUGFyc2VyVG9rZW4gdmFsdWUgPSByYW5nZS5wZWVrKCk7CisgICAgaWYgKHZhbHVl
LnR5cGUoKSAhPSBDb21tYVRva2VuKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmFuZ2Uu
Y29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlKQoreworICAgIENTU1BhcnNlclRva2VuIHZhbHVlID0gcmFuZ2UucGVlaygpOworICAgIGlm
ICh2YWx1ZS50eXBlKCkgIT0gRGVsaW1pdGVyVG9rZW4gfHwgdmFsdWUuZGVsaW1pdGVyKCkgIT0g
Jy8nKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1do
aXRlc3BhY2UoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworQ1NTUGFyc2VyVG9rZW5SYW5nZSBj
b25zdW1lRnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQVNTRVJU
KHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gRnVuY3Rpb25Ub2tlbik7CisgICAgQ1NTUGFyc2VyVG9r
ZW5SYW5nZSBjb250ZW50cyA9IHJhbmdlLmNvbnN1bWVCbG9jaygpOworICAgIHJhbmdlLmNvbnN1
bWVXaGl0ZXNwYWNlKCk7CisgICAgY29udGVudHMuY29uc3VtZVdoaXRlc3BhY2UoKTsKKyAgICBy
ZXR1cm4gY29udGVudHM7Cit9CisKKy8vIEZJWE1FOiBjb25zaWRlciBwdWxsaW5nIGluIHRoZSBw
YXJzaW5nIGxvZ2ljIGZyb20gQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAuCitjbGFzcyBDYWxjUGFy
c2VyIHsKKworcHVibGljOgorICAgIGV4cGxpY2l0IENhbGNQYXJzZXIoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSA9IFZhbHVlUmFuZ2VBbGwpCisgICAg
ICAgIDogbV9zb3VyY2VSYW5nZShyYW5nZSkKKyAgICAgICAgLCBtX3JhbmdlKHJhbmdlKQorICAg
IHsKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOwor
ICAgICAgICBpZiAodG9rZW4uZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlQ2FsYyB8fCB0b2tlbi5m
dW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVXZWJraXRDYWxjKQorICAgICAgICAgICAgbV9jYWxjVmFs
dWUgPSBDU1NDYWxjVmFsdWU6OmNyZWF0ZShjb25zdW1lRnVuY3Rpb24obV9yYW5nZSksIHZhbHVl
UmFuZ2UpOworICAgIH0KKworICAgIGNvbnN0IENTU0NhbGNWYWx1ZSogdmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX2NhbGNWYWx1ZS5nZXQoKTsgfQorICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25z
dW1lVmFsdWUoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NhbGNWYWx1ZSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICBtX3NvdXJjZVJhbmdlID0gbV9yYW5nZTsKKyAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV9jYWxjVmFsdWUucmVsZWFzZSgp
KTsKKyAgICB9CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVOdW1iZXIoKQorICAgIHsK
KyAgICAgICAgaWYgKCFtX2NhbGNWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICBtX3NvdXJjZVJhbmdlID0gbV9yYW5nZTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlIHVuaXRUeXBlID0gbV9jYWxjVmFsdWUtPmlzSW50KCkgPyBDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGU6OkludGVnZXIgOiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6
Ok51bWJlcjsKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV9jYWxj
VmFsdWUtPmRvdWJsZVZhbHVlKCksIHVuaXRUeXBlKTsKKyAgICB9CisKKyAgICBib29sIGNvbnN1
bWVOdW1iZXJSYXcoZG91YmxlJiByZXN1bHQpCisgICAgeworICAgICAgICBpZiAoIW1fY2FsY1Zh
bHVlIHx8IG1fY2FsY1ZhbHVlLT5jYXRlZ29yeSgpICE9IENhbGNOdW1iZXIpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIG1fc291cmNlUmFuZ2UgPSBtX3JhbmdlOworICAgICAg
ICByZXN1bHQgPSBtX2NhbGNWYWx1ZS0+ZG91YmxlVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCitwcml2YXRlOgorICAgIENTU1BhcnNlclRva2VuUmFuZ2UmIG1fc291cmNl
UmFuZ2U7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBtX3JhbmdlOworICAgIE1lbWJlcjxDU1ND
YWxjVmFsdWU+IG1fY2FsY1ZhbHVlOworfTsKKworQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVJ
bnRlZ2VyKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBkb3VibGUgbWluaW11bVZhbHVlKQor
eworICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICBp
ZiAodG9rZW4udHlwZSgpID09IE51bWJlclRva2VuKSB7CisgICAgICAgIGlmICh0b2tlbi5udW1l
cmljVmFsdWVUeXBlKCkgPT0gTnVtYmVyVmFsdWVUeXBlIHx8IHRva2VuLm51bWVyaWNWYWx1ZSgp
IDwgbWluaW11bVZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0
ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6SW50
ZWdlcik7CisgICAgfQorICAgIENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSk7CisgICAgaWYg
KGNvbnN0IENTU0NhbGNWYWx1ZSogY2FsY3VsYXRpb24gPSBjYWxjUGFyc2VyLnZhbHVlKCkpIHsK
KyAgICAgICAgaWYgKGNhbGN1bGF0aW9uLT5jYXRlZ29yeSgpICE9IENhbGNOdW1iZXIgfHwgIWNh
bGN1bGF0aW9uLT5pc0ludCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IGRvdWJsZSB2YWx1ZSA9IGNhbGN1bGF0aW9uLT5kb3VibGVWYWx1ZSgpOworICAgICAgICBpZiAo
dmFsdWUgPCBtaW5pbXVtVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuIGNhbGNQYXJzZXIuY29uc3VtZU51bWJlcigpOworICAgIH0KKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKworQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVQb3NpdGl2ZUludGVnZXIo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgcmV0dXJuIGNvbnN1bWVJbnRlZ2Vy
KHJhbmdlLCAxKTsKK30KKworYm9vbCBjb25zdW1lTnVtYmVyUmF3KENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBkb3VibGUmIHJlc3VsdCkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUo
KSA9PSBOdW1iZXJUb2tlbikgeworICAgICAgICByZXN1bHQgPSByYW5nZS5jb25zdW1lSW5jbHVk
aW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgQ2FsY1BhcnNlciBjYWxjUGFyc2VyKHJhbmdlLCBWYWx1ZVJhbmdlQWxsKTsKKyAg
ICByZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lTnVtYmVyUmF3KHJlc3VsdCk7Cit9CisKKy8vIEZJ
WE1FOiBXb3JrIG91dCBpZiB0aGlzIGNhbiBqdXN0IGNhbGwgY29uc3VtZU51bWJlclJhdworQ1NT
UHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVOdW1iZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Us
IFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSkKK3sKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9r
ZW4gPSByYW5nZS5wZWVrKCk7CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbikg
eworICAgICAgICBpZiAodmFsdWVSYW5nZSA9PSBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUgJiYgdG9r
ZW4ubnVtZXJpY1ZhbHVlKCkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRp
bmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCksIHRva2VuLnVuaXRUeXBlKCkpOworICAgIH0K
KyAgICBDYWxjUGFyc2VyIGNhbGNQYXJzZXIocmFuZ2UsIFZhbHVlUmFuZ2VBbGwpOworICAgIGlm
IChjb25zdCBDU1NDYWxjVmFsdWUqIGNhbGN1bGF0aW9uID0gY2FsY1BhcnNlci52YWx1ZSgpKSB7
CisgICAgICAgIC8vIEZJWE1FOiBDYWxjcyBzaG91bGQgbm90IGJlIHN1YmplY3QgdG8gcGFyc2Ug
dGltZSByYW5nZSBjaGVja3MuCisgICAgICAgIC8vIHNwZWM6IGh0dHBzOi8vZHJhZnRzLmNzc3dn
Lm9yZy9jc3MtdmFsdWVzLTMvI2NhbGMtcmFuZ2UKKyAgICAgICAgaWYgKGNhbGN1bGF0aW9uLT5j
YXRlZ29yeSgpICE9IENhbGNOdW1iZXIgfHwgKHZhbHVlUmFuZ2UgPT0gVmFsdWVSYW5nZU5vbk5l
Z2F0aXZlICYmIGNhbGN1bGF0aW9uLT5pc05lZ2F0aXZlKCkpKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIHJldHVybiBjYWxjUGFyc2VyLmNvbnN1bWVOdW1iZXIoKTsKKyAg
ICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2lubGluZSBib29sIHNob3VsZEFjY2VwdFVu
aXRsZXNzTGVuZ3RoKGRvdWJsZSB2YWx1ZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBV
bml0bGVzc1F1aXJrIHVuaXRsZXNzKQoreworICAgIC8vIEZJWE1FOiBQcmVzZW50YXRpb25hbCBI
VE1MIGF0dHJpYnV0ZXMgc2hvdWxkbid0IHVzZSB0aGUgQ1NTIHBhcnNlciBmb3IgbGVuZ3Rocwor
ICAgIHJldHVybiB2YWx1ZSA9PSAwCisgICAgICAgIHx8IGlzVW5pdExlc3NMZW5ndGhQYXJzaW5n
RW5hYmxlZEZvck1vZGUoY3NzUGFyc2VyTW9kZSkKKyAgICAgICAgfHwgKGNzc1BhcnNlck1vZGUg
PT0gSFRNTFF1aXJrc01vZGUgJiYgdW5pdGxlc3MgPT0gVW5pdGxlc3NRdWlyazo6QWxsb3cpOwor
fQorCitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUxlbmd0aChDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlIHZhbHVlUmFu
Z2UsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4m
IHRva2VuID0gcmFuZ2UucGVlaygpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gRGltZW5zaW9u
VG9rZW4pIHsKKyAgICAgICAgc3dpdGNoICh0b2tlbi51bml0VHlwZSgpKSB7CisgICAgICAgIGNh
c2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpRdWlya3lFbXM6CisgICAgICAgICAgICBp
ZiAoY3NzUGFyc2VyTW9kZSAhPSBVQVNoZWV0TW9kZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICBjYXNlIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZTo6RW1zOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZTo6UmVtczoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGU6OkNoczoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkV4czoK
KyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBpeGVsczoKKyAgICAg
ICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkNlbnRpbWV0ZXJzOgorICAgICAg
ICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TWlsbGltZXRlcnM6CisgICAgICAg
IGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpJbmNoZXM6CisgICAgICAgIGNhc2Ug
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQb2ludHM6CisgICAgICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQaWNhczoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVW
YWx1ZTo6VW5pdFR5cGU6OlVzZXJVbml0czoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGU6OlZpZXdwb3J0V2lkdGg6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlOjpWaWV3cG9ydEhlaWdodDoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVW
YWx1ZTo6VW5pdFR5cGU6OlZpZXdwb3J0TWluOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZTo6Vmlld3BvcnRNYXg6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAg
IGlmICh2YWx1ZVJhbmdlID09IFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSAmJiB0b2tlbi5udW1lcmlj
VmFsdWUoKSA8IDApCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3Bh
Y2UoKS5udW1lcmljVmFsdWUoKSwgdG9rZW4udW5pdFR5cGUoKSk7CisgICAgfQorICAgIGlmICh0
b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4pIHsKKyAgICAgICAgaWYgKCFzaG91bGRBY2NlcHRV
bml0bGVzc0xlbmd0aCh0b2tlbi5udW1lcmljVmFsdWUoKSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxl
c3MpCisgICAgICAgICAgICB8fCAodmFsdWVSYW5nZSA9PSBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUg
JiYgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPCAwKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGUgdW5pdFR5cGUgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBpeGVsczsKKyAgICAgICAgaWYgKGNzc1BhcnNlck1vZGUg
PT0gU1ZHQXR0cmlidXRlTW9kZSkKKyAgICAgICAgICAgIHVuaXRUeXBlID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OlVuaXRUeXBlOjpVc2VyVW5pdHM7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1Zh
bHVlKCksIHVuaXRUeXBlKTsKKyAgICB9CisgICAgaWYgKGNzc1BhcnNlck1vZGUgPT0gU1ZHQXR0
cmlidXRlTW9kZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ2FsY1BhcnNlciBjYWxj
UGFyc2VyKHJhbmdlLCB2YWx1ZVJhbmdlKTsKKyAgICBpZiAoY2FsY1BhcnNlci52YWx1ZSgpICYm
IGNhbGNQYXJzZXIudmFsdWUoKS0+Y2F0ZWdvcnkoKSA9PSBDYWxjTGVuZ3RoKQorICAgICAgICBy
ZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lVmFsdWUoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVQZXJjZW50KENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9r
ZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gUGVyY2Vu
dGFnZVRva2VuKSB7CisgICAgICAgIGlmICh2YWx1ZVJhbmdlID09IFZhbHVlUmFuZ2VOb25OZWdh
dGl2ZSAmJiB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDApCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFuZ2UuY29u
c3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1lcmljVmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlOjpQZXJjZW50YWdlKTsKKyAgICB9CisgICAgQ2FsY1BhcnNlciBjYWxjUGFy
c2VyKHJhbmdlLCB2YWx1ZVJhbmdlKTsKKyAgICBpZiAoY29uc3QgQ1NTQ2FsY1ZhbHVlKiBjYWxj
dWxhdGlvbiA9IGNhbGNQYXJzZXIudmFsdWUoKSkgeworICAgICAgICBpZiAoY2FsY3VsYXRpb24t
PmNhdGVnb3J5KCkgPT0gQ2FsY1BlcmNlbnQpCisgICAgICAgICAgICByZXR1cm4gY2FsY1BhcnNl
ci5jb25zdW1lVmFsdWUoKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wg
Y2FuQ29uc3VtZUNhbGNWYWx1ZShDYWxjdWxhdGlvbkNhdGVnb3J5IGNhdGVnb3J5LCBDU1NQYXJz
ZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgaWYgKGNhdGVnb3J5ID09IENhbGNMZW5ndGgg
fHwgY2F0ZWdvcnkgPT0gQ2FsY1BlcmNlbnQgfHwgY2F0ZWdvcnkgPT0gQ2FsY1BlcmNlbnRMZW5n
dGgpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGNzc1BhcnNlck1vZGUgIT0gU1ZH
QXR0cmlidXRlTW9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGNhdGVnb3J5
ID09IENhbGNOdW1iZXIgfHwgY2F0ZWdvcnkgPT0gQ2FsY1BlcmNlbnROdW1iZXIgfHwgY2F0ZWdv
cnkgPT0gQ2FsY0xlbmd0aE51bWJlciB8fCBjYXRlZ29yeSA9PSBDYWxjUGVyY2VudExlbmd0aE51
bWJlcikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0NT
U1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2UgdmFsdWVS
YW5nZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKK3sKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tl
biYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBEaW1lbnNp
b25Ub2tlbiB8fCB0b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4pCisgICAgICAgIHJldHVybiBj
b25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB2YWx1ZVJhbmdlLCB1bml0bGVzcyk7
CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBQZXJjZW50YWdlVG9rZW4pCisgICAgICAgIHJldHVy
biBjb25zdW1lUGVyY2VudChyYW5nZSwgdmFsdWVSYW5nZSk7CisgICAgQ2FsY1BhcnNlciBjYWxj
UGFyc2VyKHJhbmdlLCB2YWx1ZVJhbmdlKTsKKyAgICBpZiAoY29uc3QgQ1NTQ2FsY1ZhbHVlKiBj
YWxjdWxhdGlvbiA9IGNhbGNQYXJzZXIudmFsdWUoKSkgeworICAgICAgICBpZiAoY2FuQ29uc3Vt
ZUNhbGNWYWx1ZShjYWxjdWxhdGlvbi0+Y2F0ZWdvcnkoKSwgY3NzUGFyc2VyTW9kZSkpCisgICAg
ICAgICAgICByZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lVmFsdWUoKTsKKyAgICB9CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lQW5nbGUoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2Vu
ID0gcmFuZ2UucGVlaygpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4p
IHsKKyAgICAgICAgc3dpdGNoICh0b2tlbi51bml0VHlwZSgpKSB7CisgICAgICAgIGNhc2UgQ1NT
UHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpEZWdyZWVzOgorICAgICAgICBjYXNlIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZTo6UmFkaWFuczoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVW
YWx1ZTo6VW5pdFR5cGU6OkdyYWRpYW5zOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZTo6VHVybnM6CisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgp
LCB0b2tlbi51bml0VHlwZSgpKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICB9CisgICAgfQorICAgIGlmICh0b2tlbi50eXBlKCkgPT0gTnVt
YmVyVG9rZW4gJiYgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPT0gMCkgeworICAgICAgICByYW5nZS5j
b25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZSgwLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkRlZ3JlZXMpOwor
ICAgIH0KKyAgICBDYWxjUGFyc2VyIGNhbGNQYXJzZXIocmFuZ2UsIFZhbHVlUmFuZ2VBbGwpOwor
ICAgIGlmIChjb25zdCBDU1NDYWxjVmFsdWUqIGNhbGN1bGF0aW9uID0gY2FsY1BhcnNlci52YWx1
ZSgpKSB7CisgICAgICAgIGlmIChjYWxjdWxhdGlvbi0+Y2F0ZWdvcnkoKSA9PSBDYWxjQW5nbGUp
CisgICAgICAgICAgICByZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lVmFsdWUoKTsKKyAgICB9Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lVGltZShD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgVmFsdWVSYW5nZSB2YWx1ZVJhbmdlKQoreworICAg
IGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICBpZiAodG9r
ZW4udHlwZSgpID09IERpbWVuc2lvblRva2VuKSB7CisgICAgICAgIGlmICh2YWx1ZVJhbmdlID09
IFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSAmJiB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDApCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlIHVuaXQgPSB0b2tlbi51bml0VHlwZSgpOworICAgICAgICBpZiAodW5pdCA9PSBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGU6Ok1pbGxpc2Vjb25kcyB8fCB1bml0ID09IENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZTo6U2Vjb25kcykKKyAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJp
Y1ZhbHVlKCksIHRva2VuLnVuaXRUeXBlKCkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisgICAgQ2FsY1BhcnNlciBjYWxjUGFyc2VyKHJhbmdlLCB2YWx1ZVJhbmdlKTsKKyAgICBp
ZiAoY29uc3QgQ1NTQ2FsY1ZhbHVlKiBjYWxjdWxhdGlvbiA9IGNhbGNQYXJzZXIudmFsdWUoKSkg
eworICAgICAgICBpZiAoY2FsY3VsYXRpb24tPmNhdGVnb3J5KCkgPT0gQ2FsY1RpbWUpCisgICAg
ICAgICAgICByZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lVmFsdWUoKTsKKyAgICB9CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lSWRlbnQoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgIT0g
SWRlbnRUb2tlbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNw
YWNlKCkuaWQoKSk7Cit9CisKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lSWRlbnRSYW5nZShD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTVmFsdWVJRCBsb3dlciwgQ1NTVmFsdWVJRCB1
cHBlcikKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPCBsb3dlciB8fCByYW5nZS5wZWVr
KCkuaWQoKSA+IHVwcGVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY29u
c3VtZUlkZW50KHJhbmdlKTsKK30KKworQ1NTQ3VzdG9tSWRlbnRWYWx1ZSogY29uc3VtZUN1c3Rv
bUlkZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVr
KCkudHlwZSgpICE9IElkZW50VG9rZW4gfHwgaXNDU1NXaWRlS2V5d29yZChyYW5nZS5wZWVrKCku
aWQoKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBDU1NDdXN0b21JZGVu
dFZhbHVlOjpjcmVhdGUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgp
LnRvU3RyaW5nKCkpOworfQorCitDU1NTdHJpbmdWYWx1ZSogY29uc3VtZVN0cmluZyhDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBT
dHJpbmdUb2tlbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIENTU1N0cmlu
Z1ZhbHVlOjpjcmVhdGUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgp
LnRvU3RyaW5nKCkpOworfQorCitTdHJpbmdWaWV3IGNvbnN1bWVVcmxBc1N0cmluZ1ZpZXcoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRv
a2VuID0gcmFuZ2UucGVlaygpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gVXJsVG9rZW4pIHsK
KyAgICAgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgcmV0
dXJuIHRva2VuLnZhbHVlKCk7CisgICAgfQorICAgIGlmICh0b2tlbi5mdW5jdGlvbklkKCkgPT0g
Q1NTVmFsdWVVcmwpIHsKKyAgICAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSB1cmxSYW5nZSA9IHJh
bmdlOworICAgICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHVybEFyZ3MgPSB1cmxSYW5nZS5jb25z
dW1lQmxvY2soKTsKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIG5leHQgPSB1cmxBcmdz
LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIGlmIChuZXh0LnR5cGUoKSA9
PSBCYWRTdHJpbmdUb2tlbiB8fCAhdXJsQXJncy5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJu
IFN0cmluZ1ZpZXcoKTsKKyAgICAgICAgQVNTRVJUKG5leHQudHlwZSgpID09IFN0cmluZ1Rva2Vu
KTsKKyAgICAgICAgcmFuZ2UgPSB1cmxSYW5nZTsKKyAgICAgICAgcmFuZ2UuY29uc3VtZVdoaXRl
c3BhY2UoKTsKKyAgICAgICAgcmV0dXJuIG5leHQudmFsdWUoKTsKKyAgICB9CisKKyAgICByZXR1
cm4gU3RyaW5nVmlldygpOworfQorCitDU1NVUklWYWx1ZSogY29uc3VtZVVybChDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBTdHJpbmdWaWV3IHVybCA9IGNvbnN1bWVVcmxBc1N0
cmluZ1ZpZXcocmFuZ2UpOworICAgIGlmICh1cmwuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBDU1NVUklWYWx1ZTo6Y3JlYXRlKHVybC50b1N0cmluZygpKTsK
K30KKworc3RhdGljIGludCBjbGFtcFJHQkNvbXBvbmVudChjb25zdCBDU1NQcmltaXRpdmVWYWx1
ZSYgdmFsdWUpCit7CisgICAgZG91YmxlIHJlc3VsdCA9IHZhbHVlLmdldERvdWJsZVZhbHVlKCk7
CisgICAgLy8gRklYTUU6IE11bHRpcGx5IGJ5IDIuNTUgYW5kIHJvdW5kIGluc3RlYWQgb2YgZmxv
b3IuCisgICAgaWYgKHZhbHVlLmlzUGVyY2VudGFnZSgpKQorICAgICAgICByZXN1bHQgKj0gMi41
NjsKKyAgICByZXR1cm4gY2xhbXBUbzxpbnQ+KHJlc3VsdCwgMCwgMjU1KTsKK30KKworc3RhdGlj
IGJvb2wgcGFyc2VSR0JQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBSR0JB
MzImIHJlc3VsdCwgYm9vbCBwYXJzZUFscGhhKQoreworICAgIEFTU0VSVChyYW5nZS5wZWVrKCku
ZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlUmdiIHx8IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkg
PT0gQ1NTVmFsdWVSZ2JhKTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1l
RnVuY3Rpb24ocmFuZ2UpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjb2xvclBhcmFtZXRlciA9
IGNvbnN1bWVJbnRlZ2VyKGFyZ3MpOworICAgIGlmICghY29sb3JQYXJhbWV0ZXIpCisgICAgICAg
IGNvbG9yUGFyYW1ldGVyID0gY29uc3VtZVBlcmNlbnQoYXJncywgVmFsdWVSYW5nZUFsbCk7Cisg
ICAgaWYgKCFjb2xvclBhcmFtZXRlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNvbnN0
IGJvb2wgaXNQZXJjZW50ID0gY29sb3JQYXJhbWV0ZXItPmlzUGVyY2VudGFnZSgpOworICAgIGlu
dCBjb2xvckFycmF5WzNdOworICAgIGNvbG9yQXJyYXlbMF0gPSBjbGFtcFJHQkNvbXBvbmVudCgq
Y29sb3JQYXJhbWV0ZXIpOworICAgIGZvciAoaW50IGkgPSAxOyBpIDwgMzsgaSsrKSB7CisgICAg
ICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY29sb3JQYXJhbWV0ZXIgPSBpc1BlcmNlbnQgPyBj
b25zdW1lUGVyY2VudChhcmdzLCBWYWx1ZVJhbmdlQWxsKSA6IGNvbnN1bWVJbnRlZ2VyKGFyZ3Mp
OworICAgICAgICBpZiAoIWNvbG9yUGFyYW1ldGVyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBjb2xvckFycmF5W2ldID0gY2xhbXBSR0JDb21wb25lbnQoKmNvbG9yUGFyYW1l
dGVyKTsKKyAgICB9CisgICAgaWYgKHBhcnNlQWxwaGEpIHsKKyAgICAgICAgaWYgKCFjb25zdW1l
Q29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBkb3VibGUgYWxwaGE7CisgICAgICAgIGlmICghY29uc3VtZU51bWJlclJhdyhh
cmdzLCBhbHBoYSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIC8vIENvbnZl
cnQgdGhlIGZsb2F0aW5nIHBvaW50ZXIgbnVtYmVyIG9mIGFscGhhIHRvIGFuIGludGVnZXIgaW4g
dGhlIHJhbmdlIFswLCAyNTYpLAorICAgICAgICAvLyB3aXRoIGFuIGVxdWFsIGRpc3RyaWJ1dGlv
biBhY3Jvc3MgYWxsIDI1NiB2YWx1ZXMuCisgICAgICAgIGludCBhbHBoYUNvbXBvbmVudCA9IHN0
YXRpY19jYXN0PGludD4oY2xhbXBUbzxkb3VibGU+KGFscGhhLCAwLjAsIDEuMCkgKiBuZXh0YWZ0
ZXIoMjU2LjAsIDAuMCkpOworICAgICAgICByZXN1bHQgPSBtYWtlUkdCQShjb2xvckFycmF5WzBd
LCBjb2xvckFycmF5WzFdLCBjb2xvckFycmF5WzJdLCBhbHBoYUNvbXBvbmVudCk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgcmVzdWx0ID0gbWFrZVJHQihjb2xvckFycmF5WzBdLCBjb2xvckFycmF5
WzFdLCBjb2xvckFycmF5WzJdKTsKKyAgICB9CisgICAgcmV0dXJuIGFyZ3MuYXRFbmQoKTsKK30K
Kworc3RhdGljIGJvb2wgcGFyc2VIU0xQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBSR0JBMzImIHJlc3VsdCwgYm9vbCBwYXJzZUFscGhhKQoreworICAgIEFTU0VSVChyYW5n
ZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlSHNsIHx8IHJhbmdlLnBlZWsoKS5mdW5j
dGlvbklkKCkgPT0gQ1NTVmFsdWVIc2xhKTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3Mg
PSBjb25zdW1lRnVuY3Rpb24ocmFuZ2UpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBoc2xWYWx1
ZSA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKCFoc2xWYWx1
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGRvdWJsZSBjb2xvckFycmF5WzNdOworICAg
IGNvbG9yQXJyYXlbMF0gPSAoKChoc2xWYWx1ZS0+Z2V0SW50VmFsdWUoKSAlIDM2MCkgKyAzNjAp
ICUgMzYwKSAvIDM2MC4wOworICAgIGZvciAoaW50IGkgPSAxOyBpIDwgMzsgaSsrKSB7CisgICAg
ICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaHNsVmFsdWUgPSBjb25zdW1lUGVyY2VudChhcmdz
LCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgaWYgKCFoc2xWYWx1ZSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgZG91YmxlIGRvdWJsZVZhbHVlID0gaHNsVmFsdWUtPmdldERv
dWJsZVZhbHVlKCk7CisgICAgICAgIGNvbG9yQXJyYXlbaV0gPSBjbGFtcFRvPGRvdWJsZT4oZG91
YmxlVmFsdWUsIDAuMCwgMTAwLjApIC8gMTAwLjA7IC8vIE5lZWRzIHRvIGJlIHZhbHVlIGJldHdl
ZW4gMCBhbmQgMS4wLgorICAgIH0KKyAgICBkb3VibGUgYWxwaGEgPSAxLjA7CisgICAgaWYgKHBh
cnNlQWxwaGEpIHsKKyAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNl
KGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWNvbnN1bWVO
dW1iZXJSYXcoYXJncywgYWxwaGEpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBhbHBoYSA9IGNsYW1wVG88ZG91YmxlPihhbHBoYSwgMC4wLCAxLjApOworICAgIH0KKyAgICBy
ZXN1bHQgPSBtYWtlUkdCQUZyb21IU0xBKGNvbG9yQXJyYXlbMF0sIGNvbG9yQXJyYXlbMV0sIGNv
bG9yQXJyYXlbMl0sIGFscGhhKTsKKyAgICByZXR1cm4gYXJncy5hdEVuZCgpOworfQorCitzdGF0
aWMgYm9vbCBwYXJzZUhleENvbG9yKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBSR0JBMzIm
IHJlc3VsdCwgYm9vbCBhY2NlcHRRdWlya3lDb2xvcnMpCit7CisgICAgY29uc3QgQ1NTUGFyc2Vy
VG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSGFz
aFRva2VuKSB7CisgICAgICAgIGlmICghQ29sb3I6OnBhcnNlSGV4Q29sb3IodG9rZW4udmFsdWUo
KSwgcmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IGVsc2UgaWYgKGFj
Y2VwdFF1aXJreUNvbG9ycykgeworICAgICAgICBTdHJpbmcgY29sb3I7CisgICAgICAgIGlmICh0
b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4gfHwgdG9rZW4udHlwZSgpID09IERpbWVuc2lvblRv
a2VuKSB7CisgICAgICAgICAgICBpZiAodG9rZW4ubnVtZXJpY1ZhbHVlVHlwZSgpICE9IEludGVn
ZXJWYWx1ZVR5cGUKKyAgICAgICAgICAgICAgICB8fCB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDAu
IHx8IHRva2VuLm51bWVyaWNWYWx1ZSgpID49IDEwMDAwMDAuKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICh0b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4p
IC8vIGUuZy4gMTEyMjMzCisgICAgICAgICAgICAgICAgY29sb3IgPSBTdHJpbmc6OmZvcm1hdCgi
JWQiLCBzdGF0aWNfY2FzdDxpbnQ+KHRva2VuLm51bWVyaWNWYWx1ZSgpKSk7CisgICAgICAgICAg
ICBlbHNlIC8vIGUuZy4gMDAwMUZGCisgICAgICAgICAgICAgICAgY29sb3IgPSBTdHJpbmc6Om51
bWJlcihzdGF0aWNfY2FzdDxpbnQ+KHRva2VuLm51bWVyaWNWYWx1ZSgpKSkgKyB0b2tlbi52YWx1
ZSgpLnRvU3RyaW5nKCk7CisgICAgICAgICAgICB3aGlsZSAoY29sb3IubGVuZ3RoKCkgPCA2KQor
ICAgICAgICAgICAgICAgIGNvbG9yID0gIjAiICsgY29sb3I7CisgICAgICAgIH0gZWxzZSBpZiAo
dG9rZW4udHlwZSgpID09IElkZW50VG9rZW4pIHsgLy8gZS5nLiBGRjAwMDAKKyAgICAgICAgICAg
IGNvbG9yID0gdG9rZW4udmFsdWUoKS50b1N0cmluZygpOworICAgICAgICB9CisgICAgICAgIHVu
c2lnbmVkIGxlbmd0aCA9IGNvbG9yLmxlbmd0aCgpOworICAgICAgICBpZiAobGVuZ3RoICE9IDMg
JiYgbGVuZ3RoICE9IDYpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICgh
Q29sb3I6OnBhcnNlSGV4Q29sb3IoY29sb3IsIHJlc3VsdCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBy
YW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgIHJldHVybiB0cnVlOworfQor
CitzdGF0aWMgYm9vbCBwYXJzZUNvbG9yRnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIFJHQkEzMiYgcmVzdWx0KQoreworICAgIENTU1ZhbHVlSUQgZnVuY3Rpb25JZCA9IHJhbmdl
LnBlZWsoKS5mdW5jdGlvbklkKCk7CisgICAgaWYgKGZ1bmN0aW9uSWQgPCBDU1NWYWx1ZVJnYiB8
fCBmdW5jdGlvbklkID4gQ1NTVmFsdWVIc2xhKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
Q1NTUGFyc2VyVG9rZW5SYW5nZSBjb2xvclJhbmdlID0gcmFuZ2U7CisgICAgaWYgKChmdW5jdGlv
bklkIDw9IENTU1ZhbHVlUmdiYSAmJiAhcGFyc2VSR0JQYXJhbWV0ZXJzKGNvbG9yUmFuZ2UsIHJl
c3VsdCwgZnVuY3Rpb25JZCA9PSBDU1NWYWx1ZVJnYmEpKQorICAgICAgICB8fCAoZnVuY3Rpb25J
ZCA+PSBDU1NWYWx1ZUhzbCAmJiAhcGFyc2VIU0xQYXJhbWV0ZXJzKGNvbG9yUmFuZ2UsIHJlc3Vs
dCwgZnVuY3Rpb25JZCA9PSBDU1NWYWx1ZUhzbGEpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJhbmdlID0gY29sb3JSYW5nZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworQ1NTVmFsdWUq
IGNvbnN1bWVDb2xvcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBj
c3NQYXJzZXJNb2RlLCBib29sIGFjY2VwdFF1aXJreUNvbG9ycykKK3sKKyAgICBDU1NWYWx1ZUlE
IGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgaWYgKFN0eWxlQ29sb3I6OmlzQ29sb3JLZXl3
b3JkKGlkKSkgeworICAgICAgICBpZiAoIWlzVmFsdWVBbGxvd2VkSW5Nb2RlKGlkLCBjc3NQYXJz
ZXJNb2RlKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gY29u
c3VtZUlkZW50KHJhbmdlKTsKKyAgICB9CisgICAgUkdCQTMyIGNvbG9yID0gQ29sb3I6OnRyYW5z
cGFyZW50OworICAgIGlmICghcGFyc2VIZXhDb2xvcihyYW5nZSwgY29sb3IsIGFjY2VwdFF1aXJr
eUNvbG9ycykgJiYgIXBhcnNlQ29sb3JGdW5jdGlvbihyYW5nZSwgY29sb3IpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gQ1NTQ29sb3JWYWx1ZTo6Y3JlYXRlKGNvbG9yKTsK
K30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lUG9zaXRpb25Db21wb25lbnQo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwg
VW5pdGxlc3NRdWlyayB1bml0bGVzcykKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSA9
PSBJZGVudFRva2VuKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlTGVmdCwg
Q1NTVmFsdWVUb3AsIENTU1ZhbHVlQm90dG9tLCBDU1NWYWx1ZVJpZ2h0LCBDU1NWYWx1ZUNlbnRl
cj4ocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQ
YXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsLCB1bml0bGVzcyk7Cit9CisKK3N0YXRpYyBib29sIGlz
SG9yaXpvbnRhbFBvc2l0aW9uS2V5d29yZE9ubHkoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZh
bHVlKQoreworICAgIHJldHVybiB2YWx1ZS5pc1ZhbHVlSUQoKSAmJiAodmFsdWUuZ2V0VmFsdWVJ
RCgpID09IENTU1ZhbHVlTGVmdCB8fCB2YWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVSaWdo
dCk7Cit9CisKK3N0YXRpYyBib29sIGlzVmVydGljYWxQb3NpdGlvbktleXdvcmRPbmx5KGNvbnN0
IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUuaXNWYWx1ZUlE
KCkgJiYgKHZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVRvcCB8fCB2YWx1ZS5nZXRWYWx1
ZUlEKCkgPT0gQ1NTVmFsdWVCb3R0b20pOworfQorCitzdGF0aWMgdm9pZCBwb3NpdGlvbkZyb21P
bmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUsIENTU1ZhbHVlKiYgcmVzdWx0WCwgQ1NT
VmFsdWUqJiByZXN1bHRZKQoreworICAgIGJvb2wgdmFsdWVBcHBsaWVzVG9ZQXhpc09ubHkgPSBp
c1ZlcnRpY2FsUG9zaXRpb25LZXl3b3JkT25seSgqdmFsdWUpOworICAgIHJlc3VsdFggPSB2YWx1
ZTsKKyAgICByZXN1bHRZID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NT
VmFsdWVDZW50ZXIpOworICAgIGlmICh2YWx1ZUFwcGxpZXNUb1lBeGlzT25seSkKKyAgICAgICAg
c3RkOjpzd2FwKHJlc3VsdFgsIHJlc3VsdFkpOworfQorCitzdGF0aWMgYm9vbCBwb3NpdGlvbkZy
b21Ud29WYWx1ZXMoQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlMSwgQ1NTUHJpbWl0aXZlVmFsdWUq
IHZhbHVlMiwKKyAgICBDU1NWYWx1ZSomIHJlc3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSkKK3sK
KyAgICBib29sIG11c3RPcmRlckFzWFkgPSBpc0hvcml6b250YWxQb3NpdGlvbktleXdvcmRPbmx5
KCp2YWx1ZTEpIHx8IGlzVmVydGljYWxQb3NpdGlvbktleXdvcmRPbmx5KCp2YWx1ZTIpCisgICAg
ICAgIHx8ICF2YWx1ZTEtPmlzVmFsdWVJRCgpIHx8ICF2YWx1ZTItPmlzVmFsdWVJRCgpOworICAg
IGJvb2wgbXVzdE9yZGVyQXNZWCA9IGlzVmVydGljYWxQb3NpdGlvbktleXdvcmRPbmx5KCp2YWx1
ZTEpIHx8IGlzSG9yaXpvbnRhbFBvc2l0aW9uS2V5d29yZE9ubHkoKnZhbHVlMik7CisgICAgaWYg
KG11c3RPcmRlckFzWFkgJiYgbXVzdE9yZGVyQXNZWCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJlc3VsdFggPSB2YWx1ZTE7CisgICAgcmVzdWx0WSA9IHZhbHVlMjsKKyAgICBpZiAobXVz
dE9yZGVyQXNZWCkKKyAgICAgICAgc3RkOjpzd2FwKHJlc3VsdFgsIHJlc3VsdFkpOworICAgIHJl
dHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBwb3NpdGlvbkZyb21UaHJlZU9yRm91clZhbHVl
cyhDU1NQcmltaXRpdmVWYWx1ZSoqIHZhbHVlcywgQ1NTVmFsdWUqJiByZXN1bHRYLCBDU1NWYWx1
ZSomIHJlc3VsdFkpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNlbnRlciA9IG51bGxwdHI7
CisgICAgZm9yIChpbnQgaSA9IDA7IHZhbHVlc1tpXTsgaSsrKSB7CisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBjdXJyZW50VmFsdWUgPSB2YWx1ZXNbaV07CisgICAgICAgIGlmICghY3VycmVu
dFZhbHVlLT5pc1ZhbHVlSUQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
Q1NTVmFsdWVJRCBpZCA9IGN1cnJlbnRWYWx1ZS0+Z2V0VmFsdWVJRCgpOworCisgICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZUNlbnRlcikgeworICAgICAgICAgICAgaWYgKGNlbnRlcikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBjZW50ZXIgPSBjdXJyZW50VmFs
dWU7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIENTU1ZhbHVl
KiByZXN1bHQgPSBudWxscHRyOworICAgICAgICBpZiAodmFsdWVzW2kgKyAxXSAmJiAhdmFsdWVz
W2kgKyAxXS0+aXNWYWx1ZUlEKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IENTU1ZhbHVlUGFp
cjo6Y3JlYXRlKGN1cnJlbnRWYWx1ZSwgdmFsdWVzWysraV0sIENTU1ZhbHVlUGFpcjo6S2VlcElk
ZW50aWNhbFZhbHVlcyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXN1bHQgPSBj
dXJyZW50VmFsdWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVMZWZ0
IHx8IGlkID09IENTU1ZhbHVlUmlnaHQpIHsKKyAgICAgICAgICAgIGlmIChyZXN1bHRYKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJlc3VsdFggPSByZXN1bHQ7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQoaWQgPT0gQ1NTVmFsdWVUb3Ag
fHwgaWQgPT0gQ1NTVmFsdWVCb3R0b20pOworICAgICAgICAgICAgaWYgKHJlc3VsdFkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmVzdWx0WSA9IHJlc3VsdDsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChjZW50ZXIpIHsKKyAgICAgICAgQVNTRVJUKHJl
c3VsdFggfHwgcmVzdWx0WSk7CisgICAgICAgIGlmIChyZXN1bHRYICYmIHJlc3VsdFkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghcmVzdWx0WCkKKyAgICAgICAgICAg
IHJlc3VsdFggPSBjZW50ZXI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdFkgPSBj
ZW50ZXI7CisgICAgfQorCisgICAgQVNTRVJUKHJlc3VsdFggJiYgcmVzdWx0WSk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKKy8vIEZJWE1FOiBUaGlzIG1heSBjb25zdW1lIGZyb20gdGhlIHJhbmdl
IHVwb24gZmFpbHVyZS4gVGhlIGJhY2tncm91bmQKKy8vIHNob3J0aGFuZCB3b3JrcyBhcm91bmQg
aXQsIGJ1dCB3ZSBzaG91bGQganVzdCBmaXggaXQgaGVyZS4KK2Jvb2wgY29uc3VtZVBvc2l0aW9u
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUs
IFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MsIENTU1ZhbHVlKiYgcmVzdWx0WCwgQ1NTVmFsdWUqJiBy
ZXN1bHRZKQoreworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZTEgPSBjb25zdW1lUG9zaXRp
b25Db21wb25lbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKTsKKyAgICBpZiAoIXZh
bHVlMSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZh
bHVlMiA9IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5p
dGxlc3MpOworICAgIGlmICghdmFsdWUyKSB7CisgICAgICAgIHBvc2l0aW9uRnJvbU9uZVZhbHVl
KHZhbHVlMSwgcmVzdWx0WCwgcmVzdWx0WSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZTMgPSBjb25zdW1lUG9zaXRpb25Db21wb25l
bnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKTsKKyAgICBpZiAoIXZhbHVlMykKKyAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uRnJvbVR3b1ZhbHVlcyh2YWx1ZTEsIHZhbHVlMiwgcmVzdWx0
WCwgcmVzdWx0WSk7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWU0ID0gY29uc3VtZVBv
c2l0aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7CisgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHZhbHVlc1s1XTsKKyAgICB2YWx1ZXNbMF0gPSB2YWx1ZTE7CisgICAg
dmFsdWVzWzFdID0gdmFsdWUyOworICAgIHZhbHVlc1syXSA9IHZhbHVlMzsKKyAgICB2YWx1ZXNb
M10gPSB2YWx1ZTQ7CisgICAgdmFsdWVzWzRdID0gbnVsbHB0cjsKKyAgICByZXR1cm4gcG9zaXRp
b25Gcm9tVGhyZWVPckZvdXJWYWx1ZXModmFsdWVzLCByZXN1bHRYLCByZXN1bHRZKTsKK30KKwor
Q1NTVmFsdWVQYWlyKiBjb25zdW1lUG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Us
IENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKK3sK
KyAgICBDU1NWYWx1ZSogcmVzdWx0WCA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIHJlc3VsdFkg
PSBudWxscHRyOworICAgIGlmIChjb25zdW1lUG9zaXRpb24ocmFuZ2UsIGNzc1BhcnNlck1vZGUs
IHVuaXRsZXNzLCByZXN1bHRYLCByZXN1bHRZKSkKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVlUGFp
cjo6Y3JlYXRlKHJlc3VsdFgsIHJlc3VsdFksIENTU1ZhbHVlUGFpcjo6S2VlcElkZW50aWNhbFZh
bHVlcyk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wgY29uc3VtZU9uZU9yVHdvVmFs
dWVkUG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3Nz
UGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcywgQ1NTVmFsdWUqJiByZXN1bHRYLCBD
U1NWYWx1ZSomIHJlc3VsdFkpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlMSA9IGNv
bnN1bWVQb3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpOwor
ICAgIGlmICghdmFsdWUxKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHZhbHVlMiA9IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2Vy
TW9kZSwgdW5pdGxlc3MpOworICAgIGlmICghdmFsdWUyKSB7CisgICAgICAgIHBvc2l0aW9uRnJv
bU9uZVZhbHVlKHZhbHVlMSwgcmVzdWx0WCwgcmVzdWx0WSk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICByZXR1cm4gcG9zaXRpb25Gcm9tVHdvVmFsdWVzKHZhbHVlMSwgdmFsdWUy
LCByZXN1bHRYLCByZXN1bHRZKTsKK30KKworLy8gVGhpcyBzaG91bGQgZ28gYXdheSBvbmNlIHdl
IGRyb3Agc3VwcG9ydCBmb3IgLXdlYmtpdC1ncmFkaWVudAorc3RhdGljIENTU1ByaW1pdGl2ZVZh
bHVlKiBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50UG9pbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
YXJncywgYm9vbCBob3Jpem9udGFsKQoreworICAgIGlmIChhcmdzLnBlZWsoKS50eXBlKCkgPT0g
SWRlbnRUb2tlbikgeworICAgICAgICBpZiAoKGhvcml6b250YWwgJiYgY29uc3VtZUlkZW50PENT
U1ZhbHVlTGVmdD4oYXJncykpIHx8ICghaG9yaXpvbnRhbCAmJiBjb25zdW1lSWRlbnQ8Q1NTVmFs
dWVUb3A+KGFyZ3MpKSkKKyAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKDAuLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBlcmNlbnRhZ2UpOworICAgICAg
ICBpZiAoKGhvcml6b250YWwgJiYgY29uc3VtZUlkZW50PENTU1ZhbHVlUmlnaHQ+KGFyZ3MpKSB8
fCAoIWhvcml6b250YWwgJiYgY29uc3VtZUlkZW50PENTU1ZhbHVlQm90dG9tPihhcmdzKSkpCisg
ICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxMDAuLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBlcmNlbnRhZ2UpOworICAgICAgICBpZiAoY29uc3VtZUlk
ZW50PENTU1ZhbHVlQ2VudGVyPihhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKDUwLiwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQZXJjZW50
YWdlKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiByZXN1bHQgPSBjb25zdW1lUGVyY2VudChhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBp
ZiAoIXJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0gY29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJh
bmdlQWxsKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvLyBVc2VkIHRvIHBhcnNlIGNvbG9y
cyBmb3IgLXdlYmtpdC1ncmFkaWVudCguLi4pLgorc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lRGVw
cmVjYXRlZEdyYWRpZW50U3RvcENvbG9yKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1Bh
cnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAoYXJncy5wZWVrKCkuaWQoKSA9PSBD
U1NWYWx1ZUN1cnJlbnRjb2xvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IGNvbnN1bWVDb2xvcihhcmdzLCBjc3NQYXJzZXJNb2RlKTsKK30KKworc3RhdGljIGJvb2wgY29u
c3VtZURlcHJlY2F0ZWRHcmFkaWVudENvbG9yU3RvcChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgQ1NTR3JhZGllbnRDb2xvclN0b3AmIHN0b3AsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9k
ZSkKK3sKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKTsKKyAg
ICBpZiAoaWQgIT0gQ1NTVmFsdWVGcm9tICYmIGlkICE9IENTU1ZhbHVlVG8gJiYgaWQgIT0gQ1NT
VmFsdWVDb2xvclN0b3ApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENTU1BhcnNlclRv
a2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7CisgICAgZG91YmxlIHBvc2l0
aW9uOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZUZyb20gfHwgaWQgPT0gQ1NTVmFsdWVUbykgewor
ICAgICAgICBwb3NpdGlvbiA9IChpZCA9PSBDU1NWYWx1ZUZyb20pID8gMCA6IDE7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgRENIRUNLKGlkID09IENTU1ZhbHVlQ29sb3JTdG9wKTsKKyAgICAgICAg
Y29uc3QgQ1NTUGFyc2VyVG9rZW4mIGFyZyA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3Bh
Y2UoKTsKKyAgICAgICAgaWYgKGFyZy50eXBlKCkgPT0gUGVyY2VudGFnZVRva2VuKQorICAgICAg
ICAgICAgcG9zaXRpb24gPSBhcmcubnVtZXJpY1ZhbHVlKCkgLyAxMDAuMDsKKyAgICAgICAgZWxz
ZSBpZiAoYXJnLnR5cGUoKSA9PSBOdW1iZXJUb2tlbikKKyAgICAgICAgICAgIHBvc2l0aW9uID0g
YXJnLm51bWVyaWNWYWx1ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3Mp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN0b3AubV9wb3NpdGlv
biA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocG9zaXRpb24sIENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZTo6TnVtYmVyKTsKKyAgICBzdG9wLm1fY29sb3IgPSBjb25zdW1lRGVwcmVjYXRl
ZEdyYWRpZW50U3RvcENvbG9yKGFyZ3MsIGNzc1BhcnNlck1vZGUpOworICAgIHJldHVybiBzdG9w
Lm1fY29sb3IgJiYgYXJncy5hdEVuZCgpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVE
ZXByZWNhdGVkR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlKQoreworICAgIENTU0dyYWRpZW50VmFsdWUqIHJlc3VsdCA9IG51bGxw
dHI7CisgICAgQ1NTVmFsdWVJRCBpZCA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2Uo
KS5pZCgpOworICAgIGJvb2wgaXNEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQgPSAoaWQgPT0gQ1NT
VmFsdWVSYWRpYWwpOworICAgIGlmIChpc0RlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCkKKyAgICAg
ICAgcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJlcGVhdGluZywg
Q1NTRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KTsKKyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1
ZUxpbmVhcikKKyAgICAgICAgcmVzdWx0ID0gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRl
KE5vblJlcGVhdGluZywgQ1NTRGVwcmVjYXRlZExpbmVhckdyYWRpZW50KTsKKyAgICBpZiAoIXJl
c3VsdCB8fCAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcG9pbnQgPSBjb25zdW1l
RGVwcmVjYXRlZEdyYWRpZW50UG9pbnQoYXJncywgdHJ1ZSk7CisgICAgaWYgKCFwb2ludCkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmVzdWx0LT5zZXRGaXJzdFgocG9pbnQpOworICAg
IHBvaW50ID0gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudFBvaW50KGFyZ3MsIGZhbHNlKTsKKyAg
ICBpZiAoIXBvaW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXN1bHQtPnNldEZp
cnN0WShwb2ludCk7CisKKyAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2Uo
YXJncykpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gRm9yIHJhZGlhbCBncmFk
aWVudHMgb25seSwgd2Ugbm93IGV4cGVjdCBhIG51bWVyaWMgcmFkaXVzLgorICAgIGlmIChpc0Rl
cHJlY2F0ZWRSYWRpYWxHcmFkaWVudCkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcmFk
aXVzID0gY29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgaWYgKCFy
YWRpdXMgfHwgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgdG9DU1NSYWRpYWxHcmFkaWVudFZhbHVlKHJl
c3VsdCktPnNldEZpcnN0UmFkaXVzKHJhZGl1cyk7CisgICAgfQorCisgICAgcG9pbnQgPSBjb25z
dW1lRGVwcmVjYXRlZEdyYWRpZW50UG9pbnQoYXJncywgdHJ1ZSk7CisgICAgaWYgKCFwb2ludCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmVzdWx0LT5zZXRTZWNvbmRYKHBvaW50KTsK
KyAgICBwb2ludCA9IGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnRQb2ludChhcmdzLCBmYWxzZSk7
CisgICAgaWYgKCFwb2ludCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmVzdWx0LT5z
ZXRTZWNvbmRZKHBvaW50KTsKKworICAgIC8vIEZvciByYWRpYWwgZ3JhZGllbnRzIG9ubHksIHdl
IG5vdyBleHBlY3QgdGhlIHNlY29uZCByYWRpdXMuCisgICAgaWYgKGlzRGVwcmVjYXRlZFJhZGlh
bEdyYWRpZW50KSB7CisgICAgICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFj
ZShhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcmFkaXVzID0gY29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKKyAg
ICAgICAgaWYgKCFyYWRpdXMpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
dG9DU1NSYWRpYWxHcmFkaWVudFZhbHVlKHJlc3VsdCktPnNldFNlY29uZFJhZGl1cyhyYWRpdXMp
OworICAgIH0KKworICAgIENTU0dyYWRpZW50Q29sb3JTdG9wIHN0b3A7CisgICAgd2hpbGUgKGNv
bnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpIHsKKyAgICAgICAgaWYgKCFjb25z
dW1lRGVwcmVjYXRlZEdyYWRpZW50Q29sb3JTdG9wKGFyZ3MsIHN0b3AsIGNzc1BhcnNlck1vZGUp
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJlc3VsdC0+YWRkU3RvcChz
dG9wKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgYm9vbCBjb25z
dW1lR3JhZGllbnRDb2xvclN0b3BzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJz
ZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU0dyYWRpZW50VmFsdWUqIGdyYWRpZW50KQoreworICAg
IGJvb2wgc3VwcG9ydHNDb2xvckhpbnRzID0gZ3JhZGllbnQtPmdyYWRpZW50VHlwZSgpID09IENT
U0xpbmVhckdyYWRpZW50IHx8IGdyYWRpZW50LT5ncmFkaWVudFR5cGUoKSA9PSBDU1NSYWRpYWxH
cmFkaWVudDsKKworICAgIC8vIFRoZSBmaXJzdCBjb2xvciBzdG9wIGNhbm5vdCBiZSBhIGNvbG9y
IGhpbnQuCisgICAgYm9vbCBwcmV2aW91c1N0b3BXYXNDb2xvckhpbnQgPSB0cnVlOworICAgIGRv
IHsKKyAgICAgICAgQ1NTR3JhZGllbnRDb2xvclN0b3Agc3RvcDsKKyAgICAgICAgc3RvcC5tX2Nv
bG9yID0gY29uc3VtZUNvbG9yKHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKKyAgICAgICAgLy8gVHdv
IGhpbnRzIGluIGEgcm93IGFyZSBub3QgYWxsb3dlZC4KKyAgICAgICAgaWYgKCFzdG9wLm1fY29s
b3IgJiYgKCFzdXBwb3J0c0NvbG9ySGludHMgfHwgcHJldmlvdXNTdG9wV2FzQ29sb3JIaW50KSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcHJldmlvdXNTdG9wV2FzQ29sb3JI
aW50ID0gIXN0b3AubV9jb2xvcjsKKyAgICAgICAgc3RvcC5tX3Bvc2l0aW9uID0gY29uc3VtZUxl
bmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAg
ICAgIGlmICghc3RvcC5tX2NvbG9yICYmICFzdG9wLm1fcG9zaXRpb24pCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGdyYWRpZW50LT5hZGRTdG9wKHN0b3ApOworICAgIH0gd2hp
bGUgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKTsKKworICAgIC8vIFRo
ZSBsYXN0IGNvbG9yIHN0b3AgY2Fubm90IGJlIGEgY29sb3IgaGludC4KKyAgICBpZiAocHJldmlv
dXNTdG9wV2FzQ29sb3JIaW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNdXN0
IGhhdmUgMiBvciBtb3JlIHN0b3BzIHRvIGJlIHZhbGlkLgorICAgIHJldHVybiBncmFkaWVudC0+
c3RvcENvdW50KCkgPj0gMjsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lRGVwcmVjYXRl
ZFJhZGlhbEdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlck1vZGUg
Y3NzUGFyc2VyTW9kZSwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nKQoreworICAgIENTU1Jh
ZGlhbEdyYWRpZW50VmFsdWUqIHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0
ZShyZXBlYXRpbmcsIENTU1ByZWZpeGVkUmFkaWFsR3JhZGllbnQpOworICAgIENTU1ZhbHVlKiBj
ZW50ZXJYID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogY2VudGVyWSA9IG51bGxwdHI7CisgICAg
Y29uc3VtZU9uZU9yVHdvVmFsdWVkUG9zaXRpb24oYXJncywgY3NzUGFyc2VyTW9kZSwgVW5pdGxl
c3NRdWlyazo6Rm9yYmlkLCBjZW50ZXJYLCBjZW50ZXJZKTsKKyAgICBpZiAoKGNlbnRlclggfHwg
Y2VudGVyWSkgJiYgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgcmVzdWx0LT5zZXRGaXJzdFgodG9DU1NQcmltaXRp
dmVWYWx1ZShjZW50ZXJYKSk7CisgICAgcmVzdWx0LT5zZXRTZWNvbmRYKHRvQ1NTUHJpbWl0aXZl
VmFsdWUoY2VudGVyWCkpOworICAgIHJlc3VsdC0+c2V0Rmlyc3RZKHRvQ1NTUHJpbWl0aXZlVmFs
dWUoY2VudGVyWSkpOworICAgIHJlc3VsdC0+c2V0U2Vjb25kWSh0b0NTU1ByaW1pdGl2ZVZhbHVl
KGNlbnRlclkpKTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzaGFwZSA9IGNvbnN1bWVJZGVu
dDxDU1NWYWx1ZUNpcmNsZSwgQ1NTVmFsdWVFbGxpcHNlPihhcmdzKTsKKyAgICBDU1NQcmltaXRp
dmVWYWx1ZSogc2l6ZUtleXdvcmQgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVDbG9zZXN0U2lkZSwg
Q1NTVmFsdWVDbG9zZXN0Q29ybmVyLCBDU1NWYWx1ZUZhcnRoZXN0U2lkZSwgQ1NTVmFsdWVGYXJ0
aGVzdENvcm5lciwgQ1NTVmFsdWVDb250YWluLCBDU1NWYWx1ZUNvdmVyPihhcmdzKTsKKyAgICBp
ZiAoIXNoYXBlKQorICAgICAgICBzaGFwZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUNpcmNsZSwg
Q1NTVmFsdWVFbGxpcHNlPihhcmdzKTsKKyAgICByZXN1bHQtPnNldFNoYXBlKHNoYXBlKTsKKyAg
ICByZXN1bHQtPnNldFNpemluZ0JlaGF2aW9yKHNpemVLZXl3b3JkKTsKKworICAgIC8vIE9yLCB0
d28gbGVuZ3RocyBvciBwZXJjZW50YWdlcworICAgIGlmICghc2hhcGUgJiYgIXNpemVLZXl3b3Jk
KSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBob3Jpem9udGFsU2l6ZSA9IGNvbnN1bWVM
ZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2ZXJ0aWNhbFNpemUgPSBudWxscHRyOworICAgICAgICBp
ZiAoaG9yaXpvbnRhbFNpemUpIHsKKyAgICAgICAgICAgIHZlcnRpY2FsU2l6ZSA9IGNvbnN1bWVM
ZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAg
ICAgICAgICBpZiAoIXZlcnRpY2FsU2l6ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgICAgIGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncyk7Cisg
ICAgICAgICAgICByZXN1bHQtPnNldEVuZEhvcml6b250YWxTaXplKGhvcml6b250YWxTaXplKTsK
KyAgICAgICAgICAgIHJlc3VsdC0+c2V0RW5kVmVydGljYWxTaXplKHZlcnRpY2FsU2l6ZSk7Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0
ZXNwYWNlKGFyZ3MpOworICAgIH0KKyAgICBpZiAoIWNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMo
YXJncywgY3NzUGFyc2VyTW9kZSwgcmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVSYWRpYWxH
cmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNl
ck1vZGUsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykKK3sKKyAgICBDU1NSYWRpYWxHcmFk
aWVudFZhbHVlKiByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0
aW5nLCBDU1NSYWRpYWxHcmFkaWVudCk7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2hhcGUg
PSBudWxscHRyOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzaXplS2V5d29yZCA9IG51bGxwdHI7
CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGhvcml6b250YWxTaXplID0gbnVsbHB0cjsKKyAgICBD
U1NQcmltaXRpdmVWYWx1ZSogdmVydGljYWxTaXplID0gbnVsbHB0cjsKKworICAgIC8vIEZpcnN0
IHBhcnQgb2YgZ3JhbW1hciwgdGhlIHNpemUvc2hhcGUgY2xhdXNlOgorICAgIC8vIFsgY2lyY2xl
IHx8IDxsZW5ndGg+IF0gfAorICAgIC8vIFsgZWxsaXBzZSB8fCBbIDxsZW5ndGg+IHwgPHBlcmNl
bnRhZ2U+IF17Mn0gXSB8CisgICAgLy8gWyBbIGNpcmNsZSB8IGVsbGlwc2VdIHx8IDxzaXplLWtl
eXdvcmQ+IF0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkgeworICAgICAgICBpZiAo
YXJncy5wZWVrKCkudHlwZSgpID09IElkZW50VG9rZW4pIHsKKyAgICAgICAgICAgIENTU1ZhbHVl
SUQgaWQgPSBhcmdzLnBlZWsoKS5pZCgpOworICAgICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
Q2lyY2xlIHx8IGlkID09IENTU1ZhbHVlRWxsaXBzZSkgeworICAgICAgICAgICAgICAgIGlmIChz
aGFwZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAg
ICAgc2hhcGUgPSBjb25zdW1lSWRlbnQoYXJncyk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlk
ID09IENTU1ZhbHVlQ2xvc2VzdFNpZGUgfHwgaWQgPT0gQ1NTVmFsdWVDbG9zZXN0Q29ybmVyIHx8
IGlkID09IENTU1ZhbHVlRmFydGhlc3RTaWRlIHx8IGlkID09IENTU1ZhbHVlRmFydGhlc3RDb3Ju
ZXIpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2l6ZUtleXdvcmQpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAgIHNpemVLZXl3b3JkID0gY29uc3Vt
ZUlkZW50KGFyZ3MpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBjZW50ZXIgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNzc1BhcnNl
ck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICAgICAgaWYgKCFjZW50ZXIpCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoaG9yaXpvbnRhbFNpemUpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBob3Jpem9udGFsU2l6ZSA9IGNl
bnRlcjsKKyAgICAgICAgICAgIGNlbnRlciA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywg
Y3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgICAgICBpZiAoY2VudGVyKSB7
CisgICAgICAgICAgICAgICAgdmVydGljYWxTaXplID0gY2VudGVyOworICAgICAgICAgICAgICAg
ICsraTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFlvdSBjYW4g
c3BlY2lmeSBzaXplIGFzIGEga2V5d29yZCBvciBhIGxlbmd0aC9wZXJjZW50YWdlLCBub3QgYm90
aC4KKyAgICBpZiAoc2l6ZUtleXdvcmQgJiYgaG9yaXpvbnRhbFNpemUpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIC8vIENpcmNsZXMgbXVzdCBoYXZlIDAgb3IgMSBsZW5ndGhzLgorICAg
IGlmIChzaGFwZSAmJiBzaGFwZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQ2lyY2xlICYmIHZl
cnRpY2FsU2l6ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgLy8gRWxsaXBzZXMgbXVz
dCBoYXZlIDAgb3IgMiBsZW5ndGgvcGVyY2VudGFnZXMuCisgICAgaWYgKHNoYXBlICYmIHNoYXBl
LT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVFbGxpcHNlICYmIGhvcml6b250YWxTaXplICYmICF2
ZXJ0aWNhbFNpemUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIC8vIElmIHRoZXJlJ3Mg
b25seSBvbmUgc2l6ZSwgaXQgbXVzdCBiZSBhIGxlbmd0aC4KKyAgICBpZiAoIXZlcnRpY2FsU2l6
ZSAmJiBob3Jpem9udGFsU2l6ZSAmJiBob3Jpem9udGFsU2l6ZS0+aXNQZXJjZW50YWdlKCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICgoaG9yaXpvbnRhbFNpemUgJiYgaG9yaXpv
bnRhbFNpemUtPmlzQ2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoKCkpCisgICAgICAgIHx8
ICh2ZXJ0aWNhbFNpemUgJiYgdmVydGljYWxTaXplLT5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0
aExlbmd0aCgpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXN1bHQtPnNldFNo
YXBlKHNoYXBlKTsKKyAgICByZXN1bHQtPnNldFNpemluZ0JlaGF2aW9yKHNpemVLZXl3b3JkKTsK
KyAgICByZXN1bHQtPnNldEVuZEhvcml6b250YWxTaXplKGhvcml6b250YWxTaXplKTsKKyAgICBy
ZXN1bHQtPnNldEVuZFZlcnRpY2FsU2l6ZSh2ZXJ0aWNhbFNpemUpOworCisgICAgQ1NTVmFsdWUq
IGNlbnRlclggPSBudWxscHRyOworICAgIENTU1ZhbHVlKiBjZW50ZXJZID0gbnVsbHB0cjsKKyAg
ICBpZiAoYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF0KSB7CisgICAgICAgIGFyZ3MuY29u
c3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgY29uc3VtZVBvc2l0aW9uKGFyZ3Ms
IGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgY2VudGVyWCwgY2VudGVyWSk7
CisgICAgICAgIGlmICghKGNlbnRlclggJiYgY2VudGVyWSkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgcmVzdWx0LT5zZXRGaXJzdFgoY2VudGVyWCk7CisgICAgICAgIHJl
c3VsdC0+c2V0Rmlyc3RZKGNlbnRlclkpOworICAgICAgICAvLyBSaWdodCBub3csIENTUyByYWRp
YWwgZ3JhZGllbnRzIGhhdmUgdGhlIHNhbWUgc3RhcnQgYW5kIGVuZCBjZW50ZXJzLgorICAgICAg
ICByZXN1bHQtPnNldFNlY29uZFgoY2VudGVyWCk7CisgICAgICAgIHJlc3VsdC0+c2V0U2Vjb25k
WShjZW50ZXJZKTsKKyAgICB9CisKKyAgICBpZiAoKHNoYXBlIHx8IHNpemVLZXl3b3JkIHx8IGhv
cml6b250YWxTaXplIHx8IGNlbnRlclggfHwgY2VudGVyWSkgJiYgIWNvbnN1bWVDb21tYUluY2x1
ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICgh
Y29uc3VtZUdyYWRpZW50Q29sb3JTdG9wcyhhcmdzLCBjc3NQYXJzZXJNb2RlLCByZXN1bHQpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMg
Q1NTVmFsdWUqIGNvbnN1bWVMaW5lYXJHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdz
LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGlu
ZywgQ1NTR3JhZGllbnRUeXBlIGdyYWRpZW50VHlwZSkKK3sKKyAgICBDU1NMaW5lYXJHcmFkaWVu
dFZhbHVlKiByZXN1bHQgPSBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5n
LCBncmFkaWVudFR5cGUpOworCisgICAgYm9vbCBleHBlY3RDb21tYSA9IHRydWU7CisgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIGFuZ2xlID0gY29uc3VtZUFuZ2xlKGFyZ3MpOworICAgIGlmIChhbmds
ZSkgeworICAgICAgICByZXN1bHQtPnNldEFuZ2xlKGFuZ2xlKTsKKyAgICB9IGVsc2UgaWYgKGdy
YWRpZW50VHlwZSA9PSBDU1NQcmVmaXhlZExpbmVhckdyYWRpZW50IHx8IGNvbnN1bWVJZGVudDxD
U1NWYWx1ZVRvPihhcmdzKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogZW5kWCA9IGNv
bnN1bWVJZGVudDxDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KGFyZ3MpOworICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogZW5kWSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUJvdHRvbSwgQ1NT
VmFsdWVUb3A+KGFyZ3MpOworICAgICAgICBpZiAoIWVuZFggJiYgIWVuZFkpIHsKKyAgICAgICAg
ICAgIGlmIChncmFkaWVudFR5cGUgPT0gQ1NTTGluZWFyR3JhZGllbnQpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBlbmRZID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVUb3ApOworICAgICAgICAgICAgZXhwZWN0Q29tbWEg
PSBmYWxzZTsKKyAgICAgICAgfSBlbHNlIGlmICghZW5kWCkgeworICAgICAgICAgICAgZW5kWCA9
IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KGFyZ3MpOworICAgICAg
ICB9CisKKyAgICAgICAgcmVzdWx0LT5zZXRGaXJzdFgoZW5kWCk7CisgICAgICAgIHJlc3VsdC0+
c2V0Rmlyc3RZKGVuZFkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGV4cGVjdENvbW1hID0gZmFs
c2U7CisgICAgfQorCisgICAgaWYgKGV4cGVjdENvbW1hICYmICFjb25zdW1lQ29tbWFJbmNsdWRp
bmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWNv
bnN1bWVHcmFkaWVudENvbG9yU3RvcHMoYXJncywgY3NzUGFyc2VyTW9kZSwgcmVzdWx0KSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQ1NTVmFsdWUq
IGNvbnN1bWVJbWFnZU9yTm9uZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2Vy
Q29udGV4dCBjb250ZXh0KQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1
ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBj
b25zdW1lSW1hZ2UocmFuZ2UsIGNvbnRleHQpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1
bWVDcm9zc0ZhZGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyQ29udGV4dCBj
b250ZXh0KQoreworICAgIENTU1ZhbHVlKiBmcm9tSW1hZ2VWYWx1ZSA9IGNvbnN1bWVJbWFnZU9y
Tm9uZShhcmdzLCBjb250ZXh0KTsKKyAgICBpZiAoIWZyb21JbWFnZVZhbHVlIHx8ICFjb25zdW1l
Q29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBDU1NWYWx1ZSogdG9JbWFnZVZhbHVlID0gY29uc3VtZUltYWdlT3JOb25lKGFyZ3MsIGNv
bnRleHQpOworICAgIGlmICghdG9JbWFnZVZhbHVlIHx8ICFjb25zdW1lQ29tbWFJbmNsdWRpbmdX
aGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwZXJjZW50YWdlID0gbnVsbHB0cjsKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tl
biYgcGVyY2VudGFnZUFyZyA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAg
ICBpZiAocGVyY2VudGFnZUFyZy50eXBlKCkgPT0gUGVyY2VudGFnZVRva2VuKQorICAgICAgICBw
ZXJjZW50YWdlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShjbGFtcFRvPGRvdWJsZT4ocGVy
Y2VudGFnZUFyZy5udW1lcmljVmFsdWUoKSAvIDEwMCwgMCwgMSksIENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZTo6TnVtYmVyKTsKKyAgICBlbHNlIGlmIChwZXJjZW50YWdlQXJnLnR5cGUoKSA9
PSBOdW1iZXJUb2tlbikKKyAgICAgICAgcGVyY2VudGFnZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUoY2xhbXBUbzxkb3VibGU+KHBlcmNlbnRhZ2VBcmcubnVtZXJpY1ZhbHVlKCksIDAsIDEp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6Ok51bWJlcik7CisKKyAgICBpZiAoIXBlcmNl
bnRhZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBDU1NDcm9zc2ZhZGVW
YWx1ZTo6Y3JlYXRlKGZyb21JbWFnZVZhbHVlLCB0b0ltYWdlVmFsdWUsIHBlcmNlbnRhZ2UpOwor
fQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVQYWludChDU1NQYXJzZXJUb2tlblJhbmdlJiBh
cmdzLCBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQpCit7CisgICAgRENIRUNLKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmNzc1BhaW50QVBJRW5hYmxlZCgpKTsKKworICAgIENTU0N1c3RvbUlkZW50
VmFsdWUqIG5hbWUgPSBjb25zdW1lQ3VzdG9tSWRlbnQoYXJncyk7CisgICAgaWYgKCFuYW1lKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBDU1NQYWludFZhbHVlOjpjcmVh
dGUobmFtZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUdlbmVyYXRlZEltYWdlKENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQpCit7Cisg
ICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCk7CisgICAgQ1NTUGFy
c2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSByYW5nZTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdl
IGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2VDb3B5KTsKKyAgICBDU1NWYWx1ZSogcmVzdWx0
ID0gbnVsbHB0cjsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVSYWRpYWxHcmFkaWVudCkgeworICAg
ICAgICByZXN1bHQgPSBjb25zdW1lUmFkaWFsR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCks
IE5vblJlcGVhdGluZyk7CisgICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVJlcGVhdGluZ1Jh
ZGlhbEdyYWRpZW50KSB7CisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVSYWRpYWxHcmFkaWVudChh
cmdzLCBjb250ZXh0Lm1vZGUoKSwgUmVwZWF0aW5nKTsKKyAgICB9IGVsc2UgaWYgKGlkID09IENT
U1ZhbHVlV2Via2l0TGluZWFyR3JhZGllbnQpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIHNlbmQgYSBkZXByZWNhdGlvbiBtZXNzYWdlLgorICAgICAgICBpZiAoY29udGV4dC51c2VD
b3VudGVyKCkpCisgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291
bnRlcjo6RGVwcmVjYXRlZFdlYktpdExpbmVhckdyYWRpZW50KTsKKyAgICAgICAgcmVzdWx0ID0g
Y29uc3VtZUxpbmVhckdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBOb25SZXBlYXRpbmcs
IENTU1ByZWZpeGVkTGluZWFyR3JhZGllbnQpOworICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTVmFs
dWVXZWJraXRSZXBlYXRpbmdMaW5lYXJHcmFkaWVudCkgeworICAgICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgc2VuZCBhIGRlcHJlY2F0aW9uIG1lc3NhZ2UuCisgICAgICAgIGlmIChjb250ZXh0
LnVzZUNvdW50ZXIoKSkKKyAgICAgICAgICAgIGNvbnRleHQudXNlQ291bnRlcigpLT5jb3VudChV
c2VDb3VudGVyOjpEZXByZWNhdGVkV2ViS2l0UmVwZWF0aW5nTGluZWFyR3JhZGllbnQpOworICAg
ICAgICByZXN1bHQgPSBjb25zdW1lTGluZWFyR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCks
IFJlcGVhdGluZywgQ1NTUHJlZml4ZWRMaW5lYXJHcmFkaWVudCk7CisgICAgfSBlbHNlIGlmIChp
ZCA9PSBDU1NWYWx1ZVJlcGVhdGluZ0xpbmVhckdyYWRpZW50KSB7CisgICAgICAgIHJlc3VsdCA9
IGNvbnN1bWVMaW5lYXJHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUoKSwgUmVwZWF0aW5nLCBD
U1NMaW5lYXJHcmFkaWVudCk7CisgICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZUxpbmVhckdy
YWRpZW50KSB7CisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVMaW5lYXJHcmFkaWVudChhcmdzLCBj
b250ZXh0Lm1vZGUoKSwgTm9uUmVwZWF0aW5nLCBDU1NMaW5lYXJHcmFkaWVudCk7CisgICAgfSBl
bHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdEdyYWRpZW50KSB7CisgICAgICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBzZW5kIGEgZGVwcmVjYXRpb24gbWVzc2FnZS4KKyAgICAgICAgaWYgKGNv
bnRleHQudXNlQ291bnRlcigpKQorICAgICAgICAgICAgY29udGV4dC51c2VDb3VudGVyKCktPmNv
dW50KFVzZUNvdW50ZXI6OkRlcHJlY2F0ZWRXZWJLaXRHcmFkaWVudCk7CisgICAgICAgIHJlc3Vs
dCA9IGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCkpOworICAg
IH0gZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRSYWRpYWxHcmFkaWVudCkgeworICAgICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgc2VuZCBhIGRlcHJlY2F0aW9uIG1lc3NhZ2UuCisgICAg
ICAgIGlmIChjb250ZXh0LnVzZUNvdW50ZXIoKSkKKyAgICAgICAgICAgIGNvbnRleHQudXNlQ291
bnRlcigpLT5jb3VudChVc2VDb3VudGVyOjpEZXByZWNhdGVkV2ViS2l0UmFkaWFsR3JhZGllbnQp
OworICAgICAgICByZXN1bHQgPSBjb25zdW1lRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KGFyZ3Ms
IGNvbnRleHQubW9kZSgpLCBOb25SZXBlYXRpbmcpOworICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NT
VmFsdWVXZWJraXRSZXBlYXRpbmdSYWRpYWxHcmFkaWVudCkgeworICAgICAgICBpZiAoY29udGV4
dC51c2VDb3VudGVyKCkpCisgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQo
VXNlQ291bnRlcjo6RGVwcmVjYXRlZFdlYktpdFJlcGVhdGluZ1JhZGlhbEdyYWRpZW50KTsKKyAg
ICAgICAgcmVzdWx0ID0gY29uc3VtZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudChhcmdzLCBjb250
ZXh0Lm1vZGUoKSwgUmVwZWF0aW5nKTsKKyAgICB9IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Vi
a2l0Q3Jvc3NGYWRlKSB7CisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVDcm9zc0ZhZGUoYXJncywg
Y29udGV4dCk7CisgICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVBhaW50KSB7CisgICAgICAg
IHJlc3VsdCA9IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc1BhaW50QVBJRW5hYmxlZCgpID8g
Y29uc3VtZVBhaW50KGFyZ3MsIGNvbnRleHQpIDogbnVsbHB0cjsKKyAgICB9CisgICAgaWYgKCFy
ZXN1bHQgfHwgIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmFu
Z2UgPSByYW5nZUNvcHk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIENTU1ZhbHVl
KiBjcmVhdGVDU1NJbWFnZVZhbHVlV2l0aFJlZmVycmVyKGNvbnN0IEF0b21pY1N0cmluZyYgcmF3
VmFsdWUsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ1NTVmFsdWUq
IGltYWdlVmFsdWUgPSBDU1NJbWFnZVZhbHVlOjpjcmVhdGUocmF3VmFsdWUsIGNvbnRleHQuY29t
cGxldGVVUkwocmF3VmFsdWUpKTsKKyAgICB0b0NTU0ltYWdlVmFsdWUoaW1hZ2VWYWx1ZSktPnNl
dFJlZmVycmVyKGNvbnRleHQucmVmZXJyZXIoKSk7CisgICAgcmV0dXJuIGltYWdlVmFsdWU7Cit9
CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUltYWdlU2V0KENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIENTU1BhcnNl
clRva2VuUmFuZ2UgcmFuZ2VDb3B5ID0gcmFuZ2U7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBh
cmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlQ29weSk7CisgICAgQ1NTSW1hZ2VTZXRWYWx1ZSog
aW1hZ2VTZXQgPSBDU1NJbWFnZVNldFZhbHVlOjpjcmVhdGUoKTsKKyAgICBkbyB7CisgICAgICAg
IEF0b21pY1N0cmluZyB1cmxWYWx1ZSA9IGNvbnN1bWVVcmxBc1N0cmluZ1ZpZXcoYXJncykudG9B
dG9taWNTdHJpbmcoKTsKKyAgICAgICAgaWYgKHVybFZhbHVlLmlzTnVsbCgpKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgQ1NTVmFsdWUqIGltYWdlID0gY3JlYXRlQ1NT
SW1hZ2VWYWx1ZVdpdGhSZWZlcnJlcih1cmxWYWx1ZSwgY29udGV4dCk7CisgICAgICAgIGltYWdl
U2V0LT5hcHBlbmQoKmltYWdlKTsKKworICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9r
ZW4gPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIGlmICh0b2tl
bi50eXBlKCkgIT0gRGltZW5zaW9uVG9rZW4pCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgaWYgKHRva2VuLnZhbHVlKCkgIT0gIngiKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIERDSEVDSyh0b2tlbi51bml0VHlwZSgpID09IENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZTo6VW5rbm93bik7CisgICAgICAgIGRvdWJsZSBpbWFnZVNjYWxlRmFjdG9y
ID0gdG9rZW4ubnVtZXJpY1ZhbHVlKCk7CisgICAgICAgIGlmIChpbWFnZVNjYWxlRmFjdG9yIDw9
IDApCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaW1hZ2VTZXQtPmFwcGVu
ZCgqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShpbWFnZVNjYWxlRmFjdG9yLCBDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGU6Ok51bWJlcikpOworICAgIH0gd2hpbGUgKGNvbnN1bWVDb21tYUlu
Y2x1ZGluZ1doaXRlc3BhY2UoYXJncykpOworICAgIGlmICghYXJncy5hdEVuZCgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByYW5nZSA9IHJhbmdlQ29weTsKKyAgICByZXR1cm4gaW1h
Z2VTZXQ7Cit9CisKK3N0YXRpYyBib29sIGlzR2VuZXJhdGVkSW1hZ2UoQ1NTVmFsdWVJRCBpZCkK
K3sKKyAgICByZXR1cm4gaWQgPT0gQ1NTVmFsdWVMaW5lYXJHcmFkaWVudCB8fCBpZCA9PSBDU1NW
YWx1ZVJhZGlhbEdyYWRpZW50CisgICAgICAgIHx8IGlkID09IENTU1ZhbHVlUmVwZWF0aW5nTGlu
ZWFyR3JhZGllbnQgfHwgaWQgPT0gQ1NTVmFsdWVSZXBlYXRpbmdSYWRpYWxHcmFkaWVudAorICAg
ICAgICB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdExpbmVhckdyYWRpZW50IHx8IGlkID09IENTU1Zh
bHVlV2Via2l0UmFkaWFsR3JhZGllbnQKKyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRS
ZXBlYXRpbmdMaW5lYXJHcmFkaWVudCB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdFJlcGVhdGluZ1Jh
ZGlhbEdyYWRpZW50CisgICAgICAgIHx8IGlkID09IENTU1ZhbHVlV2Via2l0R3JhZGllbnQgfHwg
aWQgPT0gQ1NTVmFsdWVXZWJraXRDcm9zc0ZhZGUgfHwgaWQgPT0gQ1NTVmFsdWVQYWludDsKK30K
KworQ1NTVmFsdWUqIGNvbnN1bWVJbWFnZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NT
UGFyc2VyQ29udGV4dCBjb250ZXh0LCBDb25zdW1lR2VuZXJhdGVkSW1hZ2UgZ2VuZXJhdGVkSW1h
Z2UpCit7CisgICAgQXRvbWljU3RyaW5nIHVyaSA9IGNvbnN1bWVVcmxBc1N0cmluZ1ZpZXcocmFu
Z2UpLnRvQXRvbWljU3RyaW5nKCk7CisgICAgaWYgKCF1cmkuaXNOdWxsKCkpCisgICAgICAgIHJl
dHVybiBjcmVhdGVDU1NJbWFnZVZhbHVlV2l0aFJlZmVycmVyKHVyaSwgY29udGV4dCk7CisgICAg
aWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gRnVuY3Rpb25Ub2tlbikgeworICAgICAgICBDU1NW
YWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKTsKKyAgICAgICAgaWYgKGlkID09
IENTU1ZhbHVlV2Via2l0SW1hZ2VTZXQpCisgICAgICAgICAgICByZXR1cm4gY29uc3VtZUltYWdl
U2V0KHJhbmdlLCBjb250ZXh0KTsKKyAgICAgICAgaWYgKGdlbmVyYXRlZEltYWdlID09IENvbnN1
bWVHZW5lcmF0ZWRJbWFnZTo6QWxsb3cgJiYgaXNHZW5lcmF0ZWRJbWFnZShpZCkpCisgICAgICAg
ICAgICByZXR1cm4gY29uc3VtZUdlbmVyYXRlZEltYWdlKHJhbmdlLCBjb250ZXh0KTsKKyAgICB9
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIENTU1Byb3BlcnR5UGFy
c2VySGVscGVycworKi8KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXJIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjEgQEAKKy8vIENvcHlyaWdo
dCAyMDE2IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
Ky8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0
aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisv
LyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyNpZm5kZWYgQ1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzX2gKKyNkZWZpbmUgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzX2gKKwor
Ly8gRklYTUUtTkVXUEFSU0VSICNpbmNsdWRlICJDU1NDdXN0b21JZGVudFZhbHVlLmgiCisjaW5j
bHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgorI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuUmFuZ2UuaCIK
KyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgorI2luY2x1ZGUgIkxlbmd0aC5oIiAvLyBG
b3IgVmFsdWVSYW5nZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1N0cmluZ1Zh
bHVlOworY2xhc3MgQ1NTVVJJVmFsdWU7CitjbGFzcyBDU1NWYWx1ZVBhaXI7CisKKy8vIFdoZW4g
dGhlc2UgZnVuY3Rpb25zIGFyZSBzdWNjZXNzZnVsLCB0aGV5IHdpbGwgY29uc3VtZSBhbGwgdGhl
IHJlbGV2YW50CisvLyB0b2tlbnMgZnJvbSB0aGUgcmFuZ2UgYW5kIGFsc28gY29uc3VtZSBhbnkg
d2hpdGVzcGFjZSB3aGljaCBmb2xsb3dzLiBXaGVuCisvLyB0aGUgc3RhcnQgb2YgdGhlIHJhbmdl
IGRvZXNuJ3QgbWF0Y2ggdGhlIHR5cGUgd2UncmUgbG9va2luZyBmb3IsIHRoZSByYW5nZQorLy8g
d2lsbCBub3QgYmUgbW9kaWZpZWQuCituYW1lc3BhY2UgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
IHsKKworLy8gRklYTUU6IFRoZXNlIHNob3VsZCBwcm9iYWJseSBqdXN0IGJlIGNvbnN1bWVDb21t
YSBhbmQgY29uc3VtZVNsYXNoLgorYm9vbCBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNl
KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKK2Jvb2wgY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVz
cGFjZShDU1NQYXJzZXJUb2tlblJhbmdlJik7CisvLyBjb25zdW1lRnVuY3Rpb24gZXhwZWN0cyB0
aGUgcmFuZ2Ugc3RhcnRzIHdpdGggYSBGdW5jdGlvblRva2VuLgorQ1NTUGFyc2VyVG9rZW5SYW5n
ZSBjb25zdW1lRnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworCitlbnVtIGNsYXNzIFVu
aXRsZXNzUXVpcmsgeworICAgIEFsbG93LAorICAgIEZvcmJpZAorfTsKKworQ1NTUHJpbWl0aXZl
VmFsdWUqIGNvbnN1bWVJbnRlZ2VyKENTU1BhcnNlclRva2VuUmFuZ2UmLCBkb3VibGUgbWluaW11
bVZhbHVlID0gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpOworQ1NTUHJpbWl0
aXZlVmFsdWUqIGNvbnN1bWVQb3NpdGl2ZUludGVnZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwor
Ym9vbCBjb25zdW1lTnVtYmVyUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmLCBkb3VibGUmIHJlc3Vs
dCk7CitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZU51bWJlcihDU1NQYXJzZXJUb2tlblJhbmdl
JiwgVmFsdWVSYW5nZSk7CitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUxlbmd0aChDU1NQYXJz
ZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayA9
IFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZVBlcmNl
bnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIFZhbHVlUmFuZ2UpOworQ1NTUHJpbWl0aXZlVmFsdWUq
IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1v
ZGUsIFZhbHVlUmFuZ2UsIFVuaXRsZXNzUXVpcmsgPSBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOwor
Q1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVBbmdsZShDU1NQYXJzZXJUb2tlblJhbmdlJik7CitD
U1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZVRpbWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIFZhbHVl
UmFuZ2UpOworCitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUlkZW50KENTU1BhcnNlclRva2Vu
UmFuZ2UmKTsKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lSWRlbnRSYW5nZShDU1NQYXJzZXJU
b2tlblJhbmdlJiwgQ1NTVmFsdWVJRCBsb3dlciwgQ1NTVmFsdWVJRCB1cHBlcik7Cit0ZW1wbGF0
ZTxDU1NWYWx1ZUlELCBDU1NWYWx1ZUlELi4uPiBpbmxpbmUgYm9vbCBpZGVudE1hdGNoZXMoQ1NT
VmFsdWVJRCBpZCk7Cit0ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIGFsbG93ZWRJZGVudHM+IENTU1By
aW1pdGl2ZVZhbHVlKiBjb25zdW1lSWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworCisvLyBG
SVhNRS1ORVdQQVJTRVIgQ1NTQ3VzdG9tSWRlbnRWYWx1ZSogY29uc3VtZUN1c3RvbUlkZW50KENT
U1BhcnNlclRva2VuUmFuZ2UmKTsKK0NTU1N0cmluZ1ZhbHVlKiBjb25zdW1lU3RyaW5nKENTU1Bh
cnNlclRva2VuUmFuZ2UmKTsKK1N0cmluZ1ZpZXcgY29uc3VtZVVybEFzU3RyaW5nVmlldyhDU1NQ
YXJzZXJUb2tlblJhbmdlJik7CitDU1NVUklWYWx1ZSogY29uc3VtZVVybChDU1NQYXJzZXJUb2tl
blJhbmdlJik7CisKK0NTU1ZhbHVlKiBjb25zdW1lQ29sb3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYs
IENTU1BhcnNlck1vZGUsIGJvb2wgYWNjZXB0UXVpcmt5Q29sb3JzID0gZmFsc2UpOworCitDU1NW
YWx1ZVBhaXIqIGNvbnN1bWVQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2Vy
TW9kZSwgVW5pdGxlc3NRdWlyayk7Citib29sIGNvbnN1bWVQb3NpdGlvbihDU1NQYXJzZXJUb2tl
blJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyaywgQ1NTVmFsdWUqJiByZXN1bHRY
LCBDU1NWYWx1ZSomIHJlc3VsdFkpOworYm9vbCBjb25zdW1lT25lT3JUd29WYWx1ZWRQb3NpdGlv
bihDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyaywgQ1NT
VmFsdWUqJiByZXN1bHRYLCBDU1NWYWx1ZSomIHJlc3VsdFkpOworCitlbnVtIGNsYXNzIENvbnN1
bWVHZW5lcmF0ZWRJbWFnZSB7CisgICAgQWxsb3csCisgICAgRm9yYmlkCit9OworCitDU1NWYWx1
ZSogY29uc3VtZUltYWdlKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJDb250ZXh0LCBD
b25zdW1lR2VuZXJhdGVkSW1hZ2UgPSBDb25zdW1lR2VuZXJhdGVkSW1hZ2U6OkFsbG93KTsKK0NT
U1ZhbHVlKiBjb25zdW1lSW1hZ2VPck5vbmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNl
ckNvbnRleHQpOworCisvLyBUZW1wbGF0ZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGF0IHRoZSBib3R0
b20gb2YgdGhlIGZpbGUgZm9yIHJlYWRhYmlsaXR5LgorCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBl
bXB0eUJhc2VDYXNlPiBpbmxpbmUgYm9vbCBpZGVudE1hdGNoZXMoQ1NTVmFsdWVJRCkgeyByZXR1
cm4gZmFsc2U7IH0KK3RlbXBsYXRlPENTU1ZhbHVlSUQgaGVhZCwgQ1NTVmFsdWVJRC4uLiB0YWls
PiBpbmxpbmUgYm9vbCBpZGVudE1hdGNoZXMoQ1NTVmFsdWVJRCBpZCkKK3sKKyAgICByZXR1cm4g
aWQgPT0gaGVhZCB8fCBpZGVudE1hdGNoZXM8dGFpbC4uLj4oaWQpOworfQorCisvLyBGSVhNRS1O
RVdQQVJTRVIgLSBjb252ZXJ0ZWQgdG8gYSBSZWZQdHIgcmV0dXJuIHR5cGUgZnJvbSBhIHJhdyBw
dHIuCit0ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIG5hbWVzPiBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IGNvbnN1bWVJZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAo
cmFuZ2UucGVlaygpLnR5cGUoKSAhPSBJZGVudFRva2VuIHx8ICFpZGVudE1hdGNoZXM8bmFtZXMu
Li4+KHJhbmdlLnBlZWsoKS5pZCgpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKHJhbmdlLmNvbnN1bWVJbmNs
dWRpbmdXaGl0ZXNwYWNlKCkuaWQoKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0NTU1dp
ZGVLZXl3b3JkKGNvbnN0IENTU1ZhbHVlSUQmIGlkKQoreworICAgIHJldHVybiBpZCA9PSBDU1NW
YWx1ZUluaXRpYWwgfHwgaWQgPT0gQ1NTVmFsdWVJbmhlcml0IHx8IGlkID09IENTU1ZhbHVlVW5z
ZXQgfHwgaWQgPT0gQ1NTVmFsdWVEZWZhdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBDU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnMKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTVG9rZW5pemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1Rva2VuaXplci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NUb2tlbml6ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODg4IEBA
CisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
Ky8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
Ky8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNTU1Rva2VuaXplci5oIgorCisjaW5jbHVkZSAiQ1NT
UGFyc2VySWRpb21zLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmgiCisj
aW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIgorI2luY2x1ZGUgIkNTU1Rva2VuaXplcklu
cHV0U3RyZWFtLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgorI2luY2x1ZGUgPHd0
Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ1NT
VG9rZW5pemVyOjpTY29wZTo6U2NvcGUoY29uc3QgU3RyaW5nJiBzdHJpbmcpCisgICAgOiBtX3N0
cmluZyhzdHJpbmcpCit7CisgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBzcGVjLCB3ZSBzaG91bGQg
cGVyZm9ybSBwcmVwcm9jZXNzaW5nIGhlcmUuCisgICAgLy8gU2VlOiBodHRwOi8vZGV2LnczLm9y
Zy9jc3N3Zy9jc3Mtc3ludGF4LyNpbnB1dC1wcmVwcm9jZXNzaW5nCisgICAgLy8KKyAgICAvLyBI
b3dldmVyLCB3ZSBjYW4gc2tpcCB0aGlzIHN0ZXAgc2luY2U6CisgICAgLy8gKiBXZSdyZSB1c2lu
ZyBIVE1MIHNwYWNlcyAod2hpY2ggYWNjZXB0IFxyIGFuZCBcZiBhcyBhIHZhbGlkIHdoaXRlIHNw
YWNlKQorICAgIC8vICogRG8gbm90IGNvdW50IHdoaXRlIHNwYWNlcworICAgIC8vICogQ1NTVG9r
ZW5pemVySW5wdXRTdHJlYW06Om5leHRJbnB1dENoYXIoKSByZXBsYWNlcyBOVUxMcyBmb3IgcmVw
bGFjZW1lbnQgY2hhcmFjdGVycworCisgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIC8vIFRvIGF2b2lkIHJlc2l6aW5nIHdlIGVyciBvbiB0aGUgc2lkZSBv
ZiByZXNlcnZpbmcgdG9vIG11Y2ggc3BhY2UuCisgICAgLy8gTW9zdCBzdHJpbmdzIHdlIHRva2Vu
aXplIGhhdmUgYWJvdXQgMy41IHRvIDUgY2hhcmFjdGVycyBwZXIgdG9rZW4uCisgICAgbV90b2tl
bnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzdHJpbmcubGVuZ3RoKCkgLyAzKTsKKworICAgIENT
U1Rva2VuaXplcklucHV0U3RyZWFtIGlucHV0KHN0cmluZyk7CisgICAgQ1NTVG9rZW5pemVyIHRv
a2VuaXplcihpbnB1dCwgKnRoaXMpOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIENTU1Bh
cnNlclRva2VuIHRva2VuID0gdG9rZW5pemVyLm5leHRUb2tlbigpOworICAgICAgICBpZiAodG9r
ZW4udHlwZSgpID09IENvbW1lbnRUb2tlbikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBpZiAodG9rZW4udHlwZSgpID09IEVPRlRva2VuKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBtX3Rva2Vucy5hcHBlbmQodG9rZW4pOworICAgIH0KK30KKworQ1NTVG9rZW5pemVyOjpT
Y29wZTo6U2NvcGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIENTU1BhcnNlck9ic2VydmVyV3JhcHBl
ciYgd3JhcHBlcikKKyAgICA6IG1fc3RyaW5nKHN0cmluZykKK3sKKyAgICBpZiAoc3RyaW5nLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0g
aW5wdXQoc3RyaW5nKTsKKyAgICBDU1NUb2tlbml6ZXIgdG9rZW5pemVyKGlucHV0LCAqdGhpcyk7
CisKKyAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAg
IENTU1BhcnNlclRva2VuIHRva2VuID0gdG9rZW5pemVyLm5leHRUb2tlbigpOworICAgICAgICBp
ZiAodG9rZW4udHlwZSgpID09IEVPRlRva2VuKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGlmICh0b2tlbi50eXBlKCkgPT0gQ29tbWVudFRva2VuKQorICAgICAgICAgICAgd3JhcHBlci5h
ZGRDb21tZW50KG9mZnNldCwgaW5wdXQub2Zmc2V0KCksIG1fdG9rZW5zLnNpemUoKSk7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgbV90b2tlbnMuYXBwZW5kKHRva2VuKTsKKyAgICAgICAg
ICAgIHdyYXBwZXIuYWRkVG9rZW4ob2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAgICBvZmZzZXQg
PSBpbnB1dC5vZmZzZXQoKTsKKyAgICB9CisKKyAgICB3cmFwcGVyLmFkZFRva2VuKG9mZnNldCk7
CisgICAgd3JhcHBlci5maW5hbGl6ZUNvbnN0cnVjdGlvbihtX3Rva2Vucy5iZWdpbigpKTsKK30K
KworQ1NTUGFyc2VyVG9rZW5SYW5nZSBDU1NUb2tlbml6ZXI6OlNjb3BlOjp0b2tlblJhbmdlKCkK
K3sKKyAgICByZXR1cm4gbV90b2tlbnM7Cit9CisKK3Vuc2lnbmVkIENTU1Rva2VuaXplcjo6U2Nv
cGU6OnRva2VuQ291bnQoKQoreworICAgIHJldHVybiBtX3Rva2Vucy5zaXplKCk7Cit9CisKK3N0
YXRpYyBib29sIGlzTmV3TGluZShVQ2hhciBjYykKK3sKKyAgICAvLyBXZSBjaGVjayBcciBhbmQg
XGYgaGVyZSwgc2luY2Ugd2UgaGF2ZSBubyBwcmVwcm9jZXNzaW5nIHN0YWdlCisgICAgcmV0dXJu
IChjYyA9PSAnXHInIHx8IGNjID09ICdcbicgfHwgY2MgPT0gJ1xmJyk7Cit9CisKKy8vIGh0dHA6
Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1zeW50YXgvI2NoZWNrLWlmLXR3by1jb2RlLXBvaW50cy1h
cmUtYS12YWxpZC1lc2NhcGUKK3N0YXRpYyBib29sIHR3b0NoYXJzQXJlVmFsaWRFc2NhcGUoVUNo
YXIgZmlyc3QsIFVDaGFyIHNlY29uZCkKK3sKKyAgICByZXR1cm4gZmlyc3QgPT0gJ1xcJyAmJiAh
aXNOZXdMaW5lKHNlY29uZCk7Cit9CisKK0NTU1Rva2VuaXplcjo6Q1NTVG9rZW5pemVyKENTU1Rv
a2VuaXplcklucHV0U3RyZWFtJiBpbnB1dFN0cmVhbSwgU2NvcGUmIHNjb3BlKQorICAgIDogbV9p
bnB1dChpbnB1dFN0cmVhbSkKKyAgICAsIG1fc2NvcGUoc2NvcGUpCit7Cit9CisKK3ZvaWQgQ1NT
VG9rZW5pemVyOjpyZWNvbnN1bWUoVUNoYXIgYykKK3sKKyAgICBtX2lucHV0LnB1c2hCYWNrKGMp
OworfQorCitVQ2hhciBDU1NUb2tlbml6ZXI6OmNvbnN1bWUoKQoreworICAgIFVDaGFyIGN1cnJl
bnQgPSBtX2lucHV0Lm5leHRJbnB1dENoYXIoKTsKKyAgICBtX2lucHV0LmFkdmFuY2UoKTsKKyAg
ICByZXR1cm4gY3VycmVudDsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjp3aGl0
ZVNwYWNlKFVDaGFyIC8qY2MqLykKK3sKKyAgICBtX2lucHV0LmFkdmFuY2VVbnRpbE5vbldoaXRl
c3BhY2UoKTsKKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oV2hpdGVzcGFjZVRva2VuKTsKK30K
KworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpibG9ja1N0YXJ0KENTU1BhcnNlclRva2Vu
VHlwZSB0eXBlKQoreworICAgIG1fYmxvY2tTdGFjay5hcHBlbmQodHlwZSk7CisgICAgcmV0dXJu
IENTU1BhcnNlclRva2VuKHR5cGUsIENTU1BhcnNlclRva2VuOjpCbG9ja1N0YXJ0KTsKK30KKwor
Q1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpibG9ja1N0YXJ0KENTU1BhcnNlclRva2VuVHlw
ZSBibG9ja1R5cGUsIENTU1BhcnNlclRva2VuVHlwZSB0eXBlLCBTdHJpbmdWaWV3IG5hbWUpCit7
CisgICAgbV9ibG9ja1N0YWNrLmFwcGVuZChibG9ja1R5cGUpOworICAgIHJldHVybiBDU1NQYXJz
ZXJUb2tlbih0eXBlLCBuYW1lLCBDU1NQYXJzZXJUb2tlbjo6QmxvY2tTdGFydCk7Cit9CisKK0NT
U1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6YmxvY2tFbmQoQ1NTUGFyc2VyVG9rZW5UeXBlIHR5
cGUsIENTU1BhcnNlclRva2VuVHlwZSBzdGFydFR5cGUpCit7CisgICAgaWYgKCFtX2Jsb2NrU3Rh
Y2suaXNFbXB0eSgpICYmIG1fYmxvY2tTdGFjay5sYXN0KCkgPT0gc3RhcnRUeXBlKSB7CisgICAg
ICAgIG1fYmxvY2tTdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgIHJldHVybiBDU1NQYXJzZXJU
b2tlbih0eXBlLCBDU1NQYXJzZXJUb2tlbjo6QmxvY2tFbmQpOworICAgIH0KKyAgICByZXR1cm4g
Q1NTUGFyc2VyVG9rZW4odHlwZSk7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6
bGVmdFBhcmVudGhlc2lzKFVDaGFyIC8qY2MqLykKK3sKKyAgICByZXR1cm4gYmxvY2tTdGFydChM
ZWZ0UGFyZW50aGVzaXNUb2tlbik7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6
cmlnaHRQYXJlbnRoZXNpcyhVQ2hhciAvKmNjKi8pCit7CisgICAgcmV0dXJuIGJsb2NrRW5kKFJp
Z2h0UGFyZW50aGVzaXNUb2tlbiwgTGVmdFBhcmVudGhlc2lzVG9rZW4pOworfQorCitDU1NQYXJz
ZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmxlZnRCcmFja2V0KFVDaGFyIC8qY2MqLykKK3sKKyAgICBy
ZXR1cm4gYmxvY2tTdGFydChMZWZ0QnJhY2tldFRva2VuKTsKK30KKworQ1NTUGFyc2VyVG9rZW4g
Q1NTVG9rZW5pemVyOjpyaWdodEJyYWNrZXQoVUNoYXIgLypjYyovKQoreworICAgIHJldHVybiBi
bG9ja0VuZChSaWdodEJyYWNrZXRUb2tlbiwgTGVmdEJyYWNrZXRUb2tlbik7Cit9CisKK0NTU1Bh
cnNlclRva2VuIENTU1Rva2VuaXplcjo6bGVmdEJyYWNlKFVDaGFyIC8qY2MqLykKK3sKKyAgICBy
ZXR1cm4gYmxvY2tTdGFydChMZWZ0QnJhY2VUb2tlbik7Cit9CisKK0NTU1BhcnNlclRva2VuIENT
U1Rva2VuaXplcjo6cmlnaHRCcmFjZShVQ2hhciAvKmNjKi8pCit7CisgICAgcmV0dXJuIGJsb2Nr
RW5kKFJpZ2h0QnJhY2VUb2tlbiwgTGVmdEJyYWNlVG9rZW4pOworfQorCitDU1NQYXJzZXJUb2tl
biBDU1NUb2tlbml6ZXI6OnBsdXNPckZ1bGxTdG9wKFVDaGFyIGNjKQoreworICAgIGlmIChuZXh0
Q2hhcnNBcmVOdW1iZXIoY2MpKSB7CisgICAgICAgIHJlY29uc3VtZShjYyk7CisgICAgICAgIHJl
dHVybiBjb25zdW1lTnVtZXJpY1Rva2VuKCk7CisgICAgfQorICAgIHJldHVybiBDU1NQYXJzZXJU
b2tlbihEZWxpbWl0ZXJUb2tlbiwgY2MpOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6
ZXI6OmFzdGVyaXNrKFVDaGFyIGNjKQoreworICAgIEFTU0VSVF9VTlVTRUQoY2MsIGNjID09ICcq
Jyk7CisgICAgaWYgKGNvbnN1bWVJZk5leHQoJz0nKSkKKyAgICAgICAgcmV0dXJuIENTU1BhcnNl
clRva2VuKFN1YnN0cmluZ01hdGNoVG9rZW4pOworICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihE
ZWxpbWl0ZXJUb2tlbiwgJyonKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjps
ZXNzVGhhbihVQ2hhciBjYykKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGNjLCBjYyA9PSAnPCcpOwor
ICAgIGlmIChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkgPT0gJyEnCisgICAgICAg
ICYmIG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgxKSA9PSAnLScKKyAgICAgICAgJiYg
bV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDIpID09ICctJykgeworICAgICAgICBtX2lu
cHV0LmFkdmFuY2UoMyk7CisgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihDRE9Ub2tlbik7
CisgICAgfQorICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihEZWxpbWl0ZXJUb2tlbiwgJzwnKTsK
K30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjb21tYShVQ2hhciAvKmNjKi8pCit7
CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKENvbW1hVG9rZW4pOworfQorCitDU1NQYXJzZXJU
b2tlbiBDU1NUb2tlbml6ZXI6Omh5cGhlbk1pbnVzKFVDaGFyIGNjKQoreworICAgIGlmIChuZXh0
Q2hhcnNBcmVOdW1iZXIoY2MpKSB7CisgICAgICAgIHJlY29uc3VtZShjYyk7CisgICAgICAgIHJl
dHVybiBjb25zdW1lTnVtZXJpY1Rva2VuKCk7CisgICAgfQorICAgIGlmIChtX2lucHV0LnBlZWtX
aXRob3V0UmVwbGFjZW1lbnQoMCkgPT0gJy0nCisgICAgICAgICYmIG1faW5wdXQucGVla1dpdGhv
dXRSZXBsYWNlbWVudCgxKSA9PSAnPicpIHsKKyAgICAgICAgbV9pbnB1dC5hZHZhbmNlKDIpOwor
ICAgICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oQ0RDVG9rZW4pOworICAgIH0KKyAgICBpZiAo
bmV4dENoYXJzQXJlSWRlbnRpZmllcihjYykpIHsKKyAgICAgICAgcmVjb25zdW1lKGNjKTsKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudExpa2VUb2tlbigpOworICAgIH0KKyAgICByZXR1cm4g
Q1NTUGFyc2VyVG9rZW4oRGVsaW1pdGVyVG9rZW4sIGNjKTsKK30KKworQ1NTUGFyc2VyVG9rZW4g
Q1NTVG9rZW5pemVyOjpzb2xpZHVzKFVDaGFyIGNjKQoreworICAgIGlmIChjb25zdW1lSWZOZXh0
KCcqJykpIHsKKyAgICAgICAgLy8gVGhlc2UgZ2V0IGlnbm9yZWQsIGJ1dCB3ZSBuZWVkIGEgdmFs
dWUgdG8gcmV0dXJuLgorICAgICAgICBjb25zdW1lVW50aWxDb21tZW50RW5kRm91bmQoKTsKKyAg
ICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKENvbW1lbnRUb2tlbik7CisgICAgfQorCisgICAg
cmV0dXJuIENTU1BhcnNlclRva2VuKERlbGltaXRlclRva2VuLCBjYyk7Cit9CisKK0NTU1BhcnNl
clRva2VuIENTU1Rva2VuaXplcjo6Y29sb24oVUNoYXIgLypjYyovKQoreworICAgIHJldHVybiBD
U1NQYXJzZXJUb2tlbihDb2xvblRva2VuKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5p
emVyOjpzZW1pQ29sb24oVUNoYXIgLypjYyovKQoreworICAgIHJldHVybiBDU1NQYXJzZXJUb2tl
bihTZW1pY29sb25Ub2tlbik7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6aGFz
aChVQ2hhciBjYykKK3sKKyAgICBVQ2hhciBuZXh0Q2hhciA9IG1faW5wdXQucGVla1dpdGhvdXRS
ZXBsYWNlbWVudCgwKTsKKyAgICBpZiAoaXNOYW1lQ29kZVBvaW50KG5leHRDaGFyKSB8fCB0d29D
aGFyc0FyZVZhbGlkRXNjYXBlKG5leHRDaGFyLCBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1l
bnQoMSkpKSB7CisgICAgICAgIEhhc2hUb2tlblR5cGUgdHlwZSA9IG5leHRDaGFyc0FyZUlkZW50
aWZpZXIoKSA/IEhhc2hUb2tlbklkIDogSGFzaFRva2VuVW5yZXN0cmljdGVkOworICAgICAgICBy
ZXR1cm4gQ1NTUGFyc2VyVG9rZW4odHlwZSwgY29uc3VtZU5hbWUoKSk7CisgICAgfQorCisgICAg
cmV0dXJuIENTU1BhcnNlclRva2VuKERlbGltaXRlclRva2VuLCBjYyk7Cit9CisKK0NTU1BhcnNl
clRva2VuIENTU1Rva2VuaXplcjo6Y2lyY3VtZmxleEFjY2VudChVQ2hhciBjYykKK3sKKyAgICBB
U1NFUlRfVU5VU0VEKGNjLCBjYyA9PSAnXicpOworICAgIGlmIChjb25zdW1lSWZOZXh0KCc9Jykp
CisgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihQcmVmaXhNYXRjaFRva2VuKTsKKyAgICBy
ZXR1cm4gQ1NTUGFyc2VyVG9rZW4oRGVsaW1pdGVyVG9rZW4sICdeJyk7Cit9CisKK0NTU1BhcnNl
clRva2VuIENTU1Rva2VuaXplcjo6ZG9sbGFyU2lnbihVQ2hhciBjYykKK3sKKyAgICBBU1NFUlRf
VU5VU0VEKGNjLCBjYyA9PSAnJCcpOworICAgIGlmIChjb25zdW1lSWZOZXh0KCc9JykpCisgICAg
ICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihTdWZmaXhNYXRjaFRva2VuKTsKKyAgICByZXR1cm4g
Q1NTUGFyc2VyVG9rZW4oRGVsaW1pdGVyVG9rZW4sICckJyk7Cit9CisKK0NTU1BhcnNlclRva2Vu
IENTU1Rva2VuaXplcjo6dmVydGljYWxMaW5lKFVDaGFyIGNjKQoreworICAgIEFTU0VSVF9VTlVT
RUQoY2MsIGNjID09ICd8Jyk7CisgICAgaWYgKGNvbnN1bWVJZk5leHQoJz0nKSkKKyAgICAgICAg
cmV0dXJuIENTU1BhcnNlclRva2VuKERhc2hNYXRjaFRva2VuKTsKKyAgICBpZiAoY29uc3VtZUlm
TmV4dCgnfCcpKQorICAgICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oQ29sdW1uVG9rZW4pOwor
ICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihEZWxpbWl0ZXJUb2tlbiwgJ3wnKTsKK30KKworQ1NT
UGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjp0aWxkZShVQ2hhciBjYykKK3sKKyAgICBBU1NFUlRf
VU5VU0VEKGNjLCBjYyA9PSAnficpOworICAgIGlmIChjb25zdW1lSWZOZXh0KCc9JykpCisgICAg
ICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihJbmNsdWRlTWF0Y2hUb2tlbik7CisgICAgcmV0dXJu
IENTU1BhcnNlclRva2VuKERlbGltaXRlclRva2VuLCAnficpOworfQorCitDU1NQYXJzZXJUb2tl
biBDU1NUb2tlbml6ZXI6OmNvbW1lcmNpYWxBdChVQ2hhciBjYykKK3sKKyAgICBBU1NFUlRfVU5V
U0VEKGNjLCBjYyA9PSAnQCcpOworICAgIGlmIChuZXh0Q2hhcnNBcmVJZGVudGlmaWVyKCkpCisg
ICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihBdEtleXdvcmRUb2tlbiwgY29uc3VtZU5hbWUo
KSk7CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKERlbGltaXRlclRva2VuLCAnQCcpOworfQor
CitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OnJldmVyc2VTb2xpZHVzKFVDaGFyIGNjKQor
eworICAgIGlmICh0d29DaGFyc0FyZVZhbGlkRXNjYXBlKGNjLCBtX2lucHV0LnBlZWtXaXRob3V0
UmVwbGFjZW1lbnQoMCkpKSB7CisgICAgICAgIHJlY29uc3VtZShjYyk7CisgICAgICAgIHJldHVy
biBjb25zdW1lSWRlbnRMaWtlVG9rZW4oKTsKKyAgICB9CisgICAgcmV0dXJuIENTU1BhcnNlclRv
a2VuKERlbGltaXRlclRva2VuLCBjYyk7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXpl
cjo6YXNjaWlEaWdpdChVQ2hhciBjYykKK3sKKyAgICByZWNvbnN1bWUoY2MpOworICAgIHJldHVy
biBjb25zdW1lTnVtZXJpY1Rva2VuKCk7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXpl
cjo6bGV0dGVyVShVQ2hhciBjYykKK3sKKyAgICBpZiAobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxh
Y2VtZW50KDApID09ICcrJworICAgICAgICAmJiAoaXNBU0NJSUhleERpZ2l0KG1faW5wdXQucGVl
a1dpdGhvdXRSZXBsYWNlbWVudCgxKSkKKyAgICAgICAgICAgIHx8IG1faW5wdXQucGVla1dpdGhv
dXRSZXBsYWNlbWVudCgxKSA9PSAnPycpKSB7CisgICAgICAgIG1faW5wdXQuYWR2YW5jZSgpOwor
ICAgICAgICByZXR1cm4gY29uc3VtZVVuaWNvZGVSYW5nZSgpOworICAgIH0KKyAgICByZWNvbnN1
bWUoY2MpOworICAgIHJldHVybiBjb25zdW1lSWRlbnRMaWtlVG9rZW4oKTsKK30KKworQ1NTUGFy
c2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQoVUNoYXIgY2MpCit7CisgICAgcmVjb25z
dW1lKGNjKTsKKyAgICByZXR1cm4gY29uc3VtZUlkZW50TGlrZVRva2VuKCk7Cit9CisKK0NTU1Bh
cnNlclRva2VuIENTU1Rva2VuaXplcjo6c3RyaW5nU3RhcnQoVUNoYXIgY2MpCit7CisgICAgcmV0
dXJuIGNvbnN1bWVTdHJpbmdUb2tlblVudGlsKGNjKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NT
VG9rZW5pemVyOjplbmRPZkZpbGUoVUNoYXIgLypjYyovKQoreworICAgIHJldHVybiBDU1NQYXJz
ZXJUb2tlbihFT0ZUb2tlbik7Cit9CisKK2NvbnN0IENTU1Rva2VuaXplcjo6Q29kZVBvaW50IENT
U1Rva2VuaXplcjo6Y29kZVBvaW50c1sxMjhdID0geworICAgICZDU1NUb2tlbml6ZXI6OmVuZE9m
RmlsZSwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAg
ICAwLAorICAgIDAsCisgICAgJkNTU1Rva2VuaXplcjo6d2hpdGVTcGFjZSwKKyAgICAmQ1NTVG9r
ZW5pemVyOjp3aGl0ZVNwYWNlLAorICAgIDAsCisgICAgJkNTU1Rva2VuaXplcjo6d2hpdGVTcGFj
ZSwKKyAgICAmQ1NTVG9rZW5pemVyOjp3aGl0ZVNwYWNlLAorICAgIDAsCisgICAgMCwKKyAgICAw
LAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAs
CisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwK
KyAgICAwLAorICAgICZDU1NUb2tlbml6ZXI6OndoaXRlU3BhY2UsCisgICAgMCwKKyAgICAmQ1NT
VG9rZW5pemVyOjpzdHJpbmdTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpoYXNoLAorICAgICZD
U1NUb2tlbml6ZXI6OmRvbGxhclNpZ24sCisgICAgMCwKKyAgICAwLAorICAgICZDU1NUb2tlbml6
ZXI6OnN0cmluZ1N0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6OmxlZnRQYXJlbnRoZXNpcywKKyAg
ICAmQ1NTVG9rZW5pemVyOjpyaWdodFBhcmVudGhlc2lzLAorICAgICZDU1NUb2tlbml6ZXI6OmFz
dGVyaXNrLAorICAgICZDU1NUb2tlbml6ZXI6OnBsdXNPckZ1bGxTdG9wLAorICAgICZDU1NUb2tl
bml6ZXI6OmNvbW1hLAorICAgICZDU1NUb2tlbml6ZXI6Omh5cGhlbk1pbnVzLAorICAgICZDU1NU
b2tlbml6ZXI6OnBsdXNPckZ1bGxTdG9wLAorICAgICZDU1NUb2tlbml6ZXI6OnNvbGlkdXMsCisg
ICAgJkNTU1Rva2VuaXplcjo6YXNjaWlEaWdpdCwKKyAgICAmQ1NTVG9rZW5pemVyOjphc2NpaURp
Z2l0LAorICAgICZDU1NUb2tlbml6ZXI6OmFzY2lpRGlnaXQsCisgICAgJkNTU1Rva2VuaXplcjo6
YXNjaWlEaWdpdCwKKyAgICAmQ1NTVG9rZW5pemVyOjphc2NpaURpZ2l0LAorICAgICZDU1NUb2tl
bml6ZXI6OmFzY2lpRGlnaXQsCisgICAgJkNTU1Rva2VuaXplcjo6YXNjaWlEaWdpdCwKKyAgICAm
Q1NTVG9rZW5pemVyOjphc2NpaURpZ2l0LAorICAgICZDU1NUb2tlbml6ZXI6OmFzY2lpRGlnaXQs
CisgICAgJkNTU1Rva2VuaXplcjo6YXNjaWlEaWdpdCwKKyAgICAmQ1NTVG9rZW5pemVyOjpjb2xv
biwKKyAgICAmQ1NTVG9rZW5pemVyOjpzZW1pQ29sb24sCisgICAgJkNTU1Rva2VuaXplcjo6bGVz
c1RoYW4sCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgJkNTU1Rva2VuaXplcjo6Y29tbWVy
Y2lhbEF0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVy
OjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tl
bml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNT
U1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAg
ICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0
LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1l
U3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6
Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2Vu
aXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NT
VG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAg
ICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQs
CisgICAgJkNTU1Rva2VuaXplcjo6bGV0dGVyVSwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3Rh
cnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5h
bWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXpl
cjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6OmxlZnRCcmFja2V0LAorICAgICZDU1NU
b2tlbml6ZXI6OnJldmVyc2VTb2xpZHVzLAorICAgICZDU1NUb2tlbml6ZXI6OnJpZ2h0QnJhY2tl
dCwKKyAgICAmQ1NTVG9rZW5pemVyOjpjaXJjdW1mbGV4QWNjZW50LAorICAgICZDU1NUb2tlbml6
ZXI6Om5hbWVTdGFydCwKKyAgICAwLAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAg
ICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0
LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1l
U3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6
Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2Vu
aXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NT
VG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAg
ICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQs
CisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVT
dGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6
bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5p
emVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bGV0dGVyVSwKKyAgICAmQ1NTVG9r
ZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZD
U1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisg
ICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6OmxlZnRCcmFj
ZSwKKyAgICAmQ1NTVG9rZW5pemVyOjp2ZXJ0aWNhbExpbmUsCisgICAgJkNTU1Rva2VuaXplcjo6
cmlnaHRCcmFjZSwKKyAgICAmQ1NTVG9rZW5pemVyOjp0aWxkZSwKKyAgICAwLAorfTsKKyNpZiAh
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05fRElTQUJMRUQKK2NvbnN0IHVuc2lnbmVk
IGNvZGVQb2ludHNOdW1iZXIgPSAxMjg7CisjZW5kaWYKKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9r
ZW5pemVyOjpuZXh0VG9rZW4oKQoreworICAgIC8vIFVubGlrZSB0aGUgSFRNTFRva2VuaXplciwg
dGhlIENTUyBTeW50YXggc3BlYyBpcyB3cml0dGVuCisgICAgLy8gYXMgYSBzdGF0ZWxlc3MsIChm
aXhlZC1zaXplKSBsb29rLWFoZWFkIHRva2VuaXplci4KKyAgICAvLyBXZSBjb3VsZCBtb3ZlIHRv
IHRoZSBzdGF0ZWZ1bCBtb2RlbCBhbmQgaW5zdGVhZCBjcmVhdGUKKyAgICAvLyBzdGF0ZXMgZm9y
IGFsbCB0aGUgIm5leHQgMyBjb2RlcG9pbnRzIGFyZSBYIiBjYXNlcy4KKyAgICAvLyBTdGF0ZS1t
YWNoaW5lIHRva2VuaXplcnMgYXJlIGVhc2llciB0byB3cml0ZSB0byBoYW5kbGUKKyAgICAvLyBp
bmNyZW1lbnRhbCB0b2tlbml6YXRpb24gb2YgcGFydGlhbCBzb3VyY2VzLgorICAgIC8vIEhvd2V2
ZXIsIGZvciBub3cgd2UgZm9sbG93IHRoZSBzcGVjIGV4YWN0bHkuCisgICAgVUNoYXIgY2MgPSBj
b25zdW1lKCk7CisgICAgQ29kZVBvaW50IGNvZGVQb2ludEZ1bmMgPSAwOworCisgICAgaWYgKGlz
QVNDSUkoY2MpKSB7CisgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGNj
IDwgY29kZVBvaW50c051bWJlcik7CisgICAgICAgIGNvZGVQb2ludEZ1bmMgPSBjb2RlUG9pbnRz
W2NjXTsKKyAgICB9IGVsc2UKKyAgICAgICAgY29kZVBvaW50RnVuYyA9ICZDU1NUb2tlbml6ZXI6
Om5hbWVTdGFydDsKKworICAgIGlmIChjb2RlUG9pbnRGdW5jKQorICAgICAgICByZXR1cm4gKCh0
aGlzKS0+Kihjb2RlUG9pbnRGdW5jKSkoY2MpOworICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihE
ZWxpbWl0ZXJUb2tlbiwgY2MpOworfQorCisvLyBUaGlzIG1ldGhvZCBtZXJnZXMgdGhlIGZvbGxv
d2luZyBzcGVjIHNlY3Rpb25zIGZvciBlZmZpY2llbmN5CisvLyBodHRwOi8vd3d3LnczLm9yZy9U
Ui9jc3MzLXN5bnRheC8jY29uc3VtZS1hLW51bWJlcgorLy8gaHR0cDovL3d3dy53My5vcmcvVFIv
Y3NzMy1zeW50YXgvI2NvbnZlcnQtYS1zdHJpbmctdG8tYS1udW1iZXIKK0NTU1BhcnNlclRva2Vu
IENTU1Rva2VuaXplcjo6Y29uc3VtZU51bWJlcigpCit7CisgICAgQVNTRVJUKG5leHRDaGFyc0Fy
ZU51bWJlcigpKTsKKworICAgIE51bWVyaWNWYWx1ZVR5cGUgdHlwZSA9IEludGVnZXJWYWx1ZVR5
cGU7CisgICAgTnVtZXJpY1NpZ24gc2lnbiA9IE5vU2lnbjsKKyAgICB1bnNpZ25lZCBudW1iZXJM
ZW5ndGggPSAwOworCisgICAgVUNoYXIgbmV4dCA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNl
bWVudCgwKTsKKyAgICBpZiAobmV4dCA9PSAnKycpIHsKKyAgICAgICAgKytudW1iZXJMZW5ndGg7
CisgICAgICAgIHNpZ24gPSBQbHVzU2lnbjsKKyAgICB9IGVsc2UgaWYgKG5leHQgPT0gJy0nKSB7
CisgICAgICAgICsrbnVtYmVyTGVuZ3RoOworICAgICAgICBzaWduID0gTWludXNTaWduOworICAg
IH0KKworICAgIG51bWJlckxlbmd0aCA9IG1faW5wdXQuc2tpcFdoaWxlUHJlZGljYXRlPGlzQVND
SUlEaWdpdD4obnVtYmVyTGVuZ3RoKTsKKyAgICBuZXh0ID0gbV9pbnB1dC5wZWVrV2l0aG91dFJl
cGxhY2VtZW50KG51bWJlckxlbmd0aCk7CisgICAgaWYgKG5leHQgPT0gJy4nICYmIGlzQVNDSUlE
aWdpdChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQobnVtYmVyTGVuZ3RoICsgMSkpKSB7
CisgICAgICAgIHR5cGUgPSBOdW1iZXJWYWx1ZVR5cGU7CisgICAgICAgIG51bWJlckxlbmd0aCA9
IG1faW5wdXQuc2tpcFdoaWxlUHJlZGljYXRlPGlzQVNDSUlEaWdpdD4obnVtYmVyTGVuZ3RoICsg
Mik7CisgICAgICAgIG5leHQgPSBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQobnVtYmVy
TGVuZ3RoKTsKKyAgICB9CisKKyAgICBpZiAobmV4dCA9PSAnRScgfHwgbmV4dCA9PSAnZScpIHsK
KyAgICAgICAgbmV4dCA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudChudW1iZXJMZW5n
dGggKyAxKTsKKyAgICAgICAgaWYgKGlzQVNDSUlEaWdpdChuZXh0KSkgeworICAgICAgICAgICAg
dHlwZSA9IE51bWJlclZhbHVlVHlwZTsKKyAgICAgICAgICAgIG51bWJlckxlbmd0aCA9IG1faW5w
dXQuc2tpcFdoaWxlUHJlZGljYXRlPGlzQVNDSUlEaWdpdD4obnVtYmVyTGVuZ3RoICsgMSk7Cisg
ICAgICAgIH0gZWxzZSBpZiAoKG5leHQgPT0gJysnIHx8IG5leHQgPT0gJy0nKSAmJiBpc0FTQ0lJ
RGlnaXQobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KG51bWJlckxlbmd0aCArIDIpKSkg
eworICAgICAgICAgICAgdHlwZSA9IE51bWJlclZhbHVlVHlwZTsKKyAgICAgICAgICAgIG51bWJl
ckxlbmd0aCA9IG1faW5wdXQuc2tpcFdoaWxlUHJlZGljYXRlPGlzQVNDSUlEaWdpdD4obnVtYmVy
TGVuZ3RoICsgMyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBkb3VibGUgdmFsdWUgPSBtX2lu
cHV0LmdldERvdWJsZSgwLCBudW1iZXJMZW5ndGgpOworICAgIG1faW5wdXQuYWR2YW5jZShudW1i
ZXJMZW5ndGgpOworCisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKE51bWJlclRva2VuLCB2YWx1
ZSwgdHlwZSwgc2lnbik7Cit9CisKKy8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtc3ludGF4
LyNjb25zdW1lLWEtbnVtZXJpYy10b2tlbgorQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpj
b25zdW1lTnVtZXJpY1Rva2VuKCkKK3sKKyAgICBDU1NQYXJzZXJUb2tlbiB0b2tlbiA9IGNvbnN1
bWVOdW1iZXIoKTsKKyAgICBpZiAobmV4dENoYXJzQXJlSWRlbnRpZmllcigpKQorICAgICAgICB0
b2tlbi5jb252ZXJ0VG9EaW1lbnNpb25XaXRoVW5pdChjb25zdW1lTmFtZSgpKTsKKyAgICBlbHNl
IGlmIChjb25zdW1lSWZOZXh0KCclJykpCisgICAgICAgIHRva2VuLmNvbnZlcnRUb1BlcmNlbnRh
Z2UoKTsKKyAgICByZXR1cm4gdG9rZW47Cit9CisKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dn
L2Nzcy1zeW50YXgvI2NvbnN1bWUtaWRlbnQtbGlrZS10b2tlbgorQ1NTUGFyc2VyVG9rZW4gQ1NT
VG9rZW5pemVyOjpjb25zdW1lSWRlbnRMaWtlVG9rZW4oKQoreworICAgIFN0cmluZ1ZpZXcgbmFt
ZSA9IGNvbnN1bWVOYW1lKCk7CisgICAgaWYgKGNvbnN1bWVJZk5leHQoJygnKSkgeworICAgICAg
ICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAidXJsIikpIHsKKyAgICAgICAgICAg
IC8vIFRoZSBzcGVjIGlzIHNsaWdodGx5IGRpZmZlcmVudCBzbyBhcyB0byBhdm9pZCBkcm9wcGlu
ZyB3aGl0ZXNwYWNlCisgICAgICAgICAgICAvLyB0b2tlbnMsIGJ1dCB0aGV5IHdvdWxkbid0IGJl
IHVzZWQgYW5kIHRoaXMgaXMgZWFzaWVyLgorICAgICAgICAgICAgbV9pbnB1dC5hZHZhbmNlVW50
aWxOb25XaGl0ZXNwYWNlKCk7CisgICAgICAgICAgICBVQ2hhciBuZXh0ID0gbV9pbnB1dC5wZWVr
V2l0aG91dFJlcGxhY2VtZW50KDApOworICAgICAgICAgICAgaWYgKG5leHQgIT0gJyInICYmIG5l
eHQgIT0gJ1wnJykKKyAgICAgICAgICAgICAgICByZXR1cm4gY29uc3VtZVVybFRva2VuKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJsb2NrU3RhcnQoTGVmdFBhcmVudGhlc2lzVG9rZW4s
IEZ1bmN0aW9uVG9rZW4sIG5hbWUpOworICAgIH0KKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4o
SWRlbnRUb2tlbiwgbmFtZSk7Cit9CisKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1z
eW50YXgvI2NvbnN1bWUtYS1zdHJpbmctdG9rZW4KK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXpl
cjo6Y29uc3VtZVN0cmluZ1Rva2VuVW50aWwoVUNoYXIgZW5kaW5nQ29kZVBvaW50KQoreworICAg
IC8vIFN0cmluZ3Mgd2l0aG91dCBlc2NhcGVzIGdldCBoYW5kbGVkIHdpdGhvdXQgYWxsb2NhdGlv
bnMKKyAgICBmb3IgKHVuc2lnbmVkIHNpemUgPSAwOyA7IHNpemUrKykgeworICAgICAgICBVQ2hh
ciBjYyA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudChzaXplKTsKKyAgICAgICAgaWYg
KGNjID09IGVuZGluZ0NvZGVQb2ludCkgeworICAgICAgICAgICAgdW5zaWduZWQgc3RhcnRPZmZz
ZXQgPSBtX2lucHV0Lm9mZnNldCgpOworICAgICAgICAgICAgbV9pbnB1dC5hZHZhbmNlKHNpemUg
KyAxKTsKKyAgICAgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihTdHJpbmdUb2tlbiwgbV9p
bnB1dC5yYW5nZUF0KHN0YXJ0T2Zmc2V0LCBzaXplKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGlzTmV3TGluZShjYykpIHsKKyAgICAgICAgICAgIG1faW5wdXQuYWR2YW5jZShzaXplKTsKKyAg
ICAgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihCYWRTdHJpbmdUb2tlbik7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKGNjID09ICdcMCcgfHwgY2MgPT0gJ1xcJykKKyAgICAgICAgICAgIGJy
ZWFrOworICAgIH0KKworICAgIFN0cmluZ0J1aWxkZXIgb3V0cHV0OworICAgIHdoaWxlICh0cnVl
KSB7CisgICAgICAgIFVDaGFyIGNjID0gY29uc3VtZSgpOworICAgICAgICBpZiAoY2MgPT0gZW5k
aW5nQ29kZVBvaW50IHx8IGNjID09IGtFbmRPZkZpbGVNYXJrZXIpCisgICAgICAgICAgICByZXR1
cm4gQ1NTUGFyc2VyVG9rZW4oU3RyaW5nVG9rZW4sIHJlZ2lzdGVyU3RyaW5nKG91dHB1dC50b1N0
cmluZygpKSk7CisgICAgICAgIGlmIChpc05ld0xpbmUoY2MpKSB7CisgICAgICAgICAgICByZWNv
bnN1bWUoY2MpOworICAgICAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKEJhZFN0cmluZ1Rv
a2VuKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2MgPT0gJ1xcJykgeworICAgICAgICAgICAg
aWYgKG1faW5wdXQubmV4dElucHV0Q2hhcigpID09IGtFbmRPZkZpbGVNYXJrZXIpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoaXNOZXdMaW5lKG1faW5wdXQucGVl
a1dpdGhvdXRSZXBsYWNlbWVudCgwKSkpCisgICAgICAgICAgICAgICAgY29uc3VtZVNpbmdsZVdo
aXRlc3BhY2VJZk5leHQoKTsgLy8gVGhpcyBoYW5kbGVzIFxyXG4gZm9yIHVzCisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZChjb25zdW1lRXNjYXBlKCkpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoY2MpOworICAgIH0KK30K
KworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjb25zdW1lVW5pY29kZVJhbmdlKCkKK3sK
KyAgICBBU1NFUlQoaXNBU0NJSUhleERpZ2l0KG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVu
dCgwKSkgfHwgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApID09ICc/Jyk7CisgICAg
aW50IGxlbmd0aFJlbWFpbmluZyA9IDY7CisgICAgVUNoYXIzMiBzdGFydCA9IDA7CisKKyAgICB3
aGlsZSAobGVuZ3RoUmVtYWluaW5nICYmIGlzQVNDSUlIZXhEaWdpdChtX2lucHV0LnBlZWtXaXRo
b3V0UmVwbGFjZW1lbnQoMCkpKSB7CisgICAgICAgIHN0YXJ0ID0gc3RhcnQgKiAxNiArIHRvQVND
SUlIZXhWYWx1ZShjb25zdW1lKCkpOworICAgICAgICAtLWxlbmd0aFJlbWFpbmluZzsKKyAgICB9
CisKKyAgICBVQ2hhcjMyIGVuZCA9IHN0YXJ0OworICAgIGlmIChsZW5ndGhSZW1haW5pbmcgJiYg
Y29uc3VtZUlmTmV4dCgnPycpKSB7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIHN0YXJ0ICo9
IDE2OworICAgICAgICAgICAgZW5kID0gZW5kICogMTYgKyAweEY7CisgICAgICAgICAgICAtLWxl
bmd0aFJlbWFpbmluZzsKKyAgICAgICAgfSB3aGlsZSAobGVuZ3RoUmVtYWluaW5nICYmIGNvbnN1
bWVJZk5leHQoJz8nKSk7CisgICAgfSBlbHNlIGlmIChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFj
ZW1lbnQoMCkgPT0gJy0nICYmIGlzQVNDSUlIZXhEaWdpdChtX2lucHV0LnBlZWtXaXRob3V0UmVw
bGFjZW1lbnQoMSkpKSB7CisgICAgICAgIG1faW5wdXQuYWR2YW5jZSgpOworICAgICAgICBsZW5n
dGhSZW1haW5pbmcgPSA2OworICAgICAgICBlbmQgPSAwOworICAgICAgICBkbyB7CisgICAgICAg
ICAgICBlbmQgPSBlbmQgKiAxNiArIHRvQVNDSUlIZXhWYWx1ZShjb25zdW1lKCkpOworICAgICAg
ICAgICAgLS1sZW5ndGhSZW1haW5pbmc7CisgICAgICAgIH0gd2hpbGUgKGxlbmd0aFJlbWFpbmlu
ZyAmJiBpc0FTQ0lJSGV4RGlnaXQobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApKSk7
CisgICAgfQorCisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKFVuaWNvZGVSYW5nZVRva2VuLCBz
dGFydCwgZW5kKTsKK30KKworLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXN5bnRheC8j
bm9uLXByaW50YWJsZS1jb2RlLXBvaW50CitzdGF0aWMgYm9vbCBpc05vblByaW50YWJsZUNvZGVQ
b2ludChVQ2hhciBjYykKK3sKKyAgICByZXR1cm4gKGNjID49ICdcMCcgJiYgY2MgPD0gJ1x4OCcp
IHx8IGNjID09ICdceGInIHx8IChjYyA+PSAnXHhlJyAmJiBjYyA8PSAnXHgxZicpIHx8IGNjID09
ICdceDdmJzsKK30KKworLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXN5bnRheC8jY29u
c3VtZS11cmwtdG9rZW4KK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6Y29uc3VtZVVybFRv
a2VuKCkKK3sKKyAgICBtX2lucHV0LmFkdmFuY2VVbnRpbE5vbldoaXRlc3BhY2UoKTsKKworICAg
IC8vIFVSTCB0b2tlbnMgd2l0aG91dCBlc2NhcGVzIGdldCBoYW5kbGVkIHdpdGhvdXQgYWxsb2Nh
dGlvbnMKKyAgICBmb3IgKHVuc2lnbmVkIHNpemUgPSAwOyA7IHNpemUrKykgeworICAgICAgICBV
Q2hhciBjYyA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudChzaXplKTsKKyAgICAgICAg
aWYgKGNjID09ICcpJykgeworICAgICAgICAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBtX2lu
cHV0Lm9mZnNldCgpOworICAgICAgICAgICAgbV9pbnB1dC5hZHZhbmNlKHNpemUgKyAxKTsKKyAg
ICAgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihVcmxUb2tlbiwgbV9pbnB1dC5yYW5nZUF0
KHN0YXJ0T2Zmc2V0LCBzaXplKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNjIDw9ICcgJyB8
fCBjYyA9PSAnXFwnIHx8IGNjID09ICciJyB8fCBjYyA9PSAnXCcnIHx8IGNjID09ICcoJyB8fCBj
YyA9PSAnXHg3ZicpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBTdHJpbmdCdWls
ZGVyIHJlc3VsdDsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBVQ2hhciBjYyA9IGNvbnN1
bWUoKTsKKyAgICAgICAgaWYgKGNjID09ICcpJyB8fCBjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKQor
ICAgICAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKFVybFRva2VuLCByZWdpc3RlclN0cmlu
ZyhyZXN1bHQudG9TdHJpbmcoKSkpOworCisgICAgICAgIGlmIChpc0hUTUxTcGFjZShjYykpIHsK
KyAgICAgICAgICAgIG1faW5wdXQuYWR2YW5jZVVudGlsTm9uV2hpdGVzcGFjZSgpOworICAgICAg
ICAgICAgaWYgKGNvbnN1bWVJZk5leHQoJyknKSB8fCBtX2lucHV0Lm5leHRJbnB1dENoYXIoKSA9
PSBrRW5kT2ZGaWxlTWFya2VyKQorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tl
bihVcmxUb2tlbiwgcmVnaXN0ZXJTdHJpbmcocmVzdWx0LnRvU3RyaW5nKCkpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNjID09ICciJyB8fCBjYyA9PSAn
XCcnIHx8IGNjID09ICcoJyB8fCBpc05vblByaW50YWJsZUNvZGVQb2ludChjYykpCisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBpZiAoY2MgPT0gJ1xcJykgeworICAgICAgICAgICAgaWYg
KHR3b0NoYXJzQXJlVmFsaWRFc2NhcGUoY2MsIG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVu
dCgwKSkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNvbnN1bWVFc2NhcGUoKSk7
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdC5hcHBlbmQoY2MpOworICAgIH0KKwor
ICAgIGNvbnN1bWVCYWRVcmxSZW1uYW50cygpOworICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihC
YWRVcmxUb2tlbik7Cit9CisKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1zeW50YXgv
I2NvbnN1bWUtdGhlLXJlbW5hbnRzLW9mLWEtYmFkLXVybAordm9pZCBDU1NUb2tlbml6ZXI6OmNv
bnN1bWVCYWRVcmxSZW1uYW50cygpCit7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgVUNo
YXIgY2MgPSBjb25zdW1lKCk7CisgICAgICAgIGlmIChjYyA9PSAnKScgfHwgY2MgPT0ga0VuZE9m
RmlsZU1hcmtlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHR3b0NoYXJzQXJl
VmFsaWRFc2NhcGUoY2MsIG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSkpCisgICAg
ICAgICAgICBjb25zdW1lRXNjYXBlKCk7CisgICAgfQorfQorCit2b2lkIENTU1Rva2VuaXplcjo6
Y29uc3VtZVNpbmdsZVdoaXRlc3BhY2VJZk5leHQoKQoreworICAgIC8vIFdlIGNoZWNrIGZvciBc
clxuIGFuZCBIVE1MIHNwYWNlcyBzaW5jZSB3ZSBkb24ndCBkbyBwcmVwcm9jZXNzaW5nCisgICAg
VUNoYXIgbmV4dCA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKTsKKyAgICBpZiAo
bmV4dCA9PSAnXHInICYmIG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgxKSA9PSAnXG4n
KQorICAgICAgICBtX2lucHV0LmFkdmFuY2UoMik7CisgICAgZWxzZSBpZiAoaXNIVE1MU3BhY2Uo
bmV4dCkpCisgICAgICAgIG1faW5wdXQuYWR2YW5jZSgpOworfQorCit2b2lkIENTU1Rva2VuaXpl
cjo6Y29uc3VtZVVudGlsQ29tbWVudEVuZEZvdW5kKCkKK3sKKyAgICBVQ2hhciBjID0gY29uc3Vt
ZSgpOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGlmIChjID09IGtFbmRPZkZpbGVNYXJr
ZXIpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChjICE9ICcqJykgeworICAgICAg
ICAgICAgYyA9IGNvbnN1bWUoKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9Cisg
ICAgICAgIGMgPSBjb25zdW1lKCk7CisgICAgICAgIGlmIChjID09ICcvJykKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICB9Cit9CisKK2Jvb2wgQ1NTVG9rZW5pemVyOjpjb25zdW1lSWZOZXh0KFVD
aGFyIGNoYXJhY3RlcikKK3sKKyAgICAvLyBTaW5jZSB3ZSdyZSBub3QgZG9pbmcgcmVwbGFjZW1l
bnQgd2UgY2FuJ3QgdGVsbCB0aGUgZGlmZmVyZW5jZSBmcm9tCisgICAgLy8gYSBOVUwgaW4gdGhl
IG1pZGRsZSBhbmQgdGhlIGtFbmRPZkZpbGVNYXJrZXIsIHNvIGNoYXJhY3RlciBtdXN0IG5vdCBi
ZQorICAgIC8vIE5VTC4KKyAgICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAgICBpZiAobV9pbnB1dC5w
ZWVrV2l0aG91dFJlcGxhY2VtZW50KDApID09IGNoYXJhY3RlcikgeworICAgICAgICBtX2lucHV0
LmFkdmFuY2UoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKworLy8gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1zeW50YXgvI2NvbnN1bWUtYS1u
YW1lCitTdHJpbmdWaWV3IENTU1Rva2VuaXplcjo6Y29uc3VtZU5hbWUoKQoreworICAgIC8vIE5h
bWVzIHdpdGhvdXQgZXNjYXBlcyBnZXQgaGFuZGxlZCB3aXRob3V0IGFsbG9jYXRpb25zCisgICAg
Zm9yICh1bnNpZ25lZCBzaXplID0gMDsgOyArK3NpemUpIHsKKyAgICAgICAgVUNoYXIgY2MgPSBt
X2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoc2l6ZSk7CisgICAgICAgIGlmIChpc05hbWVD
b2RlUG9pbnQoY2MpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIC8vIHBlZWtXaXRo
b3V0UmVwbGFjZW1lbnQgd2lsbCByZXR1cm4gTlVMIHdoZW4gd2UgaGl0IHRoZSBlbmQgb2YgdGhl
CisgICAgICAgIC8vIGlucHV0LiBJbiB0aGF0IGNhc2Ugd2Ugd2FudCB0byBzdGlsbCB1c2UgdGhl
IHJhbmdlQXQoKSBmYXN0IHBhdGgKKyAgICAgICAgLy8gYmVsb3cuCisgICAgICAgIGlmIChjYyA9
PSAnXDAnICYmIG1faW5wdXQub2Zmc2V0KCkgKyBzaXplIDwgbV9pbnB1dC5sZW5ndGgoKSkKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoY2MgPT0gJ1xcJykKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IG1faW5wdXQub2Zmc2V0KCk7Cisg
ICAgICAgIG1faW5wdXQuYWR2YW5jZShzaXplKTsKKyAgICAgICAgcmV0dXJuIG1faW5wdXQucmFu
Z2VBdChzdGFydE9mZnNldCwgc2l6ZSk7CisgICAgfQorCisgICAgU3RyaW5nQnVpbGRlciByZXN1
bHQ7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgVUNoYXIgY2MgPSBjb25zdW1lKCk7Cisg
ICAgICAgIGlmIChpc05hbWVDb2RlUG9pbnQoY2MpKSB7CisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKGNjKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICh0
d29DaGFyc0FyZVZhbGlkRXNjYXBlKGNjLCBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQo
MCkpKSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNvbnN1bWVFc2NhcGUoKSk7CisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICByZWNvbnN1bWUoY2MpOworICAg
ICAgICByZXR1cm4gcmVnaXN0ZXJTdHJpbmcocmVzdWx0LnRvU3RyaW5nKCkpOworICAgIH0KK30K
KworLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXN5bnRheC8jY29uc3VtZS1hbi1lc2Nh
cGVkLWNvZGUtcG9pbnQKK1VDaGFyMzIgQ1NTVG9rZW5pemVyOjpjb25zdW1lRXNjYXBlKCkKK3sK
KyAgICBVQ2hhciBjYyA9IGNvbnN1bWUoKTsKKyAgICBBU1NFUlQoIWlzTmV3TGluZShjYykpOwor
ICAgIGlmIChpc0FTQ0lJSGV4RGlnaXQoY2MpKSB7CisgICAgICAgIHVuc2lnbmVkIGNvbnN1bWVk
SGV4RGlnaXRzID0gMTsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBoZXhDaGFyczsKKyAgICAgICAg
aGV4Q2hhcnMuYXBwZW5kKGNjKTsKKyAgICAgICAgd2hpbGUgKGNvbnN1bWVkSGV4RGlnaXRzIDwg
NiAmJiBpc0FTQ0lJSGV4RGlnaXQobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApKSkg
eworICAgICAgICAgICAgY2MgPSBjb25zdW1lKCk7CisgICAgICAgICAgICBoZXhDaGFycy5hcHBl
bmQoY2MpOworICAgICAgICAgICAgY29uc3VtZWRIZXhEaWdpdHMrKzsKKyAgICAgICAgfTsKKyAg
ICAgICAgY29uc3VtZVNpbmdsZVdoaXRlc3BhY2VJZk5leHQoKTsKKyAgICAgICAgYm9vbCBvayA9
IGZhbHNlOworICAgICAgICBVQ2hhcjMyIGNvZGVQb2ludCA9IGhleENoYXJzLnRvU3RyaW5nKCku
dG9VSW50U3RyaWN0KCZvaywgMTYpOworICAgICAgICBBU1NFUlQob2spOworICAgICAgICBpZiAo
IWNvZGVQb2ludCB8fCAoMHhEODAwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhERkZG
KSB8fCBjb2RlUG9pbnQgPiAweDEwRkZGRikKKyAgICAgICAgICAgIHJldHVybiByZXBsYWNlbWVu
dENoYXJhY3RlcjsKKyAgICAgICAgcmV0dXJuIGNvZGVQb2ludDsKKyAgICB9CisKKyAgICBpZiAo
Y2MgPT0ga0VuZE9mRmlsZU1hcmtlcikKKyAgICAgICAgcmV0dXJuIHJlcGxhY2VtZW50Q2hhcmFj
dGVyOworICAgIHJldHVybiBjYzsKK30KKworYm9vbCBDU1NUb2tlbml6ZXI6Om5leHRUd29DaGFy
c0FyZVZhbGlkRXNjYXBlKCkKK3sKKyAgICByZXR1cm4gdHdvQ2hhcnNBcmVWYWxpZEVzY2FwZSht
X2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCksIG1faW5wdXQucGVla1dpdGhvdXRSZXBs
YWNlbWVudCgxKSk7Cit9CisKKy8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtc3ludGF4LyNz
dGFydHMtd2l0aC1hLW51bWJlcgorYm9vbCBDU1NUb2tlbml6ZXI6Om5leHRDaGFyc0FyZU51bWJl
cihVQ2hhciBmaXJzdCkKK3sKKyAgICBVQ2hhciBzZWNvbmQgPSBtX2lucHV0LnBlZWtXaXRob3V0
UmVwbGFjZW1lbnQoMCk7CisgICAgaWYgKGlzQVNDSUlEaWdpdChmaXJzdCkpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGlmIChmaXJzdCA9PSAnKycgfHwgZmlyc3QgPT0gJy0nKQorICAgICAg
ICByZXR1cm4gKChpc0FTQ0lJRGlnaXQoc2Vjb25kKSkgfHwgKHNlY29uZCA9PSAnLicgJiYgaXNB
U0NJSURpZ2l0KG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgxKSkpKTsKKyAgICBpZiAo
Zmlyc3QgPT0nLicpCisgICAgICAgIHJldHVybiAoaXNBU0NJSURpZ2l0KHNlY29uZCkpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBDU1NUb2tlbml6ZXI6Om5leHRDaGFyc0FyZU51bWJl
cigpCit7CisgICAgVUNoYXIgZmlyc3QgPSBjb25zdW1lKCk7CisgICAgYm9vbCBhcmVOdW1iZXIg
PSBuZXh0Q2hhcnNBcmVOdW1iZXIoZmlyc3QpOworICAgIHJlY29uc3VtZShmaXJzdCk7CisgICAg
cmV0dXJuIGFyZU51bWJlcjsKK30KKworLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXN5
bnRheC8jd291bGQtc3RhcnQtYW4taWRlbnRpZmllcgorYm9vbCBDU1NUb2tlbml6ZXI6Om5leHRD
aGFyc0FyZUlkZW50aWZpZXIoVUNoYXIgZmlyc3QpCit7CisgICAgVUNoYXIgc2Vjb25kID0gbV9p
bnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApOworICAgIGlmIChpc05hbWVTdGFydENvZGVQ
b2ludChmaXJzdCkgfHwgdHdvQ2hhcnNBcmVWYWxpZEVzY2FwZShmaXJzdCwgc2Vjb25kKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoZmlyc3QgPT0gJy0nKQorICAgICAgICByZXR1
cm4gaXNOYW1lU3RhcnRDb2RlUG9pbnQoc2Vjb25kKSB8fCBzZWNvbmQgPT0gJy0nIHx8IG5leHRU
d29DaGFyc0FyZVZhbGlkRXNjYXBlKCk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
Q1NTVG9rZW5pemVyOjpuZXh0Q2hhcnNBcmVJZGVudGlmaWVyKCkKK3sKKyAgICBVQ2hhciBmaXJz
dCA9IGNvbnN1bWUoKTsKKyAgICBib29sIGFyZUlkZW50aWZpZXIgPSBuZXh0Q2hhcnNBcmVJZGVu
dGlmaWVyKGZpcnN0KTsKKyAgICByZWNvbnN1bWUoZmlyc3QpOworICAgIHJldHVybiBhcmVJZGVu
dGlmaWVyOworfQorCitTdHJpbmdWaWV3IENTU1Rva2VuaXplcjo6cmVnaXN0ZXJTdHJpbmcoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgbV9zY29wZS5zdG9yZVN0cmluZyhzdHJpbmcpOwor
ICAgIHJldHVybiBzdHJpbmc7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTM5IEBACisvLyBDb3B5cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
Ky8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8v
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisv
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworI2lmbmRlZiBDU1NUb2tlbml6ZXJfaAorI2RlZmluZSBDU1NUb2tlbml6ZXJfaAor
CisjaW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW4uaCIKKyNpbmNsdWRlICJJbnB1dFN0cmVhbVByZXBy
b2Nlc3Nvci5oIgorI2luY2x1ZGUgPGNsaW1pdHM+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Vmlldy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIENTU1Rva2VuaXplcklucHV0U3RyZWFtOworY2xhc3MgQ1NTUGFyc2Vy
T2JzZXJ2ZXJXcmFwcGVyOworY2xhc3MgQ1NTUGFyc2VyVG9rZW5SYW5nZTsKKworY2xhc3MgQ1NT
VG9rZW5pemVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDU1NUb2tlbml6ZXIpOworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGNsYXNzIFNjb3BlIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIFNjb3BlKGNvbnN0IFN0cmluZyYpOworICAgICAgICBTY29wZShj
b25zdCBTdHJpbmcmLCBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXImKTsgLy8gRm9yIHRoZSBpbnNw
ZWN0b3IKKworICAgICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHRva2VuUmFuZ2UoKTsKKyAgICAg
ICAgdW5zaWduZWQgdG9rZW5Db3VudCgpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgdm9pZCBz
dG9yZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykgeyBtX3N0cmluZ1Bvb2wuYXBwZW5kKHN0
cmluZyk7IH0KKyAgICAgICAgVmVjdG9yPENTU1BhcnNlclRva2VuLCAzMj4gbV90b2tlbnM7Cisg
ICAgICAgIC8vIFdlIG9ubHkgYWxsb2NhdGUgc3RyaW5ncyB3aGVuIGVzY2FwZXMgYXJlIHVzZWQu
CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IG1fc3RyaW5nUG9vbDsKKyAgICAgICAgU3RyaW5nIG1f
c3RyaW5nOworCisgICAgICAgIGZyaWVuZCBjbGFzcyBDU1NUb2tlbml6ZXI7CisgICAgfTsKKwor
cHJpdmF0ZToKKyAgICBDU1NUb2tlbml6ZXIoQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0mLCBTY29w
ZSYpOworCisgICAgQ1NTUGFyc2VyVG9rZW4gbmV4dFRva2VuKCk7CisKKyAgICBVQ2hhciBjb25z
dW1lKCk7CisgICAgdm9pZCByZWNvbnN1bWUoVUNoYXIpOworCisgICAgQ1NTUGFyc2VyVG9rZW4g
Y29uc3VtZU51bWVyaWNUb2tlbigpOworICAgIENTU1BhcnNlclRva2VuIGNvbnN1bWVJZGVudExp
a2VUb2tlbigpOworICAgIENTU1BhcnNlclRva2VuIGNvbnN1bWVOdW1iZXIoKTsKKyAgICBDU1NQ
YXJzZXJUb2tlbiBjb25zdW1lU3RyaW5nVG9rZW5VbnRpbChVQ2hhcik7CisgICAgQ1NTUGFyc2Vy
VG9rZW4gY29uc3VtZVVuaWNvZGVSYW5nZSgpOworICAgIENTU1BhcnNlclRva2VuIGNvbnN1bWVV
cmxUb2tlbigpOworCisgICAgdm9pZCBjb25zdW1lQmFkVXJsUmVtbmFudHMoKTsKKyAgICB2b2lk
IGNvbnN1bWVTaW5nbGVXaGl0ZXNwYWNlSWZOZXh0KCk7CisgICAgdm9pZCBjb25zdW1lVW50aWxD
b21tZW50RW5kRm91bmQoKTsKKworICAgIGJvb2wgY29uc3VtZUlmTmV4dChVQ2hhcik7CisgICAg
U3RyaW5nVmlldyBjb25zdW1lTmFtZSgpOworICAgIFVDaGFyMzIgY29uc3VtZUVzY2FwZSgpOwor
CisgICAgYm9vbCBuZXh0VHdvQ2hhcnNBcmVWYWxpZEVzY2FwZSgpOworICAgIGJvb2wgbmV4dENo
YXJzQXJlTnVtYmVyKFVDaGFyKTsKKyAgICBib29sIG5leHRDaGFyc0FyZU51bWJlcigpOworICAg
IGJvb2wgbmV4dENoYXJzQXJlSWRlbnRpZmllcihVQ2hhcik7CisgICAgYm9vbCBuZXh0Q2hhcnNB
cmVJZGVudGlmaWVyKCk7CisKKyAgICBDU1NQYXJzZXJUb2tlbiBibG9ja1N0YXJ0KENTU1BhcnNl
clRva2VuVHlwZSk7CisgICAgQ1NTUGFyc2VyVG9rZW4gYmxvY2tTdGFydChDU1NQYXJzZXJUb2tl
blR5cGUgYmxvY2tUeXBlLCBDU1NQYXJzZXJUb2tlblR5cGUsIFN0cmluZ1ZpZXcpOworICAgIENT
U1BhcnNlclRva2VuIGJsb2NrRW5kKENTU1BhcnNlclRva2VuVHlwZSwgQ1NTUGFyc2VyVG9rZW5U
eXBlIHN0YXJ0VHlwZSk7CisKKyAgICBDU1NQYXJzZXJUb2tlbiB3aGl0ZVNwYWNlKFVDaGFyKTsK
KyAgICBDU1NQYXJzZXJUb2tlbiBsZWZ0UGFyZW50aGVzaXMoVUNoYXIpOworICAgIENTU1BhcnNl
clRva2VuIHJpZ2h0UGFyZW50aGVzaXMoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIGxlZnRC
cmFja2V0KFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiByaWdodEJyYWNrZXQoVUNoYXIpOwor
ICAgIENTU1BhcnNlclRva2VuIGxlZnRCcmFjZShVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4g
cmlnaHRCcmFjZShVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gcGx1c09yRnVsbFN0b3AoVUNo
YXIpOworICAgIENTU1BhcnNlclRva2VuIGNvbW1hKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tl
biBoeXBoZW5NaW51cyhVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gYXN0ZXJpc2soVUNoYXIp
OworICAgIENTU1BhcnNlclRva2VuIGxlc3NUaGFuKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tl
biBzb2xpZHVzKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBjb2xvbihVQ2hhcik7CisgICAg
Q1NTUGFyc2VyVG9rZW4gc2VtaUNvbG9uKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBoYXNo
KFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBjaXJjdW1mbGV4QWNjZW50KFVDaGFyKTsKKyAg
ICBDU1NQYXJzZXJUb2tlbiBkb2xsYXJTaWduKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiB2
ZXJ0aWNhbExpbmUoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIHRpbGRlKFVDaGFyKTsKKyAg
ICBDU1NQYXJzZXJUb2tlbiBjb21tZXJjaWFsQXQoVUNoYXIpOworICAgIENTU1BhcnNlclRva2Vu
IHJldmVyc2VTb2xpZHVzKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBhc2NpaURpZ2l0KFVD
aGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBsZXR0ZXJVKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJU
b2tlbiBuYW1lU3RhcnQoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIHN0cmluZ1N0YXJ0KFVD
aGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBlbmRPZkZpbGUoVUNoYXIpOworCisgICAgU3RyaW5n
VmlldyByZWdpc3RlclN0cmluZyhjb25zdCBTdHJpbmcmKTsKKworICAgIHVzaW5nIENvZGVQb2lu
dCA9IENTU1BhcnNlclRva2VuIChDU1NUb2tlbml6ZXI6OiopKFVDaGFyKTsKKyAgICBzdGF0aWMg
Y29uc3QgQ29kZVBvaW50IGNvZGVQb2ludHNbXTsKKworICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tl
blR5cGUsIDg+IG1fYmxvY2tTdGFjazsKKyAgICBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbSYgbV9p
bnB1dDsKKyAgICBTY29wZSYgbV9zY29wZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIENTU1Rva2VuaXplcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcyIEBACisvLyBDb3B5cmlnaHQgMjAxNCBUaGUg
Q2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
Ky8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisv
LyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
Ly8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkNTU1Rva2VuaXplcklucHV0U3RyZWFtLmgiCisKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21z
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ1NTVG9rZW5pemVySW5wdXRTdHJlYW06OkNT
U1Rva2VuaXplcklucHV0U3RyZWFtKFN0cmluZyBpbnB1dCkKKyAgICA6IG1fb2Zmc2V0KDApCisg
ICAgLCBtX3N0cmluZ0xlbmd0aChpbnB1dC5sZW5ndGgoKSkKKyAgICAsIG1fc3RyaW5nKGlucHV0
LmltcGwoKSkKK3sKK30KKwordm9pZCBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbTo6YWR2YW5jZVVu
dGlsTm9uV2hpdGVzcGFjZSgpCit7CisgICAgLy8gVXNpbmcgSFRNTCBzcGFjZSBoZXJlIHJhdGhl
ciB0aGFuIENTUyBzcGFjZSBzaW5jZSB3ZSBkb24ndCBkbyBwcmVwcm9jZXNzaW5nCisgICAgaWYg
KG1fc3RyaW5nLT5pczhCaXQoKSkgeworICAgICAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVycyA9
IG1fc3RyaW5nLT5jaGFyYWN0ZXJzOCgpOworICAgICAgICB3aGlsZSAobV9vZmZzZXQgPCBtX3N0
cmluZ0xlbmd0aCAmJiBpc0hUTUxTcGFjZShjaGFyYWN0ZXJzW21fb2Zmc2V0XSkpCisgICAgICAg
ICAgICArK21fb2Zmc2V0OworICAgIH0gZWxzZSB7CisgICAgICAgIGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzID0gbV9zdHJpbmctPmNoYXJhY3RlcnMxNigpOworICAgICAgICB3aGlsZSAobV9vZmZz
ZXQgPCBtX3N0cmluZ0xlbmd0aCAmJiBpc0hUTUxTcGFjZShjaGFyYWN0ZXJzW21fb2Zmc2V0XSkp
CisgICAgICAgICAgICArK21fb2Zmc2V0OworICAgIH0KK30KKworZG91YmxlIENTU1Rva2VuaXpl
cklucHV0U3RyZWFtOjpnZXREb3VibGUodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCkgY29u
c3QKK3sKKyAgICBBU1NFUlQoc3RhcnQgPD0gZW5kICYmICgobV9vZmZzZXQgKyBlbmQpIDw9IG1f
c3RyaW5nTGVuZ3RoKSk7CisgICAgYm9vbCBpc1Jlc3VsdE9LID0gZmFsc2U7CisgICAgZG91Ymxl
IHJlc3VsdCA9IDAuMDsKKyAgICBpZiAoc3RhcnQgPCBlbmQpIHsKKyAgICAgICAgaWYgKG1fc3Ry
aW5nLT5pczhCaXQoKSkKKyAgICAgICAgICAgIHJlc3VsdCA9IGNoYXJhY3RlcnNUb0RvdWJsZSht
X3N0cmluZy0+Y2hhcmFjdGVyczgoKSArIG1fb2Zmc2V0ICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCAm
aXNSZXN1bHRPSyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdCA9IGNoYXJhY3Rl
cnNUb0RvdWJsZShtX3N0cmluZy0+Y2hhcmFjdGVyczE2KCkgKyBtX29mZnNldCArIHN0YXJ0LCBl
bmQgLSBzdGFydCwgJmlzUmVzdWx0T0spOworICAgIH0KKyAgICAvLyBGSVhNRTogSXQgbG9va3Mg
bGlrZSBjYWxsZXJzIGVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQgbnVtYmVyCisgICAgcmV0dXJuIGlz
UmVzdWx0T0sgPyByZXN1bHQgOiAwLjA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0
U3RyZWFtLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NU
b2tlbml6ZXJJbnB1dFN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA5IEBACisv
LyBDb3B5cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8v
IGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmbmRlZiBD
U1NUb2tlbml6ZXJJbnB1dFN0cmVhbV9oCisjZGVmaW5lIENTU1Rva2VuaXplcklucHV0U3RyZWFt
X2gKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDU1NUb2tlbml6
ZXJJbnB1dFN0cmVhbSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ1NTVG9rZW5pemVySW5w
dXRTdHJlYW0pOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4
cGxpY2l0IENTU1Rva2VuaXplcklucHV0U3RyZWFtKFN0cmluZyBpbnB1dCk7CisKKyAgICAvLyBH
ZXRzIHRoZSBjaGFyIGluIHRoZSBzdHJlYW0gcmVwbGFjaW5nIE5VTCBjaGFyYWN0ZXJzIHdpdGgg
YSB1bmljb2RlCisgICAgLy8gcmVwbGFjZW1lbnQgY2hhcmFjdGVyLiBXaWxsIHJldHVybiAoTlVM
KSBrRW5kT2ZGaWxlTWFya2VyIHdoZW4gYXQgdGhlCisgICAgLy8gZW5kIG9mIHRoZSBzdHJlYW0u
CisgICAgVUNoYXIgbmV4dElucHV0Q2hhcigpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9v
ZmZzZXQgPj0gbV9zdHJpbmdMZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gJ1wwJzsKKyAgICAg
ICAgVUNoYXIgcmVzdWx0ID0gKCptX3N0cmluZylbbV9vZmZzZXRdOworICAgICAgICByZXR1cm4g
cmVzdWx0ID8gcmVzdWx0IDogMHhGRkZEOworICAgIH0KKworICAgIC8vIEdldHMgdGhlIGNoYXIg
YXQgbG9va2FoZWFkT2Zmc2V0IGZyb20gdGhlIGN1cnJlbnQgc3RyZWFtIHBvc2l0aW9uLiBXaWxs
CisgICAgLy8gcmV0dXJuIE5VTCAoa0VuZE9mRmlsZU1hcmtlcikgaWYgdGhlIHN0cmVhbSBwb3Np
dGlvbiBpcyBhdCB0aGUgZW5kLgorICAgIC8vIE5PVEU6IFRoaXMgbWF5ICphbHNvKiByZXR1cm4g
TlVMIGlmIHRoZXJlJ3Mgb25lIGluIHRoZSBpbnB1dCEgTmV2ZXIKKyAgICAvLyBjb21wYXJlIHRo
ZSByZXR1cm4gdmFsdWUgdG8gJ1wwJy4KKyAgICBVQ2hhciBwZWVrV2l0aG91dFJlcGxhY2VtZW50
KHVuc2lnbmVkIGxvb2thaGVhZE9mZnNldCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICgobV9v
ZmZzZXQgKyBsb29rYWhlYWRPZmZzZXQpID49IG1fc3RyaW5nTGVuZ3RoKQorICAgICAgICAgICAg
cmV0dXJuICdcMCc7CisgICAgICAgIHJldHVybiAoKm1fc3RyaW5nKVttX29mZnNldCArIGxvb2th
aGVhZE9mZnNldF07CisgICAgfQorCisgICAgdm9pZCBhZHZhbmNlKHVuc2lnbmVkIG9mZnNldCA9
IDEpIHsgbV9vZmZzZXQgKz0gb2Zmc2V0OyB9CisgICAgdm9pZCBwdXNoQmFjayhVQ2hhciBjYykK
KyAgICB7CisgICAgICAgIC0tbV9vZmZzZXQ7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY2MsIG5l
eHRJbnB1dENoYXIoKSA9PSBjYyk7CisgICAgfQorCisgICAgZG91YmxlIGdldERvdWJsZSh1bnNp
Z25lZCBzdGFydCwgdW5zaWduZWQgZW5kKSBjb25zdDsKKworICAgIHRlbXBsYXRlPGJvb2wgY2hh
cmFjdGVyUHJlZGljYXRlKFVDaGFyKT4KKyAgICB1bnNpZ25lZCBza2lwV2hpbGVQcmVkaWNhdGUo
dW5zaWduZWQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgaWYgKG1fc3RyaW5nLT5pczhCaXQoKSkg
eworICAgICAgICAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4ID0gbV9zdHJpbmctPmNoYXJh
Y3RlcnM4KCk7CisgICAgICAgICAgICB3aGlsZSAoKG1fb2Zmc2V0ICsgb2Zmc2V0KSA8IG1fc3Ry
aW5nTGVuZ3RoICYmIGNoYXJhY3RlclByZWRpY2F0ZShjaGFyYWN0ZXJzOFttX29mZnNldCArIG9m
ZnNldF0pKQorICAgICAgICAgICAgICAgICsrb2Zmc2V0OworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMxNiA9IG1fc3RyaW5nLT5jaGFyYWN0ZXJz
MTYoKTsKKyAgICAgICAgICAgIHdoaWxlICgobV9vZmZzZXQgKyBvZmZzZXQpIDwgbV9zdHJpbmdM
ZW5ndGggJiYgY2hhcmFjdGVyUHJlZGljYXRlKGNoYXJhY3RlcnMxNlttX29mZnNldCArIG9mZnNl
dF0pKQorICAgICAgICAgICAgICAgICsrb2Zmc2V0OworICAgICAgICB9CisgICAgICAgIHJldHVy
biBvZmZzZXQ7CisgICAgfQorCisgICAgdm9pZCBhZHZhbmNlVW50aWxOb25XaGl0ZXNwYWNlKCk7
CisKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZ0xlbmd0aDsg
fQorICAgIHVuc2lnbmVkIG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bWluKG1fb2Zmc2V0
LCBtX3N0cmluZ0xlbmd0aCk7IH0KKworICAgIFN0cmluZ1ZpZXcgcmFuZ2VBdCh1bnNpZ25lZCBz
dGFydCwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKHN0YXJ0
ICsgbGVuZ3RoIDw9IG1fc3RyaW5nTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZ1ZpZXco
bV9zdHJpbmcuZ2V0KCkpLnN1YnN0cmluZyhzdGFydCwgbGVuZ3RoKTsgLy8gRklYTUU6IFNob3Vs
ZCBtYWtlIGEgY29uc3RydWN0b3Igb24gU3RyaW5nVmlldyBmb3IgdGhpcy4KKyAgICB9CisKK3By
aXZhdGU6CisgICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIGNvbnN0IHNpemVfdCBtX3N0cmluZ0xl
bmd0aDsKKyAgICBjb25zdCBSZWZQdHI8U3RyaW5nSW1wbD4gbV9zdHJpbmc7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbV9o
CisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCShyZXZpc2lvbiAyMDQ5NzgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiAr
NDAsMTEgQEAgZW51bSBMZW5ndGhUeXBlIHsKICAgICBVbmRlZmluZWQKIH07CiAKK2VudW0gVmFs
dWVSYW5nZSB7CisgICAgVmFsdWVSYW5nZUFsbCwKKyAgICBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUK
K307CisKIGNsYXNzIENhbGN1bGF0aW9uVmFsdWU7CiBjbGFzcyBUZXh0U3RyZWFtOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287019</attachid>
            <date>2016-08-25 14:30:19 -0700</date>
            <delta_ts>2016-08-25 15:10:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>450963</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3NiBAQAorMjAxNi0wOC0yNCAgRGF2ZSBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBJbml0aWFsIGxhbmRpbmcgb2YgQ1NT
IFBhcnNlciBUb2tlbml6YXRpb24gKGFuZCBmaWxlcyB0byBzdXBwb3J0IHRoYXQpLiBOb3QgdXNl
ZCB5ZXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjExNzQKKworICAgICAgICBUaGlzIGNvZGUgaXMgaW1wb3J0ZWQgZnJvbSBCbGluayBhbmQgaXMg
dGhlaXIgQ1NTIHBhcnNlciAobW9kaWZpZWQgdG8gd29yayBpbiBXZWJLaXQpLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGNzcy9DU1NNYXJrdXAuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQ1NTVG9rZW5p
emVySWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVDaGFyYWN0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplQ2hhcmFjdGVyQXNDb2RlUG9pbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6c2VyaWFsaXplSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpzZXJp
YWxpemVTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplVVJJKToKKyAgICAgICAg
KFdlYkNvcmU6OnNlcmlhbGl6ZUZvbnRGYW1pbHkpOgorICAgICAgICAqIGNzcy9DU1NNYXJrdXAu
aDogQWRkZWQuCisgICAgICAgICogY3NzL0NTU09NVXRpbHMuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIGNzcy9DU1NPTVV0aWxzLmg6IFJlbW92ZWQuCisgICAgICAgICogY3NzL0NTU1NlbGVjdG9y
LmNwcDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHA6IEFkZGVk
LgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmg6IEFkZGVkLgorICAg
ICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6aXNDU1NTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjppc05hbWVTdGFydENvZGVQb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjppc05hbWVDb2RlUG9pbnQpOgorICAgICAgICAqIGNzcy9w
YXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJPYnNlcnZlcjo6fkNTU1BhcnNlck9ic2VydmVyKToKKyAgICAgICAgKiBjc3MvcGFyc2Vy
L0NTU1BhcnNlck9ic2VydmVyV3JhcHBlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyOjpzdGFydE9mZnNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OnByZXZpb3VzVG9rZW5TdGFydE9mZnNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OmVuZE9mZnNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OnNraXBDb21tZW50c0Jl
Zm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OnlpZWxk
Q29tbWVudHNCZWZvcmUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXJX
cmFwcGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyT2JzZXJ2ZXJXcmFw
cGVyOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyT2JzZXJ2ZXJXcmFwcGVyOjpvYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXJPYnNlcnZlcldyYXBwZXI6OmFkZENvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyT2JzZXJ2ZXJXcmFwcGVyOjphZGRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXJPYnNlcnZlcldyYXBwZXI6OmZpbmFsaXplQ29uc3RydWN0aW9uKToKKyAgICAgICAgKiBjc3Mv
cGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjc3NQ
cmltaXRpdmVWYWx1ZVVuaXRGcm9tVHJpZSk6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdUb1Vu
aXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpDU1NQYXJzZXJUb2tl
bik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6Y29udmVydFRvRGltZW5zaW9u
V2l0aFVuaXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OmNvbnZlcnRUb1Bl
cmNlbnRhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OmRlbGltaXRlcik6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6bnVtZXJpY1NpZ24pOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46Om51bWVyaWNWYWx1ZVR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46Om51bWVyaWNWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXJUb2tlbjo6cGFyc2VBc1VucmVzb2x2ZWRDU1NQcm9wZXJ0eUlEKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjppZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJUb2tlbjo6ZnVuY3Rpb25JZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tl
bjo6aGFzU3RyaW5nQmFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6
Y29weVdpdGhVcGRhdGVkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2Vu
Ojp2YWx1ZURhdGFDaGFyUmF3RXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9r
ZW46Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OnNlcmlh
bGl6ZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlclRva2VuOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clRva2VuOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6Z2V0SGFz
aFRva2VuVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6Z2V0QmxvY2tU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjp1bml0VHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6dW5pY29kZVJhbmdlU3RhcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OnVuaWNvZGVSYW5nZUVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6aW5pdFZhbHVlRnJvbVN0cmluZ1ZpZXcpOgorICAgICAg
ICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW5SYW5nZS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6ZW9mVG9rZW4pOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6bWFrZVN1YlJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlclRva2VuUmFuZ2U6OmNvbnN1bWVCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXJUb2tlblJhbmdlOjpjb25zdW1lQ29tcG9uZW50VmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6c2VyaWFsaXplKToKKyAgICAgICAgKiBjc3MvcGFy
c2VyL0NTU1BhcnNlclRva2VuUmFuZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJUb2tlblJhbmdlOjpDU1NQYXJzZXJUb2tlblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlclRva2VuUmFuZ2U6OmF0RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clRva2VuUmFuZ2U6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlblJhbmdl
OjpwZWVrKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuUmFuZ2U6OmNvbnN1bWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6Y29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6Y29u
c3VtZVdoaXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6
YmVnaW4pOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Omhhc1ByZWZpeCk6CisgICAgICAgIChXZWJDb3JlOjpjc3NQ
cm9wZXJ0eUlEKToKKyAgICAgICAgKFdlYkNvcmU6OmNzc1Byb3BlcnR5TmFtZUlPU0FsaWFzaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzQXBwbGVMZWdhY3lDc3NWYWx1ZUtleXdvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6Y3NzVmFsdWVLZXl3b3JkSUQpOgorICAgICAgICAoV2ViQ29yZTo6dW5y
ZXNvbHZlZENTU1Byb3BlcnR5SUQpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQ
YXJzZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6aW5R
dWlya3NNb2RlKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVy
cy5jcHA6IEFkZGVkLgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
OjppZGVudE1hdGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzOjpjb25zdW1lSWRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzOjppc0NTU1dpZGVLZXl3b3JkKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Rva2Vu
aXplci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpTY29wZTo6
U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpTY29wZTo6dG9rZW5SYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OlNjb3BlOjp0b2tlbkNvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OmlzTmV3TGluZSk6CisgICAgICAgIChXZWJDb3JlOjp0d29DaGFy
c0FyZVZhbGlkRXNjYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Q1NTVG9r
ZW5pemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6cmVjb25zdW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb2tlbml6ZXI6OndoaXRlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5p
emVyOjpibG9ja1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6YmxvY2tF
bmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpsZWZ0UGFyZW50aGVzaXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpyaWdodFBhcmVudGhlc2lzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6bGVmdEJyYWNrZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9rZW5pemVyOjpyaWdodEJyYWNrZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9r
ZW5pemVyOjpsZWZ0QnJhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpyaWdo
dEJyYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6cGx1c09yRnVsbFN0b3Ap
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjphc3Rlcmlzayk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb2tlbml6ZXI6Omxlc3NUaGFuKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rv
a2VuaXplcjo6Y29tbWEpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpoeXBoZW5N
aW51cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OnNvbGlkdXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb2xvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXI6OnNlbWlDb2xvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6Omhh
c2gpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjaXJjdW1mbGV4QWNjZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6ZG9sbGFyU2lnbik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb2tlbml6ZXI6OnZlcnRpY2FsTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NUb2tlbml6ZXI6OnRpbGRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29t
bWVyY2lhbEF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6cmV2ZXJzZVNvbGlk
dXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjphc2NpaURpZ2l0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6bGV0dGVyVSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NUb2tlbml6ZXI6Om5hbWVTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6
OnN0cmluZ1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6ZW5kT2ZGaWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6bmV4dFRva2VuKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZU51bWJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVOdW1lcmljVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVG9rZW5pemVyOjpjb25zdW1lSWRlbnRMaWtlVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVG9rZW5pemVyOjpjb25zdW1lU3RyaW5nVG9rZW5VbnRpbCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVVbmljb2RlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
aXNOb25QcmludGFibGVDb2RlUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVy
Ojpjb25zdW1lVXJsVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb25z
dW1lQmFkVXJsUmVtbmFudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb25z
dW1lU2luZ2xlV2hpdGVzcGFjZUlmTmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6
ZXI6OmNvbnN1bWVVbnRpbENvbW1lbnRFbmRGb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXI6OmNvbnN1bWVJZk5leHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVy
Ojpjb25zdW1lTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVF
c2NhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpuZXh0VHdvQ2hhcnNBcmVW
YWxpZEVzY2FwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6Om5leHRDaGFyc0Fy
ZU51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6Om5leHRDaGFyc0FyZUlk
ZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpyZWdpc3RlclN0cmlu
Zyk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OlNjb3BlOjpzdG9yZVN0cmluZyk6CisgICAgICAgICog
Y3NzL3BhcnNlci9DU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVG9rZW5pemVySW5wdXRTdHJlYW06OkNTU1Rva2VuaXplcklucHV0U3RyZWFt
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcklucHV0U3RyZWFtOjphZHZhbmNlVW50
aWxOb25XaGl0ZXNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcklucHV0U3Ry
ZWFtOjpnZXREb3VibGUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRT
dHJlYW0uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXJJbnB1dFN0cmVh
bTo6bmV4dElucHV0Q2hhcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXJJbnB1dFN0
cmVhbTo6cGVla1dpdGhvdXRSZXBsYWNlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tl
bml6ZXJJbnB1dFN0cmVhbTo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6
ZXJJbnB1dFN0cmVhbTo6cHVzaEJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVy
SW5wdXRTdHJlYW06OnNraXBXaGlsZVByZWRpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXJJbnB1dFN0cmVhbTo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2Vu
aXplcklucHV0U3RyZWFtOjpvZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVy
SW5wdXRTdHJlYW06OnJhbmdlQXQpOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5oOgorCiAy
MDE2LTA4LTI0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIHRo
ZSBhYmlsaXR5IHRvIG92ZXJyaWRlIHRoZSBpbXBsZW1lbnRhdGlvbiBuYW1lIG9mIElETCBlbnVt
cyBhbmQgZGljdGlvbmFyaWVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjA0
OTc4KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEzNDEsOSArMTM0MSw5IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3MvQ1NTS2V5ZnJh
bWVSdWxlLmNwcAogICAgIGNzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcAogICAgIGNzcy9DU1NMaW5l
Qm94Q29udGFpblZhbHVlLmNwcAorICAgIGNzcy9DU1NNYXJrdXAuY3BwCiAgICAgY3NzL0NTU01l
ZGlhUnVsZS5jcHAKICAgICBjc3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmNwcAotICAgIGNzcy9DU1NP
TVV0aWxzLmNwcAogICAgIGNzcy9DU1NQYWdlUnVsZS5jcHAKICAgICBjc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuY3BwCiAgICAgY3NzL0NTU1Byb3BlcnR5LmNwcApAQCAtMTQxMCw3ICsxNDEwLDE1IEBA
IHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3MvV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmNwcAog
CiAgICAgY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCisgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJG
YXN0UGF0aHMuY3BwCisgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3Bw
CisgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAKKyAgICBjc3MvcGFyc2VyL0NTU1Bh
cnNlclRva2VuUmFuZ2UuY3BwCiAgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJWYWx1ZXMuY3BwCisg
ICAgY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKyAgICBjc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VySGVscGVycy5jcHAKKyAgICBjc3MvcGFyc2VyL0NTU1Rva2VuaXplci5jcHAK
KyAgICBjc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcAogICAgIGNzcy9wYXJz
ZXIvU1ZHQ1NTUGFyc2VyLmNwcAogCiAgICAgY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyMDQ5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMzMzksNiArMzMzOSwyNiBAQAog
CQk5NDZEMzczMDFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzJCMUQ2Q0IyOEIw
MDc3MDg0RiAvKiBDU1NQYXJzZXJWYWx1ZXMuY3BwICovOyB9OwogCQk5NDZEMzczMTFENkNCMjk0
MDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzcyQzFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2Vy
VmFsdWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOTQ2RDM3MzMxRDZDQzQyQjAwNzcwODRGIC8qIFNWR0NTU1BhcnNlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzczMjFENkNDMzcyMDA3
NzA4NEYgLyogU1ZHQ1NTUGFyc2VyLmNwcCAqLzsgfTsKKwkJOTQ2RDM3MzkxRDZDREZDMDAwNzcw
ODRGIC8qIENTU1Rva2VuaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NDZEMzczNDFENkNERjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmNw
cCAqLzsgfTsKKwkJOTQ2RDM3M0ExRDZDREZDMDAwNzcwODRGIC8qIENTU1Rva2VuaXplci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3MzcxRDZD
REY5ODAwNzcwODRGIC8qIENTU1Rva2VuaXplci5oICovOyB9OworCQk5NDZEMzczQjFENkNERkMw
MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3MzUxRDZDREY5ODAwNzcwODRGIC8q
IENTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcCAqLzsgfTsKKwkJOTQ2RDM3M0MxRDZDREZDMDAw
NzcwODRGIC8qIENTU1Rva2VuaXplcklucHV0U3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzczODFENkNERjk4MDA3NzA4NEYgLyogQ1NT
VG9rZW5pemVySW5wdXRTdHJlYW0uaCAqLzsgfTsKKwkJOTQ2RDM3M0YxRDZDRTNDMjAwNzcwODRG
IC8qIENTU1BhcnNlclRva2VuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk0NkQzNzNFMUQ2Q0UzMUEwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlbi5j
cHAgKi87IH07CisJCTk0NkQzNzQwMUQ2Q0UzQzIwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3M0Qx
RDZDRTMxQTAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuLmggKi87IH07CisJCTk0NkQzNzQ0MUQ2
Q0Y3QjIwMDc3MDg0RiAvKiBDU1NQYXJzZXJJZGlvbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzQzMUQ2Q0Y3ODgwMDc3MDg0RiAvKiBDU1NQ
YXJzZXJJZGlvbXMuaCAqLzsgfTsKKwkJOTQ2RDM3NDUxRDZEMDFENDAwNzcwODRGIC8qIENTU1By
b3BlcnR5UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk0NkQzNzQxMUQ2Q0Y2MzIwMDc3MDg0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlci5jcHAg
Ki87IH07CisJCTk0NkQzNzQ2MUQ2RDAxRDQwMDc3MDg0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3NDIx
RDZDRjYzMjAwNzcwODRGIC8qIENTU1Byb3BlcnR5UGFyc2VyLmggKi87IH07CisJCTk0NkQzNzQ5
MUQ2RDA2MjgwMDc3MDg0RiAvKiBDU1NNYXJrdXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3NDcxRDZEMDYwQzAwNzcwODRGIC8qIENTU01h
cmt1cC5jcHAgKi87IH07CisJCTk0NkQzNzRBMUQ2RDA2MjgwMDc3MDg0RiAvKiBDU1NNYXJrdXAu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzQ4
MUQ2RDA2MEMwMDc3MDg0RiAvKiBDU1NNYXJrdXAuaCAqLzsgfTsKKwkJOTQ2RDM3NEQxRDZEMDhB
NjAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3NEIxRDZEMDdGNTAwNzcwODRGIC8qIENT
U1BhcnNlclRva2VuUmFuZ2UuY3BwICovOyB9OworCQk5NDZEMzc0RTFENkQwOEFBMDA3NzA4NEYg
LyogQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTQ2RDM3NEMxRDZEMDdGNTAwNzcwODRGIC8qIENTU1BhcnNlclRva2Vu
UmFuZ2UuaCAqLzsgfTsKKwkJOTQ5Qzc3MDAxRDZFMUQ5ODAwQzBERTRGIC8qIENTU1BhcnNlckZh
c3RQYXRocy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NDlDNzZGRTFENkUxRDhDMDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcCAqLzsg
fTsKKwkJOTQ5Qzc3MDExRDZFMUQ5ODAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRocy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5Qzc2RkYxRDZF
MUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRocy5oICovOyB9OworCQk5NDlDNzcwNDFE
NkUzOUVBMDBDMERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0OUM3NzAyMUQ2RTM5MzUwMEMw
REU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwICovOyB9OworCQk5NDlDNzcwNTFE
NkUzOUVBMDBDMERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDlDNzcwMzFENkUzOTM1MDBDMERF
NEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmggKi87IH07CisJCTk0OUM3NzA4MUQ2RTQ5
ODcwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5Qzc3MDYxRDZFNDhFRDAwQzBERTRG
IC8qIENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5jcHAgKi87IH07CisJCTk0OUM3NzA5MUQ2RTQ5
ODcwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0OUM3NzA3MUQ2RTQ4RUQwMEMwREU0RiAv
KiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaCAqLzsgfTsKKwkJOTQ5Qzc3MEIxRDZFNDlFRDAw
QzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NDlDNzcwQTFENkU0OUMzMDBDMERFNEYgLyogQ1NTUGFyc2Vy
T2JzZXJ2ZXIuaCAqLzsgfTsKIAkJOTZBQkE0MjMxNEJDQjgwRTAwRDU2MjA0IC8qIEdyYXBoaWNz
Q29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk2QUJBNDIyMTRCQ0I4MEUwMEQ1NjIwNCAvKiBHcmFwaGljc0NvbnRl
eHQzRE9wZW5HTENvbW1vbi5jcHAgKi87IH07CiAJCTk3MDNFMUJGMTVEQzRFMzcwMDFGMjRDOCAv
KiBKU1ZvaWRDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5N0U5RUM4QjE1REM0OTJGMDA0RjJFNzEgLyogSlNWb2lkQ2FsbGJhY2suY3Bw
ICovOyB9OwogCQk5NzA1OTk3NzEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzMx
MDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmNwcCAqLzsgfTsKQEAgLTYzMTgsOCAr
NjMzOCw2IEBACiAJCUY1RTBDNjVDMTY0M0M0MkMwMEQ2Q0I2OSAvKiBCYXNlQ2hvb3Nlck9ubHlE
YXRlQW5kVGltZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjVFMEM2NUExNjQzQzQyQzAwRDZDQjY5IC8qIEJhc2VDaG9vc2VyT25seURh
dGVBbmRUaW1lSW5wdXRUeXBlLmggKi87IH07CiAJCUY5MTZDNDhEMERCNTEwRjgwMDc2Q0Q4MyAv
KiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOTE2QzQ4QjBEQjUxMEY4MDA3NkNEODMgLyogSlNY
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3BwICovOyB9OwogCQlGOTE2QzQ4RTBEQjUxMEY4
MDA3NkNEODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5MTZDNDhDMERCNTEwRjgwMDc2Q0Q4
MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICovOyB9OwotCQlGOThGRkY0NDEx
QTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOThGRkY0MjExQTI2NzYyMDBGNTQ4RTggLyogQ1NTT01V
dGlscy5jcHAgKi87IH07Ci0JCUY5OEZGRjQ1MTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOThGRkY0
MzExQTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5oICovOyB9OwogCQlGOUYwRUQ3QTBEQjUw
Q0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOUYwRUQ3NzBEQjUwQ0EyMDBEMTZE
QjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi87IH07CiAJCUZBNjU0QTZCMTEw
OEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUb2tlbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE2NTRBNjkxMTA4QUJFRDAwMjYxNUUwIC8q
IE1hdGhNTFRva2VuRWxlbWVudC5jcHAgKi87IH07CiAJCUZBNjU0QTZCMTEwOEFCRUQwMDI2MTZG
MSAvKiBNYXRoTUxPcGVyYXRvckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkE2NTRBNjkxMTA4QUJFRDAwMjYxNkYxIC8qIE1hdGhNTE9w
ZXJhdG9yRWxlbWVudC5jcHAgKi87IH07CkBAIC0xMDQ1Myw2ICsxMDQ3MSwyNiBAQAogCQk5NDZE
MzcyQjFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1BhcnNlclZhbHVlcy5jcHA7IHBhdGggPSBwYXJz
ZXIvQ1NTUGFyc2VyVmFsdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ2
RDM3MkMxRDZDQjI4QjAwNzcwODRGIC8qIENTU1BhcnNlclZhbHVlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQYXJzZXJWYWx1ZXMuaDsgcGF0aCA9IHBhcnNlci9DU1NQ
YXJzZXJWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ2RDM3MzIxRDZD
QzM3MjAwNzcwODRGIC8qIFNWR0NTU1BhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBTVkdDU1NQYXJzZXIuY3BwOyBwYXRoID0gcGFyc2VyL1NWR0NTU1BhcnNl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NkQzNzM0MUQ2Q0RGOTgwMDc3
MDg0RiAvKiBDU1NUb2tlbml6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQ1NTVG9rZW5pemVyLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NUb2tlbml6ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzczNTFENkNERjk4MDA3NzA4NEYgLyog
Q1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwOyBwYXRoID0gcGFyc2VyL0NTU1Rv
a2VuaXplcklucHV0U3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ2
RDM3MzcxRDZDREY5ODAwNzcwODRGIC8qIENTU1Rva2VuaXplci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBDU1NUb2tlbml6ZXIuaDsgcGF0aCA9IHBhcnNlci9DU1NUb2tlbml6
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ2RDM3MzgxRDZDREY5ODAwNzcw
ODRGIC8qIENTU1Rva2VuaXplcklucHV0U3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IENTU1Rva2VuaXplcklucHV0U3RyZWFtLmg7IHBhdGggPSBwYXJzZXIvQ1NTVG9r
ZW5pemVySW5wdXRTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ2RDM3
M0QxRDZDRTMxQTAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IENTU1BhcnNlclRva2VuLmg7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2Vy
VG9rZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ2RDM3M0UxRDZDRTMxQTAw
NzcwODRGIC8qIENTU1BhcnNlclRva2VuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IENTU1BhcnNlclRva2VuLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJUb2tl
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NkQzNzQxMUQ2Q0Y2MzIwMDc3
MDg0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBDU1NQcm9wZXJ0eVBhcnNlci5jcHA7IHBhdGggPSBwYXJzZXIvQ1NTUHJvcGVy
dHlQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzc0MjFENkNG
NjMyMDA3NzA4NEYgLyogQ1NTUHJvcGVydHlQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQ1NTUHJvcGVydHlQYXJzZXIuaDsgcGF0aCA9IHBhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzc0MzFENkNGNzg4
MDA3NzA4NEYgLyogQ1NTUGFyc2VySWRpb21zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IENTU1BhcnNlcklkaW9tcy5oOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzc0NzFENkQwNjBDMDA3NzA4NEYg
LyogQ1NTTWFya3VwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENT
U01hcmt1cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NkQzNzQ4MUQ2RDA2
MEMwMDc3MDg0RiAvKiBDU1NNYXJrdXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ1NTTWFya3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NkQzNzRCMUQ2
RDA3RjUwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1BhcnNlclRva2VuUmFuZ2UuY3BwOyBwYXRoID0gcGFy
c2VyL0NTU1BhcnNlclRva2VuUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5NDZEMzc0QzFENkQwN0Y1MDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW5SYW5nZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQYXJzZXJUb2tlblJhbmdlLmg7IHBhdGgg
PSBwYXJzZXIvQ1NTUGFyc2VyVG9rZW5SYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5NDlDNzZGRTFENkUxRDhDMDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1BhcnNlckZhc3RQYXRocy5j
cHA7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTQ5Qzc2RkYxRDZFMUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQ
YXRocy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQYXJzZXJGYXN0UGF0
aHMuaDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTQ5Qzc3MDIxRDZFMzkzNTAwQzBERTRGIC8qIENTU1Byb3BlcnR5UGFy
c2VySGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDU1NQ
cm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwOyBwYXRoID0gcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2Vy
SGVscGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0OUM3NzAzMUQ2RTM5
MzUwMEMwREU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmg7IHBhdGggPSBwYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTk0OUM3NzA2MUQ2RTQ4RUQwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUGFyc2VyT2JzZXJ2
ZXJXcmFwcGVyLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDlDNzcwNzFENkU0OEVEMDBDMERFNEYg
LyogQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5oOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNl
ck9ic2VydmVyV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDlDNzcw
QTFENkU0OUMzMDBDMERFNEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQ1NTUGFyc2VyT2JzZXJ2ZXIuaDsgcGF0aCA9IHBhcnNlci9DU1NQ
YXJzZXJPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NTBDNEMwMkJF
RDg5MzZGODE4RTJGOTkgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHR3JhcGhpY3NFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk2QUJBNDIyMTRCQ0I4MEUwMEQ1NjIwNCAvKiBHcmFwaGljc0NvbnRl
eHQzRE9wZW5HTENvbW1vbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk3MDU5OTczMTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2xpY3lDYWxsYmFjay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzg5NCw4ICsxMzkzMiw2IEBACiAJCUY4
MjE2Mjk5MDI5RjRGQjUwMTAwMDEzMSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1l
d29yazsgcGF0aCA9IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJRjkxNkM0OEIwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0
cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUY5MTZDNDhDMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1
ZXN0UHJvZ3Jlc3NFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNY
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRjk4RkZGNDIxMUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTT01VdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUY5OEZGRjQzMTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU09NVXRpbHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjlGMEVENzcwREI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBS
ZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY5RjBFRDc4MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQTY1NEE2MzExMDhBQkI3MDAy
NjE1RTAgLyogbWF0aG1sLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gbWF0aG1sLmNz
czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MDczLDEyICsxODEwOSwzMCBAQAog
CQk5NDZEMzcyNzFENkNCMjI1MDA3NzA4NEYgLyogcGFyc2VyICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk5NDZEMzczMjFENkNDMzcyMDA3NzA4NEYgLyog
U1ZHQ1NTUGFyc2VyLmNwcCAqLywKIAkJCQk5NDZEMzcyODFENkNCMjhCMDA3NzA4NEYgLyogQ1NT
UGFyc2VyLmNwcCAqLywKIAkJCQk5NDZEMzcyOTFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2Vy
LmggKi8sCisJCQkJOTQ5Qzc2RkUxRDZFMUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRo
cy5jcHAgKi8sCisJCQkJOTQ5Qzc2RkYxRDZFMUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQ
YXRocy5oICovLAorCQkJCTk0NkQzNzQzMUQ2Q0Y3ODgwMDc3MDg0RiAvKiBDU1NQYXJzZXJJZGlv
bXMuaCAqLywKIAkJCQk5NDZEMzcyQTFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2VyTW9kZS5o
ICovLAorCQkJCTk0OUM3NzBBMUQ2RTQ5QzMwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlci5o
ICovLAorCQkJCTk0OUM3NzA2MUQ2RTQ4RUQwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldy
YXBwZXIuY3BwICovLAorCQkJCTk0OUM3NzA3MUQ2RTQ4RUQwMEMwREU0RiAvKiBDU1NQYXJzZXJP
YnNlcnZlcldyYXBwZXIuaCAqLywKKwkJCQk5NDZEMzczRTFENkNFMzFBMDA3NzA4NEYgLyogQ1NT
UGFyc2VyVG9rZW4uY3BwICovLAorCQkJCTk0NkQzNzNEMUQ2Q0UzMUEwMDc3MDg0RiAvKiBDU1NQ
YXJzZXJUb2tlbi5oICovLAorCQkJCTk0NkQzNzRCMUQ2RDA3RjUwMDc3MDg0RiAvKiBDU1NQYXJz
ZXJUb2tlblJhbmdlLmNwcCAqLywKKwkJCQk5NDZEMzc0QzFENkQwN0Y1MDA3NzA4NEYgLyogQ1NT
UGFyc2VyVG9rZW5SYW5nZS5oICovLAogCQkJCTk0NkQzNzJCMUQ2Q0IyOEIwMDc3MDg0RiAvKiBD
U1NQYXJzZXJWYWx1ZXMuY3BwICovLAogCQkJCTk0NkQzNzJDMUQ2Q0IyOEIwMDc3MDg0RiAvKiBD
U1NQYXJzZXJWYWx1ZXMuaCAqLywKKwkJCQk5NDZEMzc0MTFENkNGNjMyMDA3NzA4NEYgLyogQ1NT
UHJvcGVydHlQYXJzZXIuY3BwICovLAorCQkJCTk0NkQzNzQyMUQ2Q0Y2MzIwMDc3MDg0RiAvKiBD
U1NQcm9wZXJ0eVBhcnNlci5oICovLAorCQkJCTk0OUM3NzAyMUQ2RTM5MzUwMEMwREU0RiAvKiBD
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwICovLAorCQkJCTk0OUM3NzAzMUQ2RTM5MzUwMEMw
REU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaCAqLywKKwkJCQk5NDZEMzczNDFENkNE
Rjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmNwcCAqLywKKwkJCQk5NDZEMzczNzFENkNERjk4
MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmggKi8sCisJCQkJOTQ2RDM3MzUxRDZDREY5ODAwNzcw
ODRGIC8qIENTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcCAqLywKKwkJCQk5NDZEMzczODFENkNE
Rjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaCAqLywKKwkJCQk5NDZEMzcz
MjFENkNDMzcyMDA3NzA4NEYgLyogU1ZHQ1NTUGFyc2VyLmNwcCAqLywKIAkJCSk7CiAJCQluYW1l
ID0gcGFyc2VyOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIwOTQ2LDggKzIxMDAw
LDggQEAKIAkJCQlCRTZERjcxMDE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrTGlzdEN1
c3RvbS5jcHAgKi8sCiAJCQkJRkQ4QUE2M0IxNjk1MTQ4RTAwRDJFQTY4IC8qIEpTQmlxdWFkRmls
dGVyTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJODkzMURFNUExNEM0NEM0NDAwMERDOUQyIC8qIEpT
QmxvYkN1c3RvbS5jcHAgKi8sCi0JCQkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLywKIAkJCQk0NjU5RDI3MDFENkI5MDlG
MDA5NkZEODYgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0LmggKi8sCisJCQkJNDlFRUQxNEIx
MDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAq
LywKIAkJCQk3QzMzRjM1ODFCNEEwNDQ4MDA1MDJDQUYgLyogSlNDaGFyYWN0ZXJEYXRhQ3VzdG9t
LmNwcCAqLywKIAkJCQk0NkE1OEFDNDFENDZCM0ZBMDA0MzIwMzYgLyogSlNDbGllbnRSZWN0Q3Vz
dG9tLmNwcCAqLywKIAkJCQlBNTg0RkUzNzE4NjREQUMxMDA4NDNCMTAgLyogSlNDb21tYW5kTGlu
ZUFQSUhvc3RDdXN0b20uY3BwICovLApAQCAtMjIyNDAsMTMgKzIyMjk0LDEzIEBACiAJCQkJMzE2
RkUwOTIwRTZDQ0Q3RjAwQkY2MDg4IC8qIENTU0tleWZyYW1lc1J1bGUuaWRsICovLAogCQkJCUJD
NzcyRTE1MTMzMTYyQzIwMDFFQzlDRSAvKiBDU1NMaW5lQm94Q29udGFpblZhbHVlLmNwcCAqLywK
IAkJCQlCQzc3MkUxMjEzMzE2MjBDMDAxRUM5Q0UgLyogQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5o
ICovLAorCQkJCTk0NkQzNzQ3MUQ2RDA2MEMwMDc3MDg0RiAvKiBDU1NNYXJrdXAuY3BwICovLAor
CQkJCTk0NkQzNzQ4MUQ2RDA2MEMwMDc3MDg0RiAvKiBDU1NNYXJrdXAuaCAqLywKIAkJCQlBODBF
NkNEMjBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTTWVkaWFSdWxlLmNwcCAqLywKIAkJCQlBODBFNkNE
OTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTTWVkaWFSdWxlLmggKi8sCiAJCQkJODVDNTZDQTIwQUE4
OUMxMDAwRDk1NzU1IC8qIENTU01lZGlhUnVsZS5pZGwgKi8sCiAJCQkJMzE0QkUzQTIxQjMwRjZE
MTAwMTQxOTgyIC8qIENTU05hbWVkSW1hZ2VWYWx1ZS5jcHAgKi8sCiAJCQkJMzE0QkUzQTAxQjMw
RjZCNzAwMTQxOTgyIC8qIENTU05hbWVkSW1hZ2VWYWx1ZS5oICovLAotCQkJCUY5OEZGRjQyMTFB
MjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmNwcCAqLywKLQkJCQlGOThGRkY0MzExQTI2NzYy
MDBGNTQ4RTggLyogQ1NTT01VdGlscy5oICovLAogCQkJCUE4MEU2Q0NCMEExOTg5Q0EwMDdGQjhD
NSAvKiBDU1NQYWdlUnVsZS5jcHAgKi8sCiAJCQkJQTgwRTZDRDYwQTE5ODlDQTAwN0ZCOEM1IC8q
IENTU1BhZ2VSdWxlLmggKi8sCiAJCQkJODVDNTZDQTYwQUE4OUQ1RjAwRDk1NzU1IC8qIENTU1Bh
Z2VSdWxlLmlkbCAqLywKQEAgLTIzMTUzLDggKzIzMjA3LDYgQEAKIAkJCQlGQUJFNzJFRTEwNTlD
MUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oICovLAogCQkJCTBCQ0Y4M0VGMTA1OUMxRUIw
MEQ5OTlERCAvKiBNYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwICovLAogCQkJCTBCQ0Y4M0YwMTA1
OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxGcmFjdGlvbkVsZW1lbnQuaCAqLywKLQkJCQlGQUJFNzJF
RjEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAgKi8sCi0J
CQkJRkFCRTcyRjAxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQu
aCAqLywKIAkJCQlGQUJFNzJGMTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MTWF0aEVsZW1lbnQu
Y3BwICovLAogCQkJCUZBQkU3MkYyMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxNYXRoRWxlbWVu
dC5oICovLAogCQkJCUMzRTYxQzY1M0E2NDgwN0E4M0U3NkZCOCAvKiBNYXRoTUxNZW5jbG9zZUVs
ZW1lbnQuY3BwICovLApAQCAtMjMxNjUsNiArMjMyMTcsMTAgQEAKIAkJCQlGQTY1NEE2QTExMDhB
QkVEMDAyNjE2RjEgLyogTWF0aE1MT3BlcmF0b3JFbGVtZW50LmggKi8sCiAJCQkJQjU5Q0E1OUFG
MTcwRDhGQUE1QjhDQUJFIC8qIE1hdGhNTFBhZGRlZEVsZW1lbnQuY3BwICovLAogCQkJCUI1OUNB
ODQ5RDQxRTZGNjVEODExOThCQyAvKiBNYXRoTUxQYWRkZWRFbGVtZW50LmggKi8sCisJCQkJRkFC
RTcyRUYxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwICov
LAorCQkJCUZBQkU3MkYwMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxQcmVzZW50YXRpb25FbGVt
ZW50LmggKi8sCisJCQkJRkE3NjVBNjkxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFJvd0VsZW1l
bnQuY3BwICovLAorCQkJCUZBNzY1QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxSb3dFbGVt
ZW50LmggKi8sCiAJCQkJQjU5Q0E1OUFGMTcwRDhGQUE1QjhDOUFEIC8qIE1hdGhNTFNjcmlwdHNF
bGVtZW50LmNwcCAqLywKIAkJCQlCNTlDQTg0OUQ0MUU2RjY1RDgxMTk3QUIgLyogTWF0aE1MU2Ny
aXB0c0VsZW1lbnQuaCAqLywKIAkJCQlGNzVBMDU5QUYxNzBEOEZBQTVCOENBQkUgLyogTWF0aE1M
U2VsZWN0RWxlbWVudC5jcHAgKi8sCkBAIC0yMzE3Myw4ICsyMzIyOSw2IEBACiAJCQkJNEZBNjVB
NkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxlbWVudC5oICovLAogCQkJCUZBNjU0
QTY5MTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUb2tlbkVsZW1lbnQuY3BwICovLAogCQkJCUZB
NjU0QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUb2tlbkVsZW1lbnQuaCAqLywKLQkJCQlG
QTc2NUE2OTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MUm93RWxlbWVudC5jcHAgKi8sCi0JCQkJ
RkE3NjVBNkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFJvd0VsZW1lbnQuaCAqLywKIAkJCQlG
QTY1NEE2OTExMDhBQkVEMDAyNjI2RjEgLyogTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAgKi8s
CiAJCQkJRkE2NTRBNkExMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQu
aCAqLywKIAkJCQlGQUJFNzJGMzEwNTlDMUVCMDBEOTk5REQgLyogbWF0aHRhZ3MuaW4gKi8sCkBA
IC0yMzUzNiw4ICsyMzU5MCw2IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQk1MTA1OEFE
RTFENjc5MkMxMDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJNTEwNThBREMxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTcxNEVBRDFDRjY1OTUxMDA0NzIzQzQgLyogR0NPYnNlcnZhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDE3REE2REExMzczNEU2RTAwN0M1N0ZCIC8qIEludGVybmFscy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCRjdFRTAxNEM5MTc1QTAwMTQ0ODlEIC8qIEludGVybmFs
U2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLApAQCAtMjM1NTMsNiArMjM2MDUsOCBAQAogCQkJCUNE
QzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBNb2NrQ0RNLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
MUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTA1OEFEQzFENjc5MkMxMDA5QTUzOEMgLyog
TW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMDU4QURFMUQ2NzkyQzEwMDlBNTM4
QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDZGM0U5MTFD
MUVDQjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQky
RDk3RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBQTVGM0I4RDE2Q0MzM0QxMDA0NTVFQjAgLyogUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplck1vY2suaCBpbiBIZWFkZXJzICovLApAQCAtMjM2ODQsNyArMjM3MzgsNiBAQAog
CQkJCUJFRjI5RUVCMTcxNUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0RFM0E4NTQxN0Y1RkNFNjAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2
YXRlQVZGLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREUzQTg1ODE3RjYwMjA0MDBDNUJFMjAgLyog
QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTA1OEFFMjFE
NjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0Q1NEE3NjMxODBGOUY3MDAwQjA3NkM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0Q2QTRGODFCRjIzMDdEMDAxNzQxNDYg
LyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQz
MTYwOEIxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywK
QEAgLTIzOTY1LDcgKzI0MDE4LDYgQEAKIAkJCQkzMUJDNzQyRTFBQUZGNDVDMDA2QjQzNDAgLyog
Q1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDQUU5
RjkxMDE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkJENkFGODgxNUVGMjVDOTAwOEI3MTEwIC8qIENTU0Jhc2ljU2hhcGVzLmggaW4g
SGVhZGVycyAqLywKLQkJCQk1MTA1OEFFMDFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUxNkE4NEZBMTRDODVDQ0MwMDI5NzdERiAvKiBDU1NCb3Jk
ZXJJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyNzRCMkYxNDBFQkVCMjAwRUFERkE2IC8q
IENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlBRTJEOEYx
MzRFRTUwQzAwNzI5MjBBIC8qIENTU0NhbGN1bGF0aW9uVmFsdWUuaCBpbiBIZWFkZXJzICovLApA
QCAtMjQwMDUsMTYgKzI0MDU3LDI3IEBACiAJCQkJMzEyODhFNzMwRTMwMDVENjAwMzYxOUFFIC8q
IENTU0tleWZyYW1lUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEyODhFNzUwRTMwMDVENjAw
MzYxOUFFIC8qIENTU0tleWZyYW1lc1J1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzcyRTEz
MTMzMTYyMEMwMDFFQzlDRSAvKiBDU1NMaW5lQm94Q29udGFpblZhbHVlLmggaW4gSGVhZGVycyAq
LywKKwkJCQk5NDZEMzc0QTFENkQwNjI4MDA3NzA4NEYgLyogQ1NTTWFya3VwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBODBFNkQwMzBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTTWVkaWFSdWxlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkzMTRCRTNBMTFCMzBGNkI3MDAxNDE5ODIgLyogQ1NTTmFtZWRJbWFn
ZVZhbHVlLmggaW4gSGVhZGVycyAqLywKLQkJCQlGOThGRkY0NTExQTI2NzYyMDBGNTQ4RTggLyog
Q1NTT01VdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMDAwQTE5ODlDQTAwN0ZCOEM1
IC8qIENTU1BhZ2VSdWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZEMzcyRTFENkNCMjk0MDA3
NzA4NEYgLyogQ1NTUGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDlDNzcwMTFENkUxRDk4
MDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZE
Mzc0NDFENkNGN0IyMDA3NzA4NEYgLyogQ1NTUGFyc2VySWRpb21zLmggaW4gSGVhZGVycyAqLywK
KwkJCQk5NDZEMzcyRjFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyTW9kZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJOTQ5Qzc3MEIxRDZFNDlFRDAwQzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDlDNzcwOTFENkU0OTg3MDBDMERFNEYgLyogQ1NTUGFy
c2VyT2JzZXJ2ZXJXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZEMzc0MDFENkNFM0My
MDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW4uaCBpbiBIZWFkZXJzICovLAorCQkJCTk0NkQzNzRF
MUQ2RDA4QUEwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJhbmdlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk5NDZEMzczMTFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NzdCMzg2MzEyMjg4M0U5MDBCODFGRjggLyogQ1NTUHJlbG9hZFNjYW5u
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0U2MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQ
cmltaXRpdmVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFRDhBQzMwQ0M0OUJFMDAwQkZD
NTU3IC8qIENTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
MEU2Q0ZGMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzhEMDJCQzYxNTRBMThERjAwQjYyRDA1IC8qIENTU1Byb3BlcnR5QW5pbWF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk2NTY1ODBGNDA5RDEyQjIwMDAwRTYxRDcgLyogQ1NTUHJvcGVydHlO
YW1lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTQ2RDM3NDYxRDZEMDFENDAwNzcwODRGIC8qIENT
U1Byb3BlcnR5UGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDlDNzcwNTFENkUzOUVBMDBD
MERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
MkUzRDhERjEyMkVBMEQxMDAzQUU1QkMgLyogQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5MzYyNjQwQjBERTExMzdEMDA5RDVBMDAgLyogQ1NTUmVmbGVjdGlvbkRp
cmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1QTEyRTAwREMwNDE0ODAwQzlBRkFEIC8q
IENTU1JlZmxlY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDAzMCw2ICsyNDA5Myw4IEBA
CiAJCQkJQThFQTgwMDcwQTE5NTE2RTAwQThFRjVGIC8qIENTU1N0eWxlU2hlZXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZDNTREMDU3MTZBNzY3MzEwMDU3NUU0RCAvKiBDU1NTdXBwb3J0c1J1bGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDODBDOTg4MENEMjk0RUUwMEEwQjdCMyAvKiBDU1NUaW1p
bmdGdW5jdGlvblZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZEMzczQTFENkNERkMwMDA3
NzA4NEYgLyogQ1NTVG9rZW5pemVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZEMzczQzFENkNE
RkMwMDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaCBpbiBIZWFkZXJzICovLAog
CQkJCTlBQjFGMzgwMThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODgyREEyMzE1OTM4NDhEMDAwMTE1RUQgLyogQ1NTVG9T
dHlsZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzcxRjUzRTkwRDI3MDRGOTAwRUNFMEQ1IC8q
IENTU1VuaWNvZGVSYW5nZVZhbHVlLmggaW4gSGVhZGVycyAqLywKQEAgLTI0NzQ5LDYgKzI0ODE0
LDcgQEAKIAkJCQk2NURGMzIzQzA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNQYXR0ZXJuLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzIzQzA5RDFERTY1MDAxQkUzMjUgLyogSlNDYW52YXNQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFRUQxNDMxMDUxOTY5NDAwMDk5RkFCIC8qIEpT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY1OUQyNzExRDZC
OTBBNTAwOTZGRDg2IC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDlFRUQxNDUxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Y5QjdBMTBCQTYwMzI2MDA4NTQwNjQgLyogSlND
REFUQVNlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUZEQTE1RUEyMTJCMDNFRTEwMDNBNTgz
QSAvKiBKU0NoYW5uZWxNZXJnZXJOb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTI0OTc5LDcgKzI1
MDQ1LDYgQEAKIAkJCQlGRDIzQTEyNjEzRjVGQTU5MDBGNjcwMDEgLyogSlNNZWRpYUVsZW1lbnRB
dWRpb1NvdXJjZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYxNDE5MENENjgyNjkwMEZB
REE3NSAvKiBKU01lZGlhRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDM0MzOUI3MEMwRDNE
OEQwMDVGNEQ3QSAvKiBKU01lZGlhTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDY1OUQyNzEx
RDZCOTBBNTAwOTZGRDg2IC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTNENDM3QTMxRDU3QjdFMjAwQUI4NUVBIC8qIEpTTWVkaWFMaXN0Q3VzdG9tLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlEM0E5NEE0NzEyMkRDNDBGMDBBMzdCQkMgLyogSlNNZWRpYVF1
ZXJ5TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M1MzQzRkQxN0I3NEI2MzAwNDIzMkYwIC8q
IEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTE4Niw3ICsy
NTI1MSw2IEBACiAJCQkJQjJGQTNEQjUwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREI3MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NW
R1BhdGhTZWcuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREI5MEFCNzVBNkYwMDBFNUFDNCAv
KiBKU1NWR1BhdGhTZWdBcmNBYnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTk0NkQzNzJFMUQ2Q0Iy
OTQwMDc3MDg0RiAvKiBDU1NQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREJCMEFC
NzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdBcmNSZWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyRkEzREJEMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdDbG9zZVBhdGguaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyRkEzREJGMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdD
dXJ2ZXRvQ3ViaWNBYnMuaCBpbiBIZWFkZXJzICovLApAQCAtMjUzNTksNyArMjU0MjMsNiBAQAog
CQkJCUU0RTM5QUZCMTMzMEVGQTgwMDNBQjI3NCAvKiBMZWdhY3lUaWxlTGF5ZXJQb29sLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTJERDhGNTBEOTFFNkFGMDAwRjg5RUUgLyogTGVnYWN5V2ViQXJj
aGl2ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFNjVCRUIwRUFDREYxNjAwN0U0NTMzIC8qIExl
bmd0aC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTQ2RDM3MkYxRDZDQjI5NDAwNzcwODRGIC8qIENT
U1BhcnNlck1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkY2NDkxMEVBRDE1QzIwMEMxRDZG
NyAvKiBMZW5ndGhCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUU1QkE3RDYzMTUxNDM3Q0EwMEZF
MUUzRiAvKiBMZW5ndGhGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODcxNjcwMUM4
NjlEODMwMDRGRjBERSAvKiBMZW5ndGhQb2ludC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTQwNiwx
NCArMjU0NjksMTQgQEAKIAkJCQlGQUJFNzJGNTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDRBMjhBQUMxMkRGQjhBQzAwQUU5MjNCIC8qIE1h
dGhNTEVsZW1lbnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQkNGODNGNzEwNTlDMUVC
MDBEOTk5REQgLyogTWF0aE1MRnJhY3Rpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlG
QUJFNzJGNzEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkFCRTcyRjkxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTE1hdGhF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NEEyOEFBRjEyREZCOEJGMDBBRTkyM0IgLyog
TWF0aE1MTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZBNjU0QTZDMTEwOEFCRUQwMDI2MTZG
MSAvKiBNYXRoTUxPcGVyYXRvckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUZBQkU3MkY3
MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGQTc2NUE2QzExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MUm93RWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNEZBNjVBNkMxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNw
YWNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5MTc2RTAxMkRBMjVFMTdCQUY4MEEy
IC8qIE1hdGhNTFN0eWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQTY1NEE2QzExMDhBQkVEMDAy
NjE1RTAgLyogTWF0aE1MVG9rZW5FbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlGQTc2NUE2
QzExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MUm93RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkE2NTRBNkMxMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTQzOTA0NkVBMTJEQTI1RTgxMkFGODBBQyAvKiBNYXRoT3BlcmF0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RDVEQzJDMEY0MjNBNzMwMDhGMjBGRCAvKiBNYXRy
aXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTUzNCw2ICsyNTU5
Nyw4IEBACiAJCQkJNTJGMTA4NjYxNjJCNkRBODAwOUFDODFFIC8qIE1peGVkQ29udGVudENoZWNr
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMTI1MjQ5MUExNkMzQkMwMDg2NDQ4MCAvKiBNb2Jp
bGVHZXN0YWx0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYyQjAxMTE4MjA1NDA2MDBGMkI0
MjQgLyogTW9ja0JveC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwNThBRTAxRDY3QzIyOTAwOUE1
MzhDIC8qIE1vY2tHYW1lcGFkLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTA1OEFFMjFENjdDMjI5
MDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUVB
M0Q2REYxQzg1OUQ3RjAwMzAwQkJCIC8qIE1vY2tNZWRpYUVuZHBvaW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlDREYyQjAxMzE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhUGxheWVyTWVkaWFT
b3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjJCMDE1MTgyMDU0MDYwMEYyQjQyNCAvKiBN
b2NrTWVkaWFTb3VyY2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTI2NTM5LDcgKzI2NjA0
LDYgQEAKIAkJCQkwODEzQTRFQTEyODQxMzI2MDA5OTI1MTEgLyogU1ZHU3RhdGljUHJvcGVydHlU
ZWFyT2ZmLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FBOTBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHU3RvcEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUFDMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdTdHJpbmdMaXN0LmggaW4gSGVhZGVycyAqLywKLQkJCQk5NDZEMzczMTFENkNC
Mjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIy
N0FCODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3R5bGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjIyN0FCQjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU1ZHRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjIyMjdBQkUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N3aXRjaEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtMjcyNzIsNyArMjczMzYsNiBAQAogCQkJCTQxN0RBNkQ5MTM3
MzRFNkUwMDdDNTdGQiAvKiBJbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE3OUYw
REExQjk3NzRGRTAwRUQwQTI3IC8qIEludGVybmFscy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE3
QkY3RURGMTRDOTE3NUEwMDE0NDg5RCAvKiBJbnRlcm5hbFNldHRpbmdzLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzRTI5RTVFMTY3QThBMTkwMDU4NkQzRCAvKiBJbnRl
cm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNzE0RUIwMUNG
NjY1Q0UwMDQ3MjNDNCAvKiBKU0dDT2JzZXJ2YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDE3REE3MUQxMzczNURGQTAwN0M1N0ZCIC8qIEpTSW50ZXJuYWxzLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMjcyODIsMTIgKzI3MzQ1LDEzIEBACiAJCQkJQ0Q1MzkzRDMxNzVFMDE4NjAwQzA3MTIz
IC8qIEpTTWVtb3J5SW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTlBRUEyMjFBQUE4MDhB
MDBCNTJCMjUgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUExRTVCMzFGMUFBRDFEQTQwMDZFQkVGQiAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTEwNThBREIxRDY3OTJDMTAwOUE1
MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJENDE1MERFMUMxRjg2
OEMwMDBBM0JBMiAvKiBKU01vY2tQYWdlT3ZlcmxheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
QkY1MTIxQzE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0RDMjZCNDAxNjBBOENDNjAwMjY3NTdCIC8qIE1vY2tDRE0uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTFCRjZCODIxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50Rmls
dGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExQjVCMjlFMUFBQTg0NkUwMDhCNjA0MiAvKiBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMDU4QURC
MUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
MTA1OEFERDFENjc5MkMxMDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyRDZGM0U5MDFDMUVDQjI3MDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTdGMDQ3MTlERDQxM0MwMDFFRTlDMyAvKiBNb2Nr
UGFnZU92ZXJsYXlDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUE1RjNCOEYxNkNDNEIz
OTAwNDU1RUIwIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMjc2NzMsMTUgKzI3NzM3LDIzIEBACiAJCQkJMzEyODhFNzIwRTMwMDVENjAwMzYx
OUFFIC8qIENTU0tleWZyYW1lUnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTI4OEU3NDBF
MzAwNUQ2MDAzNjE5QUUgLyogQ1NTS2V5ZnJhbWVzUnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzc3MkUxNjEzMzE2MkMyMDAxRUM5Q0UgLyogQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk5NDZEMzc0OTFENkQwNjI4MDA3NzA4NEYgLyogQ1NTTWFya3Vw
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU2Q0ZDMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NN
ZWRpYVJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE0QkUzQTMxQjMwRjZEMTAwMTQxOTgy
IC8qIENTU05hbWVkSW1hZ2VWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGOThGRkY0NDEx
QTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBF
NkNGNTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUGFnZVJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJOTQ2RDM3MkQxRDZDQjI5NDAwNzcwODRGIC8qIENTU1BhcnNlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk5NDlDNzcwMDFENkUxRDk4MDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTk0OUM3NzA4MUQ2RTQ5ODcwMEMwREU0RiAvKiBDU1NQYXJz
ZXJPYnNlcnZlcldyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTQ2RDM3M0YxRDZDRTND
MjAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0NkQz
NzREMUQ2RDA4QTYwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJhbmdlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTk0NkQzNzMwMUQ2Q0IyOTQwMDc3MDg0RiAvKiBDU1NQYXJzZXJWYWx1ZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3QjM4NjIxMjI4ODNFOTAwQjgxRkY4IC8qIENTU1ByZWxv
YWRTY2FubmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU2RDA1MEExOTg5Q0EwMDdGQjhD
NSAvKiBDU1NQcmltaXRpdmVWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBFNkNGNzBB
MTk4OUNBMDA3RkI4QzUgLyogQ1NTUHJvcGVydHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzhE
MDJCQzUxNTRBMThERjAwQjYyRDA1IC8qIENTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBQkE3NkNBMTFEMjBFNTAwMDRDMjAxQyAvKiBDU1NQcm9wZXJ0eU5hbWVz
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0NkQzNzQ1MUQ2RDAxRDQwMDc3MDg0RiAvKiBDU1NQ
cm9wZXJ0eVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NDlDNzcwNDFENkUzOUVBMDBD
MERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTgyRTNEOERFMTIyRUEwRDEwMDNBRTVCQyAvKiBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkM1QTEyREYwREMwNDE0ODAwQzlBRkFEIC8qIENTU1JlZmxlY3RW
YWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzdEOEZGMzFCRDFBNDc5MDBGRkU1NDAgLyog
Q1NTUmV2ZXJ0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzY5NSw2ICsyNzc2Nyw4IEBA
CiAJCQkJQThFQTgwMDgwQTE5NTE2RTAwQThFRjVGIC8qIENTU1N0eWxlU2hlZXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkQ2Nzc3MzkxOTVDQUZCQTAwNzJFMEQzIC8qIENTU1N1cHBvcnRzUnVs
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzgwQzk4NzBDRDI5NEVFMDBBMEI3QjMgLyogQ1NT
VGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NDZEMzczOTFENkNE
RkMwMDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0NkQz
NzNCMUQ2Q0RGQzAwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5QUIxRjM4MTE4RTI0ODlBMDA1MzQ3NDMgLyogQ1NTVG9MZW5ndGhDb252
ZXJzaW9uRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODgyREEyMDE1OTM4NDZBMDAwMTE1
RUQgLyogQ1NTVG9TdHlsZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzFGNTNFQTBEMjcw
NEY5MDBFQ0UwRDUgLyogQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0yODM2Nyw2ICsyODQ0MSw3IEBACiAJCQkJOTc1Q0EyQTExMzAzNjc5RDAwRTk5QUQ5IC8qIEpT
Q3J5cHRvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTdBOEYwMTgxODU0MjUwMDlGODIxRCAv
KiBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFDNjU3
MTIxODE1RjlERDAwMjU2Q0REIC8qIEpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3Q0VGMjYxOTFENkE5MzE3MDBCRTkwNUQgLyogSlNDcnlwdG9DdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE1N0E4RTAxODE3MzMxQzAwOUY4MjFEIC8qIEpT
Q3J5cHRvS2V5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTdBOEU4MTgxODRDNjcwMDlGODIx
RCAvKiBKU0NyeXB0b0tleUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUY4MEI4RDE4
MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
Mjg2ODQsNyArMjg3NTksNiBAQAogCQkJCTFBNzUwRDhEMEE5MEU1MjEwMDBGRjIxNSAvKiBKU05v
ZGVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTc1MERENDBBOTBFNzI5MDAwRkYy
MTUgLyogSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNEOUMy
QzIwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
OTQ2RDM3MzAxRDZDQjI5NDAwNzcwODRGIC8qIENTU1BhcnNlclZhbHVlcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQ0Q5QzI2NTBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlTGlzdEN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzkxQTM4RjFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2Rl
T3JTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzM1MDNDQTMxMDE3OUFENzAwM0I0N0Ux
IC8qIEpTTm90aWZpY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkxMDEsMTkgKzI5MTc1
LDE5IEBACiAJCQkJRkFCRTcyRjQxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkFCRTcyRkQxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTEVs
ZW1lbnRGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBCQ0Y4M0Y2MTA1OUMxRUIwMEQ5
OTlERCAvKiBNYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkFC
RTcyRjYxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRkFCRTcyRjgxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTE1hdGhF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA1RDkxM0NFRUFCMkE2MDUzNDIxOEFDRiAv
KiBNYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkFCRTcyRkUx
MDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE2
RUEyNENFRUFCMkE2MDUzNDIxOEFDRiAvKiBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRkE2NTRBNkIxMTA4QUJFRDAwMjYxNkYxIC8qIE1hdGhNTE9wZXJh
dG9yRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTlDQTM5MENFRDY2QzMyNTVGNzJD
NTkgLyogTWF0aE1MUGFkZGVkRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGQUJFNzJG
NjEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlGQTc2NUE2QjExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MUm93RWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTlDQTM5MENFRDY2QzMyNTVGNzJCNDggLyogTWF0
aE1MU2NyaXB0c0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVENDgzOTBDRUQ2NkMz
MjU1RjcyQzU5IC8qIE1hdGhNTFNlbGVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NEZBNjVBNkIxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0MzkxNzZERjEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkE2NTRBNkIxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRv
a2VuRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGQTc2NUE2QjExMDhBQkVEMDAyNjE1
RTAgLyogTWF0aE1MUm93RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGQTY1NEE2QjEx
MDhBQkVEMDAyNjI2RjEgLyogTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0MzkwNDZFOTEyREEyNUU4MTJBRjgwQUMgLyogTWF0aE9wZXJhdG9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTQ5RDVEQzJCMEY0MjNBNzMwMDhGMjBGRCAvKiBNYXRyaXgzRFRyYW5z
Zm9ybU9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5MjE1LDYgKzI5Mjg5LDggQEAK
IAkJCQlDNTNEMzkzNDFDOTc4QTQ1MDA3RjNBRTkgLyogTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTJGMTA4NjUxNjJCNkRBNDAwOUFDODFFIC8qIE1peGVkQ29u
dGVudENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RGMkIwMTAxODIwNTQwNjAwRjJC
NDI0IC8qIE1vY2tCb3guY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEwNThBREYxRDY3QzIyOTAw
OUE1MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMDU4QUUxMUQ2
N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTVFQTNENkUwMUM4NTlEODQwMDMwMEJCQiAvKiBNb2NrTWVkaWFFbmRwb2ludC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDREYyQjAxMjE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RGMkIwMTQxODIwNTQwNjAw
RjJCNDI0IC8qIE1vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
OTI1Nyw3ICsyOTMzMyw2IEBACiAJCQkJNDQzRjA0MjcwRTc1QzhGQjAwN0U1NDA3IC8qIE5ldHdv
cmtTdGF0ZU5vdGlmaWVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3RkE2NDkwRERBM0NC
QTAwMjhGOEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyTWFjLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTVDM0M4NTZEMUQ1QTdBREUwMDg4QjlFQyAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb24uY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJNTEwNThBREYxRDY3QzIyOTAwOUE1MzhDIC8qIE1vY2tHYW1l
cGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxM0VGMzQ5MTY4NTBDNDcwMDM0QzgzRiAvKiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNjkzOTcy
NjFBNEE1RkJEMDBFODM0OUQgLyogTkZBLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2NzcyNjAw
MUE1QjNBRDkwMDNDMjRERCAvKiBORkFUb0RGQS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5Mjkx
LDcgKzI5MzY2LDYgQEAKIAkJCQlGREE5MzI1RDE2NzAzQjJBMDA4OTgyREMgLyogT2ZmbGluZUF1
ZGlvQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREEzRTk1QjEzNEE0OUVGMDA4RDRC
NUEgLyogT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyRDNEQTY0MEQwMDZDRDYwMEVGNkYzQSAvKiBPcGVuVHlwZUNHLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTUxMDU4QUUxMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUIyRDNEQTY0MEQwMDZDRDYwMEVGNkYyNyAvKiBPcGVuVHlw
ZU1hdGhEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERTdGQzQ0MTgxOTA0QjEwMDJCQkI3
NyAvKiBPcmRlckl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTAwMTQ2MjhBMTAzQ0Qx
REUwMDBCMjBEQiAvKiBPcmlnaW5BY2Nlc3NFbnRyeS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5
MzUwLDcgKzI5NDI0LDYgQEAKIAkJCQkwRjQzQzg1RDE4OUUxMENGMDAwMTlBRTIgLyogUGVyZm9y
bWFuY2VUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1ODFGQjQxNTIwRjkzQjAwM0E3
QTc1IC8qIFBlcmlvZGljV2F2ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUQ1REMyRDBGNDIz
QTczMDA4RjIwRkQgLyogUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJOTQ2RDM3MzMxRDZDQzQyQjAwNzcwODRGIC8qIFNWR0NTU1BhcnNlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlEMEZGMkE1RDExRjhDNDVBMDA3RTc0RTAgLyogUGluZ0xvYWRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDdEMzM0MzFDN0ExMjNGMDAwNDEyOTMgLyogUGl4
ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkRGNDVBNzFCRDFD
NkZEMDBFNEZBOEMgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI5NzY5LDcgKzI5ODQyLDYgQEAKIAkJCQk5MzMwOUUxNTA5OUU2NDkyMDA1NkU1ODEgLyogU3Bs
aXRUZXh0Tm9kZUNvbnRhaW5pbmdFbGVtZW50Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBMUUxMTU0ODEzMDE1QzVEMDA1NEFDOEMgLyogU3BvdExpZ2h0U291cmNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3QkM2QTNFMTUwNUYwODEwMDFCNzRBQyAvKiBTUUxFeGNlcHRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJN0NFRjI2MTkxRDZBOTMxNzAwQkU5MDVEIC8qIEpTQ3J5cHRv
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkU2RTdBMENDNTU2RDUwMDRBMjA2MiAv
KiBTUUxpdGVBdXRob3JpemVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMjI0NjQ5MENDOThE
REIwMEMwNTI0MCAvKiBTUUxpdGVEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RTQ3
NEUyMDEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMjk4ODQsNiArMjk5NTYsNyBAQAogCQkJCUIyMjI3OUExMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdDb2xvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlBNDBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjIyMjdCMDUwRDAwQkZGMTAwNzFCNzgyIC8qIFNWR0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NDZEMzczMzFENkNDNDJC
MDA3NzA4NEYgLyogU1ZHQ1NTUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUE3
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdDdXJzb3JFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUIyMjI3OUFEMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdEZWZzRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCMjIyNzlCMDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRGVzY0VsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDA4Niw3ICszMDE1OSw2IEBACiAJCQkJN0FBM0E2OTkx
OTRBNjRFNzAwMUNCRDI0IC8qIFRpbGVDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFGNzJCRjBBMTg3RkQ0NDkwMDA5QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJ
T1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FBM0E2QTMxOTRCNUMyMjAwMUNCRDI0IC8qIFRp
bGVDb3ZlcmFnZU1hcC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5NDZEMzcyRDFENkNCMjk0MDA3
NzA4NEYgLyogQ1NTUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBQTNBNjlCMTk0QTY0
RTcwMDFDQkQyNCAvKiBUaWxlR3JpZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTg3NzBGMjEy
NDJDNTM1MDAyMjI2QkEgLyogVGlsaW5nRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNTVC
M0REQjEyNTFGMTJEMDAzRUYyNjkgLyogVGltZUlucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcAkocmV2aXNpb24gMjA0OTc4KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIs
OSArNjIsOSBAQAogI2luY2x1ZGUgIkNTU0tleWZyYW1lUnVsZS5jcHAiCiAjaW5jbHVkZSAiQ1NT
S2V5ZnJhbWVzUnVsZS5jcHAiCiAjaW5jbHVkZSAiQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5jcHAi
CisjaW5jbHVkZSAiQ1NTTWFya3VwLmNwcCIKICNpbmNsdWRlICJDU1NNZWRpYVJ1bGUuY3BwIgog
I2luY2x1ZGUgIkNTU05hbWVkSW1hZ2VWYWx1ZS5jcHAiCi0jaW5jbHVkZSAiQ1NTT01VdGlscy5j
cHAiCiAjaW5jbHVkZSAiQ1NTUGFnZVJ1bGUuY3BwIgogI2luY2x1ZGUgIkNTU1BhcnNlci5jcHAi
CiAjaW5jbHVkZSAiQ1NTUGFyc2VyVmFsdWVzLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NNYXJrdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNYXJr
dXAuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNYXJrdXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDAzIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgQWxs
YW4gU2FuZGZlbGQgSmVuc2VuIChrZGVAY2FyZXdvbGYuY29tKQorICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBOaWNob2xh
cyBTaGFua3MgPHdlYmtpdEBuaWNrc2hhbmtzLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBF
cmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNo
IE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxl
LmNvbS8pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9y
YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJDU1NNYXJrdXAuaCIKKworI2luY2x1ZGUgIkNTU1BhcnNlcklkaW9tcy5oIgorI2luY2x1ZGUg
PHd0Zi9IZXhOdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgaW5saW5lIGJvb2wg
aXNDU1NUb2tlbml6ZXJJZGVudGlmaWVyKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBlbmQgPSBjaGFy
YWN0ZXJzICsgbGVuZ3RoOworCisgICAgLy8gLT8KKyAgICBpZiAoY2hhcmFjdGVycyAhPSBlbmQg
JiYgY2hhcmFjdGVyc1swXSA9PSAnLScpCisgICAgICAgICsrY2hhcmFjdGVyczsKKworICAgIC8v
IHtubXN0YXJ0fQorICAgIGlmIChjaGFyYWN0ZXJzID09IGVuZCB8fCAhaXNOYW1lU3RhcnRDb2Rl
UG9pbnQoY2hhcmFjdGVyc1swXSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICArK2NoYXJh
Y3RlcnM7CisKKyAgICAvLyB7bm1jaGFyfSoKKyAgICBmb3IgKDsgY2hhcmFjdGVycyAhPSBlbmQ7
ICsrY2hhcmFjdGVycykgeworICAgICAgICBpZiAoIWlzTmFtZUNvZGVQb2ludChjaGFyYWN0ZXJz
WzBdKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworLy8gImlkZW50IiBmcm9tIHRoZSBDU1MgdG9rZW5pemVyLCBtaW51cyBiYWNrc2xh
c2gtZXNjYXBlIHNlcXVlbmNlcworc3RhdGljIGJvb2wgaXNDU1NUb2tlbml6ZXJJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5s
ZW5ndGgoKTsKKworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gaXNDU1NUb2tlbml6ZXJJZGVu
dGlmaWVyKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpOworICAgIHJldHVybiBpc0NTU1Rv
a2VuaXplcklkZW50aWZpZXIoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgpOworfQorCitz
dGF0aWMgdm9pZCBzZXJpYWxpemVDaGFyYWN0ZXIoVUNoYXIzMiBjLCBTdHJpbmdCdWlsZGVyJiBh
cHBlbmRUbykKK3sKKyAgICBhcHBlbmRUby5hcHBlbmQoJ1xcJyk7CisgICAgYXBwZW5kVG8uYXBw
ZW5kKGMpOworfQorCitzdGF0aWMgdm9pZCBzZXJpYWxpemVDaGFyYWN0ZXJBc0NvZGVQb2ludChV
Q2hhcjMyIGMsIFN0cmluZ0J1aWxkZXImIGFwcGVuZFRvKQoreworICAgIGFwcGVuZFRvLmFwcGVu
ZCgnXFwnKTsKKyAgICBhcHBlbmRVbnNpZ25lZEFzSGV4KGMsIGFwcGVuZFRvLCBMb3dlcmNhc2Up
OworICAgIGFwcGVuZFRvLmFwcGVuZCgnICcpOworfQorCit2b2lkIHNlcmlhbGl6ZUlkZW50aWZp
ZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBTdHJpbmdCdWlsZGVyJiBhcHBlbmRUbywgYm9v
bCBza2lwU3RhcnRDaGVja3MpCit7CisgICAgYm9vbCBpc0ZpcnN0ID0gIXNraXBTdGFydENoZWNr
czsKKyAgICBib29sIGlzU2Vjb25kID0gZmFsc2U7CisgICAgYm9vbCBpc0ZpcnN0Q2hhckh5cGhl
biA9IGZhbHNlOworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICB3aGlsZSAoaW5kZXggPCBp
ZGVudGlmaWVyLmxlbmd0aCgpKSB7CisgICAgICAgIFVDaGFyMzIgYyA9IGlkZW50aWZpZXIuY2hh
cmFjdGVyU3RhcnRpbmdBdChpbmRleCk7CisgICAgICAgIGlmICghYykgeworICAgICAgICAgICAg
Ly8gQ2hlY2sgZm9yIGxvbmUgc3Vycm9nYXRlIHdoaWNoIGNoYXJhY3RlclN0YXJ0aW5nQXQgZG9l
cyBub3QgcmV0dXJuLgorICAgICAgICAgICAgYyA9IGlkZW50aWZpZXJbaW5kZXhdOworICAgICAg
ICB9CisKKyAgICAgICAgaW5kZXggKz0gVTE2X0xFTkdUSChjKTsKKworICAgICAgICBpZiAoIWMp
CisgICAgICAgICAgICBhcHBlbmRUby5hcHBlbmQoMHhmZmZkKTsKKyAgICAgICAgZWxzZSBpZiAo
YyA8PSAweDFmIHx8IGMgPT0gMHg3ZiB8fCAoMHgzMCA8PSBjICYmIGMgPD0gMHgzOSAmJiAoaXNG
aXJzdCB8fCAoaXNTZWNvbmQgJiYgaXNGaXJzdENoYXJIeXBoZW4pKSkpCisgICAgICAgICAgICBz
ZXJpYWxpemVDaGFyYWN0ZXJBc0NvZGVQb2ludChjLCBhcHBlbmRUbyk7CisgICAgICAgIGVsc2Ug
aWYgKGMgPT0gMHgyZCAmJiBpc0ZpcnN0ICYmIGluZGV4ID09IGlkZW50aWZpZXIubGVuZ3RoKCkp
CisgICAgICAgICAgICBzZXJpYWxpemVDaGFyYWN0ZXIoYywgYXBwZW5kVG8pOworICAgICAgICBl
bHNlIGlmICgweDgwIDw9IGMgfHwgYyA9PSAweDJkIHx8IGMgPT0gMHg1ZiB8fCAoMHgzMCA8PSBj
ICYmIGMgPD0gMHgzOSkgfHwgKDB4NDEgPD0gYyAmJiBjIDw9IDB4NWEpIHx8ICgweDYxIDw9IGMg
JiYgYyA8PSAweDdhKSkKKyAgICAgICAgICAgIGFwcGVuZFRvLmFwcGVuZChjKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgc2VyaWFsaXplQ2hhcmFjdGVyKGMsIGFwcGVuZFRvKTsKKworICAg
ICAgICBpZiAoaXNGaXJzdCkgeworICAgICAgICAgICAgaXNGaXJzdCA9IGZhbHNlOworICAgICAg
ICAgICAgaXNTZWNvbmQgPSB0cnVlOworICAgICAgICAgICAgaXNGaXJzdENoYXJIeXBoZW4gPSAo
YyA9PSAweDJkKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc1NlY29uZCkKKyAgICAgICAgICAgIGlz
U2Vjb25kID0gZmFsc2U7CisgICAgfQorfQorCit2b2lkIHNlcmlhbGl6ZVN0cmluZyhjb25zdCBT
dHJpbmcmIHN0cmluZywgU3RyaW5nQnVpbGRlciYgYXBwZW5kVG8pCit7CisgICAgYXBwZW5kVG8u
YXBwZW5kKCdcIicpOworCisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIHdoaWxlIChpbmRl
eCA8IHN0cmluZy5sZW5ndGgoKSkgeworICAgICAgICBVQ2hhcjMyIGMgPSBzdHJpbmcuY2hhcmFj
dGVyU3RhcnRpbmdBdChpbmRleCk7CisgICAgICAgIGluZGV4ICs9IFUxNl9MRU5HVEgoYyk7CisK
KyAgICAgICAgaWYgKGMgPD0gMHgxZiB8fCBjID09IDB4N2YpCisgICAgICAgICAgICBzZXJpYWxp
emVDaGFyYWN0ZXJBc0NvZGVQb2ludChjLCBhcHBlbmRUbyk7CisgICAgICAgIGVsc2UgaWYgKGMg
PT0gMHgyMiB8fCBjID09IDB4NWMpCisgICAgICAgICAgICBzZXJpYWxpemVDaGFyYWN0ZXIoYywg
YXBwZW5kVG8pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcHBlbmRUby5hcHBlbmQoYyk7
CisgICAgfQorCisgICAgYXBwZW5kVG8uYXBwZW5kKCdcIicpOworfQorCitTdHJpbmcgc2VyaWFs
aXplU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKKyAgICBzZXJpYWxpemVTdHJpbmcoc3RyaW5nLCBidWlsZGVyKTsKKyAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOworfQorCitTdHJpbmcgc2VyaWFsaXplVVJJKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQoreworICAgIHJldHVybiAidXJsKCIgKyBzZXJpYWxpemVTdHJpbmcoc3RyaW5n
KSArICIpIjsKK30KKworU3RyaW5nIHNlcmlhbGl6ZUZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCit7CisgICAgcmV0dXJuIGlzQ1NTVG9rZW5pemVySWRlbnRpZmllcihzdHJpbmcpID8g
c3RyaW5nIDogc2VyaWFsaXplU3RyaW5nKHN0cmluZyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNYXJrdXAuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWFya3VwLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0NTU01hcmt1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlk
ZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOSAtIDIwMTAgIFRvcmNo
IE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBD
U1NNYXJrdXBfaAorI2RlZmluZSBDU1NNYXJrdXBfaAorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKKy8vIEhlbHBlciBmdW5jdGlvbnMgZm9yIGNvbnZlcnRpbmcgZnJvbSBDU1NW
YWx1ZXMgdG8gdGV4dC4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBDb21tb24gc2VyaWFs
aXppbmcgbWV0aG9kcy4gU2VlOiBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3NvbS8jY29tbW9u
LXNlcmlhbGl6aW5nLWlkaW9tcwordm9pZCBzZXJpYWxpemVJZGVudGlmaWVyKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgU3RyaW5nQnVpbGRlciYgYXBwZW5kVG8sIGJvb2wgc2tpcFN0YXJ0Q2hl
Y2tzID0gZmFsc2UpOwordm9pZCBzZXJpYWxpemVTdHJpbmcoY29uc3QgU3RyaW5nJiwgU3RyaW5n
QnVpbGRlciYgYXBwZW5kVG8pOworU3RyaW5nIHNlcmlhbGl6ZVN0cmluZyhjb25zdCBTdHJpbmcm
KTsKK1N0cmluZyBzZXJpYWxpemVVUkkoY29uc3QgU3RyaW5nJik7CitTdHJpbmcgc2VyaWFsaXpl
Rm9udEZhbWlseShjb25zdCBTdHJpbmcmKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gQ1NTTWFya3VwX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NPTVV0aWxz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTT01VdGlscy5jcHAJKHJl
dmlzaW9uIDIwNDk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NPTVV0aWxzLmNwcAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDEwNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkNTU09NVXRpbHMuaCIKLQotI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBz
ZXJpYWxpemVDaGFyYWN0ZXIoVUNoYXIzMiBjLCBTdHJpbmdCdWlsZGVyJiBhcHBlbmRUbykKLXsK
LSAgICBhcHBlbmRUby5hcHBlbmQoJ1xcJyk7Ci0gICAgYXBwZW5kVG8uYXBwZW5kKGMpOwotfQot
Ci12b2lkIHNlcmlhbGl6ZUNoYXJhY3RlckFzQ29kZVBvaW50KFVDaGFyMzIgYywgU3RyaW5nQnVp
bGRlciYgYXBwZW5kVG8pCi17Ci0gICAgYXBwZW5kVG8uYXBwZW5kKCdcXCcpOwotICAgIGFwcGVu
ZFVuc2lnbmVkQXNIZXgoYywgYXBwZW5kVG8sIExvd2VyY2FzZSk7Ci0gICAgYXBwZW5kVG8uYXBw
ZW5kKCcgJyk7Ci19Ci0KLXZvaWQgc2VyaWFsaXplSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIFN0cmluZ0J1aWxkZXImIGFwcGVuZFRvKQotewotICAgIGJvb2wgaXNGaXJzdCA9
IHRydWU7Ci0gICAgYm9vbCBpc1NlY29uZCA9IGZhbHNlOwotICAgIGJvb2wgaXNGaXJzdENoYXJI
eXBoZW4gPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IDA7Ci0gICAgd2hpbGUgKGluZGV4
IDwgaWRlbnRpZmllci5sZW5ndGgoKSkgewotICAgICAgICBVQ2hhcjMyIGMgPSBpZGVudGlmaWVy
LmNoYXJhY3RlclN0YXJ0aW5nQXQoaW5kZXgpOwotICAgICAgICBpZiAoIWMpIHsKLSAgICAgICAg
ICAgIC8vIENoZWNrIGZvciBsb25lIHN1cnJvZ2F0ZSB3aGljaCBjaGFyYWN0ZXJTdGFydGluZ0F0
IGRvZXMgbm90IHJldHVybi4KLSAgICAgICAgICAgIGMgPSBpZGVudGlmaWVyW2luZGV4XTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGluZGV4ICs9IFUxNl9MRU5HVEgoYyk7Ci0KLSAgICAgICAgaWYg
KCFjKQotICAgICAgICAgICAgYXBwZW5kVG8uYXBwZW5kKDB4ZmZmZCk7Ci0gICAgICAgIGVsc2Ug
aWYgKGMgPD0gMHgxZiB8fCBjID09IDB4N2YgfHwgKDB4MzAgPD0gYyAmJiBjIDw9IDB4MzkgJiYg
KGlzRmlyc3QgfHwgKGlzU2Vjb25kICYmIGlzRmlyc3RDaGFySHlwaGVuKSkpKQotICAgICAgICAg
ICAgc2VyaWFsaXplQ2hhcmFjdGVyQXNDb2RlUG9pbnQoYywgYXBwZW5kVG8pOwotICAgICAgICBl
bHNlIGlmIChjID09IDB4MmQgJiYgaXNGaXJzdCAmJiBpbmRleCA9PSBpZGVudGlmaWVyLmxlbmd0
aCgpKQotICAgICAgICAgICAgc2VyaWFsaXplQ2hhcmFjdGVyKGMsIGFwcGVuZFRvKTsKLSAgICAg
ICAgZWxzZSBpZiAoMHg4MCA8PSBjIHx8IGMgPT0gMHgyZCB8fCBjID09IDB4NWYgfHwgKDB4MzAg
PD0gYyAmJiBjIDw9IDB4MzkpIHx8ICgweDQxIDw9IGMgJiYgYyA8PSAweDVhKSB8fCAoMHg2MSA8
PSBjICYmIGMgPD0gMHg3YSkpCi0gICAgICAgICAgICBhcHBlbmRUby5hcHBlbmQoYyk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHNlcmlhbGl6ZUNoYXJhY3RlcihjLCBhcHBlbmRUbyk7Ci0K
LSAgICAgICAgaWYgKGlzRmlyc3QpIHsKLSAgICAgICAgICAgIGlzRmlyc3QgPSBmYWxzZTsKLSAg
ICAgICAgICAgIGlzU2Vjb25kID0gdHJ1ZTsKLSAgICAgICAgICAgIGlzRmlyc3RDaGFySHlwaGVu
ID0gKGMgPT0gMHgyZCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNTZWNvbmQpCi0gICAgICAgICAg
ICBpc1NlY29uZCA9IGZhbHNlOwotICAgIH0KLX0KLQotdm9pZCBzZXJpYWxpemVTdHJpbmcoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIFN0cmluZ0J1aWxkZXImIGFwcGVuZFRvKQotewotICAgIGFwcGVu
ZFRvLmFwcGVuZCgnXCInKTsKLQotICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKLSAgICB3aGlsZSAo
aW5kZXggPCBzdHJpbmcubGVuZ3RoKCkpIHsKLSAgICAgICAgVUNoYXIzMiBjID0gc3RyaW5nLmNo
YXJhY3RlclN0YXJ0aW5nQXQoaW5kZXgpOwotICAgICAgICBpbmRleCArPSBVMTZfTEVOR1RIKGMp
OwotICAgICAgICBpZiAoYyA8PSAweDFmKQotICAgICAgICAgICAgc2VyaWFsaXplQ2hhcmFjdGVy
QXNDb2RlUG9pbnQoYywgYXBwZW5kVG8pOwotICAgICAgICBlbHNlIGlmIChjID09IDB4MjIgfHwg
YyA9PSAweDVjKQotICAgICAgICAgICAgc2VyaWFsaXplQ2hhcmFjdGVyKGMsIGFwcGVuZFRvKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXBwZW5kVG8uYXBwZW5kKGMpOwotICAgIH0KLQot
ICAgIGFwcGVuZFRvLmFwcGVuZCgnXCInKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoK
UHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvY3NzL0NTU09NVXRpbHMuY3BwCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U09NVXRpbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTT01VdGlscy5o
CShyZXZpc2lvbiAyMDQ5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTT01VdGlscy5oCShu
b25leGlzdGVudCkKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8dW5p
Y29kZS91bWFjaGluZS5oPgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLS8vIFV0aWxpdGll
cyBmb3IgQ1NTT00gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nzb20vCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotLy8gQ29tbW9uIHNlcmlhbGl6aW5nIG1ldGhvZHMuIFNlZTogaHR0cDovL2Rl
di53My5vcmcvY3Nzd2cvY3Nzb20vI2NvbW1vbi1zZXJpYWxpemluZy1pZGlvbXMKLXZvaWQgc2Vy
aWFsaXplQ2hhcmFjdGVyKFVDaGFyMzIsIFN0cmluZ0J1aWxkZXImKTsKLXZvaWQgc2VyaWFsaXpl
Q2hhcmFjdGVyQXNDb2RlUG9pbnQoVUNoYXIzMiwgU3RyaW5nQnVpbGRlciYpOwotdm9pZCBzZXJp
YWxpemVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgU3RyaW5nQnVpbGRlciYp
Owotdm9pZCBzZXJpYWxpemVTdHJpbmcoY29uc3QgU3RyaW5nJiwgU3RyaW5nQnVpbGRlciYpOwot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTT01VdGlscy5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQoj
IyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCShyZXZpc2lvbiAyMDQ5NzgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKIAot
I2luY2x1ZGUgIkNTU09NVXRpbHMuaCIKKyNpbmNsdWRlICJDU1NNYXJrdXAuaCIKICNpbmNsdWRl
ICJDU1NTZWxlY3Rvckxpc3QuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJT
ZWxlY3RvclBzZXVkb1R5cGVNYXAuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NO
YW1lc3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NOYW1l
c3BhY2UuY3BwCShyZXZpc2lvbiAyMDQ5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NT
TmFtZXNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkRPTUNTU05hbWVzcGFjZS5oIgogCi0jaW5jbHVkZSAiQ1NT
T01VdGlscy5oIgorI2luY2x1ZGUgIkNTU01hcmt1cC5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5o
IgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFz
dFBhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Bh
cnNlckZhc3RQYXRocy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEx
NyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6Cisv
LworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJGYXN0UGF0aHMuaCIKKworLy8g
RklYTUUtTkVXUEFSU0VSOiAjaW5jbHVkZSAiQ1NTQ29sb3JWYWx1ZS5oIgorI2luY2x1ZGUgIkNT
U0Z1bmN0aW9uVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NJbmhlcml0ZWRWYWx1ZS5oIgorI2luY2x1
ZGUgIkNTU0luaXRpYWxWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1BhcnNlcklkaW9tcy5oIgorI2lu
Y2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlQYXJzZXIu
aCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oIgorLy8gRklYTUUtTkVXUEFSU0VSOiAjaW5jbHVkZSAiU3R5bGVDb2xvci5o
IgorI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTaG9ydGhhbmQuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisvKiBGSVhNRS1ORVdQQVJTRVI6IFR1cm4gb2ZmIGZvciBub3cuCisgCitzdGF0aWMg
aW5saW5lIGJvb2wgaXNTaW1wbGVMZW5ndGhQcm9wZXJ0eUlEKENTU1Byb3BlcnR5SUQgcHJvcGVy
dHlJZCwgYm9vbCYgYWNjZXB0c05lZ2F0aXZlTnVtYmVycykKK3sKKyAgICBzd2l0Y2ggKHByb3Bl
cnR5SWQpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFNpemU6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUdyaWRDb2x1bW5HYXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRSb3dHYXA6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUhlaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2lkdGg6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eU1pbkhlaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWluV2lkdGg6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b206CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVBhZGRpbmdMZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQ6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVBhZGRpbmdUb3A6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2lj
YWxXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TG9naWNhbEhlaWdodDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNaW5Mb2dpY2FsSGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRk
aW5nQWZ0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmU6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdFbmQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFBhZGRpbmdTdGFydDoKKyAgLy8gIGNhc2UgQ1NTUHJvcGVydHlTaGFwZU1hcmdpbjoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5UjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Ung6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVJ5OgorICAgICAgICBhY2NlcHRzTmVnYXRpdmVOdW1iZXJzID0gZmFsc2U7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3R0b206CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUN4OgorICAgIGNhc2UgQ1NTUHJvcGVydHlDeToKKyAgICBjYXNlIENTU1By
b3BlcnR5TGVmdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlNYXJnaW5MZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5SaWdodDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luVG9wOgorIC8vICAgY2FzZSBDU1NQcm9wZXJ0eU1v
dGlvbk9mZnNldDoKKyAgICBjYXNlIENTU1Byb3BlcnR5UmlnaHQ6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRvcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXI6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFyZ2luRW5kOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5TdGFydDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5WDoKKyAgICBjYXNlIENTU1Byb3BlcnR5WToKKyAgICAgICAgYWNj
ZXB0c05lZ2F0aXZlTnVtYmVycyA9IHRydWU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGlubGluZSBib29sIHBhcnNlU2ltcGxlTGVuZ3Ro
KGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlcyYgdW5pdCwgZG91YmxlJiBudW1iZXIpCit7CisgICAgaWYg
KGxlbmd0aCA+IDIgJiYgKGNoYXJhY3RlcnNbbGVuZ3RoIC0gMl0gfCAweDIwKSA9PSAncCcgJiYg
KGNoYXJhY3RlcnNbbGVuZ3RoIC0gMV0gfCAweDIwKSA9PSAneCcpIHsKKyAgICAgICAgbGVuZ3Ro
IC09IDI7CisgICAgICAgIHVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1Nf
UFg7CisgICAgfSBlbHNlIGlmIChsZW5ndGggPiAxICYmIGNoYXJhY3RlcnNbbGVuZ3RoIC0gMV0g
PT0gJyUnKSB7CisgICAgICAgIGxlbmd0aCAtPSAxOworICAgICAgICB1bml0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1BFUkNFTlRBR0U7CisgICAgfQorCisgICAgLy8gV2Ug
cmVseSBvbiBjaGFyYWN0ZXJzVG9Eb3VibGUgZm9yIHZhbGlkYXRpb24gYXMgd2VsbC4gVGhlIGZ1
bmN0aW9uCisgICAgLy8gd2lsbCBzZXQgIm9rIiB0byAiZmFsc2UiIGlmIHRoZSBlbnRpcmUgcGFz
c2VkLWluIGNoYXJhY3RlciByYW5nZSBkb2VzCisgICAgLy8gbm90IHJlcHJlc2VudCBhIGRvdWJs
ZS4KKyAgICBib29sIG9rOworICAgIG51bWJlciA9IGNoYXJhY3RlcnNUb0RvdWJsZShjaGFyYWN0
ZXJzLCBsZW5ndGgsICZvayk7CisgICAgaWYgKCFvaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIG51bWJlciA9IGNsYW1wVG88ZG91YmxlPihudW1iZXIsIC1zdGQ6Om51bWVyaWNfbGltaXRz
PGZsb2F0Pjo6bWF4KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogcGFyc2VTaW1wbGVMZW5ndGhWYWx1
ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJz
ZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgQVNTRVJUKCFzdHJpbmcuaXNFbXB0eSgpKTsK
KyAgICBib29sIGFjY2VwdHNOZWdhdGl2ZU51bWJlcnMgPSBmYWxzZTsKKworICAgIC8vIEluIEB2
aWV3cG9ydCwgd2lkdGggYW5kIGhlaWdodCBhcmUgc2hvcnRoYW5kcywgbm90IHNpbXBsZSBsZW5n
dGggdmFsdWVzLgorICAgIGlmIChpc0NTU1ZpZXdwb3J0UGFyc2luZ0VuYWJsZWRGb3JNb2RlKGNz
c1BhcnNlck1vZGUpIHx8ICFpc1NpbXBsZUxlbmd0aFByb3BlcnR5SUQocHJvcGVydHlJZCwgYWNj
ZXB0c05lZ2F0aXZlTnVtYmVycykpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgdW5z
aWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAgIGRvdWJsZSBudW1iZXI7CisgICAg
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB1bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlczo6TnVtYmVyOworCisgICAgaWYgKHN0cmluZy5pczhCaXQoKSkgeworICAgICAgICBp
ZiAoIXBhcnNlU2ltcGxlTGVuZ3RoKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgsIHVuaXQs
IG51bWJlcikpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9IGVsc2UgeworICAg
ICAgICBpZiAoIXBhcnNlU2ltcGxlTGVuZ3RoKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3Ro
LCB1bml0LCBudW1iZXIpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisg
ICAgaWYgKHVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6TnVtYmVyKSB7Cisg
ICAgICAgIGlmIChjc3NQYXJzZXJNb2RlID09IFNWR0F0dHJpYnV0ZU1vZGUpCisgICAgICAgICAg
ICB1bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6VXNlclVuaXRzOworICAgICAg
ICBlbHNlIGlmICghbnVtYmVyKQorICAgICAgICAgICAgdW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZXM6OlBpeGVsczsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgaWYgKG51bWJlciA8IDAgJiYgIWFjY2VwdHNOZWdhdGl2ZU51
bWJlcnMpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUobnVtYmVyLCB1bml0KTsKK30KKworc3RhdGljIGlubGluZSBib29sIGlz
Q29sb3JQcm9wZXJ0eUlEKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCkKK3sKKyAgICBzd2l0Y2gg
KHByb3BlcnR5SWQpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3I6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9t
Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcjoKKyAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9w
Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGw6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZs
b29kQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpZ2h0aW5nQ29sb3I6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eU91dGxpbmVDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5U3RvcENvbG9yOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckFmdGVyQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNv
bG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvcjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5
Q29sdW1uUnVsZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXND
b2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlU
ZXh0RGVjb3JhdGlvbkNvbG9yOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCisvLyBSZXR1cm5zIHRoZSBudW1iZXIg
b2YgY2hhcmFjdGVycyB3aGljaCBmb3JtIGEgdmFsaWQgZG91YmxlCisvLyBhbmQgYXJlIHRlcm1p
bmF0ZWQgYnkgdGhlIGdpdmVuIHRlcm1pbmF0b3IgY2hhcmFjdGVyCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBpbnQgY2hlY2tGb3JWYWxpZERvdWJsZShjb25zdCBD
aGFyYWN0ZXJUeXBlKiBzdHJpbmcsIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCwgY29uc3QgY2hh
ciB0ZXJtaW5hdG9yKQoreworICAgIGludCBsZW5ndGggPSBlbmQgLSBzdHJpbmc7CisgICAgaWYg
KGxlbmd0aCA8IDEpCisgICAgICAgIHJldHVybiAwOworCisgICAgYm9vbCBkZWNpbWFsTWFya1Nl
ZW4gPSBmYWxzZTsKKyAgICBpbnQgcHJvY2Vzc2VkTGVuZ3RoID0gMDsKKworICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKHN0cmluZ1tpXSA9PSB0ZXJt
aW5hdG9yKSB7CisgICAgICAgICAgICBwcm9jZXNzZWRMZW5ndGggPSBpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoc3RyaW5nW2ldKSkg
eworICAgICAgICAgICAgaWYgKCFkZWNpbWFsTWFya1NlZW4gJiYgc3RyaW5nW2ldID09ICcuJykK
KyAgICAgICAgICAgICAgICBkZWNpbWFsTWFya1NlZW4gPSB0cnVlOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorCisgICAgaWYg
KGRlY2ltYWxNYXJrU2VlbiAmJiBwcm9jZXNzZWRMZW5ndGggPT0gMSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICByZXR1cm4gcHJvY2Vzc2VkTGVuZ3RoOworfQorCisvLyBSZXR1cm5zIHRoZSBu
dW1iZXIgb2YgY2hhcmFjdGVycyBjb25zdW1lZCBmb3IgcGFyc2luZyBhIHZhbGlkIGRvdWJsZQor
Ly8gdGVybWluYXRlZCBieSB0aGUgZ2l2ZW4gdGVybWluYXRvciBjaGFyYWN0ZXIKK3RlbXBsYXRl
IDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGludCBwYXJzZURvdWJsZShjb25zdCBD
aGFyYWN0ZXJUeXBlKiBzdHJpbmcsIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCwgY29uc3QgY2hh
ciB0ZXJtaW5hdG9yLCBkb3VibGUmIHZhbHVlKQoreworICAgIGludCBsZW5ndGggPSBjaGVja0Zv
clZhbGlkRG91YmxlKHN0cmluZywgZW5kLCB0ZXJtaW5hdG9yKTsKKyAgICBpZiAoIWxlbmd0aCkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpbnQgcG9zaXRpb24gPSAwOworICAgIGRvdWJsZSBs
b2NhbFZhbHVlID0gMDsKKworICAgIC8vIFRoZSBjb25zdW1lZCBjaGFyYWN0ZXJzIGhlcmUgYXJl
IGd1YXJhbnRlZWQgdG8gYmUKKyAgICAvLyBBU0NJSSBkaWdpdHMgd2l0aCBvciB3aXRob3V0IGEg
ZGVjaW1hbCBtYXJrCisgICAgZm9yICg7IHBvc2l0aW9uIDwgbGVuZ3RoOyArK3Bvc2l0aW9uKSB7
CisgICAgICAgIGlmIChzdHJpbmdbcG9zaXRpb25dID09ICcuJykKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBsb2NhbFZhbHVlID0gbG9jYWxWYWx1ZSAqIDEwICsgc3RyaW5nW3Bvc2l0aW9u
XSAtICcwJzsKKyAgICB9CisKKyAgICBpZiAoKytwb3NpdGlvbiA9PSBsZW5ndGgpIHsKKyAgICAg
ICAgdmFsdWUgPSBsb2NhbFZhbHVlOworICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgIH0KKwor
ICAgIGRvdWJsZSBmcmFjdGlvbiA9IDA7CisgICAgZG91YmxlIHNjYWxlID0gMTsKKworICAgIGNv
bnN0IGRvdWJsZSBtYXhTY2FsZSA9IDEwMDAwMDA7CisgICAgd2hpbGUgKHBvc2l0aW9uIDwgbGVu
Z3RoICYmIHNjYWxlIDwgbWF4U2NhbGUpIHsKKyAgICAgICAgZnJhY3Rpb24gPSBmcmFjdGlvbiAq
IDEwICsgc3RyaW5nW3Bvc2l0aW9uKytdIC0gJzAnOworICAgICAgICBzY2FsZSAqPSAxMDsKKyAg
ICB9CisKKyAgICB2YWx1ZSA9IGxvY2FsVmFsdWUgKyBmcmFjdGlvbiAvIHNjYWxlOworICAgIHJl
dHVybiBsZW5ndGg7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3Rh
dGljIGJvb2wgcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjb25zdCBDaGFyYWN0ZXJUeXBlKiYg
c3RyaW5nLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBlbmQsIGNvbnN0IGNoYXIgdGVybWluYXRvciwg
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyYgZXhwZWN0LCBpbnQmIHZhbHVlKQoreworICAg
IGNvbnN0IENoYXJhY3RlclR5cGUqIGN1cnJlbnQgPSBzdHJpbmc7CisgICAgZG91YmxlIGxvY2Fs
VmFsdWUgPSAwOworICAgIGJvb2wgbmVnYXRpdmUgPSBmYWxzZTsKKyAgICB3aGlsZSAoY3VycmVu
dCAhPSBlbmQgJiYgaXNIVE1MU3BhY2U8Q2hhcmFjdGVyVHlwZT4oKmN1cnJlbnQpKQorICAgICAg
ICBjdXJyZW50Kys7CisgICAgaWYgKGN1cnJlbnQgIT0gZW5kICYmICpjdXJyZW50ID09ICctJykg
eworICAgICAgICBuZWdhdGl2ZSA9IHRydWU7CisgICAgICAgIGN1cnJlbnQrKzsKKyAgICB9Cisg
ICAgaWYgKGN1cnJlbnQgPT0gZW5kIHx8ICFpc0FTQ0lJRGlnaXQoKmN1cnJlbnQpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgd2hpbGUgKGN1cnJlbnQgIT0gZW5kICYmIGlzQVNDSUlEaWdp
dCgqY3VycmVudCkpIHsKKyAgICAgICAgZG91YmxlIG5ld1ZhbHVlID0gbG9jYWxWYWx1ZSAqIDEw
ICsgKmN1cnJlbnQrKyAtICcwJzsKKyAgICAgICAgaWYgKG5ld1ZhbHVlID49IDI1NSkgeworICAg
ICAgICAgICAgLy8gQ2xhbXAgdmFsdWVzIGF0IDI1NS4KKyAgICAgICAgICAgIGxvY2FsVmFsdWUg
PSAyNTU7CisgICAgICAgICAgICB3aGlsZSAoY3VycmVudCAhPSBlbmQgJiYgaXNBU0NJSURpZ2l0
KCpjdXJyZW50KSkKKyAgICAgICAgICAgICAgICArK2N1cnJlbnQ7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBsb2NhbFZhbHVlID0gbmV3VmFsdWU7CisgICAgfQorCisg
ICAgaWYgKGN1cnJlbnQgPT0gZW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
ZXhwZWN0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6Ok51bWJlciAmJiAoKmN1cnJl
bnQgPT0gJy4nIHx8ICpjdXJyZW50ID09ICclJykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICgqY3VycmVudCA9PSAnLicpIHsKKyAgICAgICAgLy8gV2UgYWxyZWFkeSBwYXJzZWQg
dGhlIGludGVncmFsIHBhcnQsIHRyeSB0byBwYXJzZQorICAgICAgICAvLyB0aGUgZnJhY3Rpb24g
cGFydCBvZiB0aGUgcGVyY2VudGFnZSB2YWx1ZS4KKyAgICAgICAgZG91YmxlIHBlcmNlbnRhZ2Ug
PSAwOworICAgICAgICBpbnQgbnVtQ2hhcmFjdGVyc1BhcnNlZCA9IHBhcnNlRG91YmxlKGN1cnJl
bnQsIGVuZCwgJyUnLCBwZXJjZW50YWdlKTsKKyAgICAgICAgaWYgKCFudW1DaGFyYWN0ZXJzUGFy
c2VkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjdXJyZW50ICs9IG51bUNo
YXJhY3RlcnNQYXJzZWQ7CisgICAgICAgIGlmICgqY3VycmVudCAhPSAnJScpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGxvY2FsVmFsdWUgKz0gcGVyY2VudGFnZTsKKyAgICB9
CisKKyAgICBpZiAoZXhwZWN0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OlBlcmNl
bnRhZ2UgJiYgKmN1cnJlbnQgIT0gJyUnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoKmN1cnJlbnQgPT0gJyUnKSB7CisgICAgICAgIGV4cGVjdCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZXM6OlBlcmNlbnRhZ2U7CisgICAgICAgIGxvY2FsVmFsdWUgPSBsb2NhbFZhbHVl
IC8gMTAwLjAgKiAyNTYuMDsKKyAgICAgICAgLy8gQ2xhbXAgdmFsdWVzIGF0IDI1NSBmb3IgcGVy
Y2VudGFnZXMgb3ZlciAxMDAlCisgICAgICAgIGlmIChsb2NhbFZhbHVlID4gMjU1KQorICAgICAg
ICAgICAgbG9jYWxWYWx1ZSA9IDI1NTsKKyAgICAgICAgY3VycmVudCsrOworICAgIH0gZWxzZSB7
CisgICAgICAgIGV4cGVjdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6Ok51bWJlcjsK
KyAgICB9CisKKyAgICB3aGlsZSAoY3VycmVudCAhPSBlbmQgJiYgaXNIVE1MU3BhY2U8Q2hhcmFj
dGVyVHlwZT4oKmN1cnJlbnQpKQorICAgICAgICBjdXJyZW50Kys7CisgICAgaWYgKGN1cnJlbnQg
PT0gZW5kIHx8ICpjdXJyZW50KysgIT0gdGVybWluYXRvcikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIC8vIENsYW1wIG5lZ2F0aXZlIHZhbHVlcyBhdCB6ZXJvLgorICAgIHZhbHVlID0gbmVn
YXRpdmUgPyAwIDogc3RhdGljX2Nhc3Q8aW50Pihsb2NhbFZhbHVlKTsKKyAgICBzdHJpbmcgPSBj
dXJyZW50OworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1RlbnRoQWxwaGEoY29uc3QgQ2hhcmFjdGVy
VHlwZSogc3RyaW5nLCBjb25zdCBpbnQgbGVuZ3RoKQoreworICAgIC8vICIwLlgiCisgICAgaWYg
KGxlbmd0aCA9PSAzICYmIHN0cmluZ1swXSA9PSAnMCcgJiYgc3RyaW5nWzFdID09ICcuJyAmJiBp
c0FTQ0lJRGlnaXQoc3RyaW5nWzJdKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyAi
LlgiCisgICAgaWYgKGxlbmd0aCA9PSAyICYmIHN0cmluZ1swXSA9PSAnLicgJiYgaXNBU0NJSURp
Z2l0KHN0cmluZ1sxXSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNl
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBpbmxpbmUg
Ym9vbCBwYXJzZUFscGhhVmFsdWUoY29uc3QgQ2hhcmFjdGVyVHlwZSomIHN0cmluZywgY29uc3Qg
Q2hhcmFjdGVyVHlwZSogZW5kLCBjb25zdCBjaGFyIHRlcm1pbmF0b3IsIGludCYgdmFsdWUpCit7
CisgICAgd2hpbGUgKHN0cmluZyAhPSBlbmQgJiYgaXNIVE1MU3BhY2U8Q2hhcmFjdGVyVHlwZT4o
KnN0cmluZykpCisgICAgICAgIHN0cmluZysrOworCisgICAgYm9vbCBuZWdhdGl2ZSA9IGZhbHNl
OworCisgICAgaWYgKHN0cmluZyAhPSBlbmQgJiYgKnN0cmluZyA9PSAnLScpIHsKKyAgICAgICAg
bmVnYXRpdmUgPSB0cnVlOworICAgICAgICBzdHJpbmcrKzsKKyAgICB9CisKKyAgICB2YWx1ZSA9
IDA7CisKKyAgICBpbnQgbGVuZ3RoID0gZW5kIC0gc3RyaW5nOworICAgIGlmIChsZW5ndGggPCAy
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc3RyaW5nW2xlbmd0aCAtIDFdICE9
IHRlcm1pbmF0b3IgfHwgIWlzQVNDSUlEaWdpdChzdHJpbmdbbGVuZ3RoIC0gMl0pKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc3RyaW5nWzBdICE9ICcwJyAmJiBzdHJpbmdbMF0g
IT0gJzEnICYmIHN0cmluZ1swXSAhPSAnLicpIHsKKyAgICAgICAgaWYgKGNoZWNrRm9yVmFsaWRE
b3VibGUoc3RyaW5nLCBlbmQsIHRlcm1pbmF0b3IpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IG5l
Z2F0aXZlID8gMCA6IDI1NTsKKyAgICAgICAgICAgIHN0cmluZyA9IGVuZDsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBpZiAobGVuZ3RoID09IDIgJiYgc3RyaW5nWzBdICE9ICcuJykgeworICAgICAgICB2YWx1
ZSA9ICFuZWdhdGl2ZSAmJiBzdHJpbmdbMF0gPT0gJzEnID8gMjU1IDogMDsKKyAgICAgICAgc3Ry
aW5nID0gZW5kOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoaXNUZW50
aEFscGhhKHN0cmluZywgbGVuZ3RoIC0gMSkpIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCB0
ZW50aEFscGhhVmFsdWVzW10gPSB7IDAsIDI1LCA1MSwgNzYsIDEwMiwgMTI3LCAxNTMsIDE3OSwg
MjA0LCAyMzAgfTsKKyAgICAgICAgdmFsdWUgPSBuZWdhdGl2ZSA/IDAgOiB0ZW50aEFscGhhVmFs
dWVzW3N0cmluZ1tsZW5ndGggLSAyXSAtICcwJ107CisgICAgICAgIHN0cmluZyA9IGVuZDsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgZG91YmxlIGFscGhhID0gMDsKKyAgICBp
ZiAoIXBhcnNlRG91YmxlKHN0cmluZywgZW5kLCB0ZXJtaW5hdG9yLCBhbHBoYSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB2YWx1ZSA9IG5lZ2F0aXZlID8gMCA6IHN0YXRpY19jYXN0PGlu
dD4oYWxwaGEgKiBuZXh0YWZ0ZXIoMjU2LjAsIDAuMCkpOworICAgIHN0cmluZyA9IGVuZDsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citz
dGF0aWMgaW5saW5lIGJvb2wgbWlnaHRCZVJHQkEoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlmIChsZW5ndGggPCA1KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGNoYXJhY3RlcnNbNF0gPT0gJygnCisgICAgICAgICYm
IGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoY2hhcmFjdGVyc1swXSwgJ3InKQorICAgICAgICAm
JiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKGNoYXJhY3RlcnNbMV0sICdnJykKKyAgICAgICAg
JiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChjaGFyYWN0ZXJzWzJdLCAnYicpCisgICAgICAg
ICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoY2hhcmFjdGVyc1szXSwgJ2EnKTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgaW5saW5lIGJvb2wgbWln
aHRCZVJHQihjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgp
Cit7CisgICAgaWYgKGxlbmd0aCA8IDQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gY2hhcmFjdGVyc1szXSA9PSAnKCcKKyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NF
cXVhbChjaGFyYWN0ZXJzWzBdLCAncicpCisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNz
RXF1YWwoY2hhcmFjdGVyc1sxXSwgJ2cnKQorICAgICAgICAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVz
c0VxdWFsKGNoYXJhY3RlcnNbMl0sICdiJyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgorc3RhdGljIGJvb2wgZmFzdFBhcnNlQ29sb3JJbnRlcm5hbChSR0JBMzImIHJn
YiwgY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBib29s
IHF1aXJrc01vZGUpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyBleHBlY3Qg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpVbmtub3duOworCisgICAgaWYgKGxlbmd0
aCA+PSA0ICYmIGNoYXJhY3RlcnNbMF0gPT0gJyMnKQorICAgICAgICByZXR1cm4gQ29sb3I6OnBh
cnNlSGV4Q29sb3IoY2hhcmFjdGVycyArIDEsIGxlbmd0aCAtIDEsIHJnYik7CisKKyAgICBpZiAo
cXVpcmtzTW9kZSAmJiAobGVuZ3RoID09IDMgfHwgbGVuZ3RoID09IDYpKSB7CisgICAgICAgIGlm
IChDb2xvcjo6cGFyc2VIZXhDb2xvcihjaGFyYWN0ZXJzLCBsZW5ndGgsIHJnYikpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBUcnkgcmdiYSgpIHN5bnRheC4KKyAg
ICBpZiAobWlnaHRCZVJHQkEoY2hhcmFjdGVycywgbGVuZ3RoKSkgeworICAgICAgICBjb25zdCBD
aGFyYWN0ZXJUeXBlKiBjdXJyZW50ID0gY2hhcmFjdGVycyArIDU7CisgICAgICAgIGNvbnN0IENo
YXJhY3RlclR5cGUqIGVuZCA9IGNoYXJhY3RlcnMgKyBsZW5ndGg7CisgICAgICAgIGludCByZWQ7
CisgICAgICAgIGludCBncmVlbjsKKyAgICAgICAgaW50IGJsdWU7CisgICAgICAgIGludCBhbHBo
YTsKKworICAgICAgICBpZiAoIXBhcnNlQ29sb3JJbnRPclBlcmNlbnRhZ2UoY3VycmVudCwgZW5k
LCAnLCcsIGV4cGVjdCwgcmVkKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
aWYgKCFwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlKGN1cnJlbnQsIGVuZCwgJywnLCBleHBlY3Qs
IGdyZWVuKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFwYXJzZUNv
bG9ySW50T3JQZXJjZW50YWdlKGN1cnJlbnQsIGVuZCwgJywnLCBleHBlY3QsIGJsdWUpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIXBhcnNlQWxwaGFWYWx1ZShjdXJy
ZW50LCBlbmQsICcpJywgYWxwaGEpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpZiAoY3VycmVudCAhPSBlbmQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJnYiA9IG1ha2VSR0JBKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgLy8gVHJ5IHJnYigpIHN5bnRheC4KKyAgICBpZiAobWlnaHRC
ZVJHQihjaGFyYWN0ZXJzLCBsZW5ndGgpKSB7CisgICAgICAgIGNvbnN0IENoYXJhY3RlclR5cGUq
IGN1cnJlbnQgPSBjaGFyYWN0ZXJzICsgNDsKKyAgICAgICAgY29uc3QgQ2hhcmFjdGVyVHlwZSog
ZW5kID0gY2hhcmFjdGVycyArIGxlbmd0aDsKKyAgICAgICAgaW50IHJlZDsKKyAgICAgICAgaW50
IGdyZWVuOworICAgICAgICBpbnQgYmx1ZTsKKyAgICAgICAgaWYgKCFwYXJzZUNvbG9ySW50T3JQ
ZXJjZW50YWdlKGN1cnJlbnQsIGVuZCwgJywnLCBleHBlY3QsIHJlZCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjdXJy
ZW50LCBlbmQsICcsJywgZXhwZWN0LCBncmVlbikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIGlmICghcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjdXJyZW50LCBlbmQsICcp
JywgZXhwZWN0LCBibHVlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYg
KGN1cnJlbnQgIT0gZW5kKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZ2Ig
PSBtYWtlUkdCKHJlZCwgZ3JlZW4sIGJsdWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0NTU1ZhbHVlKiBDU1NQYXJzZXJGYXN0UGF0aHM6
OnBhcnNlQ29sb3IoY29uc3QgU3RyaW5nJiBzdHJpbmcsIENTU1BhcnNlck1vZGUgcGFyc2VyTW9k
ZSkKK3sKKyAgICBBU1NFUlQoIXN0cmluZy5pc0VtcHR5KCkpOworICAgIENTU1ZhbHVlSUQgdmFs
dWVJRCA9IGNzc1ZhbHVlS2V5d29yZElEKHN0cmluZyk7CisgICAgaWYgKFN0eWxlQ29sb3I6Omlz
Q29sb3JLZXl3b3JkKHZhbHVlSUQpKSB7CisgICAgICAgIGlmICghaXNWYWx1ZUFsbG93ZWRJbk1v
ZGUodmFsdWVJRCwgcGFyc2VyTW9kZSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKHZhbHVlSUQp
OworICAgIH0KKworICAgIFJHQkEzMiBjb2xvcjsKKyAgICBib29sIHF1aXJrc01vZGUgPSBpc1F1
aXJrc01vZGVCZWhhdmlvcihwYXJzZXJNb2RlKTsKKworICAgIC8vIEZhc3QgcGF0aCBmb3IgaGV4
IGNvbG9ycyBhbmQgcmdiKCkvcmdiYSgpIGNvbG9ycworICAgIGJvb2wgcGFyc2VSZXN1bHQ7Cisg
ICAgaWYgKHN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgcGFyc2VSZXN1bHQgPSBmYXN0UGFyc2VD
b2xvckludGVybmFsKGNvbG9yLCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgp
LCBxdWlya3NNb2RlKTsKKyAgICBlbHNlCisgICAgICAgIHBhcnNlUmVzdWx0ID0gZmFzdFBhcnNl
Q29sb3JJbnRlcm5hbChjb2xvciwgc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3Ro
KCksIHF1aXJrc01vZGUpOworICAgIGlmICghcGFyc2VSZXN1bHQpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBDU1NDb2xvclZhbHVlOjpjcmVhdGUoY29sb3IpOworfQorCiti
b29sIENTU1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJZCwgQ1NTVmFsdWVJRCB2YWx1ZUlELCBDU1NQYXJzZXJNb2Rl
IHBhcnNlck1vZGUpCit7CisgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVJbnZhbGlkIHx8ICFp
c1ZhbHVlQWxsb3dlZEluTW9kZSh2YWx1ZUlELCBwYXJzZXJNb2RlKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUFsaWdubWVudEJhc2VsaW5lOgorICAgICAgICAvLyBhdXRvIHwgYmFzZWxpbmUgfCBiZWZvcmUt
ZWRnZSB8IHRleHQtYmVmb3JlLWVkZ2UgfCBtaWRkbGUgfAorICAgICAgICAvLyBjZW50cmFsIHwg
YWZ0ZXItZWRnZSB8IHRleHQtYWZ0ZXItZWRnZSB8IGlkZW9ncmFwaGljIHwgYWxwaGFiZXRpYyB8
CisgICAgICAgIC8vIGhhbmdpbmcgfCBtYXRoZW1hdGljYWwKKyAgICAgICAgcmV0dXJuIHZhbHVl
SUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBbHBoYWJldGljIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVCYXNlbGluZQorICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZU1pZGRsZSB8fCAodmFsdWVJRCA+PSBDU1NWYWx1ZUJlZm9yZUVkZ2UgJiYgdmFsdWVJRCA8
PSBDU1NWYWx1ZU1hdGhlbWF0aWNhbCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFsbDoKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOyAvLyBPbmx5IGFjY2VwdHMgY3NzLXdpZGUga2V5d29yZHMKKyAgICBj
YXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFg6IC8vIHJlcGVhdCB8IG5vLXJlcGVhdAor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WTogLy8gcmVwZWF0IHwgbm8tcmVw
ZWF0CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlUmVwZWF0IHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVOb1JlcGVhdDsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2U6
IC8vIGNvbGxhcHNlIHwgc2VwYXJhdGUKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFs
dWVDb2xsYXBzZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2VwYXJhdGU7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlclRvcFN0eWxlOiAvLyA8Ym9yZGVyLXN0eWxlPgorICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJSaWdodFN0eWxlOiAvLyBEZWZpbmVkIGFzOiBub25lIHwgaGlkZGVuIHwgZG90
dGVkIHwgZGFzaGVkIHwKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGU6IC8v
IHNvbGlkIHwgZG91YmxlIHwgZ3Jvb3ZlIHwgcmlkZ2UgfCBpbnNldCB8IG91dHNldAorICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckFmdGVyU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9y
ZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Q29sdW1uUnVsZVN0eWxlOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA+PSBDU1NWYWx1ZU5v
bmUgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZURvdWJsZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm94
U2l6aW5nOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUJvcmRlckJveCB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlQ29udGVudEJveDsKKyAgICBjYXNlIENTU1Byb3BlcnR5QnVmZmVy
ZWRSZW5kZXJpbmc6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlRHluYW1pYyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3RhdGljOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlDYXB0aW9uU2lkZTogLy8gdG9wIHwgYm90dG9tIHwgbGVmdCB8
IHJpZ2h0CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTGVmdCB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlUmlnaHQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVRvcCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlQm90dG9tOworICAgIGNhc2UgQ1NTUHJvcGVydHlDbGVhcjogLy8gbm9uZSB8IGxl
ZnQgfCByaWdodCB8IGJvdGgKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25l
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVMZWZ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSaWdodCB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlQm90aDsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q2xpcFJ1bGU6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGxSdWxlOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9
PSBDU1NWYWx1ZU5vbnplcm8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUV2ZW5vZGQ7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29s
b3JJbnRlcnBvbGF0aW9uRmlsdGVyczoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFs
dWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTUkdCIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVM
aW5lYXJSR0I7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yUmVuZGVyaW5nOgorICAgICAgICBy
ZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU9wdGlt
aXplU3BlZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU9wdGltaXplUXVhbGl0eTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5RGlyZWN0aW9uOiAvLyBsdHIgfCBydGwKKyAgICAgICAgcmV0dXJuIHZhbHVl
SUQgPT0gQ1NTVmFsdWVMdHIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJ0bDsKKyAgICBjYXNlIENT
U1Byb3BlcnR5RGlzcGxheToKKyAgICAgICAgLy8gaW5saW5lIHwgYmxvY2sgfCBsaXN0LWl0ZW0g
fCBpbmxpbmUtYmxvY2sgfCB0YWJsZSB8CisgICAgICAgIC8vIGlubGluZS10YWJsZSB8IHRhYmxl
LXJvdy1ncm91cCB8IHRhYmxlLWhlYWRlci1ncm91cCB8IHRhYmxlLWZvb3Rlci1ncm91cCB8IHRh
YmxlLXJvdyB8CisgICAgICAgIC8vIHRhYmxlLWNvbHVtbi1ncm91cCB8IHRhYmxlLWNvbHVtbiB8
IHRhYmxlLWNlbGwgfCB0YWJsZS1jYXB0aW9uIHwgLXdlYmtpdC1ib3ggfCAtd2Via2l0LWlubGlu
ZS1ib3ggfCBub25lCisgICAgICAgIC8vIGZsZXggfCBpbmxpbmUtZmxleCB8IC13ZWJraXQtZmxl
eCB8IC13ZWJraXQtaW5saW5lLWZsZXggfCBncmlkIHwgaW5saW5lLWdyaWQKKyAgICAgICAgcmV0
dXJuICh2YWx1ZUlEID49IENTU1ZhbHVlSW5saW5lICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVJbmxp
bmVGbGV4KSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0RmxleCB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlV2Via2l0SW5saW5lRmxleCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZQorICAgICAg
ICAgICAgfHwgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkg
JiYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVHcmlkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVJbmxpbmVH
cmlkKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eURvbWluYW50QmFzZWxpbmU6CisgICAgICAgIC8v
IGF1dG8gfCB1c2Utc2NyaXB0IHwgbm8tY2hhbmdlIHwgcmVzZXQtc2l6ZSB8IGlkZW9ncmFwaGlj
IHwKKyAgICAgICAgLy8gYWxwaGFiZXRpYyB8IGhhbmdpbmcgfCBtYXRoZW1hdGljYWwgfCBjZW50
cmFsIHwgbWlkZGxlIHwKKyAgICAgICAgLy8gdGV4dC1hZnRlci1lZGdlIHwgdGV4dC1iZWZvcmUt
ZWRnZQorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUFscGhhYmV0aWMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1pZGRsZQorICAgICAg
ICAgICAgfHwgKHZhbHVlSUQgPj0gQ1NTVmFsdWVVc2VTY3JpcHQgJiYgdmFsdWVJRCA8PSBDU1NW
YWx1ZVJlc2V0U2l6ZSkKKyAgICAgICAgICAgIHx8ICh2YWx1ZUlEID49IENTU1ZhbHVlQ2VudHJh
bCAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlTWF0aGVtYXRpY2FsKTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5RW1wdHlDZWxsczogLy8gc2hvdyB8IGhpZGUKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0g
Q1NTVmFsdWVTaG93IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVIaWRlOworICAgIGNhc2UgQ1NTUHJv
cGVydHlGbG9hdDogLy8gbGVmdCB8IHJpZ2h0IHwgbm9uZQorICAgICAgICByZXR1cm4gdmFsdWVJ
RCA9PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVOb25lOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3R5bGU6IC8vIG5vcm1h
bCB8IGl0YWxpYyB8IG9ibGlxdWUKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVO
b3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUl0YWxpYyB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
T2JsaXF1ZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0cmV0Y2g6IC8vIG5vcm1hbCB8IHVs
dHJhLWNvbmRlbnNlZCB8IGV4dHJhLWNvbmRlbnNlZCB8IGNvbmRlbnNlZCB8IHNlbWktY29uZGVu
c2VkIHwgc2VtaS1leHBhbmRlZCB8IGV4cGFuZGVkIHwgZXh0cmEtZXhwYW5kZWQgfCB1bHRyYS1l
eHBhbmRlZAorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCAodmFs
dWVJRCA+PSBDU1NWYWx1ZVVsdHJhQ29uZGVuc2VkICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVVbHRy
YUV4cGFuZGVkKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5SW1hZ2VSZW5kZXJpbmc6IC8vIGF1dG8g
fCBvcHRpbWl6ZUNvbnRyYXN0IHwgcGl4ZWxhdGVkCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09
IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0T3B0aW1pemVDb250cmFz
dCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUGl4ZWxhdGVkOworICAgIGNhc2UgQ1NTUHJvcGVydHlJ
c29sYXRpb246IC8vIGF1dG8gfCBpc29sYXRlCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENT
U1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlSXNvbGF0ZTsKKyAgICBjYXNlIENTU1By
b3BlcnR5TGlzdFN0eWxlUG9zaXRpb246IC8vIGluc2lkZSB8IG91dHNpZGUKKyAgICAgICAgcmV0
dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVJbnNpZGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU91dHNp
ZGU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGU6CisgICAgICAgIC8vIFNlZSBz
ZWN0aW9uIENTU19QUk9QX0xJU1RfU1RZTEVfVFlQRSBvZiBmaWxlIENTU1ZhbHVlS2V5d29yZHMu
aW4KKyAgICAgICAgLy8gZm9yIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBsaXN0LXN0eWxlLXR5cGVz
LgorICAgICAgICByZXR1cm4gKHZhbHVlSUQgPj0gQ1NTVmFsdWVEaXNjICYmIHZhbHVlSUQgPD0g
Q1NTVmFsdWVLYXRha2FuYUlyb2hhKSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5TWFza1R5cGU6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1Zh
bHVlTHVtaW5hbmNlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBbHBoYTsKKyAgICBjYXNlIENTU1By
b3BlcnR5T2JqZWN0Rml0OgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUZpbGwg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbnRhaW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvdmVy
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTY2FsZURv
d247CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZTogLy8gKDxib3JkZXItc3R5bGU+
IGV4Y2VwdCBoaWRkZW4pIHwgYXV0bworICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1
ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgKHZhbHVlSUQgPj0gQ1NTVmFsdWVJ
bnNldCAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlRG91YmxlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
T3ZlcmZsb3dBbmNob3I6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlVmlzaWJs
ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXV0bzsK
KyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dXcmFwOiAvLyBub3JtYWwgfCBicmVhay13b3Jk
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRXcmFwOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9
PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQnJlYWtXb3JkOworICAgIGNh
c2UgQ1NTUHJvcGVydHlPdmVyZmxvd1g6IC8vIHZpc2libGUgfCBoaWRkZW4gfCBzY3JvbGwgfCBh
dXRvIHwgb3ZlcmxheQorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVZpc2libGUg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhpZGRlbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2Nyb2xs
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVPdmVybGF5
OworICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1k6IC8vIHZpc2libGUgfCBoaWRkZW4gfCBz
Y3JvbGwgfCBhdXRvIHwgb3ZlcmxheSB8IC13ZWJraXQtcGFnZWQteCB8IC13ZWJraXQtcGFnZWQt
eQorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUhpZGRlbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2Nyb2xsIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVPdmVybGF5IHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVXZWJraXRQYWdlZFggfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdlYmtpdFBhZ2Vk
WTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QnJlYWtBZnRlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5
QnJlYWtCZWZvcmU6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlQXZvaWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkUGFnZSB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlUGFnZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTGVmdCB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlUmlnaHQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJlY3RvIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVWZXJzbyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXZvaWRDb2x1bW4g
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbHVtbjsKKyAgICBjYXNlIENTU1Byb3BlcnR5QnJlYWtJ
bnNpZGU6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlQXZvaWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkUGFnZSB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlQXZvaWRDb2x1bW47CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBvaW50ZXJF
dmVudHM6CisgICAgICAgIC8vIG5vbmUgfCB2aXNpYmxlUGFpbnRlZCB8IHZpc2libGVGaWxsIHwg
dmlzaWJsZVN0cm9rZSB8IHZpc2libGUgfAorICAgICAgICAvLyBwYWludGVkIHwgZmlsbCB8IHN0
cm9rZSB8IGF1dG8gfCBhbGwgfCBib3VuZGluZy1ib3gKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQg
PT0gQ1NTVmFsdWVWaXNpYmxlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVBbGwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgKHZhbHVlSUQgPj0g
Q1NTVmFsdWVWaXNpYmxlUGFpbnRlZCAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlQm91bmRpbmdCb3gp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlQb3NpdGlvbjogLy8gc3RhdGljIHwgcmVsYXRpdmUgfCBh
YnNvbHV0ZSB8IGZpeGVkIHwgc3RpY2t5CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1Zh
bHVlU3RhdGljIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSZWxhdGl2ZSB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlQWJzb2x1dGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUZpeGVkIHx8IChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpjc3NTdGlja3lQb3NpdGlvbkVuYWJsZWQoKSAmJiB2YWx1ZUlEID09IENT
U1ZhbHVlU3RpY2t5KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5UmVzaXplOiAvLyBub25lIHwgYm90
aCB8IGhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGF1dG8KKyAgICAgICAgcmV0dXJuIHZhbHVlSUQg
PT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCb3RoIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVIb3Jpem9udGFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVWZXJ0aWNhbCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlQXV0bzsKKyAgICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xsQmVoYXZpb3I6
IC8vIGF1dG8gfCBzbW9vdGgKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OmNzc29tU21vb3RoU2Nyb2xsRW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0g
Q1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTbW9vdGg7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVNoYXBlUmVuZGVyaW5nOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1
ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU9wdGltaXplU3BlZWQgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUNyaXNwRWRnZXMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUdlb21ldHJpY1ByZWNpc2lv
bjsKKyAgICBjYXNlIENTU1Byb3BlcnR5U3BlYWs6IC8vIG5vbmUgfCBub3JtYWwgfCBzcGVsbC1v
dXQgfCBkaWdpdHMgfCBsaXRlcmFsLXB1bmN0dWF0aW9uIHwgbm8tcHVuY3R1YXRpb24KKyAgICAg
ICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVO
b3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNwZWxsT3V0IHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVEaWdpdHMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUxpdGVyYWxQdW5jdHVhdGlvbiB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlTm9QdW5jdHVhdGlvbjsKKyAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tl
TGluZWpvaW46CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTWl0ZXIgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZVJvdW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCZXZlbDsKKyAgICBj
YXNlIENTU1Byb3BlcnR5U3Ryb2tlTGluZWNhcDoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0g
Q1NTVmFsdWVCdXR0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSb3VuZCB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlU3F1YXJlOworICAgIGNhc2UgQ1NTUHJvcGVydHlUYWJsZUxheW91dDogLy8gYXV0byB8
IGZpeGVkCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlRml4ZWQ7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRBbGlnbjoKKyAgICAg
ICAgcmV0dXJuICh2YWx1ZUlEID49IENTU1ZhbHVlV2Via2l0QXV0byAmJiB2YWx1ZUlEIDw9IENT
U1ZhbHVlSW50ZXJuYWxDZW50ZXIpIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlRW5kOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0QWxpZ25MYXN0Ogor
ICAgICAgICAvLyBhdXRvIHwgc3RhcnQgfCBlbmQgfCBsZWZ0IHwgcmlnaHQgfCBjZW50ZXIgfCBq
dXN0aWZ5CisgICAgICAgIHJldHVybiAodmFsdWVJRCA+PSBDU1NWYWx1ZUxlZnQgJiYgdmFsdWVJ
RCA8PSBDU1NWYWx1ZUp1c3RpZnkpIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlRW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlUZXh0QW5jaG9yOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1
ZVN0YXJ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVNaWRkbGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUVuZDsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dENvbWJpbmVVcHJpZ2h0OgorICAgICAgICBy
ZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUFsbDsK
KyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25TdHlsZToKKyAgICAgICAgLy8gc29s
aWQgfCBkb3VibGUgfCBkb3R0ZWQgfCBkYXNoZWQgfCB3YXZ5CisgICAgICAgIEFTU0VSVChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3MzVGV4dERlY29yYXRpb25zRW5hYmxlZCgpKTsKKyAgICAg
ICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVTb2xpZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
RG91YmxlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEb3R0ZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZURhc2hlZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2F2eTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
VGV4dEp1c3RpZnk6CisgICAgICAgIC8vIGF1dG8gfCBub25lIHwgaW50ZXItd29yZCB8IGRpc3Ry
aWJ1dGUKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzczNUZXh0RW5h
YmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVJbnRlcldvcmQgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZURpc3RyaWJ1dGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8g
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPcmll
bnRhdGlvbjogLy8gbWl4ZWQgfCB1cHJpZ2h0IHwgc2lkZXdheXMgfCBzaWRld2F5cy1yaWdodAor
ICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU1peGVkIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVVcHJpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTaWRld2F5cyB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlU2lkZXdheXNSaWdodDsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dE9y
aWVudGF0aW9uOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVNpZGV3YXlzIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVTaWRld2F5c1JpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVW
ZXJ0aWNhbFJpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVVcHJpZ2h0OworICAgIGNhc2UgQ1NT
UHJvcGVydHlUZXh0T3ZlcmZsb3c6IC8vIGNsaXAgfCBlbGxpcHNpcworICAgICAgICByZXR1cm4g
dmFsdWVJRCA9PSBDU1NWYWx1ZUNsaXAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVsbGlwc2lzOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nOiAvLyBhdXRvIHwgb3B0aW1pemVTcGVl
ZCB8IG9wdGltaXplTGVnaWJpbGl0eSB8IGdlb21ldHJpY1ByZWNpc2lvbgorICAgICAgICByZXR1
cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU9wdGltaXpl
U3BlZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU9wdGltaXplTGVnaWJpbGl0eSB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlR2VvbWV0cmljUHJlY2lzaW9uOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0
VHJhbnNmb3JtOiAvLyBjYXBpdGFsaXplIHwgdXBwZXJjYXNlIHwgbG93ZXJjYXNlIHwgbm9uZQor
ICAgICAgICByZXR1cm4gKHZhbHVlSUQgPj0gQ1NTVmFsdWVDYXBpdGFsaXplICYmIHZhbHVlSUQg
PD0gQ1NTVmFsdWVMb3dlcmNhc2UpIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lOworICAgIGNh
c2UgQ1NTUHJvcGVydHlVbmljb2RlQmlkaToKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NT
VmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVtYmVkCisgICAgICAgICAgICB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlQmlkaU92ZXJyaWRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJr
aXRJc29sYXRlCisgICAgICAgICAgICB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0SXNvbGF0
ZU92ZXJyaWRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRQbGFpbnRleHQKKyAgICAgICAg
ICAgIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVJc29sYXRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVJ
c29sYXRlT3ZlcnJpZGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVBsYWludGV4dDsKKyAgICBjYXNl
IENTU1Byb3BlcnR5VmVjdG9yRWZmZWN0OgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NW
YWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vblNjYWxpbmdTdHJva2U7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVZpc2liaWxpdHk6IC8vIHZpc2libGUgfCBoaWRkZW4gfCBjb2xsYXBzZQor
ICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUhpZGRlbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ29sbGFwc2U7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEFwcFJlZ2lvbjoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPj0gQ1NT
VmFsdWVEcmFnICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVOb0RyYWc7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEFwcGVhcmFuY2U6CisgICAgICAgIHJldHVybiAodmFsdWVJRCA+PSBDU1NWYWx1
ZUNoZWNrYm94ICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVUZXh0YXJlYSkgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZU5vbmU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tmYWNlVmlzaWJpbGl0eToKKyAg
ICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVIaWRkZW47CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1peEJsZW5kTW9kZToKKyAgICAgICAg
cmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU11
bHRpcGx5IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTY3JlZW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZU92ZXJsYXkKKyAgICAgICAgICAgIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEYXJrZW4gfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZUxpZ2h0ZW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbG9yRG9kZ2Ug
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbG9yQnVybgorICAgICAgICAgICAgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUhhcmRMaWdodCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU29mdExpZ2h0IHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVEaWZmZXJlbmNlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFeGNsdXNp
b24KKyAgICAgICAgICAgIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVIdWUgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZVNhdHVyYXRpb24gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbG9yIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVMdW1pbm9zaXR5OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hBbGln
bjoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVTdHJldGNoIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRW5kIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVDZW50ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJhc2VsaW5lOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3hEZWNvcmF0aW9uQnJlYWs6CisgICAgICAgIHJldHVybiB2YWx1
ZUlEID09IENTU1ZhbHVlQ2xvbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNsaWNlOworICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb246CisgICAgICAgIHJldHVybiB2YWx1ZUlE
ID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSZXZlcnNlOworICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lczoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0g
Q1NTVmFsdWVTaW5nbGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU11bHRpcGxlOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQ6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENT
U1ZhbHVlSG9yaXpvbnRhbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVmVydGljYWwgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUlubGluZUF4aXMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJsb2NrQXhpczsK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UGFjazoKKyAgICAgICAgcmV0dXJuIHZhbHVl
SUQgPT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRW5kIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVDZW50ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUp1c3RpZnk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUNvbHVtbkZpbGw6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1Zh
bHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQmFsYW5jZTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5QWxpZ25Db250ZW50OgorICAgICAgICAvLyBGSVhNRTogUGVyIENTUyBhbGlnbm1lbnQsIHRo
aXMgcHJvcGVydHkgc2hvdWxkIGFjY2VwdCBhbiBvcHRpb25hbCA8b3ZlcmZsb3ctcG9zaXRpb24+
LiBXZSBzaG91bGQgc2hhcmUgdGhpcyBwYXJzaW5nIGNvZGUgd2l0aCAnanVzdGlmeS1zZWxmJy4K
KyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVGbGV4U3RhcnQgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUZsZXhFbmQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNlbnRlciB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlU3BhY2VCZXR3ZWVuIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTcGFjZUFyb3Vu
ZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3RyZXRjaDsKKyAgICBjYXNlIENTU1Byb3BlcnR5QWxp
Z25JdGVtczoKKyAgICAgICAgLy8gRklYTUU6IFBlciBDU1MgYWxpZ25tZW50LCB0aGlzIHByb3Bl
cnR5IHNob3VsZCBhY2NlcHQgdGhlIHNhbWUgYXJndW1lbnRzIGFzICdqdXN0aWZ5LXNlbGYnIHNv
IHdlIHNob3VsZCBzaGFyZSBpdHMgcGFyc2luZyBjb2RlLgorICAgICAgICByZXR1cm4gdmFsdWVJ
RCA9PSBDU1NWYWx1ZUZsZXhTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRmxleEVuZCB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlQ2VudGVyIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCYXNlbGluZSB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlU3RyZXRjaDsKKyAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25T
ZWxmOgorICAgICAgICAvLyBGSVhNRTogUGVyIENTUyBhbGlnbm1lbnQsIHRoaXMgcHJvcGVydHkg
c2hvdWxkIGFjY2VwdCB0aGUgc2FtZSBhcmd1bWVudHMgYXMgJ2p1c3RpZnktc2VsZicgc28gd2Ug
c2hvdWxkIHNoYXJlIGl0cyBwYXJzaW5nIGNvZGUuCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09
IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRmxleFN0YXJ0IHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVGbGV4RW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUJhc2VsaW5lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdHJldGNoOworICAg
IGNhc2UgQ1NTUHJvcGVydHlGbGV4RGlyZWN0aW9uOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9
PSBDU1NWYWx1ZVJvdyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUm93UmV2ZXJzZSB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlQ29sdW1uIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2x1bW5SZXZlcnNlOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlGbGV4V3JhcDoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0g
Q1NTVmFsdWVOb3dyYXAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdyYXAgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZVdyYXBSZXZlcnNlOworICAgIGNhc2UgQ1NTUHJvcGVydHlIeXBoZW5zOgorICAgICAg
ICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5v
bmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1hbnVhbDsKKyAgICBjYXNlIENTU1Byb3BlcnR5SnVz
dGlmeUNvbnRlbnQ6CisgICAgICAgIC8vIEZJWE1FOiBQZXIgQ1NTIGFsaWdubWVudCwgdGhpcyBw
cm9wZXJ0eSBzaG91bGQgYWNjZXB0IGFuIG9wdGlvbmFsIDxvdmVyZmxvdy1wb3NpdGlvbj4uIFdl
IHNob3VsZCBzaGFyZSB0aGlzIHBhcnNpbmcgY29kZSB3aXRoICdqdXN0aWZ5LXNlbGYnLgorICAg
ICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUZsZXhTdGFydCB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlRmxleEVuZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ2VudGVyIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVTcGFjZUJldHdlZW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNwYWNlQXJvdW5kOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlGb250S2VybmluZzoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQg
PT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZU5vbmU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmc6
CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQW50aWFsaWFzZWQgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZVN1YnBpeGVsQW50aWFsaWFzZWQ7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dExpbmVCcmVhazogLy8gYXV0byB8IGxvb3NlIHwgbm9ybWFsIHwgc3RyaWN0IHwgYWZ0ZXItd2hp
dGUtc3BhY2UKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVMb29zZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVTdHJpY3QgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUFmdGVyV2hpdGVTcGFj
ZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5Ub3BDb2xsYXBzZToKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFs
dWVDb2xsYXBzZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2VwYXJhdGUgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZURpc2NhcmQ7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFByaW50Q29sb3JBZGp1
c3Q6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlRXhhY3QgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUVjb25vbXk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5n
OgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUxvZ2ljYWwgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZVZpc3VhbDsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9u
OgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUJlZm9yZSB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlQWZ0ZXI7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lOgor
ICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZUhvcml6b250YWw7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bv
c2l0aW9uOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU92ZXIgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZVVuZGVyOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJp
dHk6IC8vIGRpc2MgfCBjaXJjbGUgfCBzcXVhcmUgfCBub25lCisgICAgICAgIHJldHVybiB2YWx1
ZUlEID09IENTU1ZhbHVlRGlzYyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ2lyY2xlIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVTcXVhcmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmU7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVRyYW5zZm9ybVN0eWxlOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBD
U1NWYWx1ZUZsYXQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVByZXNlcnZlM2Q7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnOiAvLyBhdXRvIHwgbm9uZSB8IGVsZW1lbnQKKyAgICAg
ICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVO
b25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFbGVtZW50OworICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRVc2VyTW9kaWZ5OiAvLyByZWFkLW9ubHkgfCByZWFkLXdyaXRlCisgICAgICAgIHJldHVy
biB2YWx1ZUlEID09IENTU1ZhbHVlUmVhZE9ubHkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJlYWRX
cml0ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmVhZFdyaXRlUGxhaW50ZXh0T25seTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5VXNlclNlbGVjdDogLy8gYXV0byB8IG5vbmUgfCB0ZXh0IHwgYWxsCisg
ICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVGV4dCB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
QWxsOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9kZToKKyAgICAgICAgcmV0
dXJuIHZhbHVlSUQgPj0gQ1NTVmFsdWVIb3Jpem9udGFsVGIgJiYgdmFsdWVJRCA8PSBDU1NWYWx1
ZVZlcnRpY2FsTHI7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdyaXRpbmdNb2RlOgorICAgICAgICBy
ZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUhvcml6b250YWxUYgorICAgICAgICAgICAgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZVZlcnRpY2FsUmwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVZlcnRpY2Fs
THIKKyAgICAgICAgICAgIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVMclRiIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVSbFRiIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVUYlJsCisgICAgICAgICAgICB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlTHIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJsIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVUYjsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2hpdGVTcGFjZTogLy8gbm9ybWFs
IHwgcHJlIHwgbm93cmFwCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFs
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVQcmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVByZVdyYXAg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVByZUxpbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vd3Jh
cDsKKyAgICBjYXNlIENTU1Byb3BlcnR5V29yZEJyZWFrOiAvLyBub3JtYWwgfCBicmVhay1hbGwg
fCBrZWVwLWFsbCB8IGJyZWFrLXdvcmQgKHRoaXMgaXMgYSBjdXN0b20gZXh0ZW5zaW9uKQorICAg
ICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlQnJlYWtBbGwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUtlZXBBbGwgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUJyZWFrV29yZDsKKyAgICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xsU25hcFR5cGU6IC8v
IG5vbmUgfCBtYW5kYXRvcnkgfCBwcm94aW1pdHkKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmNzc1Njcm9sbFNuYXBQb2ludHNFbmFibGVkKCkpOworICAgICAgICByZXR1
cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1hbmRhdG9y
eSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUHJveGltaXR5OworICAgIGRlZmF1bHQ6CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQor
Citib29sIENTU1BhcnNlckZhc3RQYXRoczo6aXNLZXl3b3JkUHJvcGVydHlJRChDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SWQpCit7CisgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUFsaWdubWVudEJhc2VsaW5lOgorICAgIGNhc2UgQ1NTUHJvcGVydHlBbGw6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eU1peEJsZW5kTW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5SXNv
bGF0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
ckJvdHRvbVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJSaWdodFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5Qm94U2l6aW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCdWZmZXJlZFJl
bmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q2FwdGlvblNpZGU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUNsZWFyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDbGlwUnVsZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5Q29sb3JJbnRlcnBvbGF0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvcklu
dGVycG9sYXRpb25GaWx0ZXJzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvclJlbmRlcmluZzoK
KyAgICBjYXNlIENTU1Byb3BlcnR5RGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlEaXNw
bGF5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlEb21pbmFudEJhc2VsaW5lOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlFbXB0eUNlbGxzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlGaWxsUnVsZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5RmxvYXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHlsZToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0cmV0Y2g6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUh5cGhl
bnM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUltYWdlUmVuZGVyaW5nOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlMaXN0U3R5bGVQb3NpdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlw
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFza1R5cGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9i
amVjdEZpdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlPdmVyZmxvd0FuY2hvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dXcmFw
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1g6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92
ZXJmbG93WToKKyAgICBjYXNlIENTU1Byb3BlcnR5QnJlYWtBZnRlcjoKKyAgICBjYXNlIENTU1By
b3BlcnR5QnJlYWtCZWZvcmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJyZWFrSW5zaWRlOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQb3Np
dGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5UmVzaXplOgorICAgIGNhc2UgQ1NTUHJvcGVydHlT
Y3JvbGxCZWhhdmlvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5U2hhcGVSZW5kZXJpbmc6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVNwZWFrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2VMaW5lY2Fw
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2VMaW5lam9pbjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5VGFibGVMYXlvdXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRBbGlnbjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5VGV4dEFsaWduTGFzdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEFuY2hv
cjoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dENvbWJpbmVVcHJpZ2h0OgorICAgIGNhc2UgQ1NT
UHJvcGVydHlUZXh0RGVjb3JhdGlvblN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0SnVz
dGlmeToKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE9yaWVudGF0aW9uOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRUZXh0T3JpZW50YXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRP
dmVyZmxvdzoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZzoKKyAgICBjYXNlIENT
U1Byb3BlcnR5VGV4dFRyYW5zZm9ybToKKyAgICBjYXNlIENTU1Byb3BlcnR5VW5pY29kZUJpZGk6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVZlY3RvckVmZmVjdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
VmlzaWJpbGl0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXBwUmVnaW9uOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNr
ZmFjZVZpc2liaWxpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5
bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyU3RhcnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94QWxp
Z246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveERlY29yYXRpb25CcmVhazoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCb3hMaW5lczoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94T3JpZW50OgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDb2x1
bW5GaWxsOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDb2x1bW5SdWxlU3R5bGU6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUZsZXhEaXJlY3Rpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsZXhXcmFwOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlGb250S2VybmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Rm9udFNtb290aGluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hcmdpblRvcENvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQcmludENvbG9y
QWRqdXN0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmluZzoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0Q29tYmluZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzUG9z
aXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0eToKKyAgICBjYXNl
IENTU1Byb3BlcnR5VHJhbnNmb3JtU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVz
ZXJEcmFnOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlVc2VyU2VsZWN0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcml0aW5n
TW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2hpdGVTcGFjZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V29yZEJyZWFrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkV3JhcDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V3JpdGluZ01vZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNjcm9sbFNuYXBUeXBl
OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5SnVzdGlmeUNvbnRl
bnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFsaWduQ29udGVudDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5QWxpZ25JdGVtczoKKyAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25TZWxmOgorICAgICAgICBy
ZXR1cm4gIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCk7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworc3RhdGljIENT
U1ZhbHVlKiBwYXJzZUtleXdvcmRWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQsIGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJzZXJNb2RlIHBhcnNlck1vZGUpCit7CisgICAgQVNTRVJU
KCFzdHJpbmcuaXNFbXB0eSgpKTsKKworICAgIGlmICghQ1NTUGFyc2VyRmFzdFBhdGhzOjppc0tl
eXdvcmRQcm9wZXJ0eUlEKHByb3BlcnR5SWQpKSB7CisgICAgICAgIC8vIEFsbCBwcm9wZXJ0aWVz
IGFjY2VwdCB0aGUgdmFsdWVzIG9mICJpbml0aWFsIiBhbmQgImluaGVyaXQiLgorICAgICAgICBp
ZiAoIWVxdWFsSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAiaW5pdGlhbCIpICYmICFlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKHN0cmluZywgImluaGVyaXQiKSkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgICAgIC8vIFBhcnNlIGluaXRpYWwvaW5oZXJpdCBzaG9ydGhhbmRzIHVz
aW5nIHRoZSBDU1NQcm9wZXJ0eVBhcnNlci4KKyAgICAgICAgaWYgKHNob3J0aGFuZEZvclByb3Bl
cnR5KHByb3BlcnR5SWQpLmxlbmd0aCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICAgICAgLy8gRGVzY3JpcHRvcnMgZG8gbm90IHN1cHBvcnQgY3NzIHdpZGUga2V5d29yZHMu
CisgICAgICAgIGlmIChDU1NQcm9wZXJ0eU1ldGFkYXRhOjppc0Rlc2NyaXB0b3JPbmx5KHByb3Bl
cnR5SWQpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgQ1NTVmFs
dWVJRCB2YWx1ZUlEID0gY3NzVmFsdWVLZXl3b3JkSUQoc3RyaW5nKTsKKworICAgIGlmICghdmFs
dWVJRCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAodmFsdWVJRCA9PSBDU1NW
YWx1ZUluaGVyaXQpCisgICAgICAgIHJldHVybiBDU1NJbmhlcml0ZWRWYWx1ZTo6Y3JlYXRlKCk7
CisgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVJbml0aWFsKQorICAgICAgICByZXR1cm4gQ1NT
SW5pdGlhbFZhbHVlOjpjcmVhdGUoKTsKKyAgICBpZiAoQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1Zh
bGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUocHJvcGVydHlJZCwgdmFsdWVJRCwgcGFyc2VyTW9k
ZSkpCisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcih2
YWx1ZUlEKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENo
YXJUeXBlPgorc3RhdGljIGJvb2wgcGFyc2VUcmFuc2Zvcm1UcmFuc2xhdGVBcmd1bWVudHMoQ2hh
clR5cGUqJiBwb3MsIENoYXJUeXBlKiBlbmQsIHVuc2lnbmVkIGV4cGVjdGVkQ291bnQsIENTU0Z1
bmN0aW9uVmFsdWUqIHRyYW5zZm9ybVZhbHVlKQoreworICAgIHdoaWxlIChleHBlY3RlZENvdW50
KSB7CisgICAgICAgIHNpemVfdCBkZWxpbWl0ZXIgPSBXVEY6OmZpbmQocG9zLCBlbmQgLSBwb3Ms
IGV4cGVjdGVkQ291bnQgPT0gMSA/ICcpJyA6ICcsJyk7CisgICAgICAgIGlmIChkZWxpbWl0ZXIg
PT0ga05vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB1bnNpZ25l
ZCBhcmd1bWVudExlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZWxpbWl0ZXIpOworICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHVuaXQgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzOjpOdW1iZXI7CisgICAgICAgIGRvdWJsZSBudW1iZXI7CisgICAgICAgIGlm
ICghcGFyc2VTaW1wbGVMZW5ndGgocG9zLCBhcmd1bWVudExlbmd0aCwgdW5pdCwgbnVtYmVyKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHVuaXQgIT0gQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlczo6UGl4ZWxzICYmIChudW1iZXIgfHwgdW5pdCAhPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpOdW1iZXIpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKCpDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKG51bWJlciwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6UGl4ZWxzKSk7CisgICAg
ICAgIHBvcyArPSBhcmd1bWVudExlbmd0aCArIDE7CisgICAgICAgIC0tZXhwZWN0ZWRDb3VudDsK
KyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlw
ZT4KK3N0YXRpYyBib29sIHBhcnNlVHJhbnNmb3JtTnVtYmVyQXJndW1lbnRzKENoYXJUeXBlKiYg
cG9zLCBDaGFyVHlwZSogZW5kLCB1bnNpZ25lZCBleHBlY3RlZENvdW50LCBDU1NGdW5jdGlvblZh
bHVlKiB0cmFuc2Zvcm1WYWx1ZSkKK3sKKyAgICB3aGlsZSAoZXhwZWN0ZWRDb3VudCkgeworICAg
ICAgICBzaXplX3QgZGVsaW1pdGVyID0gV1RGOjpmaW5kKHBvcywgZW5kIC0gcG9zLCBleHBlY3Rl
ZENvdW50ID09IDEgPyAnKScgOiAnLCcpOworICAgICAgICBpZiAoZGVsaW1pdGVyID09IGtOb3RG
b3VuZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgdW5zaWduZWQgYXJndW1l
bnRMZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVsaW1pdGVyKTsKKyAgICAgICAgYm9v
bCBvazsKKyAgICAgICAgZG91YmxlIG51bWJlciA9IGNoYXJhY3RlcnNUb0RvdWJsZShwb3MsIGFy
Z3VtZW50TGVuZ3RoLCAmb2spOworICAgICAgICBpZiAoIW9rKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKCpDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKG51bWJlciwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6TnVtYmVyKSk7
CisgICAgICAgIHBvcyArPSBhcmd1bWVudExlbmd0aCArIDE7CisgICAgICAgIC0tZXhwZWN0ZWRD
b3VudDsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBjb25zdCBpbnQga1No
b3J0ZXN0VmFsaWRUcmFuc2Zvcm1TdHJpbmdMZW5ndGggPSAxMjsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJUeXBlPgorc3RhdGljIENTU0Z1bmN0aW9uVmFsdWUqIHBhcnNlU2ltcGxlVHJhbnNm
b3JtVmFsdWUoQ2hhclR5cGUqJiBwb3MsIENoYXJUeXBlKiBlbmQpCit7CisgICAgaWYgKGVuZCAt
IHBvcyA8IGtTaG9ydGVzdFZhbGlkVHJhbnNmb3JtU3RyaW5nTGVuZ3RoKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIGNvbnN0IGJvb2wgaXNUcmFuc2xhdGUgPSB0b0FTQ0lJTG93ZXIo
cG9zWzBdKSA9PSAndCcKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1sxXSkgPT0gJ3InCisg
ICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3NbMl0pID09ICdhJworICAgICAgICAmJiB0b0FTQ0lJ
TG93ZXIocG9zWzNdKSA9PSAnbicKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1s0XSkgPT0g
J3MnCisgICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3NbNV0pID09ICdsJworICAgICAgICAmJiB0
b0FTQ0lJTG93ZXIocG9zWzZdKSA9PSAnYScKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1s3
XSkgPT0gJ3QnCisgICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3NbOF0pID09ICdlJzsKKworICAg
IGlmIChpc1RyYW5zbGF0ZSkgeworICAgICAgICBDU1NWYWx1ZUlEIHRyYW5zZm9ybVR5cGU7Cisg
ICAgICAgIHVuc2lnbmVkIGV4cGVjdGVkQXJndW1lbnRDb3VudCA9IDE7CisgICAgICAgIHVuc2ln
bmVkIGFyZ3VtZW50U3RhcnQgPSAxMTsKKyAgICAgICAgQ2hhclR5cGUgYzkgPSB0b0FTQ0lJTG93
ZXIocG9zWzldKTsKKyAgICAgICAgaWYgKGM5ID09ICd4JyAmJiBwb3NbMTBdID09ICcoJykgewor
ICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSA9IENTU1ZhbHVlVHJhbnNsYXRlWDsKKyAgICAgICAg
fSBlbHNlIGlmIChjOSA9PSAneScgJiYgcG9zWzEwXSA9PSAnKCcpIHsKKyAgICAgICAgICAgIHRy
YW5zZm9ybVR5cGUgPSBDU1NWYWx1ZVRyYW5zbGF0ZVk7CisgICAgICAgIH0gZWxzZSBpZiAoYzkg
PT0gJ3onICYmIHBvc1sxMF0gPT0gJygnKSB7CisgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlID0g
Q1NTVmFsdWVUcmFuc2xhdGVaOworICAgICAgICB9IGVsc2UgaWYgKGM5ID09ICcoJykgeworICAg
ICAgICAgICAgdHJhbnNmb3JtVHlwZSA9IENTU1ZhbHVlVHJhbnNsYXRlOworICAgICAgICAgICAg
ZXhwZWN0ZWRBcmd1bWVudENvdW50ID0gMjsKKyAgICAgICAgICAgIGFyZ3VtZW50U3RhcnQgPSAx
MDsKKyAgICAgICAgfSBlbHNlIGlmIChjOSA9PSAnMycgJiYgdG9BU0NJSUxvd2VyKHBvc1sxMF0p
ID09ICdkJyAmJiBwb3NbMTFdID09ICcoJykgeworICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSA9
IENTU1ZhbHVlVHJhbnNsYXRlM2Q7CisgICAgICAgICAgICBleHBlY3RlZEFyZ3VtZW50Q291bnQg
PSAzOworICAgICAgICAgICAgYXJndW1lbnRTdGFydCA9IDEyOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgcG9zICs9IGFy
Z3VtZW50U3RhcnQ7CisgICAgICAgIENTU0Z1bmN0aW9uVmFsdWUqIHRyYW5zZm9ybVZhbHVlID0g
Q1NTRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKHRyYW5zZm9ybVR5cGUpOworICAgICAgICBpZiAoIXBh
cnNlVHJhbnNmb3JtVHJhbnNsYXRlQXJndW1lbnRzKHBvcywgZW5kLCBleHBlY3RlZEFyZ3VtZW50
Q291bnQsIHRyYW5zZm9ybVZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICByZXR1cm4gdHJhbnNmb3JtVmFsdWU7CisgICAgfQorCisgICAgY29uc3QgYm9vbCBpc01h
dHJpeDNkID0gdG9BU0NJSUxvd2VyKHBvc1swXSkgPT0gJ20nCisgICAgICAgICYmIHRvQVNDSUlM
b3dlcihwb3NbMV0pID09ICdhJworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzJdKSA9PSAn
dCcKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1szXSkgPT0gJ3InCisgICAgICAgICYmIHRv
QVNDSUlMb3dlcihwb3NbNF0pID09ICdpJworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzVd
KSA9PSAneCcKKyAgICAgICAgJiYgcG9zWzZdID09ICczJworICAgICAgICAmJiB0b0FTQ0lJTG93
ZXIocG9zWzddKSA9PSAnZCcKKyAgICAgICAgJiYgcG9zWzhdID09ICcoJzsKKworICAgIGlmIChp
c01hdHJpeDNkKSB7CisgICAgICAgIHBvcyArPSA5OworICAgICAgICBDU1NGdW5jdGlvblZhbHVl
KiB0cmFuc2Zvcm1WYWx1ZSA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShDU1NWYWx1ZU1hdHJp
eDNkKTsKKyAgICAgICAgaWYgKCFwYXJzZVRyYW5zZm9ybU51bWJlckFyZ3VtZW50cyhwb3MsIGVu
ZCwgMTYsIHRyYW5zZm9ybVZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICByZXR1cm4gdHJhbnNmb3JtVmFsdWU7CisgICAgfQorCisgICAgY29uc3QgYm9vbCBpc1Nj
YWxlM2QgPSB0b0FTQ0lJTG93ZXIocG9zWzBdKSA9PSAncycKKyAgICAgICAgJiYgdG9BU0NJSUxv
d2VyKHBvc1sxXSkgPT0gJ2MnCisgICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3NbMl0pID09ICdh
JworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzNdKSA9PSAnbCcKKyAgICAgICAgJiYgdG9B
U0NJSUxvd2VyKHBvc1s0XSkgPT0gJ2UnCisgICAgICAgICYmIHBvc1s1XSA9PSAnMycKKyAgICAg
ICAgJiYgdG9BU0NJSUxvd2VyKHBvc1s2XSkgPT0gJ2QnCisgICAgICAgICYmIHBvc1s3XSA9PSAn
KCc7CisKKyAgICBpZiAoaXNTY2FsZTNkKSB7CisgICAgICAgIHBvcyArPSA4OworICAgICAgICBD
U1NGdW5jdGlvblZhbHVlKiB0cmFuc2Zvcm1WYWx1ZSA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0
ZShDU1NWYWx1ZVNjYWxlM2QpOworICAgICAgICBpZiAoIXBhcnNlVHJhbnNmb3JtTnVtYmVyQXJn
dW1lbnRzKHBvcywgZW5kLCAzLCB0cmFuc2Zvcm1WYWx1ZSkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHRyYW5zZm9ybVZhbHVlOworICAgIH0KKworICAgIHJl
dHVybiBudWxscHRyOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CitzdGF0aWMg
Ym9vbCB0cmFuc2Zvcm1DYW5MaWtlbHlVc2VGYXN0UGF0aChjb25zdCBDaGFyVHlwZSogY2hhcnMs
IHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICAvLyBWZXJ5IGZhc3Qgc2NhbiB0aGF0IGF0dGVtcHRz
IHRvIHJlamVjdCBtb3N0IHRyYW5zZm9ybXMgdGhhdCBjb3VsZG4ndAorICAgIC8vIHRha2UgdGhl
IGZhc3QgcGF0aC4gVGhpcyBhdm9pZHMgZG9pbmcgdGhlIG1hbGxvYyBhbmQgc3RyaW5nLT5kb3Vi
bGUKKyAgICAvLyBjb252ZXJzaW9ucyBpbiBwYXJzZVNpbXBsZVRyYW5zZm9ybVZhbHVlIG9ubHkg
dG8gZGlzY2FyZCB0aGVtIHdoZW4gd2UKKyAgICAvLyBydW4gaW50byBhIHRyYW5zZm9ybSBjb21w
b25lbnQgd2UgZG9uJ3QgdW5kZXJzdGFuZC4KKyAgICB1bnNpZ25lZCBpID0gMDsKKyAgICB3aGls
ZSAoaSA8IGxlbmd0aCkgeworICAgICAgICBpZiAoaXNDU1NTcGFjZShjaGFyc1tpXSkpIHsKKyAg
ICAgICAgICAgICsraTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAg
IGlmIChsZW5ndGggLSBpIDwga1Nob3J0ZXN0VmFsaWRUcmFuc2Zvcm1TdHJpbmdMZW5ndGgpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGNo
YXJzW2ldKSkgeworICAgICAgICBjYXNlICd0JzoKKyAgICAgICAgICAgIC8vIHRyYW5zbGF0ZSwg
dHJhbnNsYXRlWCwgdHJhbnNsYXRlWSwgdHJhbnNsYXRlWiwgdHJhbnNsYXRlM2QuCisgICAgICAg
ICAgICBpZiAodG9BU0NJSUxvd2VyKGNoYXJzW2kgKyA4XSkgIT0gJ2UnKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGkgKz0gOTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlICdtJzoKKyAgICAgICAgICAgIC8vIG1hdHJpeDNkLgorICAgICAgICAg
ICAgaWYgKHRvQVNDSUlMb3dlcihjaGFyc1tpICsgN10pICE9ICdkJykKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpICs9IDg7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSAncyc6CisgICAgICAgICAgICAvLyBzY2FsZTNkLgorICAgICAgICAgICAg
aWYgKHRvQVNDSUlMb3dlcihjaGFyc1tpICsgNl0pICE9ICdkJykKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpICs9IDc7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vIEFsbCBvdGhlciB0aGluZ3MsIGV4LiByb3Rh
dGUuCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgc2l6ZV90
IGFyZ3VtZW50c0VuZCA9IFdURjo6ZmluZChjaGFycywgbGVuZ3RoLCAnKScsIGkpOworICAgICAg
ICBpZiAoYXJndW1lbnRzRW5kID09IGtOb3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgLy8gQWR2YW5jZSB0byB0aGUgZW5kIG9mIHRoZSBhcmd1bWVudHMuCisgICAg
ICAgIGkgPSBhcmd1bWVudHNFbmQgKyAxOworICAgIH0KKyAgICByZXR1cm4gaSA9PSBsZW5ndGg7
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KK3N0YXRpYyBDU1NWYWx1ZUxpc3Qq
IHBhcnNlU2ltcGxlVHJhbnNmb3JtTGlzdChjb25zdCBDaGFyVHlwZSogY2hhcnMsIHVuc2lnbmVk
IGxlbmd0aCkKK3sKKyAgICBpZiAoIXRyYW5zZm9ybUNhbkxpa2VseVVzZUZhc3RQYXRoKGNoYXJz
LCBsZW5ndGgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBjb25zdCBDaGFyVHlwZSom
IHBvcyA9IGNoYXJzOworICAgIGNvbnN0IENoYXJUeXBlKiBlbmQgPSBjaGFycyArIGxlbmd0aDsK
KyAgICBDU1NWYWx1ZUxpc3QqIHRyYW5zZm9ybUxpc3QgPSBudWxscHRyOworICAgIHdoaWxlIChw
b3MgPCBlbmQpIHsKKyAgICAgICAgd2hpbGUgKHBvcyA8IGVuZCAmJiBpc0NTU1NwYWNlKCpwb3Mp
KQorICAgICAgICAgICAgKytwb3M7CisgICAgICAgIGlmIChwb3MgPj0gZW5kKQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIENTU0Z1bmN0aW9uVmFsdWUqIHRyYW5zZm9ybVZhbHVlID0gcGFy
c2VTaW1wbGVUcmFuc2Zvcm1WYWx1ZShwb3MsIGVuZCk7CisgICAgICAgIGlmICghdHJhbnNmb3Jt
VmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKCF0cmFuc2Zv
cm1MaXN0KQorICAgICAgICAgICAgdHJhbnNmb3JtTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
U3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgdHJhbnNmb3JtTGlzdC0+YXBwZW5kKCp0cmFuc2Zv
cm1WYWx1ZSk7CisgICAgfQorICAgIHJldHVybiB0cmFuc2Zvcm1MaXN0OworfQorCitzdGF0aWMg
Q1NTVmFsdWUqIHBhcnNlU2ltcGxlVHJhbnNmb3JtKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwg
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgQVNTRVJUKCFzdHJpbmcuaXNFbXB0eSgpKTsK
KworICAgIGlmIChwcm9wZXJ0eUlEICE9IENTU1Byb3BlcnR5VHJhbnNmb3JtKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4g
cGFyc2VTaW1wbGVUcmFuc2Zvcm1MaXN0KHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVu
Z3RoKCkpOworICAgIHJldHVybiBwYXJzZVNpbXBsZVRyYW5zZm9ybUxpc3Qoc3RyaW5nLmNoYXJh
Y3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCkpOworfQorCitDU1NWYWx1ZSogQ1NTUGFyc2VyRmFz
dFBhdGhzOjptYXliZVBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBT
dHJpbmcmIHN0cmluZywgQ1NTUGFyc2VyTW9kZSBwYXJzZXJNb2RlKQoreworICAgIGlmIChDU1NW
YWx1ZSogbGVuZ3RoID0gcGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShwcm9wZXJ0eUlELCBzdHJpbmcs
IHBhcnNlck1vZGUpKQorICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgIGlmIChpc0NvbG9yUHJv
cGVydHlJRChwcm9wZXJ0eUlEKSkKKyAgICAgICAgcmV0dXJuIHBhcnNlQ29sb3Ioc3RyaW5nLCBw
YXJzZXJNb2RlKTsKKyAgICBpZiAoQ1NTVmFsdWUqIGtleXdvcmQgPSBwYXJzZUtleXdvcmRWYWx1
ZShwcm9wZXJ0eUlELCBzdHJpbmcsIHBhcnNlck1vZGUpKQorICAgICAgICByZXR1cm4ga2V5d29y
ZDsKKyAgICBpZiAoQ1NTVmFsdWUqIHRyYW5zZm9ybSA9IHBhcnNlU2ltcGxlVHJhbnNmb3JtKHBy
b3BlcnR5SUQsIHN0cmluZykpCisgICAgICAgIHJldHVybiB0cmFuc2Zvcm07CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKKyAgICAgKi8KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBD
aHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8v
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisv
LyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZuZGVmIENTU1BhcnNlckZhc3RQYXRoc19oCisj
ZGVmaW5lIENTU1BhcnNlckZhc3RQYXRoc19oCisKKyNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgi
CisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29y
ZHMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBDU1NWYWx1ZTsKKworY2xhc3MgQ1NTUGFyc2VyRmFzdFBhdGhzIHsKK3B1
YmxpYzoKKyAgICAvLyBQYXJzZXMgc2ltcGxlIHZhbHVlcyBsaWtlICcxMHB4JyBvciAnZ3JlZW4n
LCBidXQgbWFrZXMgbm8gZ3VhcmFudGVlcworICAgIC8vIGFib3V0IGhhbmRsaW5nIGFueSBwcm9w
ZXJ0eSBjb21wbGV0ZWx5LgorICAgIHN0YXRpYyBDU1NWYWx1ZSogbWF5YmVQYXJzZVZhbHVlKENT
U1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYsIENTU1BhcnNlck1vZGUpOworCisgICAgLy8gUHJv
cGVydGllcyBoYW5kbGVkIGhlcmUgc2hvdWxkbid0IGJlIGV4cGxpY2l0bHkgaGFuZGxlZCBpbiBD
U1NQcm9wZXJ0eVBhcnNlcgorICAgIHN0YXRpYyBib29sIGlzS2V5d29yZFByb3BlcnR5SUQoQ1NT
UHJvcGVydHlJRCk7CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZh
bHVlKENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlSUQsIENTU1BhcnNlck1vZGUpOworCisgICAgc3Rh
dGljIENTU1ZhbHVlKiBwYXJzZUNvbG9yKGNvbnN0IFN0cmluZyYsIENTU1BhcnNlck1vZGUpOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ1NTUGFyc2VyRmFzdFBh
dGhzX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklk
aW9tcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENTU1BhcnNlcklk
aW9tc19oCisjZGVmaW5lIENTU1BhcnNlcklkaW9tc19oCisKKyNpbmNsdWRlIDx3dGYvQVNDSUlD
VHlwZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFNwYWNlIGNoYXJhY3RlcnMgYXMg
ZGVmaW5lZCBieSB0aGUgQ1NTIHNwZWNpZmljYXRpb24uCisvLyBodHRwOi8vd3d3LnczLm9yZy9U
Ui9jc3MzLXN5bnRheC8jd2hpdGVzcGFjZQoraW5saW5lIGJvb2wgaXNDU1NTcGFjZShVQ2hhciBj
KQoreworICAgIHJldHVybiBjID09ICcgJyB8fCBjID09ICdcdCcgfHwgYyA9PSAnXG4nOworfQor
CisvLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3Mtc3ludGF4LyNuYW1lLXN0YXJ0LWNvZGUt
cG9pbnQKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorYm9vbCBpc05hbWVTdGFy
dENvZGVQb2ludChDaGFyYWN0ZXJUeXBlIGMpCit7CisgICAgcmV0dXJuIGlzQVNDSUlBbHBoYShj
KSB8fCBjID09ICdfJyB8fCAhaXNBU0NJSShjKTsKK30KKworLy8gaHR0cDovL2Rldi53My5vcmcv
Y3Nzd2cvY3NzLXN5bnRheC8jbmFtZS1jb2RlLXBvaW50Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4KK2Jvb2wgaXNOYW1lQ29kZVBvaW50KENoYXJhY3RlclR5cGUgYykKK3sKKyAg
ICByZXR1cm4gaXNOYW1lU3RhcnRDb2RlUG9pbnQoYykgfHwgaXNBU0NJSURpZ2l0KGMpIHx8IGMg
PT0gJy0nOworfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQYXJzZXJPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1BhcnNlck9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMyBMYXJzIEtub2xsIChrbm9sbEBrZGUu
b3JnKQorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBF
cmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5IC0gMjAx
MCAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aWZuZGVmIENTU1BhcnNlck9ic2VydmVyX2gKKyNkZWZpbmUgQ1NTUGFyc2VyT2JzZXJ2ZXJfaAor
CisjaW5jbHVkZSAiQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmgiCisjaW5jbHVkZSAiU3R5bGVSdWxl
LmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIENTU1BhcnNlclRva2VuOworY2xhc3MgQ1NTUGFyc2VyVG9rZW5SYW5nZTsKKworLy8gVGhp
cyBpcyBvbmx5IGZvciB0aGUgaW5zcGVjdG9yIGFuZCBzaG91bGRuJ3QgYmUgdXNlZCBlbHNld2hl
cmUuCitjbGFzcyBDU1NQYXJzZXJPYnNlcnZlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q1NT
UGFyc2VyT2JzZXJ2ZXIoKSB7IH07CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0UnVsZUhlYWRlcihT
dHlsZVJ1bGU6OlR5cGUsIHVuc2lnbmVkIG9mZnNldCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBl
bmRSdWxlSGVhZGVyKHVuc2lnbmVkIG9mZnNldCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvYnNl
cnZlU2VsZWN0b3IodW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzdGFydFJ1bGVCb2R5KHVuc2lnbmVkIG9mZnNldCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBlbmRSdWxlQm9keSh1bnNpZ25lZCBvZmZzZXQpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgb2JzZXJ2ZVByb3BlcnR5KHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQsIGJvb2wgaXNJbXBvcnRhbnQsIGJvb2wgaXNQYXJzZWQpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgb2JzZXJ2ZUNvbW1lbnQodW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCkgPSAwOworICAgIC8vIEZJWE1FOiBVbnVzZWQsIHNob3VsZCBiZSByZW1vdmVk
CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0TWVkaWFRdWVyeUV4cCh1bnNpZ25lZCBvZmZzZXQpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kTWVkaWFRdWVyeUV4cCh1bnNpZ25lZCBvZmZzZXQpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRNZWRpYVF1ZXJ5KCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBlbmRNZWRpYVF1ZXJ5KCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gQ1NTUGFyc2VyT2JzZXJ2ZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmNwcAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlck9ic2VydmVyV3Jh
cHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MSBAQAorLy8gQ29weXJpZ2h0IDIw
MTUgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8g
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24u
CisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaCIKKworI2luY2x1ZGUgIkNTU1BhcnNl
clRva2VuUmFuZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1bnNpZ25lZCBDU1NQYXJz
ZXJPYnNlcnZlcldyYXBwZXI6OnN0YXJ0T2Zmc2V0KGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlKQoreworICAgIHJldHVybiBtX3Rva2VuT2Zmc2V0c1tyYW5nZS5iZWdpbigpIC0gbV9m
aXJzdFBhcnNlclRva2VuXTsKK30KKwordW5zaWduZWQgQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVy
OjpwcmV2aW91c1Rva2VuU3RhcnRPZmZzZXQoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UpCit7CisgICAgaWYgKHJhbmdlLmJlZ2luKCkgPT0gbV9maXJzdFBhcnNlclRva2VuKQorICAg
ICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV90b2tlbk9mZnNldHNbcmFuZ2UuYmVnaW4oKSAt
IG1fZmlyc3RQYXJzZXJUb2tlbiAtIDFdOworfQorCit1bnNpZ25lZCBDU1NQYXJzZXJPYnNlcnZl
cldyYXBwZXI6OmVuZE9mZnNldChjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sK
KyAgICByZXR1cm4gbV90b2tlbk9mZnNldHNbcmFuZ2UuZW5kKCkgLSBtX2ZpcnN0UGFyc2VyVG9r
ZW5dOworfQorCit2b2lkIENTU1BhcnNlck9ic2VydmVyV3JhcHBlcjo6c2tpcENvbW1lbnRzQmVm
b3JlKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBib29sIGxlYXZlRGlyZWN0bHlC
ZWZvcmUpCit7CisgICAgdW5zaWduZWQgc3RhcnRJbmRleCA9IHJhbmdlLmJlZ2luKCkgLSBtX2Zp
cnN0UGFyc2VyVG9rZW47CisgICAgaWYgKCFsZWF2ZURpcmVjdGx5QmVmb3JlKQorICAgICAgICBz
dGFydEluZGV4Kys7CisgICAgd2hpbGUgKG1fY29tbWVudEl0ZXJhdG9yIDwgbV9jb21tZW50T2Zm
c2V0cy5lbmQoKSAmJiBtX2NvbW1lbnRJdGVyYXRvci0+dG9rZW5zQmVmb3JlIDwgc3RhcnRJbmRl
eCkKKyAgICAgICAgbV9jb21tZW50SXRlcmF0b3IrKzsKK30KKwordm9pZCBDU1NQYXJzZXJPYnNl
cnZlcldyYXBwZXI6OnlpZWxkQ29tbWVudHNCZWZvcmUoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UpCit7CisgICAgdW5zaWduZWQgc3RhcnRJbmRleCA9IHJhbmdlLmJlZ2luKCkgLSBt
X2ZpcnN0UGFyc2VyVG9rZW47CisgICAgd2hpbGUgKG1fY29tbWVudEl0ZXJhdG9yIDwgbV9jb21t
ZW50T2Zmc2V0cy5lbmQoKSAmJiBtX2NvbW1lbnRJdGVyYXRvci0+dG9rZW5zQmVmb3JlIDw9IHN0
YXJ0SW5kZXgpIHsKKyAgICAgICAgbV9vYnNlcnZlci5vYnNlcnZlQ29tbWVudChtX2NvbW1lbnRJ
dGVyYXRvci0+c3RhcnRPZmZzZXQsIG1fY29tbWVudEl0ZXJhdG9yLT5lbmRPZmZzZXQpOworICAg
ICAgICBtX2NvbW1lbnRJdGVyYXRvcisrOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlcldy
YXBwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNl
ck9ic2VydmVyV3JhcHBlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw3OSBAQAorLy8gQ29weXJpZ2h0IDIwMTUgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6
CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisv
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KyNpZm5kZWYgQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyX2gKKyNkZWZpbmUgQ1NTUGFyc2VyT2Jz
ZXJ2ZXJXcmFwcGVyX2gKKworI2luY2x1ZGUgIkNTU1BhcnNlck9ic2VydmVyLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyIHsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIoQ1NTUGFyc2VyT2JzZXJ2
ZXImIG9ic2VydmVyKQorICAgICAgICA6IG1fb2JzZXJ2ZXIob2JzZXJ2ZXIpCisgICAgeyB9CisK
KyAgICB1bnNpZ25lZCBzdGFydE9mZnNldChjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJik7Cisg
ICAgdW5zaWduZWQgcHJldmlvdXNUb2tlblN0YXJ0T2Zmc2V0KGNvbnN0IENTU1BhcnNlclRva2Vu
UmFuZ2UmKTsKKyAgICB1bnNpZ25lZCBlbmRPZmZzZXQoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYpOyAvLyBJbmNsdWRlcyB0cmFpbGluZyBjb21tZW50cworCisgICAgdm9pZCBza2lwQ29tbWVu
dHNCZWZvcmUoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGJvb2wgbGVhdmVEaXJlY3RseUJl
Zm9yZSk7CisgICAgdm9pZCB5aWVsZENvbW1lbnRzQmVmb3JlKGNvbnN0IENTU1BhcnNlclRva2Vu
UmFuZ2UmKTsKKworICAgIENTU1BhcnNlck9ic2VydmVyJiBvYnNlcnZlcigpIHsgcmV0dXJuIG1f
b2JzZXJ2ZXI7IH0KKyAgICB2b2lkIGFkZENvbW1lbnQodW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCwgdW5zaWduZWQgdG9rZW5zQmVmb3JlKQorICAgIHsKKyAgICAgICAg
Q29tbWVudFBvc2l0aW9uIHBvc2l0aW9uID0ge3N0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIHRva2Vu
c0JlZm9yZX07CisgICAgICAgIG1fY29tbWVudE9mZnNldHMuYXBwZW5kKHBvc2l0aW9uKTsKKyAg
ICB9CisgICAgdm9pZCBhZGRUb2tlbih1bnNpZ25lZCBzdGFydE9mZnNldCkgeyBtX3Rva2VuT2Zm
c2V0cy5hcHBlbmQoc3RhcnRPZmZzZXQpOyB9CisgICAgdm9pZCBmaW5hbGl6ZUNvbnN0cnVjdGlv
bihDU1NQYXJzZXJUb2tlbiogZmlyc3RQYXJzZXJUb2tlbikKKyAgICB7CisgICAgICAgIG1fZmly
c3RQYXJzZXJUb2tlbiA9IGZpcnN0UGFyc2VyVG9rZW47CisgICAgICAgIG1fY29tbWVudEl0ZXJh
dG9yID0gbV9jb21tZW50T2Zmc2V0cy5iZWdpbigpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBD
U1NQYXJzZXJPYnNlcnZlciYgbV9vYnNlcnZlcjsKKyAgICBWZWN0b3I8dW5zaWduZWQ+IG1fdG9r
ZW5PZmZzZXRzOworICAgIENTU1BhcnNlclRva2VuKiBtX2ZpcnN0UGFyc2VyVG9rZW47CisKKyAg
ICBzdHJ1Y3QgQ29tbWVudFBvc2l0aW9uIHsKKyAgICAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQ7
CisgICAgICAgIHVuc2lnbmVkIGVuZE9mZnNldDsKKyAgICAgICAgdW5zaWduZWQgdG9rZW5zQmVm
b3JlOworICAgIH07CisKKyAgICBWZWN0b3I8Q29tbWVudFBvc2l0aW9uPiBtX2NvbW1lbnRPZmZz
ZXRzOworICAgIFZlY3RvcjxDb21tZW50UG9zaXRpb24+OjppdGVyYXRvciBtX2NvbW1lbnRJdGVy
YXRvcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENTU1BhcnNl
ck9ic2VydmVyV3JhcHBlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Bh
cnNlclRva2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlclRva2VuLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlclRva2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3NiBAQAor
Ly8gQ29weXJpZ2h0IDIwMTQgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8g
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisv
LyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisv
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlbi5oIgorCisjaW5jbHVkZSAiQ1NT
TWFya3VwLmgiCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NQ
cm9wZXJ0eVBhcnNlci5oIgorI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGVzIGNzc1ByaW1pdGl2ZVZhbHVlVW5pdEZyb21UcmllKGNvbnN0IENo
YXJhY3RlclR5cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBBU1NFUlQoZGF0YSk7
CisgICAgQVNTRVJUKGxlbmd0aCk7CisgICAgc3dpdGNoIChsZW5ndGgpIHsKKyAgICBjYXNlIDE6
CisgICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGRhdGFbMF0pKSB7CisgICAgICAgIGNhc2Ug
J3MnOgorICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNT
U19TOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAgICAgc3dp
dGNoICh0b0FTQ0lJTG93ZXIoZGF0YVswXSkpIHsKKyAgICAgICAgY2FzZSAnYyc6CisgICAgICAg
ICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkgeworICAgICAgICAgICAgY2FzZSAn
aCc6CisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6
OkNTU19DSFM7CisgICAgICAgICAgICBjYXNlICdtJzoKKyAgICAgICAgICAgICAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0NNOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ2UnOgorICAgICAgICAgICAgc3dpdGNoICh0
b0FTQ0lJTG93ZXIoZGF0YVsxXSkpIHsKKyAgICAgICAgICAgIGNhc2UgJ20nOgorICAgICAgICAg
ICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfRU1TOworICAg
ICAgICAgICAgY2FzZSAneCc6CisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZXM6OkNTU19FWFM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSAnZic6CisgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGRhdGFb
MV0pID09ICdyJykKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlczo6Q1NTX0ZSOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ2gnOgor
ICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzFdKSA9PSAneicpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19IWjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdpJzoKKyAgICAgICAgICAgIGlmICh0b0FTQ0lJ
TG93ZXIoZGF0YVsxXSkgPT0gJ24nKQorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfSU47CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSAnbSc6CisgICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkgewor
ICAgICAgICAgICAgY2FzZSAnbSc6CisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19NTTsKKyAgICAgICAgICAgIGNhc2UgJ3MnOgorICAgICAg
ICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfTVM7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAncCc6CisgICAg
ICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkgeworICAgICAgICAgICAgY2Fz
ZSAnYyc6CisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZXM6OkNTU19QQzsKKyAgICAgICAgICAgIGNhc2UgJ3QnOgorICAgICAgICAgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUFQ7CisgICAgICAgICAgICBjYXNl
ICd4JzoKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBl
czo6Q1NTX1BYOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgJ3YnOgorICAgICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkpIHsKKyAg
ICAgICAgICAgIGNhc2UgJ2gnOgorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVW
YWx1ZTo6VW5pdFR5cGVzOjpDU1NfVkg7CisgICAgICAgICAgICBjYXNlICd3JzoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1ZXOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSAzOgorICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzBdKSkgewor
ICAgICAgICBjYXNlICdkJzoKKyAgICAgICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGRhdGFb
MV0pKSB7CisgICAgICAgICAgICBjYXNlICdlJzoKKyAgICAgICAgICAgICAgICBpZiAodG9BU0NJ
SUxvd2VyKGRhdGFbMl0pID09ICdnJykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1By
aW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19ERUc7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlICdwJzoKKyAgICAgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2Vy
KGRhdGFbMl0pID09ICdpJykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19EUEk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdrJzoKKyAgICAgICAgICAg
IGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkgPT0gJ2gnICYmIHRvQVNDSUlMb3dlcihkYXRhWzJd
KSA9PSAneicpCisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZXM6OkNTU19LSFo7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAncic6Cisg
ICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkgeworICAgICAgICAgICAg
Y2FzZSAnYSc6CisgICAgICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzJdKSA9PSAn
ZCcpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGVzOjpDU1NfUkFEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAn
ZSc6CisgICAgICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzJdKSA9PSAnbScpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpD
U1NfUkVNUzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGJyZWFrOworICAgIGNhc2UgNDoKKyAgICAgICAgc3dpdGNoICh0
b0FTQ0lJTG93ZXIoZGF0YVswXSkpIHsKKyAgICAgICAgY2FzZSAnZCc6CisgICAgICAgICAgICBz
d2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkgeworICAgICAgICAgICAgY2FzZSAncCc6Cisg
ICAgICAgICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVsyXSkpIHsKKyAgICAgICAg
ICAgICAgICBjYXNlICdjJzoKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihk
YXRhWzNdKSA9PSAnbScpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0RQQ007CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgJ3AnOgorICAgICAgICAgICAgICAgICAgICBpZiAodG9B
U0NJSUxvd2VyKGRhdGFbM10pID09ICd4JykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfRFBQWDsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ2cnOgorICAgICAgICAgICAgaWYg
KHRvQVNDSUlMb3dlcihkYXRhWzFdKSA9PSAncicgJiYgdG9BU0NJSUxvd2VyKGRhdGFbMl0pID09
ICdhJyAmJiB0b0FTQ0lJTG93ZXIoZGF0YVszXSkgPT0gJ2QnKQorICAgICAgICAgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfR1JBRDsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlICd0JzoKKyAgICAgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIo
ZGF0YVsxXSkgPT0gJ3UnICYmIHRvQVNDSUlMb3dlcihkYXRhWzJdKSA9PSAncicgJiYgdG9BU0NJ
SUxvd2VyKGRhdGFbM10pID09ICduJykKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1RVUk47CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSAndic6CisgICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkg
eworICAgICAgICAgICAgY2FzZSAnbSc6CisgICAgICAgICAgICAgICAgc3dpdGNoICh0b0FTQ0lJ
TG93ZXIoZGF0YVsyXSkpIHsKKyAgICAgICAgICAgICAgICBjYXNlICdhJzoKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzNdKSA9PSAneCcpCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1ZNQVg7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgJ2knOgor
ICAgICAgICAgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGRhdGFbM10pID09ICduJykKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVz
OjpDU1NfVk1JTjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA1OgorICAgICAgICBzd2l0
Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzBdKSkgeworICAgICAgICBjYXNlICdfJzoKKyAgICAgICAg
ICAgIGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkgPT0gJ18nICYmIHRvQVNDSUlMb3dlcihkYXRh
WzJdKSA9PSAncScgJiYgdG9BU0NJSUxvd2VyKGRhdGFbM10pID09ICdlJyAmJiB0b0FTQ0lJTG93
ZXIoZGF0YVs0XSkgPT0gJ20nKQorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVW
YWx1ZTo6VW5pdFR5cGVzOjpDU1NfRU1TOyAvLyBGSVhNRS1ORVdQQVJTRVI6IE5lZWQgcXVpcmt5
IGVtcy4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1VOS05PV047
Cit9CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHN0cmluZ1RvVW5pdFR5
cGUoU3RyaW5nVmlldyBzdHJpbmdWaWV3KQoreworICAgIGlmIChzdHJpbmdWaWV3LmlzOEJpdCgp
KQorICAgICAgICByZXR1cm4gY3NzUHJpbWl0aXZlVmFsdWVVbml0RnJvbVRyaWUoc3RyaW5nVmll
dy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmdWaWV3Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4gY3NzUHJp
bWl0aXZlVmFsdWVVbml0RnJvbVRyaWUoc3RyaW5nVmlldy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5n
Vmlldy5sZW5ndGgoKSk7Cit9CisKK0NTU1BhcnNlclRva2VuOjpDU1NQYXJzZXJUb2tlbihDU1NQ
YXJzZXJUb2tlblR5cGUgdHlwZSwgQmxvY2tUeXBlIGJsb2NrVHlwZSkKKyAgICA6IG1fdHlwZSh0
eXBlKQorICAgICwgbV9ibG9ja1R5cGUoYmxvY2tUeXBlKQoreworfQorCisvLyBKdXN0IGEgaGVs
cGVyIHVzZWQgZm9yIERlbGltaXRlciB0b2tlbnMuCitDU1NQYXJzZXJUb2tlbjo6Q1NTUGFyc2Vy
VG9rZW4oQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIFVDaGFyIGMpCisgICAgOiBtX3R5cGUodHlw
ZSkKKyAgICAsIG1fYmxvY2tUeXBlKE5vdEJsb2NrKQorICAgICwgbV9kZWxpbWl0ZXIoYykKK3sK
KyAgICBBU1NFUlQobV90eXBlID09IERlbGltaXRlclRva2VuKTsKK30KKworQ1NTUGFyc2VyVG9r
ZW46OkNTU1BhcnNlclRva2VuKENTU1BhcnNlclRva2VuVHlwZSB0eXBlLCBTdHJpbmdWaWV3IHZh
bHVlLCBCbG9ja1R5cGUgYmxvY2tUeXBlKQorICAgIDogbV90eXBlKHR5cGUpCisgICAgLCBtX2Js
b2NrVHlwZShibG9ja1R5cGUpCit7CisgICAgaW5pdFZhbHVlRnJvbVN0cmluZ1ZpZXcodmFsdWUp
OworICAgIG1faWQgPSAtMTsKK30KKworQ1NTUGFyc2VyVG9rZW46OkNTU1BhcnNlclRva2VuKENT
U1BhcnNlclRva2VuVHlwZSB0eXBlLCBkb3VibGUgbnVtZXJpY1ZhbHVlLCBOdW1lcmljVmFsdWVU
eXBlIG51bWVyaWNWYWx1ZVR5cGUsIE51bWVyaWNTaWduIHNpZ24pCisgICAgOiBtX3R5cGUodHlw
ZSkKKyAgICAsIG1fYmxvY2tUeXBlKE5vdEJsb2NrKQorICAgICwgbV9udW1lcmljVmFsdWVUeXBl
KG51bWVyaWNWYWx1ZVR5cGUpCisgICAgLCBtX251bWVyaWNTaWduKHNpZ24pCisgICAgLCBtX3Vu
aXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNT
U19OVU1CRVIpKQoreworICAgIEFTU0VSVCh0eXBlID09IE51bWJlclRva2VuKTsKKyAgICBtX251
bWVyaWNWYWx1ZSA9IGNsYW1wVG88ZG91YmxlPihudW1lcmljVmFsdWUsIC1zdGQ6Om51bWVyaWNf
bGltaXRzPGZsb2F0Pjo6bWF4KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSk7
Cit9CisKK0NTU1BhcnNlclRva2VuOjpDU1NQYXJzZXJUb2tlbihDU1NQYXJzZXJUb2tlblR5cGUg
dHlwZSwgVUNoYXIzMiBzdGFydCwgVUNoYXIzMiBlbmQpCisgICAgOiBtX3R5cGUoVW5pY29kZVJh
bmdlVG9rZW4pCisgICAgLCBtX2Jsb2NrVHlwZShOb3RCbG9jaykKK3sKKyAgICBBU1NFUlRfVU5V
U0VEKHR5cGUsIHR5cGUgPT0gVW5pY29kZVJhbmdlVG9rZW4pOworICAgIG1fdW5pY29kZVJhbmdl
LnN0YXJ0ID0gc3RhcnQ7CisgICAgbV91bmljb2RlUmFuZ2UuZW5kID0gZW5kOworfQorCitDU1NQ
YXJzZXJUb2tlbjo6Q1NTUGFyc2VyVG9rZW4oSGFzaFRva2VuVHlwZSB0eXBlLCBTdHJpbmdWaWV3
IHZhbHVlKQorICAgIDogbV90eXBlKEhhc2hUb2tlbikKKyAgICAsIG1fYmxvY2tUeXBlKE5vdEJs
b2NrKQorICAgICwgbV9oYXNoVG9rZW5UeXBlKHR5cGUpCit7CisgICAgaW5pdFZhbHVlRnJvbVN0
cmluZ1ZpZXcodmFsdWUpOworfQorCit2b2lkIENTU1BhcnNlclRva2VuOjpjb252ZXJ0VG9EaW1l
bnNpb25XaXRoVW5pdChTdHJpbmdWaWV3IHVuaXQpCit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBO
dW1iZXJUb2tlbik7CisgICAgbV90eXBlID0gRGltZW5zaW9uVG9rZW47CisgICAgaW5pdFZhbHVl
RnJvbVN0cmluZ1ZpZXcodW5pdCk7CisgICAgbV91bml0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHN0cmluZ1RvVW5pdFR5cGUodW5pdCkpOworfQorCit2b2lkIENTU1BhcnNlclRva2VuOjpjb252
ZXJ0VG9QZXJjZW50YWdlKCkKK3sKKyAgICBBU1NFUlQobV90eXBlID09IE51bWJlclRva2VuKTsK
KyAgICBtX3R5cGUgPSBQZXJjZW50YWdlVG9rZW47CisgICAgbV91bml0ID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19QRVJDRU5UQUdFKTsK
K30KKworVUNoYXIgQ1NTUGFyc2VyVG9rZW46OmRlbGltaXRlcigpIGNvbnN0Cit7CisgICAgQVNT
RVJUKG1fdHlwZSA9PSBEZWxpbWl0ZXJUb2tlbik7CisgICAgcmV0dXJuIG1fZGVsaW1pdGVyOwor
fQorCitOdW1lcmljU2lnbiBDU1NQYXJzZXJUb2tlbjo6bnVtZXJpY1NpZ24oKSBjb25zdAorewor
ICAgIC8vIFRoaXMgaXMgdmFsaWQgZm9yIERpbWVuc2lvblRva2VuIGFuZCBQZXJjZW50YWdlVG9r
ZW4sIGJ1dCBvbmx5IHVzZWQKKyAgICAvLyBpbiA8YW4rYj4gcGFyc2luZyBvbiBOdW1iZXJUb2tl
bnMuCisgICAgQVNTRVJUKG1fdHlwZSA9PSBOdW1iZXJUb2tlbik7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PE51bWVyaWNTaWduPihtX251bWVyaWNTaWduKTsKK30KKworTnVtZXJpY1ZhbHVlVHlw
ZSBDU1NQYXJzZXJUb2tlbjo6bnVtZXJpY1ZhbHVlVHlwZSgpIGNvbnN0Cit7CisgICAgQVNTRVJU
KG1fdHlwZSA9PSBOdW1iZXJUb2tlbiB8fCBtX3R5cGUgPT0gUGVyY2VudGFnZVRva2VuIHx8IG1f
dHlwZSA9PSBEaW1lbnNpb25Ub2tlbik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE51bWVyaWNW
YWx1ZVR5cGU+KG1fbnVtZXJpY1ZhbHVlVHlwZSk7Cit9CisKK2RvdWJsZSBDU1NQYXJzZXJUb2tl
bjo6bnVtZXJpY1ZhbHVlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09IE51bWJlclRv
a2VuIHx8IG1fdHlwZSA9PSBQZXJjZW50YWdlVG9rZW4gfHwgbV90eXBlID09IERpbWVuc2lvblRv
a2VuKTsKKyAgICByZXR1cm4gbV9udW1lcmljVmFsdWU7Cit9CisKK0NTU1Byb3BlcnR5SUQgQ1NT
UGFyc2VyVG9rZW46OnBhcnNlQXNVbnJlc29sdmVkQ1NTUHJvcGVydHlJRCgpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUKG1fdHlwZSA9PSBJZGVudFRva2VuKTsKKyAgICByZXR1cm4gdW5yZXNvbHZlZENT
U1Byb3BlcnR5SUQodmFsdWUoKSk7Cit9CisKK0NTU1ZhbHVlSUQgQ1NTUGFyc2VyVG9rZW46Omlk
KCkgY29uc3QKK3sKKyAgICBpZiAobV90eXBlICE9IElkZW50VG9rZW4pCisgICAgICAgIHJldHVy
biBDU1NWYWx1ZUludmFsaWQ7CisgICAgaWYgKG1faWQgPCAwKQorICAgICAgICBtX2lkID0gY3Nz
VmFsdWVLZXl3b3JkSUQodmFsdWUoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU1ZhbHVl
SUQ+KG1faWQpOworfQorCitDU1NWYWx1ZUlEIENTU1BhcnNlclRva2VuOjpmdW5jdGlvbklkKCkg
Y29uc3QKK3sKKyAgICBpZiAobV90eXBlICE9IEZ1bmN0aW9uVG9rZW4pCisgICAgICAgIHJldHVy
biBDU1NWYWx1ZUludmFsaWQ7CisgICAgaWYgKG1faWQgPCAwKQorICAgICAgICBtX2lkID0gY3Nz
VmFsdWVLZXl3b3JkSUQodmFsdWUoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU1ZhbHVl
SUQ+KG1faWQpOworfQorCitib29sIENTU1BhcnNlclRva2VuOjpoYXNTdHJpbmdCYWNraW5nKCkg
Y29uc3QKK3sKKyAgICBDU1NQYXJzZXJUb2tlblR5cGUgdG9rZW5UeXBlID0gdHlwZSgpOworICAg
IHJldHVybiB0b2tlblR5cGUgPT0gSWRlbnRUb2tlbgorICAgICAgICB8fCB0b2tlblR5cGUgPT0g
RnVuY3Rpb25Ub2tlbgorICAgICAgICB8fCB0b2tlblR5cGUgPT0gQXRLZXl3b3JkVG9rZW4KKyAg
ICAgICAgfHwgdG9rZW5UeXBlID09IEhhc2hUb2tlbgorICAgICAgICB8fCB0b2tlblR5cGUgPT0g
VXJsVG9rZW4KKyAgICAgICAgfHwgdG9rZW5UeXBlID09IERpbWVuc2lvblRva2VuCisgICAgICAg
IHx8IHRva2VuVHlwZSA9PSBTdHJpbmdUb2tlbjsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTUGFy
c2VyVG9rZW46OmNvcHlXaXRoVXBkYXRlZFN0cmluZyhjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcp
IGNvbnN0Cit7CisgICAgQ1NTUGFyc2VyVG9rZW4gY29weSgqdGhpcyk7CisgICAgY29weS5pbml0
VmFsdWVGcm9tU3RyaW5nVmlldyhzdHJpbmcpOworICAgIHJldHVybiBjb3B5OworfQorCitib29s
IENTU1BhcnNlclRva2VuOjp2YWx1ZURhdGFDaGFyUmF3RXF1YWwoY29uc3QgQ1NTUGFyc2VyVG9r
ZW4mIG90aGVyKSBjb25zdAoreworICAgIGlmIChtX3ZhbHVlTGVuZ3RoICE9IG90aGVyLm1fdmFs
dWVMZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX3ZhbHVlRGF0YUNo
YXJSYXcgPT0gb3RoZXIubV92YWx1ZURhdGFDaGFyUmF3ICYmIG1fdmFsdWVJczhCaXQgPT0gb3Ro
ZXIubV92YWx1ZUlzOEJpdCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAobV92YWx1
ZUlzOEJpdCkKKyAgICAgICAgcmV0dXJuIG90aGVyLm1fdmFsdWVJczhCaXQgPyBlcXVhbChzdGF0
aWNfY2FzdDxjb25zdCBMQ2hhcio+KG1fdmFsdWVEYXRhQ2hhclJhdyksIHN0YXRpY19jYXN0PGNv
bnN0IExDaGFyKj4ob3RoZXIubV92YWx1ZURhdGFDaGFyUmF3KSwgbV92YWx1ZUxlbmd0aCkgOiBl
cXVhbChzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KG1fdmFsdWVEYXRhQ2hhclJhdyksIHN0YXRp
Y19jYXN0PGNvbnN0IFVDaGFyKj4ob3RoZXIubV92YWx1ZURhdGFDaGFyUmF3KSwgbV92YWx1ZUxl
bmd0aCk7CisgICAgCisgICAgcmV0dXJuIG90aGVyLm1fdmFsdWVJczhCaXQgPyBlcXVhbChzdGF0
aWNfY2FzdDxjb25zdCBVQ2hhcio+KG1fdmFsdWVEYXRhQ2hhclJhdyksIHN0YXRpY19jYXN0PGNv
bnN0IExDaGFyKj4ob3RoZXIubV92YWx1ZURhdGFDaGFyUmF3KSwgbV92YWx1ZUxlbmd0aCkgOiBl
cXVhbChzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KG1fdmFsdWVEYXRhQ2hhclJhdyksIHN0YXRp
Y19jYXN0PGNvbnN0IFVDaGFyKj4ob3RoZXIubV92YWx1ZURhdGFDaGFyUmF3KSwgbV92YWx1ZUxl
bmd0aCk7Cit9CisKK2Jvb2wgQ1NTUGFyc2VyVG9rZW46Om9wZXJhdG9yPT0oY29uc3QgQ1NTUGFy
c2VyVG9rZW4mIG90aGVyKSBjb25zdAoreworICAgIGlmIChtX3R5cGUgIT0gb3RoZXIubV90eXBl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNl
IERlbGltaXRlclRva2VuOgorICAgICAgICByZXR1cm4gZGVsaW1pdGVyKCkgPT0gb3RoZXIuZGVs
aW1pdGVyKCk7CisgICAgY2FzZSBIYXNoVG9rZW46CisgICAgICAgIGlmIChtX2hhc2hUb2tlblR5
cGUgIT0gb3RoZXIubV9oYXNoVG9rZW5UeXBlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIElkZW50VG9rZW46CisgICAgY2FzZSBGdW5j
dGlvblRva2VuOgorICAgIGNhc2UgU3RyaW5nVG9rZW46CisgICAgY2FzZSBVcmxUb2tlbjoKKyAg
ICAgICAgcmV0dXJuIHZhbHVlRGF0YUNoYXJSYXdFcXVhbChvdGhlcik7CisgICAgY2FzZSBEaW1l
bnNpb25Ub2tlbjoKKyAgICAgICAgaWYgKCF2YWx1ZURhdGFDaGFyUmF3RXF1YWwob3RoZXIpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNl
IE51bWJlclRva2VuOgorICAgIGNhc2UgUGVyY2VudGFnZVRva2VuOgorICAgICAgICByZXR1cm4g
bV9udW1lcmljU2lnbiA9PSBvdGhlci5tX251bWVyaWNTaWduICYmIG1fbnVtZXJpY1ZhbHVlID09
IG90aGVyLm1fbnVtZXJpY1ZhbHVlICYmIG1fbnVtZXJpY1ZhbHVlVHlwZSA9PSBvdGhlci5tX251
bWVyaWNWYWx1ZVR5cGU7CisgICAgY2FzZSBVbmljb2RlUmFuZ2VUb2tlbjoKKyAgICAgICAgcmV0
dXJuIG1fdW5pY29kZVJhbmdlLnN0YXJ0ID09IG90aGVyLm1fdW5pY29kZVJhbmdlLnN0YXJ0ICYm
IG1fdW5pY29kZVJhbmdlLmVuZCA9PSBvdGhlci5tX3VuaWNvZGVSYW5nZS5lbmQ7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfQorCit2b2lkIENTU1BhcnNlclRv
a2VuOjpzZXJpYWxpemUoU3RyaW5nQnVpbGRlciYgYnVpbGRlcikgY29uc3QKK3sKKyAgICAvLyBU
aGlzIGlzIGN1cnJlbnRseSBvbmx5IHVzZWQgZm9yIEBzdXBwb3J0cyBDU1NPTS4gVG8ga2VlcCBv
dXIgaW1wbGVtZW50YXRpb24KKyAgICAvLyBzaW1wbGUgd2UgaGFuZGxlIHNvbWUgb2YgdGhlIGVk
Z2UgY2FzZXMgaW5jb3JyZWN0bHkgKHNlZSBjb21tZW50cyBiZWxvdykuCisgICAgc3dpdGNoICh0
eXBlKCkpIHsKKyAgICBjYXNlIElkZW50VG9rZW46CisgICAgICAgIHNlcmlhbGl6ZUlkZW50aWZp
ZXIodmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBGdW5jdGlvblRva2VuOgorICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKHZhbHVlKCkudG9T
dHJpbmcoKSwgYnVpbGRlcik7CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgnKCcpOwor
ICAgIGNhc2UgQXRLZXl3b3JkVG9rZW46CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdAJyk7Cisg
ICAgICAgIHNlcmlhbGl6ZUlkZW50aWZpZXIodmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVyKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIYXNoVG9rZW46CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCcjJyk7CisgICAgICAgIHNlcmlhbGl6ZUlkZW50aWZpZXIodmFsdWUoKS50b1N0cmluZygp
LCBidWlsZGVyLCAoZ2V0SGFzaFRva2VuVHlwZSgpID09IEhhc2hUb2tlblVucmVzdHJpY3RlZCkp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFVybFRva2VuOgorICAgICAgICBidWlsZGVyLmFw
cGVuZCgidXJsKCIpOworICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKHZhbHVlKCkudG9TdHJp
bmcoKSwgYnVpbGRlcik7CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgnKScpOworICAg
IGNhc2UgRGVsaW1pdGVyVG9rZW46CisgICAgICAgIGlmIChkZWxpbWl0ZXIoKSA9PSAnXFwnKQor
ICAgICAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCJcXFxuIik7CisgICAgICAgIHJldHVy
biBidWlsZGVyLmFwcGVuZChkZWxpbWl0ZXIoKSk7CisgICAgY2FzZSBOdW1iZXJUb2tlbjoKKyAg
ICAgICAgLy8gVGhlc2Ugd29uJ3QgcHJvcGVybHkgcHJlc2VydmUgdGhlIE51bWVyaWNWYWx1ZVR5
cGUgZmxhZworICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmROdW1iZXIobnVtZXJpY1ZhbHVl
KCkpOworICAgIGNhc2UgUGVyY2VudGFnZVRva2VuOgorICAgICAgICBidWlsZGVyLmFwcGVuZE51
bWJlcihudW1lcmljVmFsdWUoKSk7CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgnJScp
OworICAgIGNhc2UgRGltZW5zaW9uVG9rZW46CisgICAgICAgIC8vIFRoaXMgd2lsbCBpbmNvcnJl
Y3RseSBzZXJpYWxpemUgZS5nLiA0ZTNlMiBhcyA0MDAwZTIKKyAgICAgICAgYnVpbGRlci5hcHBl
bmROdW1iZXIobnVtZXJpY1ZhbHVlKCkpOworICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKHZh
bHVlKCkudG9TdHJpbmcoKSwgYnVpbGRlcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVW5p
Y29kZVJhbmdlVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZv
cm1hdCgiVSslWC0lWCIsIHVuaWNvZGVSYW5nZVN0YXJ0KCksIHVuaWNvZGVSYW5nZUVuZCgpKSk7
CisgICAgY2FzZSBTdHJpbmdUb2tlbjoKKyAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZVN0cmluZyh2
YWx1ZSgpLnRvU3RyaW5nKCksIGJ1aWxkZXIpOworCisgICAgY2FzZSBJbmNsdWRlTWF0Y2hUb2tl
bjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCJ+PSIpOworICAgIGNhc2UgRGFzaE1h
dGNoVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgifD0iKTsKKyAgICBjYXNl
IFByZWZpeE1hdGNoVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgiXj0iKTsK
KyAgICBjYXNlIFN1ZmZpeE1hdGNoVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVu
ZCgiJD0iKTsKKyAgICBjYXNlIFN1YnN0cmluZ01hdGNoVG9rZW46CisgICAgICAgIHJldHVybiBi
dWlsZGVyLmFwcGVuZCgiKj0iKTsKKyAgICBjYXNlIENvbHVtblRva2VuOgorICAgICAgICByZXR1
cm4gYnVpbGRlci5hcHBlbmQoInx8Iik7CisgICAgY2FzZSBDRE9Ub2tlbjoKKyAgICAgICAgcmV0
dXJuIGJ1aWxkZXIuYXBwZW5kKCI8IS0tIik7CisgICAgY2FzZSBDRENUb2tlbjoKKyAgICAgICAg
cmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCItLT4iKTsKKyAgICBjYXNlIEJhZFN0cmluZ1Rva2VuOgor
ICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoIidcbiIpOworICAgIGNhc2UgQmFkVXJsVG9r
ZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgidXJsKCgpIik7CisgICAgY2FzZSBX
aGl0ZXNwYWNlVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgnICcpOworICAg
IGNhc2UgQ29sb25Ub2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7Cisg
ICAgY2FzZSBTZW1pY29sb25Ub2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCc7
Jyk7CisgICAgY2FzZSBDb21tYVRva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQo
JywnKTsKKyAgICBjYXNlIExlZnRQYXJlbnRoZXNpc1Rva2VuOgorICAgICAgICByZXR1cm4gYnVp
bGRlci5hcHBlbmQoJygnKTsKKyAgICBjYXNlIFJpZ2h0UGFyZW50aGVzaXNUb2tlbjoKKyAgICAg
ICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CisgICAgY2FzZSBMZWZ0QnJhY2tldFRva2Vu
OgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJ1snKTsKKyAgICBjYXNlIFJpZ2h0QnJh
Y2tldFRva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJ10nKTsKKyAgICBjYXNl
IExlZnRCcmFjZVRva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJ3snKTsKKyAg
ICBjYXNlIFJpZ2h0QnJhY2VUb2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCd9
Jyk7CisKKyAgICBjYXNlIEVPRlRva2VuOgorICAgIGNhc2UgQ29tbWVudFRva2VuOgorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJUb2tlbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VyVG9rZW4uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlclRva2VuLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODAgQEAKKy8vIENv
cHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlz
dHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisv
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZuZGVmIENTU1Bh
cnNlclRva2VuX2gKKyNkZWZpbmUgQ1NTUGFyc2VyVG9rZW5faAorCisjaW5jbHVkZSAiQ1NTUHJp
bWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworZW51bSBDU1NQYXJzZXJUb2tlblR5cGUgeworICAgIElkZW50VG9r
ZW4gPSAwLAorICAgIEZ1bmN0aW9uVG9rZW4sCisgICAgQXRLZXl3b3JkVG9rZW4sCisgICAgSGFz
aFRva2VuLAorICAgIFVybFRva2VuLAorICAgIEJhZFVybFRva2VuLAorICAgIERlbGltaXRlclRv
a2VuLAorICAgIE51bWJlclRva2VuLAorICAgIFBlcmNlbnRhZ2VUb2tlbiwKKyAgICBEaW1lbnNp
b25Ub2tlbiwKKyAgICBJbmNsdWRlTWF0Y2hUb2tlbiwKKyAgICBEYXNoTWF0Y2hUb2tlbiwKKyAg
ICBQcmVmaXhNYXRjaFRva2VuLAorICAgIFN1ZmZpeE1hdGNoVG9rZW4sCisgICAgU3Vic3RyaW5n
TWF0Y2hUb2tlbiwKKyAgICBDb2x1bW5Ub2tlbiwKKyAgICBVbmljb2RlUmFuZ2VUb2tlbiwKKyAg
ICBXaGl0ZXNwYWNlVG9rZW4sCisgICAgQ0RPVG9rZW4sCisgICAgQ0RDVG9rZW4sCisgICAgQ29s
b25Ub2tlbiwKKyAgICBTZW1pY29sb25Ub2tlbiwKKyAgICBDb21tYVRva2VuLAorICAgIExlZnRQ
YXJlbnRoZXNpc1Rva2VuLAorICAgIFJpZ2h0UGFyZW50aGVzaXNUb2tlbiwKKyAgICBMZWZ0QnJh
Y2tldFRva2VuLAorICAgIFJpZ2h0QnJhY2tldFRva2VuLAorICAgIExlZnRCcmFjZVRva2VuLAor
ICAgIFJpZ2h0QnJhY2VUb2tlbiwKKyAgICBTdHJpbmdUb2tlbiwKKyAgICBCYWRTdHJpbmdUb2tl
biwKKyAgICBFT0ZUb2tlbiwKKyAgICBDb21tZW50VG9rZW4sCit9OworCitlbnVtIE51bWVyaWNT
aWduIHsKKyAgICBOb1NpZ24sCisgICAgUGx1c1NpZ24sCisgICAgTWludXNTaWduLAorfTsKKwor
ZW51bSBOdW1lcmljVmFsdWVUeXBlIHsKKyAgICBJbnRlZ2VyVmFsdWVUeXBlLAorICAgIE51bWJl
clZhbHVlVHlwZSwKK307CisKK2VudW0gSGFzaFRva2VuVHlwZSB7CisgICAgSGFzaFRva2VuSWQs
CisgICAgSGFzaFRva2VuVW5yZXN0cmljdGVkLAorfTsKKworY2xhc3MgQ1NTUGFyc2VyVG9rZW4g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGVudW0gQmxvY2tU
eXBlIHsKKyAgICAgICAgTm90QmxvY2ssCisgICAgICAgIEJsb2NrU3RhcnQsCisgICAgICAgIEJs
b2NrRW5kLAorICAgIH07CisKKyAgICBDU1NQYXJzZXJUb2tlbihDU1NQYXJzZXJUb2tlblR5cGUs
IEJsb2NrVHlwZSA9IE5vdEJsb2NrKTsKKyAgICBDU1NQYXJzZXJUb2tlbihDU1NQYXJzZXJUb2tl
blR5cGUsIFN0cmluZ1ZpZXcsIEJsb2NrVHlwZSA9IE5vdEJsb2NrKTsKKworICAgIENTU1BhcnNl
clRva2VuKENTU1BhcnNlclRva2VuVHlwZSwgVUNoYXIpOyAvLyBmb3IgRGVsaW1pdGVyVG9rZW4K
KyAgICBDU1NQYXJzZXJUb2tlbihDU1NQYXJzZXJUb2tlblR5cGUsIGRvdWJsZSwgTnVtZXJpY1Zh
bHVlVHlwZSwgTnVtZXJpY1NpZ24pOyAvLyBmb3IgTnVtYmVyVG9rZW4KKyAgICBDU1NQYXJzZXJU
b2tlbihDU1NQYXJzZXJUb2tlblR5cGUsIFVDaGFyMzIsIFVDaGFyMzIpOyAvLyBmb3IgVW5pY29k
ZVJhbmdlVG9rZW4KKworICAgIENTU1BhcnNlclRva2VuKEhhc2hUb2tlblR5cGUsIFN0cmluZ1Zp
ZXcpOworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1BhcnNlclRva2VuJiBvdGhlcikg
Y29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENTU1BhcnNlclRva2VuJiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKworICAgIC8vIENvbnZlcnRzIE51
bWJlclRva2VuIHRvIERpbWVuc2lvblRva2VuLgorICAgIHZvaWQgY29udmVydFRvRGltZW5zaW9u
V2l0aFVuaXQoU3RyaW5nVmlldyk7CisKKyAgICAvLyBDb252ZXJ0cyBOdW1iZXJUb2tlbiB0byBQ
ZXJjZW50YWdlVG9rZW4uCisgICAgdm9pZCBjb252ZXJ0VG9QZXJjZW50YWdlKCk7CisKKyAgICBD
U1NQYXJzZXJUb2tlblR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENTU1Bh
cnNlclRva2VuVHlwZT4obV90eXBlKTsgfQorICAgIFN0cmluZ1ZpZXcgdmFsdWUoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgaWYgKG1fdmFsdWVJczhCaXQpCisgICAgICAgICAgICByZXR1cm4gU3Ry
aW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV92YWx1ZURhdGFDaGFyUmF3
KSwgbV92YWx1ZUxlbmd0aCk7CisgICAgICAgIHJldHVybiBTdHJpbmdWaWV3KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVUNoYXIqPihtX3ZhbHVlRGF0YUNoYXJSYXcpLCBtX3ZhbHVlTGVuZ3RoKTsK
KyAgICB9CisKKyAgICBVQ2hhciBkZWxpbWl0ZXIoKSBjb25zdDsKKyAgICBOdW1lcmljU2lnbiBu
dW1lcmljU2lnbigpIGNvbnN0OworICAgIE51bWVyaWNWYWx1ZVR5cGUgbnVtZXJpY1ZhbHVlVHlw
ZSgpIGNvbnN0OworICAgIGRvdWJsZSBudW1lcmljVmFsdWUoKSBjb25zdDsKKyAgICBIYXNoVG9r
ZW5UeXBlIGdldEhhc2hUb2tlblR5cGUoKSBjb25zdCB7IEFTU0VSVChtX3R5cGUgPT0gSGFzaFRv
a2VuKTsgcmV0dXJuIG1faGFzaFRva2VuVHlwZTsgfQorICAgIEJsb2NrVHlwZSBnZXRCbG9ja1R5
cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCbG9ja1R5cGU+KG1fYmxvY2tUeXBlKTsg
fQorICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgdW5pdFR5cGUoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzPihtX3VuaXQpOyB9
CisgICAgVUNoYXIzMiB1bmljb2RlUmFuZ2VTdGFydCgpIGNvbnN0IHsgQVNTRVJUKG1fdHlwZSA9
PSBVbmljb2RlUmFuZ2VUb2tlbik7IHJldHVybiBtX3VuaWNvZGVSYW5nZS5zdGFydDsgfQorICAg
IFVDaGFyMzIgdW5pY29kZVJhbmdlRW5kKCkgY29uc3QgeyBBU1NFUlQobV90eXBlID09IFVuaWNv
ZGVSYW5nZVRva2VuKTsgcmV0dXJuIG1fdW5pY29kZVJhbmdlLmVuZDsgfQorICAgIENTU1ZhbHVl
SUQgaWQoKSBjb25zdDsKKyAgICBDU1NWYWx1ZUlEIGZ1bmN0aW9uSWQoKSBjb25zdDsKKworICAg
IGJvb2wgaGFzU3RyaW5nQmFja2luZygpIGNvbnN0OworCisgICAgQ1NTUHJvcGVydHlJRCBwYXJz
ZUFzVW5yZXNvbHZlZENTU1Byb3BlcnR5SUQoKSBjb25zdDsKKworICAgIHZvaWQgc2VyaWFsaXpl
KFN0cmluZ0J1aWxkZXImKSBjb25zdDsKKworICAgIENTU1BhcnNlclRva2VuIGNvcHlXaXRoVXBk
YXRlZFN0cmluZyhjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdm9p
ZCBpbml0VmFsdWVGcm9tU3RyaW5nVmlldyhTdHJpbmdWaWV3IHN0cmluZykKKyAgICB7CisgICAg
ICAgIG1fdmFsdWVMZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgICAgIG1fdmFsdWVJczhC
aXQgPSBzdHJpbmcuaXM4Qml0KCk7CisgICAgICAgIG1fdmFsdWVEYXRhQ2hhclJhdyA9IG1fdmFs
dWVJczhCaXQgPyBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oc3RyaW5nLmNoYXJhY3RlcnM4KCkp
IDogc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHN0cmluZy5jaGFyYWN0ZXJzMTYoKSk7CisgICAg
fQorICAgIHVuc2lnbmVkIG1fdHlwZSA6IDY7IC8vIENTU1BhcnNlclRva2VuVHlwZQorICAgIHVu
c2lnbmVkIG1fYmxvY2tUeXBlIDogMjsgLy8gQmxvY2tUeXBlCisgICAgdW5zaWduZWQgbV9udW1l
cmljVmFsdWVUeXBlIDogMTsgLy8gTnVtZXJpY1ZhbHVlVHlwZQorICAgIHVuc2lnbmVkIG1fbnVt
ZXJpY1NpZ24gOiAyOyAvLyBOdW1lcmljU2lnbgorICAgIHVuc2lnbmVkIG1fdW5pdCA6IDc7IC8v
IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMKKworICAgIGJvb2wgdmFsdWVEYXRhQ2hhclJh
d0VxdWFsKGNvbnN0IENTU1BhcnNlclRva2VuJiBvdGhlcikgY29uc3Q7CisKKyAgICAvLyBtX3Zh
bHVlLi4uIGlzIGFuIHVucGFja2VkIFN0cmluZ1ZpZXcgc28gdGhhdCB3ZSBjYW4gcGFjayBpdAor
ICAgIC8vIHRpZ2h0bHkgd2l0aCB0aGUgcmVzdCBvZiB0aGlzIG9iamVjdCBmb3IgYSBzbWFsbGVy
IG9iamVjdCBzaXplLgorICAgIGJvb2wgbV92YWx1ZUlzOEJpdCA6IDE7CisgICAgdW5zaWduZWQg
bV92YWx1ZUxlbmd0aDsKKyAgICBjb25zdCB2b2lkKiBtX3ZhbHVlRGF0YUNoYXJSYXc7IC8vIEVp
dGhlciBMQ2hhciogb3IgVUNoYXIqLgorCisgICAgdW5pb24geworICAgICAgICBVQ2hhciBtX2Rl
bGltaXRlcjsKKyAgICAgICAgSGFzaFRva2VuVHlwZSBtX2hhc2hUb2tlblR5cGU7CisgICAgICAg
IGRvdWJsZSBtX251bWVyaWNWYWx1ZTsKKyAgICAgICAgbXV0YWJsZSBpbnQgbV9pZDsKKworICAg
ICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgVUNoYXIzMiBzdGFydDsKKyAgICAgICAgICAgIFVD
aGFyMzIgZW5kOworICAgICAgICB9IG1fdW5pY29kZVJhbmdlOworICAgIH07Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NTUGFyc2VyVG9rZW5faApJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlblJhbmdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuUmFuZ2UuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVG9r
ZW5SYW5nZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NiBAQAorLy8gQ29weXJpZ2h0
IDIwMTQgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRp
b24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8v
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJhbmdlLmgiCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworQ1NTUGFyc2VyVG9rZW4mIENTU1BhcnNlclRva2VuUmFuZ2U6OmVv
ZlRva2VuKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q1NTUGFyc2VyVG9rZW4+IGVv
ZlRva2VuKEVPRlRva2VuKTsKKyAgICByZXR1cm4gZW9mVG9rZW4uZ2V0KCk7Cit9CisKK0NTU1Bh
cnNlclRva2VuUmFuZ2UgQ1NTUGFyc2VyVG9rZW5SYW5nZTo6bWFrZVN1YlJhbmdlKGNvbnN0IENT
U1BhcnNlclRva2VuKiBmaXJzdCwgY29uc3QgQ1NTUGFyc2VyVG9rZW4qIGxhc3QpIGNvbnN0Cit7
CisgICAgaWYgKGZpcnN0ID09ICZlb2ZUb2tlbigpKQorICAgICAgICBmaXJzdCA9IG1fbGFzdDsK
KyAgICBpZiAobGFzdCA9PSAmZW9mVG9rZW4oKSkKKyAgICAgICAgbGFzdCA9IG1fbGFzdDsKKyAg
ICBBU1NFUlQoZmlyc3QgPD0gbGFzdCk7CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuUmFuZ2Uo
Zmlyc3QsIGxhc3QpOworfQorCitDU1NQYXJzZXJUb2tlblJhbmdlIENTU1BhcnNlclRva2VuUmFu
Z2U6OmNvbnN1bWVCbG9jaygpCit7CisgICAgQVNTRVJUKHBlZWsoKS5nZXRCbG9ja1R5cGUoKSA9
PSBDU1NQYXJzZXJUb2tlbjo6QmxvY2tTdGFydCk7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4q
IHN0YXJ0ID0gJnBlZWsoKSArIDE7CisgICAgdW5zaWduZWQgbmVzdGluZ0xldmVsID0gMDsKKyAg
ICBkbyB7CisgICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IGNvbnN1bWUoKTsK
KyAgICAgICAgaWYgKHRva2VuLmdldEJsb2NrVHlwZSgpID09IENTU1BhcnNlclRva2VuOjpCbG9j
a1N0YXJ0KQorICAgICAgICAgICAgbmVzdGluZ0xldmVsKys7CisgICAgICAgIGVsc2UgaWYgKHRv
a2VuLmdldEJsb2NrVHlwZSgpID09IENTU1BhcnNlclRva2VuOjpCbG9ja0VuZCkKKyAgICAgICAg
ICAgIG5lc3RpbmdMZXZlbC0tOworICAgIH0gd2hpbGUgKG5lc3RpbmdMZXZlbCAmJiBtX2ZpcnN0
IDwgbV9sYXN0KTsKKworICAgIGlmIChuZXN0aW5nTGV2ZWwpCisgICAgICAgIHJldHVybiBtYWtl
U3ViUmFuZ2Uoc3RhcnQsIG1fZmlyc3QpOyAvLyBFbmRlZCBhdCBFT0YKKyAgICByZXR1cm4gbWFr
ZVN1YlJhbmdlKHN0YXJ0LCBtX2ZpcnN0IC0gMSk7Cit9CisKK3ZvaWQgQ1NTUGFyc2VyVG9rZW5S
YW5nZTo6Y29uc3VtZUNvbXBvbmVudFZhbHVlKCkKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBn
b2luZyB0byBkbyBtdWx0aXBsZSBwYXNzZXMgb3ZlciBsYXJnZSBzZWN0aW9ucyBvZiBhIHN0eWxl
c2hlZXQuCisgICAgLy8gV2Ugc2hvdWxkIGNvbnNpZGVyIG9wdGltaXNpbmcgdGhpcyBieSBwcmVj
b21wdXRpbmcgd2hlcmUgZWFjaCBibG9jayBlbmRzLgorICAgIHVuc2lnbmVkIG5lc3RpbmdMZXZl
bCA9IDA7CisgICAgZG8geworICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSBj
b25zdW1lKCk7CisgICAgICAgIGlmICh0b2tlbi5nZXRCbG9ja1R5cGUoKSA9PSBDU1NQYXJzZXJU
b2tlbjo6QmxvY2tTdGFydCkKKyAgICAgICAgICAgIG5lc3RpbmdMZXZlbCsrOworICAgICAgICBl
bHNlIGlmICh0b2tlbi5nZXRCbG9ja1R5cGUoKSA9PSBDU1NQYXJzZXJUb2tlbjo6QmxvY2tFbmQp
CisgICAgICAgICAgICBuZXN0aW5nTGV2ZWwtLTsKKyAgICB9IHdoaWxlIChuZXN0aW5nTGV2ZWwg
JiYgbV9maXJzdCA8IG1fbGFzdCk7Cit9CisKK1N0cmluZyBDU1NQYXJzZXJUb2tlblJhbmdlOjpz
ZXJpYWxpemUoKSBjb25zdAoreworICAgIC8vIFdlJ3JlIHN1cHBvc2VkIHRvIGluc2VydCBjb21t
ZW50cyBiZXR3ZWVuIGNlcnRhaW4gcGFpcnMgb2YgdG9rZW4gdHlwZXMKKyAgICAvLyBhcyBwZXIg
c3BlYywgYnV0IHNpbmNlIHRoaXMgaXMgY3VycmVudGx5IG9ubHkgdXNlZCBmb3IgQHN1cHBvcnRz
IENTU09NCisgICAgLy8gd2UganVzdCBnZXQgdGhlc2UgY2FzZXMgd3JvbmcgYW5kIGF2b2lkIHRo
ZSBhZGRpdGlvbmFsIGNvbXBsZXhpdHkuCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAg
IGZvciAoY29uc3QgQ1NTUGFyc2VyVG9rZW4qIGl0ID0gbV9maXJzdDsgaXQgPCBtX2xhc3Q7ICsr
aXQpCisgICAgICAgIGl0LT5zZXJpYWxpemUoYnVpbGRlcik7CisgICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlblJhbmdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlblJhbmdlLmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlblJhbmdlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDUgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJv
bWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZuZGVmIENTU1BhcnNlclRva2VuUmFuZ2VfaAorI2Rl
ZmluZSBDU1NQYXJzZXJUb2tlblJhbmdlX2gKKworI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuLmgi
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEEg
Q1NTUGFyc2VyVG9rZW5SYW5nZSBpcyBhbiBpdGVyYXRvciBvdmVyIGEgc3VicmFuZ2Ugb2YgYSB2
ZWN0b3Igb2YgQ1NTUGFyc2VyVG9rZW5zLgorLy8gQWNjZXNzaW5nIG91dHNpZGUgb2YgdGhlIHJh
bmdlIHdpbGwgcmV0dXJuIGFuIGVuZGxlc3Mgc3RyZWFtIG9mIEVPRiB0b2tlbnMuCisvLyBUaGlz
IGNsYXNzIHJlZmVycyB0byBoYWxmLW9wZW4gaW50ZXJ2YWxzIFtmaXJzdCwgbGFzdCkuCitjbGFz
cyBDU1NQYXJzZXJUb2tlblJhbmdlIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTxzaXplX3QgaW5s
aW5lQnVmZmVyPgorICAgIENTU1BhcnNlclRva2VuUmFuZ2UoY29uc3QgVmVjdG9yPENTU1BhcnNl
clRva2VuLCBpbmxpbmVCdWZmZXI+JiB2ZWN0b3IpCisgICAgICAgIDogbV9maXJzdCh2ZWN0b3Iu
YmVnaW4oKSkKKyAgICAgICAgLCBtX2xhc3QodmVjdG9yLmVuZCgpKQorICAgIHsKKyAgICB9CisK
KyAgICAvLyBUaGlzIHNob3VsZCBiZSBjYWxsZWQgb24gYSByYW5nZSB3aXRoIHRva2VucyByZXR1
cm5lZCBieSB0aGF0IHJhbmdlLgorICAgIENTU1BhcnNlclRva2VuUmFuZ2UgbWFrZVN1YlJhbmdl
KGNvbnN0IENTU1BhcnNlclRva2VuKiBmaXJzdCwgY29uc3QgQ1NTUGFyc2VyVG9rZW4qIGxhc3Qp
IGNvbnN0OworCisgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3QgPT0gbV9s
YXN0OyB9CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4qIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1f
bGFzdDsgfQorCisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHBlZWsodW5zaWduZWQgb2Zmc2V0
ID0gMCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2ZpcnN0ICsgb2Zmc2V0ID49IG1fbGFz
dCkKKyAgICAgICAgICAgIHJldHVybiBlb2ZUb2tlbigpOworICAgICAgICByZXR1cm4gKihtX2Zp
cnN0ICsgb2Zmc2V0KTsKKyAgICB9CisKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgY29uc3Vt
ZSgpCisgICAgeworICAgICAgICBpZiAobV9maXJzdCA9PSBtX2xhc3QpCisgICAgICAgICAgICBy
ZXR1cm4gZW9mVG9rZW4oKTsKKyAgICAgICAgcmV0dXJuICptX2ZpcnN0Kys7CisgICAgfQorCisg
ICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIGNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkKKyAg
ICB7CisgICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiByZXN1bHQgPSBjb25zdW1lKCk7Cisg
ICAgICAgIGNvbnN1bWVXaGl0ZXNwYWNlKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorCisgICAgLy8gVGhlIHJldHVybmVkIHJhbmdlIGRvZXNuJ3QgaW5jbHVkZSB0aGUgYnJhY2tl
dHMKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGNvbnN1bWVCbG9jaygpOworCisgICAgdm9pZCBj
b25zdW1lQ29tcG9uZW50VmFsdWUoKTsKKworICAgIHZvaWQgY29uc3VtZVdoaXRlc3BhY2UoKQor
ICAgIHsKKyAgICAgICAgd2hpbGUgKHBlZWsoKS50eXBlKCkgPT0gV2hpdGVzcGFjZVRva2VuKQor
ICAgICAgICAgICAgKyttX2ZpcnN0OworICAgIH0KKworICAgIFN0cmluZyBzZXJpYWxpemUoKSBj
b25zdDsKKworICAgIGNvbnN0IENTU1BhcnNlclRva2VuKiBiZWdpbigpIGNvbnN0IHsgcmV0dXJu
IG1fZmlyc3Q7IH0KKworICAgIHN0YXRpYyBDU1NQYXJzZXJUb2tlbiYgZW9mVG9rZW4oKTsKKwor
cHJpdmF0ZToKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlKGNvbnN0IENTU1BhcnNlclRva2VuKiBm
aXJzdCwgY29uc3QgQ1NTUGFyc2VyVG9rZW4qIGxhc3QpCisgICAgICAgIDogbV9maXJzdChmaXJz
dCkKKyAgICAgICAgLCBtX2xhc3QobGFzdCkKKyAgICB7IH0KKworICAgIGNvbnN0IENTU1BhcnNl
clRva2VuKiBtX2ZpcnN0OworICAgIGNvbnN0IENTU1BhcnNlclRva2VuKiBtX2xhc3Q7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NQYXJzZXJUb2tlblJhbmdl
X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJv
cGVydHlQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDc4MyBAQAorLy8gQ29w
eXJpZ2h0IDIwMTUgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0
cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNlci5oIgorCisjaW5jbHVkZSAiQ1NTQmFz
aWNTaGFwZXMuaCIKKyNpbmNsdWRlICJDU1NCb3JkZXJJbWFnZS5oIgorI2luY2x1ZGUgIkNTU0Nv
bnRlbnREaXN0cmlidXRpb25WYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUu
aCIKKy8vIEZJWE1FLU5FV1BBUlNFUiAjaW5jbHVkZSAiQ1NTQ3VzdG9tSWRlbnRWYWx1ZS5oIgor
I2luY2x1ZGUgIkNTU0ZvbnRGYWNlU3JjVmFsdWUuaCIKKy8vIEZJWE1FLU5FV1BBUlNFUiAjaW5j
bHVkZSAiQ1NTRm9udEZhbWlseVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTRm9udEZlYXR1cmVWYWx1
ZS5oIgorI2luY2x1ZGUgIkNTU0Z1bmN0aW9uVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NHcmlkQXV0
b1JlcGVhdFZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTR3JpZExpbmVOYW1lc1ZhbHVlLmgiCisjaW5j
bHVkZSAiQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0luaGVyaXRl
ZFZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTSW5pdGlhbFZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUGFy
c2VyRmFzdFBhdGhzLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VySWRpb21zLmgiCisvLyBGSVhNRS1O
RVdQQVJTRVIgI2luY2x1ZGUgIkNTU1BhdGhWYWx1ZS5oIgorLy8gRklYTUUtTkVXUEFSU0VSICNp
bmNsdWRlICJDU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NQcmlt
aXRpdmVWYWx1ZU1hcHBpbmdzLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
LmgiCisvLyBGSVhNRS1ORVdQQVJTRVIgI2luY2x1ZGUgIkNTU1F1YWRWYWx1ZS5oIgorI2luY2x1
ZGUgIkNTU1JlZmxlY3RWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1NoYWRvd1ZhbHVlLmgiCisvLyBG
SVhNRS1ORVdQQVJTRVIgI2luY2x1ZGUgIkNTU1N0cmluZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQ1NT
VGltaW5nRnVuY3Rpb25WYWx1ZS5oIgorLy8gRklYTUUtTkVXUEFSU0VSICNpbmNsdWRlICJDU1NV
UklWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1VuaWNvZGVSYW5nZVZhbHVlLmgiCisjaW5jbHVkZSAi
Q1NTVW5zZXRWYWx1ZS5oIgorLy8gRklYTUUtTkVXUEFSU0VSICNpbmNsdWRlICJDU1NWYWx1ZVBh
aXIuaCIKKy8vIEZJWE1FLU5FV1BBUlNFUiAjaW5jbHVkZSAiQ1NTVmFyaWFibGVSZWZlcmVuY2VW
YWx1ZS5oIgorLy8gRklYTUUtTkVXUEFSU0VSICNpbmNsdWRlICJDU1NWYXJpYWJsZVBhcnNlci5o
IgorI2luY2x1ZGUgIkNvdW50ZXIuaCIKKyNpbmNsdWRlICJGb250RmFjZS5oIgorI2luY2x1ZGUg
Ikhhc2hUb29scy5oIgorI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCisjaW5jbHVkZSAiUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlNWR1BhdGhVdGlsaXRpZXMuaCIKKyNpbmNs
dWRlICJTdHlsZVByb3BlcnR5U2hvcnRoYW5kLmgiCisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dGF0aWMgYm9vbCBoYXNQcmVmaXgoY29uc3QgY2hhciogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgs
IGNvbnN0IGNoYXIqIHByZWZpeCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgaWYgKCFwcmVmaXhbaV0pCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgaWYgKHN0cmluZ1tpXSAhPSBwcmVmaXhbaV0pCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworI2lmIFBMQVRGT1JN
KElPUykKK3N0YXRpYyB2b2lkIGNzc1Byb3BlcnR5TmFtZUlPU0FsaWFzaW5nKGNvbnN0IGNoYXIq
IHByb3BlcnR5TmFtZSwgY29uc3QgY2hhciomIHByb3BlcnR5TmFtZUFsaWFzLCB1bnNpZ25lZCYg
bmV3TGVuZ3RoKQoreworICAgIGlmICghc3RyY21wKHByb3BlcnR5TmFtZSwgIi13ZWJraXQtaHlw
aGVuYXRlLWxvY2FsZSIpKSB7CisgICAgICAgIC8vIFdvcmtlZCBpbiBpT1MgNC4yLgorICAgICAg
ICBzdGF0aWMgY29uc3QgY2hhciB3ZWJraXRMb2NhbGVbXSA9ICItd2Via2l0LWxvY2FsZSI7Cisg
ICAgICAgIHByb3BlcnR5TmFtZUFsaWFzID0gd2Via2l0TG9jYWxlOworICAgICAgICBuZXdMZW5n
dGggPSBzdHJsZW4od2Via2l0TG9jYWxlKTsKKyAgICB9Cit9CisjZW5kaWYKKwordGVtcGxhdGUg
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgQ1NTUHJvcGVydHlJRCBjc3NQcm9wZXJ0
eUlEKGNvbnN0IENoYXJhY3RlclR5cGUqIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgbGVuZ3RoKQor
eworICAgIGNoYXIgYnVmZmVyW21heENTU1Byb3BlcnR5TmFtZUxlbmd0aCArIDEgKyAxXTsgLy8g
MSB0byB0dXJuICJhcHBsZSIvImtodG1sIiBpbnRvICJ3ZWJraXQiLCAxIGZvciBudWxsIGNoYXJh
Y3RlcgorICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0gbGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgQ2hhcmFjdGVyVHlwZSBjID0gcHJvcGVydHlOYW1lW2ldOworICAgICAgICBpZiAo
IWMgfHwgYyA+PSAweDdGKQorICAgICAgICAgICAgcmV0dXJuIENTU1Byb3BlcnR5SW52YWxpZDsg
Ly8gaWxsZWdhbCBjaGFyYWN0ZXIKKyAgICAgICAgYnVmZmVyW2ldID0gdG9BU0NJSUxvd2VyKGMp
OworICAgIH0KKyAgICBidWZmZXJbbGVuZ3RoXSA9ICdcMCc7CisgICAgCisgICAgY29uc3QgY2hh
ciogbmFtZSA9IGJ1ZmZlcjsKKyAgICBpZiAoYnVmZmVyWzBdID09ICctJykgeworI2lmIEVOQUJM
RShMRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykKKyAgICAgICAgLy8gSWYgdGhlIHByZWZpeCBp
cyAtYXBwbGUtIG9yIC1raHRtbC0sIGNoYW5nZSBpdCB0byAtd2Via2l0LS4KKyAgICAgICAgLy8g
VGhpcyBtYWtlcyB0aGUgc3RyaW5nIG9uZSBjaGFyYWN0ZXIgbG9uZ2VyLgorICAgICAgICBpZiAo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5sZWdhY3lDU1NWZW5kb3JQ
cmVmaXhlc0VuYWJsZWQoKQorICAgICAgICAgICAgJiYgKGhhc1ByZWZpeChidWZmZXIsIGxlbmd0
aCwgIi1hcHBsZS0iKSB8fCBoYXNQcmVmaXgoYnVmZmVyLCBsZW5ndGgsICIta2h0bWwtIikpKSB7
CisgICAgICAgICAgICBtZW1tb3ZlKGJ1ZmZlciArIDcsIGJ1ZmZlciArIDYsIGxlbmd0aCArIDEg
LSA2KTsKKyAgICAgICAgICAgIG1lbWNweShidWZmZXIsICItd2Via2l0IiwgNyk7CisgICAgICAg
ICAgICArK2xlbmd0aDsKKyAgICAgICAgfQorI2VuZGlmCisjaWYgUExBVEZPUk0oSU9TKQorICAg
ICAgICBjc3NQcm9wZXJ0eU5hbWVJT1NBbGlhc2luZyhidWZmZXIsIG5hbWUsIGxlbmd0aCk7Cisj
ZW5kaWYKKyAgICB9CisgICAgCisgICAgY29uc3QgUHJvcGVydHkqIGhhc2hUYWJsZUVudHJ5ID0g
ZmluZFByb3BlcnR5KG5hbWUsIGxlbmd0aCk7CisgICAgcmV0dXJuIGhhc2hUYWJsZUVudHJ5ID8g
c3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaGFzaFRhYmxlRW50cnktPmlkKSA6IENTU1Byb3Bl
cnR5SW52YWxpZDsKK30KKworc3RhdGljIGJvb2wgaXNBcHBsZUxlZ2FjeUNzc1ZhbHVlS2V5d29y
ZChjb25zdCBjaGFyKiB2YWx1ZUtleXdvcmQsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBzdGF0
aWMgY29uc3QgY2hhciBhcHBsZVByZWZpeFtdID0gIi1hcHBsZS0iOworICAgIHN0YXRpYyBjb25z
dCBjaGFyIGFwcGxlU3lzdGVtUHJlZml4W10gPSAiLWFwcGxlLXN5c3RlbSI7CisgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIGFwcGxlV2lyZWxlc3NQbGF5YmFja1RhcmdldEFjdGl2ZSA9IGdldFZhbHVl
TmFtZShDU1NWYWx1ZUFwcGxlV2lyZWxlc3NQbGF5YmFja1RhcmdldEFjdGl2ZSk7CisgICAgCisg
ICAgcmV0dXJuIGhhc1ByZWZpeCh2YWx1ZUtleXdvcmQsIGxlbmd0aCwgYXBwbGVQcmVmaXgpCisg
ICAgJiYgIWhhc1ByZWZpeCh2YWx1ZUtleXdvcmQsIGxlbmd0aCwgYXBwbGVTeXN0ZW1QcmVmaXgp
CisgICAgJiYgIVdURjo6ZXF1YWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHZhbHVl
S2V5d29yZCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihhcHBsZVdpcmVsZXNzUGxh
eWJhY2tUYXJnZXRBY3RpdmUpLCBsZW5ndGgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4KK3N0YXRpYyBDU1NWYWx1ZUlEIGNzc1ZhbHVlS2V5d29yZElEKGNvbnN0IENo
YXJhY3RlclR5cGUqIHZhbHVlS2V5d29yZCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGNoYXIg
YnVmZmVyW21heENTU1ZhbHVlS2V5d29yZExlbmd0aCArIDEgKyAxXTsgLy8gMSB0byB0dXJuICJh
cHBsZSIvImtodG1sIiBpbnRvICJ3ZWJraXQiLCAxIGZvciBudWxsIGNoYXJhY3RlcgorICAgIAor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0gbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgQ2hh
cmFjdGVyVHlwZSBjID0gdmFsdWVLZXl3b3JkW2ldOworICAgICAgICBpZiAoIWMgfHwgYyA+PSAw
eDdGKQorICAgICAgICAgICAgcmV0dXJuIENTU1ZhbHVlSW52YWxpZDsgLy8gaWxsZWdhbCBrZXl3
b3JkLgorICAgICAgICBidWZmZXJbaV0gPSBXVEY6OnRvQVNDSUlMb3dlcihjKTsKKyAgICB9Cisg
ICAgYnVmZmVyW2xlbmd0aF0gPSAnXDAnOworICAgIAorICAgIGlmIChidWZmZXJbMF0gPT0gJy0n
KSB7CisgICAgICAgIC8vIElmIHRoZSBwcmVmaXggaXMgLWFwcGxlLSBvciAta2h0bWwtLCBjaGFu
Z2UgaXQgdG8gLXdlYmtpdC0uCisgICAgICAgIC8vIFRoaXMgbWFrZXMgdGhlIHN0cmluZyBvbmUg
Y2hhcmFjdGVyIGxvbmdlci4KKyAgICAgICAgLy8gT24gaU9TIHdlIGRvbid0IHdhbnQgdG8gY2hh
bmdlIHZhbHVlcyBzdGFydGluZyB3aXRoIC1hcHBsZS1zeXN0ZW0gdG8gLXdlYmtpdC1zeXN0ZW0u
CisgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBtYW5nbGluZyB3aXRob3V0IGJyZWFraW5n
IHRoZSB3ZWIuCisgICAgICAgIGlmIChpc0FwcGxlTGVnYWN5Q3NzVmFsdWVLZXl3b3JkKGJ1ZmZl
ciwgbGVuZ3RoKSB8fCBoYXNQcmVmaXgoYnVmZmVyLCBsZW5ndGgsICIta2h0bWwtIikpIHsKKyAg
ICAgICAgICAgIG1lbW1vdmUoYnVmZmVyICsgNywgYnVmZmVyICsgNiwgbGVuZ3RoICsgMSAtIDYp
OworICAgICAgICAgICAgbWVtY3B5KGJ1ZmZlciwgIi13ZWJraXQiLCA3KTsKKyAgICAgICAgICAg
ICsrbGVuZ3RoOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGNvbnN0IFZhbHVlKiBoYXNo
VGFibGVFbnRyeSA9IGZpbmRWYWx1ZShidWZmZXIsIGxlbmd0aCk7CisgICAgcmV0dXJuIGhhc2hU
YWJsZUVudHJ5ID8gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJRD4oaGFzaFRhYmxlRW50cnktPmlkKSA6
IENTU1ZhbHVlSW52YWxpZDsKK30KKworQ1NTVmFsdWVJRCBjc3NWYWx1ZUtleXdvcmRJRChTdHJp
bmdWaWV3IHN0cmluZykKK3sKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7
CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiBDU1NWYWx1ZUludmFsaWQ7CisgICAg
aWYgKGxlbmd0aCA+IG1heENTU1ZhbHVlS2V5d29yZExlbmd0aCkKKyAgICAgICAgcmV0dXJuIENT
U1ZhbHVlSW52YWxpZDsKKyAgICAKKyAgICByZXR1cm4gc3RyaW5nLmlzOEJpdCgpID8gY3NzVmFs
dWVLZXl3b3JkSUQoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCkgOiBjc3NWYWx1ZUtleXdv
cmRJRChzdHJpbmcuY2hhcmFjdGVyczE2KCksIGxlbmd0aCk7Cit9CisKK0NTU1Byb3BlcnR5SUQg
dW5yZXNvbHZlZENTU1Byb3BlcnR5SUQoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAgIAorICAgIGlmICghbGVuZ3RoKQorICAg
ICAgICByZXR1cm4gQ1NTUHJvcGVydHlJbnZhbGlkOworICAgIGlmIChsZW5ndGggPiBtYXhDU1NQ
cm9wZXJ0eU5hbWVMZW5ndGgpCisgICAgICAgIHJldHVybiBDU1NQcm9wZXJ0eUludmFsaWQ7Cisg
ICAgCisgICAgcmV0dXJuIHN0cmluZy5pczhCaXQoKSA/IGNzc1Byb3BlcnR5SUQoc3RyaW5nLmNo
YXJhY3RlcnM4KCksIGxlbmd0aCkgOiBjc3NQcm9wZXJ0eUlEKHN0cmluZy5jaGFyYWN0ZXJzMTYo
KSwgbGVuZ3RoKTsKK30KKyAgICAKKy8vIEZJWE1FLU5FV1BBUlNFUgorLy8gQ29tbWVudCBvdXQg
cHJvcGVydHkgcGFyc2luZyBmb3Igbm93LgorLyoKK3VzaW5nIG5hbWVzcGFjZSBDU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnM7CisKKworQ1NTUHJvcGVydHlQYXJzZXI6OkNTU1Byb3BlcnR5UGFyc2Vy
KGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLAorICAgIGNvbnN0IENTU1BhcnNlckNv
bnRleHQmIGNvbnRleHQsIFZlY3RvcjxDU1NQcm9wZXJ0eSwgMjU2PiogcGFyc2VkUHJvcGVydGll
cykKKyAgICA6IG1fcmFuZ2UocmFuZ2UpCisgICAgLCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAs
IG1fcGFyc2VkUHJvcGVydGllcyhwYXJzZWRQcm9wZXJ0aWVzKQoreworICAgIG1fcmFuZ2UuY29u
c3VtZVdoaXRlc3BhY2UoKTsKK30KKwordm9pZCBDU1NQcm9wZXJ0eVBhcnNlcjo6YWRkUHJvcGVy
dHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTUHJvcGVydHlJRCBjdXJyZW50U2hvcnRoYW5k
LCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBib29sIGltcGxpY2l0KQor
eworICAgIEFTU0VSVCghaXNQcm9wZXJ0eUFsaWFzKHByb3BlcnR5KSk7CisKKyAgICBpbnQgc2hv
cnRoYW5kSW5kZXggPSAwOworICAgIGJvb2wgc2V0RnJvbVNob3J0aGFuZCA9IGZhbHNlOworCisg
ICAgaWYgKGN1cnJlbnRTaG9ydGhhbmQpIHsKKyAgICAgICAgVmVjdG9yPFN0eWxlUHJvcGVydHlT
aG9ydGhhbmQsIDQ+IHNob3J0aGFuZHM7CisgICAgICAgIGdldE1hdGNoaW5nU2hvcnRoYW5kc0Zv
ckxvbmdoYW5kKHByb3BlcnR5LCAmc2hvcnRoYW5kcyk7CisgICAgICAgIHNldEZyb21TaG9ydGhh
bmQgPSB0cnVlOworICAgICAgICBpZiAoc2hvcnRoYW5kcy5zaXplKCkgPiAxKQorICAgICAgICAg
ICAgc2hvcnRoYW5kSW5kZXggPSBpbmRleE9mU2hvcnRoYW5kRm9yTG9uZ2hhbmQoY3VycmVudFNo
b3J0aGFuZCwgc2hvcnRoYW5kcyk7CisgICAgfQorCisgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLT5h
cHBlbmQoQ1NTUHJvcGVydHkocHJvcGVydHksIHZhbHVlLCBpbXBvcnRhbnQsIHNldEZyb21TaG9y
dGhhbmQsIHNob3J0aGFuZEluZGV4LCBpbXBsaWNpdCkpOworfQorCit2b2lkIENTU1Byb3BlcnR5
UGFyc2VyOjphZGRFeHBhbmRlZFByb3BlcnR5Rm9yVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlLCBib29sIGltcG9ydGFudCkKK3sKKyAgICBjb25zdCBT
dHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQgPSBzaG9ydGhhbmRGb3JQcm9wZXJ0eShw
cm9wZXJ0eSk7CisgICAgdW5zaWduZWQgc2hvcnRoYW5kTGVuZ3RoID0gc2hvcnRoYW5kLmxlbmd0
aCgpOworICAgIEFTU0VSVChzaG9ydGhhbmRMZW5ndGgpOworICAgIGNvbnN0IENTU1Byb3BlcnR5
SUQqIGxvbmdoYW5kcyA9IHNob3J0aGFuZC5wcm9wZXJ0aWVzKCk7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHNob3J0aGFuZExlbmd0aDsgKytpKQorICAgICAgICBhZGRQcm9wZXJ0eShs
b25naGFuZHNbaV0sIHByb3BlcnR5LCB2YWx1ZSwgaW1wb3J0YW50KTsKK30KKworYm9vbCBDU1NQ
cm9wZXJ0eVBhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0
eSwgYm9vbCBpbXBvcnRhbnQsCisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Us
IGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsCisgICAgVmVjdG9yPENTU1Byb3BlcnR5
LCAyNTY+JiBwYXJzZWRQcm9wZXJ0aWVzLCBTdHlsZVJ1bGU6OlR5cGUgcnVsZVR5cGUpCit7Cisg
ICAgaW50IHBhcnNlZFByb3BlcnRpZXNTaXplID0gcGFyc2VkUHJvcGVydGllcy5zaXplKCk7CisK
KyAgICBDU1NQcm9wZXJ0eVBhcnNlciBwYXJzZXIocmFuZ2UsIGNvbnRleHQsICZwYXJzZWRQcm9w
ZXJ0aWVzKTsKKyAgICBDU1NQcm9wZXJ0eUlEIHJlc29sdmVkUHJvcGVydHkgPSByZXNvbHZlQ1NT
UHJvcGVydHlJRCh1bnJlc29sdmVkUHJvcGVydHkpOworICAgIGJvb2wgcGFyc2VTdWNjZXNzOwor
CisgICAgaWYgKHJ1bGVUeXBlID09IFN0eWxlUnVsZTo6Vmlld3BvcnQpIHsKKyAgICAgICAgcGFy
c2VTdWNjZXNzID0gKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc1ZpZXdwb3J0RW5hYmxlZCgp
IHx8IGlzVUFTaGVldEJlaGF2aW9yKGNvbnRleHQubW9kZSgpKSkKKyAgICAgICAgICAgICYmIHBh
cnNlci5wYXJzZVZpZXdwb3J0RGVzY3JpcHRvcihyZXNvbHZlZFByb3BlcnR5LCBpbXBvcnRhbnQp
OworICAgIH0gZWxzZSBpZiAocnVsZVR5cGUgPT0gU3R5bGVSdWxlOjpGb250RmFjZSkgeworICAg
ICAgICBwYXJzZVN1Y2Nlc3MgPSBwYXJzZXIucGFyc2VGb250RmFjZURlc2NyaXB0b3IocmVzb2x2
ZWRQcm9wZXJ0eSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcGFyc2VTdWNjZXNzID0gcGFyc2Vy
LnBhcnNlVmFsdWVTdGFydCh1bnJlc29sdmVkUHJvcGVydHksIGltcG9ydGFudCk7CisgICAgfQor
CisgICAgLy8gVGhpcyBkb2Vzbid0IGNvdW50IFVBIHN0eWxlIHNoZWV0cworICAgIGlmIChwYXJz
ZVN1Y2Nlc3MgJiYgY29udGV4dC51c2VDb3VudGVyKCkpCisgICAgICAgIGNvbnRleHQudXNlQ291
bnRlcigpLT5jb3VudChjb250ZXh0Lm1vZGUoKSwgdW5yZXNvbHZlZFByb3BlcnR5KTsKKworICAg
IGlmICghcGFyc2VTdWNjZXNzKQorICAgICAgICBwYXJzZWRQcm9wZXJ0aWVzLnNocmluayhwYXJz
ZWRQcm9wZXJ0aWVzU2l6ZSk7CisKKyAgICByZXR1cm4gcGFyc2VTdWNjZXNzOworfQorCitjb25z
dCBDU1NWYWx1ZSogQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlU2luZ2xlVmFsdWUoCisgICAgQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNv
bnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ1NTUHJvcGVydHlQYXJzZXIg
cGFyc2VyKHJhbmdlLCBjb250ZXh0LCBudWxscHRyKTsKKyAgICBjb25zdCBDU1NWYWx1ZSogdmFs
dWUgPSBwYXJzZXIucGFyc2VTaW5nbGVWYWx1ZShwcm9wZXJ0eSk7CisgICAgaWYgKCF2YWx1ZSB8
fCAhcGFyc2VyLm1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuIHZhbHVlOworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVZhbHVlU3Rh
cnQoQ1NTUHJvcGVydHlJRCB1bnJlc29sdmVkUHJvcGVydHksIGJvb2wgaW1wb3J0YW50KQorewor
ICAgIGlmIChjb25zdW1lQ1NTV2lkZUtleXdvcmQodW5yZXNvbHZlZFByb3BlcnR5LCBpbXBvcnRh
bnQpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIENTU1BhcnNlclRva2VuUmFuZ2Ugb3Jp
Z2luYWxSYW5nZSA9IG1fcmFuZ2U7CisgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkID0gcmVz
b2x2ZUNTU1Byb3BlcnR5SUQodW5yZXNvbHZlZFByb3BlcnR5KTsKKyAgICBib29sIGlzU2hvcnRo
YW5kID0gaXNTaG9ydGhhbmRQcm9wZXJ0eShwcm9wZXJ0eUlkKTsKKworICAgIGlmIChpc1Nob3J0
aGFuZCkgeworICAgICAgICAvLyBWYXJpYWJsZSByZWZlcmVuY2VzIHdpbGwgZmFpbCB0byBwYXJz
ZSBoZXJlIGFuZCB3aWxsIGZhbGwgb3V0IHRvIHRoZSB2YXJpYWJsZSByZWYgcGFyc2VyIGJlbG93
LgorICAgICAgICBpZiAocGFyc2VTaG9ydGhhbmQodW5yZXNvbHZlZFByb3BlcnR5LCBpbXBvcnRh
bnQpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYg
KGNvbnN0IENTU1ZhbHVlKiBwYXJzZWRWYWx1ZSA9IHBhcnNlU2luZ2xlVmFsdWUodW5yZXNvbHZl
ZFByb3BlcnR5KSkgeworICAgICAgICAgICAgaWYgKG1fcmFuZ2UuYXRFbmQoKSkgeworICAgICAg
ICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnR5SWQsIENTU1Byb3BlcnR5SW52YWxpZCwgKnBh
cnNlZFZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmNzc1ZhcmlhYmxlc0VuYWJsZWQoKSAmJiBDU1NWYXJpYWJsZVBhcnNlcjo6Y29udGFp
bnNWYWxpZFZhcmlhYmxlUmVmZXJlbmNlcyhvcmlnaW5hbFJhbmdlKSkgeworICAgICAgICBDU1NW
YXJpYWJsZVJlZmVyZW5jZVZhbHVlKiB2YXJpYWJsZSA9IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFs
dWU6OmNyZWF0ZShDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZShvcmlnaW5hbFJhbmdlKSk7CisKKyAg
ICAgICAgaWYgKGlzU2hvcnRoYW5kKSB7CisgICAgICAgICAgICBjb25zdCBDU1NQZW5kaW5nU3Vi
c3RpdHV0aW9uVmFsdWUmIHBlbmRpbmdWYWx1ZSA9ICpDU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFs
dWU6OmNyZWF0ZShwcm9wZXJ0eUlkLCB2YXJpYWJsZSk7CisgICAgICAgICAgICBhZGRFeHBhbmRl
ZFByb3BlcnR5Rm9yVmFsdWUocHJvcGVydHlJZCwgcGVuZGluZ1ZhbHVlLCBpbXBvcnRhbnQpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydHlJZCwgQ1NT
UHJvcGVydHlJbnZhbGlkLCAqdmFyaWFibGUsIGltcG9ydGFudCk7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorIAorYm9vbCBD
U1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUNTU1dpZGVLZXl3b3JkKENTU1Byb3BlcnR5SUQgdW5y
ZXNvbHZlZFByb3BlcnR5LCBib29sIGltcG9ydGFudCkKK3sKKyAgICBDU1NQYXJzZXJUb2tlblJh
bmdlIHJhbmdlQ29weSA9IG1fcmFuZ2U7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlQ29weS5j
b25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgaWYgKCFyYW5nZUNvcHkuYXRF
bmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1NTVmFsdWUqIHZhbHVlID0gbnVs
bHB0cjsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVJbml0aWFsKQorICAgICAgICB2YWx1ZSA9IENT
U0luaXRpYWxWYWx1ZTo6Y3JlYXRlKCk7CisgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVJbmhl
cml0KQorICAgICAgICB2YWx1ZSA9IENTU0luaGVyaXRlZFZhbHVlOjpjcmVhdGUoKTsKKyAgICBl
bHNlIGlmIChpZCA9PSBDU1NWYWx1ZVVuc2V0KQorICAgICAgICB2YWx1ZSA9IENTU1Vuc2V0VmFs
dWU6OmNyZWF0ZSgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eSA9IHJlc29sdmVDU1NQcm9wZXJ0eUlEKHVucmVzb2x2ZWRQcm9w
ZXJ0eSk7CisgICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kID0gc2hv
cnRoYW5kRm9yUHJvcGVydHkocHJvcGVydHkpOworICAgIGlmICghc2hvcnRoYW5kLmxlbmd0aCgp
KSB7CisgICAgICAgIGlmIChDU1NQcm9wZXJ0eU1ldGFkYXRhOjppc0Rlc2NyaXB0b3JPbmx5KHVu
cmVzb2x2ZWRQcm9wZXJ0eSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFk
ZFByb3BlcnR5KHByb3BlcnR5LCBDU1NQcm9wZXJ0eUludmFsaWQsICp2YWx1ZSwgaW1wb3J0YW50
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBhZGRFeHBhbmRlZFByb3BlcnR5Rm9yVmFsdWUocHJv
cGVydHksICp2YWx1ZSwgaW1wb3J0YW50KTsKKyAgICB9CisgICAgbV9yYW5nZSA9IHJhbmdlQ29w
eTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIENTU1ZhbHVlTGlzdCogY29uc3VtZVRy
YW5zZm9ybU9yaWdpbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBj
c3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzKQoreworICAgIENTU1ZhbHVlKiBy
ZXN1bHRYID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogcmVzdWx0WSA9IG51bGxwdHI7CisgICAg
aWYgKGNvbnN1bWVPbmVPclR3b1ZhbHVlZFBvc2l0aW9uKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1
bml0bGVzcywgcmVzdWx0WCwgcmVzdWx0WSkpIHsKKyAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICBsaXN0LT5h
cHBlbmQoKnJlc3VsdFgpOworICAgICAgICBsaXN0LT5hcHBlbmQoKnJlc3VsdFkpOworICAgICAg
ICBDU1NWYWx1ZSogcmVzdWx0WiA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUs
IFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBpZiAoIXJlc3VsdFopCisgICAgICAgICAgICByZXN1
bHRaID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGU6OlBpeGVscyk7CisgICAgICAgIGxpc3QtPmFwcGVuZCgqcmVzdWx0Wik7CisgICAgICAg
IHJldHVybiBsaXN0OworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworLy8gTWV0aG9k
cyBmb3IgY29uc3VtaW5nIG5vbi1zaG9ydGhhbmQgcHJvcGVydGllcyBzdGFydHMgaGVyZS4KK3N0
YXRpYyBDU1NWYWx1ZSogY29uc3VtZVdpbGxDaGFuZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIHZhbHVl
cyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAvLyBFdmVyeSBj
b21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBpZGVudGlmaWVycyBpcyBhIHZhbGlkIHdpbGwtY2hhbmdl
IHZhbHVlLAorICAgIC8vIHVubGVzcyB0aGUgbGlzdCBpbmNsdWRlcyBhbiBleHBsaWNpdGx5IGRp
c2FsbG93ZWQgaWRlbnRpZmllci4KKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBpZiAocmFu
Z2UucGVlaygpLnR5cGUoKSAhPSBJZGVudFRva2VuKQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIENTU1Byb3BlcnR5SUQgdW5yZXNvbHZlZFByb3BlcnR5ID0gdW5yZXNvbHZl
ZENTU1Byb3BlcnR5SUQocmFuZ2UucGVlaygpLnZhbHVlKCkpOworICAgICAgICBpZiAodW5yZXNv
bHZlZFByb3BlcnR5KSB7CisgICAgICAgICAgICBBU1NFUlQoQ1NTUHJvcGVydHlNZXRhZGF0YTo6
aXNFbmFibGVkUHJvcGVydHkodW5yZXNvbHZlZFByb3BlcnR5KSk7CisgICAgICAgICAgICAvLyBO
b3cgImFsbCIgaXMgdXNlZCBieSBib3RoIENTU1ZhbHVlIGFuZCBDU1NQcm9wZXJ0eVZhbHVlLgor
ICAgICAgICAgICAgLy8gTmVlZCB0byByZXR1cm4gbnVsbHB0ciB3aGVuIGN1cnJlbnRWYWx1ZSBp
cyBDU1NQcm9wZXJ0eUFsbC4KKyAgICAgICAgICAgIGlmICh1bnJlc29sdmVkUHJvcGVydHkgPT0g
Q1NTUHJvcGVydHlXaWxsQ2hhbmdlIHx8IHVucmVzb2x2ZWRQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0
eUFsbCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHZhbHVl
cy0+YXBwZW5kKCpDU1NDdXN0b21JZGVudFZhbHVlOjpjcmVhdGUodW5yZXNvbHZlZFByb3BlcnR5
KSk7CisgICAgICAgICAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3dpdGNoIChyYW5nZS5wZWVrKCkuaWQoKSkgewor
ICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVl
QWxsOgorICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUF1dG86CisgICAgICAgICAgICBjYXNlIENT
U1ZhbHVlRGVmYXVsdDoKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVJbml0aWFsOgorICAgICAg
ICAgICAgY2FzZSBDU1NWYWx1ZUluaGVyaXQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQ29udGVudHM6CisgICAgICAgICAgICBjYXNl
IENTU1ZhbHVlU2Nyb2xsUG9zaXRpb246CisgICAgICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQo
KmNvbnN1bWVJZGVudChyYW5nZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVz
cGFjZSgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgaWYgKHJhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiB2YWx1ZXM7Cit9CisKK3N0
YXRpYyBDU1NGb250RmVhdHVyZVZhbHVlKiBjb25zdW1lRm9udEZlYXR1cmVUYWcoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgLy8gRmVhdHVyZSB0YWcgbmFtZSBjb25zaXN0cyBv
ZiA0LWxldHRlciBjaGFyYWN0ZXJzLgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB0YWdOYW1l
TGVuZ3RoID0gNDsKKworICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLmNv
bnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgLy8gRmVhdHVyZSB0YWcgbmFtZSBjb21l
cyBmaXJzdAorICAgIGlmICh0b2tlbi50eXBlKCkgIT0gU3RyaW5nVG9rZW4pCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIGlmICh0b2tlbi52YWx1ZSgpLmxlbmd0aCgpICE9IHRhZ05hbWVM
ZW5ndGgpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIEF0b21pY1N0cmluZyB0YWcgPSB0
b2tlbi52YWx1ZSgpLnRvQXRvbWljU3RyaW5nKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHRhZ05hbWVMZW5ndGg7ICsraSkgeworICAgICAgICAvLyBMaW1pdHMgdGhlIHJhbmdlIG9m
IGNoYXJhY3RlcnMgdG8gMHgyMC0weDdFLCBmb2xsb3dpbmcgdGhlIHRhZyBuYW1lIHJ1bGVzIGRl
ZmllbmQgaW4gdGhlIE9wZW5UeXBlIHNwZWNpZmljYXRpb24uCisgICAgICAgIFVDaGFyIGNoYXJh
Y3RlciA9IHRhZ1tpXTsKKyAgICAgICAgaWYgKGNoYXJhY3RlciA8IDB4MjAgfHwgY2hhcmFjdGVy
ID4gMHg3RSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGludCB0
YWdWYWx1ZSA9IDE7CisgICAgLy8gRmVhdHVyZSB0YWcgdmFsdWVzIGNvdWxkIGZvbGxvdzogPGlu
dGVnZXI+IHwgb24gfCBvZmYKKyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBOdW1iZXJU
b2tlbiAmJiByYW5nZS5wZWVrKCkubnVtZXJpY1ZhbHVlVHlwZSgpID09IEludGVnZXJWYWx1ZVR5
cGUgJiYgcmFuZ2UucGVlaygpLm51bWVyaWNWYWx1ZSgpID49IDApIHsKKyAgICAgICAgdGFnVmFs
dWUgPSBjbGFtcFRvPGludD4ocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1l
cmljVmFsdWUoKSk7CisgICAgICAgIGlmICh0YWdWYWx1ZSA8IDApCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9IGVsc2UgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVl
T24gfHwgcmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVPZmYpIHsKKyAgICAgICAgdGFnVmFs
dWUgPSByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCkgPT0gQ1NTVmFsdWVP
bjsKKyAgICB9CisgICAgcmV0dXJuIENTU0ZvbnRGZWF0dXJlVmFsdWU6OmNyZWF0ZSh0YWcsIHRh
Z1ZhbHVlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lRm9udEZlYXR1cmVTZXR0aW5n
cyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlk
KCkgPT0gQ1NTVmFsdWVOb3JtYWwpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2Up
OworICAgIENTU1ZhbHVlTGlzdCogc2V0dGluZ3MgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1h
U2VwYXJhdGVkKCk7CisgICAgZG8geworICAgICAgICBDU1NGb250RmVhdHVyZVZhbHVlKiBmb250
RmVhdHVyZVZhbHVlID0gY29uc3VtZUZvbnRGZWF0dXJlVGFnKHJhbmdlKTsKKyAgICAgICAgaWYg
KCFmb250RmVhdHVyZVZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IHNldHRpbmdzLT5hcHBlbmQoKmZvbnRGZWF0dXJlVmFsdWUpOworICAgIH0gd2hpbGUgKGNvbnN1
bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKTsKKyAgICByZXR1cm4gc2V0dGluZ3M7
Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVBhZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVDdXN0
b21JZGVudChyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVF1b3RlcyhDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0g
Q1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICBD
U1NWYWx1ZUxpc3QqIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQo
KTsKKyAgICB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpIHsKKyAgICAgICAgQ1NTU3RyaW5nVmFsdWUq
IHBhcnNlZFZhbHVlID0gY29uc3VtZVN0cmluZyhyYW5nZSk7CisgICAgICAgIGlmICghcGFyc2Vk
VmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgdmFsdWVzLT5hcHBl
bmQoKnBhcnNlZFZhbHVlKTsKKyAgICB9CisgICAgaWYgKHZhbHVlcy0+bGVuZ3RoKCkgJiYgdmFs
dWVzLT5sZW5ndGgoKSAlIDIgPT0gMCkKKyAgICAgICAgcmV0dXJuIHZhbHVlczsKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lV2Via2l0SGlnaGxpZ2h0
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQo
KSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwor
ICAgIHJldHVybiBjb25zdW1lU3RyaW5nKHJhbmdlKTsKK30KKworY2xhc3MgRm9udFZhcmlhbnRM
aWdhdHVyZXNQYXJzZXIgeworICAgIFNUQUNLX0FMTE9DQVRFRCgpOworCitwdWJsaWM6CisgICAg
Rm9udFZhcmlhbnRMaWdhdHVyZXNQYXJzZXIoKQorICAgICAgICA6IG1fc2F3Q29tbW9uTGlnYXR1
cmVzVmFsdWUoZmFsc2UpCisgICAgICAgICwgbV9zYXdEaXNjcmV0aW9uYXJ5TGlnYXR1cmVzVmFs
dWUoZmFsc2UpCisgICAgICAgICwgbV9zYXdIaXN0b3JpY2FsTGlnYXR1cmVzVmFsdWUoZmFsc2Up
CisgICAgICAgICwgbV9zYXdDb250ZXh0dWFsTGlnYXR1cmVzVmFsdWUoZmFsc2UpCisgICAgICAg
ICwgbV9yZXN1bHQoQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpKQorICAgIHsK
KyAgICB9CisKKyAgICBlbnVtIGNsYXNzIFBhcnNlUmVzdWx0IHsKKyAgICAgICAgQ29uc3VtZWRW
YWx1ZSwKKyAgICAgICAgRGlzYWxsb3dlZFZhbHVlLAorICAgICAgICBVbmtub3duVmFsdWUKKyAg
ICB9OworCisgICAgUGFyc2VSZXN1bHQgY29uc3VtZUxpZ2F0dXJlKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQorICAgIHsKKyAgICAgICAgQ1NTVmFsdWVJRCB2YWx1ZUlEID0gcmFuZ2UucGVl
aygpLmlkKCk7CisgICAgICAgIHN3aXRjaCAodmFsdWVJRCkgeworICAgICAgICBjYXNlIENTU1Zh
bHVlTm9Db21tb25MaWdhdHVyZXM6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVDb21tb25MaWdhdHVy
ZXM6CisgICAgICAgICAgICBpZiAobV9zYXdDb21tb25MaWdhdHVyZXNWYWx1ZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHQ6OkRpc2FsbG93ZWRWYWx1ZTsKKyAgICAgICAgICAg
IG1fc2F3Q29tbW9uTGlnYXR1cmVzVmFsdWUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQ1NTVmFsdWVOb0Rpc2NyZXRpb25hcnlMaWdhdHVyZXM6CisgICAgICAgIGNh
c2UgQ1NTVmFsdWVEaXNjcmV0aW9uYXJ5TGlnYXR1cmVzOgorICAgICAgICAgICAgaWYgKG1fc2F3
RGlzY3JldGlvbmFyeUxpZ2F0dXJlc1ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBQYXJz
ZVJlc3VsdDo6RGlzYWxsb3dlZFZhbHVlOworICAgICAgICAgICAgbV9zYXdEaXNjcmV0aW9uYXJ5
TGlnYXR1cmVzVmFsdWUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
Q1NTVmFsdWVOb0hpc3RvcmljYWxMaWdhdHVyZXM6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVIaXN0
b3JpY2FsTGlnYXR1cmVzOgorICAgICAgICAgICAgaWYgKG1fc2F3SGlzdG9yaWNhbExpZ2F0dXJl
c1ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBQYXJzZVJlc3VsdDo6RGlzYWxsb3dlZFZh
bHVlOworICAgICAgICAgICAgbV9zYXdIaXN0b3JpY2FsTGlnYXR1cmVzVmFsdWUgPSB0cnVlOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVOb0NvbnRleHR1YWw6Cisg
ICAgICAgIGNhc2UgQ1NTVmFsdWVDb250ZXh0dWFsOgorICAgICAgICAgICAgaWYgKG1fc2F3Q29u
dGV4dHVhbExpZ2F0dXJlc1ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBQYXJzZVJlc3Vs
dDo6RGlzYWxsb3dlZFZhbHVlOworICAgICAgICAgICAgbV9zYXdDb250ZXh0dWFsTGlnYXR1cmVz
VmFsdWUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHQ6OlVua25vd25WYWx1ZTsKKyAgICAgICAgfQorICAg
ICAgICBtX3Jlc3VsdC0+YXBwZW5kKCpjb25zdW1lSWRlbnQocmFuZ2UpKTsKKyAgICAgICAgcmV0
dXJuIFBhcnNlUmVzdWx0OjpDb25zdW1lZFZhbHVlOworICAgIH0KKworICAgIENTU1ZhbHVlKiBm
aW5hbGl6ZVZhbHVlKCkKKyAgICB7CisgICAgICAgIGlmICghbV9yZXN1bHQtPmxlbmd0aCgpKQor
ICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENT
U1ZhbHVlTm9ybWFsKTsKKyAgICAgICAgcmV0dXJuIG1fcmVzdWx0LnJlbGVhc2UoKTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX3Nhd0NvbW1vbkxpZ2F0dXJlc1ZhbHVlOworICAgIGJv
b2wgbV9zYXdEaXNjcmV0aW9uYXJ5TGlnYXR1cmVzVmFsdWU7CisgICAgYm9vbCBtX3Nhd0hpc3Rv
cmljYWxMaWdhdHVyZXNWYWx1ZTsKKyAgICBib29sIG1fc2F3Q29udGV4dHVhbExpZ2F0dXJlc1Zh
bHVlOworICAgIE1lbWJlcjxDU1NWYWx1ZUxpc3Q+IG1fcmVzdWx0OworfTsKKworc3RhdGljIENT
U1ZhbHVlKiBjb25zdW1lRm9udFZhcmlhbnRMaWdhdHVyZXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9ybWFsIHx8
IHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVJZGVudChyYW5nZSk7CisKKyAgICBGb250VmFyaWFudExpZ2F0dXJlc1BhcnNlciBsaWdhdHVy
ZXNQYXJzZXI7CisgICAgZG8geworICAgICAgICBpZiAobGlnYXR1cmVzUGFyc2VyLmNvbnN1bWVM
aWdhdHVyZShyYW5nZSkgIT0KKyAgICAgICAgICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzUGFyc2Vy
OjpQYXJzZVJlc3VsdDo6Q29uc3VtZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgpKTsKKworICAgIHJldHVybiBsaWdhdHVyZXNQ
YXJzZXIuZmluYWxpemVWYWx1ZSgpOworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNv
bnN1bWVGb250VmFyaWFudENhcHMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAg
cmV0dXJuIGNvbnN1bWVJZGVudDxDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVTbWFsbENhcHMsIENT
U1ZhbHVlQWxsU21hbGxDYXBzLAorICAgICAgICBDU1NWYWx1ZVBldGl0ZUNhcHMsIENTU1ZhbHVl
QWxsUGV0aXRlQ2FwcywKKyAgICAgICAgQ1NTVmFsdWVVbmljYXNlLCBDU1NWYWx1ZVRpdGxpbmdD
YXBzPihyYW5nZSk7Cit9CisKK2NsYXNzIEZvbnRWYXJpYW50TnVtZXJpY1BhcnNlciB7CisgICAg
U1RBQ0tfQUxMT0NBVEVEKCk7CisKK3B1YmxpYzoKKyAgICBGb250VmFyaWFudE51bWVyaWNQYXJz
ZXIoKQorICAgICAgICA6IG1fc2F3TnVtZXJpY0ZpZ3VyZVZhbHVlKGZhbHNlKQorICAgICAgICAs
IG1fc2F3TnVtZXJpY1NwYWNpbmdWYWx1ZShmYWxzZSkKKyAgICAgICAgLCBtX3Nhd051bWVyaWNG
cmFjdGlvblZhbHVlKGZhbHNlKQorICAgICAgICAsIG1fc2F3T3JkaW5hbFZhbHVlKGZhbHNlKQor
ICAgICAgICAsIG1fc2F3U2xhc2hlZFplcm9WYWx1ZShmYWxzZSkKKyAgICAgICAgLCBtX3Jlc3Vs
dChDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCkpCisgICAgeworICAgIH0KKwor
ICAgIGVudW0gY2xhc3MgUGFyc2VSZXN1bHQgeworICAgICAgICBDb25zdW1lZFZhbHVlLAorICAg
ICAgICBEaXNhbGxvd2VkVmFsdWUsCisgICAgICAgIFVua25vd25WYWx1ZQorICAgIH07CisKKyAg
ICBQYXJzZVJlc3VsdCBjb25zdW1lTnVtZXJpYyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkK
KyAgICB7CisgICAgICAgIENTU1ZhbHVlSUQgdmFsdWVJRCA9IHJhbmdlLnBlZWsoKS5pZCgpOwor
ICAgICAgICBzd2l0Y2ggKHZhbHVlSUQpIHsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUxpbmluZ051
bXM6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVPbGRzdHlsZU51bXM6CisgICAgICAgICAgICBpZiAo
bV9zYXdOdW1lcmljRmlndXJlVmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFBhcnNlUmVz
dWx0OjpEaXNhbGxvd2VkVmFsdWU7CisgICAgICAgICAgICBtX3Nhd051bWVyaWNGaWd1cmVWYWx1
ZSA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVByb3Bv
cnRpb25hbE51bXM6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVUYWJ1bGFyTnVtczoKKyAgICAgICAg
ICAgIGlmIChtX3Nhd051bWVyaWNTcGFjaW5nVmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJu
IFBhcnNlUmVzdWx0OjpEaXNhbGxvd2VkVmFsdWU7CisgICAgICAgICAgICBtX3Nhd051bWVyaWNT
cGFjaW5nVmFsdWUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NT
VmFsdWVEaWFnb25hbEZyYWN0aW9uczoKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVN0YWNrZWRGcmFj
dGlvbnM6CisgICAgICAgICAgICBpZiAobV9zYXdOdW1lcmljRnJhY3Rpb25WYWx1ZSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHQ6OkRpc2FsbG93ZWRWYWx1ZTsKKyAgICAgICAg
ICAgIG1fc2F3TnVtZXJpY0ZyYWN0aW9uVmFsdWUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQ1NTVmFsdWVPcmRpbmFsOgorICAgICAgICAgICAgaWYgKG1fc2F3T3Jk
aW5hbFZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBQYXJzZVJlc3VsdDo6RGlzYWxsb3dl
ZFZhbHVlOworICAgICAgICAgICAgbV9zYXdPcmRpbmFsVmFsdWUgPSB0cnVlOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVTbGFzaGVkWmVybzoKKyAgICAgICAgICAg
IGlmIChtX3Nhd1NsYXNoZWRaZXJvVmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFBhcnNl
UmVzdWx0OjpEaXNhbGxvd2VkVmFsdWU7CisgICAgICAgICAgICBtX3Nhd1NsYXNoZWRaZXJvVmFs
dWUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICByZXR1cm4gUGFyc2VSZXN1bHQ6OlVua25vd25WYWx1ZTsKKyAgICAgICAgfQorICAgICAg
ICBtX3Jlc3VsdC0+YXBwZW5kKCpjb25zdW1lSWRlbnQocmFuZ2UpKTsKKyAgICAgICAgcmV0dXJu
IFBhcnNlUmVzdWx0OjpDb25zdW1lZFZhbHVlOworICAgIH0KKworICAgIENTU1ZhbHVlKiBmaW5h
bGl6ZVZhbHVlKCkKKyAgICB7CisgICAgICAgIGlmICghbV9yZXN1bHQtPmxlbmd0aCgpKQorICAg
ICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1Zh
bHVlTm9ybWFsKTsKKyAgICAgICAgcmV0dXJuIG1fcmVzdWx0LnJlbGVhc2UoKTsKKyAgICB9CisK
KworcHJpdmF0ZToKKyAgICBib29sIG1fc2F3TnVtZXJpY0ZpZ3VyZVZhbHVlOworICAgIGJvb2wg
bV9zYXdOdW1lcmljU3BhY2luZ1ZhbHVlOworICAgIGJvb2wgbV9zYXdOdW1lcmljRnJhY3Rpb25W
YWx1ZTsKKyAgICBib29sIG1fc2F3T3JkaW5hbFZhbHVlOworICAgIGJvb2wgbV9zYXdTbGFzaGVk
WmVyb1ZhbHVlOworICAgIE1lbWJlcjxDU1NWYWx1ZUxpc3Q+IG1fcmVzdWx0OworfTsKKworc3Rh
dGljIENTU1ZhbHVlKiBjb25zdW1lRm9udFZhcmlhbnROdW1lcmljKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vcm1h
bCkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBGb250VmFyaWFu
dE51bWVyaWNQYXJzZXIgbnVtZXJpY1BhcnNlcjsKKyAgICBkbyB7CisgICAgICAgIGlmIChudW1l
cmljUGFyc2VyLmNvbnN1bWVOdW1lcmljKHJhbmdlKSAhPQorICAgICAgICAgICAgRm9udFZhcmlh
bnROdW1lcmljUGFyc2VyOjpQYXJzZVJlc3VsdDo6Q29uc3VtZWRWYWx1ZSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgpKTsKKworICAgIHJl
dHVybiBudW1lcmljUGFyc2VyLmZpbmFsaXplVmFsdWUoKTsKK30KKworc3RhdGljIENTU1ByaW1p
dGl2ZVZhbHVlKiBjb25zdW1lRm9udFZhcmlhbnRDU1MyMShDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSkKK3sKKyAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1
ZVNtYWxsQ2Fwcz4ocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVGb250VmFy
aWFudExpc3QoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTVmFsdWVMaXN0
KiB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgZG8g
eworICAgICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBbGwpIHsKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VGb250VmFyaWFudCgpIGlt
cGxlbWVudHMKKyAgICAgICAgICAgIC8vIHRoZSBvbGQgY3NzMyBkcmFmdDoKKyAgICAgICAgICAg
IC8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDIvV0QtY3NzMy13ZWJmb250cy0yMDAyMDgwMi8j
Zm9udC12YXJpYW50CisgICAgICAgICAgICAvLyAnYWxsJyBpcyBvbmx5IGFsbG93ZWQgaW4gQGZv
bnQtZmFjZSBhbmQgd2l0aCBubyBvdGhlciB2YWx1ZXMuCisgICAgICAgICAgICBpZiAodmFsdWVz
LT5sZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAg
IHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgICAgICB9CisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBmb250VmFyaWFudCA9IGNvbnN1bWVGb250VmFyaWFudENTUzIxKHJhbmdlKTsK
KyAgICAgICAgaWYgKGZvbnRWYXJpYW50KQorICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoKmZv
bnRWYXJpYW50KTsKKyAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNl
KHJhbmdlKSk7CisKKyAgICBpZiAodmFsdWVzLT5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIHZh
bHVlczsKKworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFs
dWUqIGNvbnN1bWVGb250V2VpZ2h0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAg
IGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICBpZiAodG9r
ZW4uaWQoKSA+PSBDU1NWYWx1ZU5vcm1hbCAmJiB0b2tlbi5pZCgpIDw9IENTU1ZhbHVlTGlnaHRl
cikKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgaWYgKHRva2VuLnR5
cGUoKSAhPSBOdW1iZXJUb2tlbiB8fCB0b2tlbi5udW1lcmljVmFsdWVUeXBlKCkgIT0gSW50ZWdl
clZhbHVlVHlwZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaW50IHdlaWdodCA9IHN0
YXRpY19jYXN0PGludD4odG9rZW4ubnVtZXJpY1ZhbHVlKCkpOworICAgIGlmICgod2VpZ2h0ICUg
MTAwKSB8fCB3ZWlnaHQgPCAxMDAgfHwgd2VpZ2h0ID4gOTAwKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihzdGF0aWNfY2FzdDxDU1NWYWx1
ZUlEPihDU1NWYWx1ZTEwMCArIHdlaWdodCAvIDEwMCAtIDEpKTsKK30KKworc3RhdGljIFN0cmlu
ZyBjb25jYXRlbmF0ZUZhbWlseU5hbWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7Cisg
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJvb2wgYWRkZWRTcGFjZSA9IGZhbHNlOwor
ICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiBmaXJzdFRva2VuID0gcmFuZ2UucGVlaygpOworICAg
IHdoaWxlIChyYW5nZS5wZWVrKCkudHlwZSgpID09IElkZW50VG9rZW4pIHsKKyAgICAgICAgaWYg
KCFidWlsZGVyLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsK
KyAgICAgICAgICAgIGFkZGVkU3BhY2UgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKSk7Cisg
ICAgfQorICAgIGlmICghYWRkZWRTcGFjZSAmJiBpc0NTU1dpZGVLZXl3b3JkKGZpcnN0VG9rZW4u
aWQoKSkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0
cmluZygpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVGYW1pbHlOYW1lKENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgpID09IFN0
cmluZ1Rva2VuKQorICAgICAgICByZXR1cm4gQ1NTRm9udEZhbWlseVZhbHVlOjpjcmVhdGUocmFu
Z2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgpLnRvU3RyaW5nKCkpOworICAg
IGlmIChyYW5nZS5wZWVrKCkudHlwZSgpICE9IElkZW50VG9rZW4pCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIFN0cmluZyBmYW1pbHlOYW1lID0gY29uY2F0ZW5hdGVGYW1pbHlOYW1lKHJh
bmdlKTsKKyAgICBpZiAoZmFtaWx5TmFtZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIENTU0ZvbnRGYW1pbHlWYWx1ZTo6Y3JlYXRlKGZhbWlseU5hbWUpOwor
fQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVHZW5lcmljRmFtaWx5KENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBjb25zdW1lSWRlbnRSYW5nZShyYW5nZSwgQ1NT
VmFsdWVTZXJpZiwgQ1NTVmFsdWVXZWJraXRCb2R5KTsKK30KKworc3RhdGljIENTU1ZhbHVlTGlz
dCogY29uc3VtZUZvbnRGYW1pbHkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAg
Q1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgp
OworICAgIGRvIHsKKyAgICAgICAgQ1NTVmFsdWUqIHBhcnNlZFZhbHVlID0gY29uc3VtZUdlbmVy
aWNGYW1pbHkocmFuZ2UpOworICAgICAgICBpZiAocGFyc2VkVmFsdWUpIHsKKyAgICAgICAgICAg
IGxpc3QtPmFwcGVuZCgqcGFyc2VkVmFsdWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lRmFtaWx5TmFtZShyYW5nZSk7CisgICAgICAgICAgICBp
ZiAocGFyc2VkVmFsdWUpIHsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoKnBhcnNlZFZh
bHVlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJ
bmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSk7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRp
YyBDU1NWYWx1ZSogY29uc3VtZVNwYWNpbmcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkg
PT0gQ1NTVmFsdWVOb3JtYWwpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwor
ICAgIC8vIEZJWE1FOiBhbGxvdyA8cGVyY2VudGFnZT5zIGluIHdvcmQtc3BhY2luZy4KKyAgICBy
ZXR1cm4gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCwg
VW5pdGxlc3NRdWlyazo6QWxsb3cpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVUYWJT
aXplKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1v
ZGUpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBhcnNlZFZhbHVlID0gY29uc3VtZUludGVn
ZXIocmFuZ2UsIDApOworICAgIGlmIChwYXJzZWRWYWx1ZSkKKyAgICAgICAgcmV0dXJuIHBhcnNl
ZFZhbHVlOworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBW
YWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVUZXh0
U2l6ZUFkanVzdChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQ
YXJzZXJNb2RlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8p
CisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIGlmIChyYW5nZS5wZWVr
KCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFu
Z2UpOworICAgIHJldHVybiBjb25zdW1lUGVyY2VudChyYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0
aXZlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lRm9udFNpemUoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWly
ayB1bml0bGVzcyA9IFVuaXRsZXNzUXVpcms6OkZvcmJpZCkKK3sKKyAgICBpZiAocmFuZ2UucGVl
aygpLmlkKCkgPj0gQ1NTVmFsdWVYeFNtYWxsICYmIHJhbmdlLnBlZWsoKS5pZCgpIDw9IENTU1Zh
bHVlTGFyZ2VyKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1
cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5n
ZU5vbk5lZ2F0aXZlLCB1bml0bGVzcyk7Cit9CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSog
Y29uc3VtZUxpbmVIZWlnaHQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1v
ZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFs
dWVOb3JtYWwpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIGxpbmVIZWlnaHQgPSBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJh
bmdlTm9uTmVnYXRpdmUpOworICAgIGlmIChsaW5lSGVpZ2h0KQorICAgICAgICByZXR1cm4gbGlu
ZUhlaWdodDsKKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFy
c2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKK30KKworc3RhdGljIENTU1ZhbHVlTGlz
dCogY29uc3VtZVJvdGF0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIEFT
U0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NJbmRlcGVuZGVudFRyYW5zZm9ybVByb3Bl
cnRpZXNFbmFibGVkKCkpOworICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IENTU1ZhbHVlTGlzdDo6
Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKworICAgIENTU1ZhbHVlKiByb3RhdGlvbiA9IGNvbnN1
bWVBbmdsZShyYW5nZSk7CisgICAgaWYgKCFyb3RhdGlvbikKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgbGlzdC0+YXBwZW5kKCpyb3RhdGlvbik7CisKKyAgICBpZiAocmFuZ2UuYXRFbmQo
KSkKKyAgICAgICAgcmV0dXJuIGxpc3Q7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
MzsgaSsrKSB7IC8vIDMgZGltZW5zaW9ucyBvZiByb3RhdGlvbgorICAgICAgICBDU1NWYWx1ZSog
ZGltZW5zaW9uID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAg
IGlmICghZGltZW5zaW9uKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGxp
c3QtPmFwcGVuZCgqZGltZW5zaW9uKTsKKyAgICB9CisKKyAgICByZXR1cm4gbGlzdDsKK30KKwor
c3RhdGljIENTU1ZhbHVlTGlzdCogY29uc3VtZVNjYWxlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlKQoreworICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NJbmRlcGVuZGVu
dFRyYW5zZm9ybVByb3BlcnRpZXNFbmFibGVkKCkpOworCisgICAgQ1NTVmFsdWUqIHNjYWxlID0g
Y29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKCFzY2FsZSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVM
aXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGxpc3QtPmFwcGVuZCgqc2NhbGUpOwor
ICAgIHNjYWxlID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYg
KHNjYWxlKSB7CisgICAgICAgIGxpc3QtPmFwcGVuZCgqc2NhbGUpOworICAgICAgICBzY2FsZSA9
IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBpZiAoc2NhbGUp
CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoKnNjYWxlKTsKKyAgICB9CisKKyAgICByZXR1cm4g
bGlzdDsKK30KKworc3RhdGljIENTU1ZhbHVlTGlzdCogY29uc3VtZVRyYW5zbGF0ZShDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAg
IEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NJbmRlcGVuZGVudFRyYW5zZm9ybVBy
b3BlcnRpZXNFbmFibGVkKCkpOworICAgIENTU1ZhbHVlKiB0cmFuc2xhdGUgPSBjb25zdW1lTGVu
Z3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBp
ZiAoIXRyYW5zbGF0ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NTVmFsdWVMaXN0
KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGxpc3Qt
PmFwcGVuZCgqdHJhbnNsYXRlKTsKKyAgICB0cmFuc2xhdGUgPSBjb25zdW1lTGVuZ3RoT3JQZXJj
ZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBpZiAodHJhbnNs
YXRlKSB7CisgICAgICAgIGxpc3QtPmFwcGVuZCgqdHJhbnNsYXRlKTsKKyAgICAgICAgdHJhbnNs
YXRlID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7
CisgICAgICAgIGlmICh0cmFuc2xhdGUpCisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoKnRyYW5z
bGF0ZSk7CisgICAgfQorCisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSog
Y29uc3VtZUNvdW50ZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGludCBkZWZhdWx0VmFs
dWUpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgZG8geworICAgICAg
ICBDU1NDdXN0b21JZGVudFZhbHVlKiBjb3VudGVyTmFtZSA9IGNvbnN1bWVDdXN0b21JZGVudChy
YW5nZSk7CisgICAgICAgIGlmICghY291bnRlck5hbWUpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgaW50IGkgPSBkZWZhdWx0VmFsdWU7CisgICAgICAgIGlmIChDU1NQcmlt
aXRpdmVWYWx1ZSogY291bnRlclZhbHVlID0gY29uc3VtZUludGVnZXIocmFuZ2UpKQorICAgICAg
ICAgICAgaSA9IGNsYW1wVG88aW50Pihjb3VudGVyVmFsdWUtPmdldERvdWJsZVZhbHVlKCkpOwor
ICAgICAgICBsaXN0LT5hcHBlbmQoKkNTU1ZhbHVlUGFpcjo6Y3JlYXRlKGNvdW50ZXJOYW1lLAor
ICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGU6OkludGVnZXIpLAorICAgICAgICAgICAgQ1NTVmFsdWVQYWlyOjpEcm9wSWRl
bnRpY2FsVmFsdWVzKSk7CisgICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpOworICAgIHJldHVy
biBsaXN0OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVQYWdlU2l6ZShDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlQTMs
IENTU1ZhbHVlQTQsIENTU1ZhbHVlQTUsIENTU1ZhbHVlQjQsIENTU1ZhbHVlQjUsIENTU1ZhbHVl
TGVkZ2VyLCBDU1NWYWx1ZUxlZ2FsLCBDU1NWYWx1ZUxldHRlcj4ocmFuZ2UpOworfQorCitzdGF0
aWMgQ1NTVmFsdWVMaXN0KiBjb25zdW1lU2l6ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Q1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIENTU1ZhbHVlTGlzdCogcmVzdWx0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworCisgICAgaWYgKHJhbmdl
LnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykgeworICAgICAgICByZXN1bHQtPmFwcGVuZCgq
Y29uc3VtZUlkZW50KHJhbmdlKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisg
ICAgaWYgKENTU1ZhbHVlKiB3aWR0aCA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1v
ZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSkpIHsKKyAgICAgICAgQ1NTVmFsdWUqIGhlaWdodCA9
IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2
ZSk7CisgICAgICAgIHJlc3VsdC0+YXBwZW5kKCp3aWR0aCk7CisgICAgICAgIGlmIChoZWlnaHQp
CisgICAgICAgICAgICByZXN1bHQtPmFwcGVuZCgqaGVpZ2h0KTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKKyAgICBDU1NWYWx1ZSogcGFnZVNpemUgPSBjb25zdW1lUGFnZVNpemUo
cmFuZ2UpOworICAgIENTU1ZhbHVlKiBvcmllbnRhdGlvbiA9IGNvbnN1bWVJZGVudDxDU1NWYWx1
ZVBvcnRyYWl0LCBDU1NWYWx1ZUxhbmRzY2FwZT4ocmFuZ2UpOworICAgIGlmICghcGFnZVNpemUp
CisgICAgICAgIHBhZ2VTaXplID0gY29uc3VtZVBhZ2VTaXplKHJhbmdlKTsKKworICAgIGlmICgh
b3JpZW50YXRpb24gJiYgIXBhZ2VTaXplKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBp
ZiAocGFnZVNpemUpCisgICAgICAgIHJlc3VsdC0+YXBwZW5kKCpwYWdlU2l6ZSk7CisgICAgaWYg
KG9yaWVudGF0aW9uKQorICAgICAgICByZXN1bHQtPmFwcGVuZCgqb3JpZW50YXRpb24pOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVNuYXBIZWlnaHQo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkK
K3sKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogdW5pdCA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNz
c1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgaWYgKCF1bml0KQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgbGlzdC0+YXBwZW5kKCp1bml0KTsKKwor
ICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZSogcG9zaXRpb24gPSBjb25zdW1lUG9zaXRpdmVJbnRl
Z2VyKHJhbmdlKSkgeworICAgICAgICBpZiAocG9zaXRpb24tPmdldEludFZhbHVlKCkgPiAxMDAp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgbGlzdC0+YXBwZW5kKCpwb3Np
dGlvbik7CisgICAgfQorCisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSog
Y29uc3VtZVRleHRJbmRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1v
ZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICAvLyBbIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IF0g
JiYgaGFuZ2luZz8gJiYgZWFjaC1saW5lPworICAgIC8vIEtleXdvcmRzIG9ubHkgYWxsb3dlZCB3
aGVuIGNzczNUZXh0IGlzIGVuYWJsZWQuCisgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworCisgICAgYm9vbCBoYXNMZW5ndGhPclBl
cmNlbnRhZ2UgPSBmYWxzZTsKKyAgICBib29sIGhhc0VhY2hMaW5lID0gZmFsc2U7CisgICAgYm9v
bCBoYXNIYW5naW5nID0gZmFsc2U7CisKKyAgICBkbyB7CisgICAgICAgIGlmICghaGFzTGVuZ3Ro
T3JQZXJjZW50YWdlKSB7CisgICAgICAgICAgICBpZiAoQ1NTVmFsdWUqIHRleHRJbmRlbnQgPSBj
b25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxs
LCBVbml0bGVzc1F1aXJrOjpBbGxvdykpIHsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQo
KnRleHRJbmRlbnQpOworICAgICAgICAgICAgICAgIGhhc0xlbmd0aE9yUGVyY2VudGFnZSA9IHRy
dWU7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzM1RleHRFbmFibGVkKCkp
IHsKKyAgICAgICAgICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICAg
ICAgICAgIGlmICghaGFzRWFjaExpbmUgJiYgaWQgPT0gQ1NTVmFsdWVFYWNoTGluZSkgeworICAg
ICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCgqY29uc3VtZUlkZW50KHJhbmdlKSk7CisgICAgICAg
ICAgICAgICAgaGFzRWFjaExpbmUgPSB0cnVlOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFoYXNIYW5naW5nICYmIGlkID09IENTU1Zh
bHVlSGFuZ2luZykgeworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCgqY29uc3VtZUlkZW50
KHJhbmdlKSk7CisgICAgICAgICAgICAgICAgaGFzSGFuZ2luZyA9IHRydWU7CisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpOworCisgICAgaWYgKCFoYXNM
ZW5ndGhPclBlcmNlbnRhZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJu
IGxpc3Q7Cit9CisKK3N0YXRpYyBib29sIHZhbGlkV2lkdGhPckhlaWdodEtleXdvcmQoQ1NTVmFs
dWVJRCBpZCwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVXZWJraXRNaW5Db250ZW50IHx8IGlkID09IENTU1ZhbHVlV2Via2l0TWF4Q29u
dGVudCB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdEZpbGxBdmFpbGFibGUgfHwgaWQgPT0gQ1NTVmFs
dWVXZWJraXRGaXRDb250ZW50CisgICAgICAgIHx8IGlkID09IENTU1ZhbHVlTWluQ29udGVudCB8
fCBpZCA9PSBDU1NWYWx1ZU1heENvbnRlbnQgfHwgaWQgPT0gQ1NTVmFsdWVGaXRDb250ZW50KSB7
CisgICAgICAgIGlmIChjb250ZXh0LnVzZUNvdW50ZXIoKSkgeworICAgICAgICAgICAgc3dpdGNo
IChpZCkgeworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdE1pbkNvbnRlbnQ6CisgICAg
ICAgICAgICAgICAgY29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkNTU1Zh
bHVlUHJlZml4ZWRNaW5Db250ZW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRNYXhDb250ZW50OgorICAgICAgICAgICAgICAgIGNvbnRl
eHQudXNlQ291bnRlcigpLT5jb3VudChVc2VDb3VudGVyOjpDU1NWYWx1ZVByZWZpeGVkTWF4Q29u
dGVudCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVl
V2Via2l0RmlsbEF2YWlsYWJsZToKKyAgICAgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIo
KS0+Y291bnQoVXNlQ291bnRlcjo6Q1NTVmFsdWVQcmVmaXhlZEZpbGxBdmFpbGFibGUpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEZpdENv
bnRlbnQ6CisgICAgICAgICAgICAgICAgY29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNv
dW50ZXI6OkNTU1ZhbHVlUHJlZml4ZWRGaXRDb250ZW50KTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lTWF4V2lkdGhPckhlaWdodChD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4
dCwgVW5pdGxlc3NRdWlyayB1bml0bGVzcyA9IFVuaXRsZXNzUXVpcms6OkZvcmJpZCkKK3sKKyAg
ICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbGlkV2lkdGhPckhl
aWdodEtleXdvcmQocmFuZ2UucGVlaygpLmlkKCksIGNvbnRleHQpKQorICAgICAgICByZXR1cm4g
Y29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChy
YW5nZSwgY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwgdW5pdGxlc3MpOwor
fQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVXaWR0aE9ySGVpZ2h0KENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBVbml0bGVzc1F1
aXJrIHVuaXRsZXNzID0gVW5pdGxlc3NRdWlyazo6Rm9yYmlkKQoreworICAgIGlmIChyYW5nZS5w
ZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsaWRXaWR0aE9ySGVpZ2h0S2V5d29yZChy
YW5nZS5wZWVrKCkuaWQoKSwgY29udGV4dCkpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQo
cmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjb250ZXh0
Lm1vZGUoKSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlLCB1bml0bGVzcyk7Cit9CisKK3N0YXRpYyBD
U1NWYWx1ZSogY29uc3VtZU1hcmdpbk9yT2Zmc2V0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCit7
CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNl
bnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwsIHVuaXRsZXNzKTsKK30KKwor
c3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lQ2xpcENvbXBvbmVudChDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlm
IChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBjb25z
dW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJz
ZXJNb2RlLCBWYWx1ZVJhbmdlQWxsLCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7Cit9CisKK3N0YXRp
YyBDU1NWYWx1ZSogY29uc3VtZUNsaXAoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1Bh
cnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0g
Q1NTVmFsdWVBdXRvKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAg
IGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpICE9IENTU1ZhbHVlUmVjdCkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1l
RnVuY3Rpb24ocmFuZ2UpOworICAgIC8vIHJlY3QodCwgciwgYiwgbCkgfHwgcmVjdCh0IHIgYiBs
KQorICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0b3AgPSBjb25zdW1lQ2xpcENvbXBvbmVudChhcmdz
LCBjc3NQYXJzZXJNb2RlKTsKKyAgICBpZiAoIXRvcCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgYm9vbCBuZWVkc0NvbW1hID0gY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShh
cmdzKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcmlnaHQgPSBjb25zdW1lQ2xpcENvbXBvbmVu
dChhcmdzLCBjc3NQYXJzZXJNb2RlKTsKKyAgICBpZiAoIXJpZ2h0IHx8IChuZWVkc0NvbW1hICYm
ICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGJvdHRvbSA9IGNvbnN1bWVDbGlwQ29t
cG9uZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUpOworICAgIGlmICghYm90dG9tIHx8IChuZWVkc0Nv
bW1hICYmICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGxlZnQgPSBjb25zdW1lQ2xp
cENvbXBvbmVudChhcmdzLCBjc3NQYXJzZXJNb2RlKTsKKyAgICBpZiAoIWxlZnQgfHwgIWFyZ3Mu
YXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIENTU1F1YWRWYWx1
ZTo6Y3JlYXRlKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCwgQ1NTUXVhZFZhbHVlOjpTZXJpYWxp
emVBc1JlY3QpOworfQorCitzdGF0aWMgYm9vbCBjb25zdW1lUGFuKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBDU1NWYWx1ZSomIHBhblgsIENTU1ZhbHVlKiYgcGFuWSkKK3sKKyAgICBDU1NW
YWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgaWYgKChpZCA9PSBDU1NWYWx1ZVBh
blggfHwgaWQgPT0gQ1NTVmFsdWVQYW5SaWdodCB8fCBpZCA9PSBDU1NWYWx1ZVBhbkxlZnQpICYm
ICFwYW5YKSB7CisgICAgICAgIGlmIChpZCAhPSBDU1NWYWx1ZVBhblggJiYgIVJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmNzc1RvdWNoQWN0aW9uUGFuRGlyZWN0aW9uc0VuYWJsZWQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcGFuWCA9IGNvbnN1bWVJZGVudChyYW5nZSk7
CisgICAgfSBlbHNlIGlmICgoaWQgPT0gQ1NTVmFsdWVQYW5ZIHx8IGlkID09IENTU1ZhbHVlUGFu
RG93biB8fCBpZCA9PSBDU1NWYWx1ZVBhblVwKSAmJiAhcGFuWSkgeworICAgICAgICBpZiAoaWQg
IT0gQ1NTVmFsdWVQYW5ZICYmICFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NUb3VjaEFjdGlv
blBhbkRpcmVjdGlvbnNFbmFibGVkKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHBhblkgPSBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBDU1NWYWx1
ZSogY29uc3VtZVRvdWNoQWN0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAg
IENTU1ZhbHVlTGlzdCogbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQo
KTsKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgaWYgKGlkID09
IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVNYW5p
cHVsYXRpb24pIHsKKyAgICAgICAgbGlzdC0+YXBwZW5kKCpjb25zdW1lSWRlbnQocmFuZ2UpKTsK
KyAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgfQorCisgICAgQ1NTVmFsdWUqIHBhblggPSBudWxs
cHRyOworICAgIENTU1ZhbHVlKiBwYW5ZID0gbnVsbHB0cjsKKyAgICBpZiAoIWNvbnN1bWVQYW4o
cmFuZ2UsIHBhblgsIHBhblkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIXJh
bmdlLmF0RW5kKCkgJiYgIWNvbnN1bWVQYW4ocmFuZ2UsIHBhblgsIHBhblkpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChwYW5YKQorICAgICAgICBsaXN0LT5hcHBlbmQoKnBh
blgpOworICAgIGlmIChwYW5ZKQorICAgICAgICBsaXN0LT5hcHBlbmQoKnBhblkpOworICAgIHJl
dHVybiBsaXN0OworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVMaW5lQ2xh
bXAoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS50
eXBlKCkgIT0gUGVyY2VudGFnZVRva2VuICYmIHJhbmdlLnBlZWsoKS50eXBlKCkgIT0gTnVtYmVy
VG9rZW4pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBj
bGFtcFZhbHVlID0gY29uc3VtZVBlcmNlbnQocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7
CisgICAgaWYgKGNsYW1wVmFsdWUpCisgICAgICAgIHJldHVybiBjbGFtcFZhbHVlOworICAgIC8v
IFdoZW4gc3BlY2lmeWluZyBudW1iZXIgb2YgbGluZXMsIGRvbid0IGFsbG93IDAgYXMgYSB2YWxp
ZCB2YWx1ZS4KKyAgICByZXR1cm4gY29uc3VtZVBvc2l0aXZlSW50ZWdlcihyYW5nZSk7Cit9CisK
K3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUxvY2FsZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBdXRvKQorICAgICAg
ICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZVN0cmluZyhy
YW5nZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUNvbHVtbldpZHRoKENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NW
YWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIC8vIEFs
d2F5cyBwYXJzZSBsZW5ndGhzIGluIHN0cmljdCBtb2RlIGhlcmUsIHNpbmNlIGl0IHdvdWxkIGJl
IGFtYmlndW91cyBvdGhlcndpc2Ugd2hlbiB1c2VkIGluCisgICAgLy8gdGhlICdjb2x1bW5zJyBz
aG9ydGhhbmQgcHJvcGVydHkuCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbHVtbldpZHRoID0g
Y29uc3VtZUxlbmd0aChyYW5nZSwgSFRNTFN0YW5kYXJkTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0
aXZlKTsKKyAgICBpZiAoIWNvbHVtbldpZHRoIHx8ICghY29sdW1uV2lkdGgtPmlzQ2FsY3VsYXRl
ZCgpICYmIGNvbHVtbldpZHRoLT5nZXREb3VibGVWYWx1ZSgpID09IDApKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY29sdW1uV2lkdGg7Cit9CisKK3N0YXRpYyBDU1NWYWx1
ZSogY29uc3VtZUNvbHVtbkNvdW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAg
IGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBj
b25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyKHJh
bmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQ29sdW1uR2FwKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgaWYg
KHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9ybWFsKQorICAgICAgICByZXR1cm4gY29u
c3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFy
c2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lQ29sdW1uU3BhbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1
cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlQWxsLCBDU1NWYWx1ZU5vbmU+KHJhbmdlKTsKK30KKwor
c3RhdGljIENTU1ZhbHVlKiBjb25zdW1lWm9vbShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Y29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBjb25zdCBDU1NQYXJzZXJU
b2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHpvb20g
PSBudWxscHRyOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSWRlbnRUb2tlbikgeworICAgICAg
ICB6b29tID0gY29uc3VtZUlkZW50PENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZVJlc2V0LCBDU1NW
YWx1ZURvY3VtZW50PihyYW5nZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgem9vbSA9IGNvbnN1
bWVQZXJjZW50KHJhbmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICBpZiAoIXpv
b20pCisgICAgICAgICAgICB6b29tID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZU5v
bk5lZ2F0aXZlKTsKKyAgICB9CisgICAgaWYgKHpvb20gJiYgY29udGV4dC51c2VDb3VudGVyKCkK
KyAgICAgICAgJiYgISh0b2tlbi5pZCgpID09IENTU1ZhbHVlTm9ybWFsCisgICAgICAgICAgICB8
fCAodG9rZW4udHlwZSgpID09IE51bWJlclRva2VuICYmIHpvb20tPmdldERvdWJsZVZhbHVlKCkg
PT0gMSkKKyAgICAgICAgICAgIHx8ICh0b2tlbi50eXBlKCkgPT0gUGVyY2VudGFnZVRva2VuICYm
IHpvb20tPmdldERvdWJsZVZhbHVlKCkgPT0gMTAwKSkpCisgICAgICAgIGNvbnRleHQudXNlQ291
bnRlcigpLT5jb3VudChVc2VDb3VudGVyOjpDU1Nab29tTm90RXF1YWxUb09uZSk7CisgICAgcmV0
dXJuIHpvb207Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUFuaW1hdGlvbkl0ZXJhdGlv
bkNvdW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVr
KCkuaWQoKSA9PSBDU1NWYWx1ZUluZmluaXRlKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50
KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZU5vbk5l
Z2F0aXZlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQW5pbWF0aW9uTmFtZShDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwg
Ym9vbCBhbGxvd1F1b3RlZE5hbWUpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENT
U1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBp
ZiAoYWxsb3dRdW90ZWROYW1lICYmIHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gU3RyaW5nVG9rZW4p
IHsKKyAgICAgICAgLy8gTGVnYWN5IHN1cHBvcnQgZm9yIHN0cmluZ3MgaW4gcHJlZml4ZWQgYW5p
bWF0aW9ucy4KKyAgICAgICAgaWYgKGNvbnRleHQudXNlQ291bnRlcigpKQorICAgICAgICAgICAg
Y29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OlF1b3RlZEFuaW1hdGlvbk5h
bWUpOworCisgICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLmNvbnN1
bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKHRva2VuLnZhbHVlKCksICJub25lIikpCisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKTsKKyAgICAgICAgcmV0dXJu
IENTU0N1c3RvbUlkZW50VmFsdWU6OmNyZWF0ZSh0b2tlbi52YWx1ZSgpLnRvU3RyaW5nKCkpOwor
ICAgIH0KKworICAgIHJldHVybiBjb25zdW1lQ3VzdG9tSWRlbnQocmFuZ2UpOworfQorCitzdGF0
aWMgQ1NTVmFsdWUqIGNvbnN1bWVUcmFuc2l0aW9uUHJvcGVydHkoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVl
aygpOworICAgIGlmICh0b2tlbi50eXBlKCkgIT0gSWRlbnRUb2tlbikKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgaWYgKHRva2VuLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICBy
ZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIGlmIChDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5ID0gdG9rZW4ucGFyc2VBc1VucmVzb2x2ZWRDU1NQcm9wZXJ0eUlEKCkpIHsKKyAgICAgICAg
QVNTRVJUKENTU1Byb3BlcnR5TWV0YWRhdGE6OmlzRW5hYmxlZFByb3BlcnR5KHByb3BlcnR5KSk7
CisgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIHJl
dHVybiBDU1NDdXN0b21JZGVudFZhbHVlOjpjcmVhdGUocHJvcGVydHkpOworICAgIH0KKyAgICBy
ZXR1cm4gY29uc3VtZUN1c3RvbUlkZW50KHJhbmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lU3RlcHMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQVNTRVJUKHJh
bmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVTdGVwcyk7CisgICAgQ1NTUGFyc2Vy
VG9rZW5SYW5nZSByYW5nZUNvcHkgPSByYW5nZTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFy
Z3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2VDb3B5KTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBzdGVwcyA9IGNvbnN1bWVQb3NpdGl2ZUludGVnZXIoYXJncyk7CisgICAgaWYgKCFzdGVwcykK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVw
UG9zaXRpb24gcG9zaXRpb24gPSBTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVwUG9zaXRpb246OkVO
RDsKKyAgICBpZiAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkgeworICAg
ICAgICBzd2l0Y2ggKGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpKSB7Cisg
ICAgICAgIGNhc2UgQ1NTVmFsdWVNaWRkbGU6CisgICAgICAgICAgICBpZiAoIVJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OndlYkFuaW1hdGlvbnNBUElFbmFibGVkKCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBwb3NpdGlvbiA9IFN0ZXBzVGltaW5nRnVuY3Rp
b246OlN0ZXBQb3NpdGlvbjo6TUlERExFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgQ1NTVmFsdWVTdGFydDoKKyAgICAgICAgICAgIHBvc2l0aW9uID0gU3RlcHNUaW1pbmdGdW5j
dGlvbjo6U3RlcFBvc2l0aW9uOjpTVEFSVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIENTU1ZhbHVlRW5kOgorICAgICAgICAgICAgcG9zaXRpb24gPSBTdGVwc1RpbWluZ0Z1bmN0
aW9uOjpTdGVwUG9zaXRpb246OkVORDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBpZiAoIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByYW5n
ZSA9IHJhbmdlQ29weTsKKyAgICByZXR1cm4gQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjpj
cmVhdGUoc3RlcHMtPmdldEludFZhbHVlKCksIHBvc2l0aW9uKTsKK30KKworc3RhdGljIENTU1Zh
bHVlKiBjb25zdW1lQ3ViaWNCZXppZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7Cisg
ICAgQVNTRVJUKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVDdWJpY0Jlemll
cik7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSByYW5nZTsKKyAgICBDU1NQ
YXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2VDb3B5KTsKKworICAg
IGRvdWJsZSB4MSwgeTEsIHgyLCB5MjsKKyAgICBpZiAoY29uc3VtZU51bWJlclJhdyhhcmdzLCB4
MSkKKyAgICAgICAgJiYgeDEgPj0gMCAmJiB4MSA8PSAxCisgICAgICAgICYmIGNvbnN1bWVDb21t
YUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykKKyAgICAgICAgJiYgY29uc3VtZU51bWJlclJhdyhh
cmdzLCB5MSkKKyAgICAgICAgJiYgY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdz
KQorICAgICAgICAmJiBjb25zdW1lTnVtYmVyUmF3KGFyZ3MsIHgyKQorICAgICAgICAmJiB4MiA+
PSAwICYmIHgyIDw9IDEKKyAgICAgICAgJiYgY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFj
ZShhcmdzKQorICAgICAgICAmJiBjb25zdW1lTnVtYmVyUmF3KGFyZ3MsIHkyKQorICAgICAgICAm
JiBhcmdzLmF0RW5kKCkpIHsKKyAgICAgICAgcmFuZ2UgPSByYW5nZUNvcHk7CisgICAgICAgIHJl
dHVybiBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZSh4MSwgeTEsIHgy
LCB5Mik7CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1
ZSogY29uc3VtZUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlKQoreworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVFYXNlIHx8IGlkID09IENTU1ZhbHVlTGluZWFyIHx8IGlkID09IENTU1Zh
bHVlRWFzZUluCisgICAgICAgIHx8IGlkID09IENTU1ZhbHVlRWFzZU91dCB8fCBpZCA9PSBDU1NW
YWx1ZUVhc2VJbk91dCB8fCBpZCA9PSBDU1NWYWx1ZVN0ZXBTdGFydAorICAgICAgICB8fCBpZCA9
PSBDU1NWYWx1ZVN0ZXBFbmQgfHwgaWQgPT0gQ1NTVmFsdWVTdGVwTWlkZGxlKQorICAgICAgICBy
ZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIENTU1ZhbHVlSUQgZnVuY3Rpb24gPSBy
YW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpOworICAgIGlmIChmdW5jdGlvbiA9PSBDU1NWYWx1ZVN0
ZXBzKQorICAgICAgICByZXR1cm4gY29uc3VtZVN0ZXBzKHJhbmdlKTsKKyAgICBpZiAoZnVuY3Rp
b24gPT0gQ1NTVmFsdWVDdWJpY0JlemllcikKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDdWJpY0Jl
emllcihyYW5nZSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSog
Y29uc3VtZUFuaW1hdGlvblZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBib29sIHVz
ZUxlZ2FjeVBhcnNpbmcpCit7CisgICAgc3dpdGNoIChwcm9wZXJ0eSkgeworICAgIGNhc2UgQ1NT
UHJvcGVydHlBbmltYXRpb25EZWxheToKKyAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvbkRl
bGF5OgorICAgICAgICByZXR1cm4gY29uc3VtZVRpbWUocmFuZ2UsIFZhbHVlUmFuZ2VBbGwpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25EaXJlY3Rpb246CisgICAgICAgIHJldHVybiBj
b25zdW1lSWRlbnQ8Q1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlQWx0ZXJuYXRlLCBDU1NWYWx1ZVJl
dmVyc2UsIENTU1ZhbHVlQWx0ZXJuYXRlUmV2ZXJzZT4ocmFuZ2UpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlBbmltYXRpb25EdXJhdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvbkR1
cmF0aW9uOgorICAgICAgICByZXR1cm4gY29uc3VtZVRpbWUocmFuZ2UsIFZhbHVlUmFuZ2VOb25O
ZWdhdGl2ZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkZpbGxNb2RlOgorICAgICAg
ICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVGb3J3YXJkcywgQ1NT
VmFsdWVCYWNrd2FyZHMsIENTU1ZhbHVlQm90aD4ocmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlBbmltYXRpb25JdGVyYXRpb25Db3VudDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVBbmltYXRp
b25JdGVyYXRpb25Db3VudChyYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbk5h
bWU6CisgICAgICAgIHJldHVybiBjb25zdW1lQW5pbWF0aW9uTmFtZShyYW5nZSwgY29udGV4dCwg
dXNlTGVnYWN5UGFyc2luZyk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvblBsYXlTdGF0
ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudDxDU1NWYWx1ZVJ1bm5pbmcsIENTU1ZhbHVl
UGF1c2VkPihyYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25Qcm9wZXJ0eToK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVUcmFuc2l0aW9uUHJvcGVydHkocmFuZ2UpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlBbmltYXRpb25UaW1pbmdGdW5jdGlvbjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOgorICAgICAgICByZXR1cm4gY29uc3VtZUFuaW1h
dGlvblRpbWluZ0Z1bmN0aW9uKHJhbmdlKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorfQorCitzdGF0
aWMgYm9vbCBpc1ZhbGlkQW5pbWF0aW9uUHJvcGVydHlMaXN0KENTU1Byb3BlcnR5SUQgcHJvcGVy
dHksIGNvbnN0IENTU1ZhbHVlTGlzdCYgdmFsdWVMaXN0KQoreworICAgIGlmIChwcm9wZXJ0eSAh
PSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25Qcm9wZXJ0eSB8fCB2YWx1ZUxpc3QubGVuZ3RoKCkgPCAy
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBmb3IgKGF1dG8mIHZhbHVlIDogdmFsdWVMaXN0
KSB7CisgICAgICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIHRvQ1NTUHJpbWl0
aXZlVmFsdWUoKnZhbHVlKS5pc1ZhbHVlSUQoKQorICAgICAgICAgICAgJiYgdG9DU1NQcmltaXRp
dmVWYWx1ZSgqdmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgQ1NT
VmFsdWVMaXN0KiBjb25zdW1lQW5pbWF0aW9uUHJvcGVydHlMaXN0KENTU1Byb3BlcnR5SUQgcHJv
cGVydHksIENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0
JiBjb250ZXh0LCBib29sIHVzZUxlZ2FjeVBhcnNpbmcpCit7CisgICAgQ1NTVmFsdWVMaXN0KiBs
aXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgIGRvIHsKKyAg
ICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gY29uc3VtZUFuaW1hdGlvblZhbHVlKHByb3BlcnR5LCBy
YW5nZSwgY29udGV4dCwgdXNlTGVnYWN5UGFyc2luZyk7CisgICAgICAgIGlmICghdmFsdWUpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgbGlzdC0+YXBwZW5kKCp2YWx1ZSk7
CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpOwor
ICAgIGlmICghaXNWYWxpZEFuaW1hdGlvblByb3BlcnR5TGlzdChwcm9wZXJ0eSwgKmxpc3QpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBBU1NFUlQobGlzdC0+bGVuZ3RoKCkpOworICAg
IHJldHVybiBsaXN0OworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lQW5pbWF0
aW9uU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCwgYm9v
bCB1c2VMZWdhY3lQYXJzaW5nLCBib29sIGltcG9ydGFudCkKK3sKKyAgICBjb25zdCB1bnNpZ25l
ZCBsb25naGFuZENvdW50ID0gc2hvcnRoYW5kLmxlbmd0aCgpOworICAgIENTU1ZhbHVlTGlzdCog
bG9uZ2hhbmRzWzhdOworICAgIEFTU0VSVChsb25naGFuZENvdW50IDw9IDgpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbG9uZ2hhbmRDb3VudDsgKytpKQorICAgICAgICBsb25naGFuZHNb
aV0gPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisKKyAgICBkbyB7Cisg
ICAgICAgIGJvb2wgcGFyc2VkTG9uZ2hhbmRbOF0gPSB7IGZhbHNlIH07CisgICAgICAgIGRvIHsK
KyAgICAgICAgICAgIGJvb2wgZm91bmRQcm9wZXJ0eSA9IGZhbHNlOworICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBsb25naGFuZENvdW50OyArK2kpIHsKKyAgICAgICAgICAgICAg
ICBpZiAocGFyc2VkTG9uZ2hhbmRbaV0pCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgICAgICAgICAgaWYgKENTU1ZhbHVlKiB2YWx1ZSA9IGNvbnN1bWVBbmltYXRpb25W
YWx1ZShzaG9ydGhhbmQucHJvcGVydGllcygpW2ldLCBtX3JhbmdlLCBtX2NvbnRleHQsIHVzZUxl
Z2FjeVBhcnNpbmcpKSB7CisgICAgICAgICAgICAgICAgICAgIHBhcnNlZExvbmdoYW5kW2ldID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgZm91bmRQcm9wZXJ0eSA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgIGxvbmdoYW5kc1tpXS0+YXBwZW5kKCp2YWx1ZSk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmICghZm91bmRQcm9wZXJ0eSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0gd2hpbGUgKCFtX3JhbmdlLmF0RW5kKCkgJiYgbV9yYW5nZS5wZWVrKCkudHlwZSgp
ICE9IENvbW1hVG9rZW4pOworCisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgbWFrZSBpbnZh
bGlkIGxvbmdoYW5kcywgc2VlIGNyYnVnLmNvbS8zODY0NTkKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsb25naGFuZENvdW50OyArK2kpIHsKKyAgICAgICAgICAgIGlmICghcGFyc2Vk
TG9uZ2hhbmRbaV0pCisgICAgICAgICAgICAgICAgbG9uZ2hhbmRzW2ldLT5hcHBlbmQoKkNTU0lu
aXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSk7CisgICAgICAgICAgICBwYXJzZWRM
b25naGFuZFtpXSA9IGZhbHNlOworICAgICAgICB9CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1h
SW5jbHVkaW5nV2hpdGVzcGFjZShtX3JhbmdlKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxvbmdoYW5kQ291bnQ7ICsraSkgeworICAgICAgICBpZiAoIWlzVmFsaWRBbmltYXRpb25Q
cm9wZXJ0eUxpc3Qoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSwgKmxvbmdoYW5kc1tpXSkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsb25naGFuZENvdW50OyArK2kpCisgICAgICAgIGFkZFByb3BlcnR5KHNob3J0aGFuZC5w
cm9wZXJ0aWVzKClbaV0sIHNob3J0aGFuZC5pZCgpLCAqbG9uZ2hhbmRzW2ldLCBpbXBvcnRhbnQp
OworCisgICAgcmV0dXJuIG1fcmFuZ2UuYXRFbmQoKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lWkluZGV4KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5n
ZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBjb25zdW1lSWRl
bnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lSW50ZWdlcihyYW5nZSk7Cit9CisKK3N0YXRp
YyBDU1NTaGFkb3dWYWx1ZSogcGFyc2VTaW5nbGVTaGFkb3coQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgYm9vbCBhbGxvd0luc2V0LCBib29s
IGFsbG93U3ByZWFkKQoreworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzdHlsZSA9IG51bGxwdHI7
CisgICAgQ1NTVmFsdWUqIGNvbG9yID0gbnVsbHB0cjsKKworICAgIGlmIChyYW5nZS5hdEVuZCgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0g
Q1NTVmFsdWVJbnNldCkgeworICAgICAgICBpZiAoIWFsbG93SW5zZXQpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgc3R5bGUgPSBjb25zdW1lSWRlbnQocmFuZ2UpOworICAg
IH0KKyAgICBjb2xvciA9IGNvbnN1bWVDb2xvcihyYW5nZSwgY3NzUGFyc2VyTW9kZSk7CisKKyAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogaG9yaXpvbnRhbE9mZnNldCA9IGNvbnN1bWVMZW5ndGgocmFu
Z2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgIGlmICghaG9yaXpvbnRhbE9m
ZnNldCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSog
dmVydGljYWxPZmZzZXQgPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1
ZVJhbmdlQWxsKTsKKyAgICBpZiAoIXZlcnRpY2FsT2Zmc2V0KQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBibHVyUmFkaXVzID0gY29uc3VtZUxlbmd0
aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHNwcmVhZERpc3RhbmNlID0gbnVsbHB0cjsKKyAgICBpZiAoYmx1clJhZGl1cykgewor
ICAgICAgICAvLyBCbHVyIHJhZGl1cyBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4KKyAgICAgICAgaWYg
KGJsdXJSYWRpdXMtPmdldERvdWJsZVZhbHVlKCkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIGlmIChhbGxvd1NwcmVhZCkKKyAgICAgICAgICAgIHNwcmVhZERpc3Rh
bmNlID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7
CisgICAgfQorCisgICAgaWYgKCFyYW5nZS5hdEVuZCgpKSB7CisgICAgICAgIGlmICghY29sb3Ip
CisgICAgICAgICAgICBjb2xvciA9IGNvbnN1bWVDb2xvcihyYW5nZSwgY3NzUGFyc2VyTW9kZSk7
CisgICAgICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUluc2V0KSB7CisgICAg
ICAgICAgICBpZiAoIWFsbG93SW5zZXQgfHwgc3R5bGUpCisgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgICAgICBzdHlsZSA9IGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgcmV0dXJuIENTU1NoYWRvd1ZhbHVlOjpjcmVhdGUoaG9yaXpvbnRh
bE9mZnNldCwgdmVydGljYWxPZmZzZXQsIGJsdXJSYWRpdXMsCisgICAgICAgIHNwcmVhZERpc3Rh
bmNlLCBzdHlsZSwgY29sb3IpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVTaGFkb3co
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwg
Ym9vbCBpc0JveFNoYWRvd1Byb3BlcnR5KQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9
PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisg
ICAgQ1NTVmFsdWVMaXN0KiBzaGFkb3dWYWx1ZUxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNv
bW1hU2VwYXJhdGVkKCk7CisgICAgZG8geworICAgICAgICBpZiAoQ1NTU2hhZG93VmFsdWUqIHNo
YWRvd1ZhbHVlID0gcGFyc2VTaW5nbGVTaGFkb3cocmFuZ2UsIGNzc1BhcnNlck1vZGUsIGlzQm94
U2hhZG93UHJvcGVydHksIGlzQm94U2hhZG93UHJvcGVydHkpKQorICAgICAgICAgICAgc2hhZG93
VmFsdWVMaXN0LT5hcHBlbmQoKnNoYWRvd1ZhbHVlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hp
dGVzcGFjZShyYW5nZSkpOworICAgIHJldHVybiBzaGFkb3dWYWx1ZUxpc3Q7Cit9CisKK3N0YXRp
YyBDU1NGdW5jdGlvblZhbHVlKiBjb25zdW1lRmlsdGVyRnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ1NT
VmFsdWVJRCBmaWx0ZXJUeXBlID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKTsKKyAgICBpZiAo
ZmlsdGVyVHlwZSA8IENTU1ZhbHVlSW52ZXJ0IHx8IGZpbHRlclR5cGUgPiBDU1NWYWx1ZURyb3BT
aGFkb3cpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIENTU1BhcnNlclRva2VuUmFuZ2Ug
YXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7CisgICAgQ1NTRnVuY3Rpb25WYWx1ZSogZmls
dGVyVmFsdWUgPSBDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUoZmlsdGVyVHlwZSk7CisgICAgQ1NT
VmFsdWUqIHBhcnNlZFZhbHVlID0gbnVsbHB0cjsKKworICAgIGlmIChmaWx0ZXJUeXBlID09IENT
U1ZhbHVlRHJvcFNoYWRvdykgeworICAgICAgICBwYXJzZWRWYWx1ZSA9IHBhcnNlU2luZ2xlU2hh
ZG93KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBmYWxzZSwgZmFsc2UpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGlmIChhcmdzLmF0RW5kKCkpIHsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LnVzZUNv
dW50ZXIoKSkKKyAgICAgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNl
Q291bnRlcjo6Q1NTRmlsdGVyRnVuY3Rpb25Ob0FyZ3VtZW50cyk7CisgICAgICAgICAgICByZXR1
cm4gZmlsdGVyVmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZpbHRlclR5cGUgPT0gQ1NT
VmFsdWVCcmlnaHRuZXNzKSB7CisgICAgICAgICAgICAvLyBGSVhNRSAoY3JidWcuY29tLzM5NzA2
MSk6IFN1cHBvcnQgY2FsYyBleHByZXNzaW9ucyBsaWtlIGNhbGMoMTAlICsgMC41KQorICAgICAg
ICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lUGVyY2VudChhcmdzLCBWYWx1ZVJhbmdlQWxsKTsK
KyAgICAgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICAgICAgcGFyc2VkVmFs
dWUgPSBjb25zdW1lTnVtYmVyKGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICB9IGVsc2Ug
aWYgKGZpbHRlclR5cGUgPT0gQ1NTVmFsdWVIdWVSb3RhdGUpIHsKKyAgICAgICAgICAgIHBhcnNl
ZFZhbHVlID0gY29uc3VtZUFuZ2xlKGFyZ3MpOworICAgICAgICB9IGVsc2UgaWYgKGZpbHRlclR5
cGUgPT0gQ1NTVmFsdWVCbHVyKSB7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVM
ZW5ndGgoYXJncywgSFRNTFN0YW5kYXJkTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEZJWE1FIChjcmJ1Zy5jb20vMzk3MDYxKTog
U3VwcG9ydCBjYWxjIGV4cHJlc3Npb25zIGxpa2UgY2FsYygxMCUgKyAwLjUpCisgICAgICAgICAg
ICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVQZXJjZW50KGFyZ3MsIFZhbHVlUmFuZ2VOb25OZWdhdGl2
ZSk7CisgICAgICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAgICAgIHBhcnNl
ZFZhbHVlID0gY29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAg
ICAgICAgICAgaWYgKHBhcnNlZFZhbHVlICYmIGZpbHRlclR5cGUgIT0gQ1NTVmFsdWVTYXR1cmF0
ZSAmJiBmaWx0ZXJUeXBlICE9IENTU1ZhbHVlQ29udHJhc3QpIHsKKyAgICAgICAgICAgICAgICBi
b29sIGlzUGVyY2VudGFnZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUocGFyc2VkVmFsdWUpLT5pc1Bl
cmNlbnRhZ2UoKTsKKyAgICAgICAgICAgICAgICBkb3VibGUgbWF4QWxsb3dlZCA9IGlzUGVyY2Vu
dGFnZSA/IDEwMC4wIDogMS4wOworICAgICAgICAgICAgICAgIGlmICh0b0NTU1ByaW1pdGl2ZVZh
bHVlKHBhcnNlZFZhbHVlKS0+Z2V0RG91YmxlVmFsdWUoKSA+IG1heEFsbG93ZWQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKAor
ICAgICAgICAgICAgICAgICAgICAgICAgbWF4QWxsb3dlZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlzUGVyY2VudGFnZSA/IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGVyY2VudGFn
ZSA6IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFwYXJzZWRWYWx1
ZSB8fCAhYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBmaWx0ZXJW
YWx1ZS0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAgcmV0dXJuIGZpbHRlclZhbHVlOworfQor
CitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVGaWx0ZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgaWYgKHJhbmdlLnBl
ZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChy
YW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNw
YWNlU2VwYXJhdGVkKCk7CisgICAgZG8geworICAgICAgICBDU1NWYWx1ZSogZmlsdGVyVmFsdWUg
PSBjb25zdW1lVXJsKHJhbmdlKTsKKyAgICAgICAgaWYgKCFmaWx0ZXJWYWx1ZSkgeworICAgICAg
ICAgICAgZmlsdGVyVmFsdWUgPSBjb25zdW1lRmlsdGVyRnVuY3Rpb24ocmFuZ2UsIGNvbnRleHQp
OworICAgICAgICAgICAgaWYgKCFmaWx0ZXJWYWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBsaXN0LT5hcHBlbmQoKmZpbHRlclZhbHVlKTsK
KyAgICB9IHdoaWxlICghcmFuZ2UuYXRFbmQoKSk7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0
YXRpYyBDU1NWYWx1ZSogY29uc3VtZVRleHREZWNvcmF0aW9uTGluZShDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSkKK3sKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7Cisg
ICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChy
YW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNw
YWNlU2VwYXJhdGVkKCk7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIGlkZW50ID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQmxpbmssIENTU1ZhbHVlVW5kZXJs
aW5lLCBDU1NWYWx1ZU92ZXJsaW5lLCBDU1NWYWx1ZUxpbmVUaHJvdWdoPihyYW5nZSk7CisgICAg
ICAgIGlmICghaWRlbnQpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGxpc3QtPmhh
c1ZhbHVlKCppZGVudCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgbGlz
dC0+YXBwZW5kKCppZGVudCk7CisgICAgfQorCisgICAgaWYgKCFsaXN0LT5sZW5ndGgoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKKy8vIG5vbmUgfCBz
dHJpY3QgfCBjb250ZW50IHwgWyBsYXlvdXQgfHwgc3R5bGUgfHwgcGFpbnQgfHwgc2l6ZSBdCitz
dGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDb250YWluKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
KQoreworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKwor
ICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0
ZWQoKTsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVTdHJpY3QgfHwgaWQgPT0gQ1NTVmFsdWVDb250
ZW50KSB7CisgICAgICAgIGxpc3QtPmFwcGVuZCgqY29uc3VtZUlkZW50KHJhbmdlKSk7CisgICAg
ICAgIHJldHVybiBsaXN0OworICAgIH0KKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogaWRlbnQgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVQYWludCwgQ1NTVmFs
dWVMYXlvdXQsIENTU1ZhbHVlU3R5bGUsIENTU1ZhbHVlU2l6ZT4ocmFuZ2UpOworICAgICAgICBp
ZiAoIWlkZW50KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChsaXN0LT5oYXNWYWx1
ZSgqaWRlbnQpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGxpc3QtPmFw
cGVuZCgqaWRlbnQpOworICAgIH0KKworICAgIGlmICghbGlzdC0+bGVuZ3RoKCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiBsaXN0OworfQorCitzdGF0aWMgQ1NTVmFsdWUq
IGNvbnN1bWVQYXRoKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIC8vIEZJWE1F
OiBBZGQgc3VwcG9ydCBmb3IgPHVybD4sIDxiYXNpYy1zaGFwZT4sIDxnZW9tZXRyeS1ib3g+Lgor
ICAgIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpICE9IENTU1ZhbHVlUGF0aCkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGZ1bmN0aW9uUmFu
Z2UgPSByYW5nZTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGZ1bmN0aW9uQXJncyA9IGNvbnN1
bWVGdW5jdGlvbihmdW5jdGlvblJhbmdlKTsKKworICAgIGlmIChmdW5jdGlvbkFyZ3MucGVlaygp
LnR5cGUoKSAhPSBTdHJpbmdUb2tlbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgU3Ry
aW5nIHBhdGhTdHJpbmcgPSBmdW5jdGlvbkFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2Uo
KS52YWx1ZSgpLnRvU3RyaW5nKCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHUGF0aEJ5dGVT
dHJlYW0+IGJ5dGVTdHJlYW0gPSBTVkdQYXRoQnl0ZVN0cmVhbTo6Y3JlYXRlKCk7CisgICAgaWYg
KGJ1aWxkQnl0ZVN0cmVhbUZyb21TdHJpbmcocGF0aFN0cmluZywgKmJ5dGVTdHJlYW0pICE9IFNW
R1BhcnNlU3RhdHVzOjpOb0Vycm9yCisgICAgICAgIHx8ICFmdW5jdGlvbkFyZ3MuYXRFbmQoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByYW5nZSA9IGZ1bmN0aW9uUmFuZ2U7Cisg
ICAgaWYgKGJ5dGVTdHJlYW0tPmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSk7CisgICAgcmV0dXJuIENTU1Bh
dGhWYWx1ZTo6Y3JlYXRlKHN0ZDo6bW92ZShieXRlU3RyZWFtKSk7Cit9CisKK3N0YXRpYyBDU1NW
YWx1ZSogY29uc3VtZVBhdGhPck5vbmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7Cisg
ICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgIGlmIChpZCA9PSBDU1NW
YWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgcmV0
dXJuIGNvbnN1bWVQYXRoKHJhbmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lTW90
aW9uUm90YXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTVmFsdWUq
IGFuZ2xlID0gY29uc3VtZUFuZ2xlKHJhbmdlKTsKKyAgICBDU1NWYWx1ZSoga2V5d29yZCA9IGNv
bnN1bWVJZGVudDxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlUmV2ZXJzZT4ocmFuZ2UpOworICAgIGlm
ICghYW5nbGUgJiYgIWtleXdvcmQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYg
KCFhbmdsZSkKKyAgICAgICAgYW5nbGUgPSBjb25zdW1lQW5nbGUocmFuZ2UpOworCisgICAgQ1NT
VmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwor
ICAgIGlmIChrZXl3b3JkKQorICAgICAgICBsaXN0LT5hcHBlbmQoKmtleXdvcmQpOworICAgIGlm
IChhbmdsZSkKKyAgICAgICAgbGlzdC0+YXBwZW5kKCphbmdsZSk7CisgICAgcmV0dXJuIGxpc3Q7
Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVRleHRFbXBoYXNpc1N0eWxlKENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCku
aWQoKTsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3Vt
ZUlkZW50KHJhbmdlKTsKKworICAgIGlmIChDU1NWYWx1ZSogdGV4dEVtcGhhc2lzU3R5bGUgPSBj
b25zdW1lU3RyaW5nKHJhbmdlKSkKKyAgICAgICAgcmV0dXJuIHRleHRFbXBoYXNpc1N0eWxlOwor
CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpbGwgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVGaWxs
ZWQsIENTU1ZhbHVlT3Blbj4ocmFuZ2UpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzaGFwZSA9
IGNvbnN1bWVJZGVudDxDU1NWYWx1ZURvdCwgQ1NTVmFsdWVDaXJjbGUsIENTU1ZhbHVlRG91Ymxl
Q2lyY2xlLCBDU1NWYWx1ZVRyaWFuZ2xlLCBDU1NWYWx1ZVNlc2FtZT4ocmFuZ2UpOworICAgIGlm
ICghZmlsbCkKKyAgICAgICAgZmlsbCA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUZpbGxlZCwgQ1NT
VmFsdWVPcGVuPihyYW5nZSk7CisgICAgaWYgKGZpbGwgJiYgc2hhcGUpIHsKKyAgICAgICAgQ1NT
VmFsdWVMaXN0KiBwYXJzZWRWYWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJh
dGVkKCk7CisgICAgICAgIHBhcnNlZFZhbHVlcy0+YXBwZW5kKCpmaWxsKTsKKyAgICAgICAgcGFy
c2VkVmFsdWVzLT5hcHBlbmQoKnNoYXBlKTsKKyAgICAgICAgcmV0dXJuIHBhcnNlZFZhbHVlczsK
KyAgICB9CisgICAgaWYgKGZpbGwpCisgICAgICAgIHJldHVybiBmaWxsOworICAgIGlmIChzaGFw
ZSkKKyAgICAgICAgcmV0dXJuIHNoYXBlOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0
aWMgQ1NTVmFsdWUqIGNvbnN1bWVPdXRsaW5lQ29sb3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICAvLyBBbGxvdyB0aGUgc3Bl
Y2lhbCBmb2N1cyBjb2xvciBldmVuIGluIEhUTUwgU3RhbmRhcmQgcGFyc2luZyBtb2RlLgorICAg
IGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZVdlYmtpdEZvY3VzUmluZ0NvbG9yKQor
ICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZUNv
bG9yKHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVl
KiBjb25zdW1lTGluZVdpZHRoKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJN
b2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCit7CisgICAgQ1NTVmFs
dWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZVRoaW4g
fHwgaWQgPT0gQ1NTVmFsdWVNZWRpdW0gfHwgaWQgPT0gQ1NTVmFsdWVUaGljaykKKyAgICAgICAg
cmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGgocmFu
Z2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwgdW5pdGxlc3MpOworfQor
CitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVCb3JkZXJXaWR0aChDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1
aXJrIHVuaXRsZXNzKQoreworICAgIHJldHVybiBjb25zdW1lTGluZVdpZHRoKHJhbmdlLCBjc3NQ
YXJzZXJNb2RlLCB1bml0bGVzcyk7Cit9CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29u
c3VtZVRleHRTdHJva2VXaWR0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2Vy
TW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIHJldHVybiBjb25zdW1lTGluZVdpZHRoKHJhbmdl
LCBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworfQorCitzdGF0aWMgQ1NT
UHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVDb2x1bW5SdWxlV2lkdGgoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICByZXR1cm4gY29u
c3VtZUxpbmVXaWR0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlk
KTsKK30KKworc3RhdGljIGJvb2wgY29uc3VtZVRyYW5zbGF0ZTNkKENTU1BhcnNlclRva2VuUmFu
Z2UmIGFyZ3MsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgQ1NTRnVuY3Rpb25WYWx1ZSom
IHRyYW5zZm9ybVZhbHVlKQoreworICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzID0gMjsK
KyAgICBDU1NWYWx1ZSogcGFyc2VkVmFsdWUgPSBudWxscHRyOworICAgIGRvIHsKKyAgICAgICAg
cGFyc2VkVmFsdWUgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUs
IFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKCpwYXJzZWRWYWx1
ZSk7CisgICAgICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IHdoaWxlICgtLW51bWJlck9mQXJndW1l
bnRzKTsKKyAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGgoYXJncywgY3NzUGFyc2VyTW9k
ZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKCFwYXJzZWRWYWx1ZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgY29uc3VtZU51bWJlcnMoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgYXJncywgQ1NTRnVuY3Rpb25WYWx1ZSomIHRyYW5zZm9ybVZhbHVlLCB1bnNpZ25l
ZCBudW1iZXJPZkFyZ3VtZW50cykKK3sKKyAgICBkbyB7CisgICAgICAgIENTU1ZhbHVlKiBwYXJz
ZWRWYWx1ZSA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGlm
ICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHRyYW5z
Zm9ybVZhbHVlLT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICAgICAgaWYgKC0tbnVtYmVyT2ZB
cmd1bWVudHMgJiYgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSB3aGlsZSAobnVtYmVyT2ZBcmd1bWVudHMpOwor
ICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBjb25zdW1lUGVyc3BlY3RpdmUoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NG
dW5jdGlvblZhbHVlKiYgdHJhbnNmb3JtVmFsdWUsIGJvb2wgdXNlTGVnYWN5UGFyc2luZykKK3sK
KyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcGFyc2VkVmFsdWUgPSBjb25zdW1lTGVuZ3RoKGFyZ3Ms
IGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgaWYgKCFwYXJzZWRW
YWx1ZSAmJiB1c2VMZWdhY3lQYXJzaW5nKSB7CisgICAgICAgIGRvdWJsZSBwZXJzcGVjdGl2ZTsK
KyAgICAgICAgaWYgKCFjb25zdW1lTnVtYmVyUmF3KGFyZ3MsIHBlcnNwZWN0aXZlKSB8fCBwZXJz
cGVjdGl2ZSA8IDApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHBhcnNlZFZh
bHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShwZXJzcGVjdGl2ZSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OlVuaXRUeXBlOjpQaXhlbHMpOworICAgIH0KKyAgICBpZiAoIXBhcnNlZFZhbHVlKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZCgqcGFyc2Vk
VmFsdWUpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVU
cmFuc2Zvcm1WYWx1ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBj
c3NQYXJzZXJNb2RlLCBib29sIHVzZUxlZ2FjeVBhcnNpbmcpCit7CisgICAgQ1NTVmFsdWVJRCBm
dW5jdGlvbklkID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKTsKKyAgICBpZiAoZnVuY3Rpb25J
ZCA9PSBDU1NWYWx1ZUludmFsaWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIENTU1Bh
cnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7CisgICAgaWYgKGFy
Z3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NTRnVuY3Rpb25WYWx1
ZSogdHJhbnNmb3JtVmFsdWUgPSBDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUoZnVuY3Rpb25JZCk7
CisgICAgQ1NTVmFsdWUqIHBhcnNlZFZhbHVlID0gbnVsbHB0cjsKKyAgICBzd2l0Y2ggKGZ1bmN0
aW9uSWQpIHsKKyAgICBjYXNlIENTU1ZhbHVlUm90YXRlOgorICAgIGNhc2UgQ1NTVmFsdWVSb3Rh
dGVYOgorICAgIGNhc2UgQ1NTVmFsdWVSb3RhdGVZOgorICAgIGNhc2UgQ1NTVmFsdWVSb3RhdGVa
OgorICAgIGNhc2UgQ1NTVmFsdWVTa2V3WDoKKyAgICBjYXNlIENTU1ZhbHVlU2tld1k6CisgICAg
Y2FzZSBDU1NWYWx1ZVNrZXc6CisgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUFuZ2xlKGFy
Z3MpOworICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIGlmIChmdW5jdGlvbklkID09IENTU1ZhbHVlU2tldyAmJiBjb25zdW1lQ29t
bWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKSB7CisgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1
ZS0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1
bWVBbmdsZShhcmdzKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDU1NWYWx1ZVNjYWxlWDoKKyAgICBjYXNlIENTU1ZhbHVlU2NhbGVZOgorICAgIGNhc2UgQ1NT
VmFsdWVTY2FsZVo6CisgICAgY2FzZSBDU1NWYWx1ZVNjYWxlOgorICAgICAgICBwYXJzZWRWYWx1
ZSA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGlmICghcGFy
c2VkVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKGZ1bmN0
aW9uSWQgPT0gQ1NTVmFsdWVTY2FsZSAmJiBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNl
KGFyZ3MpKSB7CisgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKCpwYXJzZWRWYWx1
ZSk7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVS
YW5nZUFsbCk7CisgICAgICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
VmFsdWVQZXJzcGVjdGl2ZToKKyAgICAgICAgaWYgKCFjb25zdW1lUGVyc3BlY3RpdmUoYXJncywg
Y3NzUGFyc2VyTW9kZSwgdHJhbnNmb3JtVmFsdWUsIHVzZUxlZ2FjeVBhcnNpbmcpKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVU
cmFuc2xhdGVYOgorICAgIGNhc2UgQ1NTVmFsdWVUcmFuc2xhdGVZOgorICAgIGNhc2UgQ1NTVmFs
dWVUcmFuc2xhdGU6CisgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUxlbmd0aE9yUGVyY2Vu
dChhcmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgaWYgKCFwYXJz
ZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBpZiAoZnVuY3Rp
b25JZCA9PSBDU1NWYWx1ZVRyYW5zbGF0ZSAmJiBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNw
YWNlKGFyZ3MpKSB7CisgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKCpwYXJzZWRW
YWx1ZSk7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQo
YXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgICAgICBpZiAoIXBh
cnNlZFZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVUcmFuc2xhdGVaOgorICAgICAgICBwYXJz
ZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGgoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFs
bCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVNYXRyaXg6CisgICAgY2FzZSBD
U1NWYWx1ZU1hdHJpeDNkOgorICAgICAgICBpZiAoIWNvbnN1bWVOdW1iZXJzKGFyZ3MsIHRyYW5z
Zm9ybVZhbHVlLCAoZnVuY3Rpb25JZCA9PSBDU1NWYWx1ZU1hdHJpeDNkKSA/IDE2IDogNikpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NW
YWx1ZVNjYWxlM2Q6CisgICAgICAgIGlmICghY29uc3VtZU51bWJlcnMoYXJncywgdHJhbnNmb3Jt
VmFsdWUsIDMpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQ1NTVmFsdWVSb3RhdGUzZDoKKyAgICAgICAgaWYgKCFjb25zdW1lTnVtYmVycyhh
cmdzLCB0cmFuc2Zvcm1WYWx1ZSwgMykgfHwgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3Bh
Y2UoYXJncykpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcGFyc2VkVmFs
dWUgPSBjb25zdW1lQW5nbGUoYXJncyk7CisgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1
ZVRyYW5zbGF0ZTNkOgorICAgICAgICBpZiAoIWNvbnN1bWVUcmFuc2xhdGUzZChhcmdzLCBjc3NQ
YXJzZXJNb2RlLCB0cmFuc2Zvcm1WYWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorICAgIGlmIChwYXJzZWRWYWx1ZSkKKyAgICAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVu
ZCgqcGFyc2VkVmFsdWUpOworICAgIGlmICghYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gdHJhbnNmb3JtVmFsdWU7Cit9CisKK3N0YXRpYyBDU1NWYWx1
ZSogY29uc3VtZVRyYW5zZm9ybShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2Vy
TW9kZSBjc3NQYXJzZXJNb2RlLCBib29sIHVzZUxlZ2FjeVBhcnNpbmcpCit7CisgICAgaWYgKHJh
bmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJ
ZGVudChyYW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNy
ZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgZG8geworICAgICAgICBDU1NWYWx1ZSogcGFyc2Vk
VHJhbnNmb3JtVmFsdWUgPSBjb25zdW1lVHJhbnNmb3JtVmFsdWUocmFuZ2UsIGNzc1BhcnNlck1v
ZGUsIHVzZUxlZ2FjeVBhcnNpbmcpOworICAgICAgICBpZiAoIXBhcnNlZFRyYW5zZm9ybVZhbHVl
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGxpc3QtPmFwcGVuZCgqcGFy
c2VkVHJhbnNmb3JtVmFsdWUpOworICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgpKTsKKworICAg
IHJldHVybiBsaXN0OworfQorCit0ZW1wbGF0ZSA8Q1NTVmFsdWVJRCBzdGFydCwgQ1NTVmFsdWVJ
RCBlbmQ+CitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVQb3NpdGlvbkxvbmdoYW5kKENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAg
aWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gSWRlbnRUb2tlbikgeworICAgICAgICBDU1NWYWx1
ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgICAgIGludCBwZXJjZW50OworICAgICAg
ICBpZiAoaWQgPT0gc3RhcnQpCisgICAgICAgICAgICBwZXJjZW50ID0gMDsKKyAgICAgICAgZWxz
ZSBpZiAoaWQgPT0gQ1NTVmFsdWVDZW50ZXIpCisgICAgICAgICAgICBwZXJjZW50ID0gNTA7Cisg
ICAgICAgIGVsc2UgaWYgKGlkID09IGVuZCkKKyAgICAgICAgICAgIHBlcmNlbnQgPSAxMDA7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByYW5nZS5j
b25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShwZXJjZW50LCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBlcmNl
bnRhZ2UpOworICAgIH0KKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwg
Y3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29u
c3VtZVBvc2l0aW9uWChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBj
c3NQYXJzZXJNb2RlKQoreworICAgIHJldHVybiBjb25zdW1lUG9zaXRpb25Mb25naGFuZDxDU1NW
YWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKK30KKworc3Rh
dGljIENTU1ZhbHVlKiBjb25zdW1lUG9zaXRpb25ZKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgcmV0dXJuIGNvbnN1bWVQb3Np
dGlvbkxvbmdoYW5kPENTU1ZhbHVlVG9wLCBDU1NWYWx1ZUJvdHRvbT4ocmFuZ2UsIGNzc1BhcnNl
ck1vZGUpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVQYWludFN0cm9rZShDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAg
IGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBj
b25zdW1lSWRlbnQocmFuZ2UpOworICAgIENTU1VSSVZhbHVlKiB1cmwgPSBjb25zdW1lVXJsKHJh
bmdlKTsKKyAgICBpZiAodXJsKSB7CisgICAgICAgIENTU1ZhbHVlKiBwYXJzZWRWYWx1ZSA9IG51
bGxwdHI7CisgICAgICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisg
ICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUNvbG9yKHJhbmdlLCBjc3NQYXJz
ZXJNb2RlKTsKKyAgICAgICAgaWYgKHBhcnNlZFZhbHVlKSB7CisgICAgICAgICAgICBDU1NWYWx1
ZUxpc3QqIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAg
ICAgICAgICAgIHZhbHVlcy0+YXBwZW5kKCp1cmwpOworICAgICAgICAgICAgdmFsdWVzLT5hcHBl
bmQoKnBhcnNlZFZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZXM7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHVybDsKKyAgICB9CisgICAgcmV0dXJuIGNvbnN1bWVDb2xvcihyYW5n
ZSwgY3NzUGFyc2VyTW9kZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVBhaW50T3Jk
ZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5p
ZCgpID09IENTU1ZhbHVlTm9ybWFsKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdl
KTsKKworICAgIFZlY3RvcjxDU1NWYWx1ZUlELCAzPiBwYWludFR5cGVMaXN0OworICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBmaWxsID0gbnVsbHB0cjsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogc3Ry
b2tlID0gbnVsbHB0cjsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogbWFya2VycyA9IG51bGxwdHI7
CisgICAgZG8geworICAgICAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7Cisg
ICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUZpbGwgJiYgIWZpbGwpCisgICAgICAgICAgICBmaWxs
ID0gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICAgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVT
dHJva2UgJiYgIXN0cm9rZSkKKyAgICAgICAgICAgIHN0cm9rZSA9IGNvbnN1bWVJZGVudChyYW5n
ZSk7CisgICAgICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlTWFya2VycyAmJiAhbWFya2VycykK
KyAgICAgICAgICAgIG1hcmtlcnMgPSBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcGFpbnRUeXBlTGlzdC5hcHBl
bmQoaWQpOworICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgpKTsKKworICAgIC8vIEFmdGVyIHBh
cnNpbmcgd2Ugc2VyaWFsaXplIHRoZSBwYWludC1vcmRlciBsaXN0LiBTaW5jZSBpdCBpcyBub3Qg
cG9zc2libGUgdG8KKyAgICAvLyBwb3AgYSBsYXN0IGxpc3QgaXRlbXMgZnJvbSBDU1NWYWx1ZUxp
c3Qgd2l0aG91dCBiaWdnZXIgY29zdCwgd2UgY3JlYXRlIHRoZQorICAgIC8vIGxpc3QgYWZ0ZXIg
cGFyc2luZy4KKyAgICBDU1NWYWx1ZUlEIGZpcnN0UGFpbnRPcmRlclR5cGUgPSBwYWludFR5cGVM
aXN0LmF0KDApOworICAgIENTU1ZhbHVlTGlzdCogcGFpbnRPcmRlckxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgc3dpdGNoIChmaXJzdFBhaW50T3JkZXJU
eXBlKSB7CisgICAgY2FzZSBDU1NWYWx1ZUZpbGw6CisgICAgY2FzZSBDU1NWYWx1ZVN0cm9rZToK
KyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZChmaXJzdFBhaW50T3JkZXJUeXBlID09IENT
U1ZhbHVlRmlsbCA/ICpmaWxsIDogKnN0cm9rZSk7CisgICAgICAgIGlmIChwYWludFR5cGVMaXN0
LnNpemUoKSA+IDEpIHsKKyAgICAgICAgICAgIGlmIChwYWludFR5cGVMaXN0LmF0KDEpID09IENT
U1ZhbHVlTWFya2VycykKKyAgICAgICAgICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKCpt
YXJrZXJzKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlTWFy
a2VyczoKKyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZCgqbWFya2Vycyk7CisgICAgICAg
IGlmIChwYWludFR5cGVMaXN0LnNpemUoKSA+IDEpIHsKKyAgICAgICAgICAgIGlmIChwYWludFR5
cGVMaXN0LmF0KDEpID09IENTU1ZhbHVlU3Ryb2tlKQorICAgICAgICAgICAgICAgIHBhaW50T3Jk
ZXJMaXN0LT5hcHBlbmQoKnN0cm9rZSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgcmV0
dXJuIHBhaW50T3JkZXJMaXN0OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVOb25lT3JV
UkkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5p
ZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7
CisgICAgcmV0dXJuIGNvbnN1bWVVcmwocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNv
bnN1bWVGbGV4QmFzaXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUg
Y3NzUGFyc2VyTW9kZSkKK3sKKyAgICAvLyBGSVhNRTogU3VwcG9ydCBpbnRyaW5zaWMgZGltZW5z
aW9ucyB0b28uCisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVMZW5n
dGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7
Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVN0cm9rZURhc2hhcnJheShDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlk
KCk7CisgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJ
ZGVudChyYW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIGRhc2hlcyA9IENTU1ZhbHVlTGlzdDo6
Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICBkbyB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBkYXNoID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgU1ZHQXR0cmlidXRlTW9k
ZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgaWYgKCFkYXNoIHx8IChjb25zdW1l
Q29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSAmJiByYW5nZS5hdEVuZCgpKSkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBkYXNoZXMtPmFwcGVuZCgqZGFzaCk7Cisg
ICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpOworICAgIHJldHVybiBkYXNoZXM7Cit9CisKK3N0
YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUJhc2VsaW5lU2hpZnQoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgp
OworICAgIGlmIChpZCA9PSBDU1NWYWx1ZUJhc2VsaW5lIHx8IGlkID09IENTU1ZhbHVlU3ViIHx8
IGlkID09IENTU1ZhbHVlU3VwZXIpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2Up
OworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBTVkdBdHRyaWJ1dGVN
b2RlLCBWYWx1ZVJhbmdlQWxsKTsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25z
dW1lUnhPclJ5KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5w
ZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQo
cmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBTVkdBdHRy
aWJ1dGVNb2RlLCBWYWx1ZVJhbmdlQWxsLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworfQorCitz
dGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDdXJzb3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Us
IGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIGJvb2wgaW5RdWlya3NNb2RlKQorewor
ICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IG51bGxwdHI7CisgICAgd2hpbGUgKENTU1ZhbHVlKiBp
bWFnZSA9IGNvbnN1bWVJbWFnZShyYW5nZSwgY29udGV4dCwgQ29uc3VtZUdlbmVyYXRlZEltYWdl
OjpGb3JiaWQpKSB7CisgICAgICAgIGRvdWJsZSBudW07CisgICAgICAgIEludFBvaW50IGhvdFNw
b3QoLTEsIC0xKTsKKyAgICAgICAgYm9vbCBob3RTcG90U3BlY2lmaWVkID0gZmFsc2U7CisgICAg
ICAgIGlmIChjb25zdW1lTnVtYmVyUmF3KHJhbmdlLCBudW0pKSB7CisgICAgICAgICAgICBob3RT
cG90LnNldFgoaW50KG51bSkpOworICAgICAgICAgICAgaWYgKCFjb25zdW1lTnVtYmVyUmF3KHJh
bmdlLCBudW0pKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAg
aG90U3BvdC5zZXRZKGludChudW0pKTsKKyAgICAgICAgICAgIGhvdFNwb3RTcGVjaWZpZWQgPSB0
cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFsaXN0KQorICAgICAgICAgICAgbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKworICAgICAgICBsaXN0LT5h
cHBlbmQoKkNTU0N1cnNvckltYWdlVmFsdWU6OmNyZWF0ZShpbWFnZSwgaG90U3BvdFNwZWNpZmll
ZCwgaG90U3BvdCkpOworICAgICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3Bh
Y2UocmFuZ2UpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgQ1NT
VmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgIGlmICghcmFuZ2UuYXRFbmQoKSAm
JiBjb250ZXh0LnVzZUNvdW50ZXIoKSkgeworICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJr
aXRab29tSW4pCisgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291
bnRlcjo6UHJlZml4ZWRDdXJzb3Jab29tSW4pOworICAgICAgICBlbHNlIGlmIChpZCA9PSBDU1NW
YWx1ZVdlYmtpdFpvb21PdXQpCisgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291
bnQoVXNlQ291bnRlcjo6UHJlZml4ZWRDdXJzb3Jab29tT3V0KTsKKyAgICB9CisgICAgQ1NTVmFs
dWUqIGN1cnNvclR5cGUgPSBudWxscHRyOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZUhhbmQpIHsK
KyAgICAgICAgaWYgKCFpblF1aXJrc01vZGUpIC8vIE5vbi1zdGFuZGFyZCBiZWhhdmlvcgorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGN1cnNvclR5cGUgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVBvaW50ZXIpOworICAgICAgICByYW5n
ZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgIH0gZWxzZSBpZiAoKGlkID49IENT
U1ZhbHVlQXV0byAmJiBpZCA8PSBDU1NWYWx1ZVdlYmtpdFpvb21PdXQpIHx8IGlkID09IENTU1Zh
bHVlQ29weSB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpIHsKKyAgICAgICAgY3Vyc29yVHlwZSA9IGNv
bnN1bWVJZGVudChyYW5nZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCisgICAgaWYgKCFsaXN0KQorICAgICAgICByZXR1cm4gY3Vyc29yVHlwZTsKKyAg
ICBsaXN0LT5hcHBlbmQoKmN1cnNvclR5cGUpOworICAgIHJldHVybiBsaXN0OworfQorCitzdGF0
aWMgQ1NTVmFsdWUqIGNvbnN1bWVBdHRyKENTU1BhcnNlclRva2VuUmFuZ2UgYXJncywgQ1NTUGFy
c2VyQ29udGV4dCBjb250ZXh0KQoreworICAgIGlmIChhcmdzLnBlZWsoKS50eXBlKCkgIT0gSWRl
bnRUb2tlbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBTdHJpbmcgYXR0ck5hbWUg
PSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b1N0cmluZygpOwor
ICAgIGlmICghYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlm
IChjb250ZXh0LmlzSFRNTERvY3VtZW50KCkpCisgICAgICAgIGF0dHJOYW1lID0gYXR0ck5hbWUu
bG93ZXIoKTsKKworICAgIENTU0Z1bmN0aW9uVmFsdWUqIGF0dHJWYWx1ZSA9IENTU0Z1bmN0aW9u
VmFsdWU6OmNyZWF0ZShDU1NWYWx1ZUF0dHIpOworICAgIGF0dHJWYWx1ZS0+YXBwZW5kKCpDU1ND
dXN0b21JZGVudFZhbHVlOjpjcmVhdGUoYXR0ck5hbWUpKTsKKyAgICByZXR1cm4gYXR0clZhbHVl
OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDb3VudGVyQ29udGVudChDU1NQYXJzZXJU
b2tlblJhbmdlIGFyZ3MsIGJvb2wgY291bnRlcnMpCit7CisgICAgQ1NTQ3VzdG9tSWRlbnRWYWx1
ZSogaWRlbnRpZmllciA9IGNvbnN1bWVDdXN0b21JZGVudChhcmdzKTsKKyAgICBpZiAoIWlkZW50
aWZpZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQ1NTU3RyaW5nVmFsdWUqIHNl
cGFyYXRvciA9IG51bGxwdHI7CisgICAgaWYgKCFjb3VudGVycykgeworICAgICAgICBzZXBhcmF0
b3IgPSBDU1NTdHJpbmdWYWx1ZTo6Y3JlYXRlKFN0cmluZygpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykgfHwgYXJncy5w
ZWVrKCkudHlwZSgpICE9IFN0cmluZ1Rva2VuKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIHNlcGFyYXRvciA9IENTU1N0cmluZ1ZhbHVlOjpjcmVhdGUoYXJncy5jb25zdW1l
SW5jbHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVlKCkudG9TdHJpbmcoKSk7CisgICAgfQorCisgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIGxpc3RTdHlsZSA9IG51bGxwdHI7CisgICAgaWYgKGNvbnN1bWVD
b21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpIHsKKyAgICAgICAgQ1NTVmFsdWVJRCBpZCA9
IGFyZ3MucGVlaygpLmlkKCk7CisgICAgICAgIGlmICgoaWQgIT0gQ1NTVmFsdWVOb25lICYmIChp
ZCA8IENTU1ZhbHVlRGlzYyB8fCBpZCA+IENTU1ZhbHVlS2F0YWthbmFJcm9oYSkpKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGxpc3RTdHlsZSA9IGNvbnN1bWVJZGVudChh
cmdzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBsaXN0U3R5bGUgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZURlY2ltYWwpOworICAgIH0KKworICAgIGlmICgh
YXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gQ1NTQ291
bnRlclZhbHVlOjpjcmVhdGUoaWRlbnRpZmllciwgbGlzdFN0eWxlLCBzZXBhcmF0b3IpOworfQor
CitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDb250ZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQpCit7CisgICAgaWYgKGlkZW50TWF0Y2hlczxD
U1NWYWx1ZU5vbmUsIENTU1ZhbHVlTm9ybWFsPihyYW5nZS5wZWVrKCkuaWQoKSkpCisgICAgICAg
IHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZXMg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisKKyAgICBkbyB7CisgICAg
ICAgIENTU1ZhbHVlKiBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVJbWFnZShyYW5nZSwgY29udGV4dCk7
CisgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNv
bnN1bWVJZGVudDxDU1NWYWx1ZU9wZW5RdW90ZSwgQ1NTVmFsdWVDbG9zZVF1b3RlLCBDU1NWYWx1
ZU5vT3BlblF1b3RlLCBDU1NWYWx1ZU5vQ2xvc2VRdW90ZT4ocmFuZ2UpOworICAgICAgICBpZiAo
IXBhcnNlZFZhbHVlKQorICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lU3RyaW5nKHJh
bmdlKTsKKyAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkgeworICAgICAgICAgICAgaWYgKHJhbmdl
LnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVBdHRyKQorICAgICAgICAgICAgICAgIHBh
cnNlZFZhbHVlID0gY29uc3VtZUF0dHIoY29uc3VtZUZ1bmN0aW9uKHJhbmdlKSwgY29udGV4dCk7
CisgICAgICAgICAgICBlbHNlIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1Zh
bHVlQ291bnRlcikKKyAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVDb3VudGVy
Q29udGVudChjb25zdW1lRnVuY3Rpb24ocmFuZ2UpLCBmYWxzZSk7CisgICAgICAgICAgICBlbHNl
IGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlQ291bnRlcnMpCisgICAg
ICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lQ291bnRlckNvbnRlbnQoY29uc3VtZUZ1
bmN0aW9uKHJhbmdlKSwgdHJ1ZSk7CisgICAgICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIHZhbHVlcy0+
YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpOworCisg
ICAgcmV0dXJuIHZhbHVlczsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1l
UGVyc3BlY3RpdmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3Nz
UGFyc2VyTW9kZSwgQ1NTUHJvcGVydHlJRCB1bnJlc29sdmVkUHJvcGVydHkpCit7CisgICAgaWYg
KHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVJZGVudChyYW5nZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBhcnNlZFZhbHVlID0gY29u
c3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYg
KCFwYXJzZWRWYWx1ZSAmJiAodW5yZXNvbHZlZFByb3BlcnR5ID09IENTU1Byb3BlcnR5QWxpYXNX
ZWJraXRQZXJzcGVjdGl2ZSkpIHsKKyAgICAgICAgZG91YmxlIHBlcnNwZWN0aXZlOworICAgICAg
ICBpZiAoIWNvbnN1bWVOdW1iZXJSYXcocmFuZ2UsIHBlcnNwZWN0aXZlKSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICBwYXJzZWRWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGUocGVyc3BlY3RpdmUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGl4ZWxz
KTsKKyAgICB9CisgICAgaWYgKHBhcnNlZFZhbHVlICYmIChwYXJzZWRWYWx1ZS0+aXNDYWxjdWxh
dGVkKCkgfHwgcGFyc2VkVmFsdWUtPmdldERvdWJsZVZhbHVlKCkgPiAwKSkKKyAgICAgICAgcmV0
dXJuIHBhcnNlZFZhbHVlOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgQ1NTVmFs
dWVMaXN0KiBjb25zdW1lUG9zaXRpb25MaXN0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBD
U1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgQ1NTVmFsdWVMaXN0KiBwb3NpdGlv
bnMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgZG8geworICAg
ICAgICBDU1NWYWx1ZSogcG9zaXRpb24gPSBjb25zdW1lUG9zaXRpb24ocmFuZ2UsIGNzc1BhcnNl
ck1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CisgICAgICAgIGlmICghcG9zaXRpb24pCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcG9zaXRpb25zLT5hcHBlbmQoKnBv
c2l0aW9uKTsKKyAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJh
bmdlKSk7CisgICAgcmV0dXJuIHBvc2l0aW9uczsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25z
dW1lU2Nyb2xsU25hcENvb3JkaW5hdGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1Bh
cnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0g
Q1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICBy
ZXR1cm4gY29uc3VtZVBvc2l0aW9uTGlzdChyYW5nZSwgY3NzUGFyc2VyTW9kZSk7Cit9CisKK3N0
YXRpYyBDU1NWYWx1ZSogY29uc3VtZVNjcm9sbFNuYXBQb2ludHMoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAocmFuZ2Uu
cGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50
KHJhbmdlKTsKKyAgICBpZiAocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZVJl
cGVhdCkgeworICAgICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rp
b24ocmFuZ2UpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcGFyc2VkVmFsdWUgPSBjb25z
dW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdh
dGl2ZSk7CisgICAgICAgIGlmIChhcmdzLmF0RW5kKCkgJiYgcGFyc2VkVmFsdWUgJiYgKHBhcnNl
ZFZhbHVlLT5pc0NhbGN1bGF0ZWQoKSB8fCBwYXJzZWRWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSA+
IDApKSB7CisgICAgICAgICAgICBDU1NGdW5jdGlvblZhbHVlKiByZXN1bHQgPSBDU1NGdW5jdGlv
blZhbHVlOjpjcmVhdGUoQ1NTVmFsdWVSZXBlYXQpOworICAgICAgICAgICAgcmVzdWx0LT5hcHBl
bmQoKnBhcnNlZFZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3Vt
ZUJvcmRlclJhZGl1c0Nvcm5lcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2Vy
TW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIENTU1ZhbHVlKiBwYXJzZWRWYWx1ZTEgPSBjb25z
dW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVn
YXRpdmUpOworICAgIGlmICghcGFyc2VkVmFsdWUxKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBDU1NWYWx1ZSogcGFyc2VkVmFsdWUyID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5n
ZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICBpZiAoIXBhcnNl
ZFZhbHVlMikKKyAgICAgICAgcGFyc2VkVmFsdWUyID0gcGFyc2VkVmFsdWUxOworICAgIHJldHVy
biBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShwYXJzZWRWYWx1ZTEsIHBhcnNlZFZhbHVlMiwgQ1NTVmFs
dWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVzKTsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZh
bHVlKiBjb25zdW1lVmVydGljYWxBbGlnbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NT
UGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwYXJz
ZWRWYWx1ZSA9IGNvbnN1bWVJZGVudFJhbmdlKHJhbmdlLCBDU1NWYWx1ZUJhc2VsaW5lLCBDU1NW
YWx1ZVdlYmtpdEJhc2VsaW5lTWlkZGxlKTsKKyAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAg
ICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1v
ZGUsIFZhbHVlUmFuZ2VBbGwsIFVuaXRsZXNzUXVpcms6OkFsbG93KTsKKyAgICByZXR1cm4gcGFy
c2VkVmFsdWU7Cit9CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZVNoYXBlUmFk
aXVzKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9k
ZSkKK3sKKyAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlQ2xvc2VzdFNpZGUsIENTU1ZhbHVl
RmFydGhlc3RTaWRlPihhcmdzLnBlZWsoKS5pZCgpKSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJ
ZGVudChhcmdzKTsKKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjc3NQ
YXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworfQorCitzdGF0aWMgQ1NTQmFzaWNT
aGFwZUNpcmNsZVZhbHVlKiBjb25zdW1lQmFzaWNTaGFwZUNpcmNsZShDU1NQYXJzZXJUb2tlblJh
bmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIC8vIHNw
ZWM6IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtc2hhcGVzLyNzdXBwb3J0ZWQtYmFzaWMt
c2hhcGVzCisgICAgLy8gY2lyY2xlKCBbPHNoYXBlLXJhZGl1cz5dPyBbYXQgPHBvc2l0aW9uPl0/
ICkKKyAgICBDU1NCYXNpY1NoYXBlQ2lyY2xlVmFsdWUqIHNoYXBlID0gQ1NTQmFzaWNTaGFwZUNp
cmNsZVZhbHVlOjpjcmVhdGUoKTsKKyAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWUqIHJhZGl1cyA9
IGNvbnN1bWVTaGFwZVJhZGl1cyhhcmdzLCBjb250ZXh0Lm1vZGUoKSkpCisgICAgICAgIHNoYXBl
LT5zZXRSYWRpdXMocmFkaXVzKTsKKyAgICBpZiAoY29uc3VtZUlkZW50PENTU1ZhbHVlQXQ+KGFy
Z3MpKSB7CisgICAgICAgIENTU1ZhbHVlKiBjZW50ZXJYID0gbnVsbHB0cjsKKyAgICAgICAgQ1NT
VmFsdWUqIGNlbnRlclkgPSBudWxscHRyOworICAgICAgICBpZiAoIWNvbnN1bWVQb3NpdGlvbihh
cmdzLCBjb250ZXh0Lm1vZGUoKSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBjZW50ZXJYLCBjZW50
ZXJZKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBzaGFwZS0+c2V0Q2Vu
dGVyWChjZW50ZXJYKTsKKyAgICAgICAgc2hhcGUtPnNldENlbnRlclkoY2VudGVyWSk7CisgICAg
fQorICAgIHJldHVybiBzaGFwZTsKK30KKworc3RhdGljIENTU0Jhc2ljU2hhcGVFbGxpcHNlVmFs
dWUqIGNvbnN1bWVCYXNpY1NoYXBlRWxsaXBzZShDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBj
b25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIC8vIHNwZWM6IGh0dHBzOi8v
ZHJhZnRzLmNzc3dnLm9yZy9jc3Mtc2hhcGVzLyNzdXBwb3J0ZWQtYmFzaWMtc2hhcGVzCisgICAg
Ly8gZWxsaXBzZSggWzxzaGFwZS1yYWRpdXM+ezJ9XT8gW2F0IDxwb3NpdGlvbj5dPyApCisgICAg
Q1NTQmFzaWNTaGFwZUVsbGlwc2VWYWx1ZSogc2hhcGUgPSBDU1NCYXNpY1NoYXBlRWxsaXBzZVZh
bHVlOjpjcmVhdGUoKTsKKyAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWUqIHJhZGl1c1ggPSBjb25z
dW1lU2hhcGVSYWRpdXMoYXJncywgY29udGV4dC5tb2RlKCkpKSB7CisgICAgICAgIHNoYXBlLT5z
ZXRSYWRpdXNYKHJhZGl1c1gpOworICAgICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWUqIHJhZGl1
c1kgPSBjb25zdW1lU2hhcGVSYWRpdXMoYXJncywgY29udGV4dC5tb2RlKCkpKQorICAgICAgICAg
ICAgc2hhcGUtPnNldFJhZGl1c1kocmFkaXVzWSk7CisgICAgfQorICAgIGlmIChjb25zdW1lSWRl
bnQ8Q1NTVmFsdWVBdD4oYXJncykpIHsKKyAgICAgICAgQ1NTVmFsdWUqIGNlbnRlclggPSBudWxs
cHRyOworICAgICAgICBDU1NWYWx1ZSogY2VudGVyWSA9IG51bGxwdHI7CisgICAgICAgIGlmICgh
Y29uc3VtZVBvc2l0aW9uKGFyZ3MsIGNvbnRleHQubW9kZSgpLCBVbml0bGVzc1F1aXJrOjpGb3Ji
aWQsIGNlbnRlclgsIGNlbnRlclkpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHNoYXBlLT5zZXRDZW50ZXJYKGNlbnRlclgpOworICAgICAgICBzaGFwZS0+c2V0Q2VudGVy
WShjZW50ZXJZKTsKKyAgICB9CisgICAgcmV0dXJuIHNoYXBlOworfQorCitzdGF0aWMgQ1NTQmFz
aWNTaGFwZVBvbHlnb25WYWx1ZSogY29uc3VtZUJhc2ljU2hhcGVQb2x5Z29uKENTU1BhcnNlclRv
a2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAg
Q1NTQmFzaWNTaGFwZVBvbHlnb25WYWx1ZSogc2hhcGUgPSBDU1NCYXNpY1NoYXBlUG9seWdvblZh
bHVlOjpjcmVhdGUoKTsKKyAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlRXZlbm9kZCwgQ1NT
VmFsdWVOb256ZXJvPihhcmdzLnBlZWsoKS5pZCgpKSkgeworICAgICAgICBzaGFwZS0+c2V0V2lu
ZFJ1bGUoYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCkgPT0gQ1NTVmFsdWVF
dmVub2RkID8gUlVMRV9FVkVOT0REIDogUlVMRV9OT05aRVJPKTsKKyAgICAgICAgaWYgKCFjb25z
dW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgZG8geworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogeExl
bmd0aCA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlKCksIFZhbHVl
UmFuZ2VBbGwpOworICAgICAgICBpZiAoIXhMZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHlMZW5ndGggPSBjb25zdW1lTGVuZ3Ro
T3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAg
aWYgKCF5TGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHNoYXBl
LT5hcHBlbmRQb2ludCh4TGVuZ3RoLCB5TGVuZ3RoKTsKKyAgICB9IHdoaWxlIChjb25zdW1lQ29t
bWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKTsKKyAgICByZXR1cm4gc2hhcGU7Cit9CisKK3N0
YXRpYyB2b2lkIGNvbXBsZXRlNFNpZGVzKENTU1ByaW1pdGl2ZVZhbHVlKiBzaWRlWzRdKQorewor
ICAgIGlmIChzaWRlWzNdKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFzaWRlWzJdKSB7Cisg
ICAgICAgIGlmICghc2lkZVsxXSkKKyAgICAgICAgICAgIHNpZGVbMV0gPSBzaWRlWzBdOworICAg
ICAgICBzaWRlWzJdID0gc2lkZVswXTsKKyAgICB9CisgICAgc2lkZVszXSA9IHNpZGVbMV07Cit9
CisKK3N0YXRpYyBib29sIGNvbnN1bWVSYWRpaShDU1NQcmltaXRpdmVWYWx1ZSogaG9yaXpvbnRh
bFJhZGlpWzRdLCBDU1NQcmltaXRpdmVWYWx1ZSogdmVydGljYWxSYWRpaVs0XSwgQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgYm9vbCB1c2VM
ZWdhY3lQYXJzaW5nKQoreworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIGZvciAoOyBpIDwgNCAm
JiAhcmFuZ2UuYXRFbmQoKSAmJiByYW5nZS5wZWVrKCkudHlwZSgpICE9IERlbGltaXRlclRva2Vu
OyArK2kpIHsKKyAgICAgICAgaG9yaXpvbnRhbFJhZGlpW2ldID0gY29uc3VtZUxlbmd0aE9yUGVy
Y2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAg
ICAgaWYgKCFob3Jpem9udGFsUmFkaWlbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIGlmICghaG9yaXpvbnRhbFJhZGlpWzBdKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKHJhbmdlLmF0RW5kKCkpIHsKKyAgICAgICAgLy8gTGVnYWN5IHN5bnRheDogLXdl
YmtpdC1ib3JkZXItcmFkaXVzOiBsMSBsMjsgaXMgZXF1aXZhbGVudCB0byBib3JkZXItcmFkaXVz
OiBsMSAvIGwyOworICAgICAgICBpZiAodXNlTGVnYWN5UGFyc2luZyAmJiBpID09IDIpIHsKKyAg
ICAgICAgICAgIHZlcnRpY2FsUmFkaWlbMF0gPSBob3Jpem9udGFsUmFkaWlbMV07CisgICAgICAg
ICAgICBob3Jpem9udGFsUmFkaWlbMV0gPSBudWxscHRyOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgY29tcGxldGU0U2lkZXMoaG9yaXpvbnRhbFJhZGlpKTsKKyAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCA0OyArK2kpCisgICAgICAgICAgICAgICAgdmVydGljYWxS
YWRpaVtpXSA9IGhvcml6b250YWxSYWRpaVtpXTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFjb25zdW1lU2xhc2hJbmNsdWRp
bmdXaGl0ZXNwYWNlKHJhbmdlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
Zm9yIChpID0gMDsgaSA8IDQgJiYgIXJhbmdlLmF0RW5kKCk7ICsraSkgeworICAgICAgICAgICAg
dmVydGljYWxSYWRpaVtpXSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNl
ck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgICAgICBpZiAoIXZlcnRpY2Fs
UmFkaWlbaV0pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
ICAgIGlmICghdmVydGljYWxSYWRpaVswXSB8fCAhcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgY29tcGxldGU0U2lkZXMoaG9yaXpvbnRhbFJhZGlp
KTsKKyAgICBjb21wbGV0ZTRTaWRlcyh2ZXJ0aWNhbFJhZGlpKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworc3RhdGljIENTU0Jhc2ljU2hhcGVJbnNldFZhbHVlKiBjb25zdW1lQmFzaWNTaGFwZUlu
c2V0KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNv
bnRleHQpCit7CisgICAgQ1NTQmFzaWNTaGFwZUluc2V0VmFsdWUqIHNoYXBlID0gQ1NTQmFzaWNT
aGFwZUluc2V0VmFsdWU6OmNyZWF0ZSgpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0b3AgPSBj
b25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxs
KTsKKyAgICBpZiAoIXRvcCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHJpZ2h0ID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjb250ZXh0Lm1v
ZGUoKSwgVmFsdWVSYW5nZUFsbCk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGJvdHRvbSA9IG51
bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGxlZnQgPSBudWxscHRyOworICAgIGlmIChy
aWdodCkgeworICAgICAgICBib3R0b20gPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNv
bnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgaWYgKGJvdHRvbSkKKyAgICAg
ICAgICAgIGxlZnQgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSgp
LCBWYWx1ZVJhbmdlQWxsKTsKKyAgICB9CisgICAgaWYgKGxlZnQpCisgICAgICAgIHNoYXBlLT51
cGRhdGVTaGFwZVNpemU0VmFsdWVzKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7CisgICAgZWxz
ZSBpZiAoYm90dG9tKQorICAgICAgICBzaGFwZS0+dXBkYXRlU2hhcGVTaXplM1ZhbHVlcyh0b3As
IHJpZ2h0LCBib3R0b20pOworICAgIGVsc2UgaWYgKHJpZ2h0KQorICAgICAgICBzaGFwZS0+dXBk
YXRlU2hhcGVTaXplMlZhbHVlcyh0b3AsIHJpZ2h0KTsKKyAgICBlbHNlCisgICAgICAgIHNoYXBl
LT51cGRhdGVTaGFwZVNpemUxVmFsdWUodG9wKTsKKworICAgIGlmIChjb25zdW1lSWRlbnQ8Q1NT
VmFsdWVSb3VuZD4oYXJncykpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGhvcml6b250
YWxSYWRpaVs0XSA9IHsgMCB9OworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmVydGljYWxS
YWRpaVs0XSA9IHsgMCB9OworICAgICAgICBpZiAoIWNvbnN1bWVSYWRpaShob3Jpem9udGFsUmFk
aWksIHZlcnRpY2FsUmFkaWksIGFyZ3MsIGNvbnRleHQubW9kZSgpLCBmYWxzZSkpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgc2hhcGUtPnNldFRvcExlZnRSYWRpdXMoQ1NT
VmFsdWVQYWlyOjpjcmVhdGUoaG9yaXpvbnRhbFJhZGlpWzBdLCB2ZXJ0aWNhbFJhZGlpWzBdLCBD
U1NWYWx1ZVBhaXI6OkRyb3BJZGVudGljYWxWYWx1ZXMpKTsKKyAgICAgICAgc2hhcGUtPnNldFRv
cFJpZ2h0UmFkaXVzKENTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhvcml6b250YWxSYWRpaVsxXSwgdmVy
dGljYWxSYWRpaVsxXSwgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVzKSk7CisgICAg
ICAgIHNoYXBlLT5zZXRCb3R0b21SaWdodFJhZGl1cyhDU1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jp
em9udGFsUmFkaWlbMl0sIHZlcnRpY2FsUmFkaWlbMl0sIENTU1ZhbHVlUGFpcjo6RHJvcElkZW50
aWNhbFZhbHVlcykpOworICAgICAgICBzaGFwZS0+c2V0Qm90dG9tTGVmdFJhZGl1cyhDU1NWYWx1
ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsUmFkaWlbM10sIHZlcnRpY2FsUmFkaWlbM10sIENTU1Zh
bHVlUGFpcjo6RHJvcElkZW50aWNhbFZhbHVlcykpOworICAgIH0KKyAgICByZXR1cm4gc2hhcGU7
Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUJhc2ljU2hhcGUoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ1NT
VmFsdWUqIHNoYXBlID0gbnVsbHB0cjsKKyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBG
dW5jdGlvblRva2VuKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZUlEIGlk
ID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJh
bmdlQ29weSA9IHJhbmdlOworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVG
dW5jdGlvbihyYW5nZUNvcHkpOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZUNpcmNsZSkKKyAgICAg
ICAgc2hhcGUgPSBjb25zdW1lQmFzaWNTaGFwZUNpcmNsZShhcmdzLCBjb250ZXh0KTsKKyAgICBl
bHNlIGlmIChpZCA9PSBDU1NWYWx1ZUVsbGlwc2UpCisgICAgICAgIHNoYXBlID0gY29uc3VtZUJh
c2ljU2hhcGVFbGxpcHNlKGFyZ3MsIGNvbnRleHQpOworICAgIGVsc2UgaWYgKGlkID09IENTU1Zh
bHVlUG9seWdvbikKKyAgICAgICAgc2hhcGUgPSBjb25zdW1lQmFzaWNTaGFwZVBvbHlnb24oYXJn
cywgY29udGV4dCk7CisgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVJbnNldCkKKyAgICAgICAg
c2hhcGUgPSBjb25zdW1lQmFzaWNTaGFwZUluc2V0KGFyZ3MsIGNvbnRleHQpOworICAgIGlmICgh
c2hhcGUgfHwgIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmFu
Z2UgPSByYW5nZUNvcHk7CisgICAgcmV0dXJuIHNoYXBlOworfQorCitzdGF0aWMgQ1NTVmFsdWUq
IGNvbnN1bWVXZWJraXRDbGlwUGF0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3Qg
Q1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkg
PT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAg
ICBpZiAoQ1NTVVJJVmFsdWUqIHVybCA9IGNvbnN1bWVVcmwocmFuZ2UpKQorICAgICAgICByZXR1
cm4gdXJsOworICAgIHJldHVybiBjb25zdW1lQmFzaWNTaGFwZShyYW5nZSwgY29udGV4dCk7Cit9
CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVNoYXBlT3V0c2lkZShDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBpZiAo
Q1NTVmFsdWUqIGltYWdlVmFsdWUgPSBjb25zdW1lSW1hZ2VPck5vbmUocmFuZ2UsIGNvbnRleHQp
KQorICAgICAgICByZXR1cm4gaW1hZ2VWYWx1ZTsKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgaWYgKENTU1ZhbHVlKiBi
b3hWYWx1ZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUNvbnRlbnRCb3gsIENTU1ZhbHVlUGFkZGlu
Z0JveCwgQ1NTVmFsdWVCb3JkZXJCb3gsIENTU1ZhbHVlTWFyZ2luQm94PihyYW5nZSkpCisgICAg
ICAgIGxpc3QtPmFwcGVuZCgqYm94VmFsdWUpOworICAgIGlmIChDU1NWYWx1ZSogc2hhcGVWYWx1
ZSA9IGNvbnN1bWVCYXNpY1NoYXBlKHJhbmdlLCBjb250ZXh0KSkgeworICAgICAgICBsaXN0LT5h
cHBlbmQoKnNoYXBlVmFsdWUpOworICAgICAgICBpZiAobGlzdC0+bGVuZ3RoKCkgPCAyKSB7Cisg
ICAgICAgICAgICBpZiAoQ1NTVmFsdWUqIGJveFZhbHVlID0gY29uc3VtZUlkZW50PENTU1ZhbHVl
Q29udGVudEJveCwgQ1NTVmFsdWVQYWRkaW5nQm94LCBDU1NWYWx1ZUJvcmRlckJveCwgQ1NTVmFs
dWVNYXJnaW5Cb3g+KHJhbmdlKSkKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoKmJveFZh
bHVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIWxpc3QtPmxlbmd0aCgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbGlzdDsKK30KKworc3RhdGljIENTU1ZhbHVl
KiBjb25zdW1lQ29udGVudERpc3RyaWJ1dGlvbk92ZXJmbG93UG9zaXRpb24oQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZU5vcm1hbCwg
Q1NTVmFsdWVCYXNlbGluZSwgQ1NTVmFsdWVMYXN0QmFzZWxpbmU+KHJhbmdlLnBlZWsoKS5pZCgp
KSkKKyAgICAgICAgcmV0dXJuIENTU0NvbnRlbnREaXN0cmlidXRpb25WYWx1ZTo6Y3JlYXRlKENT
U1ZhbHVlSW52YWxpZCwgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpLCBD
U1NWYWx1ZUludmFsaWQpOworCisgICAgQ1NTVmFsdWVJRCBkaXN0cmlidXRpb24gPSBDU1NWYWx1
ZUludmFsaWQ7CisgICAgQ1NTVmFsdWVJRCBwb3NpdGlvbiA9IENTU1ZhbHVlSW52YWxpZDsKKyAg
ICBDU1NWYWx1ZUlEIG92ZXJmbG93ID0gQ1NTVmFsdWVJbnZhbGlkOworICAgIGRvIHsKKyAgICAg
ICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgICAgICBpZiAoaWRlbnRN
YXRjaGVzPENTU1ZhbHVlU3BhY2VCZXR3ZWVuLCBDU1NWYWx1ZVNwYWNlQXJvdW5kLCBDU1NWYWx1
ZVNwYWNlRXZlbmx5LCBDU1NWYWx1ZVN0cmV0Y2g+KGlkKSkgeworICAgICAgICAgICAgaWYgKGRp
c3RyaWJ1dGlvbiAhPSBDU1NWYWx1ZUludmFsaWQpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgICAgICBkaXN0cmlidXRpb24gPSBpZDsKKyAgICAgICAgfSBlbHNlIGlm
IChpZGVudE1hdGNoZXM8Q1NTVmFsdWVTdGFydCwgQ1NTVmFsdWVFbmQsIENTU1ZhbHVlQ2VudGVy
LCBDU1NWYWx1ZUZsZXhTdGFydCwgQ1NTVmFsdWVGbGV4RW5kLCBDU1NWYWx1ZUxlZnQsIENTU1Zh
bHVlUmlnaHQ+KGlkKSkgeworICAgICAgICAgICAgaWYgKHBvc2l0aW9uICE9IENTU1ZhbHVlSW52
YWxpZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHBvc2l0
aW9uID0gaWQ7CisgICAgICAgIH0gZWxzZSBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlVW5zYWZl
LCBDU1NWYWx1ZVNhZmU+KGlkKSkgeworICAgICAgICAgICAgaWYgKG92ZXJmbG93ICE9IENTU1Zh
bHVlSW52YWxpZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAg
IG92ZXJmbG93ID0gaWQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgfQorICAgICAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFj
ZSgpOworICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgpKTsKKworICAgIC8vIFRoZSBncmFtbWFy
IHN0YXRlcyB0aGF0IHdlIHNob3VsZCBoYXZlIGF0IGxlYXN0IDxjb250ZW50LWRpc3RyaWJ1dGlv
bj4gb3IgPGNvbnRlbnQtcG9zaXRpb24+LgorICAgIGlmIChwb3NpdGlvbiA9PSBDU1NWYWx1ZUlu
dmFsaWQgJiYgZGlzdHJpYnV0aW9uID09IENTU1ZhbHVlSW52YWxpZCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICAvLyBUaGUgZ3JhbW1hciBzdGF0ZXMgdGhhdCA8b3ZlcmZsb3ctcG9z
aXRpb24+IG11c3QgYmUgYXNzb2NpYXRlZCB0byA8Y29udGVudC1wb3NpdGlvbj4uCisgICAgaWYg
KG92ZXJmbG93ICE9IENTU1ZhbHVlSW52YWxpZCAmJiBwb3NpdGlvbiA9PSBDU1NWYWx1ZUludmFs
aWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIENTU0NvbnRlbnREaXN0
cmlidXRpb25WYWx1ZTo6Y3JlYXRlKGRpc3RyaWJ1dGlvbiwgcG9zaXRpb24sIG92ZXJmbG93KTsK
K30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lQm9yZGVySW1hZ2VSZXBlYXRL
ZXl3b3JkKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBjb25zdW1l
SWRlbnQ8Q1NTVmFsdWVTdHJldGNoLCBDU1NWYWx1ZVJlcGVhdCwgQ1NTVmFsdWVTcGFjZSwgQ1NT
VmFsdWVSb3VuZD4ocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVCb3JkZXJJ
bWFnZVJlcGVhdChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NQcmltaXRp
dmVWYWx1ZSogaG9yaXpvbnRhbCA9IGNvbnN1bWVCb3JkZXJJbWFnZVJlcGVhdEtleXdvcmQocmFu
Z2UpOworICAgIGlmICghaG9yaXpvbnRhbCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHZlcnRpY2FsID0gY29uc3VtZUJvcmRlckltYWdlUmVwZWF0S2V5
d29yZChyYW5nZSk7CisgICAgaWYgKCF2ZXJ0aWNhbCkKKyAgICAgICAgdmVydGljYWwgPSBob3Jp
em9udGFsOworICAgIHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsLCB2ZXJ0
aWNhbCwgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVzKTsKK30KKworc3RhdGljIENT
U1ZhbHVlKiBjb25zdW1lQm9yZGVySW1hZ2VTbGljZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBib29sIGZpbGwgPSBjb25zdW1lSWRl
bnQ8Q1NTVmFsdWVGaWxsPihyYW5nZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNsaWNlc1s0
XSA9IHsgMCB9OworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IDQ7ICsraW5k
ZXgpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlID0gY29uc3VtZVBlcmNlbnQo
cmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAg
ICAgICAgICB2YWx1ZSA9IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2
ZSk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgc2xp
Y2VzW2luZGV4XSA9IHZhbHVlOworICAgIH0KKyAgICBpZiAoIXNsaWNlc1swXSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgaWYgKGNvbnN1bWVJZGVudDxDU1NWYWx1ZUZpbGw+KHJhbmdl
KSkgeworICAgICAgICBpZiAoZmlsbCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICBmaWxsID0gdHJ1ZTsKKyAgICB9CisgICAgY29tcGxldGU0U2lkZXMoc2xpY2VzKTsKKyAg
ICAvLyBGSVhNRTogRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCAtd2Via2l0LWJvcmRlci1p
bWFnZSwgLXdlYmtpdC1tYXNrLWJveC1pbWFnZSBhbmQgLXdlYmtpdC1ib3gtcmVmbGVjdCBoYXZl
IHRvIGRvIGEgZmlsbCBieSBkZWZhdWx0LgorICAgIC8vIEZJWE1FOiBXaGF0IGRvIHdlIGRvIHdp
dGggLXdlYmtpdC1ib3gtcmVmbGVjdCBhbmQgLXdlYmtpdC1tYXNrLWJveC1pbWFnZT8gUHJvYmFi
bHkganVzdCBoYXZlIHRvIGxlYXZlIHRoZW0gZmlsbGluZy4uLgorICAgIGlmIChwcm9wZXJ0eSA9
PSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5
V2Via2l0TWFza0JveEltYWdlIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Qm94UmVm
bGVjdCkKKyAgICAgICAgZmlsbCA9IHRydWU7CisgICAgcmV0dXJuIENTU0JvcmRlckltYWdlU2xp
Y2VWYWx1ZTo6Y3JlYXRlKENTU1F1YWRWYWx1ZTo6Y3JlYXRlKHNsaWNlc1swXSwgc2xpY2VzWzFd
LCBzbGljZXNbMl0sIHNsaWNlc1szXSwgQ1NTUXVhZFZhbHVlOjpTZXJpYWxpemVBc1F1YWQpLCBm
aWxsKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQm9yZGVySW1hZ2VPdXRzZXQoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIG91dHNl
dHNbNF0gPSB7IDAgfTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSA9IG51bGxwdHI7
CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IDQ7ICsraW5kZXgpIHsKKyAgICAg
ICAgdmFsdWUgPSBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOwor
ICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgdmFsdWUgPSBjb25zdW1lTGVuZ3RoKHJh
bmdlLCBIVE1MU3RhbmRhcmRNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICBp
ZiAoIXZhbHVlKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG91dHNldHNbaW5kZXhdID0g
dmFsdWU7CisgICAgfQorICAgIGlmICghb3V0c2V0c1swXSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgY29tcGxldGU0U2lkZXMob3V0c2V0cyk7CisgICAgcmV0dXJuIENTU1F1YWRWYWx1
ZTo6Y3JlYXRlKG91dHNldHNbMF0sIG91dHNldHNbMV0sIG91dHNldHNbMl0sIG91dHNldHNbM10s
IENTU1F1YWRWYWx1ZTo6U2VyaWFsaXplQXNRdWFkKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lQm9yZGVySW1hZ2VXaWR0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogd2lkdGhzWzRdID0geyAwIH07CisKKyAgICBDU1NQcmltaXRp
dmVWYWx1ZSogdmFsdWUgPSBudWxscHRyOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5k
ZXggPCA0OyArK2luZGV4KSB7CisgICAgICAgIHZhbHVlID0gY29uc3VtZU51bWJlcihyYW5nZSwg
VmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAg
IHZhbHVlID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgSFRNTFN0YW5kYXJkTW9kZSwg
VmFsdWVSYW5nZU5vbk5lZ2F0aXZlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworICAgICAgICBp
ZiAoIXZhbHVlKQorICAgICAgICAgICAgdmFsdWUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBdXRv
PihyYW5nZSk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgd2lkdGhzW2luZGV4XSA9IHZhbHVlOworICAgIH0KKyAgICBpZiAoIXdpZHRoc1swXSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgY29tcGxldGU0U2lkZXMod2lkdGhzKTsKKyAgICBy
ZXR1cm4gQ1NTUXVhZFZhbHVlOjpjcmVhdGUod2lkdGhzWzBdLCB3aWR0aHNbMV0sIHdpZHRoc1sy
XSwgd2lkdGhzWzNdLCBDU1NRdWFkVmFsdWU6OlNlcmlhbGl6ZUFzUXVhZCk7Cit9CisKK3N0YXRp
YyBib29sIGNvbnN1bWVCb3JkZXJJbWFnZUNvbXBvbmVudHMoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNv
bnRleHQsIENTU1ZhbHVlKiYgc291cmNlLAorICAgIENTU1ZhbHVlKiYgc2xpY2UsIENTU1ZhbHVl
KiYgd2lkdGgsIENTU1ZhbHVlKiYgb3V0c2V0LCBDU1NWYWx1ZSomIHJlcGVhdCkKK3sKKyAgICBk
byB7CisgICAgICAgIGlmICghc291cmNlKSB7CisgICAgICAgICAgICBzb3VyY2UgPSBjb25zdW1l
SW1hZ2VPck5vbmUocmFuZ2UsIGNvbnRleHQpOworICAgICAgICAgICAgaWYgKHNvdXJjZSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXJlcGVhdCkg
eworICAgICAgICAgICAgcmVwZWF0ID0gY29uc3VtZUJvcmRlckltYWdlUmVwZWF0KHJhbmdlKTsK
KyAgICAgICAgICAgIGlmIChyZXBlYXQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKCFzbGljZSkgeworICAgICAgICAgICAgc2xpY2UgPSBjb25zdW1l
Qm9yZGVySW1hZ2VTbGljZShwcm9wZXJ0eSwgcmFuZ2UpOworICAgICAgICAgICAgaWYgKHNsaWNl
KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKCF3aWR0aCAmJiAhb3V0c2V0KTsKKyAgICAgICAg
ICAgICAgICBpZiAoY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgd2lkdGggPSBjb25zdW1lQm9yZGVySW1hZ2VXaWR0aChyYW5nZSk7
CisgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNl
KHJhbmdlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3V0c2V0ID0gY29uc3VtZUJvcmRl
ckltYWdlT3V0c2V0KHJhbmdlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghb3V0c2V0
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIGlmICghd2lkdGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpOworICAgIHJldHVybiB0cnVlOwor
fQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVXZWJraXRCb3JkZXJJbWFnZShDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5LCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2Vy
Q29udGV4dCYgY29udGV4dCkKK3sKKyAgICBDU1NWYWx1ZSogc291cmNlID0gbnVsbHB0cjsKKyAg
ICBDU1NWYWx1ZSogc2xpY2UgPSBudWxscHRyOworICAgIENTU1ZhbHVlKiB3aWR0aCA9IG51bGxw
dHI7CisgICAgQ1NTVmFsdWUqIG91dHNldCA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIHJlcGVh
dCA9IG51bGxwdHI7CisgICAgaWYgKGNvbnN1bWVCb3JkZXJJbWFnZUNvbXBvbmVudHMocHJvcGVy
dHksIHJhbmdlLCBjb250ZXh0LCBzb3VyY2UsIHNsaWNlLCB3aWR0aCwgb3V0c2V0LCByZXBlYXQp
KQorICAgICAgICByZXR1cm4gY3JlYXRlQm9yZGVySW1hZ2VWYWx1ZShzb3VyY2UsIHNsaWNlLCB3
aWR0aCwgb3V0c2V0LCByZXBlYXQpOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMg
Q1NTVmFsdWUqIGNvbnN1bWVSZWZsZWN0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25z
dCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBk
aXJlY3Rpb24gPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBYm92ZSwgQ1NTVmFsdWVCZWxvdywgQ1NT
VmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0PihyYW5nZSk7CisgICAgaWYgKCFkaXJlY3Rpb24pCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIG9mZnNldCA9
IG51bGxwdHI7CisgICAgaWYgKHJhbmdlLmF0RW5kKCkpIHsKKyAgICAgICAgb2Zmc2V0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBp
eGVscyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgb2Zmc2V0ID0gY29uc3VtZUxlbmd0aE9yUGVy
Y2VudChyYW5nZSwgY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VBbGwsIFVuaXRsZXNzUXVpcms6
OkZvcmJpZCk7CisgICAgICAgIGlmICghb2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorCisgICAgQ1NTVmFsdWUqIG1hc2sgPSBudWxscHRyOworICAgIGlmICghcmFu
Z2UuYXRFbmQoKSkgeworICAgICAgICBtYXNrID0gY29uc3VtZVdlYmtpdEJvcmRlckltYWdlKENT
U1Byb3BlcnR5V2Via2l0Qm94UmVmbGVjdCwgcmFuZ2UsIGNvbnRleHQpOworICAgICAgICBpZiAo
IW1hc2spCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIENT
U1JlZmxlY3RWYWx1ZTo6Y3JlYXRlKGRpcmVjdGlvbiwgb2Zmc2V0LCBtYXNrKTsKK30KKworc3Rh
dGljIENTU1ZhbHVlKiBjb25zdW1lRm9udFNpemVBZGp1c3QoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVOdW1i
ZXIocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSog
Y29uc3VtZUltYWdlT3JpZW50YXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7Cisg
ICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlRnJvbUltYWdlKQorICAgICAgICBy
ZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAh
PSBOdW1iZXJUb2tlbikgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogYW5nbGUgPSBjb25z
dW1lQW5nbGUocmFuZ2UpOworICAgICAgICBpZiAoYW5nbGUgJiYgYW5nbGUtPmdldERvdWJsZVZh
bHVlKCkgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBhbmdsZTsKKyAgICB9CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUJhY2tncm91bmRCbGVuZE1v
ZGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJh
bmdlLnBlZWsoKS5pZCgpOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBD
U1NWYWx1ZU92ZXJsYXkgfHwgKGlkID49IENTU1ZhbHVlTXVsdGlwbHkgJiYgaWQgPD0gQ1NTVmFs
dWVMdW1pbm9zaXR5KSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUJhY2tncm91bmRB
dHRhY2htZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBjb25z
dW1lSWRlbnQ8Q1NTVmFsdWVTY3JvbGwsIENTU1ZhbHVlRml4ZWQsIENTU1ZhbHVlTG9jYWw+KHJh
bmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQmFja2dyb3VuZEJveChDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVl
Qm9yZGVyQm94LCBDU1NWYWx1ZVBhZGRpbmdCb3gsIENTU1ZhbHVlQ29udGVudEJveD4ocmFuZ2Up
OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVCYWNrZ3JvdW5kQ29tcG9zaXRlKENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBjb25zdW1lSWRlbnRSYW5nZShy
YW5nZSwgQ1NTVmFsdWVDbGVhciwgQ1NTVmFsdWVQbHVzTGlnaHRlcik7Cit9CisKK3N0YXRpYyBD
U1NWYWx1ZSogY29uc3VtZU1hc2tTb3VyY2VUeXBlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
KQoreworICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NNYXNrU291cmNlVHlw
ZUVuYWJsZWQoKSk7CisgICAgcmV0dXJuIGNvbnN1bWVJZGVudDxDU1NWYWx1ZUF1dG8sIENTU1Zh
bHVlQWxwaGEsIENTU1ZhbHVlTHVtaW5hbmNlPihyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1
ZSogY29uc3VtZVByZWZpeGVkQmFja2dyb3VuZEJveChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4
dCkKK3sKKyAgICAvLyBUaGUgdmFsdWVzICdib3JkZXInLCAncGFkZGluZycgYW5kICdjb250ZW50
JyBhcmUgZGVwcmVjYXRlZCBhbmQgZG8gbm90IGFwcGx5IHRvIHRoZSB2ZXJzaW9uIG9mIHRoZSBw
cm9wZXJ0eSB0aGF0IGhhcyB0aGUgLXdlYmtpdC0gcHJlZml4IHJlbW92ZWQuCisgICAgaWYgKENT
U1ZhbHVlKiB2YWx1ZSA9IGNvbnN1bWVJZGVudFJhbmdlKHJhbmdlLCBDU1NWYWx1ZUJvcmRlciwg
Q1NTVmFsdWVQYWRkaW5nQm94KSkKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGlmICgocHJv
cGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xpcCB8fCBwcm9wZXJ0eSA9PSBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwKSAmJiByYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1
ZVRleHQpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVCYWNrZ3JvdW5kU2l6ZShDU1NQ
cm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0eSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Us
IENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAoaWRlbnRNYXRjaGVzPENT
U1ZhbHVlQ29udGFpbiwgQ1NTVmFsdWVDb3Zlcj4ocmFuZ2UucGVlaygpLmlkKCkpKQorICAgICAg
ICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBo
b3Jpem9udGFsID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQXV0bz4ocmFuZ2UpOworICAgIGlmICgh
aG9yaXpvbnRhbCkKKyAgICAgICAgaG9yaXpvbnRhbCA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQo
cmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwsIFVuaXRsZXNzUXVpcms6OkZvcmJp
ZCk7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmVydGljYWwgPSBudWxscHRyOworICAgIGlm
ICghcmFuZ2UuYXRFbmQoKSkgeworICAgICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NT
VmFsdWVBdXRvKSAvLyBgYXV0bycgaXMgdGhlIGRlZmF1bHQKKyAgICAgICAgICAgIHJhbmdlLmNv
bnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZl
cnRpY2FsID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFs
dWVSYW5nZUFsbCwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKKyAgICB9IGVsc2UgaWYgKHVucmVz
b2x2ZWRQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUFsaWFzV2Via2l0QmFja2dyb3VuZFNpemUpIHsK
KyAgICAgICAgLy8gTGVnYWN5IHN5bnRheDogIi13ZWJraXQtYmFja2dyb3VuZC1zaXplOiAxMHB4
IiBpcyBlcXVpdmFsZW50IHRvICJiYWNrZ3JvdW5kLXNpemU6IDEwcHggMTBweCIuCisgICAgICAg
IHZlcnRpY2FsID0gaG9yaXpvbnRhbDsKKyAgICB9CisgICAgaWYgKCF2ZXJ0aWNhbCkKKyAgICAg
ICAgcmV0dXJuIGhvcml6b250YWw7CisgICAgcmV0dXJuIENTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhv
cml6b250YWwsIHZlcnRpY2FsLCBDU1NWYWx1ZVBhaXI6OktlZXBJZGVudGljYWxWYWx1ZXMpOwor
fQorCitzdGF0aWMgQ1NTVmFsdWVMaXN0KiBjb25zdW1lR3JpZEF1dG9GbG93KENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlKQoreworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiByb3dPckNvbHVtblZh
bHVlID0gY29uc3VtZUlkZW50PENTU1ZhbHVlUm93LCBDU1NWYWx1ZUNvbHVtbj4ocmFuZ2UpOwor
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBkZW5zZUFsZ29yaXRobSA9IGNvbnN1bWVJZGVudDxDU1NW
YWx1ZURlbnNlPihyYW5nZSk7CisgICAgaWYgKCFyb3dPckNvbHVtblZhbHVlKSB7CisgICAgICAg
IHJvd09yQ29sdW1uVmFsdWUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVSb3csIENTU1ZhbHVlQ29s
dW1uPihyYW5nZSk7CisgICAgICAgIGlmICghcm93T3JDb2x1bW5WYWx1ZSAmJiAhZGVuc2VBbGdv
cml0aG0pCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgQ1NTVmFsdWVM
aXN0KiBwYXJzZWRWYWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7
CisgICAgaWYgKHJvd09yQ29sdW1uVmFsdWUpCisgICAgICAgIHBhcnNlZFZhbHVlcy0+YXBwZW5k
KCpyb3dPckNvbHVtblZhbHVlKTsKKyAgICBpZiAoZGVuc2VBbGdvcml0aG0pCisgICAgICAgIHBh
cnNlZFZhbHVlcy0+YXBwZW5kKCpkZW5zZUFsZ29yaXRobSk7CisgICAgcmV0dXJuIHBhcnNlZFZh
bHVlczsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQmFja2dyb3VuZENvbXBvbmVudChD
U1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0eSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgc3dpdGNoICh1bnJl
c29sdmVkUHJvcGVydHkpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXA6Cisg
ICAgICAgIHJldHVybiBjb25zdW1lQmFja2dyb3VuZEJveChyYW5nZSk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRCbGVuZE1vZGU6CisgICAgICAgIHJldHVybiBjb25zdW1lQmFja2dy
b3VuZEJsZW5kTW9kZShyYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRh
Y2htZW50OgorICAgICAgICByZXR1cm4gY29uc3VtZUJhY2tncm91bmRBdHRhY2htZW50KHJhbmdl
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbjoKKyAgICAgICAgcmV0dXJu
IGNvbnN1bWVCYWNrZ3JvdW5kQm94KHJhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWFza0NvbXBvc2l0ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCYWNrZ3JvdW5kQ29tcG9zaXRl
KHJhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFza1NvdXJjZVR5cGU6CisgICAgICAgIHJl
dHVybiBjb25zdW1lTWFza1NvdXJjZVR5cGUocmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCYWNrZ3JvdW5kQ2xpcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3Vu
ZE9yaWdpbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXA6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW46CisgICAgICAgIHJldHVybiBjb25zdW1lUHJlZml4
ZWRCYWNrZ3JvdW5kQm94KHVucmVzb2x2ZWRQcm9wZXJ0eSwgcmFuZ2UsIGNvbnRleHQpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tJbWFnZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJbWFnZU9yTm9uZShyYW5nZSwg
Y29udGV4dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblg6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblg6CisgICAgICAgIHJldHVybiBjb25z
dW1lUG9zaXRpb25YKHJhbmdlLCBjb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRQb3NpdGlvblk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3Np
dGlvblk6CisgICAgICAgIHJldHVybiBjb25zdW1lUG9zaXRpb25ZKHJhbmdlLCBjb250ZXh0Lm1v
ZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlBbGlhc1dlYmtpdEJhY2tncm91bmRTaXplOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXNrU2l6ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCYWNrZ3JvdW5kU2l6ZSh1bnJl
c29sdmVkUHJvcGVydHksIHJhbmdlLCBjb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvcjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb2xvcihyYW5nZSwg
Y29udGV4dC5tb2RlKCkpOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH07Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyB2b2lkIGFkZEJhY2tncm91bmRWYWx1ZShD
U1NWYWx1ZSomIGxpc3QsIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAobGlzdCkgeworICAg
ICAgICBpZiAoIWxpc3QtPmlzQmFzZVZhbHVlTGlzdCgpKSB7CisgICAgICAgICAgICBDU1NWYWx1
ZSogZmlyc3RWYWx1ZSA9IGxpc3Q7CisgICAgICAgICAgICBsaXN0ID0gQ1NTVmFsdWVMaXN0Ojpj
cmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAgICAgdG9DU1NWYWx1ZUxpc3QobGlzdCkt
PmFwcGVuZCgqZmlyc3RWYWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgdG9DU1NWYWx1ZUxpc3Qo
bGlzdCktPmFwcGVuZCgqdmFsdWUpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFRvIGNvbnNl
cnZlIG1lbW9yeSB3ZSBkb24ndCBhY3R1YWxseSB3cmFwIGEgc2luZ2xlIHZhbHVlIGluIGEgbGlz
dC4KKyAgICAgICAgbGlzdCA9IHZhbHVlOworICAgIH0KK30KKworc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lQ29tbWFTZXBhcmF0ZWRCYWNrZ3JvdW5kQ29tcG9uZW50KENTU1Byb3BlcnR5SUQgdW5y
ZXNvbHZlZFByb3BlcnR5LCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFy
c2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBDU1NWYWx1ZSogcmVzdWx0ID0gbnVsbHB0cjsK
KyAgICBkbyB7CisgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IGNvbnN1bWVCYWNrZ3JvdW5kQ29t
cG9uZW50KHVucmVzb2x2ZWRQcm9wZXJ0eSwgcmFuZ2UsIGNvbnRleHQpOworICAgICAgICBpZiAo
IXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGFkZEJhY2tncm91
bmRWYWx1ZShyZXN1bHQsIHZhbHVlKTsKKyAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRp
bmdXaGl0ZXNwYWNlKHJhbmdlKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIENT
U1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lU2VsZlBvc2l0aW9uS2V5d29yZChDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7
CisgICAgaWYgKGlkID09IENTU1ZhbHVlU3RhcnQgfHwgaWQgPT0gQ1NTVmFsdWVFbmQgfHwgaWQg
PT0gQ1NTVmFsdWVDZW50ZXIKKyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVTZWxmU3RhcnQgfHwg
aWQgPT0gQ1NTVmFsdWVTZWxmRW5kIHx8IGlkID09IENTU1ZhbHVlRmxleFN0YXJ0CisgICAgICAg
IHx8IGlkID09IENTU1ZhbHVlRmxleEVuZCB8fCBpZCA9PSBDU1NWYWx1ZUxlZnQgfHwgaWQgPT0g
Q1NTVmFsdWVSaWdodCkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVNlbGZQb3NpdGlv
bk92ZXJmbG93UG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYg
KGlkZW50TWF0Y2hlczxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZVN0cmV0
Y2gsIENTU1ZhbHVlQmFzZWxpbmUsIENTU1ZhbHVlTGFzdEJhc2VsaW5lPihyYW5nZS5wZWVrKCku
aWQoKSkpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIG92ZXJmbG93UG9zaXRpb24gPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVVbnNh
ZmUsIENTU1ZhbHVlU2FmZT4ocmFuZ2UpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWxmUG9z
aXRpb24gPSBjb25zdW1lU2VsZlBvc2l0aW9uS2V5d29yZChyYW5nZSk7CisgICAgaWYgKCFzZWxm
UG9zaXRpb24pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghb3ZlcmZsb3dQb3Np
dGlvbikKKyAgICAgICAgb3ZlcmZsb3dQb3NpdGlvbiA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZVVu
c2FmZSwgQ1NTVmFsdWVTYWZlPihyYW5nZSk7CisgICAgaWYgKG92ZXJmbG93UG9zaXRpb24pCisg
ICAgICAgIHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShzZWxmUG9zaXRpb24sIG92ZXJmbG93
UG9zaXRpb24sIENTU1ZhbHVlUGFpcjo6RHJvcElkZW50aWNhbFZhbHVlcyk7CisgICAgcmV0dXJu
IHNlbGZQb3NpdGlvbjsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQWxpZ25JdGVtcyhD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICAvLyBhbGlnbi1pdGVtcyBwcm9wZXJ0
eSBkb2VzIG5vdCBhbGxvdyB0aGUgJ2F1dG8nIHZhbHVlLgorICAgIGlmIChpZGVudE1hdGNoZXM8
Q1NTVmFsdWVBdXRvPihyYW5nZS5wZWVrKCkuaWQoKSkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBjb25zdW1lU2VsZlBvc2l0aW9uT3ZlcmZsb3dQb3NpdGlvbihyYW5nZSk7
Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUp1c3RpZnlJdGVtcyhDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlQ29weSA9IHJh
bmdlOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBsZWdhY3kgPSBjb25zdW1lSWRlbnQ8Q1NTVmFs
dWVMZWdhY3k+KHJhbmdlQ29weSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBvc2l0aW9uS2V5
d29yZCA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUNlbnRlciwgQ1NTVmFsdWVMZWZ0LCBDU1NWYWx1
ZVJpZ2h0PihyYW5nZUNvcHkpOworICAgIGlmICghbGVnYWN5KQorICAgICAgICBsZWdhY3kgPSBj
b25zdW1lSWRlbnQ8Q1NTVmFsdWVMZWdhY3k+KHJhbmdlQ29weSk7CisgICAgaWYgKGxlZ2FjeSAm
JiBwb3NpdGlvbktleXdvcmQpIHsKKyAgICAgICAgcmFuZ2UgPSByYW5nZUNvcHk7CisgICAgICAg
IHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShsZWdhY3ksIHBvc2l0aW9uS2V5d29yZCwgQ1NT
VmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVzKTsKKyAgICB9CisgICAgcmV0dXJuIGNvbnN1
bWVTZWxmUG9zaXRpb25PdmVyZmxvd1Bvc2l0aW9uKHJhbmdlKTsKK30KKworc3RhdGljIENTU0N1
c3RvbUlkZW50VmFsdWUqIGNvbnN1bWVDdXN0b21JZGVudEZvckdyaWRMaW5lKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1
ZUF1dG8gfHwgcmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVTcGFuKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY29uc3VtZUN1c3RvbUlkZW50KHJhbmdlKTsKK30KKwor
c3RhdGljIENTU1ZhbHVlKiBjb25zdW1lR3JpZExpbmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSog
c3BhblZhbHVlID0gbnVsbHB0cjsKKyAgICBDU1NDdXN0b21JZGVudFZhbHVlKiBncmlkTGluZU5h
bWUgPSBudWxscHRyOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBudW1lcmljVmFsdWUgPSBjb25z
dW1lSW50ZWdlcihyYW5nZSk7CisgICAgaWYgKG51bWVyaWNWYWx1ZSkgeworICAgICAgICBncmlk
TGluZU5hbWUgPSBjb25zdW1lQ3VzdG9tSWRlbnRGb3JHcmlkTGluZShyYW5nZSk7CisgICAgICAg
IHNwYW5WYWx1ZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZVNwYW4+KHJhbmdlKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBzcGFuVmFsdWUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVTcGFuPihyYW5n
ZSk7CisgICAgICAgIGlmIChzcGFuVmFsdWUpIHsKKyAgICAgICAgICAgIG51bWVyaWNWYWx1ZSA9
IGNvbnN1bWVJbnRlZ2VyKHJhbmdlKTsKKyAgICAgICAgICAgIGdyaWRMaW5lTmFtZSA9IGNvbnN1
bWVDdXN0b21JZGVudEZvckdyaWRMaW5lKHJhbmdlKTsKKyAgICAgICAgICAgIGlmICghbnVtZXJp
Y1ZhbHVlKQorICAgICAgICAgICAgICAgIG51bWVyaWNWYWx1ZSA9IGNvbnN1bWVJbnRlZ2VyKHJh
bmdlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGdyaWRMaW5lTmFtZSA9IGNvbnN1
bWVDdXN0b21JZGVudEZvckdyaWRMaW5lKHJhbmdlKTsKKyAgICAgICAgICAgIGlmIChncmlkTGlu
ZU5hbWUpIHsKKyAgICAgICAgICAgICAgICBudW1lcmljVmFsdWUgPSBjb25zdW1lSW50ZWdlcihy
YW5nZSk7CisgICAgICAgICAgICAgICAgc3BhblZhbHVlID0gY29uc3VtZUlkZW50PENTU1ZhbHVl
U3Bhbj4ocmFuZ2UpOworICAgICAgICAgICAgICAgIGlmICghc3BhblZhbHVlICYmICFudW1lcmlj
VmFsdWUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBncmlkTGluZU5hbWU7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHNwYW5WYWx1ZSAmJiAhbnVtZXJpY1Zh
bHVlICYmICFncmlkTGluZU5hbWUpCisgICAgICAgIHJldHVybiBudWxscHRyOyAvLyAic3BhbiIg
a2V5d29yZCBhbG9uZSBpcyBpbnZhbGlkLgorICAgIGlmIChzcGFuVmFsdWUgJiYgbnVtZXJpY1Zh
bHVlICYmIG51bWVyaWNWYWx1ZS0+Z2V0SW50VmFsdWUoKSA8IDApCisgICAgICAgIHJldHVybiBu
dWxscHRyOyAvLyBOZWdhdGl2ZSBudW1iZXJzIGFyZSBub3QgYWxsb3dlZCBmb3Igc3Bhbi4KKyAg
ICBpZiAobnVtZXJpY1ZhbHVlICYmIG51bWVyaWNWYWx1ZS0+Z2V0SW50VmFsdWUoKSA9PSAwKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsgLy8gQW4gPGludGVnZXI+IHZhbHVlIG9mIHplcm8gbWFr
ZXMgdGhlIGRlY2xhcmF0aW9uIGludmFsaWQuCisKKyAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBpZiAoc3BhblZhbHVl
KQorICAgICAgICB2YWx1ZXMtPmFwcGVuZCgqc3BhblZhbHVlKTsKKyAgICBpZiAobnVtZXJpY1Zh
bHVlKQorICAgICAgICB2YWx1ZXMtPmFwcGVuZCgqbnVtZXJpY1ZhbHVlKTsKKyAgICBpZiAoZ3Jp
ZExpbmVOYW1lKQorICAgICAgICB2YWx1ZXMtPmFwcGVuZCgqZ3JpZExpbmVOYW1lKTsKKyAgICBB
U1NFUlQodmFsdWVzLT5sZW5ndGgoKSk7CisgICAgcmV0dXJuIHZhbHVlczsKK30KKworc3RhdGlj
IGJvb2wgaXNHcmlkVHJhY2tGaXhlZFNpemVkKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBwcmlt
aXRpdmVWYWx1ZSkKK3sKKyAgICBDU1NWYWx1ZUlEIHZhbHVlSUQgPSBwcmltaXRpdmVWYWx1ZS5n
ZXRWYWx1ZUlEKCk7CisgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVNaW5Db250ZW50IHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVNYXhDb250ZW50IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8
IHByaW1pdGl2ZVZhbHVlLmlzRmxleCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgaXNHcmlkVHJhY2tGaXhlZFNpemVkKGNvbnN0
IENTU1ZhbHVlJiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUuaXNQcmltaXRpdmVWYWx1ZSgpKQor
ICAgICAgICByZXR1cm4gaXNHcmlkVHJhY2tGaXhlZFNpemVkKHRvQ1NTUHJpbWl0aXZlVmFsdWUo
dmFsdWUpKTsKKworICAgIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBtaW5QcmltaXRpdmVWYWx1
ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodG9DU1NGdW5jdGlvblZhbHVlKHZhbHVlKS5pdGVtKDAp
KTsKKyAgICBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgbWF4UHJpbWl0aXZlVmFsdWUgPSB0b0NT
U1ByaW1pdGl2ZVZhbHVlKHRvQ1NTRnVuY3Rpb25WYWx1ZSh2YWx1ZSkuaXRlbSgxKSk7CisgICAg
cmV0dXJuIGlzR3JpZFRyYWNrRml4ZWRTaXplZChtaW5QcmltaXRpdmVWYWx1ZSkgfHwgaXNHcmlk
VHJhY2tGaXhlZFNpemVkKG1heFByaW1pdGl2ZVZhbHVlKTsKK30KKworc3RhdGljIFZlY3RvcjxT
dHJpbmc+IHBhcnNlR3JpZFRlbXBsYXRlQXJlYXNDb2x1bW5OYW1lcyhjb25zdCBTdHJpbmcmIGdy
aWRSb3dOYW1lcykKK3sKKyAgICBBU1NFUlQoIWdyaWRSb3dOYW1lcy5pc0VtcHR5KCkpOworICAg
IFZlY3RvcjxTdHJpbmc+IGNvbHVtbk5hbWVzOworICAgIC8vIFVzaW5nIFN0cmluZ0ltcGwgdG8g
YXZvaWQgY2hlY2tzIGFuZCBpbmRpcmVjdGlvbiBpbiBldmVyeSBjYWxsIHRvIFN0cmluZzo6b3Bl
cmF0b3JbXS4KKyAgICBTdHJpbmdJbXBsJiB0ZXh0ID0gKmdyaWRSb3dOYW1lcy5pbXBsKCk7CisK
KyAgICBTdHJpbmdCdWlsZGVyIGFyZWFOYW1lOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0ZXh0Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKGlzQ1NTU3BhY2UodGV4dFtpXSkp
IHsKKyAgICAgICAgICAgIGlmICghYXJlYU5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAg
ICAgY29sdW1uTmFtZXMuYXBwZW5kKGFyZWFOYW1lLnRvU3RyaW5nKCkpOworICAgICAgICAgICAg
ICAgIGFyZWFOYW1lLmNsZWFyKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodGV4dFtpXSA9PSAnLicpIHsKKyAgICAgICAgICAg
IGlmIChhcmVhTmFtZSA9PSAiLiIpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICBpZiAoIWFyZWFOYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIGNvbHVtbk5h
bWVzLmFwcGVuZChhcmVhTmFtZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBhcmVhTmFt
ZS5jbGVhcigpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
aWYgKCFpc05hbWVDb2RlUG9pbnQodGV4dFtpXSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFZl
Y3RvcjxTdHJpbmc+KCk7CisgICAgICAgICAgICBpZiAoYXJlYU5hbWUgPT0gIi4iKSB7CisgICAg
ICAgICAgICAgICAgY29sdW1uTmFtZXMuYXBwZW5kKGFyZWFOYW1lLnRvU3RyaW5nKCkpOworICAg
ICAgICAgICAgICAgIGFyZWFOYW1lLmNsZWFyKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBhcmVhTmFtZS5hcHBlbmQodGV4dFtpXSk7CisgICAgfQorCisgICAgaWYgKCFh
cmVhTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIGNvbHVtbk5hbWVzLmFwcGVuZChhcmVhTmFtZS50
b1N0cmluZygpKTsKKworICAgIHJldHVybiBjb2x1bW5OYW1lczsKK30KKworc3RhdGljIGJvb2wg
cGFyc2VHcmlkVGVtcGxhdGVBcmVhc1Jvdyhjb25zdCBTdHJpbmcmIGdyaWRSb3dOYW1lcywgTmFt
ZWRHcmlkQXJlYU1hcCYgZ3JpZEFyZWFNYXAsIGNvbnN0IHNpemVfdCByb3dDb3VudCwgc2l6ZV90
JiBjb2x1bW5Db3VudCkKK3sKKyAgICBpZiAoZ3JpZFJvd05hbWVzLmlzRW1wdHkoKSB8fCBncmlk
Um93TmFtZXMuY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBWZWN0b3I8U3RyaW5nPiBjb2x1bW5OYW1lcyA9IHBhcnNlR3JpZFRlbXBsYXRlQXJl
YXNDb2x1bW5OYW1lcyhncmlkUm93TmFtZXMpOworICAgIGlmIChyb3dDb3VudCA9PSAwKSB7Cisg
ICAgICAgIGNvbHVtbkNvdW50ID0gY29sdW1uTmFtZXMuc2l6ZSgpOworICAgICAgICBpZiAoY29s
dW1uQ291bnQgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IGVsc2UgaWYg
KGNvbHVtbkNvdW50ICE9IGNvbHVtbk5hbWVzLnNpemUoKSkgeworICAgICAgICAvLyBUaGUgZGVj
bGFyYXRpb24gaXMgaW52YWxpZCBpZiBhbGwgdGhlIHJvd3MgZG9uJ3QgaGF2ZSB0aGUgbnVtYmVy
IG9mIGNvbHVtbnMuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBmb3IgKHNp
emVfdCBjdXJyZW50Q29sdW1uID0gMDsgY3VycmVudENvbHVtbiA8IGNvbHVtbkNvdW50OyArK2N1
cnJlbnRDb2x1bW4pIHsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBncmlkQXJlYU5hbWUgPSBjb2x1
bW5OYW1lc1tjdXJyZW50Q29sdW1uXTsKKworICAgICAgICAvLyBVbmFtZWQgYXJlYXMgYXJlIGFs
d2F5cyB2YWxpZCAod2UgY29uc2lkZXIgdGhlbSB0byBiZSAxeDEpLgorICAgICAgICBpZiAoZ3Jp
ZEFyZWFOYW1lID09ICIuIikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHNpemVf
dCBsb29rQWhlYWRDb2x1bW4gPSBjdXJyZW50Q29sdW1uICsgMTsKKyAgICAgICAgd2hpbGUgKGxv
b2tBaGVhZENvbHVtbiA8IGNvbHVtbkNvdW50ICYmIGNvbHVtbk5hbWVzW2xvb2tBaGVhZENvbHVt
bl0gPT0gZ3JpZEFyZWFOYW1lKQorICAgICAgICAgICAgbG9va0FoZWFkQ29sdW1uKys7CisKKyAg
ICAgICAgTmFtZWRHcmlkQXJlYU1hcDo6aXRlcmF0b3IgZ3JpZEFyZWFJdCA9IGdyaWRBcmVhTWFw
LmZpbmQoZ3JpZEFyZWFOYW1lKTsKKyAgICAgICAgaWYgKGdyaWRBcmVhSXQgPT0gZ3JpZEFyZWFN
YXAuZW5kKCkpIHsKKyAgICAgICAgICAgIGdyaWRBcmVhTWFwLmFkZChncmlkQXJlYU5hbWUsIEdy
aWRBcmVhKEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3Bhbihyb3dDb3VudCwgcm93
Q291bnQgKyAxKSwgR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKGN1cnJlbnRD
b2x1bW4sIGxvb2tBaGVhZENvbHVtbikpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IEdyaWRBcmVhJiBncmlkQXJlYSA9IGdyaWRBcmVhSXQtPnZhbHVlOworCisgICAgICAgICAgICAv
LyBUaGUgZm9sbG93aW5nIGNoZWNrcyB0ZXN0IHRoYXQgdGhlIGdyaWQgYXJlYSBpcyBhIHNpbmds
ZSBmaWxsZWQtaW4gcmVjdGFuZ2xlLgorICAgICAgICAgICAgLy8gMS4gVGhlIG5ldyByb3cgaXMg
YWRqYWNlbnQgdG8gdGhlIHByZXZpb3VzbHkgcGFyc2VkIHJvdy4KKyAgICAgICAgICAgIGlmIChy
b3dDb3VudCAhPSBncmlkQXJlYS5yb3dzLmVuZExpbmUoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgICAgIC8vIDIuIFRoZSBuZXcgYXJlYSBzdGFydHMgYXQgdGhl
IHNhbWUgcG9zaXRpb24gYXMgdGhlIHByZXZpb3VzbHkgcGFyc2VkIGFyZWEuCisgICAgICAgICAg
ICBpZiAoY3VycmVudENvbHVtbiAhPSBncmlkQXJlYS5jb2x1bW5zLnN0YXJ0TGluZSgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgLy8gMy4gVGhlIG5ldyBh
cmVhIGVuZHMgYXQgdGhlIHNhbWUgcG9zaXRpb24gYXMgdGhlIHByZXZpb3VzbHkgcGFyc2VkIGFy
ZWEuCisgICAgICAgICAgICBpZiAobG9va0FoZWFkQ29sdW1uICE9IGdyaWRBcmVhLmNvbHVtbnMu
ZW5kTGluZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAg
Z3JpZEFyZWEucm93cyA9IEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3Bhbihncmlk
QXJlYS5yb3dzLnN0YXJ0TGluZSgpLCBncmlkQXJlYS5yb3dzLmVuZExpbmUoKSArIDEpOworICAg
ICAgICB9CisgICAgICAgIGN1cnJlbnRDb2x1bW4gPSBsb29rQWhlYWRDb2x1bW4gLSAxOworICAg
IH0KKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNv
bnN1bWVHcmlkQnJlYWR0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJh
bmdlLnBlZWsoKTsKKyAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlTWluQ29udGVudCwgQ1NT
VmFsdWVNYXhDb250ZW50LCBDU1NWYWx1ZUF1dG8+KHRva2VuLmlkKCkpKQorICAgICAgICByZXR1
cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICBpZiAodG9rZW4udHlwZSgpID09IERpbWVuc2lv
blRva2VuICYmIHRva2VuLnVuaXRUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBl
OjpGcmFjdGlvbikgeworICAgICAgICBpZiAocmFuZ2UucGVlaygpLm51bWVyaWNWYWx1ZSgpIDwg
MCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVy
aWNWYWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkZyYWN0aW9uKTsKKyAgICB9
CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUs
IFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOworfQorCitzdGF0
aWMgQ1NTVmFsdWUqIGNvbnN1bWVHcmlkVHJhY2tTaXplKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgY29uc3QgQ1NTUGFyc2Vy
VG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOworICAgIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFs
dWVBdXRvPih0b2tlbi5pZCgpKSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7
CisKKyAgICBpZiAodG9rZW4uZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlTWlubWF4KSB7CisgICAg
ICAgIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2VDb3B5ID0gcmFuZ2U7CisgICAgICAgIENTU1Bh
cnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZUNvcHkpOworICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogbWluVHJhY2tCcmVhZHRoID0gY29uc3VtZUdyaWRCcmVhZHRo
KGFyZ3MsIGNzc1BhcnNlck1vZGUpOworICAgICAgICBpZiAoIW1pblRyYWNrQnJlYWR0aCB8fCBt
aW5UcmFja0JyZWFkdGgtPmlzRmxleCgpIHx8ICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNw
YWNlKGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBtYXhUcmFja0JyZWFkdGggPSBjb25zdW1lR3JpZEJyZWFkdGgoYXJncywgY3Nz
UGFyc2VyTW9kZSk7CisgICAgICAgIGlmICghbWF4VHJhY2tCcmVhZHRoIHx8ICFhcmdzLmF0RW5k
KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmFuZ2UgPSByYW5nZUNv
cHk7CisgICAgICAgIENTU0Z1bmN0aW9uVmFsdWUqIHJlc3VsdCA9IENTU0Z1bmN0aW9uVmFsdWU6
OmNyZWF0ZShDU1NWYWx1ZU1pbm1heCk7CisgICAgICAgIHJlc3VsdC0+YXBwZW5kKCptaW5UcmFj
a0JyZWFkdGgpOworICAgICAgICByZXN1bHQtPmFwcGVuZCgqbWF4VHJhY2tCcmVhZHRoKTsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIGNvbnN1bWVHcmlkQnJlYWR0
aChyYW5nZSwgY3NzUGFyc2VyTW9kZSk7Cit9CisKKy8vIEFwcGVuZHMgdG8gdGhlIHBhc3NlZCBp
biBDU1NHcmlkTGluZU5hbWVzVmFsdWUgaWYgYW55LCBvdGhlcndpc2UgY3JlYXRlcyBhIG5ldyBv
bmUuCitzdGF0aWMgQ1NTR3JpZExpbmVOYW1lc1ZhbHVlKiBjb25zdW1lR3JpZExpbmVOYW1lcyhD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTR3JpZExpbmVOYW1lc1ZhbHVlKiBsaW5lTmFt
ZXMgPSBudWxscHRyKQoreworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2VDb3B5ID0gcmFu
Z2U7CisgICAgaWYgKHJhbmdlQ29weS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLnR5cGUo
KSAhPSBMZWZ0QnJhY2tldFRva2VuKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAo
IWxpbmVOYW1lcykKKyAgICAgICAgbGluZU5hbWVzID0gQ1NTR3JpZExpbmVOYW1lc1ZhbHVlOjpj
cmVhdGUoKTsKKyAgICB3aGlsZSAoQ1NTQ3VzdG9tSWRlbnRWYWx1ZSogbGluZU5hbWUgPSBjb25z
dW1lQ3VzdG9tSWRlbnRGb3JHcmlkTGluZShyYW5nZUNvcHkpKQorICAgICAgICBsaW5lTmFtZXMt
PmFwcGVuZCgqbGluZU5hbWUpOworICAgIGlmIChyYW5nZUNvcHkuY29uc3VtZUluY2x1ZGluZ1do
aXRlc3BhY2UoKS50eXBlKCkgIT0gUmlnaHRCcmFja2V0VG9rZW4pCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJhbmdlID0gcmFuZ2VDb3B5OworICAgIHJldHVybiBsaW5lTmFtZXM7Cit9
CisKK3N0YXRpYyBib29sIGNvbnN1bWVHcmlkVHJhY2tSZXBlYXRGdW5jdGlvbihDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NWYWx1ZUxp
c3QmIGxpc3QsIGJvb2wmIGlzQXV0b1JlcGVhdCwgYm9vbCYgYWxsVHJhY2tzQXJlRml4ZWRTaXpl
ZCkKK3sKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFu
Z2UpOworICAgIC8vIFRoZSBudW1iZXIgb2YgcmVwZXRpdGlvbnMgZm9yIDxhdXRvLXJlcGVhdD4g
aXMgbm90IGltcG9ydGFudCBhdCBwYXJzaW5nIGxldmVsCisgICAgLy8gYmVjYXVzZSBpdCB3aWxs
IGJlIGNvbXB1dGVkIGxhdGVyLCBsZXQncyBzZXQgaXQgdG8gMS4KKyAgICBzaXplX3QgcmVwZXRp
dGlvbnMgPSAxOworICAgIGlzQXV0b1JlcGVhdCA9IGlkZW50TWF0Y2hlczxDU1NWYWx1ZUF1dG9G
aWxsLCBDU1NWYWx1ZUF1dG9GaXQ+KGFyZ3MucGVlaygpLmlkKCkpOworICAgIENTU1ZhbHVlTGlz
dCogcmVwZWF0ZWRWYWx1ZXM7CisgICAgaWYgKGlzQXV0b1JlcGVhdCkgeworICAgICAgICByZXBl
YXRlZFZhbHVlcyA9IENTU0dyaWRBdXRvUmVwZWF0VmFsdWU6OmNyZWF0ZShhcmdzLmNvbnN1bWVJ
bmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gRklY
TUU6IGEgY29uc3VtZUludGVnZXJSYXcgd291bGQgYmUgbW9yZSBlZmZpY2llbnQgaGVyZS4KKyAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHJlcGV0aXRpb24gPSBjb25zdW1lUG9zaXRpdmVJbnRl
Z2VyKGFyZ3MpOworICAgICAgICBpZiAoIXJlcGV0aXRpb24pCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJlcGV0aXRpb25zID0gY2xhbXBUbzxzaXplX3Q+KHJlcGV0aXRpb24t
PmdldERvdWJsZVZhbHVlKCksIDAsIGtHcmlkTWF4VHJhY2tzKTsKKyAgICAgICAgcmVwZWF0ZWRW
YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgfQorICAg
IGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIENTU0dyaWRMaW5lTmFtZXNWYWx1ZSogbGluZU5hbWVzID0gY29uc3Vt
ZUdyaWRMaW5lTmFtZXMoYXJncyk7CisgICAgaWYgKGxpbmVOYW1lcykKKyAgICAgICAgcmVwZWF0
ZWRWYWx1ZXMtPmFwcGVuZCgqbGluZU5hbWVzKTsKKworICAgIHNpemVfdCBudW1iZXJPZlRyYWNr
cyA9IDA7CisgICAgd2hpbGUgKCFhcmdzLmF0RW5kKCkpIHsKKyAgICAgICAgQ1NTVmFsdWUqIHRy
YWNrU2l6ZSA9IGNvbnN1bWVHcmlkVHJhY2tTaXplKGFyZ3MsIGNzc1BhcnNlck1vZGUpOworICAg
ICAgICBpZiAoIXRyYWNrU2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
aWYgKGFsbFRyYWNrc0FyZUZpeGVkU2l6ZWQpCisgICAgICAgICAgICBhbGxUcmFja3NBcmVGaXhl
ZFNpemVkID0gaXNHcmlkVHJhY2tGaXhlZFNpemVkKCp0cmFja1NpemUpOworICAgICAgICByZXBl
YXRlZFZhbHVlcy0+YXBwZW5kKCp0cmFja1NpemUpOworICAgICAgICArK251bWJlck9mVHJhY2tz
OworICAgICAgICBsaW5lTmFtZXMgPSBjb25zdW1lR3JpZExpbmVOYW1lcyhhcmdzKTsKKyAgICAg
ICAgaWYgKGxpbmVOYW1lcykKKyAgICAgICAgICAgIHJlcGVhdGVkVmFsdWVzLT5hcHBlbmQoKmxp
bmVOYW1lcyk7CisgICAgfQorICAgIC8vIFdlIHNob3VsZCBoYXZlIGZvdW5kIGF0IGxlYXN0IG9u
ZSA8dHJhY2stc2l6ZT4gb3IgZWxzZSBpdCBpcyBub3QgYSB2YWxpZCA8dHJhY2stbGlzdD4uCisg
ICAgaWYgKCFudW1iZXJPZlRyYWNrcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KGlzQXV0b1JlcGVhdCkgeworICAgICAgICBsaXN0LmFwcGVuZCgqcmVwZWF0ZWRWYWx1ZXMpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFdlIGNsYW1wIHRoZSByZXBldGl0aW9ucyB0byBhIG11
bHRpcGxlIG9mIHRoZSByZXBlYXQoKSB0cmFjayBsaXN0J3Mgc2l6ZSwgd2hpbGUgc3RheWluZyBi
ZWxvdyB0aGUgbWF4IGdyaWQgc2l6ZS4KKyAgICAgICAgcmVwZXRpdGlvbnMgPSBzdGQ6Om1pbihy
ZXBldGl0aW9ucywga0dyaWRNYXhUcmFja3MgLyBudW1iZXJPZlRyYWNrcyk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVwZXRpdGlvbnM7ICsraSkgeworICAgICAgICAgICAgZm9y
IChzaXplX3QgaiA9IDA7IGogPCByZXBlYXRlZFZhbHVlcy0+bGVuZ3RoKCk7ICsraikKKyAgICAg
ICAgICAgICAgICBsaXN0LmFwcGVuZChyZXBlYXRlZFZhbHVlcy0+aXRlbShqKSk7CisgICAgICAg
IH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2VudW0gVHJhY2tMaXN0VHlwZSB7IEdy
aWRUZW1wbGF0ZSwgR3JpZFRlbXBsYXRlTm9SZXBlYXQsIEdyaWRBdXRvIH07CisKK3N0YXRpYyBD
U1NWYWx1ZSogY29uc3VtZUdyaWRUcmFja0xpc3QoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Us
IENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVHJhY2tMaXN0VHlwZSB0cmFja0xpc3RUeXBl
KQoreworICAgIGJvb2wgYWxsb3dHcmlkTGluZU5hbWVzID0gdHJhY2tMaXN0VHlwZSAhPSBHcmlk
QXV0bzsKKyAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3Bh
Y2VTZXBhcmF0ZWQoKTsKKyAgICBDU1NHcmlkTGluZU5hbWVzVmFsdWUqIGxpbmVOYW1lcyA9IGNv
bnN1bWVHcmlkTGluZU5hbWVzKHJhbmdlKTsKKyAgICBpZiAobGluZU5hbWVzKSB7CisgICAgICAg
IGlmICghYWxsb3dHcmlkTGluZU5hbWVzKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHZhbHVlcy0+YXBwZW5kKCpsaW5lTmFtZXMpOworICAgIH0KKworICAgIGJvb2wgYWxs
b3dSZXBlYXQgPSB0cmFja0xpc3RUeXBlID09IEdyaWRUZW1wbGF0ZTsKKyAgICBib29sIHNlZW5B
dXRvUmVwZWF0ID0gZmFsc2U7CisgICAgYm9vbCBhbGxUcmFja3NBcmVGaXhlZFNpemVkID0gdHJ1
ZTsKKyAgICBkbyB7CisgICAgICAgIGJvb2wgaXNBdXRvUmVwZWF0OworICAgICAgICBpZiAocmFu
Z2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZVJlcGVhdCkgeworICAgICAgICAgICAg
aWYgKCFhbGxvd1JlcGVhdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgICAgIGlmICghY29uc3VtZUdyaWRUcmFja1JlcGVhdEZ1bmN0aW9uKHJhbmdlLCBjc3NQYXJz
ZXJNb2RlLCAqdmFsdWVzLCBpc0F1dG9SZXBlYXQsIGFsbFRyYWNrc0FyZUZpeGVkU2l6ZWQpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgaWYgKGlzQXV0b1Jl
cGVhdCAmJiBzZWVuQXV0b1JlcGVhdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgICAgIHNlZW5BdXRvUmVwZWF0ID0gc2VlbkF1dG9SZXBlYXQgfHwgaXNBdXRvUmVw
ZWF0OworICAgICAgICB9IGVsc2UgaWYgKENTU1ZhbHVlKiB2YWx1ZSA9IGNvbnN1bWVHcmlkVHJh
Y2tTaXplKHJhbmdlLCBjc3NQYXJzZXJNb2RlKSkgeworICAgICAgICAgICAgaWYgKGFsbFRyYWNr
c0FyZUZpeGVkU2l6ZWQpCisgICAgICAgICAgICAgICAgYWxsVHJhY2tzQXJlRml4ZWRTaXplZCA9
IGlzR3JpZFRyYWNrRml4ZWRTaXplZCgqdmFsdWUpOworICAgICAgICAgICAgdmFsdWVzLT5hcHBl
bmQoKnZhbHVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICB9CisgICAgICAgIGlmIChzZWVuQXV0b1JlcGVhdCAmJiAhYWxsVHJhY2tzQXJl
Rml4ZWRTaXplZCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBsaW5lTmFt
ZXMgPSBjb25zdW1lR3JpZExpbmVOYW1lcyhyYW5nZSk7CisgICAgICAgIGlmIChsaW5lTmFtZXMp
IHsKKyAgICAgICAgICAgIGlmICghYWxsb3dHcmlkTGluZU5hbWVzKQorICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoKmxpbmVOYW1lcyk7
CisgICAgICAgIH0KKyAgICB9IHdoaWxlICghcmFuZ2UuYXRFbmQoKSAmJiByYW5nZS5wZWVrKCku
dHlwZSgpICE9IERlbGltaXRlclRva2VuKTsKKyAgICByZXR1cm4gdmFsdWVzOworfQorCitzdGF0
aWMgQ1NTVmFsdWUqIGNvbnN1bWVHcmlkVGVtcGxhdGVzUm93c09yQ29sdW1ucyhDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlm
IChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25z
dW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lR3JpZFRyYWNrTGlzdChyYW5nZSwg
Y3NzUGFyc2VyTW9kZSwgR3JpZFRlbXBsYXRlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25z
dW1lR3JpZFRlbXBsYXRlQXJlYXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAg
aWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBOYW1lZEdyaWRBcmVhTWFwIGdyaWRBcmVhTWFwOwor
ICAgIHNpemVfdCByb3dDb3VudCA9IDA7CisgICAgc2l6ZV90IGNvbHVtbkNvdW50ID0gMDsKKwor
ICAgIHdoaWxlIChyYW5nZS5wZWVrKCkudHlwZSgpID09IFN0cmluZ1Rva2VuKSB7CisgICAgICAg
IGlmICghcGFyc2VHcmlkVGVtcGxhdGVBcmVhc1JvdyhyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hp
dGVzcGFjZSgpLnZhbHVlKCkudG9TdHJpbmcoKSwgZ3JpZEFyZWFNYXAsIHJvd0NvdW50LCBjb2x1
bW5Db3VudCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgKytyb3dDb3Vu
dDsKKyAgICB9CisKKyAgICBpZiAocm93Q291bnQgPT0gMCkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgQVNTRVJUKGNvbHVtbkNvdW50KTsKKyAgICByZXR1cm4gQ1NTR3JpZFRlbXBsYXRl
QXJlYXNWYWx1ZTo6Y3JlYXRlKGdyaWRBcmVhTWFwLCByb3dDb3VudCwgY29sdW1uQ291bnQpOwor
fQorCitzdGF0aWMgdm9pZCBjb3VudEtleXdvcmRPbmx5UHJvcGVydHlVc2FnZShDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5LCBVc2VDb3VudGVyKiBjb3VudGVyLCBDU1NWYWx1ZUlEIHZhbHVlSUQpCit7
CisgICAgaWYgKCFjb3VudGVyKQorICAgICAgICByZXR1cm47CisgICAgc3dpdGNoIChwcm9wZXJ0
eSkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlOgorICAgICAgICBpZiAo
dmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUpIHsKKyAgICAgICAgICAgIGNvdW50ZXItPmNvdW50KFVz
ZUNvdW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5jZU5vbmUpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgY291bnRlci0+Y291bnQoVXNlQ291bnRlcjo6Q1NTVmFsdWVBcHBlYXJhbmNlTm90
Tm9uZSk7CisgICAgICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUJ1dHRvbikKKyAgICAg
ICAgICAgICAgICBjb3VudGVyLT5jb3VudChVc2VDb3VudGVyOjpDU1NWYWx1ZUFwcGVhcmFuY2VC
dXR0b24pOworICAgICAgICAgICAgZWxzZSBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUNhcmV0KQor
ICAgICAgICAgICAgICAgIGNvdW50ZXItPmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlQXBwZWFy
YW5jZUNhcmV0KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVDaGVj
a2JveCkKKyAgICAgICAgICAgICAgICBjb3VudGVyLT5jb3VudChVc2VDb3VudGVyOjpDU1NWYWx1
ZUFwcGVhcmFuY2VDaGVja2JveCk7CisgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZUlEID09IENT
U1ZhbHVlTWVudWxpc3QpCisgICAgICAgICAgICAgICAgY291bnRlci0+Y291bnQoVXNlQ291bnRl
cjo6Q1NTVmFsdWVBcHBlYXJhbmNlTWVudWxpc3QpOworICAgICAgICAgICAgZWxzZSBpZiAodmFs
dWVJRCA9PSBDU1NWYWx1ZU1lbnVsaXN0QnV0dG9uKQorICAgICAgICAgICAgICAgIGNvdW50ZXIt
PmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5jZU1lbnVsaXN0QnV0dG9uKTsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVMaXN0Ym94KQorICAgICAgICAg
ICAgICAgIGNvdW50ZXItPmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5jZUxpc3Ri
b3gpOworICAgICAgICAgICAgZWxzZSBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVJhZGlvKQorICAg
ICAgICAgICAgICAgIGNvdW50ZXItPmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5j
ZVJhZGlvKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVTZWFyY2hm
aWVsZCkKKyAgICAgICAgICAgICAgICBjb3VudGVyLT5jb3VudChVc2VDb3VudGVyOjpDU1NWYWx1
ZUFwcGVhcmFuY2VTZWFyY2hGaWVsZCk7CisgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZUlEID09
IENTU1ZhbHVlVGV4dGZpZWxkKQorICAgICAgICAgICAgICAgIGNvdW50ZXItPmNvdW50KFVzZUNv
dW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5jZVRleHRGaWVsZCk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgY291bnRlci0+Y291bnQoVXNlQ291bnRlcjo6Q1NTVmFsdWVBcHBlYXJh
bmNlT3RoZXJzKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIGJyZWFrOworICAgIH0KK30KKworY29uc3QgQ1NTVmFsdWUqIENTU1Byb3BlcnR5UGFy
c2VyOjpwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5SUQgdW5yZXNvbHZlZFByb3BlcnR5LCBD
U1NQcm9wZXJ0eUlEIGN1cnJlbnRTaG9ydGhhbmQpCit7CisgICAgQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eSA9IHJlc29sdmVDU1NQcm9wZXJ0eUlEKHVucmVzb2x2ZWRQcm9wZXJ0eSk7CisgICAgaWYg
KENTU1BhcnNlckZhc3RQYXRoczo6aXNLZXl3b3JkUHJvcGVydHlJRChwcm9wZXJ0eSkpIHsKKyAg
ICAgICAgaWYgKCFDU1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRW
YWx1ZShwcm9wZXJ0eSwgbV9yYW5nZS5wZWVrKCkuaWQoKSwgbV9jb250ZXh0Lm1vZGUoKSkpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgY291bnRLZXl3b3JkT25seVByb3Bl
cnR5VXNhZ2UocHJvcGVydHksIG1fY29udGV4dC51c2VDb3VudGVyKCksIG1fcmFuZ2UucGVlaygp
LmlkKCkpOworICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KG1fcmFuZ2UpOworICAgIH0KKyAg
ICBzd2l0Y2ggKHByb3BlcnR5KSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdpbGxDaGFuZ2U6Cisg
ICAgICAgIHJldHVybiBjb25zdW1lV2lsbENoYW5nZShtX3JhbmdlKTsKKyAgICBjYXNlIENTU1By
b3BlcnR5UGFnZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVQYWdlKG1fcmFuZ2UpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlRdW90ZXM6CisgICAgICAgIHJldHVybiBjb25zdW1lUXVvdGVzKG1fcmFu
Z2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIaWdobGlnaHQ6CisgICAgICAgIHJldHVy
biBjb25zdW1lV2Via2l0SGlnaGxpZ2h0KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlG
b250VmFyaWFudENhcHM6CisgICAgICAgIHJldHVybiBjb25zdW1lRm9udFZhcmlhbnRDYXBzKG1f
cmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250VmFyaWFudExpZ2F0dXJlczoKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVGb250VmFyaWFudExpZ2F0dXJlcyhtX3JhbmdlKTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5Rm9udFZhcmlhbnROdW1lcmljOgorICAgICAgICByZXR1cm4gY29uc3VtZUZv
bnRWYXJpYW50TnVtZXJpYyhtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEZlYXR1
cmVTZXR0aW5nczoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVGb250RmVhdHVyZVNldHRpbmdzKG1f
cmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250RmFtaWx5OgorICAgICAgICByZXR1cm4g
Y29uc3VtZUZvbnRGYW1pbHkobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRXZWln
aHQ6CisgICAgICAgIHJldHVybiBjb25zdW1lRm9udFdlaWdodChtX3JhbmdlKTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V29yZFNwYWNp
bmc6CisgICAgICAgIHJldHVybiBjb25zdW1lU3BhY2luZyhtX3JhbmdlLCBtX2NvbnRleHQubW9k
ZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGFiU2l6ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVUYWJTaXplKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlUZXh0U2l6ZUFkanVzdDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVUZXh0U2l6ZUFkanVzdCht
X3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFNpemU6
CisgICAgICAgIHJldHVybiBjb25zdW1lRm9udFNpemUobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUo
KSwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOworICAgIGNhc2UgQ1NTUHJvcGVydHlMaW5lSGVpZ2h0
OgorICAgICAgICByZXR1cm4gY29uc3VtZUxpbmVIZWlnaHQobV9yYW5nZSwgbV9jb250ZXh0Lm1v
ZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVJvdGF0ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVSb3RhdGlvbihtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5U2NhbGU6CisgICAgICAg
IHJldHVybiBjb25zdW1lU2NhbGUobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5z
bGF0ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVUcmFuc2xhdGUobV9yYW5nZSwgbV9jb250ZXh0
Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFj
aW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmc6Cisg
ICAgICAgIHJldHVybiBjb25zdW1lTGVuZ3RoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFZh
bHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvdW50ZXJJbmNyZW1l
bnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvdW50ZXJSZXNldDoKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVDb3VudGVyKG1fcmFuZ2UsIHByb3BlcnR5ID09IENTU1Byb3BlcnR5Q291bnRlckluY3Jl
bWVudCA/IDEgOiAwKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5U2l6ZToKKyAgICAgICAgcmV0dXJu
IGNvbnN1bWVTaXplKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlTbmFwSGVpZ2h0OgorICAgICAgICByZXR1cm4gY29uc3VtZVNuYXBIZWlnaHQobV9yYW5n
ZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRJbmRlbnQ6Cisg
ICAgICAgIHJldHVybiBjb25zdW1lVGV4dEluZGVudChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgp
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWF4V2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1h
eEhlaWdodDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVNYXhXaWR0aE9ySGVpZ2h0KG1fcmFuZ2Us
IG1fY29udGV4dCwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOworICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXhMb2dpY2FsV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2lj
YWxIZWlnaHQ6CisgICAgICAgIHJldHVybiBjb25zdW1lTWF4V2lkdGhPckhlaWdodChtX3Jhbmdl
LCBtX2NvbnRleHQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5XaWR0aDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5TWluSGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXaWR0aDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5SGVpZ2h0OgorICAgICAgICByZXR1cm4gY29uc3VtZVdpZHRoT3JIZWlnaHQo
bV9yYW5nZSwgbV9jb250ZXh0LCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWluTG9naWNhbEhlaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TG9naWNhbFdpZHRo
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMb2dpY2FsSGVpZ2h0OgorICAgICAgICByZXR1
cm4gY29uc3VtZVdpZHRoT3JIZWlnaHQobV9yYW5nZSwgbV9jb250ZXh0KTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5TWFyZ2luVG9wOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5SaWdodDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJn
aW5MZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3R0b206CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUxlZnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVJpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlU
b3A6CisgICAgICAgIHJldHVybiBjb25zdW1lTWFyZ2luT3JPZmZzZXQobV9yYW5nZSwgbV9jb250
ZXh0Lm1vZGUoKSwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOworICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5TdGFydDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luRW5kOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmU6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcmdpbkFmdGVyOgorICAgICAgICByZXR1cm4gY29uc3VtZU1hcmdpbk9yT2Zm
c2V0KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdUb3A6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRp
bmdSaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ0JvdHRvbToKKyAgICBjYXNlIENT
U1Byb3BlcnR5UGFkZGluZ0xlZnQ6CisgICAgICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJj
ZW50KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwgVW5p
dGxlc3NRdWlyazo6QWxsb3cpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nU3Rh
cnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdFbmQ6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBh
ZGRpbmdBZnRlcjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQobV9yYW5n
ZSwgbV9jb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlLCBVbml0bGVzc1F1aXJr
OjpGb3JiaWQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlDbGlwOgorICAgICAgICByZXR1cm4gY29u
c3VtZUNsaXAobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVRvdWNoQWN0aW9uOgorICAgICAgICByZXR1cm4gY29uc3VtZVRvdWNoQWN0aW9uKG1fcmFuZ2Up
OworICAgIGNhc2UgQ1NTUHJvcGVydHlTY3JvbGxTbmFwRGVzdGluYXRpb246CisgICAgY2FzZSBD
U1NQcm9wZXJ0eU9iamVjdFBvc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQZXJzcGVjdGl2
ZU9yaWdpbjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVQb3NpdGlvbihtX3JhbmdlLCBtX2NvbnRl
eHQubW9kZSgpLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRMaW5lQ2xhbXA6CisgICAgICAgIHJldHVybiBjb25zdW1lTGluZUNsYW1wKG1fcmFuZ2Up
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250U2l6ZURlbHRhOgorICAgICAgICByZXR1
cm4gY29uc3VtZUxlbmd0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxs
LCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhl
bmF0ZUNoYXJhY3RlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TG9jYWxlOgorICAgICAg
ICByZXR1cm4gY29uc3VtZUxvY2FsZShtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29s
dW1uV2lkdGg6CisgICAgICAgIHJldHVybiBjb25zdW1lQ29sdW1uV2lkdGgobV9yYW5nZSk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVtbkNvdW50OgorICAgICAgICByZXR1cm4gY29uc3VtZUNv
bHVtbkNvdW50KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlDb2x1bW5HYXA6CisgICAg
ICAgIHJldHVybiBjb25zdW1lQ29sdW1uR2FwKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlDb2x1bW5TcGFuOgorICAgICAgICByZXR1cm4gY29uc3VtZUNv
bHVtblNwYW4obV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVpvb206CisgICAgICAgIHJl
dHVybiBjb25zdW1lWm9vbShtX3JhbmdlLCBtX2NvbnRleHQpOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlBbmltYXRpb25EZWxheToKKyAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvbkRlbGF5Ogor
ICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25EaXJlY3Rpb246CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUFuaW1hdGlvbkR1cmF0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uRHVy
YXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkZpbGxNb2RlOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlBbmltYXRpb25JdGVyYXRpb25Db3VudDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
QW5pbWF0aW9uTmFtZToKKyAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uUGxheVN0YXRlOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uUHJvcGVydHk6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0
aW9uVGltaW5nRnVuY3Rpb246CisgICAgICAgIHJldHVybiBjb25zdW1lQW5pbWF0aW9uUHJvcGVy
dHlMaXN0KHByb3BlcnR5LCBtX3JhbmdlLCBtX2NvbnRleHQsIHVucmVzb2x2ZWRQcm9wZXJ0eSA9
PSBDU1NQcm9wZXJ0eUFsaWFzV2Via2l0QW5pbWF0aW9uTmFtZSk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUdyaWRDb2x1bW5HYXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRSb3dHYXA6CisgICAg
ICAgIHJldHVybiBjb25zdW1lTGVuZ3RoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFZhbHVl
UmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNoYXBlTWFyZ2luOgorICAg
ICAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChtX3JhbmdlLCBtX2NvbnRleHQubW9k
ZSgpLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgIGNhc2UgQ1NTUHJvcGVydHlTaGFwZUlt
YWdlVGhyZXNob2xkOgorICAgICAgICByZXR1cm4gY29uc3VtZU51bWJlcihtX3JhbmdlLCBWYWx1
ZVJhbmdlQWxsKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94T3JkaW5hbEdyb3VwOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlPcnBoYW5zOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXaWRvd3M6
CisgICAgICAgIHJldHVybiBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyKG1fcmFuZ2UpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkNvbG9yOgorICAgICAgICBBU1NFUlQoUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6Y3NzM1RleHREZWNvcmF0aW9uc0VuYWJsZWQoKSk7CisgICAgICAg
IHJldHVybiBjb25zdW1lQ29sb3IobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aDoKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVUZXh0U3Ryb2tlV2lkdGgobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRhcEhpZ2hsaWdodENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFz
aXNDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvcjoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3I6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJBZnRlckNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29s
b3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0b3BDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5
Rmxvb2RDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlnaHRpbmdDb2xvcjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5Q29sdW1uUnVsZUNvbG9yOgorICAgICAgICByZXR1cm4gY29uc3VtZUNvbG9y
KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvcjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yOgorICAgICAgICByZXR1cm4gY29u
c3VtZUNvbG9yKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIGluUXVpcmtzTW9kZSgpKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRXaWR0aDoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyRW5kV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckJlZm9yZVdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldp
ZHRoOgorICAgICAgICByZXR1cm4gY29uc3VtZUJvcmRlcldpZHRoKG1fcmFuZ2UsIG1fY29udGV4
dC5tb2RlKCksIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3I6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlclRvcENvbG9yOiB7CisgICAgICAgIGJvb2wgYWxsb3dRdWlya3lDb2xvcnMgPSBpblF1
aXJrc01vZGUoKQorICAgICAgICAgICAgJiYgKGN1cnJlbnRTaG9ydGhhbmQgPT0gQ1NTUHJvcGVy
dHlJbnZhbGlkIHx8IGN1cnJlbnRTaG9ydGhhbmQgPT0gQ1NTUHJvcGVydHlCb3JkZXJDb2xvcik7
CisgICAgICAgIHJldHVybiBjb25zdW1lQ29sb3IobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwg
YWxsb3dRdWlya3lDb2xvcnMpOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90
dG9tV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
VG9wV2lkdGg6IHsKKyAgICAgICAgYm9vbCBhbGxvd1F1aXJreUxlbmd0aHMgPSBpblF1aXJrc01v
ZGUoKQorICAgICAgICAgICAgJiYgKGN1cnJlbnRTaG9ydGhhbmQgPT0gQ1NTUHJvcGVydHlJbnZh
bGlkIHx8IGN1cnJlbnRTaG9ydGhhbmQgPT0gQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCk7CisgICAg
ICAgIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MgPSBhbGxvd1F1aXJreUxlbmd0aHMgPyBVbml0bGVz
c1F1aXJrOjpBbGxvdyA6IFVuaXRsZXNzUXVpcms6OkZvcmJpZDsKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVCb3JkZXJXaWR0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCB1bml0bGVzcyk7Cisg
ICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlaSW5kZXg6CisgICAgICAgIHJldHVybiBjb25zdW1l
WkluZGV4KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0U2hhZG93OiAvLyBDU1My
IHByb3BlcnR5LCBkcm9wcGVkIGluIENTUzIuMSwgYmFjayBpbiBDU1MzLCBzbyB0cmVhdCBhcyBD
U1MzCisgICAgY2FzZSBDU1NQcm9wZXJ0eUJveFNoYWRvdzoKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVTaGFkb3cobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgcHJvcGVydHkgPT0gQ1NTUHJvcGVy
dHlCb3hTaGFkb3cpOworICAgIGNhc2UgQ1NTUHJvcGVydHlGaWx0ZXI6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJhY2tkcm9wRmlsdGVyOgorICAgICAgICByZXR1cm4gY29uc3VtZUZpbHRlcihtX3Jh
bmdlLCBtX2NvbnRleHQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbjoKKyAg
ICAgICAgQVNTRVJUKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3MzVGV4dERlY29yYXRpb25z
RW5hYmxlZCgpKTsKKyAgICAgICAgLy8gZmFsbHRocm91Z2gKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3Q6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRE
ZWNvcmF0aW9uTGluZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVUZXh0RGVjb3JhdGlvbkxpbmUo
bV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1v
dGlvblBhdGg6CisgICAgICAgIHJldHVybiBjb25zdW1lUGF0aE9yTm9uZShtX3JhbmdlKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5TW90aW9uT2Zmc2V0OgorICAgICAgICByZXR1cm4gY29uc3VtZUxl
bmd0aE9yUGVyY2VudChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxsKTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5TW90aW9uUm90YXRpb246CisgICAgICAgIHJldHVybiBjb25z
dW1lTW90aW9uUm90YXRpb24obV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRFbXBoYXNpc1N0eWxlOgorICAgICAgICByZXR1cm4gY29uc3VtZVRleHRFbXBoYXNpc1N0eWxl
KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3I6CisgICAgICAgIHJl
dHVybiBjb25zdW1lT3V0bGluZUNvbG9yKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lT2Zmc2V0OgorICAgICAgICByZXR1cm4gY29uc3VtZUxl
bmd0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5T3V0bGluZVdpZHRoOgorICAgICAgICByZXR1cm4gY29uc3VtZUxpbmVXaWR0
aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlUcmFuc2Zvcm06CisgICAgICAgIHJldHVybiBjb25zdW1lVHJhbnNm
b3JtKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIHVucmVzb2x2ZWRQcm9wZXJ0eSA9PSBDU1NQ
cm9wZXJ0eUFsaWFzV2Via2l0VHJhbnNmb3JtKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VHJhbnNmb3JtT3JpZ2luWDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVP
cmlnaW5YOgorICAgICAgICByZXR1cm4gY29uc3VtZVBvc2l0aW9uWChtX3JhbmdlLCBtX2NvbnRl
eHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWToK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZOgorICAgICAgICBy
ZXR1cm4gY29uc3VtZVBvc2l0aW9uWShtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWjoKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVMZW5ndGgobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZUFsbCk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGw6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZToKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVQYWludFN0cm9rZShtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgp
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFpbnRPcmRlcjoKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVQYWludE9yZGVyKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJrZXJTdGFydDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5TWFya2VyTWlkOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJr
ZXJFbmQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNsaXBQYXRoOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlNYXNrOgorICAgICAgICByZXR1cm4gY29uc3VtZU5vbmVPclVSSShtX3JhbmdlKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5RmxleEJhc2lzOgorICAgICAgICByZXR1cm4gY29uc3VtZUZsZXhCYXNp
cyhtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5RmxleEdy
b3c6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsZXhTaHJpbms6CisgICAgICAgIHJldHVybiBjb25z
dW1lTnVtYmVyKG1fcmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVN0cm9rZURhc2hhcnJheToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTdHJva2VEYXNo
YXJyYXkobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVtblJ1bGVXaWR0aDoKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVDb2x1bW5SdWxlV2lkdGgobV9yYW5nZSwgbV9jb250ZXh0Lm1v
ZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZU9wYWNpdHk6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUZpbGxPcGFjaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlTdG9wT3BhY2l0eToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Rmxvb2RPcGFjaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlPcGFj
aXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4OgorICAgICAgICByZXR1cm4g
Y29uc3VtZU51bWJlcihtX3JhbmdlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5QmFzZWxpbmVTaGlmdDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCYXNlbGluZVNoaWZ0KG1f
cmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2VNaXRlcmxpbWl0OgorICAgICAgICBy
ZXR1cm4gY29uc3VtZU51bWJlcihtX3JhbmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlTdHJva2VXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tl
RGFzaG9mZnNldDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q3g6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUN5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlYOgorICAgIGNhc2UgQ1NTUHJvcGVydHlZOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlSOgorICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2Vu
dChtX3JhbmdlLCBTVkdBdHRyaWJ1dGVNb2RlLCBWYWx1ZVJhbmdlQWxsLCBVbml0bGVzc1F1aXJr
OjpGb3JiaWQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlSeDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
Unk6CisgICAgICAgIHJldHVybiBjb25zdW1lUnhPclJ5KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlDdXJzb3I6CisgICAgICAgIHJldHVybiBjb25zdW1lQ3Vyc29yKG1fcmFuZ2UsIG1f
Y29udGV4dCwgaW5RdWlya3NNb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlDb250YWluOgor
ICAgICAgICByZXR1cm4gY29uc3VtZUNvbnRhaW4obV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRyYW5zZm9ybU9yaWdpbjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVUcmFuc2Zvcm1Pcmln
aW4obV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Q29udGVudDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb250ZW50
KG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZToKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWFza0JveEltYWdlU291cmNlOgorICAgICAgICByZXR1cm4gY29uc3VtZUlt
YWdlT3JOb25lKG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBlcnNw
ZWN0aXZlOgorICAgICAgICByZXR1cm4gY29uc3VtZVBlcnNwZWN0aXZlKG1fcmFuZ2UsIG1fY29u
dGV4dC5tb2RlKCksIHVucmVzb2x2ZWRQcm9wZXJ0eSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNj
cm9sbFNuYXBDb29yZGluYXRlOgorICAgICAgICByZXR1cm4gY29uc3VtZVNjcm9sbFNuYXBDb29y
ZGluYXRlKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlT
Y3JvbGxTbmFwUG9pbnRzWDoKKyAgICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xsU25hcFBvaW50c1k6
CisgICAgICAgIHJldHVybiBjb25zdW1lU2Nyb2xsU25hcFBvaW50cyhtX3JhbmdlLCBtX2NvbnRl
eHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXM6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXM6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbVJpZ2h0UmFkaXVzOgorICAgICAgICByZXR1cm4gY29uc3VtZUJvcmRlclJhZGl1c0Nvcm5l
cihtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm94RmxleEdyb3VwOgorICAgICAgICByZXR1cm4gY29uc3VtZUludGVnZXIobV9yYW5nZSwgMCk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9yZGVyOgorICAgICAgICByZXR1cm4gY29uc3VtZUludGVn
ZXIobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVQb3NpdGlvbjoK
KyAgICAgICAgLy8gYXV0byB8IFsgdW5kZXIgfHwgWyBsZWZ0IHwgcmlnaHQgXSBdLCBidXQgd2Ug
b25seSBzdXBwb3J0IGF1dG8gfCB1bmRlciBmb3Igbm93CisgICAgICAgIEFTU0VSVChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpjc3MzVGV4dERlY29yYXRpb25zRW5hYmxlZCgpKTsKKyAgICAgICAg
cmV0dXJuIGNvbnN1bWVJZGVudDxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlVW5kZXI+KG1fcmFuZ2Up
OworICAgIGNhc2UgQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduOgorICAgICAgICByZXR1cm4gY29u
c3VtZVZlcnRpY2FsQWxpZ24obV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVNoYXBlT3V0c2lkZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaGFwZU91dHNp
ZGUobV9yYW5nZSwgbV9jb250ZXh0KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q2xpcFBh
dGg6CisgICAgICAgIHJldHVybiBjb25zdW1lV2Via2l0Q2xpcFBhdGgobV9yYW5nZSwgbV9jb250
ZXh0KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5SnVzdGlmeUNvbnRlbnQ6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUFsaWduQ29udGVudDoKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkpOworICAgICAgICByZXR1cm4gY29uc3VtZUNvbnRl
bnREaXN0cmlidXRpb25PdmVyZmxvd1Bvc2l0aW9uKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJJbWFnZVJlcGVhdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0Jv
eEltYWdlUmVwZWF0OgorICAgICAgICByZXR1cm4gY29uc3VtZUJvcmRlckltYWdlUmVwZWF0KG1f
cmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNsaWNlOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTbGljZToKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVCb3JkZXJJbWFnZVNsaWNlKHByb3BlcnR5LCBtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVySW1hZ2VPdXRzZXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJ
bWFnZU91dHNldDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCb3JkZXJJbWFnZU91dHNldChtX3Jh
bmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VXaWR0aDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlV2lkdGg6CisgICAgICAgIHJldHVybiBjb25zdW1l
Qm9yZGVySW1hZ2VXaWR0aChtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVySW1hZ2U6CisgICAgICAgIHJldHVybiBjb25zdW1lV2Via2l0Qm9yZGVySW1hZ2UocHJvcGVy
dHksIG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFJl
ZmxlY3Q6CisgICAgICAgIHJldHVybiBjb25zdW1lUmVmbGVjdChtX3JhbmdlLCBtX2NvbnRleHQp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U2l6ZUFkanVzdDoKKyAgICAgICAgQVNTRVJUKFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0ZvbnRTaXplQWRqdXN0RW5hYmxlZCgpKTsKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVGb250U2l6ZUFkanVzdChtX3JhbmdlKTsKKyAgICBjYXNlIENTU1By
b3BlcnR5SW1hZ2VPcmllbnRhdGlvbjoKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmltYWdlT3JpZW50YXRpb25FbmFibGVkKCkpOworICAgICAgICByZXR1cm4gY29uc3Vt
ZUltYWdlT3JpZW50YXRpb24obV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91
bmRBdHRhY2htZW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQmxlbmRNb2RlOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
QmFja2dyb3VuZEltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
U2l6ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFza1NvdXJjZVR5cGU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDbGlwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
YWNrZ3JvdW5kT3JpZ2luOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0NvbXBvc2l0ZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFza0ltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2lu
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
YXNrU2l6ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb21tYVNlcGFyYXRlZEJhY2tncm91bmRD
b21wb25lbnQodW5yZXNvbHZlZFByb3BlcnR5LCBtX3JhbmdlLCBtX2NvbnRleHQpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFza1JlcGVhdFk6CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGNhc2UgQ1NTUHJv
cGVydHlBbGlnbkl0ZW1zOgorICAgICAgICBEQ0hFQ0soUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
Y3NzR3JpZExheW91dEVuYWJsZWQoKSk7CisgICAgICAgIHJldHVybiBjb25zdW1lQWxpZ25JdGVt
cyhtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5SnVzdGlmeVNlbGY6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUFsaWduU2VsZjoKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkpOworICAgICAgICByZXR1cm4gY29uc3VtZVNlbGZQ
b3NpdGlvbk92ZXJmbG93UG9zaXRpb24obV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUp1
c3RpZnlJdGVtczoKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dy
aWRMYXlvdXRFbmFibGVkKCkpOworICAgICAgICByZXR1cm4gY29uc3VtZUp1c3RpZnlJdGVtcyht
X3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZENvbHVtbkVuZDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5R3JpZENvbHVtblN0YXJ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkUm93RW5k
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkUm93U3RhcnQ6CisgICAgICAgIEFTU0VSVChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NHcmlkTGF5b3V0RW5hYmxlZCgpKTsKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVHcmlkTGluZShtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZEF1
dG9Db2x1bW5zOgorICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkQXV0b1Jvd3M6CisgICAgICAgIEFT
U0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NHcmlkTGF5b3V0RW5hYmxlZCgpKTsKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVHcmlkVHJhY2tMaXN0KG1fcmFuZ2UsIG1fY29udGV4dC5tb2Rl
KCksIEdyaWRBdXRvKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQ29sdW1uczoK
KyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlUm93czoKKyAgICAgICAgQVNTRVJUKFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkpOworICAgICAgICBy
ZXR1cm4gY29uc3VtZUdyaWRUZW1wbGF0ZXNSb3dzT3JDb2x1bW5zKG1fcmFuZ2UsIG1fY29udGV4
dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVBcmVhczoKKyAgICAg
ICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkp
OworICAgICAgICByZXR1cm4gY29uc3VtZUdyaWRUZW1wbGF0ZUFyZWFzKG1fcmFuZ2UpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlHcmlkQXV0b0Zsb3c6CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpjc3NHcmlkTGF5b3V0RW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVHcmlkQXV0b0Zsb3cobV9yYW5nZSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVG
b250RGlzcGxheShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4gY29u
c3VtZUlkZW50PENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVCbG9jaywgQ1NTVmFsdWVTd2FwLCBDU1NW
YWx1ZUZhbGxiYWNrLCBDU1NWYWx1ZU9wdGlvbmFsPihyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NW
YWx1ZUxpc3QqIGNvbnN1bWVGb250RmFjZVVuaWNvZGVSYW5nZShDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSkKK3sKKyAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlQ29tbWFTZXBhcmF0ZWQoKTsKKworICAgIGRvIHsKKyAgICAgICAgY29uc3QgQ1NTUGFyc2Vy
VG9rZW4mIHRva2VuID0gcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAg
ICAgaWYgKHRva2VuLnR5cGUoKSAhPSBVbmljb2RlUmFuZ2VUb2tlbikKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgICAgIFVDaGFyMzIgc3RhcnQgPSB0b2tlbi51bmljb2RlUmFu
Z2VTdGFydCgpOworICAgICAgICBVQ2hhcjMyIGVuZCA9IHRva2VuLnVuaWNvZGVSYW5nZUVuZCgp
OworICAgICAgICBpZiAoc3RhcnQgPiBlbmQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgdmFsdWVzLT5hcHBlbmQoKkNTU1VuaWNvZGVSYW5nZVZhbHVlOjpjcmVhdGUoc3Rh
cnQsIGVuZCkpOworICAgIH0gd2hpbGUgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2Uo
cmFuZ2UpKTsKKworICAgIHJldHVybiB2YWx1ZXM7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29u
c3VtZUZvbnRGYWNlU3JjVVJJKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQ
YXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIFN0cmluZyB1cmwgPSBjb25zdW1lVXJsQXNT
dHJpbmdWaWV3KHJhbmdlKS50b1N0cmluZygpOworICAgIGlmICh1cmwuaXNOdWxsKCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIENTU0ZvbnRGYWNlU3JjVmFsdWUqIHVyaVZhbHVlKENT
U0ZvbnRGYWNlU3JjVmFsdWU6OmNyZWF0ZSh1cmwsIGNvbnRleHQuY29tcGxldGVVUkwodXJsKSwg
Y29udGV4dC5zaG91bGRDaGVja0NvbnRlbnRTZWN1cml0eVBvbGljeSgpKSk7CisgICAgdXJpVmFs
dWUtPnNldFJlZmVycmVyKGNvbnRleHQucmVmZXJyZXIoKSk7CisKKyAgICBpZiAocmFuZ2UucGVl
aygpLmZ1bmN0aW9uSWQoKSAhPSBDU1NWYWx1ZUZvcm1hdCkKKyAgICAgICAgcmV0dXJuIHVyaVZh
bHVlOworCisgICAgLy8gRklYTUU6IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtZm9udHMg
c2F5cyB0aGF0IGZvcm1hdCgpIGNvbnRhaW5zIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Ygc3Ry
aW5ncywKKyAgICAvLyBidXQgQ1NTRm9udEZhY2VTcmNWYWx1ZSBzdG9yZXMgb25seSBvbmUgZm9y
bWF0LiBBbGxvd2luZyBvbmUgZm9ybWF0IGZvciBub3cuCisgICAgQ1NTUGFyc2VyVG9rZW5SYW5n
ZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlKTsKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tl
biYgYXJnID0gYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgIGlmICgoYXJn
LnR5cGUoKSAhPSBTdHJpbmdUb2tlbikgfHwgIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgdXJpVmFsdWUtPnNldEZvcm1hdChhcmcudmFsdWUoKS50b1N0cmluZygp
KTsKKyAgICByZXR1cm4gdXJpVmFsdWU7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUZv
bnRGYWNlU3JjTG9jYWwoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNl
ckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29u
c3VtZUZ1bmN0aW9uKHJhbmdlKTsKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXNwb3NpdGlv
biBzaG91bGRDaGVja0NvbnRlbnRTZWN1cml0eVBvbGljeSA9IGNvbnRleHQuc2hvdWxkQ2hlY2tD
b250ZW50U2VjdXJpdHlQb2xpY3koKTsKKyAgICBpZiAoYXJncy5wZWVrKCkudHlwZSgpID09IFN0
cmluZ1Rva2VuKSB7CisgICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiBhcmcgPSBhcmdzLmNv
bnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIGlmICghYXJncy5hdEVuZCgpKQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBDU1NGb250RmFjZVNy
Y1ZhbHVlOjpjcmVhdGVMb2NhbChhcmcudmFsdWUoKS50b1N0cmluZygpLCBzaG91bGRDaGVja0Nv
bnRlbnRTZWN1cml0eVBvbGljeSk7CisgICAgfQorICAgIGlmIChhcmdzLnBlZWsoKS50eXBlKCkg
PT0gSWRlbnRUb2tlbikgeworICAgICAgICBTdHJpbmcgZmFtaWx5TmFtZSA9IGNvbmNhdGVuYXRl
RmFtaWx5TmFtZShhcmdzKTsKKyAgICAgICAgaWYgKCFhcmdzLmF0RW5kKCkpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIENTU0ZvbnRGYWNlU3JjVmFsdWU6OmNy
ZWF0ZUxvY2FsKGZhbWlseU5hbWUsIHNob3VsZENoZWNrQ29udGVudFNlY3VyaXR5UG9saWN5KTsK
KyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZUxpc3QqIGNv
bnN1bWVGb250RmFjZVNyYyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFy
c2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKworICAgIGRvIHsKKyAgICAgICAgY29u
c3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOworICAgICAgICBDU1NWYWx1
ZSogcGFyc2VkVmFsdWUgPSBudWxscHRyOworICAgICAgICBpZiAodG9rZW4uZnVuY3Rpb25JZCgp
ID09IENTU1ZhbHVlTG9jYWwpCisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVGb250
RmFjZVNyY0xvY2FsKHJhbmdlLCBjb250ZXh0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cGFyc2VkVmFsdWUgPSBjb25zdW1lRm9udEZhY2VTcmNVUkkocmFuZ2UsIGNvbnRleHQpOworICAg
ICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHZhbHVlcy0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAgfSB3aGlsZSAoY29uc3VtZUNv
bW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpOworICAgIHJldHVybiB2YWx1ZXM7Cit9CisK
K2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlRm9udEZhY2VEZXNjcmlwdG9yKENTU1Byb3Bl
cnR5SUQgcHJvcElkKQoreworICAgIENTU1ZhbHVlKiBwYXJzZWRWYWx1ZSA9IG51bGxwdHI7Cisg
ICAgc3dpdGNoIChwcm9wSWQpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEZhbWlseToKKyAg
ICAgICAgaWYgKGNvbnN1bWVHZW5lcmljRmFtaWx5KG1fcmFuZ2UpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVGYW1pbHlOYW1lKG1fcmFu
Z2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5U3JjOiAvLyBUaGlzIGlz
IGEgbGlzdCBvZiB1cmxzIG9yIGxvY2FsIHJlZmVyZW5jZXMuCisgICAgICAgIHBhcnNlZFZhbHVl
ID0gY29uc3VtZUZvbnRGYWNlU3JjKG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTUHJvcGVydHlVbmljb2RlUmFuZ2U6CisgICAgICAgIHBhcnNlZFZhbHVl
ID0gY29uc3VtZUZvbnRGYWNlVW5pY29kZVJhbmdlKG1fcmFuZ2UpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udERpc3BsYXk6CisgICAgICAgIHBhcnNlZFZhbHVlID0g
Y29uc3VtZUZvbnREaXNwbGF5KG1fcmFuZ2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENT
U1Byb3BlcnR5Rm9udFN0cmV0Y2g6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHlsZTogewor
ICAgICAgICBDU1NWYWx1ZUlEIGlkID0gbV9yYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFj
ZSgpLmlkKCk7CisgICAgICAgIGlmICghQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5d29y
ZFByb3BlcnR5QW5kVmFsdWUocHJvcElkLCBpZCwgbV9jb250ZXh0Lm1vZGUoKSkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHBhcnNlZFZhbHVlID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZUlkZW50aWZpZXIoaWQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50OgorICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVG
b250VmFyaWFudExpc3QobV9yYW5nZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJv
cGVydHlGb250V2VpZ2h0OgorICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVGb250V2VpZ2h0
KG1fcmFuZ2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEZlYXR1
cmVTZXR0aW5nczoKKyAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lRm9udEZlYXR1cmVTZXR0
aW5ncyhtX3JhbmdlKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgaWYgKCFwYXJzZWRWYWx1ZSB8fCAhbV9yYW5nZS5hdEVuZCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIENTU1Byb3Bl
cnR5SW52YWxpZCwgKnBhcnNlZFZhbHVlLCBmYWxzZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVTeXN0ZW1Gb250KGJvb2wgaW1wb3J0YW50
KQoreworICAgIENTU1ZhbHVlSUQgc3lzdGVtRm9udElEID0gbV9yYW5nZS5jb25zdW1lSW5jbHVk
aW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgQVNTRVJUKHN5c3RlbUZvbnRJRCA+PSBDU1NWYWx1
ZUNhcHRpb24gJiYgc3lzdGVtRm9udElEIDw9IENTU1ZhbHVlU3RhdHVzQmFyKTsKKyAgICBpZiAo
IW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRm9udFN0eWxl
IGZvbnRTdHlsZSA9IEZvbnRTdHlsZU5vcm1hbDsKKyAgICBGb250V2VpZ2h0IGZvbnRXZWlnaHQg
PSBGb250V2VpZ2h0Tm9ybWFsOworICAgIGZsb2F0IGZvbnRTaXplID0gMDsKKyAgICBBdG9taWNT
dHJpbmcgZm9udEZhbWlseTsKKyAgICBMYXlvdXRUaGVtZTo6dGhlbWUoKS5zeXN0ZW1Gb250KHN5
c3RlbUZvbnRJRCwgZm9udFN0eWxlLCBmb250V2VpZ2h0LCBmb250U2l6ZSwgZm9udEZhbWlseSk7
CisKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgQ1NTUHJvcGVydHlGb250
LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoZm9udFN0eWxlID09IEZvbnRT
dHlsZUl0YWxpYyA/IENTU1ZhbHVlSXRhbGljIDogQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQp
OworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFdlaWdodCwgQ1NTUHJvcGVydHlGb250
LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShmb250V2VpZ2h0KSwgaW1wb3J0YW50KTsKKyAg
ICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBDU1NQcm9wZXJ0eUZvbnQsICpDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGZvbnRTaXplLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGU6OlBpeGVscyksIGltcG9ydGFudCk7CisgICAgQ1NTVmFsdWVMaXN0KiBmb250RmFtaWx5TGlz
dCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICBmb250RmFtaWx5
TGlzdC0+YXBwZW5kKCpDU1NGb250RmFtaWx5VmFsdWU6OmNyZWF0ZShmb250RmFtaWx5KSk7Cisg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFtaWx5LCBDU1NQcm9wZXJ0eUZvbnQsICpm
b250RmFtaWx5TGlzdCwgaW1wb3J0YW50KTsKKworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5
Rm9udFN0cmV0Y2gsIENTU1Byb3BlcnR5Rm9udCwgKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJ
ZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFsKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUZvbnRWYXJpYW50Q2FwcywgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAg
IGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXMsIENTU1Byb3BlcnR5
Rm9udCwgKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFs
KSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50TnVt
ZXJpYywgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZp
ZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3Bl
cnR5TGluZUhlaWdodCwgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lRm9udChib29sIGltcG9ydGFu
dCkKK3sKKyAgICAvLyBMZXQncyBjaGVjayBpZiB0aGVyZSBpcyBhbiBpbmhlcml0IG9yIGluaXRp
YWwgc29tZXdoZXJlIGluIHRoZSBzaG9ydGhhbmQuCisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBy
YW5nZSA9IG1fcmFuZ2U7CisgICAgd2hpbGUgKCFyYW5nZS5hdEVuZCgpKSB7CisgICAgICAgIENT
U1ZhbHVlSUQgaWQgPSByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7Cisg
ICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUluaGVyaXQgfHwgaWQgPT0gQ1NTVmFsdWVJbml0aWFs
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAvLyBPcHRpb25hbCBmb250
LXN0eWxlLCBmb250LXZhcmlhbnQsIGZvbnQtc3RyZXRjaCBhbmQgZm9udC13ZWlnaHQuCisgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIGZvbnRTdHlsZSA9IG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIGZvbnRWYXJpYW50Q2FwcyA9IG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IGZvbnRXZWlnaHQgPSBudWxscHRyOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmb250U3RyZXRj
aCA9IG51bGxwdHI7CisgICAgd2hpbGUgKCFtX3JhbmdlLmF0RW5kKCkpIHsKKyAgICAgICAgQ1NT
VmFsdWVJRCBpZCA9IG1fcmFuZ2UucGVlaygpLmlkKCk7CisgICAgICAgIGlmICghZm9udFN0eWxl
ICYmIENTU1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKENT
U1Byb3BlcnR5Rm9udFN0eWxlLCBpZCwgbV9jb250ZXh0Lm1vZGUoKSkpIHsKKyAgICAgICAgICAg
IGZvbnRTdHlsZSA9IGNvbnN1bWVJZGVudChtX3JhbmdlKTsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisgICAgICAgIGlmICghZm9udFZhcmlhbnRDYXBzICYmIChpZCA9PSBDU1NW
YWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZVNtYWxsQ2FwcykpIHsKKyAgICAgICAgICAgIC8v
IEZvbnQgdmFyaWFudCBpbiB0aGUgc2hvcnRoYW5kIGlzIHBhcnRpY3VsYXIsIGl0IG9ubHkgYWNj
ZXB0cyBub3JtYWwgb3Igc21hbGwtY2Fwcy4KKyAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2Ry
YWZ0cy5jc3N3Zy5vcmcvY3NzLWZvbnRzLyNwcm9wZGVmLWZvbnQKKyAgICAgICAgICAgIGZvbnRW
YXJpYW50Q2FwcyA9IGNvbnN1bWVGb250VmFyaWFudENTUzIxKG1fcmFuZ2UpOworICAgICAgICAg
ICAgaWYgKGZvbnRWYXJpYW50Q2FwcykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoIWZvbnRXZWlnaHQpIHsKKyAgICAgICAgICAgIGZvbnRXZWlnaHQg
PSBjb25zdW1lRm9udFdlaWdodChtX3JhbmdlKTsKKyAgICAgICAgICAgIGlmIChmb250V2VpZ2h0
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICghZm9u
dFN0cmV0Y2ggJiYgQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5k
VmFsdWUoQ1NTUHJvcGVydHlGb250U3RyZXRjaCwgaWQsIG1fY29udGV4dC5tb2RlKCkpKQorICAg
ICAgICAgICAgZm9udFN0cmV0Y2ggPSBjb25zdW1lSWRlbnQobV9yYW5nZSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChtX3JhbmdlLmF0RW5kKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9u
dFN0eWxlLCBDU1NQcm9wZXJ0eUZvbnQsIGZvbnRTdHlsZSA/ICpmb250U3R5bGUgOiAqQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQp
OworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRDYXBzLCBDU1NQcm9wZXJ0
eUZvbnQsIGZvbnRWYXJpYW50Q2FwcyA/ICpmb250VmFyaWFudENhcHMgOiAqQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAg
IGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXMsIENTU1Byb3BlcnR5
Rm9udCwgKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFs
KSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50TnVt
ZXJpYywgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZp
ZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworCisgICAgYWRkUHJvcGVydHkoQ1NTUHJv
cGVydHlGb250V2VpZ2h0LCBDU1NQcm9wZXJ0eUZvbnQsIGZvbnRXZWlnaHQgPyAqZm9udFdlaWdo
dCA6ICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vcm1hbCks
IGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250U3RyZXRjaCwgQ1NT
UHJvcGVydHlGb250LCBmb250U3RyZXRjaCA/ICpmb250U3RyZXRjaCA6ICpDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vcm1hbCksIGltcG9ydGFudCk7CisKKyAg
ICAvLyBOb3cgYSBmb250IHNpemUgX211c3RfIGNvbWUuCisgICAgQ1NTVmFsdWUqIGZvbnRTaXpl
ID0gY29uc3VtZUZvbnRTaXplKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGlmICgh
Zm9udFNpemUgfHwgbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBDU1NQcm9wZXJ0eUZvbnQsICpmb250
U2l6ZSwgaW1wb3J0YW50KTsKKworICAgIGlmIChjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNw
YWNlKG1fcmFuZ2UpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBsaW5lSGVpZ2h0ID0g
Y29uc3VtZUxpbmVIZWlnaHQobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgICAgIGlm
ICghbGluZUhlaWdodCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYWRkUHJv
cGVydHkoQ1NTUHJvcGVydHlMaW5lSGVpZ2h0LCBDU1NQcm9wZXJ0eUZvbnQsICpsaW5lSGVpZ2h0
LCBpbXBvcnRhbnQpOworICAgIH0gZWxzZSB7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3Bl
cnR5TGluZUhlaWdodCwgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAgIH0KKworICAgIC8v
IEZvbnQgZmFtaWx5IG11c3QgY29tZSBub3cuCisgICAgQ1NTVmFsdWUqIHBhcnNlZEZhbWlseVZh
bHVlID0gY29uc3VtZUZvbnRGYW1pbHkobV9yYW5nZSk7CisgICAgaWYgKCFwYXJzZWRGYW1pbHlW
YWx1ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVy
dHlGb250RmFtaWx5LCBDU1NQcm9wZXJ0eUZvbnQsICpwYXJzZWRGYW1pbHlWYWx1ZSwgaW1wb3J0
YW50KTsKKworICAgIC8vIEZJWE1FOiBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1dELWNzczMt
Zm9udHMtMjAxMTAzMjQvI2ZvbnQtcHJvcCByZXF1aXJlcyB0aGF0CisgICAgLy8gImZvbnQtc3Ry
ZXRjaCIsICJmb250LXNpemUtYWRqdXN0IiwgYW5kICJmb250LWtlcm5pbmciIGJlIHJlc2V0IHRv
IHRoZWlyIGluaXRpYWwgdmFsdWVzCisgICAgLy8gYnV0IHdlIGRvbid0IHNlZW0gdG8gc3VwcG9y
dCB0aGVtIGF0IHRoZSBtb21lbnQuIFRoZXkgc2hvdWxkIGFsc28gYmUgYWRkZWQgaGVyZSBvbmNl
IGltcGxlbWVudGVkLgorICAgIHJldHVybiBtX3JhbmdlLmF0RW5kKCk7Cit9CisKK2Jvb2wgQ1NT
UHJvcGVydHlQYXJzZXI6OmNvbnN1bWVGb250VmFyaWFudFNob3J0aGFuZChib29sIGltcG9ydGFu
dCkKK3sKKyAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZU5vbmU+
KG1fcmFuZ2UucGVlaygpLmlkKCkpKSB7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5
Rm9udFZhcmlhbnRMaWdhdHVyZXMsIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsICpjb25zdW1lSWRl
bnQobV9yYW5nZSksIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5
Rm9udFZhcmlhbnRDYXBzLCBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LCAqQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAgICAg
ICByZXR1cm4gbV9yYW5nZS5hdEVuZCgpOworICAgIH0KKworICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBjYXBzVmFsdWUgPSBudWxscHRyOworICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzUGFyc2VyIGxp
Z2F0dXJlc1BhcnNlcjsKKyAgICBGb250VmFyaWFudE51bWVyaWNQYXJzZXIgbnVtZXJpY1BhcnNl
cjsKKyAgICBkbyB7CisgICAgICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzUGFyc2VyOjpQYXJzZVJl
c3VsdCBsaWdhdHVyZXNQYXJzZVJlc3VsdCA9IGxpZ2F0dXJlc1BhcnNlci5jb25zdW1lTGlnYXR1
cmUobV9yYW5nZSk7CisgICAgICAgIEZvbnRWYXJpYW50TnVtZXJpY1BhcnNlcjo6UGFyc2VSZXN1
bHQgbnVtZXJpY1BhcnNlUmVzdWx0ID0gbnVtZXJpY1BhcnNlci5jb25zdW1lTnVtZXJpYyhtX3Jh
bmdlKTsKKyAgICAgICAgaWYgKGxpZ2F0dXJlc1BhcnNlUmVzdWx0ID09IEZvbnRWYXJpYW50TGln
YXR1cmVzUGFyc2VyOjpQYXJzZVJlc3VsdDo6Q29uc3VtZWRWYWx1ZQorICAgICAgICAgICAgfHwg
bnVtZXJpY1BhcnNlUmVzdWx0ID09IEZvbnRWYXJpYW50TnVtZXJpY1BhcnNlcjo6UGFyc2VSZXN1
bHQ6OkNvbnN1bWVkVmFsdWUpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAo
bGlnYXR1cmVzUGFyc2VSZXN1bHQgPT0gRm9udFZhcmlhbnRMaWdhdHVyZXNQYXJzZXI6OlBhcnNl
UmVzdWx0OjpEaXNhbGxvd2VkVmFsdWUKKyAgICAgICAgICAgIHx8IG51bWVyaWNQYXJzZVJlc3Vs
dCA9PSBGb250VmFyaWFudE51bWVyaWNQYXJzZXI6OlBhcnNlUmVzdWx0OjpEaXNhbGxvd2VkVmFs
dWUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgQ1NTVmFsdWVJRCBpZCA9
IG1fcmFuZ2UucGVlaygpLmlkKCk7CisgICAgICAgIHN3aXRjaCAoaWQpIHsKKyAgICAgICAgY2Fz
ZSBDU1NWYWx1ZVNtYWxsQ2FwczoKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUFsbFNtYWxsQ2FwczoK
KyAgICAgICAgY2FzZSBDU1NWYWx1ZVBldGl0ZUNhcHM6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVB
bGxQZXRpdGVDYXBzOgorICAgICAgICBjYXNlIENTU1ZhbHVlVW5pY2FzZToKKyAgICAgICAgY2Fz
ZSBDU1NWYWx1ZVRpdGxpbmdDYXBzOgorICAgICAgICAgICAgLy8gT25seSBvbmUgY2FwcyB2YWx1
ZSBwZXJtaXR0ZWQgaW4gZm9udC12YXJpYW50IGdyYW1tYXIuCisgICAgICAgICAgICBpZiAoY2Fw
c1ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGNhcHNW
YWx1ZSA9IGNvbnN1bWVJZGVudChtX3JhbmdlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfSB3
aGlsZSAoIW1fcmFuZ2UuYXRFbmQoKSk7CisKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZv
bnRWYXJpYW50TGlnYXR1cmVzLCBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LCAqbGlnYXR1cmVzUGFy
c2VyLmZpbmFsaXplVmFsdWUoKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUZvbnRWYXJpYW50TnVtZXJpYywgQ1NTUHJvcGVydHlGb250VmFyaWFudCwgKm51bWVyaWNQ
YXJzZXIuZmluYWxpemVWYWx1ZSgpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1By
b3BlcnR5Rm9udFZhcmlhbnRDYXBzLCBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LCBjYXBzVmFsdWUg
PyAqY2Fwc1ZhbHVlIDogKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1Zh
bHVlTm9ybWFsKSwgaW1wb3J0YW50KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NQ
cm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUJvcmRlclNwYWNpbmcoYm9vbCBpbXBvcnRhbnQpCit7Cisg
ICAgQ1NTVmFsdWUqIGhvcml6b250YWxTcGFjaW5nID0gY29uc3VtZUxlbmd0aChtX3JhbmdlLCBt
X2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUsIFVuaXRsZXNzUXVpcms6OkFs
bG93KTsKKyAgICBpZiAoIWhvcml6b250YWxTcGFjaW5nKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgQ1NTVmFsdWUqIHZlcnRpY2FsU3BhY2luZyA9IGhvcml6b250YWxTcGFjaW5nOworICAg
IGlmICghbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICB2ZXJ0aWNhbFNwYWNpbmcgPSBjb25zdW1l
TGVuZ3RoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwg
VW5pdGxlc3NRdWlyazo6QWxsb3cpOworICAgIGlmICghdmVydGljYWxTcGFjaW5nIHx8ICFtX3Jh
bmdlLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0eUJvcmRlclNw
YWNpbmcsICpob3Jpem9udGFsU3BhY2luZywgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZywgQ1NTUHJvcGVydHlCb3JkZXJT
cGFjaW5nLCAqdmVydGljYWxTcGFjaW5nLCBpbXBvcnRhbnQpOworICAgIHJldHVybiB0cnVlOwor
fQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVTaW5nbGVWaWV3cG9ydERlc2NyaXB0b3IoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1Byb3BlcnR5SUQgcHJvcElkLCBDU1NQYXJzZXJN
b2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5p
ZCgpOworICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbldpZHRo
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWlu
SGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhIZWlnaHQ6CisgICAgICAgIGlmIChpZCA9
PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVJbnRlcm5hbEV4dGVuZFRvWm9vbSkKKyAg
ICAgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgICAgICByZXR1cm4gY29u
c3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5l
Z2F0aXZlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWluWm9vbToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5TWF4Wm9vbToKKyAgICBjYXNlIENTU1Byb3BlcnR5Wm9vbTogeworICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7
CisgICAgICAgIENTU1ZhbHVlKiBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZh
bHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgIGlmIChwYXJzZWRWYWx1ZSkKKyAgICAgICAg
ICAgIHJldHVybiBwYXJzZWRWYWx1ZTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVQZXJjZW50KHJh
bmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5
VXNlclpvb206CisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVab29tLCBDU1NW
YWx1ZUZpeGVkPihyYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9yaWVudGF0aW9uOgorICAg
ICAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVQb3J0cmFpdCwg
Q1NTVmFsdWVMYW5kc2NhcGU+KHJhbmdlKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJz
ZXI6OnBhcnNlVmlld3BvcnREZXNjcmlwdG9yKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGlt
cG9ydGFudCkKK3sKKyAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzVmlld3Bv
cnRFbmFibGVkKCkgfHwgaXNVQVNoZWV0QmVoYXZpb3IobV9jb250ZXh0Lm1vZGUoKSkpOworCisg
ICAgc3dpdGNoIChwcm9wSWQpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2lkdGg6IHsKKyAgICAg
ICAgQ1NTVmFsdWUqIG1pbldpZHRoID0gY29uc3VtZVNpbmdsZVZpZXdwb3J0RGVzY3JpcHRvciht
X3JhbmdlLCBDU1NQcm9wZXJ0eU1pbldpZHRoLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICAgICAg
aWYgKCFtaW5XaWR0aCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgQ1NTVmFs
dWUqIG1heFdpZHRoID0gbWluV2lkdGg7CisgICAgICAgIGlmICghbV9yYW5nZS5hdEVuZCgpKQor
ICAgICAgICAgICAgbWF4V2lkdGggPSBjb25zdW1lU2luZ2xlVmlld3BvcnREZXNjcmlwdG9yKG1f
cmFuZ2UsIENTU1Byb3BlcnR5TWF4V2lkdGgsIG1fY29udGV4dC5tb2RlKCkpOworICAgICAgICBp
ZiAoIW1heFdpZHRoIHx8ICFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5TWluV2lkdGgsIENTU1Byb3BlcnR5
SW52YWxpZCwgKm1pbldpZHRoLCBpbXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eU1heFdpZHRoLCBDU1NQcm9wZXJ0eUludmFsaWQsICptYXhXaWR0aCwgaW1wb3J0YW50
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlIZWln
aHQ6IHsKKyAgICAgICAgQ1NTVmFsdWUqIG1pbkhlaWdodCA9IGNvbnN1bWVTaW5nbGVWaWV3cG9y
dERlc2NyaXB0b3IobV9yYW5nZSwgQ1NTUHJvcGVydHlNaW5IZWlnaHQsIG1fY29udGV4dC5tb2Rl
KCkpOworICAgICAgICBpZiAoIW1pbkhlaWdodCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgQ1NTVmFsdWUqIG1heEhlaWdodCA9IG1pbkhlaWdodDsKKyAgICAgICAgaWYgKCFt
X3JhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICBtYXhIZWlnaHQgPSBjb25zdW1lU2luZ2xlVmll
d3BvcnREZXNjcmlwdG9yKG1fcmFuZ2UsIENTU1Byb3BlcnR5TWF4SGVpZ2h0LCBtX2NvbnRleHQu
bW9kZSgpKTsKKyAgICAgICAgaWYgKCFtYXhIZWlnaHQgfHwgIW1fcmFuZ2UuYXRFbmQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlN
aW5IZWlnaHQsIENTU1Byb3BlcnR5SW52YWxpZCwgKm1pbkhlaWdodCwgaW1wb3J0YW50KTsKKyAg
ICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlNYXhIZWlnaHQsIENTU1Byb3BlcnR5SW52YWxp
ZCwgKm1heEhlaWdodCwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5XaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWF4V2lk
dGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbkhlaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
TWF4SGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5ab29tOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlNYXhab29tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlab29tOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlVc2VyWm9vbToKKyAgICBjYXNlIENTU1Byb3BlcnR5T3JpZW50YXRpb246IHsKKyAgICAg
ICAgQ1NTVmFsdWUqIHBhcnNlZFZhbHVlID0gY29uc3VtZVNpbmdsZVZpZXdwb3J0RGVzY3JpcHRv
cihtX3JhbmdlLCBwcm9wSWQsIG1fY29udGV4dC5tb2RlKCkpOworICAgICAgICBpZiAoIXBhcnNl
ZFZhbHVlIHx8ICFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGFkZFByb3BlcnR5KHByb3BJZCwgQ1NTUHJvcGVydHlJbnZhbGlkLCAqcGFyc2VkVmFs
dWUsIGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBjb25zdW1l
Q29sdW1uV2lkdGhPckNvdW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NWYWx1ZSom
IGNvbHVtbldpZHRoLCBDU1NWYWx1ZSomIGNvbHVtbkNvdW50KQoreworICAgIGlmIChyYW5nZS5w
ZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pIHsKKyAgICAgICAgY29uc3VtZUlkZW50KHJhbmdl
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmICghY29sdW1uV2lkdGgpIHsK
KyAgICAgICAgY29sdW1uV2lkdGggPSBjb25zdW1lQ29sdW1uV2lkdGgocmFuZ2UpOworICAgICAg
ICBpZiAoY29sdW1uV2lkdGgpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
aWYgKCFjb2x1bW5Db3VudCkKKyAgICAgICAgY29sdW1uQ291bnQgPSBjb25zdW1lQ29sdW1uQ291
bnQocmFuZ2UpOworICAgIHJldHVybiBjb2x1bW5Db3VudDsKK30KKworYm9vbCBDU1NQcm9wZXJ0
eVBhcnNlcjo6Y29uc3VtZUNvbHVtbnMoYm9vbCBpbXBvcnRhbnQpCit7CisgICAgQ1NTVmFsdWUq
IGNvbHVtbldpZHRoID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogY29sdW1uQ291bnQgPSBudWxs
cHRyOworICAgIGlmICghY29uc3VtZUNvbHVtbldpZHRoT3JDb3VudChtX3JhbmdlLCBjb2x1bW5X
aWR0aCwgY29sdW1uQ291bnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY29uc3VtZUNv
bHVtbldpZHRoT3JDb3VudChtX3JhbmdlLCBjb2x1bW5XaWR0aCwgY29sdW1uQ291bnQpOworICAg
IGlmICghbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFj
b2x1bW5XaWR0aCkKKyAgICAgICAgY29sdW1uV2lkdGggPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlSWRlbnRpZmllcihDU1NWYWx1ZUF1dG8pOworICAgIGlmICghY29sdW1uQ291bnQpCisgICAg
ICAgIGNvbHVtbkNvdW50ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NT
VmFsdWVBdXRvKTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbHVtbldpZHRoLCBDU1NQ
cm9wZXJ0eUludmFsaWQsICpjb2x1bW5XaWR0aCwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0
eShDU1NQcm9wZXJ0eUNvbHVtbkNvdW50LCBDU1NQcm9wZXJ0eUludmFsaWQsICpjb2x1bW5Db3Vu
dCwgaW1wb3J0YW50KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBh
cnNlcjo6Y29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhh
bmQmIHNob3J0aGFuZCwgYm9vbCBpbXBvcnRhbnQpCit7CisgICAgQVNTRVJUKHNob3J0aGFuZC5s
ZW5ndGgoKSA8PSA2KTsgLy8gRXhpc3Rpbmcgc2hvcnRoYW5kcyBoYXZlIGF0IG1vc3QgNiBsb25n
aGFuZHMuCisgICAgY29uc3QgQ1NTVmFsdWUqIGxvbmdoYW5kc1s2XSA9IHsgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OworICAgIGNvbnN0IENT
U1Byb3BlcnR5SUQqIHNob3J0aGFuZFByb3BlcnRpZXMgPSBzaG9ydGhhbmQucHJvcGVydGllcygp
OworICAgIGRvIHsKKyAgICAgICAgYm9vbCBmb3VuZExvbmdoYW5kID0gZmFsc2U7CisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyAhZm91bmRMb25naGFuZCAmJiBpIDwgc2hvcnRoYW5kLmxlbmd0
aCgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChsb25naGFuZHNbaV0pCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICBsb25naGFuZHNbaV0gPSBwYXJzZVNpbmdsZVZhbHVl
KHNob3J0aGFuZFByb3BlcnRpZXNbaV0sIHNob3J0aGFuZC5pZCgpKTsKKyAgICAgICAgICAgIGlm
IChsb25naGFuZHNbaV0pCisgICAgICAgICAgICAgICAgZm91bmRMb25naGFuZCA9IHRydWU7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKCFmb3VuZExvbmdoYW5kKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0gd2hpbGUgKCFtX3JhbmdlLmF0RW5kKCkpOworCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsraSkgeworICAgICAgICBpZiAobG9u
Z2hhbmRzW2ldKQorICAgICAgICAgICAgYWRkUHJvcGVydHkoc2hvcnRoYW5kUHJvcGVydGllc1tp
XSwgc2hvcnRoYW5kLmlkKCksICpsb25naGFuZHNbaV0sIGltcG9ydGFudCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KHNob3J0aGFuZFByb3BlcnRpZXNbaV0sIHNob3J0
aGFuZC5pZCgpLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBv
cnRhbnQpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBh
cnNlcjo6Y29uc3VtZUZsZXgoYm9vbCBpbXBvcnRhbnQpCit7CisgICAgc3RhdGljIGNvbnN0IGRv
dWJsZSB1bnNldFZhbHVlID0gLTE7CisgICAgZG91YmxlIGZsZXhHcm93ID0gdW5zZXRWYWx1ZTsK
KyAgICBkb3VibGUgZmxleFNocmluayA9IHVuc2V0VmFsdWU7CisgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIGZsZXhCYXNpcyA9IG51bGxwdHI7CisKKyAgICBpZiAobV9yYW5nZS5wZWVrKCkuaWQoKSA9
PSBDU1NWYWx1ZU5vbmUpIHsKKyAgICAgICAgZmxleEdyb3cgPSAwOworICAgICAgICBmbGV4U2hy
aW5rID0gMDsKKyAgICAgICAgZmxleEJhc2lzID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlk
ZW50aWZpZXIoQ1NTVmFsdWVBdXRvKTsKKyAgICAgICAgbV9yYW5nZS5jb25zdW1lSW5jbHVkaW5n
V2hpdGVzcGFjZSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsK
KyAgICAgICAgd2hpbGUgKCFtX3JhbmdlLmF0RW5kKCkgJiYgaW5kZXgrKyA8IDMpIHsKKyAgICAg
ICAgICAgIGRvdWJsZSBudW07CisgICAgICAgICAgICBpZiAoY29uc3VtZU51bWJlclJhdyhtX3Jh
bmdlLCBudW0pKSB7CisgICAgICAgICAgICAgICAgaWYgKG51bSA8IDApCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoZmxleEdyb3cgPT0gdW5z
ZXRWYWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgZmxleEdyb3cgPSBudW07CisgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoZmxleFNocmluayA9PSB1bnNldFZhbHVlKQorICAgICAgICAgICAgICAg
ICAgICBmbGV4U2hyaW5rID0gbnVtOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFudW0pIC8v
IGZsZXggb25seSBhbGxvd3MgYSBiYXNpcyBvZiAwIChzYW5zIHVuaXRzKSBpZiBmbGV4LWdyb3cg
YW5kIGZsZXgtc2hyaW5rIHZhbHVlcyBoYXZlIGFscmVhZHkgYmVlbiBzZXQuCisgICAgICAgICAg
ICAgICAgICAgIGZsZXhCYXNpcyA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMCwgQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQaXhlbHMpOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfSBlbHNlIGlmICgh
ZmxleEJhc2lzKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fcmFuZ2UucGVlaygpLmlkKCkgPT0g
Q1NTVmFsdWVBdXRvKQorICAgICAgICAgICAgICAgICAgICBmbGV4QmFzaXMgPSBjb25zdW1lSWRl
bnQobV9yYW5nZSk7CisgICAgICAgICAgICAgICAgaWYgKCFmbGV4QmFzaXMpCisgICAgICAgICAg
ICAgICAgICAgIGZsZXhCYXNpcyA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQobV9yYW5nZSwgbV9j
b250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgICAgICAgICBp
ZiAoaW5kZXggPT0gMiAmJiAhbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGluZGV4
ID09IDApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChmbGV4R3JvdyA9
PSB1bnNldFZhbHVlKQorICAgICAgICAgICAgZmxleEdyb3cgPSAxOworICAgICAgICBpZiAoZmxl
eFNocmluayA9PSB1bnNldFZhbHVlKQorICAgICAgICAgICAgZmxleFNocmluayA9IDE7CisgICAg
ICAgIGlmICghZmxleEJhc2lzKQorICAgICAgICAgICAgZmxleEJhc2lzID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZSgwLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBlcmNlbnRhZ2Up
OworICAgIH0KKworICAgIGlmICghbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGbGV4R3JvdywgQ1NTUHJvcGVydHlGbGV4
LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShjbGFtcFRvPGZsb2F0PihmbGV4R3JvdyksIENT
U1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUZsZXhTaHJpbmssIENTU1Byb3BlcnR5RmxleCwgKkNTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGUoY2xhbXBUbzxmbG9hdD4oZmxleFNocmluayksIENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUZsZXhCYXNpcywgQ1NTUHJvcGVydHlGbGV4LCAqZmxleEJhc2lzLCBpbXBvcnRh
bnQpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25z
dW1lQm9yZGVyKGJvb2wgaW1wb3J0YW50KQoreworICAgIENTU1ZhbHVlKiB3aWR0aCA9IG51bGxw
dHI7CisgICAgY29uc3QgQ1NTVmFsdWUqIHN0eWxlID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSog
Y29sb3IgPSBudWxscHRyOworCisgICAgd2hpbGUgKCF3aWR0aCB8fCAhc3R5bGUgfHwgIWNvbG9y
KSB7CisgICAgICAgIGlmICghd2lkdGgpIHsKKyAgICAgICAgICAgIHdpZHRoID0gY29uc3VtZUxp
bmVXaWR0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQp
OworICAgICAgICAgICAgaWYgKHdpZHRoKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CisgICAgICAgIGlmICghc3R5bGUpIHsKKyAgICAgICAgICAgIHN0eWxlID0gcGFyc2VT
aW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXIp
OworICAgICAgICAgICAgaWYgKHN0eWxlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CisgICAgICAgIGlmICghY29sb3IpIHsKKyAgICAgICAgICAgIGNvbG9yID0gY29uc3Vt
ZUNvbG9yKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgICAgICAgICAgaWYgKGNvbG9y
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIGlmICghd2lkdGggJiYgIXN0eWxlICYmICFjb2xvcikKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKCF3aWR0aCkKKyAgICAgICAgd2lkdGggPSBDU1NJbml0aWFs
VmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCk7CisgICAgaWYgKCFzdHlsZSkKKyAgICAgICAg
c3R5bGUgPSBDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCk7CisgICAgaWYg
KCFjb2xvcikKKyAgICAgICAgY29sb3IgPSBDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUlt
cGxpY2l0KCk7CisKKyAgICBhZGRFeHBhbmRlZFByb3BlcnR5Rm9yVmFsdWUoQ1NTUHJvcGVydHlC
b3JkZXJXaWR0aCwgKndpZHRoLCBpbXBvcnRhbnQpOworICAgIGFkZEV4cGFuZGVkUHJvcGVydHlG
b3JWYWx1ZShDU1NQcm9wZXJ0eUJvcmRlclN0eWxlLCAqc3R5bGUsIGltcG9ydGFudCk7CisgICAg
YWRkRXhwYW5kZWRQcm9wZXJ0eUZvclZhbHVlKENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IsICpjb2xv
ciwgaW1wb3J0YW50KTsKKyAgICBhZGRFeHBhbmRlZFByb3BlcnR5Rm9yVmFsdWUoQ1NTUHJvcGVy
dHlCb3JkZXJJbWFnZSwgKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwg
aW1wb3J0YW50KTsKKworICAgIHJldHVybiBtX3JhbmdlLmF0RW5kKCk7Cit9CisKK2Jvb2wgQ1NT
UHJvcGVydHlQYXJzZXI6OmNvbnN1bWU0VmFsdWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhh
bmQmIHNob3J0aGFuZCwgYm9vbCBpbXBvcnRhbnQpCit7CisgICAgQVNTRVJUKHNob3J0aGFuZC5s
ZW5ndGgoKSA9PSA0KTsKKyAgICBjb25zdCBDU1NQcm9wZXJ0eUlEKiBsb25naGFuZHMgPSBzaG9y
dGhhbmQucHJvcGVydGllcygpOworICAgIGNvbnN0IENTU1ZhbHVlKiB0b3AgPSBwYXJzZVNpbmds
ZVZhbHVlKGxvbmdoYW5kc1swXSwgc2hvcnRoYW5kLmlkKCkpOworICAgIGlmICghdG9wKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCBDU1NWYWx1ZSogcmlnaHQgPSBwYXJzZVNp
bmdsZVZhbHVlKGxvbmdoYW5kc1sxXSwgc2hvcnRoYW5kLmlkKCkpOworICAgIGNvbnN0IENTU1Zh
bHVlKiBib3R0b20gPSBudWxscHRyOworICAgIGNvbnN0IENTU1ZhbHVlKiBsZWZ0ID0gbnVsbHB0
cjsKKyAgICBpZiAocmlnaHQpIHsKKyAgICAgICAgYm90dG9tID0gcGFyc2VTaW5nbGVWYWx1ZShs
b25naGFuZHNbMl0sIHNob3J0aGFuZC5pZCgpKTsKKyAgICAgICAgaWYgKGJvdHRvbSkKKyAgICAg
ICAgICAgIGxlZnQgPSBwYXJzZVNpbmdsZVZhbHVlKGxvbmdoYW5kc1szXSwgc2hvcnRoYW5kLmlk
KCkpOworICAgIH0KKworICAgIGlmICghcmlnaHQpCisgICAgICAgIHJpZ2h0ID0gdG9wOworICAg
IGlmICghYm90dG9tKQorICAgICAgICBib3R0b20gPSB0b3A7CisgICAgaWYgKCFsZWZ0KQorICAg
ICAgICBsZWZ0ID0gcmlnaHQ7CisKKyAgICBhZGRQcm9wZXJ0eShsb25naGFuZHNbMF0sIHNob3J0
aGFuZC5pZCgpLCAqdG9wLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KGxvbmdoYW5kc1sx
XSwgc2hvcnRoYW5kLmlkKCksICpyaWdodCwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShs
b25naGFuZHNbMl0sIHNob3J0aGFuZC5pZCgpLCAqYm90dG9tLCBpbXBvcnRhbnQpOworICAgIGFk
ZFByb3BlcnR5KGxvbmdoYW5kc1szXSwgc2hvcnRoYW5kLmlkKCksICpsZWZ0LCBpbXBvcnRhbnQp
OworCisgICAgcmV0dXJuIG1fcmFuZ2UuYXRFbmQoKTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBh
cnNlcjo6Y29uc3VtZUJvcmRlckltYWdlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGJvb2wgaW1w
b3J0YW50KQoreworICAgIENTU1ZhbHVlKiBzb3VyY2UgPSBudWxscHRyOworICAgIENTU1ZhbHVl
KiBzbGljZSA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIHdpZHRoID0gbnVsbHB0cjsKKyAgICBD
U1NWYWx1ZSogb3V0c2V0ID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogcmVwZWF0ID0gbnVsbHB0
cjsKKyAgICBpZiAoY29uc3VtZUJvcmRlckltYWdlQ29tcG9uZW50cyhwcm9wZXJ0eSwgbV9yYW5n
ZSwgbV9jb250ZXh0LCBzb3VyY2UsIHNsaWNlLCB3aWR0aCwgb3V0c2V0LCByZXBlYXQpKSB7Cisg
ICAgICAgIHN3aXRjaCAocHJvcGVydHkpIHsKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tCb3hJbWFnZToKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0
TWFza0JveEltYWdlU291cmNlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgc291cmNl
ID8gKnNvdXJjZSA6ICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGlt
cG9ydGFudCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tC
b3hJbWFnZVNsaWNlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgc2xpY2UgPyAqc2xp
Y2UgOiAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQp
OworICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VX
aWR0aCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2UsIHdpZHRoID8gKndpZHRoIDogKkNT
U0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICAg
ICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlT3V0c2V0LCBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgb3V0c2V0ID8gKm91dHNldCA6ICpDU1NJbml0
aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7CisgICAgICAgICAg
ICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVJlcGVhdCwgQ1NTUHJv
cGVydHlXZWJraXRNYXNrQm94SW1hZ2UsIHJlcGVhdCA/ICpyZXBlYXQgOiAqQ1NTSW5pdGlhbFZh
bHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZToKKyAgICAgICAg
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VTb3VyY2UsIENTU1Byb3BlcnR5
Qm9yZGVySW1hZ2UsIHNvdXJjZSA/ICpzb3VyY2UgOiAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVM
ZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NT
UHJvcGVydHlCb3JkZXJJbWFnZVNsaWNlLCBDU1NQcm9wZXJ0eUJvcmRlckltYWdlLCBzbGljZSA/
ICpzbGljZSA6ICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9y
dGFudCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckltYWdlV2lk
dGgsIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2UsIHdpZHRoID8gKndpZHRoIDogKkNTU0luaXRpYWxW
YWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgIGFk
ZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VPdXRzZXQsIENTU1Byb3BlcnR5Qm9yZGVy
SW1hZ2UsIG91dHNldCA/ICpvdXRzZXQgOiAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJ
bXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVy
dHlCb3JkZXJJbWFnZVJlcGVhdCwgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZSwgcmVwZWF0ID8gKnJl
cGVhdCA6ICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFu
dCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGlubGluZSBDU1NW
YWx1ZUlEIG1hcEZyb21QYWdlQnJlYWtCZXR3ZWVuKENTU1ZhbHVlSUQgdmFsdWUpCit7CisgICAg
aWYgKHZhbHVlID09IENTU1ZhbHVlQWx3YXlzKQorICAgICAgICByZXR1cm4gQ1NTVmFsdWVQYWdl
OworICAgIGlmICh2YWx1ZSA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWUgPT0gQ1NTVmFsdWVBdm9p
ZCB8fCB2YWx1ZSA9PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWUgPT0gQ1NTVmFsdWVSaWdodCkKKyAg
ICAgICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBDU1NWYWx1ZUludmFsaWQ7Cit9CisKK3N0
YXRpYyBpbmxpbmUgQ1NTVmFsdWVJRCBtYXBGcm9tQ29sdW1uQnJlYWtCZXR3ZWVuKENTU1ZhbHVl
SUQgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlID09IENTU1ZhbHVlQWx3YXlzKQorICAgICAgICBy
ZXR1cm4gQ1NTVmFsdWVDb2x1bW47CisgICAgaWYgKHZhbHVlID09IENTU1ZhbHVlQXV0byB8fCB2
YWx1ZSA9PSBDU1NWYWx1ZUF2b2lkKQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgcmV0dXJu
IENTU1ZhbHVlSW52YWxpZDsKK30KKworc3RhdGljIGlubGluZSBDU1NWYWx1ZUlEIG1hcEZyb21D
b2x1bW5PclBhZ2VCcmVha0luc2lkZShDU1NWYWx1ZUlEIHZhbHVlKQoreworICAgIGlmICh2YWx1
ZSA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWUgPT0gQ1NTVmFsdWVBdm9pZCkKKyAgICAgICAgcmV0
dXJuIHZhbHVlOworICAgIHJldHVybiBDU1NWYWx1ZUludmFsaWQ7Cit9CisKK3N0YXRpYyBpbmxp
bmUgQ1NTUHJvcGVydHlJRCBtYXBGcm9tTGVnYWN5QnJlYWtQcm9wZXJ0eShDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5KQoreworICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0Fm
dGVyIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtBZnRlcikKKyAg
ICAgICAgcmV0dXJuIENTU1Byb3BlcnR5QnJlYWtBZnRlcjsKKyAgICBpZiAocHJvcGVydHkgPT0g
Q1NTUHJvcGVydHlQYWdlQnJlYWtCZWZvcmUgfHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJr
aXRDb2x1bW5CcmVha0JlZm9yZSkKKyAgICAgICAgcmV0dXJuIENTU1Byb3BlcnR5QnJlYWtCZWZv
cmU7CisgICAgQVNTRVJUKHByb3BlcnR5ID09IENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlIHx8
IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGUpOworICAgIHJl
dHVybiBDU1NQcm9wZXJ0eUJyZWFrSW5zaWRlOworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2Vy
Ojpjb25zdW1lTGVnYWN5QnJlYWtQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBib29s
IGltcG9ydGFudCkKK3sKKyAgICAvLyBUaGUgZnJhZ21lbnRhdGlvbiBzcGVjIHNheXMgdGhhdCBw
YWdlLWJyZWFrLShhZnRlcnxiZWZvcmV8aW5zaWRlKSBhcmUgdG8gYmUgdHJlYXRlZCBhcworICAg
IC8vIHNob3J0aGFuZHMgZm9yIHRoZWlyIGJyZWFrLShhZnRlcnxiZWZvcmV8aW5zaWRlKSBjb3Vu
dGVycGFydHMuIFdlJ2xsIGRvIHRoZSBzYW1lIGZvciB0aGUKKyAgICAvLyBub24tc3RhbmRhcmQg
cHJvcGVydGllcyAtd2Via2l0LWNvbHVtbi1icmVhay0oYWZ0ZXJ8YmVmb3JlfGluc2lkZSkuCisg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGtleXdvcmQgPSBjb25zdW1lSWRlbnQobV9yYW5nZSk7Cisg
ICAgaWYgKCFrZXl3b3JkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX3Jhbmdl
LmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBDU1NWYWx1ZUlEIHZhbHVlID0g
a2V5d29yZC0+Z2V0VmFsdWVJRCgpOworICAgIHN3aXRjaCAocHJvcGVydHkpIHsKKyAgICBjYXNl
IENTU1Byb3BlcnR5UGFnZUJyZWFrQWZ0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVh
a0JlZm9yZToKKyAgICAgICAgdmFsdWUgPSBtYXBGcm9tUGFnZUJyZWFrQmV0d2Vlbih2YWx1ZSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0Fm
dGVyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0JlZm9yZToKKyAgICAg
ICAgdmFsdWUgPSBtYXBGcm9tQ29sdW1uQnJlYWtCZXR3ZWVuKHZhbHVlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0luc2lkZToKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGU6CisgICAgICAgIHZhbHVlID0gbWFwRnJvbUNv
bHVtbk9yUGFnZUJyZWFrSW5zaWRlKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIGlmICh2YWx1ZSA9
PSBDU1NWYWx1ZUludmFsaWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENTU1Byb3Bl
cnR5SUQgZ2VuZXJpY0JyZWFrUHJvcGVydHkgPSBtYXBGcm9tTGVnYWN5QnJlYWtQcm9wZXJ0eShw
cm9wZXJ0eSk7CisgICAgYWRkUHJvcGVydHkoZ2VuZXJpY0JyZWFrUHJvcGVydHksIHByb3BlcnR5
LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIodmFsdWUpLCBpbXBvcnRhbnQp
OworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBjb25zdW1lQmFja2dyb3VuZFBv
c2l0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0
JiBjb250ZXh0LCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzLCBDU1NWYWx1ZSomIHJlc3VsdFgsIENT
U1ZhbHVlKiYgcmVzdWx0WSkKK3sKKyAgICBkbyB7CisgICAgICAgIENTU1ZhbHVlKiBwb3NpdGlv
blggPSBudWxscHRyOworICAgICAgICBDU1NWYWx1ZSogcG9zaXRpb25ZID0gbnVsbHB0cjsKKyAg
ICAgICAgaWYgKCFjb25zdW1lUG9zaXRpb24ocmFuZ2UsIGNvbnRleHQubW9kZSgpLCB1bml0bGVz
cywgcG9zaXRpb25YLCBwb3NpdGlvblkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBhZGRCYWNrZ3JvdW5kVmFsdWUocmVzdWx0WCwgcG9zaXRpb25YKTsKKyAgICAgICAgYWRk
QmFja2dyb3VuZFZhbHVlKHJlc3VsdFksIHBvc2l0aW9uWSk7CisgICAgfSB3aGlsZSAoY29uc3Vt
ZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpOworICAgIHJldHVybiB0cnVlOworfQor
CitzdGF0aWMgYm9vbCBjb25zdW1lUmVwZWF0U3R5bGVDb21wb25lbnQoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIENTU1ZhbHVlKiYgdmFsdWUxLCBDU1NWYWx1ZSomIHZhbHVlMiwgYm9vbCYg
aW1wbGljaXQpCit7CisgICAgaWYgKGNvbnN1bWVJZGVudDxDU1NWYWx1ZVJlcGVhdFg+KHJhbmdl
KSkgeworICAgICAgICB2YWx1ZTEgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmll
cihDU1NWYWx1ZVJlcGVhdCk7CisgICAgICAgIHZhbHVlMiA9IENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9SZXBlYXQpOworICAgICAgICBpbXBsaWNpdCA9IHRy
dWU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoY29uc3VtZUlkZW50PENT
U1ZhbHVlUmVwZWF0WT4ocmFuZ2UpKSB7CisgICAgICAgIHZhbHVlMSA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9SZXBlYXQpOworICAgICAgICB2YWx1ZTIg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVJlcGVhdCk7Cisg
ICAgICAgIGltcGxpY2l0ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IHZhbHVlMSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZVJlcGVhdCwgQ1NTVmFsdWVOb1JlcGVhdCwg
Q1NTVmFsdWVSb3VuZCwgQ1NTVmFsdWVTcGFjZT4ocmFuZ2UpOworICAgIGlmICghdmFsdWUxKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2YWx1ZTIgPSBjb25zdW1lSWRlbnQ8Q1NTVmFs
dWVSZXBlYXQsIENTU1ZhbHVlTm9SZXBlYXQsIENTU1ZhbHVlUm91bmQsIENTU1ZhbHVlU3BhY2U+
KHJhbmdlKTsKKyAgICBpZiAoIXZhbHVlMikgeworICAgICAgICB2YWx1ZTIgPSB2YWx1ZTE7Cisg
ICAgICAgIGltcGxpY2l0ID0gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0
YXRpYyBib29sIGNvbnN1bWVSZXBlYXRTdHlsZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Q1NTVmFsdWUqJiByZXN1bHRYLCBDU1NWYWx1ZSomIHJlc3VsdFksIGJvb2wmIGltcGxpY2l0KQor
eworICAgIGRvIHsKKyAgICAgICAgQ1NTVmFsdWUqIHJlcGVhdFggPSBudWxscHRyOworICAgICAg
ICBDU1NWYWx1ZSogcmVwZWF0WSA9IG51bGxwdHI7CisgICAgICAgIGlmICghY29uc3VtZVJlcGVh
dFN0eWxlQ29tcG9uZW50KHJhbmdlLCByZXBlYXRYLCByZXBlYXRZLCBpbXBsaWNpdCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFkZEJhY2tncm91bmRWYWx1ZShyZXN1bHRY
LCByZXBlYXRYKTsKKyAgICAgICAgYWRkQmFja2dyb3VuZFZhbHVlKHJlc3VsdFksIHJlcGVhdFkp
OworICAgIH0gd2hpbGUgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gTm90ZTogY29uc3VtZUJhY2tncm91bmRTaG9ydGhh
bmQgYXNzdW1lcyB5IHByb3BlcnRpZXMgKGZvciBleGFtcGxlIGJhY2tncm91bmQtcG9zaXRpb24t
eSkgZm9sbG93CisvLyB0aGUgeCBwcm9wZXJ0aWVzIGluIHRoZSBzaG9ydGhhbmQgYXJyYXkuCiti
b29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lQmFja2dyb3VuZFNob3J0aGFuZChjb25zdCBT
dHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQsIGJvb2wgaW1wb3J0YW50KQoreworICAg
IGNvbnN0IHVuc2lnbmVkIGxvbmdoYW5kQ291bnQgPSBzaG9ydGhhbmQubGVuZ3RoKCk7CisgICAg
Q1NTVmFsdWUqIGxvbmdoYW5kc1sxMF0gPSB7IDAgfTsKKyAgICBBU1NFUlQobG9uZ2hhbmRDb3Vu
dCA8PSAxMCk7CisKKyAgICBib29sIGltcGxpY2l0ID0gZmFsc2U7CisgICAgZG8geworICAgICAg
ICBib29sIHBhcnNlZExvbmdoYW5kWzEwXSA9IHsgZmFsc2UgfTsKKyAgICAgICAgQ1NTVmFsdWUq
IG9yaWdpblZhbHVlID0gbnVsbHB0cjsKKyAgICAgICAgZG8geworICAgICAgICAgICAgYm9vbCBm
b3VuZFByb3BlcnR5ID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGxvbmdoYW5kQ291bnQ7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChwYXJzZWRMb25naGFu
ZFtpXSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBD
U1NWYWx1ZSogdmFsdWUgPSBudWxscHRyOworICAgICAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1
ZVkgPSBudWxscHRyOworICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHkgPSBz
aG9ydGhhbmQucHJvcGVydGllcygpW2ldOworICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eSA9
PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5
V2Via2l0TWFza1JlcGVhdFgpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3VtZVJlcGVhdFN0
eWxlQ29tcG9uZW50KG1fcmFuZ2UsIHZhbHVlLCB2YWx1ZVksIGltcGxpY2l0KTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0
aW9uWCB8fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSBtX3Jhbmdl
OworICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWVQb3NpdGlvbihyYW5nZUNvcHksIG1f
Y29udGV4dC5tb2RlKCksIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgdmFsdWUsIHZhbHVlWSkpCisg
ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgbV9y
YW5nZSA9IHJhbmdlQ29weTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5ID09
IENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUgfHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJr
aXRNYXNrU2l6ZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWVTbGFzaEluY2x1
ZGluZ1doaXRlc3BhY2UobV9yYW5nZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBjb25zdW1lQmFja2dyb3VuZFNpemUocHJv
cGVydHksIG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoIXZhbHVlIHx8ICFwYXJzZWRMb25naGFuZFtpIC0gMV0pIC8vIFBvc2l0aW9uIG11c3QgaGF2
ZSBiZWVuIHBhcnNlZCBpbiB0aGUgY3VycmVudCBsYXllci4KKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5ID09
IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSB8fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRSZXBlYXRZCisgICAgICAgICAgICAgICAgICAgIHx8IHByb3BlcnR5ID09IENT
U1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSB8fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tSZXBlYXRZKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gY29uc3VtZUJh
Y2tncm91bmRDb21wb25lbnQocHJvcGVydHksIG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luIHx8IHByb3Bl
cnR5ID09IENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbikKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG9yaWdpblZhbHVlID0gdmFsdWU7CisgICAgICAgICAgICAgICAgICAgIHBhcnNlZExvbmdo
YW5kW2ldID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgZm91bmRQcm9wZXJ0eSA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgIGFkZEJhY2tncm91bmRWYWx1ZShsb25naGFuZHNbaV0sIHZh
bHVlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlWSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgcGFyc2VkTG9uZ2hhbmRbaSArIDFdID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGFkZEJhY2tncm91bmRWYWx1ZShsb25naGFuZHNbaSArIDFdLCB2YWx1ZVkpOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKCFmb3VuZFByb3BlcnR5KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfSB3aGlsZSAoIW1fcmFuZ2UuYXRFbmQoKSAmJiBtX3JhbmdlLnBlZWsoKS50
eXBlKCkgIT0gQ29tbWFUb2tlbik7CisKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgd2lsbCBtYWtl
IGludmFsaWQgbG9uZ2hhbmRzLCBzZWUgY3JidWcuY29tLzM4NjQ1OQorICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGxvbmdoYW5kQ291bnQ7ICsraSkgeworICAgICAgICAgICAgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eSA9IHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV07CisgICAgICAgICAg
ICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IgJiYgIW1fcmFuZ2Uu
YXRFbmQoKSkgeworICAgICAgICAgICAgICAgIGlmIChwYXJzZWRMb25naGFuZFtpXSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBDb2xvcnMgYXJlIG9ubHkgYWxsb3dlZCBp
biB0aGUgbGFzdCBsYXllci4KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmICgocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xp
cCB8fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwKSAmJiAhcGFyc2VkTG9u
Z2hhbmRbaV0gJiYgb3JpZ2luVmFsdWUpIHsKKyAgICAgICAgICAgICAgICBhZGRCYWNrZ3JvdW5k
VmFsdWUobG9uZ2hhbmRzW2ldLCBvcmlnaW5WYWx1ZSk7CisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIXBhcnNlZExvbmdoYW5kW2ldKQor
ICAgICAgICAgICAgICAgIGFkZEJhY2tncm91bmRWYWx1ZShsb25naGFuZHNbaV0sIENTU0luaXRp
YWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSk7CisgICAgICAgIH0KKyAgICB9IHdoaWxl
IChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKG1fcmFuZ2UpKTsKKyAgICBpZiAoIW1f
cmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsb25naGFuZENvdW50OyArK2kpIHsKKyAgICAgICAgQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eSA9IHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV07CisgICAgICAgIGlmIChwcm9wZXJ0
eSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplICYmIGxvbmdoYW5kc1tpXSAmJiBtX2NvbnRl
eHQudXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvcigpKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnR5LCBzaG9ydGhhbmQuaWQo
KSwgKmxvbmdoYW5kc1tpXSwgaW1wb3J0YW50LCBpbXBsaWNpdCk7CisgICAgfQorICAgIHJldHVy
biB0cnVlOworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lR3JpZEl0ZW1Qb3Np
dGlvblNob3J0aGFuZChDU1NQcm9wZXJ0eUlEIHNob3J0aGFuZElkLCBib29sIGltcG9ydGFudCkK
K3sKKyAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzR3JpZExheW91dEVuYWJs
ZWQoKSk7CisgICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kID0gc2hv
cnRoYW5kRm9yUHJvcGVydHkoc2hvcnRoYW5kSWQpOworICAgIEFTU0VSVChzaG9ydGhhbmQubGVu
Z3RoKCkgPT0gMik7CisgICAgQ1NTVmFsdWUqIHN0YXJ0VmFsdWUgPSBjb25zdW1lR3JpZExpbmUo
bV9yYW5nZSk7CisgICAgaWYgKCFzdGFydFZhbHVlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBDU1NWYWx1ZSogZW5kVmFsdWUgPSBudWxscHRyOworICAgIGlmIChjb25zdW1lU2xhc2hJ
bmNsdWRpbmdXaGl0ZXNwYWNlKG1fcmFuZ2UpKSB7CisgICAgICAgIGVuZFZhbHVlID0gY29uc3Vt
ZUdyaWRMaW5lKG1fcmFuZ2UpOworICAgICAgICBpZiAoIWVuZFZhbHVlKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICAgIGVuZFZhbHVlID0gc3RhcnRWYWx1
ZS0+aXNDdXN0b21JZGVudFZhbHVlKCkgPyBzdGFydFZhbHVlIDogQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVBdXRvKTsKKyAgICB9CisgICAgaWYgKCFtX3Jhbmdl
LmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZGRQcm9wZXJ0eShzaG9ydGhh
bmQucHJvcGVydGllcygpWzBdLCBzaG9ydGhhbmRJZCwgKnN0YXJ0VmFsdWUsIGltcG9ydGFudCk7
CisgICAgYWRkUHJvcGVydHkoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVsxXSwgc2hvcnRoYW5kSWQs
ICplbmRWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NQ
cm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUdyaWRBcmVhU2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KQor
eworICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NHcmlkTGF5b3V0RW5hYmxl
ZCgpKTsKKyAgICBBU1NFUlQoZ3JpZEFyZWFTaG9ydGhhbmQoKS5sZW5ndGgoKSA9PSA0KTsKKyAg
ICBDU1NWYWx1ZSogcm93U3RhcnRWYWx1ZSA9IGNvbnN1bWVHcmlkTGluZShtX3JhbmdlKTsKKyAg
ICBpZiAoIXJvd1N0YXJ0VmFsdWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBDU1NWYWx1
ZSogY29sdW1uU3RhcnRWYWx1ZSA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIHJvd0VuZFZhbHVl
ID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogY29sdW1uRW5kVmFsdWUgPSBudWxscHRyOworICAg
IGlmIChjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKG1fcmFuZ2UpKSB7CisgICAgICAg
IGNvbHVtblN0YXJ0VmFsdWUgPSBjb25zdW1lR3JpZExpbmUobV9yYW5nZSk7CisgICAgICAgIGlm
ICghY29sdW1uU3RhcnRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
aWYgKGNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UobV9yYW5nZSkpIHsKKyAgICAgICAg
ICAgIHJvd0VuZFZhbHVlID0gY29uc3VtZUdyaWRMaW5lKG1fcmFuZ2UpOworICAgICAgICAgICAg
aWYgKCFyb3dFbmRWYWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICBpZiAoY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShtX3JhbmdlKSkgeworICAg
ICAgICAgICAgICAgIGNvbHVtbkVuZFZhbHVlID0gY29uc3VtZUdyaWRMaW5lKG1fcmFuZ2UpOwor
ICAgICAgICAgICAgICAgIGlmICghY29sdW1uRW5kVmFsdWUpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAo
IW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY29sdW1u
U3RhcnRWYWx1ZSkKKyAgICAgICAgY29sdW1uU3RhcnRWYWx1ZSA9IHJvd1N0YXJ0VmFsdWUtPmlz
Q3VzdG9tSWRlbnRWYWx1ZSgpID8gcm93U3RhcnRWYWx1ZSA6IENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlQXV0byk7CisgICAgaWYgKCFyb3dFbmRWYWx1ZSkKKyAg
ICAgICAgcm93RW5kVmFsdWUgPSByb3dTdGFydFZhbHVlLT5pc0N1c3RvbUlkZW50VmFsdWUoKSA/
IHJvd1N0YXJ0VmFsdWUgOiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NW
YWx1ZUF1dG8pOworICAgIGlmICghY29sdW1uRW5kVmFsdWUpCisgICAgICAgIGNvbHVtbkVuZFZh
bHVlID0gY29sdW1uU3RhcnRWYWx1ZS0+aXNDdXN0b21JZGVudFZhbHVlKCkgPyBjb2x1bW5TdGFy
dFZhbHVlIDogQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVBdXRv
KTsKKworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFJvd1N0YXJ0LCBDU1NQcm9wZXJ0
eUdyaWRBcmVhLCAqcm93U3RhcnRWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUdyaWRDb2x1bW5TdGFydCwgQ1NTUHJvcGVydHlHcmlkQXJlYSwgKmNvbHVtblN0
YXJ0VmFsdWUsIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkUm93
RW5kLCBDU1NQcm9wZXJ0eUdyaWRBcmVhLCAqcm93RW5kVmFsdWUsIGltcG9ydGFudCk7CisgICAg
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkQ29sdW1uRW5kLCBDU1NQcm9wZXJ0eUdyaWRBcmVh
LCAqY29sdW1uRW5kVmFsdWUsIGltcG9ydGFudCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVHcmlkVGVtcGxhdGVSb3dzQW5kQXJlYXNBbmRD
b2x1bW5zKENTU1Byb3BlcnR5SUQgc2hvcnRoYW5kSWQsIGJvb2wgaW1wb3J0YW50KQoreworICAg
IE5hbWVkR3JpZEFyZWFNYXAgZ3JpZEFyZWFNYXA7CisgICAgc2l6ZV90IHJvd0NvdW50ID0gMDsK
KyAgICBzaXplX3QgY29sdW1uQ291bnQgPSAwOworICAgIENTU1ZhbHVlTGlzdCogdGVtcGxhdGVS
b3dzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworCisgICAgLy8gUGVy
c2lzdHMgYmV0d2VlbiBsb29wIGl0ZXJhdGlvbnMgc28gd2UgY2FuIHVzZSB0aGUgc2FtZSB2YWx1
ZSBmb3IKKyAgICAvLyBjb25zZWN1dGl2ZSA8bGluZS1uYW1lcz4gdmFsdWVzCisgICAgQ1NTR3Jp
ZExpbmVOYW1lc1ZhbHVlKiBsaW5lTmFtZXMgPSBudWxscHRyOworCisgICAgZG8geworICAgICAg
ICAvLyBIYW5kbGUgbGVhZGluZyA8Y3VzdG9tLWlkZW50PiouCisgICAgICAgIGJvb2wgaGFzUHJl
dmlvdXNMaW5lTmFtZXMgPSBsaW5lTmFtZXM7CisgICAgICAgIGxpbmVOYW1lcyA9IGNvbnN1bWVH
cmlkTGluZU5hbWVzKG1fcmFuZ2UsIGxpbmVOYW1lcyk7CisgICAgICAgIGlmIChsaW5lTmFtZXMg
JiYgIWhhc1ByZXZpb3VzTGluZU5hbWVzKQorICAgICAgICAgICAgdGVtcGxhdGVSb3dzLT5hcHBl
bmQoKmxpbmVOYW1lcyk7CisKKyAgICAgICAgLy8gSGFuZGxlIGEgdGVtcGxhdGUtYXJlYSdzIHJv
dy4KKyAgICAgICAgaWYgKG1fcmFuZ2UucGVlaygpLnR5cGUoKSAhPSBTdHJpbmdUb2tlbiB8fCAh
cGFyc2VHcmlkVGVtcGxhdGVBcmVhc1JvdyhtX3JhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNw
YWNlKCkudmFsdWUoKS50b1N0cmluZygpLCBncmlkQXJlYU1hcCwgcm93Q291bnQsIGNvbHVtbkNv
dW50KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgKytyb3dDb3VudDsKKwor
ICAgICAgICAvLyBIYW5kbGUgdGVtcGxhdGUtcm93cydzIHRyYWNrLXNpemUuCisgICAgICAgIENT
U1ZhbHVlKiB2YWx1ZSA9IGNvbnN1bWVHcmlkVHJhY2tTaXplKG1fcmFuZ2UsIG1fY29udGV4dC5t
b2RlKCkpOworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgdmFsdWUgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUF1dG8pOworICAgICAgICB0ZW1w
bGF0ZVJvd3MtPmFwcGVuZCgqdmFsdWUpOworCisgICAgICAgIC8vIFRoaXMgd2lsbCBoYW5kbGUg
dGhlIHRyYWlsaW5nL2xlYWRpbmcgPGN1c3RvbS1pZGVudD4qIGluIHRoZSBncmFtbWFyLgorICAg
ICAgICBsaW5lTmFtZXMgPSBjb25zdW1lR3JpZExpbmVOYW1lcyhtX3JhbmdlKTsKKyAgICAgICAg
aWYgKGxpbmVOYW1lcykKKyAgICAgICAgICAgIHRlbXBsYXRlUm93cy0+YXBwZW5kKCpsaW5lTmFt
ZXMpOworICAgIH0gd2hpbGUgKCFtX3JhbmdlLmF0RW5kKCkgJiYgIShtX3JhbmdlLnBlZWsoKS50
eXBlKCkgPT0gRGVsaW1pdGVyVG9rZW4gJiYgbV9yYW5nZS5wZWVrKCkuZGVsaW1pdGVyKCkgPT0g
Jy8nKSk7CisKKyAgICBDU1NWYWx1ZSogY29sdW1uc1ZhbHVlID0gbnVsbHB0cjsKKyAgICBpZiAo
IW1fcmFuZ2UuYXRFbmQoKSkgeworICAgICAgICBpZiAoIWNvbnN1bWVTbGFzaEluY2x1ZGluZ1do
aXRlc3BhY2UobV9yYW5nZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNv
bHVtbnNWYWx1ZSA9IGNvbnN1bWVHcmlkVHJhY2tMaXN0KG1fcmFuZ2UsIG1fY29udGV4dC5tb2Rl
KCksIEdyaWRUZW1wbGF0ZU5vUmVwZWF0KTsKKyAgICAgICAgaWYgKCFjb2x1bW5zVmFsdWUgfHwg
IW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBjb2x1bW5zVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRp
ZmllcihDU1NWYWx1ZU5vbmUpOworICAgIH0KKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdy
aWRUZW1wbGF0ZVJvd3MsIHNob3J0aGFuZElkLCAqdGVtcGxhdGVSb3dzLCBpbXBvcnRhbnQpOwor
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQ29sdW1ucywgc2hvcnRoYW5k
SWQsICpjb2x1bW5zVmFsdWUsIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVy
dHlHcmlkVGVtcGxhdGVBcmVhcywgc2hvcnRoYW5kSWQsICpDU1NHcmlkVGVtcGxhdGVBcmVhc1Zh
bHVlOjpjcmVhdGUoZ3JpZEFyZWFNYXAsIHJvd0NvdW50LCBjb2x1bW5Db3VudCksIGltcG9ydGFu
dCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1
bWVHcmlkVGVtcGxhdGVTaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCBzaG9ydGhhbmRJZCwgYm9vbCBp
bXBvcnRhbnQpCit7CisgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRM
YXlvdXRFbmFibGVkKCkpOworICAgIEFTU0VSVChncmlkVGVtcGxhdGVTaG9ydGhhbmQoKS5sZW5n
dGgoKSA9PSAzKTsKKworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2VDb3B5ID0gbV9yYW5n
ZTsKKyAgICBDU1NWYWx1ZSogcm93c1ZhbHVlID0gY29uc3VtZUlkZW50PENTU1ZhbHVlTm9uZT4o
bV9yYW5nZSk7CisKKyAgICAvLyAxLSAnbm9uZScgY2FzZS4KKyAgICBpZiAocm93c1ZhbHVlICYm
IG1fcmFuZ2UuYXRFbmQoKSkgeworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRU
ZW1wbGF0ZVJvd3MsIHNob3J0aGFuZElkLCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50
aWZpZXIoQ1NTVmFsdWVOb25lKSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NT
UHJvcGVydHlHcmlkVGVtcGxhdGVDb2x1bW5zLCBzaG9ydGhhbmRJZCwgKkNTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSksIGltcG9ydGFudCk7CisgICAgICAg
IGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQXJlYXMsIHNob3J0aGFuZElkLCAq
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKSwgaW1wb3J0
YW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gMi0gPGdyaWQtdGVt
cGxhdGUtcm93cz4gLyA8Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zPgorICAgIGlmICghcm93c1ZhbHVl
KQorICAgICAgICByb3dzVmFsdWUgPSBjb25zdW1lR3JpZFRyYWNrTGlzdChtX3JhbmdlLCBtX2Nv
bnRleHQubW9kZSgpLCBHcmlkVGVtcGxhdGUpOworCisgICAgaWYgKHJvd3NWYWx1ZSkgeworICAg
ICAgICBpZiAoIWNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UobV9yYW5nZSkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIENTU1ZhbHVlKiBjb2x1bW5zVmFsdWUgPSBj
b25zdW1lR3JpZFRlbXBsYXRlc1Jvd3NPckNvbHVtbnMobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUo
KSk7CisgICAgICAgIGlmICghY29sdW1uc1ZhbHVlIHx8ICFtX3JhbmdlLmF0RW5kKCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlH
cmlkVGVtcGxhdGVSb3dzLCBzaG9ydGhhbmRJZCwgKnJvd3NWYWx1ZSwgaW1wb3J0YW50KTsKKyAg
ICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVDb2x1bW5zLCBzaG9ydGhh
bmRJZCwgKmNvbHVtbnNWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NT
UHJvcGVydHlHcmlkVGVtcGxhdGVBcmVhcywgc2hvcnRoYW5kSWQsICpDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpLCBpbXBvcnRhbnQpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyAzLSBbIDxsaW5lLW5hbWVzPj8gPHN0cmluZz4g
PHRyYWNrLXNpemU+PyA8bGluZS1uYW1lcz4/IF0rIFsgLyA8dHJhY2stbGlzdD4gXT8KKyAgICBt
X3JhbmdlID0gcmFuZ2VDb3B5OworICAgIHJldHVybiBjb25zdW1lR3JpZFRlbXBsYXRlUm93c0Fu
ZEFyZWFzQW5kQ29sdW1ucyhzaG9ydGhhbmRJZCwgaW1wb3J0YW50KTsKK30KKworYm9vbCBDU1NQ
cm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUdyaWRTaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpCit7Cisg
ICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkp
OworICAgIEFTU0VSVChzaG9ydGhhbmRGb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWQpLmxlbmd0
aCgpID09IDgpOworCisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSBtX3Jhbmdl
OworCisgICAgLy8gMS0gPGdyaWQtdGVtcGxhdGU+CisgICAgaWYgKGNvbnN1bWVHcmlkVGVtcGxh
dGVTaG9ydGhhbmQoQ1NTUHJvcGVydHlHcmlkLCBpbXBvcnRhbnQpKSB7CisgICAgICAgIC8vIEl0
IGNhbiBvbmx5IGJlIHNwZWNpZmllZCB0aGUgZXhwbGljaXQgb3IgdGhlIGltcGxpY2l0IGdyaWQg
cHJvcGVydGllcyBpbiBhIHNpbmdsZSBncmlkIGRlY2xhcmF0aW9uLgorICAgICAgICAvLyBUaGUg
c3ViLXByb3BlcnRpZXMgbm90IHNwZWNpZmllZCBhcmUgc2V0IHRvIHRoZWlyIGluaXRpYWwgdmFs
dWUsIGFzIG5vcm1hbCBmb3Igc2hvcnRoYW5kcy4KKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJv
cGVydHlHcmlkQXV0b0Zsb3csIENTU1Byb3BlcnR5R3JpZCwgKkNTU0luaXRpYWxWYWx1ZTo6Y3Jl
YXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NT
UHJvcGVydHlHcmlkQXV0b0NvbHVtbnMsIENTU1Byb3BlcnR5R3JpZCwgKkNTU0luaXRpYWxWYWx1
ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVy
dHkoQ1NTUHJvcGVydHlHcmlkQXV0b1Jvd3MsIENTU1Byb3BlcnR5R3JpZCwgKkNTU0luaXRpYWxW
YWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJv
cGVydHkoQ1NTUHJvcGVydHlHcmlkQ29sdW1uR2FwLCBDU1NQcm9wZXJ0eUdyaWQsICpDU1NJbml0
aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7CisgICAgICAgIGFk
ZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFJvd0dhcCwgQ1NTUHJvcGVydHlHcmlkLCAqQ1NTSW5p
dGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBtX3JhbmdlID0gcmFuZ2VDb3B5OworCisgICAgLy8g
Mi0gPGdyaWQtYXV0by1mbG93PiBbIDxncmlkLWF1dG8tcm93cz4gWyAvIDxncmlkLWF1dG8tY29s
dW1ucz4gXT8gXQorICAgIENTU1ZhbHVlTGlzdCogZ3JpZEF1dG9GbG93ID0gY29uc3VtZUdyaWRB
dXRvRmxvdyhtX3JhbmdlKTsKKyAgICBpZiAoIWdyaWRBdXRvRmxvdykKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgQ1NTVmFsdWUqIGF1dG9Db2x1bW5zVmFsdWUgPSBudWxscHRyOworICAg
IENTU1ZhbHVlKiBhdXRvUm93c1ZhbHVlID0gbnVsbHB0cjsKKworICAgIGlmICghbV9yYW5nZS5h
dEVuZCgpKSB7CisgICAgICAgIGF1dG9Sb3dzVmFsdWUgPSBjb25zdW1lR3JpZFRyYWNrTGlzdCht
X3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBHcmlkQXV0byk7CisgICAgICAgIGlmICghYXV0b1Jv
d3NWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGNvbnN1bWVT
bGFzaEluY2x1ZGluZ1doaXRlc3BhY2UobV9yYW5nZSkpIHsKKyAgICAgICAgICAgIGF1dG9Db2x1
bW5zVmFsdWUgPSBjb25zdW1lR3JpZFRyYWNrTGlzdChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgp
LCBHcmlkQXV0byk7CisgICAgICAgICAgICBpZiAoIWF1dG9Db2x1bW5zVmFsdWUpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmICghbV9yYW5nZS5h
dEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICAg
IC8vIE90aGVyIG9taXR0ZWQgdmFsdWVzIGFyZSBzZXQgdG8gdGhlaXIgaW5pdGlhbCB2YWx1ZXMu
CisgICAgICAgIGF1dG9Db2x1bW5zVmFsdWUgPSBDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2Fj
eUltcGxpY2l0KCk7CisgICAgICAgIGF1dG9Sb3dzVmFsdWUgPSBDU1NJbml0aWFsVmFsdWU6OmNy
ZWF0ZUxlZ2FjeUltcGxpY2l0KCk7CisgICAgfQorCisgICAgLy8gaWYgPGdyaWQtYXV0by1jb2x1
bW5zPiB2YWx1ZSBpcyBvbWl0dGVkLCBpdCBpcyBzZXQgdG8gdGhlIHZhbHVlIHNwZWNpZmllZCBm
b3IgZ3JpZC1hdXRvLXJvd3MuCisgICAgaWYgKCFhdXRvQ29sdW1uc1ZhbHVlKQorICAgICAgICBh
dXRvQ29sdW1uc1ZhbHVlID0gYXV0b1Jvd3NWYWx1ZTsKKworICAgIC8vIEl0IGNhbiBvbmx5IGJl
IHNwZWNpZmllZCB0aGUgZXhwbGljaXQgb3IgdGhlIGltcGxpY2l0IGdyaWQgcHJvcGVydGllcyBp
biBhIHNpbmdsZSBncmlkIGRlY2xhcmF0aW9uLgorICAgIC8vIFRoZSBzdWItcHJvcGVydGllcyBu
b3Qgc3BlY2lmaWVkIGFyZSBzZXQgdG8gdGhlaXIgaW5pdGlhbCB2YWx1ZSwgYXMgbm9ybWFsIGZv
ciBzaG9ydGhhbmRzLgorICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQ29s
dW1ucywgQ1NTUHJvcGVydHlHcmlkLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBs
aWNpdCgpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFRlbXBs
YXRlUm93cywgQ1NTUHJvcGVydHlHcmlkLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJ
bXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFRl
bXBsYXRlQXJlYXMsIENTU1Byb3BlcnR5R3JpZCwgKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVn
YWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdy
aWRBdXRvRmxvdywgQ1NTUHJvcGVydHlHcmlkLCAqZ3JpZEF1dG9GbG93LCBpbXBvcnRhbnQpOwor
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZEF1dG9Db2x1bW5zLCBDU1NQcm9wZXJ0eUdy
aWQsICphdXRvQ29sdW1uc1ZhbHVlLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1By
b3BlcnR5R3JpZEF1dG9Sb3dzLCBDU1NQcm9wZXJ0eUdyaWQsICphdXRvUm93c1ZhbHVlLCBpbXBv
cnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZENvbHVtbkdhcCwgQ1NTUHJv
cGVydHlHcmlkLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBv
cnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFJvd0dhcCwgQ1NTUHJvcGVy
dHlHcmlkLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRh
bnQpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpwYXJz
ZVNob3J0aGFuZChDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0eSwgYm9vbCBpbXBvcnRh
bnQpCit7CisgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSA9IHJlc29sdmVDU1NQcm9wZXJ0eUlE
KHVucmVzb2x2ZWRQcm9wZXJ0eSk7CisKKyAgICBzd2l0Y2ggKHByb3BlcnR5KSB7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlOiB7CisgICAgICAgIENTU1ZhbHVlSUQg
aWQgPSBtX3JhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKKyAgICAgICAg
aWYgKCFDU1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRWYWx1ZShD
U1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlLCBpZCwgbV9jb250ZXh0Lm1vZGUo
KSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIENTU1ZhbHVlKiBiZWZvcmVD
b2xsYXBzZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKGlkKTsKKyAgICAg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSwgQ1NT
UHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSwgKmJlZm9yZUNvbGxhcHNlLCBpbXBvcnRhbnQp
OworICAgICAgICBpZiAobV9yYW5nZS5hdEVuZCgpKSB7CisgICAgICAgICAgICBhZGRQcm9wZXJ0
eShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UsIENTU1Byb3BlcnR5V2Via2l0
TWFyZ2luQ29sbGFwc2UsICpiZWZvcmVDb2xsYXBzZSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlkID0gbV9yYW5nZS5jb25zdW1lSW5j
bHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgICAgIGlmICghQ1NTUGFyc2VyRmFzdFBhdGhz
Ojppc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5B
ZnRlckNvbGxhcHNlLCBpZCwgbV9jb250ZXh0Lm1vZGUoKSkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJD
b2xsYXBzZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSwgKkNTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGVJZGVudGlmaWVyKGlkKSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvdzogeworICAgICAgICBDU1NW
YWx1ZUlEIGlkID0gbV9yYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7Cisg
ICAgICAgIGlmICghQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5k
VmFsdWUoQ1NTUHJvcGVydHlPdmVyZmxvd1ksIGlkLCBtX2NvbnRleHQubW9kZSgpKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIENTU1ZhbHVlKiBvdmVyZmxvd1lWYWx1ZSA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKGlkKTsKKworICAgICAgICBDU1NW
YWx1ZSogb3ZlcmZsb3dYVmFsdWUgPSBudWxscHRyOworCisgICAgICAgIC8vIEZJWE1FOiAtd2Vi
a2l0LXBhZ2VkLXggb3IgLXdlYmtpdC1wYWdlZC15IG9ubHkgYXBwbHkgdG8gb3ZlcmZsb3cteS4g
SWYgdGhpcyB2YWx1ZSBoYXMgYmVlbgorICAgICAgICAvLyBzZXQgdXNpbmcgdGhlIHNob3J0aGFu
ZCwgdGhlbiBmb3Igbm93IG92ZXJmbG93LXggd2lsbCBkZWZhdWx0IHRvIGF1dG8sIGJ1dCBvbmNl
IHdlIGltcGxlbWVudAorICAgICAgICAvLyBwYWdpbmF0aW9uIGNvbnRyb2xzLCBpdCBzaG91bGQg
ZGVmYXVsdCB0byBoaWRkZW4uIElmIHRoZSBvdmVyZmxvdy15IHZhbHVlIGlzIGFueXRoaW5nIGJ1
dAorICAgICAgICAvLyBwYWdlZC14IG9yIHBhZ2VkLXksIHRoZW4gb3ZlcmZsb3cteCBhbmQgb3Zl
cmZsb3cteSBzaG91bGQgaGF2ZSB0aGUgc2FtZSB2YWx1ZS4KKyAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlV2Via2l0UGFnZWRYIHx8IGlkID09IENTU1ZhbHVlV2Via2l0UGFnZWRZKQorICAgICAg
ICAgICAgb3ZlcmZsb3dYVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmll
cihDU1NWYWx1ZUF1dG8pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvdmVyZmxvd1hWYWx1
ZSA9IG92ZXJmbG93WVZhbHVlOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU92ZXJm
bG93WCwgQ1NTUHJvcGVydHlPdmVyZmxvdywgKm92ZXJmbG93WFZhbHVlLCBpbXBvcnRhbnQpOwor
ICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU92ZXJmbG93WSwgQ1NTUHJvcGVydHlPdmVy
ZmxvdywgKm92ZXJmbG93WVZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnQ6IHsKKyAgICAgICAgY29uc3QgQ1NTUGFy
c2VyVG9rZW4mIHRva2VuID0gbV9yYW5nZS5wZWVrKCk7CisgICAgICAgIGlmICh0b2tlbi5pZCgp
ID49IENTU1ZhbHVlQ2FwdGlvbiAmJiB0b2tlbi5pZCgpIDw9IENTU1ZhbHVlU3RhdHVzQmFyKQor
ICAgICAgICAgICAgcmV0dXJuIGNvbnN1bWVTeXN0ZW1Gb250KGltcG9ydGFudCk7CisgICAgICAg
IHJldHVybiBjb25zdW1lRm9udChpbXBvcnRhbnQpOworICAgIH0KKyAgICBjYXNlIENTU1Byb3Bl
cnR5Rm9udFZhcmlhbnQ6CisgICAgICAgIHJldHVybiBjb25zdW1lRm9udFZhcmlhbnRTaG9ydGhh
bmQoaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZzoKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVCb3JkZXJTcGFjaW5nKGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUNvbHVtbnM6CisgICAgICAgIHJldHVybiBjb25zdW1lQ29sdW1ucyhpbXBvcnRhbnQp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb246CisgICAgICAgIHJldHVybiBjb25zdW1l
QW5pbWF0aW9uU2hvcnRoYW5kKGFuaW1hdGlvblNob3J0aGFuZEZvclBhcnNpbmcoKSwgdW5yZXNv
bHZlZFByb3BlcnR5ID09IENTU1Byb3BlcnR5QWxpYXNXZWJraXRBbmltYXRpb24sIGltcG9ydGFu
dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb246CisgICAgICAgIHJldHVybiBjb25z
dW1lQW5pbWF0aW9uU2hvcnRoYW5kKHRyYW5zaXRpb25TaG9ydGhhbmRGb3JQYXJzaW5nKCksIGZh
bHNlLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbjoKKyAg
ICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzczNUZXh0RGVjb3JhdGlvbnNF
bmFibGVkKCkpOworICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KHRleHRE
ZWNvcmF0aW9uU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1h
cmdpbjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWU0VmFsdWVzKG1hcmdpblNob3J0aGFuZCgpLCBp
bXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nOgorICAgICAgICByZXR1cm4g
Y29uc3VtZTRWYWx1ZXMocGFkZGluZ1Nob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlNb3Rpb246CisgICAgICAgIHJldHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRp
bHkobW90aW9uU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRFbXBoYXNpczoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhhbmRHcmVlZGls
eSh3ZWJraXRUZXh0RW1waGFzaXNTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5T3V0bGluZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhhbmRHcmVlZGls
eShvdXRsaW5lU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlclN0YXJ0OgorICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5
KHdlYmtpdEJvcmRlclN0YXJ0U2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckVuZDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhhbmRH
cmVlZGlseSh3ZWJraXRCb3JkZXJFbmRTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlOgorICAgICAgICByZXR1cm4gY29uc3VtZVNo
b3J0aGFuZEdyZWVkaWx5KHdlYmtpdEJvcmRlckJlZm9yZVNob3J0aGFuZCgpLCBpbXBvcnRhbnQp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcjoKKyAgICAgICAgcmV0dXJu
IGNvbnN1bWVTaG9ydGhhbmRHcmVlZGlseSh3ZWJraXRCb3JkZXJBZnRlclNob3J0aGFuZCgpLCBp
bXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlOgorICAgICAg
ICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KHdlYmtpdFRleHRTdHJva2VTaG9ydGhh
bmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFya2VyOiB7CisgICAgICAg
IGNvbnN0IENTU1ZhbHVlKiBtYXJrZXIgPSBwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5TWFy
a2VyU3RhcnQpOworICAgICAgICBpZiAoIW1hcmtlciB8fCAhbV9yYW5nZS5hdEVuZCgpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1h
cmtlclN0YXJ0LCBDU1NQcm9wZXJ0eU1hcmtlciwgKm1hcmtlciwgaW1wb3J0YW50KTsKKyAgICAg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJrZXJNaWQsIENTU1Byb3BlcnR5TWFya2VyLCAq
bWFya2VyLCBpbXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmtl
ckVuZCwgQ1NTUHJvcGVydHlNYXJrZXIsICptYXJrZXIsIGltcG9ydGFudCk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5RmxleDoKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVGbGV4KGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsZXhGbG93
OgorICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KGZsZXhGbG93U2hvcnRo
YW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVtblJ1bGU6CisgICAg
ICAgIHJldHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkoY29sdW1uUnVsZVNob3J0aGFuZCgp
LCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGU6CisgICAgICAgIHJl
dHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkobGlzdFN0eWxlU2hvcnRoYW5kKCksIGltcG9y
dGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1czogeworICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogaG9yaXpvbnRhbFJhZGlpWzRdID0geyAwIH07CisgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiB2ZXJ0aWNhbFJhZGlpWzRdID0geyAwIH07CisgICAgICAgIGlmICghY29u
c3VtZVJhZGlpKGhvcml6b250YWxSYWRpaSwgdmVydGljYWxSYWRpaSwgbV9yYW5nZSwgbV9jb250
ZXh0Lm1vZGUoKSwgdW5yZXNvbHZlZFByb3BlcnR5ID09IENTU1Byb3BlcnR5QWxpYXNXZWJraXRC
b3JkZXJSYWRpdXMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhZGRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXMsIENTU1Byb3BlcnR5Qm9yZGVyUmFk
aXVzLCAqQ1NTVmFsdWVQYWlyOjpjcmVhdGUoaG9yaXpvbnRhbFJhZGlpWzBdLCB2ZXJ0aWNhbFJh
ZGlpWzBdLCBDU1NWYWx1ZVBhaXI6OkRyb3BJZGVudGljYWxWYWx1ZXMpLCBpbXBvcnRhbnQpOwor
ICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzLCBDU1NQ
cm9wZXJ0eUJvcmRlclJhZGl1cywgKkNTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhvcml6b250YWxSYWRp
aVsxXSwgdmVydGljYWxSYWRpaVsxXSwgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVz
KSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21SaWdodFJhZGl1cywgQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMsICpDU1NWYWx1ZVBhaXI6OmNy
ZWF0ZShob3Jpem9udGFsUmFkaWlbMl0sIHZlcnRpY2FsUmFkaWlbMl0sIENTU1ZhbHVlUGFpcjo6
RHJvcElkZW50aWNhbFZhbHVlcyksIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywgQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMs
ICpDU1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsUmFkaWlbM10sIHZlcnRpY2FsUmFkaWlb
M10sIENTU1ZhbHVlUGFpcjo6RHJvcElkZW50aWNhbFZhbHVlcyksIGltcG9ydGFudCk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3I6
CisgICAgICAgIHJldHVybiBjb25zdW1lNFZhbHVlcyhib3JkZXJDb2xvclNob3J0aGFuZCgpLCBp
bXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZToKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWU0VmFsdWVzKGJvcmRlclN0eWxlU2hvcnRoYW5kKCksIGltcG9ydGFudCk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoOgorICAgICAgICByZXR1cm4gY29uc3VtZTRW
YWx1ZXMoYm9yZGVyV2lkdGhTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyVG9wOgorICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5
KGJvcmRlclRvcFNob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJSaWdodDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhhbmRHcmVlZGlseShib3Jk
ZXJSaWdodFNob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJCb3R0b206CisgICAgICAgIHJldHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkoYm9yZGVy
Qm90dG9tU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
ckxlZnQ6CisgICAgICAgIHJldHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkoYm9yZGVyTGVm
dFNob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6Cisg
ICAgICAgIHJldHVybiBjb25zdW1lQm9yZGVyKGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlckltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2U6
CisgICAgICAgIHJldHVybiBjb25zdW1lQm9yZGVySW1hZ2UocHJvcGVydHksIGltcG9ydGFudCk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlQYWdlQnJlYWtCZWZvcmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0luc2lkZToK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtBZnRlcjoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtCZWZvcmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtbkJyZWFrSW5zaWRlOgorICAgICAgICByZXR1cm4gY29uc3VtZUxlZ2FjeUJyZWFr
UHJvcGVydHkocHJvcGVydHksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tQb3NpdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uOiB7
CisgICAgICAgIENTU1ZhbHVlKiByZXN1bHRYID0gbnVsbHB0cjsKKyAgICAgICAgQ1NTVmFsdWUq
IHJlc3VsdFkgPSBudWxscHRyOworICAgICAgICBpZiAoIWNvbnN1bWVCYWNrZ3JvdW5kUG9zaXRp
b24obV9yYW5nZSwgbV9jb250ZXh0LCBVbml0bGVzc1F1aXJrOjpBbGxvdywgcmVzdWx0WCwgcmVz
dWx0WSkgfHwgIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgYWRkUHJvcGVydHkocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRp
b24gPyBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblggOiBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tQb3NpdGlvblgsIHByb3BlcnR5LCAqcmVzdWx0WCwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRk
UHJvcGVydHkocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24gPyBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblkgOiBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlv
blksIHByb3BlcnR5LCAqcmVzdWx0WSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0OiB7CisgICAgICAgIENTU1ZhbHVlKiByZXN1bHRY
ID0gbnVsbHB0cjsKKyAgICAgICAgQ1NTVmFsdWUqIHJlc3VsdFkgPSBudWxscHRyOworICAgICAg
ICBib29sIGltcGxpY2l0ID0gZmFsc2U7CisgICAgICAgIGlmICghY29uc3VtZVJlcGVhdFN0eWxl
KG1fcmFuZ2UsIHJlc3VsdFgsIHJlc3VsdFksIGltcGxpY2l0KSB8fCAhbV9yYW5nZS5hdEVuZCgp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0
eSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQgPyBDU1NQcm9wZXJ0eUJhY2tncm91bmRS
ZXBlYXRYIDogQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WCwgcHJvcGVydHksICpyZXN1bHRY
LCBpbXBvcnRhbnQsIGltcGxpY2l0KTsKKyAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydHkgPT0g
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0ID8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0
WSA6IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFksIHByb3BlcnR5LCAqcmVzdWx0WSwgaW1w
b3J0YW50LCBpbXBsaWNpdCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBjYXNl
IENTU1Byb3BlcnR5QmFja2dyb3VuZDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCYWNrZ3JvdW5k
U2hvcnRoYW5kKGJhY2tncm91bmRTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFzazoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCYWNrZ3JvdW5kU2hv
cnRoYW5kKHdlYmtpdE1hc2tTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1By
b3BlcnR5R3JpZEdhcDogeworICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
Y3NzR3JpZExheW91dEVuYWJsZWQoKSAmJiBzaG9ydGhhbmRGb3JQcm9wZXJ0eShDU1NQcm9wZXJ0
eUdyaWRHYXApLmxlbmd0aCgpID09IDIpOworICAgICAgICBDU1NWYWx1ZSogcm93R2FwID0gY29u
c3VtZUxlbmd0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlTm9uTmVnYXRp
dmUpOworICAgICAgICBDU1NWYWx1ZSogY29sdW1uR2FwID0gY29uc3VtZUxlbmd0aChtX3Jhbmdl
LCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICBpZiAo
IXJvd0dhcCB8fCAhbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBpZiAoIWNvbHVtbkdhcCkKKyAgICAgICAgICAgIGNvbHVtbkdhcCA9IHJvd0dhcDsK
KyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkUm93R2FwLCBDU1NQcm9wZXJ0eUdy
aWRHYXAsICpyb3dHYXAsIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3Bl
cnR5R3JpZENvbHVtbkdhcCwgQ1NTUHJvcGVydHlHcmlkR2FwLCAqY29sdW1uR2FwLCBpbXBvcnRh
bnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdy
aWRDb2x1bW46CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRSb3c6CisgICAgICAgIHJldHVybiBj
b25zdW1lR3JpZEl0ZW1Qb3NpdGlvblNob3J0aGFuZChwcm9wZXJ0eSwgaW1wb3J0YW50KTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5R3JpZEFyZWE6CisgICAgICAgIHJldHVybiBjb25zdW1lR3JpZEFy
ZWFTaG9ydGhhbmQoaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZFRlbXBsYXRl
OgorICAgICAgICByZXR1cm4gY29uc3VtZUdyaWRUZW1wbGF0ZVNob3J0aGFuZChDU1NQcm9wZXJ0
eUdyaWRUZW1wbGF0ZSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZDoKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVHcmlkU2hvcnRoYW5kKGltcG9ydGFudCk7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKyovCisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5
UGFyc2VyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
cm9wZXJ0eVBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDAzIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmlj
QHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgLSAyMDEwICBUb3JjaCBNb2JpbGUg
KEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgQ1NTUHJvcGVy
dHlQYXJzZXJfaAorI2RlZmluZSBDU1NQcm9wZXJ0eVBhcnNlcl9oCisKKyNpbmNsdWRlICJDU1NQ
YXJzZXJUb2tlblJhbmdlLmgiCisjaW5jbHVkZSAiU3R5bGVSdWxlLmgiCisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nVmlldy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1By
b3BlcnR5OworY2xhc3MgQ1NTVmFsdWU7CitjbGFzcyBTdHlsZVByb3BlcnR5U2hvcnRoYW5kOwor
CisvLyBJbnB1dHM6IFByb3BlcnR5SUQsIGlzSW1wb3J0YW50IGJvb2wsIENTU1BhcnNlclRva2Vu
UmFuZ2UuCisvLyBPdXRwdXRzOiBWZWN0b3Igb2YgQ1NTUHJvcGVydGllcworCitjbGFzcyBDU1NQ
cm9wZXJ0eVBhcnNlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ1NTUHJvcGVydHlQYXJz
ZXIpOworcHVibGljOgorICAgIHN0YXRpYyBib29sIHBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCwg
Ym9vbCBpbXBvcnRhbnQsCisgICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmLCBjb25z
dCBDU1NQYXJzZXJDb250ZXh0JiwKKyAgICAgICAgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+Jiwg
U3R5bGVSdWxlOjpUeXBlKTsKKworICAgIC8vIFBhcnNlcyBhIG5vbi1zaG9ydGhhbmQgQ1NTIHBy
b3BlcnR5CisgICAgc3RhdGljIGNvbnN0IENTU1ZhbHVlKiBwYXJzZVNpbmdsZVZhbHVlKENTU1By
b3BlcnR5SUQsIGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmLCBjb25zdCBDU1NQYXJzZXJDb250
ZXh0Jik7CisKK3ByaXZhdGU6CisgICAgQ1NTUHJvcGVydHlQYXJzZXIoY29uc3QgQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmLAorICAgICAgICBWZWN0b3I8Q1NT
UHJvcGVydHksIDI1Nj4qKTsKKworICAgIC8vIEZJWE1FOiBSZW5hbWUgb25jZSB0aGUgQ1NTUGFy
c2VyVmFsdWUtYmFzZWQgcGFyc2VWYWx1ZSBpcyByZW1vdmVkCisgICAgYm9vbCBwYXJzZVZhbHVl
U3RhcnQoQ1NTUHJvcGVydHlJRCB1bnJlc29sdmVkUHJvcGVydHksIGJvb2wgaW1wb3J0YW50KTsK
KyAgICBib29sIGNvbnN1bWVDU1NXaWRlS2V5d29yZChDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQ
cm9wZXJ0eSwgYm9vbCBpbXBvcnRhbnQpOworICAgIGNvbnN0IENTU1ZhbHVlKiBwYXJzZVNpbmds
ZVZhbHVlKENTU1Byb3BlcnR5SUQsIENTU1Byb3BlcnR5SUQgPSBDU1NQcm9wZXJ0eUludmFsaWQp
OworCisgICAgYm9vbCBpblF1aXJrc01vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQubW9k
ZSA9PSBDU1NRdWlya3NNb2RlOyB9CisKKyAgICBib29sIHBhcnNlVmlld3BvcnREZXNjcmlwdG9y
KENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBwYXJzZUZv
bnRGYWNlRGVzY3JpcHRvcihDU1NQcm9wZXJ0eUlEKTsKKworICAgIHZvaWQgYWRkUHJvcGVydHko
Q1NTUHJvcGVydHlJRCwgQ1NTUHJvcGVydHlJRCwgY29uc3QgQ1NTVmFsdWUmLCBib29sIGltcG9y
dGFudCwgYm9vbCBpbXBsaWNpdCA9IGZhbHNlKTsKKyAgICB2b2lkIGFkZEV4cGFuZGVkUHJvcGVy
dHlGb3JWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgY29uc3QgQ1NTVmFsdWUmLCBib29sKTsK
KworICAgIGJvb2wgY29uc3VtZUJvcmRlcihib29sIGltcG9ydGFudCk7CisKKyAgICBib29sIHBh
cnNlU2hvcnRoYW5kKENTU1Byb3BlcnR5SUQsIGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29sIGNv
bnN1bWVTaG9ydGhhbmRHcmVlZGlseShjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiwgYm9v
bCBpbXBvcnRhbnQpOworICAgIGJvb2wgY29uc3VtZTRWYWx1ZXMoY29uc3QgU3R5bGVQcm9wZXJ0
eVNob3J0aGFuZCYsIGJvb2wgaW1wb3J0YW50KTsKKworICAgIC8vIExlZ2FjeSBwYXJzaW5nIGFs
bG93cyA8c3RyaW5nPnMgZm9yIGFuaW1hdGlvbi1uYW1lCisgICAgYm9vbCBjb25zdW1lQW5pbWF0
aW9uU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmLCBib29sIHVzZUxlZ2Fj
eVBhcnNpbmcsIGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29sIGNvbnN1bWVCYWNrZ3JvdW5kU2hv
cnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmLCBib29sIGltcG9ydGFudCk7CisK
KyAgICBib29sIGNvbnN1bWVDb2x1bW5zKGJvb2wgaW1wb3J0YW50KTsKKworICAgIGJvb2wgY29u
c3VtZUdyaWRJdGVtUG9zaXRpb25TaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRh
bnQpOworICAgIGJvb2wgY29uc3VtZUdyaWRUZW1wbGF0ZVJvd3NBbmRBcmVhc0FuZENvbHVtbnMo
Q1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wgY29uc3VtZUdyaWRUZW1w
bGF0ZVNob3J0aGFuZChDU1NQcm9wZXJ0eUlELCBib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBj
b25zdW1lR3JpZFNob3J0aGFuZChib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBjb25zdW1lR3Jp
ZEFyZWFTaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpOworCisgICAgYm9vbCBjb25zdW1lRm9udChi
b29sIGltcG9ydGFudCk7CisgICAgYm9vbCBjb25zdW1lRm9udFZhcmlhbnRTaG9ydGhhbmQoYm9v
bCBpbXBvcnRhbnQpOworICAgIGJvb2wgY29uc3VtZVN5c3RlbUZvbnQoYm9vbCBpbXBvcnRhbnQp
OworCisgICAgYm9vbCBjb25zdW1lQm9yZGVyU3BhY2luZyhib29sIGltcG9ydGFudCk7CisKKyAg
ICAvLyBDU1MzIFBhcnNpbmcgUm91dGluZXMgKGZvciBwcm9wZXJ0aWVzIHNwZWNpZmljIHRvIENT
UzMpCisgICAgYm9vbCBjb25zdW1lQm9yZGVySW1hZ2UoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBv
cnRhbnQpOworCisgICAgYm9vbCBjb25zdW1lRmxleChib29sIGltcG9ydGFudCk7CisKKyAgICBi
b29sIGNvbnN1bWVMZWdhY3lCcmVha1Byb3BlcnR5KENTU1Byb3BlcnR5SUQsIGJvb2wgaW1wb3J0
YW50KTsKKworcHJpdmF0ZToKKyAgICAvLyBJbnB1dHM6CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5n
ZSBtX3JhbmdlOworICAgIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIG1fY29udGV4dDsKKyAgICAv
LyBPdXRwdXRzOgorICAgIFZlY3RvcjxDU1NQcm9wZXJ0eSwgMjU2PiogbV9wYXJzZWRQcm9wZXJ0
aWVzOworfTsKKworQ1NTUHJvcGVydHlJRCB1bnJlc29sdmVkQ1NTUHJvcGVydHlJRChTdHJpbmdW
aWV3KTsKK0NTU1ZhbHVlSUQgY3NzVmFsdWVLZXl3b3JkSUQoU3RyaW5nVmlldyk7CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENTU1Byb3BlcnR5UGFyc2VyX2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2Vy
SGVscGVycy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEx
MCBAQAorLy8gQ29weXJpZ2h0IDIwMTYgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6Cisv
LworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaCIK
KworI2luY2x1ZGUgIkNTU0NhbGN1bGF0aW9uVmFsdWUuaCIKKy8vIEZJWE1FLU5FV1BBUlNFUjog
I2luY2x1ZGUgIkNTU0NvbG9yVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NDcm9zc2ZhZGVWYWx1ZS5o
IgorI2luY2x1ZGUgIkNTU0dyYWRpZW50VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NJbWFnZVNldFZh
bHVlLmgiCisjaW5jbHVkZSAiQ1NTSW1hZ2VWYWx1ZS5oIgorLy8gRklYTUUtTkVXUEFSU0VSOiAj
aW5jbHVkZSAiQ1NTUGFpbnRWYWx1ZS5oIgorLy8gRklYTUVfTkVXUEFSU0VSOiAjaW5jbHVkZSAi
Q1NTU3RyaW5nVmFsdWUuaCIKKy8vIEZJWE1FLU5FV1BBUlNFUjogI2luY2x1ZGUgIkNTU1VSSVZh
bHVlLmgiCisvLyBGSVhNRV9ORVdQQVJTRVI6ICNpbmNsdWRlICJDU1NWYWx1ZVBhaXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisvKiBGSVhNRS1ORVdQQVJTRVI6IERpc2FibGUgZm9yIG5v
dy4KKyAKK25hbWVzcGFjZSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMgeworCitib29sIGNvbnN1
bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7
CisgICAgQ1NTUGFyc2VyVG9rZW4gdmFsdWUgPSByYW5nZS5wZWVrKCk7CisgICAgaWYgKHZhbHVl
LnR5cGUoKSAhPSBDb21tYVRva2VuKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmFuZ2Uu
Y29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlKQoreworICAgIENTU1BhcnNlclRva2VuIHZhbHVlID0gcmFuZ2UucGVlaygpOworICAgIGlm
ICh2YWx1ZS50eXBlKCkgIT0gRGVsaW1pdGVyVG9rZW4gfHwgdmFsdWUuZGVsaW1pdGVyKCkgIT0g
Jy8nKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1do
aXRlc3BhY2UoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworQ1NTUGFyc2VyVG9rZW5SYW5nZSBj
b25zdW1lRnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQVNTRVJU
KHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gRnVuY3Rpb25Ub2tlbik7CisgICAgQ1NTUGFyc2VyVG9r
ZW5SYW5nZSBjb250ZW50cyA9IHJhbmdlLmNvbnN1bWVCbG9jaygpOworICAgIHJhbmdlLmNvbnN1
bWVXaGl0ZXNwYWNlKCk7CisgICAgY29udGVudHMuY29uc3VtZVdoaXRlc3BhY2UoKTsKKyAgICBy
ZXR1cm4gY29udGVudHM7Cit9CisKKy8vIEZJWE1FOiBjb25zaWRlciBwdWxsaW5nIGluIHRoZSBw
YXJzaW5nIGxvZ2ljIGZyb20gQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAuCitjbGFzcyBDYWxjUGFy
c2VyIHsKKworcHVibGljOgorICAgIGV4cGxpY2l0IENhbGNQYXJzZXIoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSA9IFZhbHVlUmFuZ2VBbGwpCisgICAg
ICAgIDogbV9zb3VyY2VSYW5nZShyYW5nZSkKKyAgICAgICAgLCBtX3JhbmdlKHJhbmdlKQorICAg
IHsKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOwor
ICAgICAgICBpZiAodG9rZW4uZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlQ2FsYyB8fCB0b2tlbi5m
dW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVXZWJraXRDYWxjKQorICAgICAgICAgICAgbV9jYWxjVmFs
dWUgPSBDU1NDYWxjVmFsdWU6OmNyZWF0ZShjb25zdW1lRnVuY3Rpb24obV9yYW5nZSksIHZhbHVl
UmFuZ2UpOworICAgIH0KKworICAgIGNvbnN0IENTU0NhbGNWYWx1ZSogdmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX2NhbGNWYWx1ZS5nZXQoKTsgfQorICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25z
dW1lVmFsdWUoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NhbGNWYWx1ZSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICBtX3NvdXJjZVJhbmdlID0gbV9yYW5nZTsKKyAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV9jYWxjVmFsdWUucmVsZWFzZSgp
KTsKKyAgICB9CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVOdW1iZXIoKQorICAgIHsK
KyAgICAgICAgaWYgKCFtX2NhbGNWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICBtX3NvdXJjZVJhbmdlID0gbV9yYW5nZTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlIHVuaXRUeXBlID0gbV9jYWxjVmFsdWUtPmlzSW50KCkgPyBDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGU6OkludGVnZXIgOiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6
Ok51bWJlcjsKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV9jYWxj
VmFsdWUtPmRvdWJsZVZhbHVlKCksIHVuaXRUeXBlKTsKKyAgICB9CisKKyAgICBib29sIGNvbnN1
bWVOdW1iZXJSYXcoZG91YmxlJiByZXN1bHQpCisgICAgeworICAgICAgICBpZiAoIW1fY2FsY1Zh
bHVlIHx8IG1fY2FsY1ZhbHVlLT5jYXRlZ29yeSgpICE9IENhbGNOdW1iZXIpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIG1fc291cmNlUmFuZ2UgPSBtX3JhbmdlOworICAgICAg
ICByZXN1bHQgPSBtX2NhbGNWYWx1ZS0+ZG91YmxlVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCitwcml2YXRlOgorICAgIENTU1BhcnNlclRva2VuUmFuZ2UmIG1fc291cmNl
UmFuZ2U7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBtX3JhbmdlOworICAgIE1lbWJlcjxDU1ND
YWxjVmFsdWU+IG1fY2FsY1ZhbHVlOworfTsKKworQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVJ
bnRlZ2VyKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBkb3VibGUgbWluaW11bVZhbHVlKQor
eworICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICBp
ZiAodG9rZW4udHlwZSgpID09IE51bWJlclRva2VuKSB7CisgICAgICAgIGlmICh0b2tlbi5udW1l
cmljVmFsdWVUeXBlKCkgPT0gTnVtYmVyVmFsdWVUeXBlIHx8IHRva2VuLm51bWVyaWNWYWx1ZSgp
IDwgbWluaW11bVZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0
ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6SW50
ZWdlcik7CisgICAgfQorICAgIENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSk7CisgICAgaWYg
KGNvbnN0IENTU0NhbGNWYWx1ZSogY2FsY3VsYXRpb24gPSBjYWxjUGFyc2VyLnZhbHVlKCkpIHsK
KyAgICAgICAgaWYgKGNhbGN1bGF0aW9uLT5jYXRlZ29yeSgpICE9IENhbGNOdW1iZXIgfHwgIWNh
bGN1bGF0aW9uLT5pc0ludCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IGRvdWJsZSB2YWx1ZSA9IGNhbGN1bGF0aW9uLT5kb3VibGVWYWx1ZSgpOworICAgICAgICBpZiAo
dmFsdWUgPCBtaW5pbXVtVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuIGNhbGNQYXJzZXIuY29uc3VtZU51bWJlcigpOworICAgIH0KKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKworQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVQb3NpdGl2ZUludGVnZXIo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgcmV0dXJuIGNvbnN1bWVJbnRlZ2Vy
KHJhbmdlLCAxKTsKK30KKworYm9vbCBjb25zdW1lTnVtYmVyUmF3KENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBkb3VibGUmIHJlc3VsdCkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUo
KSA9PSBOdW1iZXJUb2tlbikgeworICAgICAgICByZXN1bHQgPSByYW5nZS5jb25zdW1lSW5jbHVk
aW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgQ2FsY1BhcnNlciBjYWxjUGFyc2VyKHJhbmdlLCBWYWx1ZVJhbmdlQWxsKTsKKyAg
ICByZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lTnVtYmVyUmF3KHJlc3VsdCk7Cit9CisKKy8vIEZJ
WE1FOiBXb3JrIG91dCBpZiB0aGlzIGNhbiBqdXN0IGNhbGwgY29uc3VtZU51bWJlclJhdworQ1NT
UHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVOdW1iZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Us
IFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSkKK3sKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9r
ZW4gPSByYW5nZS5wZWVrKCk7CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbikg
eworICAgICAgICBpZiAodmFsdWVSYW5nZSA9PSBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUgJiYgdG9r
ZW4ubnVtZXJpY1ZhbHVlKCkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRp
bmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCksIHRva2VuLnVuaXRUeXBlKCkpOworICAgIH0K
KyAgICBDYWxjUGFyc2VyIGNhbGNQYXJzZXIocmFuZ2UsIFZhbHVlUmFuZ2VBbGwpOworICAgIGlm
IChjb25zdCBDU1NDYWxjVmFsdWUqIGNhbGN1bGF0aW9uID0gY2FsY1BhcnNlci52YWx1ZSgpKSB7
CisgICAgICAgIC8vIEZJWE1FOiBDYWxjcyBzaG91bGQgbm90IGJlIHN1YmplY3QgdG8gcGFyc2Ug
dGltZSByYW5nZSBjaGVja3MuCisgICAgICAgIC8vIHNwZWM6IGh0dHBzOi8vZHJhZnRzLmNzc3dn
Lm9yZy9jc3MtdmFsdWVzLTMvI2NhbGMtcmFuZ2UKKyAgICAgICAgaWYgKGNhbGN1bGF0aW9uLT5j
YXRlZ29yeSgpICE9IENhbGNOdW1iZXIgfHwgKHZhbHVlUmFuZ2UgPT0gVmFsdWVSYW5nZU5vbk5l
Z2F0aXZlICYmIGNhbGN1bGF0aW9uLT5pc05lZ2F0aXZlKCkpKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIHJldHVybiBjYWxjUGFyc2VyLmNvbnN1bWVOdW1iZXIoKTsKKyAg
ICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2lubGluZSBib29sIHNob3VsZEFjY2VwdFVu
aXRsZXNzTGVuZ3RoKGRvdWJsZSB2YWx1ZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBV
bml0bGVzc1F1aXJrIHVuaXRsZXNzKQoreworICAgIC8vIEZJWE1FOiBQcmVzZW50YXRpb25hbCBI
VE1MIGF0dHJpYnV0ZXMgc2hvdWxkbid0IHVzZSB0aGUgQ1NTIHBhcnNlciBmb3IgbGVuZ3Rocwor
ICAgIHJldHVybiB2YWx1ZSA9PSAwCisgICAgICAgIHx8IGlzVW5pdExlc3NMZW5ndGhQYXJzaW5n
RW5hYmxlZEZvck1vZGUoY3NzUGFyc2VyTW9kZSkKKyAgICAgICAgfHwgKGNzc1BhcnNlck1vZGUg
PT0gSFRNTFF1aXJrc01vZGUgJiYgdW5pdGxlc3MgPT0gVW5pdGxlc3NRdWlyazo6QWxsb3cpOwor
fQorCitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUxlbmd0aChDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlIHZhbHVlUmFu
Z2UsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4m
IHRva2VuID0gcmFuZ2UucGVlaygpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gRGltZW5zaW9u
VG9rZW4pIHsKKyAgICAgICAgc3dpdGNoICh0b2tlbi51bml0VHlwZSgpKSB7CisgICAgICAgIGNh
c2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpRdWlya3lFbXM6CisgICAgICAgICAgICBp
ZiAoY3NzUGFyc2VyTW9kZSAhPSBVQVNoZWV0TW9kZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICBjYXNlIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZTo6RW1zOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZTo6UmVtczoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGU6OkNoczoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkV4czoK
KyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBpeGVsczoKKyAgICAg
ICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkNlbnRpbWV0ZXJzOgorICAgICAg
ICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TWlsbGltZXRlcnM6CisgICAgICAg
IGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpJbmNoZXM6CisgICAgICAgIGNhc2Ug
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQb2ludHM6CisgICAgICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQaWNhczoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVW
YWx1ZTo6VW5pdFR5cGU6OlVzZXJVbml0czoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGU6OlZpZXdwb3J0V2lkdGg6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlOjpWaWV3cG9ydEhlaWdodDoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVW
YWx1ZTo6VW5pdFR5cGU6OlZpZXdwb3J0TWluOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZTo6Vmlld3BvcnRNYXg6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAg
IGlmICh2YWx1ZVJhbmdlID09IFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSAmJiB0b2tlbi5udW1lcmlj
VmFsdWUoKSA8IDApCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3Bh
Y2UoKS5udW1lcmljVmFsdWUoKSwgdG9rZW4udW5pdFR5cGUoKSk7CisgICAgfQorICAgIGlmICh0
b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4pIHsKKyAgICAgICAgaWYgKCFzaG91bGRBY2NlcHRV
bml0bGVzc0xlbmd0aCh0b2tlbi5udW1lcmljVmFsdWUoKSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxl
c3MpCisgICAgICAgICAgICB8fCAodmFsdWVSYW5nZSA9PSBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUg
JiYgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPCAwKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGUgdW5pdFR5cGUgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBpeGVsczsKKyAgICAgICAgaWYgKGNzc1BhcnNlck1vZGUg
PT0gU1ZHQXR0cmlidXRlTW9kZSkKKyAgICAgICAgICAgIHVuaXRUeXBlID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OlVuaXRUeXBlOjpVc2VyVW5pdHM7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1Zh
bHVlKCksIHVuaXRUeXBlKTsKKyAgICB9CisgICAgaWYgKGNzc1BhcnNlck1vZGUgPT0gU1ZHQXR0
cmlidXRlTW9kZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ2FsY1BhcnNlciBjYWxj
UGFyc2VyKHJhbmdlLCB2YWx1ZVJhbmdlKTsKKyAgICBpZiAoY2FsY1BhcnNlci52YWx1ZSgpICYm
IGNhbGNQYXJzZXIudmFsdWUoKS0+Y2F0ZWdvcnkoKSA9PSBDYWxjTGVuZ3RoKQorICAgICAgICBy
ZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lVmFsdWUoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVQZXJjZW50KENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9r
ZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gUGVyY2Vu
dGFnZVRva2VuKSB7CisgICAgICAgIGlmICh2YWx1ZVJhbmdlID09IFZhbHVlUmFuZ2VOb25OZWdh
dGl2ZSAmJiB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDApCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFuZ2UuY29u
c3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1lcmljVmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlOjpQZXJjZW50YWdlKTsKKyAgICB9CisgICAgQ2FsY1BhcnNlciBjYWxjUGFy
c2VyKHJhbmdlLCB2YWx1ZVJhbmdlKTsKKyAgICBpZiAoY29uc3QgQ1NTQ2FsY1ZhbHVlKiBjYWxj
dWxhdGlvbiA9IGNhbGNQYXJzZXIudmFsdWUoKSkgeworICAgICAgICBpZiAoY2FsY3VsYXRpb24t
PmNhdGVnb3J5KCkgPT0gQ2FsY1BlcmNlbnQpCisgICAgICAgICAgICByZXR1cm4gY2FsY1BhcnNl
ci5jb25zdW1lVmFsdWUoKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wg
Y2FuQ29uc3VtZUNhbGNWYWx1ZShDYWxjdWxhdGlvbkNhdGVnb3J5IGNhdGVnb3J5LCBDU1NQYXJz
ZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgaWYgKGNhdGVnb3J5ID09IENhbGNMZW5ndGgg
fHwgY2F0ZWdvcnkgPT0gQ2FsY1BlcmNlbnQgfHwgY2F0ZWdvcnkgPT0gQ2FsY1BlcmNlbnRMZW5n
dGgpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGNzc1BhcnNlck1vZGUgIT0gU1ZH
QXR0cmlidXRlTW9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGNhdGVnb3J5
ID09IENhbGNOdW1iZXIgfHwgY2F0ZWdvcnkgPT0gQ2FsY1BlcmNlbnROdW1iZXIgfHwgY2F0ZWdv
cnkgPT0gQ2FsY0xlbmd0aE51bWJlciB8fCBjYXRlZ29yeSA9PSBDYWxjUGVyY2VudExlbmd0aE51
bWJlcikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0NT
U1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2UgdmFsdWVS
YW5nZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKK3sKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tl
biYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBEaW1lbnNp
b25Ub2tlbiB8fCB0b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4pCisgICAgICAgIHJldHVybiBj
b25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB2YWx1ZVJhbmdlLCB1bml0bGVzcyk7
CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBQZXJjZW50YWdlVG9rZW4pCisgICAgICAgIHJldHVy
biBjb25zdW1lUGVyY2VudChyYW5nZSwgdmFsdWVSYW5nZSk7CisgICAgQ2FsY1BhcnNlciBjYWxj
UGFyc2VyKHJhbmdlLCB2YWx1ZVJhbmdlKTsKKyAgICBpZiAoY29uc3QgQ1NTQ2FsY1ZhbHVlKiBj
YWxjdWxhdGlvbiA9IGNhbGNQYXJzZXIudmFsdWUoKSkgeworICAgICAgICBpZiAoY2FuQ29uc3Vt
ZUNhbGNWYWx1ZShjYWxjdWxhdGlvbi0+Y2F0ZWdvcnkoKSwgY3NzUGFyc2VyTW9kZSkpCisgICAg
ICAgICAgICByZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lVmFsdWUoKTsKKyAgICB9CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lQW5nbGUoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2Vu
ID0gcmFuZ2UucGVlaygpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4p
IHsKKyAgICAgICAgc3dpdGNoICh0b2tlbi51bml0VHlwZSgpKSB7CisgICAgICAgIGNhc2UgQ1NT
UHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpEZWdyZWVzOgorICAgICAgICBjYXNlIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZTo6UmFkaWFuczoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVW
YWx1ZTo6VW5pdFR5cGU6OkdyYWRpYW5zOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZTo6VHVybnM6CisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgp
LCB0b2tlbi51bml0VHlwZSgpKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICB9CisgICAgfQorICAgIGlmICh0b2tlbi50eXBlKCkgPT0gTnVt
YmVyVG9rZW4gJiYgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPT0gMCkgeworICAgICAgICByYW5nZS5j
b25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZSgwLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkRlZ3JlZXMpOwor
ICAgIH0KKyAgICBDYWxjUGFyc2VyIGNhbGNQYXJzZXIocmFuZ2UsIFZhbHVlUmFuZ2VBbGwpOwor
ICAgIGlmIChjb25zdCBDU1NDYWxjVmFsdWUqIGNhbGN1bGF0aW9uID0gY2FsY1BhcnNlci52YWx1
ZSgpKSB7CisgICAgICAgIGlmIChjYWxjdWxhdGlvbi0+Y2F0ZWdvcnkoKSA9PSBDYWxjQW5nbGUp
CisgICAgICAgICAgICByZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lVmFsdWUoKTsKKyAgICB9Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lVGltZShD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgVmFsdWVSYW5nZSB2YWx1ZVJhbmdlKQoreworICAg
IGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICBpZiAodG9r
ZW4udHlwZSgpID09IERpbWVuc2lvblRva2VuKSB7CisgICAgICAgIGlmICh2YWx1ZVJhbmdlID09
IFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSAmJiB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDApCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlIHVuaXQgPSB0b2tlbi51bml0VHlwZSgpOworICAgICAgICBpZiAodW5pdCA9PSBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGU6Ok1pbGxpc2Vjb25kcyB8fCB1bml0ID09IENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZTo6U2Vjb25kcykKKyAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJp
Y1ZhbHVlKCksIHRva2VuLnVuaXRUeXBlKCkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisgICAgQ2FsY1BhcnNlciBjYWxjUGFyc2VyKHJhbmdlLCB2YWx1ZVJhbmdlKTsKKyAgICBp
ZiAoY29uc3QgQ1NTQ2FsY1ZhbHVlKiBjYWxjdWxhdGlvbiA9IGNhbGNQYXJzZXIudmFsdWUoKSkg
eworICAgICAgICBpZiAoY2FsY3VsYXRpb24tPmNhdGVnb3J5KCkgPT0gQ2FsY1RpbWUpCisgICAg
ICAgICAgICByZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lVmFsdWUoKTsKKyAgICB9CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lSWRlbnQoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgIT0g
SWRlbnRUb2tlbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNw
YWNlKCkuaWQoKSk7Cit9CisKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lSWRlbnRSYW5nZShD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTVmFsdWVJRCBsb3dlciwgQ1NTVmFsdWVJRCB1
cHBlcikKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPCBsb3dlciB8fCByYW5nZS5wZWVr
KCkuaWQoKSA+IHVwcGVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY29u
c3VtZUlkZW50KHJhbmdlKTsKK30KKworQ1NTQ3VzdG9tSWRlbnRWYWx1ZSogY29uc3VtZUN1c3Rv
bUlkZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVr
KCkudHlwZSgpICE9IElkZW50VG9rZW4gfHwgaXNDU1NXaWRlS2V5d29yZChyYW5nZS5wZWVrKCku
aWQoKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBDU1NDdXN0b21JZGVu
dFZhbHVlOjpjcmVhdGUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgp
LnRvU3RyaW5nKCkpOworfQorCitDU1NTdHJpbmdWYWx1ZSogY29uc3VtZVN0cmluZyhDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBT
dHJpbmdUb2tlbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIENTU1N0cmlu
Z1ZhbHVlOjpjcmVhdGUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgp
LnRvU3RyaW5nKCkpOworfQorCitTdHJpbmdWaWV3IGNvbnN1bWVVcmxBc1N0cmluZ1ZpZXcoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRv
a2VuID0gcmFuZ2UucGVlaygpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gVXJsVG9rZW4pIHsK
KyAgICAgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgcmV0
dXJuIHRva2VuLnZhbHVlKCk7CisgICAgfQorICAgIGlmICh0b2tlbi5mdW5jdGlvbklkKCkgPT0g
Q1NTVmFsdWVVcmwpIHsKKyAgICAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSB1cmxSYW5nZSA9IHJh
bmdlOworICAgICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHVybEFyZ3MgPSB1cmxSYW5nZS5jb25z
dW1lQmxvY2soKTsKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIG5leHQgPSB1cmxBcmdz
LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIGlmIChuZXh0LnR5cGUoKSA9
PSBCYWRTdHJpbmdUb2tlbiB8fCAhdXJsQXJncy5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJu
IFN0cmluZ1ZpZXcoKTsKKyAgICAgICAgQVNTRVJUKG5leHQudHlwZSgpID09IFN0cmluZ1Rva2Vu
KTsKKyAgICAgICAgcmFuZ2UgPSB1cmxSYW5nZTsKKyAgICAgICAgcmFuZ2UuY29uc3VtZVdoaXRl
c3BhY2UoKTsKKyAgICAgICAgcmV0dXJuIG5leHQudmFsdWUoKTsKKyAgICB9CisKKyAgICByZXR1
cm4gU3RyaW5nVmlldygpOworfQorCitDU1NVUklWYWx1ZSogY29uc3VtZVVybChDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBTdHJpbmdWaWV3IHVybCA9IGNvbnN1bWVVcmxBc1N0
cmluZ1ZpZXcocmFuZ2UpOworICAgIGlmICh1cmwuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBDU1NVUklWYWx1ZTo6Y3JlYXRlKHVybC50b1N0cmluZygpKTsK
K30KKworc3RhdGljIGludCBjbGFtcFJHQkNvbXBvbmVudChjb25zdCBDU1NQcmltaXRpdmVWYWx1
ZSYgdmFsdWUpCit7CisgICAgZG91YmxlIHJlc3VsdCA9IHZhbHVlLmdldERvdWJsZVZhbHVlKCk7
CisgICAgLy8gRklYTUU6IE11bHRpcGx5IGJ5IDIuNTUgYW5kIHJvdW5kIGluc3RlYWQgb2YgZmxv
b3IuCisgICAgaWYgKHZhbHVlLmlzUGVyY2VudGFnZSgpKQorICAgICAgICByZXN1bHQgKj0gMi41
NjsKKyAgICByZXR1cm4gY2xhbXBUbzxpbnQ+KHJlc3VsdCwgMCwgMjU1KTsKK30KKworc3RhdGlj
IGJvb2wgcGFyc2VSR0JQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBSR0JB
MzImIHJlc3VsdCwgYm9vbCBwYXJzZUFscGhhKQoreworICAgIEFTU0VSVChyYW5nZS5wZWVrKCku
ZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlUmdiIHx8IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkg
PT0gQ1NTVmFsdWVSZ2JhKTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1l
RnVuY3Rpb24ocmFuZ2UpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjb2xvclBhcmFtZXRlciA9
IGNvbnN1bWVJbnRlZ2VyKGFyZ3MpOworICAgIGlmICghY29sb3JQYXJhbWV0ZXIpCisgICAgICAg
IGNvbG9yUGFyYW1ldGVyID0gY29uc3VtZVBlcmNlbnQoYXJncywgVmFsdWVSYW5nZUFsbCk7Cisg
ICAgaWYgKCFjb2xvclBhcmFtZXRlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNvbnN0
IGJvb2wgaXNQZXJjZW50ID0gY29sb3JQYXJhbWV0ZXItPmlzUGVyY2VudGFnZSgpOworICAgIGlu
dCBjb2xvckFycmF5WzNdOworICAgIGNvbG9yQXJyYXlbMF0gPSBjbGFtcFJHQkNvbXBvbmVudCgq
Y29sb3JQYXJhbWV0ZXIpOworICAgIGZvciAoaW50IGkgPSAxOyBpIDwgMzsgaSsrKSB7CisgICAg
ICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY29sb3JQYXJhbWV0ZXIgPSBpc1BlcmNlbnQgPyBj
b25zdW1lUGVyY2VudChhcmdzLCBWYWx1ZVJhbmdlQWxsKSA6IGNvbnN1bWVJbnRlZ2VyKGFyZ3Mp
OworICAgICAgICBpZiAoIWNvbG9yUGFyYW1ldGVyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBjb2xvckFycmF5W2ldID0gY2xhbXBSR0JDb21wb25lbnQoKmNvbG9yUGFyYW1l
dGVyKTsKKyAgICB9CisgICAgaWYgKHBhcnNlQWxwaGEpIHsKKyAgICAgICAgaWYgKCFjb25zdW1l
Q29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBkb3VibGUgYWxwaGE7CisgICAgICAgIGlmICghY29uc3VtZU51bWJlclJhdyhh
cmdzLCBhbHBoYSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIC8vIENvbnZl
cnQgdGhlIGZsb2F0aW5nIHBvaW50ZXIgbnVtYmVyIG9mIGFscGhhIHRvIGFuIGludGVnZXIgaW4g
dGhlIHJhbmdlIFswLCAyNTYpLAorICAgICAgICAvLyB3aXRoIGFuIGVxdWFsIGRpc3RyaWJ1dGlv
biBhY3Jvc3MgYWxsIDI1NiB2YWx1ZXMuCisgICAgICAgIGludCBhbHBoYUNvbXBvbmVudCA9IHN0
YXRpY19jYXN0PGludD4oY2xhbXBUbzxkb3VibGU+KGFscGhhLCAwLjAsIDEuMCkgKiBuZXh0YWZ0
ZXIoMjU2LjAsIDAuMCkpOworICAgICAgICByZXN1bHQgPSBtYWtlUkdCQShjb2xvckFycmF5WzBd
LCBjb2xvckFycmF5WzFdLCBjb2xvckFycmF5WzJdLCBhbHBoYUNvbXBvbmVudCk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgcmVzdWx0ID0gbWFrZVJHQihjb2xvckFycmF5WzBdLCBjb2xvckFycmF5
WzFdLCBjb2xvckFycmF5WzJdKTsKKyAgICB9CisgICAgcmV0dXJuIGFyZ3MuYXRFbmQoKTsKK30K
Kworc3RhdGljIGJvb2wgcGFyc2VIU0xQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBSR0JBMzImIHJlc3VsdCwgYm9vbCBwYXJzZUFscGhhKQoreworICAgIEFTU0VSVChyYW5n
ZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlSHNsIHx8IHJhbmdlLnBlZWsoKS5mdW5j
dGlvbklkKCkgPT0gQ1NTVmFsdWVIc2xhKTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3Mg
PSBjb25zdW1lRnVuY3Rpb24ocmFuZ2UpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBoc2xWYWx1
ZSA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKCFoc2xWYWx1
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGRvdWJsZSBjb2xvckFycmF5WzNdOworICAg
IGNvbG9yQXJyYXlbMF0gPSAoKChoc2xWYWx1ZS0+Z2V0SW50VmFsdWUoKSAlIDM2MCkgKyAzNjAp
ICUgMzYwKSAvIDM2MC4wOworICAgIGZvciAoaW50IGkgPSAxOyBpIDwgMzsgaSsrKSB7CisgICAg
ICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaHNsVmFsdWUgPSBjb25zdW1lUGVyY2VudChhcmdz
LCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgaWYgKCFoc2xWYWx1ZSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgZG91YmxlIGRvdWJsZVZhbHVlID0gaHNsVmFsdWUtPmdldERv
dWJsZVZhbHVlKCk7CisgICAgICAgIGNvbG9yQXJyYXlbaV0gPSBjbGFtcFRvPGRvdWJsZT4oZG91
YmxlVmFsdWUsIDAuMCwgMTAwLjApIC8gMTAwLjA7IC8vIE5lZWRzIHRvIGJlIHZhbHVlIGJldHdl
ZW4gMCBhbmQgMS4wLgorICAgIH0KKyAgICBkb3VibGUgYWxwaGEgPSAxLjA7CisgICAgaWYgKHBh
cnNlQWxwaGEpIHsKKyAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNl
KGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWNvbnN1bWVO
dW1iZXJSYXcoYXJncywgYWxwaGEpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBhbHBoYSA9IGNsYW1wVG88ZG91YmxlPihhbHBoYSwgMC4wLCAxLjApOworICAgIH0KKyAgICBy
ZXN1bHQgPSBtYWtlUkdCQUZyb21IU0xBKGNvbG9yQXJyYXlbMF0sIGNvbG9yQXJyYXlbMV0sIGNv
bG9yQXJyYXlbMl0sIGFscGhhKTsKKyAgICByZXR1cm4gYXJncy5hdEVuZCgpOworfQorCitzdGF0
aWMgYm9vbCBwYXJzZUhleENvbG9yKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBSR0JBMzIm
IHJlc3VsdCwgYm9vbCBhY2NlcHRRdWlya3lDb2xvcnMpCit7CisgICAgY29uc3QgQ1NTUGFyc2Vy
VG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSGFz
aFRva2VuKSB7CisgICAgICAgIGlmICghQ29sb3I6OnBhcnNlSGV4Q29sb3IodG9rZW4udmFsdWUo
KSwgcmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IGVsc2UgaWYgKGFj
Y2VwdFF1aXJreUNvbG9ycykgeworICAgICAgICBTdHJpbmcgY29sb3I7CisgICAgICAgIGlmICh0
b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4gfHwgdG9rZW4udHlwZSgpID09IERpbWVuc2lvblRv
a2VuKSB7CisgICAgICAgICAgICBpZiAodG9rZW4ubnVtZXJpY1ZhbHVlVHlwZSgpICE9IEludGVn
ZXJWYWx1ZVR5cGUKKyAgICAgICAgICAgICAgICB8fCB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDAu
IHx8IHRva2VuLm51bWVyaWNWYWx1ZSgpID49IDEwMDAwMDAuKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICh0b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4p
IC8vIGUuZy4gMTEyMjMzCisgICAgICAgICAgICAgICAgY29sb3IgPSBTdHJpbmc6OmZvcm1hdCgi
JWQiLCBzdGF0aWNfY2FzdDxpbnQ+KHRva2VuLm51bWVyaWNWYWx1ZSgpKSk7CisgICAgICAgICAg
ICBlbHNlIC8vIGUuZy4gMDAwMUZGCisgICAgICAgICAgICAgICAgY29sb3IgPSBTdHJpbmc6Om51
bWJlcihzdGF0aWNfY2FzdDxpbnQ+KHRva2VuLm51bWVyaWNWYWx1ZSgpKSkgKyB0b2tlbi52YWx1
ZSgpLnRvU3RyaW5nKCk7CisgICAgICAgICAgICB3aGlsZSAoY29sb3IubGVuZ3RoKCkgPCA2KQor
ICAgICAgICAgICAgICAgIGNvbG9yID0gIjAiICsgY29sb3I7CisgICAgICAgIH0gZWxzZSBpZiAo
dG9rZW4udHlwZSgpID09IElkZW50VG9rZW4pIHsgLy8gZS5nLiBGRjAwMDAKKyAgICAgICAgICAg
IGNvbG9yID0gdG9rZW4udmFsdWUoKS50b1N0cmluZygpOworICAgICAgICB9CisgICAgICAgIHVu
c2lnbmVkIGxlbmd0aCA9IGNvbG9yLmxlbmd0aCgpOworICAgICAgICBpZiAobGVuZ3RoICE9IDMg
JiYgbGVuZ3RoICE9IDYpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICgh
Q29sb3I6OnBhcnNlSGV4Q29sb3IoY29sb3IsIHJlc3VsdCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBy
YW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgIHJldHVybiB0cnVlOworfQor
CitzdGF0aWMgYm9vbCBwYXJzZUNvbG9yRnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIFJHQkEzMiYgcmVzdWx0KQoreworICAgIENTU1ZhbHVlSUQgZnVuY3Rpb25JZCA9IHJhbmdl
LnBlZWsoKS5mdW5jdGlvbklkKCk7CisgICAgaWYgKGZ1bmN0aW9uSWQgPCBDU1NWYWx1ZVJnYiB8
fCBmdW5jdGlvbklkID4gQ1NTVmFsdWVIc2xhKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
Q1NTUGFyc2VyVG9rZW5SYW5nZSBjb2xvclJhbmdlID0gcmFuZ2U7CisgICAgaWYgKChmdW5jdGlv
bklkIDw9IENTU1ZhbHVlUmdiYSAmJiAhcGFyc2VSR0JQYXJhbWV0ZXJzKGNvbG9yUmFuZ2UsIHJl
c3VsdCwgZnVuY3Rpb25JZCA9PSBDU1NWYWx1ZVJnYmEpKQorICAgICAgICB8fCAoZnVuY3Rpb25J
ZCA+PSBDU1NWYWx1ZUhzbCAmJiAhcGFyc2VIU0xQYXJhbWV0ZXJzKGNvbG9yUmFuZ2UsIHJlc3Vs
dCwgZnVuY3Rpb25JZCA9PSBDU1NWYWx1ZUhzbGEpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJhbmdlID0gY29sb3JSYW5nZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworQ1NTVmFsdWUq
IGNvbnN1bWVDb2xvcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBj
c3NQYXJzZXJNb2RlLCBib29sIGFjY2VwdFF1aXJreUNvbG9ycykKK3sKKyAgICBDU1NWYWx1ZUlE
IGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgaWYgKFN0eWxlQ29sb3I6OmlzQ29sb3JLZXl3
b3JkKGlkKSkgeworICAgICAgICBpZiAoIWlzVmFsdWVBbGxvd2VkSW5Nb2RlKGlkLCBjc3NQYXJz
ZXJNb2RlKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gY29u
c3VtZUlkZW50KHJhbmdlKTsKKyAgICB9CisgICAgUkdCQTMyIGNvbG9yID0gQ29sb3I6OnRyYW5z
cGFyZW50OworICAgIGlmICghcGFyc2VIZXhDb2xvcihyYW5nZSwgY29sb3IsIGFjY2VwdFF1aXJr
eUNvbG9ycykgJiYgIXBhcnNlQ29sb3JGdW5jdGlvbihyYW5nZSwgY29sb3IpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gQ1NTQ29sb3JWYWx1ZTo6Y3JlYXRlKGNvbG9yKTsK
K30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lUG9zaXRpb25Db21wb25lbnQo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwg
VW5pdGxlc3NRdWlyayB1bml0bGVzcykKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSA9
PSBJZGVudFRva2VuKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlTGVmdCwg
Q1NTVmFsdWVUb3AsIENTU1ZhbHVlQm90dG9tLCBDU1NWYWx1ZVJpZ2h0LCBDU1NWYWx1ZUNlbnRl
cj4ocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQ
YXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsLCB1bml0bGVzcyk7Cit9CisKK3N0YXRpYyBib29sIGlz
SG9yaXpvbnRhbFBvc2l0aW9uS2V5d29yZE9ubHkoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZh
bHVlKQoreworICAgIHJldHVybiB2YWx1ZS5pc1ZhbHVlSUQoKSAmJiAodmFsdWUuZ2V0VmFsdWVJ
RCgpID09IENTU1ZhbHVlTGVmdCB8fCB2YWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVSaWdo
dCk7Cit9CisKK3N0YXRpYyBib29sIGlzVmVydGljYWxQb3NpdGlvbktleXdvcmRPbmx5KGNvbnN0
IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUuaXNWYWx1ZUlE
KCkgJiYgKHZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVRvcCB8fCB2YWx1ZS5nZXRWYWx1
ZUlEKCkgPT0gQ1NTVmFsdWVCb3R0b20pOworfQorCitzdGF0aWMgdm9pZCBwb3NpdGlvbkZyb21P
bmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUsIENTU1ZhbHVlKiYgcmVzdWx0WCwgQ1NT
VmFsdWUqJiByZXN1bHRZKQoreworICAgIGJvb2wgdmFsdWVBcHBsaWVzVG9ZQXhpc09ubHkgPSBp
c1ZlcnRpY2FsUG9zaXRpb25LZXl3b3JkT25seSgqdmFsdWUpOworICAgIHJlc3VsdFggPSB2YWx1
ZTsKKyAgICByZXN1bHRZID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NT
VmFsdWVDZW50ZXIpOworICAgIGlmICh2YWx1ZUFwcGxpZXNUb1lBeGlzT25seSkKKyAgICAgICAg
c3RkOjpzd2FwKHJlc3VsdFgsIHJlc3VsdFkpOworfQorCitzdGF0aWMgYm9vbCBwb3NpdGlvbkZy
b21Ud29WYWx1ZXMoQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlMSwgQ1NTUHJpbWl0aXZlVmFsdWUq
IHZhbHVlMiwKKyAgICBDU1NWYWx1ZSomIHJlc3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSkKK3sK
KyAgICBib29sIG11c3RPcmRlckFzWFkgPSBpc0hvcml6b250YWxQb3NpdGlvbktleXdvcmRPbmx5
KCp2YWx1ZTEpIHx8IGlzVmVydGljYWxQb3NpdGlvbktleXdvcmRPbmx5KCp2YWx1ZTIpCisgICAg
ICAgIHx8ICF2YWx1ZTEtPmlzVmFsdWVJRCgpIHx8ICF2YWx1ZTItPmlzVmFsdWVJRCgpOworICAg
IGJvb2wgbXVzdE9yZGVyQXNZWCA9IGlzVmVydGljYWxQb3NpdGlvbktleXdvcmRPbmx5KCp2YWx1
ZTEpIHx8IGlzSG9yaXpvbnRhbFBvc2l0aW9uS2V5d29yZE9ubHkoKnZhbHVlMik7CisgICAgaWYg
KG11c3RPcmRlckFzWFkgJiYgbXVzdE9yZGVyQXNZWCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJlc3VsdFggPSB2YWx1ZTE7CisgICAgcmVzdWx0WSA9IHZhbHVlMjsKKyAgICBpZiAobXVz
dE9yZGVyQXNZWCkKKyAgICAgICAgc3RkOjpzd2FwKHJlc3VsdFgsIHJlc3VsdFkpOworICAgIHJl
dHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBwb3NpdGlvbkZyb21UaHJlZU9yRm91clZhbHVl
cyhDU1NQcmltaXRpdmVWYWx1ZSoqIHZhbHVlcywgQ1NTVmFsdWUqJiByZXN1bHRYLCBDU1NWYWx1
ZSomIHJlc3VsdFkpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNlbnRlciA9IG51bGxwdHI7
CisgICAgZm9yIChpbnQgaSA9IDA7IHZhbHVlc1tpXTsgaSsrKSB7CisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBjdXJyZW50VmFsdWUgPSB2YWx1ZXNbaV07CisgICAgICAgIGlmICghY3VycmVu
dFZhbHVlLT5pc1ZhbHVlSUQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
Q1NTVmFsdWVJRCBpZCA9IGN1cnJlbnRWYWx1ZS0+Z2V0VmFsdWVJRCgpOworCisgICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZUNlbnRlcikgeworICAgICAgICAgICAgaWYgKGNlbnRlcikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBjZW50ZXIgPSBjdXJyZW50VmFs
dWU7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIENTU1ZhbHVl
KiByZXN1bHQgPSBudWxscHRyOworICAgICAgICBpZiAodmFsdWVzW2kgKyAxXSAmJiAhdmFsdWVz
W2kgKyAxXS0+aXNWYWx1ZUlEKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IENTU1ZhbHVlUGFp
cjo6Y3JlYXRlKGN1cnJlbnRWYWx1ZSwgdmFsdWVzWysraV0sIENTU1ZhbHVlUGFpcjo6S2VlcElk
ZW50aWNhbFZhbHVlcyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXN1bHQgPSBj
dXJyZW50VmFsdWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVMZWZ0
IHx8IGlkID09IENTU1ZhbHVlUmlnaHQpIHsKKyAgICAgICAgICAgIGlmIChyZXN1bHRYKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJlc3VsdFggPSByZXN1bHQ7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQoaWQgPT0gQ1NTVmFsdWVUb3Ag
fHwgaWQgPT0gQ1NTVmFsdWVCb3R0b20pOworICAgICAgICAgICAgaWYgKHJlc3VsdFkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmVzdWx0WSA9IHJlc3VsdDsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChjZW50ZXIpIHsKKyAgICAgICAgQVNTRVJUKHJl
c3VsdFggfHwgcmVzdWx0WSk7CisgICAgICAgIGlmIChyZXN1bHRYICYmIHJlc3VsdFkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghcmVzdWx0WCkKKyAgICAgICAgICAg
IHJlc3VsdFggPSBjZW50ZXI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdFkgPSBj
ZW50ZXI7CisgICAgfQorCisgICAgQVNTRVJUKHJlc3VsdFggJiYgcmVzdWx0WSk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKKy8vIEZJWE1FOiBUaGlzIG1heSBjb25zdW1lIGZyb20gdGhlIHJhbmdl
IHVwb24gZmFpbHVyZS4gVGhlIGJhY2tncm91bmQKKy8vIHNob3J0aGFuZCB3b3JrcyBhcm91bmQg
aXQsIGJ1dCB3ZSBzaG91bGQganVzdCBmaXggaXQgaGVyZS4KK2Jvb2wgY29uc3VtZVBvc2l0aW9u
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUs
IFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MsIENTU1ZhbHVlKiYgcmVzdWx0WCwgQ1NTVmFsdWUqJiBy
ZXN1bHRZKQoreworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZTEgPSBjb25zdW1lUG9zaXRp
b25Db21wb25lbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKTsKKyAgICBpZiAoIXZh
bHVlMSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZh
bHVlMiA9IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5p
dGxlc3MpOworICAgIGlmICghdmFsdWUyKSB7CisgICAgICAgIHBvc2l0aW9uRnJvbU9uZVZhbHVl
KHZhbHVlMSwgcmVzdWx0WCwgcmVzdWx0WSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZTMgPSBjb25zdW1lUG9zaXRpb25Db21wb25l
bnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKTsKKyAgICBpZiAoIXZhbHVlMykKKyAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uRnJvbVR3b1ZhbHVlcyh2YWx1ZTEsIHZhbHVlMiwgcmVzdWx0
WCwgcmVzdWx0WSk7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWU0ID0gY29uc3VtZVBv
c2l0aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7CisgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHZhbHVlc1s1XTsKKyAgICB2YWx1ZXNbMF0gPSB2YWx1ZTE7CisgICAg
dmFsdWVzWzFdID0gdmFsdWUyOworICAgIHZhbHVlc1syXSA9IHZhbHVlMzsKKyAgICB2YWx1ZXNb
M10gPSB2YWx1ZTQ7CisgICAgdmFsdWVzWzRdID0gbnVsbHB0cjsKKyAgICByZXR1cm4gcG9zaXRp
b25Gcm9tVGhyZWVPckZvdXJWYWx1ZXModmFsdWVzLCByZXN1bHRYLCByZXN1bHRZKTsKK30KKwor
Q1NTVmFsdWVQYWlyKiBjb25zdW1lUG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Us
IENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKK3sK
KyAgICBDU1NWYWx1ZSogcmVzdWx0WCA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIHJlc3VsdFkg
PSBudWxscHRyOworICAgIGlmIChjb25zdW1lUG9zaXRpb24ocmFuZ2UsIGNzc1BhcnNlck1vZGUs
IHVuaXRsZXNzLCByZXN1bHRYLCByZXN1bHRZKSkKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVlUGFp
cjo6Y3JlYXRlKHJlc3VsdFgsIHJlc3VsdFksIENTU1ZhbHVlUGFpcjo6S2VlcElkZW50aWNhbFZh
bHVlcyk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wgY29uc3VtZU9uZU9yVHdvVmFs
dWVkUG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3Nz
UGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcywgQ1NTVmFsdWUqJiByZXN1bHRYLCBD
U1NWYWx1ZSomIHJlc3VsdFkpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlMSA9IGNv
bnN1bWVQb3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpOwor
ICAgIGlmICghdmFsdWUxKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHZhbHVlMiA9IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2Vy
TW9kZSwgdW5pdGxlc3MpOworICAgIGlmICghdmFsdWUyKSB7CisgICAgICAgIHBvc2l0aW9uRnJv
bU9uZVZhbHVlKHZhbHVlMSwgcmVzdWx0WCwgcmVzdWx0WSk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICByZXR1cm4gcG9zaXRpb25Gcm9tVHdvVmFsdWVzKHZhbHVlMSwgdmFsdWUy
LCByZXN1bHRYLCByZXN1bHRZKTsKK30KKworLy8gVGhpcyBzaG91bGQgZ28gYXdheSBvbmNlIHdl
IGRyb3Agc3VwcG9ydCBmb3IgLXdlYmtpdC1ncmFkaWVudAorc3RhdGljIENTU1ByaW1pdGl2ZVZh
bHVlKiBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50UG9pbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
YXJncywgYm9vbCBob3Jpem9udGFsKQoreworICAgIGlmIChhcmdzLnBlZWsoKS50eXBlKCkgPT0g
SWRlbnRUb2tlbikgeworICAgICAgICBpZiAoKGhvcml6b250YWwgJiYgY29uc3VtZUlkZW50PENT
U1ZhbHVlTGVmdD4oYXJncykpIHx8ICghaG9yaXpvbnRhbCAmJiBjb25zdW1lSWRlbnQ8Q1NTVmFs
dWVUb3A+KGFyZ3MpKSkKKyAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKDAuLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBlcmNlbnRhZ2UpOworICAgICAg
ICBpZiAoKGhvcml6b250YWwgJiYgY29uc3VtZUlkZW50PENTU1ZhbHVlUmlnaHQ+KGFyZ3MpKSB8
fCAoIWhvcml6b250YWwgJiYgY29uc3VtZUlkZW50PENTU1ZhbHVlQm90dG9tPihhcmdzKSkpCisg
ICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxMDAuLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBlcmNlbnRhZ2UpOworICAgICAgICBpZiAoY29uc3VtZUlk
ZW50PENTU1ZhbHVlQ2VudGVyPihhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKDUwLiwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQZXJjZW50
YWdlKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiByZXN1bHQgPSBjb25zdW1lUGVyY2VudChhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBp
ZiAoIXJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0gY29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJh
bmdlQWxsKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvLyBVc2VkIHRvIHBhcnNlIGNvbG9y
cyBmb3IgLXdlYmtpdC1ncmFkaWVudCguLi4pLgorc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lRGVw
cmVjYXRlZEdyYWRpZW50U3RvcENvbG9yKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1Bh
cnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAoYXJncy5wZWVrKCkuaWQoKSA9PSBD
U1NWYWx1ZUN1cnJlbnRjb2xvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IGNvbnN1bWVDb2xvcihhcmdzLCBjc3NQYXJzZXJNb2RlKTsKK30KKworc3RhdGljIGJvb2wgY29u
c3VtZURlcHJlY2F0ZWRHcmFkaWVudENvbG9yU3RvcChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgQ1NTR3JhZGllbnRDb2xvclN0b3AmIHN0b3AsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9k
ZSkKK3sKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKTsKKyAg
ICBpZiAoaWQgIT0gQ1NTVmFsdWVGcm9tICYmIGlkICE9IENTU1ZhbHVlVG8gJiYgaWQgIT0gQ1NT
VmFsdWVDb2xvclN0b3ApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENTU1BhcnNlclRv
a2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7CisgICAgZG91YmxlIHBvc2l0
aW9uOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZUZyb20gfHwgaWQgPT0gQ1NTVmFsdWVUbykgewor
ICAgICAgICBwb3NpdGlvbiA9IChpZCA9PSBDU1NWYWx1ZUZyb20pID8gMCA6IDE7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgRENIRUNLKGlkID09IENTU1ZhbHVlQ29sb3JTdG9wKTsKKyAgICAgICAg
Y29uc3QgQ1NTUGFyc2VyVG9rZW4mIGFyZyA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3Bh
Y2UoKTsKKyAgICAgICAgaWYgKGFyZy50eXBlKCkgPT0gUGVyY2VudGFnZVRva2VuKQorICAgICAg
ICAgICAgcG9zaXRpb24gPSBhcmcubnVtZXJpY1ZhbHVlKCkgLyAxMDAuMDsKKyAgICAgICAgZWxz
ZSBpZiAoYXJnLnR5cGUoKSA9PSBOdW1iZXJUb2tlbikKKyAgICAgICAgICAgIHBvc2l0aW9uID0g
YXJnLm51bWVyaWNWYWx1ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3Mp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN0b3AubV9wb3NpdGlv
biA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocG9zaXRpb24sIENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZTo6TnVtYmVyKTsKKyAgICBzdG9wLm1fY29sb3IgPSBjb25zdW1lRGVwcmVjYXRl
ZEdyYWRpZW50U3RvcENvbG9yKGFyZ3MsIGNzc1BhcnNlck1vZGUpOworICAgIHJldHVybiBzdG9w
Lm1fY29sb3IgJiYgYXJncy5hdEVuZCgpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVE
ZXByZWNhdGVkR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlKQoreworICAgIENTU0dyYWRpZW50VmFsdWUqIHJlc3VsdCA9IG51bGxw
dHI7CisgICAgQ1NTVmFsdWVJRCBpZCA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2Uo
KS5pZCgpOworICAgIGJvb2wgaXNEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQgPSAoaWQgPT0gQ1NT
VmFsdWVSYWRpYWwpOworICAgIGlmIChpc0RlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCkKKyAgICAg
ICAgcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJlcGVhdGluZywg
Q1NTRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KTsKKyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1
ZUxpbmVhcikKKyAgICAgICAgcmVzdWx0ID0gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRl
KE5vblJlcGVhdGluZywgQ1NTRGVwcmVjYXRlZExpbmVhckdyYWRpZW50KTsKKyAgICBpZiAoIXJl
c3VsdCB8fCAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcG9pbnQgPSBjb25zdW1l
RGVwcmVjYXRlZEdyYWRpZW50UG9pbnQoYXJncywgdHJ1ZSk7CisgICAgaWYgKCFwb2ludCkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmVzdWx0LT5zZXRGaXJzdFgocG9pbnQpOworICAg
IHBvaW50ID0gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudFBvaW50KGFyZ3MsIGZhbHNlKTsKKyAg
ICBpZiAoIXBvaW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXN1bHQtPnNldEZp
cnN0WShwb2ludCk7CisKKyAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2Uo
YXJncykpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gRm9yIHJhZGlhbCBncmFk
aWVudHMgb25seSwgd2Ugbm93IGV4cGVjdCBhIG51bWVyaWMgcmFkaXVzLgorICAgIGlmIChpc0Rl
cHJlY2F0ZWRSYWRpYWxHcmFkaWVudCkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcmFk
aXVzID0gY29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgaWYgKCFy
YWRpdXMgfHwgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgdG9DU1NSYWRpYWxHcmFkaWVudFZhbHVlKHJl
c3VsdCktPnNldEZpcnN0UmFkaXVzKHJhZGl1cyk7CisgICAgfQorCisgICAgcG9pbnQgPSBjb25z
dW1lRGVwcmVjYXRlZEdyYWRpZW50UG9pbnQoYXJncywgdHJ1ZSk7CisgICAgaWYgKCFwb2ludCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmVzdWx0LT5zZXRTZWNvbmRYKHBvaW50KTsK
KyAgICBwb2ludCA9IGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnRQb2ludChhcmdzLCBmYWxzZSk7
CisgICAgaWYgKCFwb2ludCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmVzdWx0LT5z
ZXRTZWNvbmRZKHBvaW50KTsKKworICAgIC8vIEZvciByYWRpYWwgZ3JhZGllbnRzIG9ubHksIHdl
IG5vdyBleHBlY3QgdGhlIHNlY29uZCByYWRpdXMuCisgICAgaWYgKGlzRGVwcmVjYXRlZFJhZGlh
bEdyYWRpZW50KSB7CisgICAgICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFj
ZShhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcmFkaXVzID0gY29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKKyAg
ICAgICAgaWYgKCFyYWRpdXMpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
dG9DU1NSYWRpYWxHcmFkaWVudFZhbHVlKHJlc3VsdCktPnNldFNlY29uZFJhZGl1cyhyYWRpdXMp
OworICAgIH0KKworICAgIENTU0dyYWRpZW50Q29sb3JTdG9wIHN0b3A7CisgICAgd2hpbGUgKGNv
bnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpIHsKKyAgICAgICAgaWYgKCFjb25z
dW1lRGVwcmVjYXRlZEdyYWRpZW50Q29sb3JTdG9wKGFyZ3MsIHN0b3AsIGNzc1BhcnNlck1vZGUp
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJlc3VsdC0+YWRkU3RvcChz
dG9wKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgYm9vbCBjb25z
dW1lR3JhZGllbnRDb2xvclN0b3BzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJz
ZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU0dyYWRpZW50VmFsdWUqIGdyYWRpZW50KQoreworICAg
IGJvb2wgc3VwcG9ydHNDb2xvckhpbnRzID0gZ3JhZGllbnQtPmdyYWRpZW50VHlwZSgpID09IENT
U0xpbmVhckdyYWRpZW50IHx8IGdyYWRpZW50LT5ncmFkaWVudFR5cGUoKSA9PSBDU1NSYWRpYWxH
cmFkaWVudDsKKworICAgIC8vIFRoZSBmaXJzdCBjb2xvciBzdG9wIGNhbm5vdCBiZSBhIGNvbG9y
IGhpbnQuCisgICAgYm9vbCBwcmV2aW91c1N0b3BXYXNDb2xvckhpbnQgPSB0cnVlOworICAgIGRv
IHsKKyAgICAgICAgQ1NTR3JhZGllbnRDb2xvclN0b3Agc3RvcDsKKyAgICAgICAgc3RvcC5tX2Nv
bG9yID0gY29uc3VtZUNvbG9yKHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKKyAgICAgICAgLy8gVHdv
IGhpbnRzIGluIGEgcm93IGFyZSBub3QgYWxsb3dlZC4KKyAgICAgICAgaWYgKCFzdG9wLm1fY29s
b3IgJiYgKCFzdXBwb3J0c0NvbG9ySGludHMgfHwgcHJldmlvdXNTdG9wV2FzQ29sb3JIaW50KSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcHJldmlvdXNTdG9wV2FzQ29sb3JI
aW50ID0gIXN0b3AubV9jb2xvcjsKKyAgICAgICAgc3RvcC5tX3Bvc2l0aW9uID0gY29uc3VtZUxl
bmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAg
ICAgIGlmICghc3RvcC5tX2NvbG9yICYmICFzdG9wLm1fcG9zaXRpb24pCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGdyYWRpZW50LT5hZGRTdG9wKHN0b3ApOworICAgIH0gd2hp
bGUgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKTsKKworICAgIC8vIFRo
ZSBsYXN0IGNvbG9yIHN0b3AgY2Fubm90IGJlIGEgY29sb3IgaGludC4KKyAgICBpZiAocHJldmlv
dXNTdG9wV2FzQ29sb3JIaW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNdXN0
IGhhdmUgMiBvciBtb3JlIHN0b3BzIHRvIGJlIHZhbGlkLgorICAgIHJldHVybiBncmFkaWVudC0+
c3RvcENvdW50KCkgPj0gMjsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lRGVwcmVjYXRl
ZFJhZGlhbEdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlck1vZGUg
Y3NzUGFyc2VyTW9kZSwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nKQoreworICAgIENTU1Jh
ZGlhbEdyYWRpZW50VmFsdWUqIHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0
ZShyZXBlYXRpbmcsIENTU1ByZWZpeGVkUmFkaWFsR3JhZGllbnQpOworICAgIENTU1ZhbHVlKiBj
ZW50ZXJYID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogY2VudGVyWSA9IG51bGxwdHI7CisgICAg
Y29uc3VtZU9uZU9yVHdvVmFsdWVkUG9zaXRpb24oYXJncywgY3NzUGFyc2VyTW9kZSwgVW5pdGxl
c3NRdWlyazo6Rm9yYmlkLCBjZW50ZXJYLCBjZW50ZXJZKTsKKyAgICBpZiAoKGNlbnRlclggfHwg
Y2VudGVyWSkgJiYgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgcmVzdWx0LT5zZXRGaXJzdFgodG9DU1NQcmltaXRp
dmVWYWx1ZShjZW50ZXJYKSk7CisgICAgcmVzdWx0LT5zZXRTZWNvbmRYKHRvQ1NTUHJpbWl0aXZl
VmFsdWUoY2VudGVyWCkpOworICAgIHJlc3VsdC0+c2V0Rmlyc3RZKHRvQ1NTUHJpbWl0aXZlVmFs
dWUoY2VudGVyWSkpOworICAgIHJlc3VsdC0+c2V0U2Vjb25kWSh0b0NTU1ByaW1pdGl2ZVZhbHVl
KGNlbnRlclkpKTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzaGFwZSA9IGNvbnN1bWVJZGVu
dDxDU1NWYWx1ZUNpcmNsZSwgQ1NTVmFsdWVFbGxpcHNlPihhcmdzKTsKKyAgICBDU1NQcmltaXRp
dmVWYWx1ZSogc2l6ZUtleXdvcmQgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVDbG9zZXN0U2lkZSwg
Q1NTVmFsdWVDbG9zZXN0Q29ybmVyLCBDU1NWYWx1ZUZhcnRoZXN0U2lkZSwgQ1NTVmFsdWVGYXJ0
aGVzdENvcm5lciwgQ1NTVmFsdWVDb250YWluLCBDU1NWYWx1ZUNvdmVyPihhcmdzKTsKKyAgICBp
ZiAoIXNoYXBlKQorICAgICAgICBzaGFwZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUNpcmNsZSwg
Q1NTVmFsdWVFbGxpcHNlPihhcmdzKTsKKyAgICByZXN1bHQtPnNldFNoYXBlKHNoYXBlKTsKKyAg
ICByZXN1bHQtPnNldFNpemluZ0JlaGF2aW9yKHNpemVLZXl3b3JkKTsKKworICAgIC8vIE9yLCB0
d28gbGVuZ3RocyBvciBwZXJjZW50YWdlcworICAgIGlmICghc2hhcGUgJiYgIXNpemVLZXl3b3Jk
KSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBob3Jpem9udGFsU2l6ZSA9IGNvbnN1bWVM
ZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2ZXJ0aWNhbFNpemUgPSBudWxscHRyOworICAgICAgICBp
ZiAoaG9yaXpvbnRhbFNpemUpIHsKKyAgICAgICAgICAgIHZlcnRpY2FsU2l6ZSA9IGNvbnN1bWVM
ZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAg
ICAgICAgICBpZiAoIXZlcnRpY2FsU2l6ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgICAgIGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncyk7Cisg
ICAgICAgICAgICByZXN1bHQtPnNldEVuZEhvcml6b250YWxTaXplKGhvcml6b250YWxTaXplKTsK
KyAgICAgICAgICAgIHJlc3VsdC0+c2V0RW5kVmVydGljYWxTaXplKHZlcnRpY2FsU2l6ZSk7Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0
ZXNwYWNlKGFyZ3MpOworICAgIH0KKyAgICBpZiAoIWNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMo
YXJncywgY3NzUGFyc2VyTW9kZSwgcmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVSYWRpYWxH
cmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNl
ck1vZGUsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykKK3sKKyAgICBDU1NSYWRpYWxHcmFk
aWVudFZhbHVlKiByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0
aW5nLCBDU1NSYWRpYWxHcmFkaWVudCk7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2hhcGUg
PSBudWxscHRyOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzaXplS2V5d29yZCA9IG51bGxwdHI7
CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGhvcml6b250YWxTaXplID0gbnVsbHB0cjsKKyAgICBD
U1NQcmltaXRpdmVWYWx1ZSogdmVydGljYWxTaXplID0gbnVsbHB0cjsKKworICAgIC8vIEZpcnN0
IHBhcnQgb2YgZ3JhbW1hciwgdGhlIHNpemUvc2hhcGUgY2xhdXNlOgorICAgIC8vIFsgY2lyY2xl
IHx8IDxsZW5ndGg+IF0gfAorICAgIC8vIFsgZWxsaXBzZSB8fCBbIDxsZW5ndGg+IHwgPHBlcmNl
bnRhZ2U+IF17Mn0gXSB8CisgICAgLy8gWyBbIGNpcmNsZSB8IGVsbGlwc2VdIHx8IDxzaXplLWtl
eXdvcmQ+IF0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkgeworICAgICAgICBpZiAo
YXJncy5wZWVrKCkudHlwZSgpID09IElkZW50VG9rZW4pIHsKKyAgICAgICAgICAgIENTU1ZhbHVl
SUQgaWQgPSBhcmdzLnBlZWsoKS5pZCgpOworICAgICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
Q2lyY2xlIHx8IGlkID09IENTU1ZhbHVlRWxsaXBzZSkgeworICAgICAgICAgICAgICAgIGlmIChz
aGFwZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAg
ICAgc2hhcGUgPSBjb25zdW1lSWRlbnQoYXJncyk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlk
ID09IENTU1ZhbHVlQ2xvc2VzdFNpZGUgfHwgaWQgPT0gQ1NTVmFsdWVDbG9zZXN0Q29ybmVyIHx8
IGlkID09IENTU1ZhbHVlRmFydGhlc3RTaWRlIHx8IGlkID09IENTU1ZhbHVlRmFydGhlc3RDb3Ju
ZXIpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2l6ZUtleXdvcmQpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAgIHNpemVLZXl3b3JkID0gY29uc3Vt
ZUlkZW50KGFyZ3MpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBjZW50ZXIgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNzc1BhcnNl
ck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICAgICAgaWYgKCFjZW50ZXIpCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoaG9yaXpvbnRhbFNpemUpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBob3Jpem9udGFsU2l6ZSA9IGNl
bnRlcjsKKyAgICAgICAgICAgIGNlbnRlciA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywg
Y3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgICAgICBpZiAoY2VudGVyKSB7
CisgICAgICAgICAgICAgICAgdmVydGljYWxTaXplID0gY2VudGVyOworICAgICAgICAgICAgICAg
ICsraTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFlvdSBjYW4g
c3BlY2lmeSBzaXplIGFzIGEga2V5d29yZCBvciBhIGxlbmd0aC9wZXJjZW50YWdlLCBub3QgYm90
aC4KKyAgICBpZiAoc2l6ZUtleXdvcmQgJiYgaG9yaXpvbnRhbFNpemUpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIC8vIENpcmNsZXMgbXVzdCBoYXZlIDAgb3IgMSBsZW5ndGhzLgorICAg
IGlmIChzaGFwZSAmJiBzaGFwZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQ2lyY2xlICYmIHZl
cnRpY2FsU2l6ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgLy8gRWxsaXBzZXMgbXVz
dCBoYXZlIDAgb3IgMiBsZW5ndGgvcGVyY2VudGFnZXMuCisgICAgaWYgKHNoYXBlICYmIHNoYXBl
LT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVFbGxpcHNlICYmIGhvcml6b250YWxTaXplICYmICF2
ZXJ0aWNhbFNpemUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIC8vIElmIHRoZXJlJ3Mg
b25seSBvbmUgc2l6ZSwgaXQgbXVzdCBiZSBhIGxlbmd0aC4KKyAgICBpZiAoIXZlcnRpY2FsU2l6
ZSAmJiBob3Jpem9udGFsU2l6ZSAmJiBob3Jpem9udGFsU2l6ZS0+aXNQZXJjZW50YWdlKCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICgoaG9yaXpvbnRhbFNpemUgJiYgaG9yaXpv
bnRhbFNpemUtPmlzQ2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoKCkpCisgICAgICAgIHx8
ICh2ZXJ0aWNhbFNpemUgJiYgdmVydGljYWxTaXplLT5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0
aExlbmd0aCgpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXN1bHQtPnNldFNo
YXBlKHNoYXBlKTsKKyAgICByZXN1bHQtPnNldFNpemluZ0JlaGF2aW9yKHNpemVLZXl3b3JkKTsK
KyAgICByZXN1bHQtPnNldEVuZEhvcml6b250YWxTaXplKGhvcml6b250YWxTaXplKTsKKyAgICBy
ZXN1bHQtPnNldEVuZFZlcnRpY2FsU2l6ZSh2ZXJ0aWNhbFNpemUpOworCisgICAgQ1NTVmFsdWUq
IGNlbnRlclggPSBudWxscHRyOworICAgIENTU1ZhbHVlKiBjZW50ZXJZID0gbnVsbHB0cjsKKyAg
ICBpZiAoYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF0KSB7CisgICAgICAgIGFyZ3MuY29u
c3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgY29uc3VtZVBvc2l0aW9uKGFyZ3Ms
IGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgY2VudGVyWCwgY2VudGVyWSk7
CisgICAgICAgIGlmICghKGNlbnRlclggJiYgY2VudGVyWSkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgcmVzdWx0LT5zZXRGaXJzdFgoY2VudGVyWCk7CisgICAgICAgIHJl
c3VsdC0+c2V0Rmlyc3RZKGNlbnRlclkpOworICAgICAgICAvLyBSaWdodCBub3csIENTUyByYWRp
YWwgZ3JhZGllbnRzIGhhdmUgdGhlIHNhbWUgc3RhcnQgYW5kIGVuZCBjZW50ZXJzLgorICAgICAg
ICByZXN1bHQtPnNldFNlY29uZFgoY2VudGVyWCk7CisgICAgICAgIHJlc3VsdC0+c2V0U2Vjb25k
WShjZW50ZXJZKTsKKyAgICB9CisKKyAgICBpZiAoKHNoYXBlIHx8IHNpemVLZXl3b3JkIHx8IGhv
cml6b250YWxTaXplIHx8IGNlbnRlclggfHwgY2VudGVyWSkgJiYgIWNvbnN1bWVDb21tYUluY2x1
ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICgh
Y29uc3VtZUdyYWRpZW50Q29sb3JTdG9wcyhhcmdzLCBjc3NQYXJzZXJNb2RlLCByZXN1bHQpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMg
Q1NTVmFsdWUqIGNvbnN1bWVMaW5lYXJHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdz
LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGlu
ZywgQ1NTR3JhZGllbnRUeXBlIGdyYWRpZW50VHlwZSkKK3sKKyAgICBDU1NMaW5lYXJHcmFkaWVu
dFZhbHVlKiByZXN1bHQgPSBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5n
LCBncmFkaWVudFR5cGUpOworCisgICAgYm9vbCBleHBlY3RDb21tYSA9IHRydWU7CisgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIGFuZ2xlID0gY29uc3VtZUFuZ2xlKGFyZ3MpOworICAgIGlmIChhbmds
ZSkgeworICAgICAgICByZXN1bHQtPnNldEFuZ2xlKGFuZ2xlKTsKKyAgICB9IGVsc2UgaWYgKGdy
YWRpZW50VHlwZSA9PSBDU1NQcmVmaXhlZExpbmVhckdyYWRpZW50IHx8IGNvbnN1bWVJZGVudDxD
U1NWYWx1ZVRvPihhcmdzKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogZW5kWCA9IGNv
bnN1bWVJZGVudDxDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KGFyZ3MpOworICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogZW5kWSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUJvdHRvbSwgQ1NT
VmFsdWVUb3A+KGFyZ3MpOworICAgICAgICBpZiAoIWVuZFggJiYgIWVuZFkpIHsKKyAgICAgICAg
ICAgIGlmIChncmFkaWVudFR5cGUgPT0gQ1NTTGluZWFyR3JhZGllbnQpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBlbmRZID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVUb3ApOworICAgICAgICAgICAgZXhwZWN0Q29tbWEg
PSBmYWxzZTsKKyAgICAgICAgfSBlbHNlIGlmICghZW5kWCkgeworICAgICAgICAgICAgZW5kWCA9
IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KGFyZ3MpOworICAgICAg
ICB9CisKKyAgICAgICAgcmVzdWx0LT5zZXRGaXJzdFgoZW5kWCk7CisgICAgICAgIHJlc3VsdC0+
c2V0Rmlyc3RZKGVuZFkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGV4cGVjdENvbW1hID0gZmFs
c2U7CisgICAgfQorCisgICAgaWYgKGV4cGVjdENvbW1hICYmICFjb25zdW1lQ29tbWFJbmNsdWRp
bmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWNv
bnN1bWVHcmFkaWVudENvbG9yU3RvcHMoYXJncywgY3NzUGFyc2VyTW9kZSwgcmVzdWx0KSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQ1NTVmFsdWUq
IGNvbnN1bWVJbWFnZU9yTm9uZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2Vy
Q29udGV4dCBjb250ZXh0KQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1
ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBj
b25zdW1lSW1hZ2UocmFuZ2UsIGNvbnRleHQpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1
bWVDcm9zc0ZhZGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyQ29udGV4dCBj
b250ZXh0KQoreworICAgIENTU1ZhbHVlKiBmcm9tSW1hZ2VWYWx1ZSA9IGNvbnN1bWVJbWFnZU9y
Tm9uZShhcmdzLCBjb250ZXh0KTsKKyAgICBpZiAoIWZyb21JbWFnZVZhbHVlIHx8ICFjb25zdW1l
Q29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBDU1NWYWx1ZSogdG9JbWFnZVZhbHVlID0gY29uc3VtZUltYWdlT3JOb25lKGFyZ3MsIGNv
bnRleHQpOworICAgIGlmICghdG9JbWFnZVZhbHVlIHx8ICFjb25zdW1lQ29tbWFJbmNsdWRpbmdX
aGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwZXJjZW50YWdlID0gbnVsbHB0cjsKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tl
biYgcGVyY2VudGFnZUFyZyA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAg
ICBpZiAocGVyY2VudGFnZUFyZy50eXBlKCkgPT0gUGVyY2VudGFnZVRva2VuKQorICAgICAgICBw
ZXJjZW50YWdlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShjbGFtcFRvPGRvdWJsZT4ocGVy
Y2VudGFnZUFyZy5udW1lcmljVmFsdWUoKSAvIDEwMCwgMCwgMSksIENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZTo6TnVtYmVyKTsKKyAgICBlbHNlIGlmIChwZXJjZW50YWdlQXJnLnR5cGUoKSA9
PSBOdW1iZXJUb2tlbikKKyAgICAgICAgcGVyY2VudGFnZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUoY2xhbXBUbzxkb3VibGU+KHBlcmNlbnRhZ2VBcmcubnVtZXJpY1ZhbHVlKCksIDAsIDEp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6Ok51bWJlcik7CisKKyAgICBpZiAoIXBlcmNl
bnRhZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBDU1NDcm9zc2ZhZGVW
YWx1ZTo6Y3JlYXRlKGZyb21JbWFnZVZhbHVlLCB0b0ltYWdlVmFsdWUsIHBlcmNlbnRhZ2UpOwor
fQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVQYWludChDU1NQYXJzZXJUb2tlblJhbmdlJiBh
cmdzLCBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQpCit7CisgICAgRENIRUNLKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmNzc1BhaW50QVBJRW5hYmxlZCgpKTsKKworICAgIENTU0N1c3RvbUlkZW50
VmFsdWUqIG5hbWUgPSBjb25zdW1lQ3VzdG9tSWRlbnQoYXJncyk7CisgICAgaWYgKCFuYW1lKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBDU1NQYWludFZhbHVlOjpjcmVh
dGUobmFtZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUdlbmVyYXRlZEltYWdlKENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQpCit7Cisg
ICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCk7CisgICAgQ1NTUGFy
c2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSByYW5nZTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdl
IGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2VDb3B5KTsKKyAgICBDU1NWYWx1ZSogcmVzdWx0
ID0gbnVsbHB0cjsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVSYWRpYWxHcmFkaWVudCkgeworICAg
ICAgICByZXN1bHQgPSBjb25zdW1lUmFkaWFsR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCks
IE5vblJlcGVhdGluZyk7CisgICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVJlcGVhdGluZ1Jh
ZGlhbEdyYWRpZW50KSB7CisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVSYWRpYWxHcmFkaWVudChh
cmdzLCBjb250ZXh0Lm1vZGUoKSwgUmVwZWF0aW5nKTsKKyAgICB9IGVsc2UgaWYgKGlkID09IENT
U1ZhbHVlV2Via2l0TGluZWFyR3JhZGllbnQpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIHNlbmQgYSBkZXByZWNhdGlvbiBtZXNzYWdlLgorICAgICAgICBpZiAoY29udGV4dC51c2VD
b3VudGVyKCkpCisgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291
bnRlcjo6RGVwcmVjYXRlZFdlYktpdExpbmVhckdyYWRpZW50KTsKKyAgICAgICAgcmVzdWx0ID0g
Y29uc3VtZUxpbmVhckdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBOb25SZXBlYXRpbmcs
IENTU1ByZWZpeGVkTGluZWFyR3JhZGllbnQpOworICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTVmFs
dWVXZWJraXRSZXBlYXRpbmdMaW5lYXJHcmFkaWVudCkgeworICAgICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgc2VuZCBhIGRlcHJlY2F0aW9uIG1lc3NhZ2UuCisgICAgICAgIGlmIChjb250ZXh0
LnVzZUNvdW50ZXIoKSkKKyAgICAgICAgICAgIGNvbnRleHQudXNlQ291bnRlcigpLT5jb3VudChV
c2VDb3VudGVyOjpEZXByZWNhdGVkV2ViS2l0UmVwZWF0aW5nTGluZWFyR3JhZGllbnQpOworICAg
ICAgICByZXN1bHQgPSBjb25zdW1lTGluZWFyR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCks
IFJlcGVhdGluZywgQ1NTUHJlZml4ZWRMaW5lYXJHcmFkaWVudCk7CisgICAgfSBlbHNlIGlmIChp
ZCA9PSBDU1NWYWx1ZVJlcGVhdGluZ0xpbmVhckdyYWRpZW50KSB7CisgICAgICAgIHJlc3VsdCA9
IGNvbnN1bWVMaW5lYXJHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUoKSwgUmVwZWF0aW5nLCBD
U1NMaW5lYXJHcmFkaWVudCk7CisgICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZUxpbmVhckdy
YWRpZW50KSB7CisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVMaW5lYXJHcmFkaWVudChhcmdzLCBj
b250ZXh0Lm1vZGUoKSwgTm9uUmVwZWF0aW5nLCBDU1NMaW5lYXJHcmFkaWVudCk7CisgICAgfSBl
bHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdEdyYWRpZW50KSB7CisgICAgICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBzZW5kIGEgZGVwcmVjYXRpb24gbWVzc2FnZS4KKyAgICAgICAgaWYgKGNv
bnRleHQudXNlQ291bnRlcigpKQorICAgICAgICAgICAgY29udGV4dC51c2VDb3VudGVyKCktPmNv
dW50KFVzZUNvdW50ZXI6OkRlcHJlY2F0ZWRXZWJLaXRHcmFkaWVudCk7CisgICAgICAgIHJlc3Vs
dCA9IGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCkpOworICAg
IH0gZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRSYWRpYWxHcmFkaWVudCkgeworICAgICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgc2VuZCBhIGRlcHJlY2F0aW9uIG1lc3NhZ2UuCisgICAg
ICAgIGlmIChjb250ZXh0LnVzZUNvdW50ZXIoKSkKKyAgICAgICAgICAgIGNvbnRleHQudXNlQ291
bnRlcigpLT5jb3VudChVc2VDb3VudGVyOjpEZXByZWNhdGVkV2ViS2l0UmFkaWFsR3JhZGllbnQp
OworICAgICAgICByZXN1bHQgPSBjb25zdW1lRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KGFyZ3Ms
IGNvbnRleHQubW9kZSgpLCBOb25SZXBlYXRpbmcpOworICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NT
VmFsdWVXZWJraXRSZXBlYXRpbmdSYWRpYWxHcmFkaWVudCkgeworICAgICAgICBpZiAoY29udGV4
dC51c2VDb3VudGVyKCkpCisgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQo
VXNlQ291bnRlcjo6RGVwcmVjYXRlZFdlYktpdFJlcGVhdGluZ1JhZGlhbEdyYWRpZW50KTsKKyAg
ICAgICAgcmVzdWx0ID0gY29uc3VtZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudChhcmdzLCBjb250
ZXh0Lm1vZGUoKSwgUmVwZWF0aW5nKTsKKyAgICB9IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Vi
a2l0Q3Jvc3NGYWRlKSB7CisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVDcm9zc0ZhZGUoYXJncywg
Y29udGV4dCk7CisgICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVBhaW50KSB7CisgICAgICAg
IHJlc3VsdCA9IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc1BhaW50QVBJRW5hYmxlZCgpID8g
Y29uc3VtZVBhaW50KGFyZ3MsIGNvbnRleHQpIDogbnVsbHB0cjsKKyAgICB9CisgICAgaWYgKCFy
ZXN1bHQgfHwgIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmFu
Z2UgPSByYW5nZUNvcHk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIENTU1ZhbHVl
KiBjcmVhdGVDU1NJbWFnZVZhbHVlV2l0aFJlZmVycmVyKGNvbnN0IEF0b21pY1N0cmluZyYgcmF3
VmFsdWUsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ1NTVmFsdWUq
IGltYWdlVmFsdWUgPSBDU1NJbWFnZVZhbHVlOjpjcmVhdGUocmF3VmFsdWUsIGNvbnRleHQuY29t
cGxldGVVUkwocmF3VmFsdWUpKTsKKyAgICB0b0NTU0ltYWdlVmFsdWUoaW1hZ2VWYWx1ZSktPnNl
dFJlZmVycmVyKGNvbnRleHQucmVmZXJyZXIoKSk7CisgICAgcmV0dXJuIGltYWdlVmFsdWU7Cit9
CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUltYWdlU2V0KENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIENTU1BhcnNl
clRva2VuUmFuZ2UgcmFuZ2VDb3B5ID0gcmFuZ2U7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBh
cmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlQ29weSk7CisgICAgQ1NTSW1hZ2VTZXRWYWx1ZSog
aW1hZ2VTZXQgPSBDU1NJbWFnZVNldFZhbHVlOjpjcmVhdGUoKTsKKyAgICBkbyB7CisgICAgICAg
IEF0b21pY1N0cmluZyB1cmxWYWx1ZSA9IGNvbnN1bWVVcmxBc1N0cmluZ1ZpZXcoYXJncykudG9B
dG9taWNTdHJpbmcoKTsKKyAgICAgICAgaWYgKHVybFZhbHVlLmlzTnVsbCgpKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgQ1NTVmFsdWUqIGltYWdlID0gY3JlYXRlQ1NT
SW1hZ2VWYWx1ZVdpdGhSZWZlcnJlcih1cmxWYWx1ZSwgY29udGV4dCk7CisgICAgICAgIGltYWdl
U2V0LT5hcHBlbmQoKmltYWdlKTsKKworICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9r
ZW4gPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIGlmICh0b2tl
bi50eXBlKCkgIT0gRGltZW5zaW9uVG9rZW4pCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgaWYgKHRva2VuLnZhbHVlKCkgIT0gIngiKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIERDSEVDSyh0b2tlbi51bml0VHlwZSgpID09IENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZTo6VW5rbm93bik7CisgICAgICAgIGRvdWJsZSBpbWFnZVNjYWxlRmFjdG9y
ID0gdG9rZW4ubnVtZXJpY1ZhbHVlKCk7CisgICAgICAgIGlmIChpbWFnZVNjYWxlRmFjdG9yIDw9
IDApCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaW1hZ2VTZXQtPmFwcGVu
ZCgqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShpbWFnZVNjYWxlRmFjdG9yLCBDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGU6Ok51bWJlcikpOworICAgIH0gd2hpbGUgKGNvbnN1bWVDb21tYUlu
Y2x1ZGluZ1doaXRlc3BhY2UoYXJncykpOworICAgIGlmICghYXJncy5hdEVuZCgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByYW5nZSA9IHJhbmdlQ29weTsKKyAgICByZXR1cm4gaW1h
Z2VTZXQ7Cit9CisKK3N0YXRpYyBib29sIGlzR2VuZXJhdGVkSW1hZ2UoQ1NTVmFsdWVJRCBpZCkK
K3sKKyAgICByZXR1cm4gaWQgPT0gQ1NTVmFsdWVMaW5lYXJHcmFkaWVudCB8fCBpZCA9PSBDU1NW
YWx1ZVJhZGlhbEdyYWRpZW50CisgICAgICAgIHx8IGlkID09IENTU1ZhbHVlUmVwZWF0aW5nTGlu
ZWFyR3JhZGllbnQgfHwgaWQgPT0gQ1NTVmFsdWVSZXBlYXRpbmdSYWRpYWxHcmFkaWVudAorICAg
ICAgICB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdExpbmVhckdyYWRpZW50IHx8IGlkID09IENTU1Zh
bHVlV2Via2l0UmFkaWFsR3JhZGllbnQKKyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRS
ZXBlYXRpbmdMaW5lYXJHcmFkaWVudCB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdFJlcGVhdGluZ1Jh
ZGlhbEdyYWRpZW50CisgICAgICAgIHx8IGlkID09IENTU1ZhbHVlV2Via2l0R3JhZGllbnQgfHwg
aWQgPT0gQ1NTVmFsdWVXZWJraXRDcm9zc0ZhZGUgfHwgaWQgPT0gQ1NTVmFsdWVQYWludDsKK30K
KworQ1NTVmFsdWUqIGNvbnN1bWVJbWFnZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NT
UGFyc2VyQ29udGV4dCBjb250ZXh0LCBDb25zdW1lR2VuZXJhdGVkSW1hZ2UgZ2VuZXJhdGVkSW1h
Z2UpCit7CisgICAgQXRvbWljU3RyaW5nIHVyaSA9IGNvbnN1bWVVcmxBc1N0cmluZ1ZpZXcocmFu
Z2UpLnRvQXRvbWljU3RyaW5nKCk7CisgICAgaWYgKCF1cmkuaXNOdWxsKCkpCisgICAgICAgIHJl
dHVybiBjcmVhdGVDU1NJbWFnZVZhbHVlV2l0aFJlZmVycmVyKHVyaSwgY29udGV4dCk7CisgICAg
aWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gRnVuY3Rpb25Ub2tlbikgeworICAgICAgICBDU1NW
YWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKTsKKyAgICAgICAgaWYgKGlkID09
IENTU1ZhbHVlV2Via2l0SW1hZ2VTZXQpCisgICAgICAgICAgICByZXR1cm4gY29uc3VtZUltYWdl
U2V0KHJhbmdlLCBjb250ZXh0KTsKKyAgICAgICAgaWYgKGdlbmVyYXRlZEltYWdlID09IENvbnN1
bWVHZW5lcmF0ZWRJbWFnZTo6QWxsb3cgJiYgaXNHZW5lcmF0ZWRJbWFnZShpZCkpCisgICAgICAg
ICAgICByZXR1cm4gY29uc3VtZUdlbmVyYXRlZEltYWdlKHJhbmdlLCBjb250ZXh0KTsKKyAgICB9
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIENTU1Byb3BlcnR5UGFy
c2VySGVscGVycworKi8KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXJIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjEgQEAKKy8vIENvcHlyaWdo
dCAyMDE2IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
Ky8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0
aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisv
LyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyNpZm5kZWYgQ1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzX2gKKyNkZWZpbmUgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzX2gKKwor
Ly8gRklYTUUtTkVXUEFSU0VSICNpbmNsdWRlICJDU1NDdXN0b21JZGVudFZhbHVlLmgiCisjaW5j
bHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgorI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuUmFuZ2UuaCIK
KyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgorI2luY2x1ZGUgIkxlbmd0aC5oIiAvLyBG
b3IgVmFsdWVSYW5nZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1N0cmluZ1Zh
bHVlOworY2xhc3MgQ1NTVVJJVmFsdWU7CitjbGFzcyBDU1NWYWx1ZVBhaXI7CisKKy8vIFdoZW4g
dGhlc2UgZnVuY3Rpb25zIGFyZSBzdWNjZXNzZnVsLCB0aGV5IHdpbGwgY29uc3VtZSBhbGwgdGhl
IHJlbGV2YW50CisvLyB0b2tlbnMgZnJvbSB0aGUgcmFuZ2UgYW5kIGFsc28gY29uc3VtZSBhbnkg
d2hpdGVzcGFjZSB3aGljaCBmb2xsb3dzLiBXaGVuCisvLyB0aGUgc3RhcnQgb2YgdGhlIHJhbmdl
IGRvZXNuJ3QgbWF0Y2ggdGhlIHR5cGUgd2UncmUgbG9va2luZyBmb3IsIHRoZSByYW5nZQorLy8g
d2lsbCBub3QgYmUgbW9kaWZpZWQuCituYW1lc3BhY2UgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
IHsKKworLy8gRklYTUU6IFRoZXNlIHNob3VsZCBwcm9iYWJseSBqdXN0IGJlIGNvbnN1bWVDb21t
YSBhbmQgY29uc3VtZVNsYXNoLgorYm9vbCBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNl
KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKK2Jvb2wgY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVz
cGFjZShDU1NQYXJzZXJUb2tlblJhbmdlJik7CisvLyBjb25zdW1lRnVuY3Rpb24gZXhwZWN0cyB0
aGUgcmFuZ2Ugc3RhcnRzIHdpdGggYSBGdW5jdGlvblRva2VuLgorQ1NTUGFyc2VyVG9rZW5SYW5n
ZSBjb25zdW1lRnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworCitlbnVtIGNsYXNzIFVu
aXRsZXNzUXVpcmsgeworICAgIEFsbG93LAorICAgIEZvcmJpZAorfTsKKworQ1NTUHJpbWl0aXZl
VmFsdWUqIGNvbnN1bWVJbnRlZ2VyKENTU1BhcnNlclRva2VuUmFuZ2UmLCBkb3VibGUgbWluaW11
bVZhbHVlID0gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpOworQ1NTUHJpbWl0
aXZlVmFsdWUqIGNvbnN1bWVQb3NpdGl2ZUludGVnZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwor
Ym9vbCBjb25zdW1lTnVtYmVyUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmLCBkb3VibGUmIHJlc3Vs
dCk7CitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZU51bWJlcihDU1NQYXJzZXJUb2tlblJhbmdl
JiwgVmFsdWVSYW5nZSk7CitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUxlbmd0aChDU1NQYXJz
ZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayA9
IFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZVBlcmNl
bnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIFZhbHVlUmFuZ2UpOworQ1NTUHJpbWl0aXZlVmFsdWUq
IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1v
ZGUsIFZhbHVlUmFuZ2UsIFVuaXRsZXNzUXVpcmsgPSBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOwor
Q1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVBbmdsZShDU1NQYXJzZXJUb2tlblJhbmdlJik7CitD
U1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZVRpbWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIFZhbHVl
UmFuZ2UpOworCitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUlkZW50KENTU1BhcnNlclRva2Vu
UmFuZ2UmKTsKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lSWRlbnRSYW5nZShDU1NQYXJzZXJU
b2tlblJhbmdlJiwgQ1NTVmFsdWVJRCBsb3dlciwgQ1NTVmFsdWVJRCB1cHBlcik7Cit0ZW1wbGF0
ZTxDU1NWYWx1ZUlELCBDU1NWYWx1ZUlELi4uPiBpbmxpbmUgYm9vbCBpZGVudE1hdGNoZXMoQ1NT
VmFsdWVJRCBpZCk7Cit0ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIGFsbG93ZWRJZGVudHM+IENTU1By
aW1pdGl2ZVZhbHVlKiBjb25zdW1lSWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworCisvLyBG
SVhNRS1ORVdQQVJTRVIgQ1NTQ3VzdG9tSWRlbnRWYWx1ZSogY29uc3VtZUN1c3RvbUlkZW50KENT
U1BhcnNlclRva2VuUmFuZ2UmKTsKK0NTU1N0cmluZ1ZhbHVlKiBjb25zdW1lU3RyaW5nKENTU1Bh
cnNlclRva2VuUmFuZ2UmKTsKK1N0cmluZ1ZpZXcgY29uc3VtZVVybEFzU3RyaW5nVmlldyhDU1NQ
YXJzZXJUb2tlblJhbmdlJik7CitDU1NVUklWYWx1ZSogY29uc3VtZVVybChDU1NQYXJzZXJUb2tl
blJhbmdlJik7CisKK0NTU1ZhbHVlKiBjb25zdW1lQ29sb3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYs
IENTU1BhcnNlck1vZGUsIGJvb2wgYWNjZXB0UXVpcmt5Q29sb3JzID0gZmFsc2UpOworCitDU1NW
YWx1ZVBhaXIqIGNvbnN1bWVQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2Vy
TW9kZSwgVW5pdGxlc3NRdWlyayk7Citib29sIGNvbnN1bWVQb3NpdGlvbihDU1NQYXJzZXJUb2tl
blJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyaywgQ1NTVmFsdWUqJiByZXN1bHRY
LCBDU1NWYWx1ZSomIHJlc3VsdFkpOworYm9vbCBjb25zdW1lT25lT3JUd29WYWx1ZWRQb3NpdGlv
bihDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyaywgQ1NT
VmFsdWUqJiByZXN1bHRYLCBDU1NWYWx1ZSomIHJlc3VsdFkpOworCitlbnVtIGNsYXNzIENvbnN1
bWVHZW5lcmF0ZWRJbWFnZSB7CisgICAgQWxsb3csCisgICAgRm9yYmlkCit9OworCitDU1NWYWx1
ZSogY29uc3VtZUltYWdlKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJDb250ZXh0LCBD
b25zdW1lR2VuZXJhdGVkSW1hZ2UgPSBDb25zdW1lR2VuZXJhdGVkSW1hZ2U6OkFsbG93KTsKK0NT
U1ZhbHVlKiBjb25zdW1lSW1hZ2VPck5vbmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNl
ckNvbnRleHQpOworCisvLyBUZW1wbGF0ZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGF0IHRoZSBib3R0
b20gb2YgdGhlIGZpbGUgZm9yIHJlYWRhYmlsaXR5LgorCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBl
bXB0eUJhc2VDYXNlPiBpbmxpbmUgYm9vbCBpZGVudE1hdGNoZXMoQ1NTVmFsdWVJRCkgeyByZXR1
cm4gZmFsc2U7IH0KK3RlbXBsYXRlPENTU1ZhbHVlSUQgaGVhZCwgQ1NTVmFsdWVJRC4uLiB0YWls
PiBpbmxpbmUgYm9vbCBpZGVudE1hdGNoZXMoQ1NTVmFsdWVJRCBpZCkKK3sKKyAgICByZXR1cm4g
aWQgPT0gaGVhZCB8fCBpZGVudE1hdGNoZXM8dGFpbC4uLj4oaWQpOworfQorCisvLyBGSVhNRS1O
RVdQQVJTRVIgLSBjb252ZXJ0ZWQgdG8gYSBSZWZQdHIgcmV0dXJuIHR5cGUgZnJvbSBhIHJhdyBw
dHIuCit0ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIG5hbWVzPiBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IGNvbnN1bWVJZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAo
cmFuZ2UucGVlaygpLnR5cGUoKSAhPSBJZGVudFRva2VuIHx8ICFpZGVudE1hdGNoZXM8bmFtZXMu
Li4+KHJhbmdlLnBlZWsoKS5pZCgpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKHJhbmdlLmNvbnN1bWVJbmNs
dWRpbmdXaGl0ZXNwYWNlKCkuaWQoKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0NTU1dp
ZGVLZXl3b3JkKGNvbnN0IENTU1ZhbHVlSUQmIGlkKQoreworICAgIHJldHVybiBpZCA9PSBDU1NW
YWx1ZUluaXRpYWwgfHwgaWQgPT0gQ1NTVmFsdWVJbmhlcml0IHx8IGlkID09IENTU1ZhbHVlVW5z
ZXQgfHwgaWQgPT0gQ1NTVmFsdWVEZWZhdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBDU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnMKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTVG9rZW5pemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1Rva2VuaXplci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NUb2tlbml6ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODg4IEBA
CisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
Ky8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
Ky8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNTU1Rva2VuaXplci5oIgorCisjaW5jbHVkZSAiQ1NT
UGFyc2VySWRpb21zLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmgiCisj
aW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIgorI2luY2x1ZGUgIkNTU1Rva2VuaXplcklu
cHV0U3RyZWFtLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgorI2luY2x1ZGUgPHd0
Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ1NT
VG9rZW5pemVyOjpTY29wZTo6U2NvcGUoY29uc3QgU3RyaW5nJiBzdHJpbmcpCisgICAgOiBtX3N0
cmluZyhzdHJpbmcpCit7CisgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBzcGVjLCB3ZSBzaG91bGQg
cGVyZm9ybSBwcmVwcm9jZXNzaW5nIGhlcmUuCisgICAgLy8gU2VlOiBodHRwOi8vZGV2LnczLm9y
Zy9jc3N3Zy9jc3Mtc3ludGF4LyNpbnB1dC1wcmVwcm9jZXNzaW5nCisgICAgLy8KKyAgICAvLyBI
b3dldmVyLCB3ZSBjYW4gc2tpcCB0aGlzIHN0ZXAgc2luY2U6CisgICAgLy8gKiBXZSdyZSB1c2lu
ZyBIVE1MIHNwYWNlcyAod2hpY2ggYWNjZXB0IFxyIGFuZCBcZiBhcyBhIHZhbGlkIHdoaXRlIHNw
YWNlKQorICAgIC8vICogRG8gbm90IGNvdW50IHdoaXRlIHNwYWNlcworICAgIC8vICogQ1NTVG9r
ZW5pemVySW5wdXRTdHJlYW06Om5leHRJbnB1dENoYXIoKSByZXBsYWNlcyBOVUxMcyBmb3IgcmVw
bGFjZW1lbnQgY2hhcmFjdGVycworCisgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIC8vIFRvIGF2b2lkIHJlc2l6aW5nIHdlIGVyciBvbiB0aGUgc2lkZSBv
ZiByZXNlcnZpbmcgdG9vIG11Y2ggc3BhY2UuCisgICAgLy8gTW9zdCBzdHJpbmdzIHdlIHRva2Vu
aXplIGhhdmUgYWJvdXQgMy41IHRvIDUgY2hhcmFjdGVycyBwZXIgdG9rZW4uCisgICAgbV90b2tl
bnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzdHJpbmcubGVuZ3RoKCkgLyAzKTsKKworICAgIENT
U1Rva2VuaXplcklucHV0U3RyZWFtIGlucHV0KHN0cmluZyk7CisgICAgQ1NTVG9rZW5pemVyIHRv
a2VuaXplcihpbnB1dCwgKnRoaXMpOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIENTU1Bh
cnNlclRva2VuIHRva2VuID0gdG9rZW5pemVyLm5leHRUb2tlbigpOworICAgICAgICBpZiAodG9r
ZW4udHlwZSgpID09IENvbW1lbnRUb2tlbikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBpZiAodG9rZW4udHlwZSgpID09IEVPRlRva2VuKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBtX3Rva2Vucy5hcHBlbmQodG9rZW4pOworICAgIH0KK30KKworQ1NTVG9rZW5pemVyOjpT
Y29wZTo6U2NvcGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIENTU1BhcnNlck9ic2VydmVyV3JhcHBl
ciYgd3JhcHBlcikKKyAgICA6IG1fc3RyaW5nKHN0cmluZykKK3sKKyAgICBpZiAoc3RyaW5nLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0g
aW5wdXQoc3RyaW5nKTsKKyAgICBDU1NUb2tlbml6ZXIgdG9rZW5pemVyKGlucHV0LCAqdGhpcyk7
CisKKyAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAg
IENTU1BhcnNlclRva2VuIHRva2VuID0gdG9rZW5pemVyLm5leHRUb2tlbigpOworICAgICAgICBp
ZiAodG9rZW4udHlwZSgpID09IEVPRlRva2VuKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGlmICh0b2tlbi50eXBlKCkgPT0gQ29tbWVudFRva2VuKQorICAgICAgICAgICAgd3JhcHBlci5h
ZGRDb21tZW50KG9mZnNldCwgaW5wdXQub2Zmc2V0KCksIG1fdG9rZW5zLnNpemUoKSk7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgbV90b2tlbnMuYXBwZW5kKHRva2VuKTsKKyAgICAgICAg
ICAgIHdyYXBwZXIuYWRkVG9rZW4ob2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAgICBvZmZzZXQg
PSBpbnB1dC5vZmZzZXQoKTsKKyAgICB9CisKKyAgICB3cmFwcGVyLmFkZFRva2VuKG9mZnNldCk7
CisgICAgd3JhcHBlci5maW5hbGl6ZUNvbnN0cnVjdGlvbihtX3Rva2Vucy5iZWdpbigpKTsKK30K
KworQ1NTUGFyc2VyVG9rZW5SYW5nZSBDU1NUb2tlbml6ZXI6OlNjb3BlOjp0b2tlblJhbmdlKCkK
K3sKKyAgICByZXR1cm4gbV90b2tlbnM7Cit9CisKK3Vuc2lnbmVkIENTU1Rva2VuaXplcjo6U2Nv
cGU6OnRva2VuQ291bnQoKQoreworICAgIHJldHVybiBtX3Rva2Vucy5zaXplKCk7Cit9CisKK3N0
YXRpYyBib29sIGlzTmV3TGluZShVQ2hhciBjYykKK3sKKyAgICAvLyBXZSBjaGVjayBcciBhbmQg
XGYgaGVyZSwgc2luY2Ugd2UgaGF2ZSBubyBwcmVwcm9jZXNzaW5nIHN0YWdlCisgICAgcmV0dXJu
IChjYyA9PSAnXHInIHx8IGNjID09ICdcbicgfHwgY2MgPT0gJ1xmJyk7Cit9CisKKy8vIGh0dHA6
Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1zeW50YXgvI2NoZWNrLWlmLXR3by1jb2RlLXBvaW50cy1h
cmUtYS12YWxpZC1lc2NhcGUKK3N0YXRpYyBib29sIHR3b0NoYXJzQXJlVmFsaWRFc2NhcGUoVUNo
YXIgZmlyc3QsIFVDaGFyIHNlY29uZCkKK3sKKyAgICByZXR1cm4gZmlyc3QgPT0gJ1xcJyAmJiAh
aXNOZXdMaW5lKHNlY29uZCk7Cit9CisKK0NTU1Rva2VuaXplcjo6Q1NTVG9rZW5pemVyKENTU1Rv
a2VuaXplcklucHV0U3RyZWFtJiBpbnB1dFN0cmVhbSwgU2NvcGUmIHNjb3BlKQorICAgIDogbV9p
bnB1dChpbnB1dFN0cmVhbSkKKyAgICAsIG1fc2NvcGUoc2NvcGUpCit7Cit9CisKK3ZvaWQgQ1NT
VG9rZW5pemVyOjpyZWNvbnN1bWUoVUNoYXIgYykKK3sKKyAgICBtX2lucHV0LnB1c2hCYWNrKGMp
OworfQorCitVQ2hhciBDU1NUb2tlbml6ZXI6OmNvbnN1bWUoKQoreworICAgIFVDaGFyIGN1cnJl
bnQgPSBtX2lucHV0Lm5leHRJbnB1dENoYXIoKTsKKyAgICBtX2lucHV0LmFkdmFuY2UoKTsKKyAg
ICByZXR1cm4gY3VycmVudDsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjp3aGl0
ZVNwYWNlKFVDaGFyIC8qY2MqLykKK3sKKyAgICBtX2lucHV0LmFkdmFuY2VVbnRpbE5vbldoaXRl
c3BhY2UoKTsKKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oV2hpdGVzcGFjZVRva2VuKTsKK30K
KworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpibG9ja1N0YXJ0KENTU1BhcnNlclRva2Vu
VHlwZSB0eXBlKQoreworICAgIG1fYmxvY2tTdGFjay5hcHBlbmQodHlwZSk7CisgICAgcmV0dXJu
IENTU1BhcnNlclRva2VuKHR5cGUsIENTU1BhcnNlclRva2VuOjpCbG9ja1N0YXJ0KTsKK30KKwor
Q1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpibG9ja1N0YXJ0KENTU1BhcnNlclRva2VuVHlw
ZSBibG9ja1R5cGUsIENTU1BhcnNlclRva2VuVHlwZSB0eXBlLCBTdHJpbmdWaWV3IG5hbWUpCit7
CisgICAgbV9ibG9ja1N0YWNrLmFwcGVuZChibG9ja1R5cGUpOworICAgIHJldHVybiBDU1NQYXJz
ZXJUb2tlbih0eXBlLCBuYW1lLCBDU1NQYXJzZXJUb2tlbjo6QmxvY2tTdGFydCk7Cit9CisKK0NT
U1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6YmxvY2tFbmQoQ1NTUGFyc2VyVG9rZW5UeXBlIHR5
cGUsIENTU1BhcnNlclRva2VuVHlwZSBzdGFydFR5cGUpCit7CisgICAgaWYgKCFtX2Jsb2NrU3Rh
Y2suaXNFbXB0eSgpICYmIG1fYmxvY2tTdGFjay5sYXN0KCkgPT0gc3RhcnRUeXBlKSB7CisgICAg
ICAgIG1fYmxvY2tTdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgIHJldHVybiBDU1NQYXJzZXJU
b2tlbih0eXBlLCBDU1NQYXJzZXJUb2tlbjo6QmxvY2tFbmQpOworICAgIH0KKyAgICByZXR1cm4g
Q1NTUGFyc2VyVG9rZW4odHlwZSk7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6
bGVmdFBhcmVudGhlc2lzKFVDaGFyIC8qY2MqLykKK3sKKyAgICByZXR1cm4gYmxvY2tTdGFydChM
ZWZ0UGFyZW50aGVzaXNUb2tlbik7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6
cmlnaHRQYXJlbnRoZXNpcyhVQ2hhciAvKmNjKi8pCit7CisgICAgcmV0dXJuIGJsb2NrRW5kKFJp
Z2h0UGFyZW50aGVzaXNUb2tlbiwgTGVmdFBhcmVudGhlc2lzVG9rZW4pOworfQorCitDU1NQYXJz
ZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmxlZnRCcmFja2V0KFVDaGFyIC8qY2MqLykKK3sKKyAgICBy
ZXR1cm4gYmxvY2tTdGFydChMZWZ0QnJhY2tldFRva2VuKTsKK30KKworQ1NTUGFyc2VyVG9rZW4g
Q1NTVG9rZW5pemVyOjpyaWdodEJyYWNrZXQoVUNoYXIgLypjYyovKQoreworICAgIHJldHVybiBi
bG9ja0VuZChSaWdodEJyYWNrZXRUb2tlbiwgTGVmdEJyYWNrZXRUb2tlbik7Cit9CisKK0NTU1Bh
cnNlclRva2VuIENTU1Rva2VuaXplcjo6bGVmdEJyYWNlKFVDaGFyIC8qY2MqLykKK3sKKyAgICBy
ZXR1cm4gYmxvY2tTdGFydChMZWZ0QnJhY2VUb2tlbik7Cit9CisKK0NTU1BhcnNlclRva2VuIENT
U1Rva2VuaXplcjo6cmlnaHRCcmFjZShVQ2hhciAvKmNjKi8pCit7CisgICAgcmV0dXJuIGJsb2Nr
RW5kKFJpZ2h0QnJhY2VUb2tlbiwgTGVmdEJyYWNlVG9rZW4pOworfQorCitDU1NQYXJzZXJUb2tl
biBDU1NUb2tlbml6ZXI6OnBsdXNPckZ1bGxTdG9wKFVDaGFyIGNjKQoreworICAgIGlmIChuZXh0
Q2hhcnNBcmVOdW1iZXIoY2MpKSB7CisgICAgICAgIHJlY29uc3VtZShjYyk7CisgICAgICAgIHJl
dHVybiBjb25zdW1lTnVtZXJpY1Rva2VuKCk7CisgICAgfQorICAgIHJldHVybiBDU1NQYXJzZXJU
b2tlbihEZWxpbWl0ZXJUb2tlbiwgY2MpOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6
ZXI6OmFzdGVyaXNrKFVDaGFyIGNjKQoreworICAgIEFTU0VSVF9VTlVTRUQoY2MsIGNjID09ICcq
Jyk7CisgICAgaWYgKGNvbnN1bWVJZk5leHQoJz0nKSkKKyAgICAgICAgcmV0dXJuIENTU1BhcnNl
clRva2VuKFN1YnN0cmluZ01hdGNoVG9rZW4pOworICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihE
ZWxpbWl0ZXJUb2tlbiwgJyonKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjps
ZXNzVGhhbihVQ2hhciBjYykKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGNjLCBjYyA9PSAnPCcpOwor
ICAgIGlmIChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkgPT0gJyEnCisgICAgICAg
ICYmIG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgxKSA9PSAnLScKKyAgICAgICAgJiYg
bV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDIpID09ICctJykgeworICAgICAgICBtX2lu
cHV0LmFkdmFuY2UoMyk7CisgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihDRE9Ub2tlbik7
CisgICAgfQorICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihEZWxpbWl0ZXJUb2tlbiwgJzwnKTsK
K30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjb21tYShVQ2hhciAvKmNjKi8pCit7
CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKENvbW1hVG9rZW4pOworfQorCitDU1NQYXJzZXJU
b2tlbiBDU1NUb2tlbml6ZXI6Omh5cGhlbk1pbnVzKFVDaGFyIGNjKQoreworICAgIGlmIChuZXh0
Q2hhcnNBcmVOdW1iZXIoY2MpKSB7CisgICAgICAgIHJlY29uc3VtZShjYyk7CisgICAgICAgIHJl
dHVybiBjb25zdW1lTnVtZXJpY1Rva2VuKCk7CisgICAgfQorICAgIGlmIChtX2lucHV0LnBlZWtX
aXRob3V0UmVwbGFjZW1lbnQoMCkgPT0gJy0nCisgICAgICAgICYmIG1faW5wdXQucGVla1dpdGhv
dXRSZXBsYWNlbWVudCgxKSA9PSAnPicpIHsKKyAgICAgICAgbV9pbnB1dC5hZHZhbmNlKDIpOwor
ICAgICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oQ0RDVG9rZW4pOworICAgIH0KKyAgICBpZiAo
bmV4dENoYXJzQXJlSWRlbnRpZmllcihjYykpIHsKKyAgICAgICAgcmVjb25zdW1lKGNjKTsKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudExpa2VUb2tlbigpOworICAgIH0KKyAgICByZXR1cm4g
Q1NTUGFyc2VyVG9rZW4oRGVsaW1pdGVyVG9rZW4sIGNjKTsKK30KKworQ1NTUGFyc2VyVG9rZW4g
Q1NTVG9rZW5pemVyOjpzb2xpZHVzKFVDaGFyIGNjKQoreworICAgIGlmIChjb25zdW1lSWZOZXh0
KCcqJykpIHsKKyAgICAgICAgLy8gVGhlc2UgZ2V0IGlnbm9yZWQsIGJ1dCB3ZSBuZWVkIGEgdmFs
dWUgdG8gcmV0dXJuLgorICAgICAgICBjb25zdW1lVW50aWxDb21tZW50RW5kRm91bmQoKTsKKyAg
ICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKENvbW1lbnRUb2tlbik7CisgICAgfQorCisgICAg
cmV0dXJuIENTU1BhcnNlclRva2VuKERlbGltaXRlclRva2VuLCBjYyk7Cit9CisKK0NTU1BhcnNl
clRva2VuIENTU1Rva2VuaXplcjo6Y29sb24oVUNoYXIgLypjYyovKQoreworICAgIHJldHVybiBD
U1NQYXJzZXJUb2tlbihDb2xvblRva2VuKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5p
emVyOjpzZW1pQ29sb24oVUNoYXIgLypjYyovKQoreworICAgIHJldHVybiBDU1NQYXJzZXJUb2tl
bihTZW1pY29sb25Ub2tlbik7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6aGFz
aChVQ2hhciBjYykKK3sKKyAgICBVQ2hhciBuZXh0Q2hhciA9IG1faW5wdXQucGVla1dpdGhvdXRS
ZXBsYWNlbWVudCgwKTsKKyAgICBpZiAoaXNOYW1lQ29kZVBvaW50KG5leHRDaGFyKSB8fCB0d29D
aGFyc0FyZVZhbGlkRXNjYXBlKG5leHRDaGFyLCBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1l
bnQoMSkpKSB7CisgICAgICAgIEhhc2hUb2tlblR5cGUgdHlwZSA9IG5leHRDaGFyc0FyZUlkZW50
aWZpZXIoKSA/IEhhc2hUb2tlbklkIDogSGFzaFRva2VuVW5yZXN0cmljdGVkOworICAgICAgICBy
ZXR1cm4gQ1NTUGFyc2VyVG9rZW4odHlwZSwgY29uc3VtZU5hbWUoKSk7CisgICAgfQorCisgICAg
cmV0dXJuIENTU1BhcnNlclRva2VuKERlbGltaXRlclRva2VuLCBjYyk7Cit9CisKK0NTU1BhcnNl
clRva2VuIENTU1Rva2VuaXplcjo6Y2lyY3VtZmxleEFjY2VudChVQ2hhciBjYykKK3sKKyAgICBB
U1NFUlRfVU5VU0VEKGNjLCBjYyA9PSAnXicpOworICAgIGlmIChjb25zdW1lSWZOZXh0KCc9Jykp
CisgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihQcmVmaXhNYXRjaFRva2VuKTsKKyAgICBy
ZXR1cm4gQ1NTUGFyc2VyVG9rZW4oRGVsaW1pdGVyVG9rZW4sICdeJyk7Cit9CisKK0NTU1BhcnNl
clRva2VuIENTU1Rva2VuaXplcjo6ZG9sbGFyU2lnbihVQ2hhciBjYykKK3sKKyAgICBBU1NFUlRf
VU5VU0VEKGNjLCBjYyA9PSAnJCcpOworICAgIGlmIChjb25zdW1lSWZOZXh0KCc9JykpCisgICAg
ICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihTdWZmaXhNYXRjaFRva2VuKTsKKyAgICByZXR1cm4g
Q1NTUGFyc2VyVG9rZW4oRGVsaW1pdGVyVG9rZW4sICckJyk7Cit9CisKK0NTU1BhcnNlclRva2Vu
IENTU1Rva2VuaXplcjo6dmVydGljYWxMaW5lKFVDaGFyIGNjKQoreworICAgIEFTU0VSVF9VTlVT
RUQoY2MsIGNjID09ICd8Jyk7CisgICAgaWYgKGNvbnN1bWVJZk5leHQoJz0nKSkKKyAgICAgICAg
cmV0dXJuIENTU1BhcnNlclRva2VuKERhc2hNYXRjaFRva2VuKTsKKyAgICBpZiAoY29uc3VtZUlm
TmV4dCgnfCcpKQorICAgICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oQ29sdW1uVG9rZW4pOwor
ICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihEZWxpbWl0ZXJUb2tlbiwgJ3wnKTsKK30KKworQ1NT
UGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjp0aWxkZShVQ2hhciBjYykKK3sKKyAgICBBU1NFUlRf
VU5VU0VEKGNjLCBjYyA9PSAnficpOworICAgIGlmIChjb25zdW1lSWZOZXh0KCc9JykpCisgICAg
ICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihJbmNsdWRlTWF0Y2hUb2tlbik7CisgICAgcmV0dXJu
IENTU1BhcnNlclRva2VuKERlbGltaXRlclRva2VuLCAnficpOworfQorCitDU1NQYXJzZXJUb2tl
biBDU1NUb2tlbml6ZXI6OmNvbW1lcmNpYWxBdChVQ2hhciBjYykKK3sKKyAgICBBU1NFUlRfVU5V
U0VEKGNjLCBjYyA9PSAnQCcpOworICAgIGlmIChuZXh0Q2hhcnNBcmVJZGVudGlmaWVyKCkpCisg
ICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihBdEtleXdvcmRUb2tlbiwgY29uc3VtZU5hbWUo
KSk7CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKERlbGltaXRlclRva2VuLCAnQCcpOworfQor
CitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OnJldmVyc2VTb2xpZHVzKFVDaGFyIGNjKQor
eworICAgIGlmICh0d29DaGFyc0FyZVZhbGlkRXNjYXBlKGNjLCBtX2lucHV0LnBlZWtXaXRob3V0
UmVwbGFjZW1lbnQoMCkpKSB7CisgICAgICAgIHJlY29uc3VtZShjYyk7CisgICAgICAgIHJldHVy
biBjb25zdW1lSWRlbnRMaWtlVG9rZW4oKTsKKyAgICB9CisgICAgcmV0dXJuIENTU1BhcnNlclRv
a2VuKERlbGltaXRlclRva2VuLCBjYyk7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXpl
cjo6YXNjaWlEaWdpdChVQ2hhciBjYykKK3sKKyAgICByZWNvbnN1bWUoY2MpOworICAgIHJldHVy
biBjb25zdW1lTnVtZXJpY1Rva2VuKCk7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXpl
cjo6bGV0dGVyVShVQ2hhciBjYykKK3sKKyAgICBpZiAobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxh
Y2VtZW50KDApID09ICcrJworICAgICAgICAmJiAoaXNBU0NJSUhleERpZ2l0KG1faW5wdXQucGVl
a1dpdGhvdXRSZXBsYWNlbWVudCgxKSkKKyAgICAgICAgICAgIHx8IG1faW5wdXQucGVla1dpdGhv
dXRSZXBsYWNlbWVudCgxKSA9PSAnPycpKSB7CisgICAgICAgIG1faW5wdXQuYWR2YW5jZSgpOwor
ICAgICAgICByZXR1cm4gY29uc3VtZVVuaWNvZGVSYW5nZSgpOworICAgIH0KKyAgICByZWNvbnN1
bWUoY2MpOworICAgIHJldHVybiBjb25zdW1lSWRlbnRMaWtlVG9rZW4oKTsKK30KKworQ1NTUGFy
c2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQoVUNoYXIgY2MpCit7CisgICAgcmVjb25z
dW1lKGNjKTsKKyAgICByZXR1cm4gY29uc3VtZUlkZW50TGlrZVRva2VuKCk7Cit9CisKK0NTU1Bh
cnNlclRva2VuIENTU1Rva2VuaXplcjo6c3RyaW5nU3RhcnQoVUNoYXIgY2MpCit7CisgICAgcmV0
dXJuIGNvbnN1bWVTdHJpbmdUb2tlblVudGlsKGNjKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NT
VG9rZW5pemVyOjplbmRPZkZpbGUoVUNoYXIgLypjYyovKQoreworICAgIHJldHVybiBDU1NQYXJz
ZXJUb2tlbihFT0ZUb2tlbik7Cit9CisKK2NvbnN0IENTU1Rva2VuaXplcjo6Q29kZVBvaW50IENT
U1Rva2VuaXplcjo6Y29kZVBvaW50c1sxMjhdID0geworICAgICZDU1NUb2tlbml6ZXI6OmVuZE9m
RmlsZSwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAg
ICAwLAorICAgIDAsCisgICAgJkNTU1Rva2VuaXplcjo6d2hpdGVTcGFjZSwKKyAgICAmQ1NTVG9r
ZW5pemVyOjp3aGl0ZVNwYWNlLAorICAgIDAsCisgICAgJkNTU1Rva2VuaXplcjo6d2hpdGVTcGFj
ZSwKKyAgICAmQ1NTVG9rZW5pemVyOjp3aGl0ZVNwYWNlLAorICAgIDAsCisgICAgMCwKKyAgICAw
LAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAs
CisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwK
KyAgICAwLAorICAgICZDU1NUb2tlbml6ZXI6OndoaXRlU3BhY2UsCisgICAgMCwKKyAgICAmQ1NT
VG9rZW5pemVyOjpzdHJpbmdTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpoYXNoLAorICAgICZD
U1NUb2tlbml6ZXI6OmRvbGxhclNpZ24sCisgICAgMCwKKyAgICAwLAorICAgICZDU1NUb2tlbml6
ZXI6OnN0cmluZ1N0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6OmxlZnRQYXJlbnRoZXNpcywKKyAg
ICAmQ1NTVG9rZW5pemVyOjpyaWdodFBhcmVudGhlc2lzLAorICAgICZDU1NUb2tlbml6ZXI6OmFz
dGVyaXNrLAorICAgICZDU1NUb2tlbml6ZXI6OnBsdXNPckZ1bGxTdG9wLAorICAgICZDU1NUb2tl
bml6ZXI6OmNvbW1hLAorICAgICZDU1NUb2tlbml6ZXI6Omh5cGhlbk1pbnVzLAorICAgICZDU1NU
b2tlbml6ZXI6OnBsdXNPckZ1bGxTdG9wLAorICAgICZDU1NUb2tlbml6ZXI6OnNvbGlkdXMsCisg
ICAgJkNTU1Rva2VuaXplcjo6YXNjaWlEaWdpdCwKKyAgICAmQ1NTVG9rZW5pemVyOjphc2NpaURp
Z2l0LAorICAgICZDU1NUb2tlbml6ZXI6OmFzY2lpRGlnaXQsCisgICAgJkNTU1Rva2VuaXplcjo6
YXNjaWlEaWdpdCwKKyAgICAmQ1NTVG9rZW5pemVyOjphc2NpaURpZ2l0LAorICAgICZDU1NUb2tl
bml6ZXI6OmFzY2lpRGlnaXQsCisgICAgJkNTU1Rva2VuaXplcjo6YXNjaWlEaWdpdCwKKyAgICAm
Q1NTVG9rZW5pemVyOjphc2NpaURpZ2l0LAorICAgICZDU1NUb2tlbml6ZXI6OmFzY2lpRGlnaXQs
CisgICAgJkNTU1Rva2VuaXplcjo6YXNjaWlEaWdpdCwKKyAgICAmQ1NTVG9rZW5pemVyOjpjb2xv
biwKKyAgICAmQ1NTVG9rZW5pemVyOjpzZW1pQ29sb24sCisgICAgJkNTU1Rva2VuaXplcjo6bGVz
c1RoYW4sCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgJkNTU1Rva2VuaXplcjo6Y29tbWVy
Y2lhbEF0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVy
OjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tl
bml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNT
U1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAg
ICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0
LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1l
U3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6
Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2Vu
aXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NT
VG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAg
ICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQs
CisgICAgJkNTU1Rva2VuaXplcjo6bGV0dGVyVSwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3Rh
cnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5h
bWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXpl
cjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6OmxlZnRCcmFja2V0LAorICAgICZDU1NU
b2tlbml6ZXI6OnJldmVyc2VTb2xpZHVzLAorICAgICZDU1NUb2tlbml6ZXI6OnJpZ2h0QnJhY2tl
dCwKKyAgICAmQ1NTVG9rZW5pemVyOjpjaXJjdW1mbGV4QWNjZW50LAorICAgICZDU1NUb2tlbml6
ZXI6Om5hbWVTdGFydCwKKyAgICAwLAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAg
ICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0
LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1l
U3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6
Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2Vu
aXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NT
VG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAg
ICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQs
CisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVT
dGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6
bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5p
emVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bGV0dGVyVSwKKyAgICAmQ1NTVG9r
ZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZD
U1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisg
ICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6OmxlZnRCcmFj
ZSwKKyAgICAmQ1NTVG9rZW5pemVyOjp2ZXJ0aWNhbExpbmUsCisgICAgJkNTU1Rva2VuaXplcjo6
cmlnaHRCcmFjZSwKKyAgICAmQ1NTVG9rZW5pemVyOjp0aWxkZSwKKyAgICAwLAorfTsKKyNpZiAh
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05fRElTQUJMRUQKK2NvbnN0IHVuc2lnbmVk
IGNvZGVQb2ludHNOdW1iZXIgPSAxMjg7CisjZW5kaWYKKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9r
ZW5pemVyOjpuZXh0VG9rZW4oKQoreworICAgIC8vIFVubGlrZSB0aGUgSFRNTFRva2VuaXplciwg
dGhlIENTUyBTeW50YXggc3BlYyBpcyB3cml0dGVuCisgICAgLy8gYXMgYSBzdGF0ZWxlc3MsIChm
aXhlZC1zaXplKSBsb29rLWFoZWFkIHRva2VuaXplci4KKyAgICAvLyBXZSBjb3VsZCBtb3ZlIHRv
IHRoZSBzdGF0ZWZ1bCBtb2RlbCBhbmQgaW5zdGVhZCBjcmVhdGUKKyAgICAvLyBzdGF0ZXMgZm9y
IGFsbCB0aGUgIm5leHQgMyBjb2RlcG9pbnRzIGFyZSBYIiBjYXNlcy4KKyAgICAvLyBTdGF0ZS1t
YWNoaW5lIHRva2VuaXplcnMgYXJlIGVhc2llciB0byB3cml0ZSB0byBoYW5kbGUKKyAgICAvLyBp
bmNyZW1lbnRhbCB0b2tlbml6YXRpb24gb2YgcGFydGlhbCBzb3VyY2VzLgorICAgIC8vIEhvd2V2
ZXIsIGZvciBub3cgd2UgZm9sbG93IHRoZSBzcGVjIGV4YWN0bHkuCisgICAgVUNoYXIgY2MgPSBj
b25zdW1lKCk7CisgICAgQ29kZVBvaW50IGNvZGVQb2ludEZ1bmMgPSAwOworCisgICAgaWYgKGlz
QVNDSUkoY2MpKSB7CisgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGNj
IDwgY29kZVBvaW50c051bWJlcik7CisgICAgICAgIGNvZGVQb2ludEZ1bmMgPSBjb2RlUG9pbnRz
W2NjXTsKKyAgICB9IGVsc2UKKyAgICAgICAgY29kZVBvaW50RnVuYyA9ICZDU1NUb2tlbml6ZXI6
Om5hbWVTdGFydDsKKworICAgIGlmIChjb2RlUG9pbnRGdW5jKQorICAgICAgICByZXR1cm4gKCh0
aGlzKS0+Kihjb2RlUG9pbnRGdW5jKSkoY2MpOworICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihE
ZWxpbWl0ZXJUb2tlbiwgY2MpOworfQorCisvLyBUaGlzIG1ldGhvZCBtZXJnZXMgdGhlIGZvbGxv
d2luZyBzcGVjIHNlY3Rpb25zIGZvciBlZmZpY2llbmN5CisvLyBodHRwOi8vd3d3LnczLm9yZy9U
Ui9jc3MzLXN5bnRheC8jY29uc3VtZS1hLW51bWJlcgorLy8gaHR0cDovL3d3dy53My5vcmcvVFIv
Y3NzMy1zeW50YXgvI2NvbnZlcnQtYS1zdHJpbmctdG8tYS1udW1iZXIKK0NTU1BhcnNlclRva2Vu
IENTU1Rva2VuaXplcjo6Y29uc3VtZU51bWJlcigpCit7CisgICAgQVNTRVJUKG5leHRDaGFyc0Fy
ZU51bWJlcigpKTsKKworICAgIE51bWVyaWNWYWx1ZVR5cGUgdHlwZSA9IEludGVnZXJWYWx1ZVR5
cGU7CisgICAgTnVtZXJpY1NpZ24gc2lnbiA9IE5vU2lnbjsKKyAgICB1bnNpZ25lZCBudW1iZXJM
ZW5ndGggPSAwOworCisgICAgVUNoYXIgbmV4dCA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNl
bWVudCgwKTsKKyAgICBpZiAobmV4dCA9PSAnKycpIHsKKyAgICAgICAgKytudW1iZXJMZW5ndGg7
CisgICAgICAgIHNpZ24gPSBQbHVzU2lnbjsKKyAgICB9IGVsc2UgaWYgKG5leHQgPT0gJy0nKSB7
CisgICAgICAgICsrbnVtYmVyTGVuZ3RoOworICAgICAgICBzaWduID0gTWludXNTaWduOworICAg
IH0KKworICAgIG51bWJlckxlbmd0aCA9IG1faW5wdXQuc2tpcFdoaWxlUHJlZGljYXRlPGlzQVND
SUlEaWdpdD4obnVtYmVyTGVuZ3RoKTsKKyAgICBuZXh0ID0gbV9pbnB1dC5wZWVrV2l0aG91dFJl
cGxhY2VtZW50KG51bWJlckxlbmd0aCk7CisgICAgaWYgKG5leHQgPT0gJy4nICYmIGlzQVNDSUlE
aWdpdChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQobnVtYmVyTGVuZ3RoICsgMSkpKSB7
CisgICAgICAgIHR5cGUgPSBOdW1iZXJWYWx1ZVR5cGU7CisgICAgICAgIG51bWJlckxlbmd0aCA9
IG1faW5wdXQuc2tpcFdoaWxlUHJlZGljYXRlPGlzQVNDSUlEaWdpdD4obnVtYmVyTGVuZ3RoICsg
Mik7CisgICAgICAgIG5leHQgPSBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQobnVtYmVy
TGVuZ3RoKTsKKyAgICB9CisKKyAgICBpZiAobmV4dCA9PSAnRScgfHwgbmV4dCA9PSAnZScpIHsK
KyAgICAgICAgbmV4dCA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudChudW1iZXJMZW5n
dGggKyAxKTsKKyAgICAgICAgaWYgKGlzQVNDSUlEaWdpdChuZXh0KSkgeworICAgICAgICAgICAg
dHlwZSA9IE51bWJlclZhbHVlVHlwZTsKKyAgICAgICAgICAgIG51bWJlckxlbmd0aCA9IG1faW5w
dXQuc2tpcFdoaWxlUHJlZGljYXRlPGlzQVNDSUlEaWdpdD4obnVtYmVyTGVuZ3RoICsgMSk7Cisg
ICAgICAgIH0gZWxzZSBpZiAoKG5leHQgPT0gJysnIHx8IG5leHQgPT0gJy0nKSAmJiBpc0FTQ0lJ
RGlnaXQobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KG51bWJlckxlbmd0aCArIDIpKSkg
eworICAgICAgICAgICAgdHlwZSA9IE51bWJlclZhbHVlVHlwZTsKKyAgICAgICAgICAgIG51bWJl
ckxlbmd0aCA9IG1faW5wdXQuc2tpcFdoaWxlUHJlZGljYXRlPGlzQVNDSUlEaWdpdD4obnVtYmVy
TGVuZ3RoICsgMyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBkb3VibGUgdmFsdWUgPSBtX2lu
cHV0LmdldERvdWJsZSgwLCBudW1iZXJMZW5ndGgpOworICAgIG1faW5wdXQuYWR2YW5jZShudW1i
ZXJMZW5ndGgpOworCisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKE51bWJlclRva2VuLCB2YWx1
ZSwgdHlwZSwgc2lnbik7Cit9CisKKy8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtc3ludGF4
LyNjb25zdW1lLWEtbnVtZXJpYy10b2tlbgorQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpj
b25zdW1lTnVtZXJpY1Rva2VuKCkKK3sKKyAgICBDU1NQYXJzZXJUb2tlbiB0b2tlbiA9IGNvbnN1
bWVOdW1iZXIoKTsKKyAgICBpZiAobmV4dENoYXJzQXJlSWRlbnRpZmllcigpKQorICAgICAgICB0
b2tlbi5jb252ZXJ0VG9EaW1lbnNpb25XaXRoVW5pdChjb25zdW1lTmFtZSgpKTsKKyAgICBlbHNl
IGlmIChjb25zdW1lSWZOZXh0KCclJykpCisgICAgICAgIHRva2VuLmNvbnZlcnRUb1BlcmNlbnRh
Z2UoKTsKKyAgICByZXR1cm4gdG9rZW47Cit9CisKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dn
L2Nzcy1zeW50YXgvI2NvbnN1bWUtaWRlbnQtbGlrZS10b2tlbgorQ1NTUGFyc2VyVG9rZW4gQ1NT
VG9rZW5pemVyOjpjb25zdW1lSWRlbnRMaWtlVG9rZW4oKQoreworICAgIFN0cmluZ1ZpZXcgbmFt
ZSA9IGNvbnN1bWVOYW1lKCk7CisgICAgaWYgKGNvbnN1bWVJZk5leHQoJygnKSkgeworICAgICAg
ICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAidXJsIikpIHsKKyAgICAgICAgICAg
IC8vIFRoZSBzcGVjIGlzIHNsaWdodGx5IGRpZmZlcmVudCBzbyBhcyB0byBhdm9pZCBkcm9wcGlu
ZyB3aGl0ZXNwYWNlCisgICAgICAgICAgICAvLyB0b2tlbnMsIGJ1dCB0aGV5IHdvdWxkbid0IGJl
IHVzZWQgYW5kIHRoaXMgaXMgZWFzaWVyLgorICAgICAgICAgICAgbV9pbnB1dC5hZHZhbmNlVW50
aWxOb25XaGl0ZXNwYWNlKCk7CisgICAgICAgICAgICBVQ2hhciBuZXh0ID0gbV9pbnB1dC5wZWVr
V2l0aG91dFJlcGxhY2VtZW50KDApOworICAgICAgICAgICAgaWYgKG5leHQgIT0gJyInICYmIG5l
eHQgIT0gJ1wnJykKKyAgICAgICAgICAgICAgICByZXR1cm4gY29uc3VtZVVybFRva2VuKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJsb2NrU3RhcnQoTGVmdFBhcmVudGhlc2lzVG9rZW4s
IEZ1bmN0aW9uVG9rZW4sIG5hbWUpOworICAgIH0KKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4o
SWRlbnRUb2tlbiwgbmFtZSk7Cit9CisKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1z
eW50YXgvI2NvbnN1bWUtYS1zdHJpbmctdG9rZW4KK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXpl
cjo6Y29uc3VtZVN0cmluZ1Rva2VuVW50aWwoVUNoYXIgZW5kaW5nQ29kZVBvaW50KQoreworICAg
IC8vIFN0cmluZ3Mgd2l0aG91dCBlc2NhcGVzIGdldCBoYW5kbGVkIHdpdGhvdXQgYWxsb2NhdGlv
bnMKKyAgICBmb3IgKHVuc2lnbmVkIHNpemUgPSAwOyA7IHNpemUrKykgeworICAgICAgICBVQ2hh
ciBjYyA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudChzaXplKTsKKyAgICAgICAgaWYg
KGNjID09IGVuZGluZ0NvZGVQb2ludCkgeworICAgICAgICAgICAgdW5zaWduZWQgc3RhcnRPZmZz
ZXQgPSBtX2lucHV0Lm9mZnNldCgpOworICAgICAgICAgICAgbV9pbnB1dC5hZHZhbmNlKHNpemUg
KyAxKTsKKyAgICAgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihTdHJpbmdUb2tlbiwgbV9p
bnB1dC5yYW5nZUF0KHN0YXJ0T2Zmc2V0LCBzaXplKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGlzTmV3TGluZShjYykpIHsKKyAgICAgICAgICAgIG1faW5wdXQuYWR2YW5jZShzaXplKTsKKyAg
ICAgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihCYWRTdHJpbmdUb2tlbik7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKGNjID09ICdcMCcgfHwgY2MgPT0gJ1xcJykKKyAgICAgICAgICAgIGJy
ZWFrOworICAgIH0KKworICAgIFN0cmluZ0J1aWxkZXIgb3V0cHV0OworICAgIHdoaWxlICh0cnVl
KSB7CisgICAgICAgIFVDaGFyIGNjID0gY29uc3VtZSgpOworICAgICAgICBpZiAoY2MgPT0gZW5k
aW5nQ29kZVBvaW50IHx8IGNjID09IGtFbmRPZkZpbGVNYXJrZXIpCisgICAgICAgICAgICByZXR1
cm4gQ1NTUGFyc2VyVG9rZW4oU3RyaW5nVG9rZW4sIHJlZ2lzdGVyU3RyaW5nKG91dHB1dC50b1N0
cmluZygpKSk7CisgICAgICAgIGlmIChpc05ld0xpbmUoY2MpKSB7CisgICAgICAgICAgICByZWNv
bnN1bWUoY2MpOworICAgICAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKEJhZFN0cmluZ1Rv
a2VuKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2MgPT0gJ1xcJykgeworICAgICAgICAgICAg
aWYgKG1faW5wdXQubmV4dElucHV0Q2hhcigpID09IGtFbmRPZkZpbGVNYXJrZXIpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoaXNOZXdMaW5lKG1faW5wdXQucGVl
a1dpdGhvdXRSZXBsYWNlbWVudCgwKSkpCisgICAgICAgICAgICAgICAgY29uc3VtZVNpbmdsZVdo
aXRlc3BhY2VJZk5leHQoKTsgLy8gVGhpcyBoYW5kbGVzIFxyXG4gZm9yIHVzCisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZChjb25zdW1lRXNjYXBlKCkpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoY2MpOworICAgIH0KK30K
KworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjb25zdW1lVW5pY29kZVJhbmdlKCkKK3sK
KyAgICBBU1NFUlQoaXNBU0NJSUhleERpZ2l0KG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVu
dCgwKSkgfHwgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApID09ICc/Jyk7CisgICAg
aW50IGxlbmd0aFJlbWFpbmluZyA9IDY7CisgICAgVUNoYXIzMiBzdGFydCA9IDA7CisKKyAgICB3
aGlsZSAobGVuZ3RoUmVtYWluaW5nICYmIGlzQVNDSUlIZXhEaWdpdChtX2lucHV0LnBlZWtXaXRo
b3V0UmVwbGFjZW1lbnQoMCkpKSB7CisgICAgICAgIHN0YXJ0ID0gc3RhcnQgKiAxNiArIHRvQVND
SUlIZXhWYWx1ZShjb25zdW1lKCkpOworICAgICAgICAtLWxlbmd0aFJlbWFpbmluZzsKKyAgICB9
CisKKyAgICBVQ2hhcjMyIGVuZCA9IHN0YXJ0OworICAgIGlmIChsZW5ndGhSZW1haW5pbmcgJiYg
Y29uc3VtZUlmTmV4dCgnPycpKSB7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIHN0YXJ0ICo9
IDE2OworICAgICAgICAgICAgZW5kID0gZW5kICogMTYgKyAweEY7CisgICAgICAgICAgICAtLWxl
bmd0aFJlbWFpbmluZzsKKyAgICAgICAgfSB3aGlsZSAobGVuZ3RoUmVtYWluaW5nICYmIGNvbnN1
bWVJZk5leHQoJz8nKSk7CisgICAgfSBlbHNlIGlmIChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFj
ZW1lbnQoMCkgPT0gJy0nICYmIGlzQVNDSUlIZXhEaWdpdChtX2lucHV0LnBlZWtXaXRob3V0UmVw
bGFjZW1lbnQoMSkpKSB7CisgICAgICAgIG1faW5wdXQuYWR2YW5jZSgpOworICAgICAgICBsZW5n
dGhSZW1haW5pbmcgPSA2OworICAgICAgICBlbmQgPSAwOworICAgICAgICBkbyB7CisgICAgICAg
ICAgICBlbmQgPSBlbmQgKiAxNiArIHRvQVNDSUlIZXhWYWx1ZShjb25zdW1lKCkpOworICAgICAg
ICAgICAgLS1sZW5ndGhSZW1haW5pbmc7CisgICAgICAgIH0gd2hpbGUgKGxlbmd0aFJlbWFpbmlu
ZyAmJiBpc0FTQ0lJSGV4RGlnaXQobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApKSk7
CisgICAgfQorCisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKFVuaWNvZGVSYW5nZVRva2VuLCBz
dGFydCwgZW5kKTsKK30KKworLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXN5bnRheC8j
bm9uLXByaW50YWJsZS1jb2RlLXBvaW50CitzdGF0aWMgYm9vbCBpc05vblByaW50YWJsZUNvZGVQ
b2ludChVQ2hhciBjYykKK3sKKyAgICByZXR1cm4gY2MgPD0gJ1x4OCcgfHwgY2MgPT0gJ1x4Yicg
fHwgKGNjID49ICdceGUnICYmIGNjIDw9ICdceDFmJykgfHwgY2MgPT0gJ1x4N2YnOworfQorCisv
LyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3Mtc3ludGF4LyNjb25zdW1lLXVybC10b2tlbgor
Q1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjb25zdW1lVXJsVG9rZW4oKQoreworICAgIG1f
aW5wdXQuYWR2YW5jZVVudGlsTm9uV2hpdGVzcGFjZSgpOworCisgICAgLy8gVVJMIHRva2VucyB3
aXRob3V0IGVzY2FwZXMgZ2V0IGhhbmRsZWQgd2l0aG91dCBhbGxvY2F0aW9ucworICAgIGZvciAo
dW5zaWduZWQgc2l6ZSA9IDA7IDsgc2l6ZSsrKSB7CisgICAgICAgIFVDaGFyIGNjID0gbV9pbnB1
dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KHNpemUpOworICAgICAgICBpZiAoY2MgPT0gJyknKSB7
CisgICAgICAgICAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IG1faW5wdXQub2Zmc2V0KCk7Cisg
ICAgICAgICAgICBtX2lucHV0LmFkdmFuY2Uoc2l6ZSArIDEpOworICAgICAgICAgICAgcmV0dXJu
IENTU1BhcnNlclRva2VuKFVybFRva2VuLCBtX2lucHV0LnJhbmdlQXQoc3RhcnRPZmZzZXQsIHNp
emUpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2MgPD0gJyAnIHx8IGNjID09ICdcXCcgfHwg
Y2MgPT0gJyInIHx8IGNjID09ICdcJycgfHwgY2MgPT0gJygnIHx8IGNjID09ICdceDdmJykKKyAg
ICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAg
IHdoaWxlICh0cnVlKSB7CisgICAgICAgIFVDaGFyIGNjID0gY29uc3VtZSgpOworICAgICAgICBp
ZiAoY2MgPT0gJyknIHx8IGNjID09IGtFbmRPZkZpbGVNYXJrZXIpCisgICAgICAgICAgICByZXR1
cm4gQ1NTUGFyc2VyVG9rZW4oVXJsVG9rZW4sIHJlZ2lzdGVyU3RyaW5nKHJlc3VsdC50b1N0cmlu
ZygpKSk7CisKKyAgICAgICAgaWYgKGlzSFRNTFNwYWNlKGNjKSkgeworICAgICAgICAgICAgbV9p
bnB1dC5hZHZhbmNlVW50aWxOb25XaGl0ZXNwYWNlKCk7CisgICAgICAgICAgICBpZiAoY29uc3Vt
ZUlmTmV4dCgnKScpIHx8IG1faW5wdXQubmV4dElucHV0Q2hhcigpID09IGtFbmRPZkZpbGVNYXJr
ZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKFVybFRva2VuLCByZWdp
c3RlclN0cmluZyhyZXN1bHQudG9TdHJpbmcoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoY2MgPT0gJyInIHx8IGNjID09ICdcJycgfHwgY2MgPT0gJygn
IHx8IGlzTm9uUHJpbnRhYmxlQ29kZVBvaW50KGNjKSkKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGlmIChjYyA9PSAnXFwnKSB7CisgICAgICAgICAgICBpZiAodHdvQ2hhcnNBcmVWYWxp
ZEVzY2FwZShjYywgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApKSkgeworICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY29uc3VtZUVzY2FwZSgpKTsKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKKyAgICAgICAgcmVzdWx0LmFwcGVuZChjYyk7CisgICAgfQorCisgICAgY29uc3VtZUJhZFVy
bFJlbW5hbnRzKCk7CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKEJhZFVybFRva2VuKTsKK30K
KworLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXN5bnRheC8jY29uc3VtZS10aGUtcmVt
bmFudHMtb2YtYS1iYWQtdXJsCit2b2lkIENTU1Rva2VuaXplcjo6Y29uc3VtZUJhZFVybFJlbW5h
bnRzKCkKK3sKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBVQ2hhciBjYyA9IGNvbnN1bWUo
KTsKKyAgICAgICAgaWYgKGNjID09ICcpJyB8fCBjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAodHdvQ2hhcnNBcmVWYWxpZEVzY2FwZShjYywg
bV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApKSkKKyAgICAgICAgICAgIGNvbnN1bWVF
c2NhcGUoKTsKKyAgICB9Cit9CisKK3ZvaWQgQ1NTVG9rZW5pemVyOjpjb25zdW1lU2luZ2xlV2hp
dGVzcGFjZUlmTmV4dCgpCit7CisgICAgLy8gV2UgY2hlY2sgZm9yIFxyXG4gYW5kIEhUTUwgc3Bh
Y2VzIHNpbmNlIHdlIGRvbid0IGRvIHByZXByb2Nlc3NpbmcKKyAgICBVQ2hhciBuZXh0ID0gbV9p
bnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApOworICAgIGlmIChuZXh0ID09ICdccicgJiYg
bV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDEpID09ICdcbicpCisgICAgICAgIG1faW5w
dXQuYWR2YW5jZSgyKTsKKyAgICBlbHNlIGlmIChpc0hUTUxTcGFjZShuZXh0KSkKKyAgICAgICAg
bV9pbnB1dC5hZHZhbmNlKCk7Cit9CisKK3ZvaWQgQ1NTVG9rZW5pemVyOjpjb25zdW1lVW50aWxD
b21tZW50RW5kRm91bmQoKQoreworICAgIFVDaGFyIGMgPSBjb25zdW1lKCk7CisgICAgd2hpbGUg
KHRydWUpIHsKKyAgICAgICAgaWYgKGMgPT0ga0VuZE9mRmlsZU1hcmtlcikKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgaWYgKGMgIT0gJyonKSB7CisgICAgICAgICAgICBjID0gY29uc3Vt
ZSgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgYyA9IGNvbnN1
bWUoKTsKKyAgICAgICAgaWYgKGMgPT0gJy8nKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0K
K30KKworYm9vbCBDU1NUb2tlbml6ZXI6OmNvbnN1bWVJZk5leHQoVUNoYXIgY2hhcmFjdGVyKQor
eworICAgIC8vIFNpbmNlIHdlJ3JlIG5vdCBkb2luZyByZXBsYWNlbWVudCB3ZSBjYW4ndCB0ZWxs
IHRoZSBkaWZmZXJlbmNlIGZyb20KKyAgICAvLyBhIE5VTCBpbiB0aGUgbWlkZGxlIGFuZCB0aGUg
a0VuZE9mRmlsZU1hcmtlciwgc28gY2hhcmFjdGVyIG11c3Qgbm90IGJlCisgICAgLy8gTlVMLgor
ICAgIEFTU0VSVChjaGFyYWN0ZXIpOworICAgIGlmIChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFj
ZW1lbnQoMCkgPT0gY2hhcmFjdGVyKSB7CisgICAgICAgIG1faW5wdXQuYWR2YW5jZSgpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCisvLyBodHRw
Oi8vd3d3LnczLm9yZy9UUi9jc3MzLXN5bnRheC8jY29uc3VtZS1hLW5hbWUKK1N0cmluZ1ZpZXcg
Q1NTVG9rZW5pemVyOjpjb25zdW1lTmFtZSgpCit7CisgICAgLy8gTmFtZXMgd2l0aG91dCBlc2Nh
cGVzIGdldCBoYW5kbGVkIHdpdGhvdXQgYWxsb2NhdGlvbnMKKyAgICBmb3IgKHVuc2lnbmVkIHNp
emUgPSAwOyA7ICsrc2l6ZSkgeworICAgICAgICBVQ2hhciBjYyA9IG1faW5wdXQucGVla1dpdGhv
dXRSZXBsYWNlbWVudChzaXplKTsKKyAgICAgICAgaWYgKGlzTmFtZUNvZGVQb2ludChjYykpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgLy8gcGVla1dpdGhvdXRSZXBsYWNlbWVudCB3
aWxsIHJldHVybiBOVUwgd2hlbiB3ZSBoaXQgdGhlIGVuZCBvZiB0aGUKKyAgICAgICAgLy8gaW5w
dXQuIEluIHRoYXQgY2FzZSB3ZSB3YW50IHRvIHN0aWxsIHVzZSB0aGUgcmFuZ2VBdCgpIGZhc3Qg
cGF0aAorICAgICAgICAvLyBiZWxvdy4KKyAgICAgICAgaWYgKGNjID09ICdcMCcgJiYgbV9pbnB1
dC5vZmZzZXQoKSArIHNpemUgPCBtX2lucHV0Lmxlbmd0aCgpKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGlmIChjYyA9PSAnXFwnKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0ID0gbV9pbnB1dC5vZmZzZXQoKTsKKyAgICAgICAgbV9pbnB1dC5h
ZHZhbmNlKHNpemUpOworICAgICAgICByZXR1cm4gbV9pbnB1dC5yYW5nZUF0KHN0YXJ0T2Zmc2V0
LCBzaXplKTsKKyAgICB9CisKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKKyAgICB3aGlsZSAo
dHJ1ZSkgeworICAgICAgICBVQ2hhciBjYyA9IGNvbnN1bWUoKTsKKyAgICAgICAgaWYgKGlzTmFt
ZUNvZGVQb2ludChjYykpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2MpOworICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHR3b0NoYXJzQXJlVmFsaWRF
c2NhcGUoY2MsIG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSkpIHsKKyAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoY29uc3VtZUVzY2FwZSgpKTsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisgICAgICAgIHJlY29uc3VtZShjYyk7CisgICAgICAgIHJldHVybiByZWdp
c3RlclN0cmluZyhyZXN1bHQudG9TdHJpbmcoKSk7CisgICAgfQorfQorCisvLyBodHRwOi8vZGV2
LnczLm9yZy9jc3N3Zy9jc3Mtc3ludGF4LyNjb25zdW1lLWFuLWVzY2FwZWQtY29kZS1wb2ludAor
VUNoYXIzMiBDU1NUb2tlbml6ZXI6OmNvbnN1bWVFc2NhcGUoKQoreworICAgIFVDaGFyIGNjID0g
Y29uc3VtZSgpOworICAgIEFTU0VSVCghaXNOZXdMaW5lKGNjKSk7CisgICAgaWYgKGlzQVNDSUlI
ZXhEaWdpdChjYykpIHsKKyAgICAgICAgdW5zaWduZWQgY29uc3VtZWRIZXhEaWdpdHMgPSAxOwor
ICAgICAgICBTdHJpbmdCdWlsZGVyIGhleENoYXJzOworICAgICAgICBoZXhDaGFycy5hcHBlbmQo
Y2MpOworICAgICAgICB3aGlsZSAoY29uc3VtZWRIZXhEaWdpdHMgPCA2ICYmIGlzQVNDSUlIZXhE
aWdpdChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkpKSB7CisgICAgICAgICAgICBj
YyA9IGNvbnN1bWUoKTsKKyAgICAgICAgICAgIGhleENoYXJzLmFwcGVuZChjYyk7CisgICAgICAg
ICAgICBjb25zdW1lZEhleERpZ2l0cysrOworICAgICAgICB9OworICAgICAgICBjb25zdW1lU2lu
Z2xlV2hpdGVzcGFjZUlmTmV4dCgpOworICAgICAgICBib29sIG9rID0gZmFsc2U7CisgICAgICAg
IFVDaGFyMzIgY29kZVBvaW50ID0gaGV4Q2hhcnMudG9TdHJpbmcoKS50b1VJbnRTdHJpY3QoJm9r
LCAxNik7CisgICAgICAgIEFTU0VSVChvayk7CisgICAgICAgIGlmICghY29kZVBvaW50IHx8ICgw
eEQ4MDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweERGRkYpIHx8IGNvZGVQb2ludCA+
IDB4MTBGRkZGKQorICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VtZW50Q2hhcmFjdGVyOworICAg
ICAgICByZXR1cm4gY29kZVBvaW50OworICAgIH0KKworICAgIGlmIChjYyA9PSBrRW5kT2ZGaWxl
TWFya2VyKQorICAgICAgICByZXR1cm4gcmVwbGFjZW1lbnRDaGFyYWN0ZXI7CisgICAgcmV0dXJu
IGNjOworfQorCitib29sIENTU1Rva2VuaXplcjo6bmV4dFR3b0NoYXJzQXJlVmFsaWRFc2NhcGUo
KQoreworICAgIHJldHVybiB0d29DaGFyc0FyZVZhbGlkRXNjYXBlKG1faW5wdXQucGVla1dpdGhv
dXRSZXBsYWNlbWVudCgwKSwgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDEpKTsKK30K
KworLy8gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1zeW50YXgvI3N0YXJ0cy13aXRoLWEtbnVt
YmVyCitib29sIENTU1Rva2VuaXplcjo6bmV4dENoYXJzQXJlTnVtYmVyKFVDaGFyIGZpcnN0KQor
eworICAgIFVDaGFyIHNlY29uZCA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKTsK
KyAgICBpZiAoaXNBU0NJSURpZ2l0KGZpcnN0KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
aWYgKGZpcnN0ID09ICcrJyB8fCBmaXJzdCA9PSAnLScpCisgICAgICAgIHJldHVybiAoKGlzQVND
SUlEaWdpdChzZWNvbmQpKSB8fCAoc2Vjb25kID09ICcuJyAmJiBpc0FTQ0lJRGlnaXQobV9pbnB1
dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDEpKSkpOworICAgIGlmIChmaXJzdCA9PScuJykKKyAg
ICAgICAgcmV0dXJuIChpc0FTQ0lJRGlnaXQoc2Vjb25kKSk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIENTU1Rva2VuaXplcjo6bmV4dENoYXJzQXJlTnVtYmVyKCkKK3sKKyAgICBVQ2hh
ciBmaXJzdCA9IGNvbnN1bWUoKTsKKyAgICBib29sIGFyZU51bWJlciA9IG5leHRDaGFyc0FyZU51
bWJlcihmaXJzdCk7CisgICAgcmVjb25zdW1lKGZpcnN0KTsKKyAgICByZXR1cm4gYXJlTnVtYmVy
OworfQorCisvLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3Mtc3ludGF4LyN3b3VsZC1zdGFy
dC1hbi1pZGVudGlmaWVyCitib29sIENTU1Rva2VuaXplcjo6bmV4dENoYXJzQXJlSWRlbnRpZmll
cihVQ2hhciBmaXJzdCkKK3sKKyAgICBVQ2hhciBzZWNvbmQgPSBtX2lucHV0LnBlZWtXaXRob3V0
UmVwbGFjZW1lbnQoMCk7CisgICAgaWYgKGlzTmFtZVN0YXJ0Q29kZVBvaW50KGZpcnN0KSB8fCB0
d29DaGFyc0FyZVZhbGlkRXNjYXBlKGZpcnN0LCBzZWNvbmQpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgIGlmIChmaXJzdCA9PSAnLScpCisgICAgICAgIHJldHVybiBpc05hbWVTdGFydENv
ZGVQb2ludChzZWNvbmQpIHx8IHNlY29uZCA9PSAnLScgfHwgbmV4dFR3b0NoYXJzQXJlVmFsaWRF
c2NhcGUoKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBDU1NUb2tlbml6ZXI6Om5l
eHRDaGFyc0FyZUlkZW50aWZpZXIoKQoreworICAgIFVDaGFyIGZpcnN0ID0gY29uc3VtZSgpOwor
ICAgIGJvb2wgYXJlSWRlbnRpZmllciA9IG5leHRDaGFyc0FyZUlkZW50aWZpZXIoZmlyc3QpOwor
ICAgIHJlY29uc3VtZShmaXJzdCk7CisgICAgcmV0dXJuIGFyZUlkZW50aWZpZXI7Cit9CisKK1N0
cmluZ1ZpZXcgQ1NTVG9rZW5pemVyOjpyZWdpc3RlclN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmlu
ZykKK3sKKyAgICBtX3Njb3BlLnN0b3JlU3RyaW5nKHN0cmluZyk7CisgICAgcmV0dXJuIHN0cmlu
ZzsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NUb2tlbml6ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1Rva2VuaXplci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTVG9rZW5pemVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzkgQEAK
Ky8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8v
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
Ly8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZuZGVm
IENTU1Rva2VuaXplcl9oCisjZGVmaW5lIENTU1Rva2VuaXplcl9oCisKKyNpbmNsdWRlICJDU1NQ
YXJzZXJUb2tlbi5oIgorI2luY2x1ZGUgIklucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmgiCisjaW5j
bHVkZSA8Y2xpbWl0cz4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
Q1NTVG9rZW5pemVySW5wdXRTdHJlYW07CitjbGFzcyBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI7
CitjbGFzcyBDU1NQYXJzZXJUb2tlblJhbmdlOworCitjbGFzcyBDU1NUb2tlbml6ZXIgeworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKENTU1Rva2VuaXplcik7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgY2xhc3MgU2NvcGUgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgU2NvcGUoY29uc3QgU3RyaW5nJik7CisgICAgICAgIFNjb3BlKGNvbnN0IFN0cmluZyYsIENT
U1BhcnNlck9ic2VydmVyV3JhcHBlciYpOyAvLyBGb3IgdGhlIGluc3BlY3RvcgorCisgICAgICAg
IENTU1BhcnNlclRva2VuUmFuZ2UgdG9rZW5SYW5nZSgpOworICAgICAgICB1bnNpZ25lZCB0b2tl
bkNvdW50KCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICB2b2lkIHN0b3JlU3RyaW5nKGNvbnN0
IFN0cmluZyYgc3RyaW5nKSB7IG1fc3RyaW5nUG9vbC5hcHBlbmQoc3RyaW5nKTsgfQorICAgICAg
ICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4sIDMyPiBtX3Rva2VuczsKKyAgICAgICAgLy8gV2Ugb25s
eSBhbGxvY2F0ZSBzdHJpbmdzIHdoZW4gZXNjYXBlcyBhcmUgdXNlZC4KKyAgICAgICAgVmVjdG9y
PFN0cmluZz4gbV9zdHJpbmdQb29sOworICAgICAgICBTdHJpbmcgbV9zdHJpbmc7CisKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIENTU1Rva2VuaXplcjsKKyAgICB9OworCitwcml2YXRlOgorICAgIENT
U1Rva2VuaXplcihDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbSYsIFNjb3BlJik7CisKKyAgICBDU1NQ
YXJzZXJUb2tlbiBuZXh0VG9rZW4oKTsKKworICAgIFVDaGFyIGNvbnN1bWUoKTsKKyAgICB2b2lk
IHJlY29uc3VtZShVQ2hhcik7CisKKyAgICBDU1NQYXJzZXJUb2tlbiBjb25zdW1lTnVtZXJpY1Rv
a2VuKCk7CisgICAgQ1NTUGFyc2VyVG9rZW4gY29uc3VtZUlkZW50TGlrZVRva2VuKCk7CisgICAg
Q1NTUGFyc2VyVG9rZW4gY29uc3VtZU51bWJlcigpOworICAgIENTU1BhcnNlclRva2VuIGNvbnN1
bWVTdHJpbmdUb2tlblVudGlsKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBjb25zdW1lVW5p
Y29kZVJhbmdlKCk7CisgICAgQ1NTUGFyc2VyVG9rZW4gY29uc3VtZVVybFRva2VuKCk7CisKKyAg
ICB2b2lkIGNvbnN1bWVCYWRVcmxSZW1uYW50cygpOworICAgIHZvaWQgY29uc3VtZVNpbmdsZVdo
aXRlc3BhY2VJZk5leHQoKTsKKyAgICB2b2lkIGNvbnN1bWVVbnRpbENvbW1lbnRFbmRGb3VuZCgp
OworCisgICAgYm9vbCBjb25zdW1lSWZOZXh0KFVDaGFyKTsKKyAgICBTdHJpbmdWaWV3IGNvbnN1
bWVOYW1lKCk7CisgICAgVUNoYXIzMiBjb25zdW1lRXNjYXBlKCk7CisKKyAgICBib29sIG5leHRU
d29DaGFyc0FyZVZhbGlkRXNjYXBlKCk7CisgICAgYm9vbCBuZXh0Q2hhcnNBcmVOdW1iZXIoVUNo
YXIpOworICAgIGJvb2wgbmV4dENoYXJzQXJlTnVtYmVyKCk7CisgICAgYm9vbCBuZXh0Q2hhcnNB
cmVJZGVudGlmaWVyKFVDaGFyKTsKKyAgICBib29sIG5leHRDaGFyc0FyZUlkZW50aWZpZXIoKTsK
KworICAgIENTU1BhcnNlclRva2VuIGJsb2NrU3RhcnQoQ1NTUGFyc2VyVG9rZW5UeXBlKTsKKyAg
ICBDU1NQYXJzZXJUb2tlbiBibG9ja1N0YXJ0KENTU1BhcnNlclRva2VuVHlwZSBibG9ja1R5cGUs
IENTU1BhcnNlclRva2VuVHlwZSwgU3RyaW5nVmlldyk7CisgICAgQ1NTUGFyc2VyVG9rZW4gYmxv
Y2tFbmQoQ1NTUGFyc2VyVG9rZW5UeXBlLCBDU1NQYXJzZXJUb2tlblR5cGUgc3RhcnRUeXBlKTsK
KworICAgIENTU1BhcnNlclRva2VuIHdoaXRlU3BhY2UoVUNoYXIpOworICAgIENTU1BhcnNlclRv
a2VuIGxlZnRQYXJlbnRoZXNpcyhVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gcmlnaHRQYXJl
bnRoZXNpcyhVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gbGVmdEJyYWNrZXQoVUNoYXIpOwor
ICAgIENTU1BhcnNlclRva2VuIHJpZ2h0QnJhY2tldChVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9r
ZW4gbGVmdEJyYWNlKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiByaWdodEJyYWNlKFVDaGFy
KTsKKyAgICBDU1NQYXJzZXJUb2tlbiBwbHVzT3JGdWxsU3RvcChVQ2hhcik7CisgICAgQ1NTUGFy
c2VyVG9rZW4gY29tbWEoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIGh5cGhlbk1pbnVzKFVD
aGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBhc3RlcmlzayhVQ2hhcik7CisgICAgQ1NTUGFyc2Vy
VG9rZW4gbGVzc1RoYW4oVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIHNvbGlkdXMoVUNoYXIp
OworICAgIENTU1BhcnNlclRva2VuIGNvbG9uKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBz
ZW1pQ29sb24oVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIGhhc2goVUNoYXIpOworICAgIENT
U1BhcnNlclRva2VuIGNpcmN1bWZsZXhBY2NlbnQoVUNoYXIpOworICAgIENTU1BhcnNlclRva2Vu
IGRvbGxhclNpZ24oVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIHZlcnRpY2FsTGluZShVQ2hh
cik7CisgICAgQ1NTUGFyc2VyVG9rZW4gdGlsZGUoVUNoYXIpOworICAgIENTU1BhcnNlclRva2Vu
IGNvbW1lcmNpYWxBdChVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gcmV2ZXJzZVNvbGlkdXMo
VUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIGFzY2lpRGlnaXQoVUNoYXIpOworICAgIENTU1Bh
cnNlclRva2VuIGxldHRlclUoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIG5hbWVTdGFydChV
Q2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gc3RyaW5nU3RhcnQoVUNoYXIpOworICAgIENTU1Bh
cnNlclRva2VuIGVuZE9mRmlsZShVQ2hhcik7CisKKyAgICBTdHJpbmdWaWV3IHJlZ2lzdGVyU3Ry
aW5nKGNvbnN0IFN0cmluZyYpOworCisgICAgdXNpbmcgQ29kZVBvaW50ID0gQ1NTUGFyc2VyVG9r
ZW4gKENTU1Rva2VuaXplcjo6KikoVUNoYXIpOworICAgIHN0YXRpYyBjb25zdCBDb2RlUG9pbnQg
Y29kZVBvaW50c1tdOworCisgICAgVmVjdG9yPENTU1BhcnNlclRva2VuVHlwZSwgOD4gbV9ibG9j
a1N0YWNrOworICAgIENTU1Rva2VuaXplcklucHV0U3RyZWFtJiBtX2lucHV0OworICAgIFNjb3Bl
JiBtX3Njb3BlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ1NT
VG9rZW5pemVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVy
SW5wdXRTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNzIgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
Ky8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTVG9rZW5pemVySW5w
dXRTdHJlYW0uaCIKKworI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbTo6Q1NTVG9rZW5pemVySW5wdXRT
dHJlYW0oU3RyaW5nIGlucHV0KQorICAgIDogbV9vZmZzZXQoMCkKKyAgICAsIG1fc3RyaW5nTGVu
Z3RoKGlucHV0Lmxlbmd0aCgpKQorICAgICwgbV9zdHJpbmcoaW5wdXQuaW1wbCgpKQoreworfQor
Cit2b2lkIENTU1Rva2VuaXplcklucHV0U3RyZWFtOjphZHZhbmNlVW50aWxOb25XaGl0ZXNwYWNl
KCkKK3sKKyAgICAvLyBVc2luZyBIVE1MIHNwYWNlIGhlcmUgcmF0aGVyIHRoYW4gQ1NTIHNwYWNl
IHNpbmNlIHdlIGRvbid0IGRvIHByZXByb2Nlc3NpbmcKKyAgICBpZiAobV9zdHJpbmctPmlzOEJp
dCgpKSB7CisgICAgICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzID0gbV9zdHJpbmctPmNoYXJh
Y3RlcnM4KCk7CisgICAgICAgIHdoaWxlIChtX29mZnNldCA8IG1fc3RyaW5nTGVuZ3RoICYmIGlz
SFRNTFNwYWNlKGNoYXJhY3RlcnNbbV9vZmZzZXRdKSkKKyAgICAgICAgICAgICsrbV9vZmZzZXQ7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBtX3N0cmlu
Zy0+Y2hhcmFjdGVyczE2KCk7CisgICAgICAgIHdoaWxlIChtX29mZnNldCA8IG1fc3RyaW5nTGVu
Z3RoICYmIGlzSFRNTFNwYWNlKGNoYXJhY3RlcnNbbV9vZmZzZXRdKSkKKyAgICAgICAgICAgICsr
bV9vZmZzZXQ7CisgICAgfQorfQorCitkb3VibGUgQ1NTVG9rZW5pemVySW5wdXRTdHJlYW06Omdl
dERvdWJsZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kKSBjb25zdAoreworICAgIEFTU0VS
VChzdGFydCA8PSBlbmQgJiYgKChtX29mZnNldCArIGVuZCkgPD0gbV9zdHJpbmdMZW5ndGgpKTsK
KyAgICBib29sIGlzUmVzdWx0T0sgPSBmYWxzZTsKKyAgICBkb3VibGUgcmVzdWx0ID0gMC4wOwor
ICAgIGlmIChzdGFydCA8IGVuZCkgeworICAgICAgICBpZiAobV9zdHJpbmctPmlzOEJpdCgpKQor
ICAgICAgICAgICAgcmVzdWx0ID0gY2hhcmFjdGVyc1RvRG91YmxlKG1fc3RyaW5nLT5jaGFyYWN0
ZXJzOCgpICsgbV9vZmZzZXQgKyBzdGFydCwgZW5kIC0gc3RhcnQsICZpc1Jlc3VsdE9LKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gY2hhcmFjdGVyc1RvRG91YmxlKG1fc3Ry
aW5nLT5jaGFyYWN0ZXJzMTYoKSArIG1fb2Zmc2V0ICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCAmaXNS
ZXN1bHRPSyk7CisgICAgfQorICAgIC8vIEZJWE1FOiBJdCBsb29rcyBsaWtlIGNhbGxlcnMgZW5z
dXJlIHdlIGhhdmUgYSB2YWxpZCBudW1iZXIKKyAgICByZXR1cm4gaXNSZXN1bHRPSyA/IHJlc3Vs
dCA6IDAuMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3Ry
ZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDkgQEAKKy8vIENvcHlyaWdodCAyMDE0
IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgor
Ly8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZuZGVmIENTU1Rva2VuaXplcklucHV0
U3RyZWFtX2gKKyNkZWZpbmUgQ1NTVG9rZW5pemVySW5wdXRTdHJlYW1faAorCisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nVmlldy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1Rva2VuaXplcklucHV0U3RyZWFtIHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbSk7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQ1NTVG9rZW5p
emVySW5wdXRTdHJlYW0oU3RyaW5nIGlucHV0KTsKKworICAgIC8vIEdldHMgdGhlIGNoYXIgaW4g
dGhlIHN0cmVhbSByZXBsYWNpbmcgTlVMIGNoYXJhY3RlcnMgd2l0aCBhIHVuaWNvZGUKKyAgICAv
LyByZXBsYWNlbWVudCBjaGFyYWN0ZXIuIFdpbGwgcmV0dXJuIChOVUwpIGtFbmRPZkZpbGVNYXJr
ZXIgd2hlbiBhdCB0aGUKKyAgICAvLyBlbmQgb2YgdGhlIHN0cmVhbS4KKyAgICBVQ2hhciBuZXh0
SW5wdXRDaGFyKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX29mZnNldCA+PSBtX3N0cmlu
Z0xlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiAnXDAnOworICAgICAgICBVQ2hhciByZXN1bHQg
PSAoKm1fc3RyaW5nKVttX29mZnNldF07CisgICAgICAgIHJldHVybiByZXN1bHQgPyByZXN1bHQg
OiAweEZGRkQ7CisgICAgfQorCisgICAgLy8gR2V0cyB0aGUgY2hhciBhdCBsb29rYWhlYWRPZmZz
ZXQgZnJvbSB0aGUgY3VycmVudCBzdHJlYW0gcG9zaXRpb24uIFdpbGwKKyAgICAvLyByZXR1cm4g
TlVMIChrRW5kT2ZGaWxlTWFya2VyKSBpZiB0aGUgc3RyZWFtIHBvc2l0aW9uIGlzIGF0IHRoZSBl
bmQuCisgICAgLy8gTk9URTogVGhpcyBtYXkgKmFsc28qIHJldHVybiBOVUwgaWYgdGhlcmUncyBv
bmUgaW4gdGhlIGlucHV0ISBOZXZlcgorICAgIC8vIGNvbXBhcmUgdGhlIHJldHVybiB2YWx1ZSB0
byAnXDAnLgorICAgIFVDaGFyIHBlZWtXaXRob3V0UmVwbGFjZW1lbnQodW5zaWduZWQgbG9va2Fo
ZWFkT2Zmc2V0KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKChtX29mZnNldCArIGxvb2thaGVh
ZE9mZnNldCkgPj0gbV9zdHJpbmdMZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gJ1wwJzsKKyAg
ICAgICAgcmV0dXJuICgqbV9zdHJpbmcpW21fb2Zmc2V0ICsgbG9va2FoZWFkT2Zmc2V0XTsKKyAg
ICB9CisKKyAgICB2b2lkIGFkdmFuY2UodW5zaWduZWQgb2Zmc2V0ID0gMSkgeyBtX29mZnNldCAr
PSBvZmZzZXQ7IH0KKyAgICB2b2lkIHB1c2hCYWNrKFVDaGFyIGNjKQorICAgIHsKKyAgICAgICAg
LS1tX29mZnNldDsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjYywgbmV4dElucHV0Q2hhcigpID09
IGNjKTsKKyAgICB9CisKKyAgICBkb3VibGUgZ2V0RG91YmxlKHVuc2lnbmVkIHN0YXJ0LCB1bnNp
Z25lZCBlbmQpIGNvbnN0OworCisgICAgdGVtcGxhdGU8Ym9vbCBjaGFyYWN0ZXJQcmVkaWNhdGUo
VUNoYXIpPgorICAgIHVuc2lnbmVkIHNraXBXaGlsZVByZWRpY2F0ZSh1bnNpZ25lZCBvZmZzZXQp
CisgICAgeworICAgICAgICBpZiAobV9zdHJpbmctPmlzOEJpdCgpKSB7CisgICAgICAgICAgICBj
b25zdCBMQ2hhciogY2hhcmFjdGVyczggPSBtX3N0cmluZy0+Y2hhcmFjdGVyczgoKTsKKyAgICAg
ICAgICAgIHdoaWxlICgobV9vZmZzZXQgKyBvZmZzZXQpIDwgbV9zdHJpbmdMZW5ndGggJiYgY2hh
cmFjdGVyUHJlZGljYXRlKGNoYXJhY3RlcnM4W21fb2Zmc2V0ICsgb2Zmc2V0XSkpCisgICAgICAg
ICAgICAgICAgKytvZmZzZXQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25zdCBV
Q2hhciogY2hhcmFjdGVyczE2ID0gbV9zdHJpbmctPmNoYXJhY3RlcnMxNigpOworICAgICAgICAg
ICAgd2hpbGUgKChtX29mZnNldCArIG9mZnNldCkgPCBtX3N0cmluZ0xlbmd0aCAmJiBjaGFyYWN0
ZXJQcmVkaWNhdGUoY2hhcmFjdGVyczE2W21fb2Zmc2V0ICsgb2Zmc2V0XSkpCisgICAgICAgICAg
ICAgICAgKytvZmZzZXQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG9mZnNldDsKKyAgICB9
CisKKyAgICB2b2lkIGFkdmFuY2VVbnRpbE5vbldoaXRlc3BhY2UoKTsKKworICAgIHVuc2lnbmVk
IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nTGVuZ3RoOyB9CisgICAgdW5zaWduZWQg
b2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gc3RkOjptaW4obV9vZmZzZXQsIG1fc3RyaW5nTGVuZ3Ro
KTsgfQorCisgICAgU3RyaW5nVmlldyByYW5nZUF0KHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBs
ZW5ndGgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoc3RhcnQgKyBsZW5ndGggPD0gbV9z
dHJpbmdMZW5ndGgpOworICAgICAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZy5nZXQoKSku
c3Vic3RyaW5nKHN0YXJ0LCBsZW5ndGgpOyAvLyBGSVhNRTogU2hvdWxkIG1ha2UgYSBjb25zdHJ1
Y3RvciBvbiBTdHJpbmdWaWV3IGZvciB0aGlzLgorICAgIH0KKworcHJpdmF0ZToKKyAgICBzaXpl
X3QgbV9vZmZzZXQ7CisgICAgY29uc3Qgc2l6ZV90IG1fc3RyaW5nTGVuZ3RoOworICAgIGNvbnN0
IFJlZlB0cjxTdHJpbmdJbXBsPiBtX3N0cmluZzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIENTU1Rva2VuaXplcklucHV0U3RyZWFtX2gKKwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGVuZ3RoLmgJKHJldmlzaW9uIDIwNDk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xlbmd0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCwxMSBAQCBlbnVtIExl
bmd0aFR5cGUgewogICAgIFVuZGVmaW5lZAogfTsKIAorZW51bSBWYWx1ZVJhbmdlIHsKKyAgICBW
YWx1ZVJhbmdlQWxsLAorICAgIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZQorfTsKKwogY2xhc3MgQ2Fs
Y3VsYXRpb25WYWx1ZTsKIGNsYXNzIFRleHRTdHJlYW07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287029</attachid>
            <date>2016-08-25 15:10:31 -0700</date>
            <delta_ts>2016-08-25 16:54:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>452607</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3NiBAQAorMjAxNi0wOC0yNCAgRGF2ZSBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBJbml0aWFsIGxhbmRpbmcgb2YgQ1NT
IFBhcnNlciBUb2tlbml6YXRpb24gKGFuZCBmaWxlcyB0byBzdXBwb3J0IHRoYXQpLiBOb3QgdXNl
ZCB5ZXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjExNzQKKworICAgICAgICBUaGlzIGNvZGUgaXMgaW1wb3J0ZWQgZnJvbSBCbGluayBhbmQgaXMg
dGhlaXIgQ1NTIHBhcnNlciAobW9kaWZpZWQgdG8gd29yayBpbiBXZWJLaXQpLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGNzcy9DU1NNYXJrdXAuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQ1NTVG9rZW5p
emVySWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVDaGFyYWN0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplQ2hhcmFjdGVyQXNDb2RlUG9pbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6c2VyaWFsaXplSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpzZXJp
YWxpemVTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplVVJJKToKKyAgICAgICAg
KFdlYkNvcmU6OnNlcmlhbGl6ZUZvbnRGYW1pbHkpOgorICAgICAgICAqIGNzcy9DU1NNYXJrdXAu
aDogQWRkZWQuCisgICAgICAgICogY3NzL0NTU09NVXRpbHMuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIGNzcy9DU1NPTVV0aWxzLmg6IFJlbW92ZWQuCisgICAgICAgICogY3NzL0NTU1NlbGVjdG9y
LmNwcDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHA6IEFkZGVk
LgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmg6IEFkZGVkLgorICAg
ICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6aXNDU1NTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjppc05hbWVTdGFydENvZGVQb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjppc05hbWVDb2RlUG9pbnQpOgorICAgICAgICAqIGNzcy9w
YXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJPYnNlcnZlcjo6fkNTU1BhcnNlck9ic2VydmVyKToKKyAgICAgICAgKiBjc3MvcGFyc2Vy
L0NTU1BhcnNlck9ic2VydmVyV3JhcHBlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyOjpzdGFydE9mZnNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OnByZXZpb3VzVG9rZW5TdGFydE9mZnNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OmVuZE9mZnNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OnNraXBDb21tZW50c0Jl
Zm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OnlpZWxk
Q29tbWVudHNCZWZvcmUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXJX
cmFwcGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyT2JzZXJ2ZXJXcmFw
cGVyOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyT2JzZXJ2ZXJXcmFwcGVyOjpvYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXJPYnNlcnZlcldyYXBwZXI6OmFkZENvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyT2JzZXJ2ZXJXcmFwcGVyOjphZGRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXJPYnNlcnZlcldyYXBwZXI6OmZpbmFsaXplQ29uc3RydWN0aW9uKToKKyAgICAgICAgKiBjc3Mv
cGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjc3NQ
cmltaXRpdmVWYWx1ZVVuaXRGcm9tVHJpZSk6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdUb1Vu
aXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpDU1NQYXJzZXJUb2tl
bik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6Y29udmVydFRvRGltZW5zaW9u
V2l0aFVuaXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OmNvbnZlcnRUb1Bl
cmNlbnRhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OmRlbGltaXRlcik6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6bnVtZXJpY1NpZ24pOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46Om51bWVyaWNWYWx1ZVR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46Om51bWVyaWNWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXJUb2tlbjo6cGFyc2VBc1VucmVzb2x2ZWRDU1NQcm9wZXJ0eUlEKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjppZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJUb2tlbjo6ZnVuY3Rpb25JZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tl
bjo6aGFzU3RyaW5nQmFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6
Y29weVdpdGhVcGRhdGVkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2Vu
Ojp2YWx1ZURhdGFDaGFyUmF3RXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9r
ZW46Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OnNlcmlh
bGl6ZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlclRva2VuOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clRva2VuOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6Z2V0SGFz
aFRva2VuVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6Z2V0QmxvY2tU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjp1bml0VHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6dW5pY29kZVJhbmdlU3RhcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OnVuaWNvZGVSYW5nZUVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6aW5pdFZhbHVlRnJvbVN0cmluZ1ZpZXcpOgorICAgICAg
ICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW5SYW5nZS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6ZW9mVG9rZW4pOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6bWFrZVN1YlJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlclRva2VuUmFuZ2U6OmNvbnN1bWVCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXJUb2tlblJhbmdlOjpjb25zdW1lQ29tcG9uZW50VmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6c2VyaWFsaXplKToKKyAgICAgICAgKiBjc3MvcGFy
c2VyL0NTU1BhcnNlclRva2VuUmFuZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJUb2tlblJhbmdlOjpDU1NQYXJzZXJUb2tlblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlclRva2VuUmFuZ2U6OmF0RW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clRva2VuUmFuZ2U6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlblJhbmdl
OjpwZWVrKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuUmFuZ2U6OmNvbnN1bWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6Y29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6Y29u
c3VtZVdoaXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6
YmVnaW4pOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Omhhc1ByZWZpeCk6CisgICAgICAgIChXZWJDb3JlOjpjc3NQ
cm9wZXJ0eUlEKToKKyAgICAgICAgKFdlYkNvcmU6OmNzc1Byb3BlcnR5TmFtZUlPU0FsaWFzaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzQXBwbGVMZWdhY3lDc3NWYWx1ZUtleXdvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6Y3NzVmFsdWVLZXl3b3JkSUQpOgorICAgICAgICAoV2ViQ29yZTo6dW5y
ZXNvbHZlZENTU1Byb3BlcnR5SUQpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQ
YXJzZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6aW5R
dWlya3NNb2RlKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVy
cy5jcHA6IEFkZGVkLgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
OjppZGVudE1hdGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzOjpjb25zdW1lSWRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzOjppc0NTU1dpZGVLZXl3b3JkKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Rva2Vu
aXplci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpTY29wZTo6
U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpTY29wZTo6dG9rZW5SYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OlNjb3BlOjp0b2tlbkNvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OmlzTmV3TGluZSk6CisgICAgICAgIChXZWJDb3JlOjp0d29DaGFy
c0FyZVZhbGlkRXNjYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Q1NTVG9r
ZW5pemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6cmVjb25zdW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb2tlbml6ZXI6OndoaXRlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5p
emVyOjpibG9ja1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6YmxvY2tF
bmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpsZWZ0UGFyZW50aGVzaXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpyaWdodFBhcmVudGhlc2lzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6bGVmdEJyYWNrZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9rZW5pemVyOjpyaWdodEJyYWNrZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9r
ZW5pemVyOjpsZWZ0QnJhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpyaWdo
dEJyYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6cGx1c09yRnVsbFN0b3Ap
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjphc3Rlcmlzayk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb2tlbml6ZXI6Omxlc3NUaGFuKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rv
a2VuaXplcjo6Y29tbWEpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpoeXBoZW5N
aW51cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OnNvbGlkdXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb2xvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXI6OnNlbWlDb2xvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6Omhh
c2gpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjaXJjdW1mbGV4QWNjZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6ZG9sbGFyU2lnbik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb2tlbml6ZXI6OnZlcnRpY2FsTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NUb2tlbml6ZXI6OnRpbGRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29t
bWVyY2lhbEF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6cmV2ZXJzZVNvbGlk
dXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjphc2NpaURpZ2l0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6bGV0dGVyVSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NUb2tlbml6ZXI6Om5hbWVTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6
OnN0cmluZ1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6ZW5kT2ZGaWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6bmV4dFRva2VuKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZU51bWJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVOdW1lcmljVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVG9rZW5pemVyOjpjb25zdW1lSWRlbnRMaWtlVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVG9rZW5pemVyOjpjb25zdW1lU3RyaW5nVG9rZW5VbnRpbCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVVbmljb2RlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
aXNOb25QcmludGFibGVDb2RlUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVy
Ojpjb25zdW1lVXJsVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb25z
dW1lQmFkVXJsUmVtbmFudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb25z
dW1lU2luZ2xlV2hpdGVzcGFjZUlmTmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6
ZXI6OmNvbnN1bWVVbnRpbENvbW1lbnRFbmRGb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXI6OmNvbnN1bWVJZk5leHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVy
Ojpjb25zdW1lTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVF
c2NhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpuZXh0VHdvQ2hhcnNBcmVW
YWxpZEVzY2FwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6Om5leHRDaGFyc0Fy
ZU51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6Om5leHRDaGFyc0FyZUlk
ZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpyZWdpc3RlclN0cmlu
Zyk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OlNjb3BlOjpzdG9yZVN0cmluZyk6CisgICAgICAgICog
Y3NzL3BhcnNlci9DU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVG9rZW5pemVySW5wdXRTdHJlYW06OkNTU1Rva2VuaXplcklucHV0U3RyZWFt
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcklucHV0U3RyZWFtOjphZHZhbmNlVW50
aWxOb25XaGl0ZXNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcklucHV0U3Ry
ZWFtOjpnZXREb3VibGUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRT
dHJlYW0uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXJJbnB1dFN0cmVh
bTo6bmV4dElucHV0Q2hhcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXJJbnB1dFN0
cmVhbTo6cGVla1dpdGhvdXRSZXBsYWNlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tl
bml6ZXJJbnB1dFN0cmVhbTo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6
ZXJJbnB1dFN0cmVhbTo6cHVzaEJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVy
SW5wdXRTdHJlYW06OnNraXBXaGlsZVByZWRpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXJJbnB1dFN0cmVhbTo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2Vu
aXplcklucHV0U3RyZWFtOjpvZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVy
SW5wdXRTdHJlYW06OnJhbmdlQXQpOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5oOgorCiAy
MDE2LTA4LTI0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIHRo
ZSBhYmlsaXR5IHRvIG92ZXJyaWRlIHRoZSBpbXBsZW1lbnRhdGlvbiBuYW1lIG9mIElETCBlbnVt
cyBhbmQgZGljdGlvbmFyaWVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjA0
OTc4KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEzNDEsOSArMTM0MSw5IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3MvQ1NTS2V5ZnJh
bWVSdWxlLmNwcAogICAgIGNzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcAogICAgIGNzcy9DU1NMaW5l
Qm94Q29udGFpblZhbHVlLmNwcAorICAgIGNzcy9DU1NNYXJrdXAuY3BwCiAgICAgY3NzL0NTU01l
ZGlhUnVsZS5jcHAKICAgICBjc3MvQ1NTTmFtZWRJbWFnZVZhbHVlLmNwcAotICAgIGNzcy9DU1NP
TVV0aWxzLmNwcAogICAgIGNzcy9DU1NQYWdlUnVsZS5jcHAKICAgICBjc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuY3BwCiAgICAgY3NzL0NTU1Byb3BlcnR5LmNwcApAQCAtMTQxMCw3ICsxNDEwLDE1IEBA
IHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3MvV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmNwcAog
CiAgICAgY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCisgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJG
YXN0UGF0aHMuY3BwCisgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3Bw
CisgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAKKyAgICBjc3MvcGFyc2VyL0NTU1Bh
cnNlclRva2VuUmFuZ2UuY3BwCiAgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJWYWx1ZXMuY3BwCisg
ICAgY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKyAgICBjc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VySGVscGVycy5jcHAKKyAgICBjc3MvcGFyc2VyL0NTU1Rva2VuaXplci5jcHAK
KyAgICBjc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcAogICAgIGNzcy9wYXJz
ZXIvU1ZHQ1NTUGFyc2VyLmNwcAogCiAgICAgY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyMDQ5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMzMzksNiArMzMzOSwyNiBAQAog
CQk5NDZEMzczMDFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzJCMUQ2Q0IyOEIw
MDc3MDg0RiAvKiBDU1NQYXJzZXJWYWx1ZXMuY3BwICovOyB9OwogCQk5NDZEMzczMTFENkNCMjk0
MDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzcyQzFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2Vy
VmFsdWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOTQ2RDM3MzMxRDZDQzQyQjAwNzcwODRGIC8qIFNWR0NTU1BhcnNlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzczMjFENkNDMzcyMDA3
NzA4NEYgLyogU1ZHQ1NTUGFyc2VyLmNwcCAqLzsgfTsKKwkJOTQ2RDM3MzkxRDZDREZDMDAwNzcw
ODRGIC8qIENTU1Rva2VuaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NDZEMzczNDFENkNERjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmNw
cCAqLzsgfTsKKwkJOTQ2RDM3M0ExRDZDREZDMDAwNzcwODRGIC8qIENTU1Rva2VuaXplci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3MzcxRDZD
REY5ODAwNzcwODRGIC8qIENTU1Rva2VuaXplci5oICovOyB9OworCQk5NDZEMzczQjFENkNERkMw
MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3MzUxRDZDREY5ODAwNzcwODRGIC8q
IENTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcCAqLzsgfTsKKwkJOTQ2RDM3M0MxRDZDREZDMDAw
NzcwODRGIC8qIENTU1Rva2VuaXplcklucHV0U3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzczODFENkNERjk4MDA3NzA4NEYgLyogQ1NT
VG9rZW5pemVySW5wdXRTdHJlYW0uaCAqLzsgfTsKKwkJOTQ2RDM3M0YxRDZDRTNDMjAwNzcwODRG
IC8qIENTU1BhcnNlclRva2VuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk0NkQzNzNFMUQ2Q0UzMUEwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlbi5j
cHAgKi87IH07CisJCTk0NkQzNzQwMUQ2Q0UzQzIwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3M0Qx
RDZDRTMxQTAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuLmggKi87IH07CisJCTk0NkQzNzQ0MUQ2
Q0Y3QjIwMDc3MDg0RiAvKiBDU1NQYXJzZXJJZGlvbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzQzMUQ2Q0Y3ODgwMDc3MDg0RiAvKiBDU1NQ
YXJzZXJJZGlvbXMuaCAqLzsgfTsKKwkJOTQ2RDM3NDUxRDZEMDFENDAwNzcwODRGIC8qIENTU1By
b3BlcnR5UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk0NkQzNzQxMUQ2Q0Y2MzIwMDc3MDg0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlci5jcHAg
Ki87IH07CisJCTk0NkQzNzQ2MUQ2RDAxRDQwMDc3MDg0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3NDIx
RDZDRjYzMjAwNzcwODRGIC8qIENTU1Byb3BlcnR5UGFyc2VyLmggKi87IH07CisJCTk0NkQzNzQ5
MUQ2RDA2MjgwMDc3MDg0RiAvKiBDU1NNYXJrdXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3NDcxRDZEMDYwQzAwNzcwODRGIC8qIENTU01h
cmt1cC5jcHAgKi87IH07CisJCTk0NkQzNzRBMUQ2RDA2MjgwMDc3MDg0RiAvKiBDU1NNYXJrdXAu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzQ4
MUQ2RDA2MEMwMDc3MDg0RiAvKiBDU1NNYXJrdXAuaCAqLzsgfTsKKwkJOTQ2RDM3NEQxRDZEMDhB
NjAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3NEIxRDZEMDdGNTAwNzcwODRGIC8qIENT
U1BhcnNlclRva2VuUmFuZ2UuY3BwICovOyB9OworCQk5NDZEMzc0RTFENkQwOEFBMDA3NzA4NEYg
LyogQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTQ2RDM3NEMxRDZEMDdGNTAwNzcwODRGIC8qIENTU1BhcnNlclRva2Vu
UmFuZ2UuaCAqLzsgfTsKKwkJOTQ5Qzc3MDAxRDZFMUQ5ODAwQzBERTRGIC8qIENTU1BhcnNlckZh
c3RQYXRocy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NDlDNzZGRTFENkUxRDhDMDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcCAqLzsg
fTsKKwkJOTQ5Qzc3MDExRDZFMUQ5ODAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRocy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5Qzc2RkYxRDZF
MUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRocy5oICovOyB9OworCQk5NDlDNzcwNDFE
NkUzOUVBMDBDMERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0OUM3NzAyMUQ2RTM5MzUwMEMw
REU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwICovOyB9OworCQk5NDlDNzcwNTFE
NkUzOUVBMDBDMERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDlDNzcwMzFENkUzOTM1MDBDMERF
NEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmggKi87IH07CisJCTk0OUM3NzA4MUQ2RTQ5
ODcwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ5Qzc3MDYxRDZFNDhFRDAwQzBERTRG
IC8qIENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5jcHAgKi87IH07CisJCTk0OUM3NzA5MUQ2RTQ5
ODcwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0OUM3NzA3MUQ2RTQ4RUQwMEMwREU0RiAv
KiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaCAqLzsgfTsKKwkJOTQ5Qzc3MEIxRDZFNDlFRDAw
QzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NDlDNzcwQTFENkU0OUMzMDBDMERFNEYgLyogQ1NTUGFyc2Vy
T2JzZXJ2ZXIuaCAqLzsgfTsKIAkJOTZBQkE0MjMxNEJDQjgwRTAwRDU2MjA0IC8qIEdyYXBoaWNz
Q29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk2QUJBNDIyMTRCQ0I4MEUwMEQ1NjIwNCAvKiBHcmFwaGljc0NvbnRl
eHQzRE9wZW5HTENvbW1vbi5jcHAgKi87IH07CiAJCTk3MDNFMUJGMTVEQzRFMzcwMDFGMjRDOCAv
KiBKU1ZvaWRDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5N0U5RUM4QjE1REM0OTJGMDA0RjJFNzEgLyogSlNWb2lkQ2FsbGJhY2suY3Bw
ICovOyB9OwogCQk5NzA1OTk3NzEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzMx
MDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmNwcCAqLzsgfTsKQEAgLTYzMTgsOCAr
NjMzOCw2IEBACiAJCUY1RTBDNjVDMTY0M0M0MkMwMEQ2Q0I2OSAvKiBCYXNlQ2hvb3Nlck9ubHlE
YXRlQW5kVGltZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjVFMEM2NUExNjQzQzQyQzAwRDZDQjY5IC8qIEJhc2VDaG9vc2VyT25seURh
dGVBbmRUaW1lSW5wdXRUeXBlLmggKi87IH07CiAJCUY5MTZDNDhEMERCNTEwRjgwMDc2Q0Q4MyAv
KiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOTE2QzQ4QjBEQjUxMEY4MDA3NkNEODMgLyogSlNY
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3BwICovOyB9OwogCQlGOTE2QzQ4RTBEQjUxMEY4
MDA3NkNEODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5MTZDNDhDMERCNTEwRjgwMDc2Q0Q4
MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICovOyB9OwotCQlGOThGRkY0NDEx
QTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOThGRkY0MjExQTI2NzYyMDBGNTQ4RTggLyogQ1NTT01V
dGlscy5jcHAgKi87IH07Ci0JCUY5OEZGRjQ1MTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOThGRkY0
MzExQTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5oICovOyB9OwogCQlGOUYwRUQ3QTBEQjUw
Q0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOUYwRUQ3NzBEQjUwQ0EyMDBEMTZE
QjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi87IH07CiAJCUZBNjU0QTZCMTEw
OEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUb2tlbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE2NTRBNjkxMTA4QUJFRDAwMjYxNUUwIC8q
IE1hdGhNTFRva2VuRWxlbWVudC5jcHAgKi87IH07CiAJCUZBNjU0QTZCMTEwOEFCRUQwMDI2MTZG
MSAvKiBNYXRoTUxPcGVyYXRvckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkE2NTRBNjkxMTA4QUJFRDAwMjYxNkYxIC8qIE1hdGhNTE9w
ZXJhdG9yRWxlbWVudC5jcHAgKi87IH07CkBAIC0xMDQ1Myw2ICsxMDQ3MSwyNiBAQAogCQk5NDZE
MzcyQjFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1BhcnNlclZhbHVlcy5jcHA7IHBhdGggPSBwYXJz
ZXIvQ1NTUGFyc2VyVmFsdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ2
RDM3MkMxRDZDQjI4QjAwNzcwODRGIC8qIENTU1BhcnNlclZhbHVlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQYXJzZXJWYWx1ZXMuaDsgcGF0aCA9IHBhcnNlci9DU1NQ
YXJzZXJWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ2RDM3MzIxRDZD
QzM3MjAwNzcwODRGIC8qIFNWR0NTU1BhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBTVkdDU1NQYXJzZXIuY3BwOyBwYXRoID0gcGFyc2VyL1NWR0NTU1BhcnNl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NkQzNzM0MUQ2Q0RGOTgwMDc3
MDg0RiAvKiBDU1NUb2tlbml6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQ1NTVG9rZW5pemVyLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NUb2tlbml6ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzczNTFENkNERjk4MDA3NzA4NEYgLyog
Q1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwOyBwYXRoID0gcGFyc2VyL0NTU1Rv
a2VuaXplcklucHV0U3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ2
RDM3MzcxRDZDREY5ODAwNzcwODRGIC8qIENTU1Rva2VuaXplci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBDU1NUb2tlbml6ZXIuaDsgcGF0aCA9IHBhcnNlci9DU1NUb2tlbml6
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ2RDM3MzgxRDZDREY5ODAwNzcw
ODRGIC8qIENTU1Rva2VuaXplcklucHV0U3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IENTU1Rva2VuaXplcklucHV0U3RyZWFtLmg7IHBhdGggPSBwYXJzZXIvQ1NTVG9r
ZW5pemVySW5wdXRTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ2RDM3
M0QxRDZDRTMxQTAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IENTU1BhcnNlclRva2VuLmg7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2Vy
VG9rZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ2RDM3M0UxRDZDRTMxQTAw
NzcwODRGIC8qIENTU1BhcnNlclRva2VuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IENTU1BhcnNlclRva2VuLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJUb2tl
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NkQzNzQxMUQ2Q0Y2MzIwMDc3
MDg0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBDU1NQcm9wZXJ0eVBhcnNlci5jcHA7IHBhdGggPSBwYXJzZXIvQ1NTUHJvcGVy
dHlQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzc0MjFENkNG
NjMyMDA3NzA4NEYgLyogQ1NTUHJvcGVydHlQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQ1NTUHJvcGVydHlQYXJzZXIuaDsgcGF0aCA9IHBhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzc0MzFENkNGNzg4
MDA3NzA4NEYgLyogQ1NTUGFyc2VySWRpb21zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IENTU1BhcnNlcklkaW9tcy5oOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzc0NzFENkQwNjBDMDA3NzA4NEYg
LyogQ1NTTWFya3VwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENT
U01hcmt1cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NkQzNzQ4MUQ2RDA2
MEMwMDc3MDg0RiAvKiBDU1NNYXJrdXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ1NTTWFya3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NkQzNzRCMUQ2
RDA3RjUwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1BhcnNlclRva2VuUmFuZ2UuY3BwOyBwYXRoID0gcGFy
c2VyL0NTU1BhcnNlclRva2VuUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5NDZEMzc0QzFENkQwN0Y1MDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW5SYW5nZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQYXJzZXJUb2tlblJhbmdlLmg7IHBhdGgg
PSBwYXJzZXIvQ1NTUGFyc2VyVG9rZW5SYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5NDlDNzZGRTFENkUxRDhDMDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1BhcnNlckZhc3RQYXRocy5j
cHA7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTQ5Qzc2RkYxRDZFMUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQ
YXRocy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQYXJzZXJGYXN0UGF0
aHMuaDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTQ5Qzc3MDIxRDZFMzkzNTAwQzBERTRGIC8qIENTU1Byb3BlcnR5UGFy
c2VySGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDU1NQ
cm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwOyBwYXRoID0gcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2Vy
SGVscGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0OUM3NzAzMUQ2RTM5
MzUwMEMwREU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmg7IHBhdGggPSBwYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTk0OUM3NzA2MUQ2RTQ4RUQwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUGFyc2VyT2JzZXJ2
ZXJXcmFwcGVyLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDlDNzcwNzFENkU0OEVEMDBDMERFNEYg
LyogQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5oOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNl
ck9ic2VydmVyV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDlDNzcw
QTFENkU0OUMzMDBDMERFNEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQ1NTUGFyc2VyT2JzZXJ2ZXIuaDsgcGF0aCA9IHBhcnNlci9DU1NQ
YXJzZXJPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NTBDNEMwMkJF
RDg5MzZGODE4RTJGOTkgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHR3JhcGhpY3NFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk2QUJBNDIyMTRCQ0I4MEUwMEQ1NjIwNCAvKiBHcmFwaGljc0NvbnRl
eHQzRE9wZW5HTENvbW1vbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk3MDU5OTczMTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2xpY3lDYWxsYmFjay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzg5NCw4ICsxMzkzMiw2IEBACiAJCUY4
MjE2Mjk5MDI5RjRGQjUwMTAwMDEzMSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1l
d29yazsgcGF0aCA9IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJRjkxNkM0OEIwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0
cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUY5MTZDNDhDMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1
ZXN0UHJvZ3Jlc3NFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNY
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRjk4RkZGNDIxMUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTT01VdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUY5OEZGRjQzMTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU09NVXRpbHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjlGMEVENzcwREI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBS
ZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY5RjBFRDc4MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQTY1NEE2MzExMDhBQkI3MDAy
NjE1RTAgLyogbWF0aG1sLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gbWF0aG1sLmNz
czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MDczLDEyICsxODEwOSwzMCBAQAog
CQk5NDZEMzcyNzFENkNCMjI1MDA3NzA4NEYgLyogcGFyc2VyICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk5NDZEMzczMjFENkNDMzcyMDA3NzA4NEYgLyog
U1ZHQ1NTUGFyc2VyLmNwcCAqLywKIAkJCQk5NDZEMzcyODFENkNCMjhCMDA3NzA4NEYgLyogQ1NT
UGFyc2VyLmNwcCAqLywKIAkJCQk5NDZEMzcyOTFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2Vy
LmggKi8sCisJCQkJOTQ5Qzc2RkUxRDZFMUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQYXRo
cy5jcHAgKi8sCisJCQkJOTQ5Qzc2RkYxRDZFMUQ4QzAwQzBERTRGIC8qIENTU1BhcnNlckZhc3RQ
YXRocy5oICovLAorCQkJCTk0NkQzNzQzMUQ2Q0Y3ODgwMDc3MDg0RiAvKiBDU1NQYXJzZXJJZGlv
bXMuaCAqLywKIAkJCQk5NDZEMzcyQTFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2VyTW9kZS5o
ICovLAorCQkJCTk0OUM3NzBBMUQ2RTQ5QzMwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlci5o
ICovLAorCQkJCTk0OUM3NzA2MUQ2RTQ4RUQwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldy
YXBwZXIuY3BwICovLAorCQkJCTk0OUM3NzA3MUQ2RTQ4RUQwMEMwREU0RiAvKiBDU1NQYXJzZXJP
YnNlcnZlcldyYXBwZXIuaCAqLywKKwkJCQk5NDZEMzczRTFENkNFMzFBMDA3NzA4NEYgLyogQ1NT
UGFyc2VyVG9rZW4uY3BwICovLAorCQkJCTk0NkQzNzNEMUQ2Q0UzMUEwMDc3MDg0RiAvKiBDU1NQ
YXJzZXJUb2tlbi5oICovLAorCQkJCTk0NkQzNzRCMUQ2RDA3RjUwMDc3MDg0RiAvKiBDU1NQYXJz
ZXJUb2tlblJhbmdlLmNwcCAqLywKKwkJCQk5NDZEMzc0QzFENkQwN0Y1MDA3NzA4NEYgLyogQ1NT
UGFyc2VyVG9rZW5SYW5nZS5oICovLAogCQkJCTk0NkQzNzJCMUQ2Q0IyOEIwMDc3MDg0RiAvKiBD
U1NQYXJzZXJWYWx1ZXMuY3BwICovLAogCQkJCTk0NkQzNzJDMUQ2Q0IyOEIwMDc3MDg0RiAvKiBD
U1NQYXJzZXJWYWx1ZXMuaCAqLywKKwkJCQk5NDZEMzc0MTFENkNGNjMyMDA3NzA4NEYgLyogQ1NT
UHJvcGVydHlQYXJzZXIuY3BwICovLAorCQkJCTk0NkQzNzQyMUQ2Q0Y2MzIwMDc3MDg0RiAvKiBD
U1NQcm9wZXJ0eVBhcnNlci5oICovLAorCQkJCTk0OUM3NzAyMUQ2RTM5MzUwMEMwREU0RiAvKiBD
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwICovLAorCQkJCTk0OUM3NzAzMUQ2RTM5MzUwMEMw
REU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaCAqLywKKwkJCQk5NDZEMzczNDFENkNE
Rjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmNwcCAqLywKKwkJCQk5NDZEMzczNzFENkNERjk4
MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmggKi8sCisJCQkJOTQ2RDM3MzUxRDZDREY5ODAwNzcw
ODRGIC8qIENTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcCAqLywKKwkJCQk5NDZEMzczODFENkNE
Rjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaCAqLywKKwkJCQk5NDZEMzcz
MjFENkNDMzcyMDA3NzA4NEYgLyogU1ZHQ1NTUGFyc2VyLmNwcCAqLywKIAkJCSk7CiAJCQluYW1l
ID0gcGFyc2VyOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIwOTQ2LDggKzIxMDAw
LDggQEAKIAkJCQlCRTZERjcxMDE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrTGlzdEN1
c3RvbS5jcHAgKi8sCiAJCQkJRkQ4QUE2M0IxNjk1MTQ4RTAwRDJFQTY4IC8qIEpTQmlxdWFkRmls
dGVyTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJODkzMURFNUExNEM0NEM0NDAwMERDOUQyIC8qIEpT
QmxvYkN1c3RvbS5jcHAgKi8sCi0JCQkJNDlFRUQxNEIxMDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLywKIAkJCQk0NjU5RDI3MDFENkI5MDlG
MDA5NkZEODYgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0LmggKi8sCisJCQkJNDlFRUQxNEIx
MDUxOTcxOTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAq
LywKIAkJCQk3QzMzRjM1ODFCNEEwNDQ4MDA1MDJDQUYgLyogSlNDaGFyYWN0ZXJEYXRhQ3VzdG9t
LmNwcCAqLywKIAkJCQk0NkE1OEFDNDFENDZCM0ZBMDA0MzIwMzYgLyogSlNDbGllbnRSZWN0Q3Vz
dG9tLmNwcCAqLywKIAkJCQlBNTg0RkUzNzE4NjREQUMxMDA4NDNCMTAgLyogSlNDb21tYW5kTGlu
ZUFQSUhvc3RDdXN0b20uY3BwICovLApAQCAtMjIyNDAsMTMgKzIyMjk0LDEzIEBACiAJCQkJMzE2
RkUwOTIwRTZDQ0Q3RjAwQkY2MDg4IC8qIENTU0tleWZyYW1lc1J1bGUuaWRsICovLAogCQkJCUJD
NzcyRTE1MTMzMTYyQzIwMDFFQzlDRSAvKiBDU1NMaW5lQm94Q29udGFpblZhbHVlLmNwcCAqLywK
IAkJCQlCQzc3MkUxMjEzMzE2MjBDMDAxRUM5Q0UgLyogQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5o
ICovLAorCQkJCTk0NkQzNzQ3MUQ2RDA2MEMwMDc3MDg0RiAvKiBDU1NNYXJrdXAuY3BwICovLAor
CQkJCTk0NkQzNzQ4MUQ2RDA2MEMwMDc3MDg0RiAvKiBDU1NNYXJrdXAuaCAqLywKIAkJCQlBODBF
NkNEMjBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTTWVkaWFSdWxlLmNwcCAqLywKIAkJCQlBODBFNkNE
OTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTTWVkaWFSdWxlLmggKi8sCiAJCQkJODVDNTZDQTIwQUE4
OUMxMDAwRDk1NzU1IC8qIENTU01lZGlhUnVsZS5pZGwgKi8sCiAJCQkJMzE0QkUzQTIxQjMwRjZE
MTAwMTQxOTgyIC8qIENTU05hbWVkSW1hZ2VWYWx1ZS5jcHAgKi8sCiAJCQkJMzE0QkUzQTAxQjMw
RjZCNzAwMTQxOTgyIC8qIENTU05hbWVkSW1hZ2VWYWx1ZS5oICovLAotCQkJCUY5OEZGRjQyMTFB
MjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmNwcCAqLywKLQkJCQlGOThGRkY0MzExQTI2NzYy
MDBGNTQ4RTggLyogQ1NTT01VdGlscy5oICovLAogCQkJCUE4MEU2Q0NCMEExOTg5Q0EwMDdGQjhD
NSAvKiBDU1NQYWdlUnVsZS5jcHAgKi8sCiAJCQkJQTgwRTZDRDYwQTE5ODlDQTAwN0ZCOEM1IC8q
IENTU1BhZ2VSdWxlLmggKi8sCiAJCQkJODVDNTZDQTYwQUE4OUQ1RjAwRDk1NzU1IC8qIENTU1Bh
Z2VSdWxlLmlkbCAqLywKQEAgLTIzMTUzLDggKzIzMjA3LDYgQEAKIAkJCQlGQUJFNzJFRTEwNTlD
MUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oICovLAogCQkJCTBCQ0Y4M0VGMTA1OUMxRUIw
MEQ5OTlERCAvKiBNYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwICovLAogCQkJCTBCQ0Y4M0YwMTA1
OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxGcmFjdGlvbkVsZW1lbnQuaCAqLywKLQkJCQlGQUJFNzJF
RjEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAgKi8sCi0J
CQkJRkFCRTcyRjAxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQu
aCAqLywKIAkJCQlGQUJFNzJGMTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MTWF0aEVsZW1lbnQu
Y3BwICovLAogCQkJCUZBQkU3MkYyMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxNYXRoRWxlbWVu
dC5oICovLAogCQkJCUMzRTYxQzY1M0E2NDgwN0E4M0U3NkZCOCAvKiBNYXRoTUxNZW5jbG9zZUVs
ZW1lbnQuY3BwICovLApAQCAtMjMxNjUsNiArMjMyMTcsMTAgQEAKIAkJCQlGQTY1NEE2QTExMDhB
QkVEMDAyNjE2RjEgLyogTWF0aE1MT3BlcmF0b3JFbGVtZW50LmggKi8sCiAJCQkJQjU5Q0E1OUFG
MTcwRDhGQUE1QjhDQUJFIC8qIE1hdGhNTFBhZGRlZEVsZW1lbnQuY3BwICovLAogCQkJCUI1OUNB
ODQ5RDQxRTZGNjVEODExOThCQyAvKiBNYXRoTUxQYWRkZWRFbGVtZW50LmggKi8sCisJCQkJRkFC
RTcyRUYxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwICov
LAorCQkJCUZBQkU3MkYwMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxQcmVzZW50YXRpb25FbGVt
ZW50LmggKi8sCisJCQkJRkE3NjVBNjkxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFJvd0VsZW1l
bnQuY3BwICovLAorCQkJCUZBNzY1QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxSb3dFbGVt
ZW50LmggKi8sCiAJCQkJQjU5Q0E1OUFGMTcwRDhGQUE1QjhDOUFEIC8qIE1hdGhNTFNjcmlwdHNF
bGVtZW50LmNwcCAqLywKIAkJCQlCNTlDQTg0OUQ0MUU2RjY1RDgxMTk3QUIgLyogTWF0aE1MU2Ny
aXB0c0VsZW1lbnQuaCAqLywKIAkJCQlGNzVBMDU5QUYxNzBEOEZBQTVCOENBQkUgLyogTWF0aE1M
U2VsZWN0RWxlbWVudC5jcHAgKi8sCkBAIC0yMzE3Myw4ICsyMzIyOSw2IEBACiAJCQkJNEZBNjVB
NkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxlbWVudC5oICovLAogCQkJCUZBNjU0
QTY5MTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUb2tlbkVsZW1lbnQuY3BwICovLAogCQkJCUZB
NjU0QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUb2tlbkVsZW1lbnQuaCAqLywKLQkJCQlG
QTc2NUE2OTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MUm93RWxlbWVudC5jcHAgKi8sCi0JCQkJ
RkE3NjVBNkExMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFJvd0VsZW1lbnQuaCAqLywKIAkJCQlG
QTY1NEE2OTExMDhBQkVEMDAyNjI2RjEgLyogTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAgKi8s
CiAJCQkJRkE2NTRBNkExMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQu
aCAqLywKIAkJCQlGQUJFNzJGMzEwNTlDMUVCMDBEOTk5REQgLyogbWF0aHRhZ3MuaW4gKi8sCkBA
IC0yMzUzNiw4ICsyMzU5MCw2IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQk1MTA1OEFE
RTFENjc5MkMxMDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJNTEwNThBREMxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTcxNEVBRDFDRjY1OTUxMDA0NzIzQzQgLyogR0NPYnNlcnZhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDE3REE2REExMzczNEU2RTAwN0M1N0ZCIC8qIEludGVybmFscy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCRjdFRTAxNEM5MTc1QTAwMTQ0ODlEIC8qIEludGVybmFs
U2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLApAQCAtMjM1NTMsNiArMjM2MDUsOCBAQAogCQkJCUNE
QzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBNb2NrQ0RNLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
MUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTA1OEFEQzFENjc5MkMxMDA5QTUzOEMgLyog
TW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMDU4QURFMUQ2NzkyQzEwMDlBNTM4
QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDZGM0U5MTFD
MUVDQjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQky
RDk3RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBQTVGM0I4RDE2Q0MzM0QxMDA0NTVFQjAgLyogUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplck1vY2suaCBpbiBIZWFkZXJzICovLApAQCAtMjM2ODQsNyArMjM3MzgsNiBAQAog
CQkJCUJFRjI5RUVCMTcxNUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0RFM0E4NTQxN0Y1RkNFNjAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2
YXRlQVZGLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREUzQTg1ODE3RjYwMjA0MDBDNUJFMjAgLyog
QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTA1OEFFMjFE
NjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0Q1NEE3NjMxODBGOUY3MDAwQjA3NkM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0Q2QTRGODFCRjIzMDdEMDAxNzQxNDYg
LyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQz
MTYwOEIxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywK
QEAgLTIzOTY1LDcgKzI0MDE4LDYgQEAKIAkJCQkzMUJDNzQyRTFBQUZGNDVDMDA2QjQzNDAgLyog
Q1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDQUU5
RjkxMDE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkJENkFGODgxNUVGMjVDOTAwOEI3MTEwIC8qIENTU0Jhc2ljU2hhcGVzLmggaW4g
SGVhZGVycyAqLywKLQkJCQk1MTA1OEFFMDFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUxNkE4NEZBMTRDODVDQ0MwMDI5NzdERiAvKiBDU1NCb3Jk
ZXJJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyNzRCMkYxNDBFQkVCMjAwRUFERkE2IC8q
IENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlBRTJEOEYx
MzRFRTUwQzAwNzI5MjBBIC8qIENTU0NhbGN1bGF0aW9uVmFsdWUuaCBpbiBIZWFkZXJzICovLApA
QCAtMjQwMDUsMTYgKzI0MDU3LDI3IEBACiAJCQkJMzEyODhFNzMwRTMwMDVENjAwMzYxOUFFIC8q
IENTU0tleWZyYW1lUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEyODhFNzUwRTMwMDVENjAw
MzYxOUFFIC8qIENTU0tleWZyYW1lc1J1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzcyRTEz
MTMzMTYyMEMwMDFFQzlDRSAvKiBDU1NMaW5lQm94Q29udGFpblZhbHVlLmggaW4gSGVhZGVycyAq
LywKKwkJCQk5NDZEMzc0QTFENkQwNjI4MDA3NzA4NEYgLyogQ1NTTWFya3VwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBODBFNkQwMzBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTTWVkaWFSdWxlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkzMTRCRTNBMTFCMzBGNkI3MDAxNDE5ODIgLyogQ1NTTmFtZWRJbWFn
ZVZhbHVlLmggaW4gSGVhZGVycyAqLywKLQkJCQlGOThGRkY0NTExQTI2NzYyMDBGNTQ4RTggLyog
Q1NTT01VdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMDAwQTE5ODlDQTAwN0ZCOEM1
IC8qIENTU1BhZ2VSdWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZEMzcyRTFENkNCMjk0MDA3
NzA4NEYgLyogQ1NTUGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDlDNzcwMTFENkUxRDk4
MDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZE
Mzc0NDFENkNGN0IyMDA3NzA4NEYgLyogQ1NTUGFyc2VySWRpb21zLmggaW4gSGVhZGVycyAqLywK
KwkJCQk5NDZEMzcyRjFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyTW9kZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJOTQ5Qzc3MEIxRDZFNDlFRDAwQzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDlDNzcwOTFENkU0OTg3MDBDMERFNEYgLyogQ1NTUGFy
c2VyT2JzZXJ2ZXJXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZEMzc0MDFENkNFM0My
MDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW4uaCBpbiBIZWFkZXJzICovLAorCQkJCTk0NkQzNzRF
MUQ2RDA4QUEwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJhbmdlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk5NDZEMzczMTFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NzdCMzg2MzEyMjg4M0U5MDBCODFGRjggLyogQ1NTUHJlbG9hZFNjYW5u
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0U2MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQ
cmltaXRpdmVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFRDhBQzMwQ0M0OUJFMDAwQkZD
NTU3IC8qIENTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
MEU2Q0ZGMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzhEMDJCQzYxNTRBMThERjAwQjYyRDA1IC8qIENTU1Byb3BlcnR5QW5pbWF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk2NTY1ODBGNDA5RDEyQjIwMDAwRTYxRDcgLyogQ1NTUHJvcGVydHlO
YW1lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTQ2RDM3NDYxRDZEMDFENDAwNzcwODRGIC8qIENT
U1Byb3BlcnR5UGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDlDNzcwNTFENkUzOUVBMDBD
MERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
MkUzRDhERjEyMkVBMEQxMDAzQUU1QkMgLyogQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5MzYyNjQwQjBERTExMzdEMDA5RDVBMDAgLyogQ1NTUmVmbGVjdGlvbkRp
cmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1QTEyRTAwREMwNDE0ODAwQzlBRkFEIC8q
IENTU1JlZmxlY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDAzMCw2ICsyNDA5Myw4IEBA
CiAJCQkJQThFQTgwMDcwQTE5NTE2RTAwQThFRjVGIC8qIENTU1N0eWxlU2hlZXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZDNTREMDU3MTZBNzY3MzEwMDU3NUU0RCAvKiBDU1NTdXBwb3J0c1J1bGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDODBDOTg4MENEMjk0RUUwMEEwQjdCMyAvKiBDU1NUaW1p
bmdGdW5jdGlvblZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZEMzczQTFENkNERkMwMDA3
NzA4NEYgLyogQ1NTVG9rZW5pemVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZEMzczQzFENkNE
RkMwMDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaCBpbiBIZWFkZXJzICovLAog
CQkJCTlBQjFGMzgwMThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODgyREEyMzE1OTM4NDhEMDAwMTE1RUQgLyogQ1NTVG9T
dHlsZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzcxRjUzRTkwRDI3MDRGOTAwRUNFMEQ1IC8q
IENTU1VuaWNvZGVSYW5nZVZhbHVlLmggaW4gSGVhZGVycyAqLywKQEAgLTI0NzQ5LDYgKzI0ODE0
LDcgQEAKIAkJCQk2NURGMzIzQzA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNQYXR0ZXJuLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzIzQzA5RDFERTY1MDAxQkUzMjUgLyogSlNDYW52YXNQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFRUQxNDMxMDUxOTY5NDAwMDk5RkFCIC8qIEpT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY1OUQyNzExRDZC
OTBBNTAwOTZGRDg2IC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDlFRUQxNDUxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Y5QjdBMTBCQTYwMzI2MDA4NTQwNjQgLyogSlND
REFUQVNlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUZEQTE1RUEyMTJCMDNFRTEwMDNBNTgz
QSAvKiBKU0NoYW5uZWxNZXJnZXJOb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTI0OTc5LDcgKzI1
MDQ1LDYgQEAKIAkJCQlGRDIzQTEyNjEzRjVGQTU5MDBGNjcwMDEgLyogSlNNZWRpYUVsZW1lbnRB
dWRpb1NvdXJjZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYxNDE5MENENjgyNjkwMEZB
REE3NSAvKiBKU01lZGlhRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDM0MzOUI3MEMwRDNE
OEQwMDVGNEQ3QSAvKiBKU01lZGlhTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDY1OUQyNzEx
RDZCOTBBNTAwOTZGRDg2IC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTNENDM3QTMxRDU3QjdFMjAwQUI4NUVBIC8qIEpTTWVkaWFMaXN0Q3VzdG9tLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlEM0E5NEE0NzEyMkRDNDBGMDBBMzdCQkMgLyogSlNNZWRpYVF1
ZXJ5TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M1MzQzRkQxN0I3NEI2MzAwNDIzMkYwIC8q
IEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTE4Niw3ICsy
NTI1MSw2IEBACiAJCQkJQjJGQTNEQjUwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREI3MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NW
R1BhdGhTZWcuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREI5MEFCNzVBNkYwMDBFNUFDNCAv
KiBKU1NWR1BhdGhTZWdBcmNBYnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTk0NkQzNzJFMUQ2Q0Iy
OTQwMDc3MDg0RiAvKiBDU1NQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREJCMEFC
NzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdBcmNSZWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyRkEzREJEMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdDbG9zZVBhdGguaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyRkEzREJGMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdD
dXJ2ZXRvQ3ViaWNBYnMuaCBpbiBIZWFkZXJzICovLApAQCAtMjUzNTksNyArMjU0MjMsNiBAQAog
CQkJCUU0RTM5QUZCMTMzMEVGQTgwMDNBQjI3NCAvKiBMZWdhY3lUaWxlTGF5ZXJQb29sLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTJERDhGNTBEOTFFNkFGMDAwRjg5RUUgLyogTGVnYWN5V2ViQXJj
aGl2ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFNjVCRUIwRUFDREYxNjAwN0U0NTMzIC8qIExl
bmd0aC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTQ2RDM3MkYxRDZDQjI5NDAwNzcwODRGIC8qIENT
U1BhcnNlck1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkY2NDkxMEVBRDE1QzIwMEMxRDZG
NyAvKiBMZW5ndGhCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUU1QkE3RDYzMTUxNDM3Q0EwMEZF
MUUzRiAvKiBMZW5ndGhGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODcxNjcwMUM4
NjlEODMwMDRGRjBERSAvKiBMZW5ndGhQb2ludC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTQwNiwx
NCArMjU0NjksMTQgQEAKIAkJCQlGQUJFNzJGNTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDRBMjhBQUMxMkRGQjhBQzAwQUU5MjNCIC8qIE1h
dGhNTEVsZW1lbnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQkNGODNGNzEwNTlDMUVC
MDBEOTk5REQgLyogTWF0aE1MRnJhY3Rpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlG
QUJFNzJGNzEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkFCRTcyRjkxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTE1hdGhF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NEEyOEFBRjEyREZCOEJGMDBBRTkyM0IgLyog
TWF0aE1MTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZBNjU0QTZDMTEwOEFCRUQwMDI2MTZG
MSAvKiBNYXRoTUxPcGVyYXRvckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUZBQkU3MkY3
MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGQTc2NUE2QzExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MUm93RWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNEZBNjVBNkMxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNw
YWNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5MTc2RTAxMkRBMjVFMTdCQUY4MEEy
IC8qIE1hdGhNTFN0eWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQTY1NEE2QzExMDhBQkVEMDAy
NjE1RTAgLyogTWF0aE1MVG9rZW5FbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlGQTc2NUE2
QzExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MUm93RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkE2NTRBNkMxMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTQzOTA0NkVBMTJEQTI1RTgxMkFGODBBQyAvKiBNYXRoT3BlcmF0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RDVEQzJDMEY0MjNBNzMwMDhGMjBGRCAvKiBNYXRy
aXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTUzNCw2ICsyNTU5
Nyw4IEBACiAJCQkJNTJGMTA4NjYxNjJCNkRBODAwOUFDODFFIC8qIE1peGVkQ29udGVudENoZWNr
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMTI1MjQ5MUExNkMzQkMwMDg2NDQ4MCAvKiBNb2Jp
bGVHZXN0YWx0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYyQjAxMTE4MjA1NDA2MDBGMkI0
MjQgLyogTW9ja0JveC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwNThBRTAxRDY3QzIyOTAwOUE1
MzhDIC8qIE1vY2tHYW1lcGFkLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTA1OEFFMjFENjdDMjI5
MDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUVB
M0Q2REYxQzg1OUQ3RjAwMzAwQkJCIC8qIE1vY2tNZWRpYUVuZHBvaW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlDREYyQjAxMzE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhUGxheWVyTWVkaWFT
b3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjJCMDE1MTgyMDU0MDYwMEYyQjQyNCAvKiBN
b2NrTWVkaWFTb3VyY2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTI2NTM5LDcgKzI2NjA0
LDYgQEAKIAkJCQkwODEzQTRFQTEyODQxMzI2MDA5OTI1MTEgLyogU1ZHU3RhdGljUHJvcGVydHlU
ZWFyT2ZmLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FBOTBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHU3RvcEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUFDMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdTdHJpbmdMaXN0LmggaW4gSGVhZGVycyAqLywKLQkJCQk5NDZEMzczMTFENkNC
Mjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIy
N0FCODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3R5bGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjIyN0FCQjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU1ZHRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjIyMjdBQkUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N3aXRjaEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtMjcyNzIsNyArMjczMzYsNiBAQAogCQkJCTQxN0RBNkQ5MTM3
MzRFNkUwMDdDNTdGQiAvKiBJbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE3OUYw
REExQjk3NzRGRTAwRUQwQTI3IC8qIEludGVybmFscy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE3
QkY3RURGMTRDOTE3NUEwMDE0NDg5RCAvKiBJbnRlcm5hbFNldHRpbmdzLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzRTI5RTVFMTY3QThBMTkwMDU4NkQzRCAvKiBJbnRl
cm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNzE0RUIwMUNG
NjY1Q0UwMDQ3MjNDNCAvKiBKU0dDT2JzZXJ2YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDE3REE3MUQxMzczNURGQTAwN0M1N0ZCIC8qIEpTSW50ZXJuYWxzLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMjcyODIsMTIgKzI3MzQ1LDEzIEBACiAJCQkJQ0Q1MzkzRDMxNzVFMDE4NjAwQzA3MTIz
IC8qIEpTTWVtb3J5SW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTlBRUEyMjFBQUE4MDhB
MDBCNTJCMjUgLyogSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUExRTVCMzFGMUFBRDFEQTQwMDZFQkVGQiAvKiBKU01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTEwNThBREIxRDY3OTJDMTAwOUE1
MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJENDE1MERFMUMxRjg2
OEMwMDBBM0JBMiAvKiBKU01vY2tQYWdlT3ZlcmxheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
QkY1MTIxQzE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0RDMjZCNDAxNjBBOENDNjAwMjY3NTdCIC8qIE1vY2tDRE0uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTFCRjZCODIxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50Rmls
dGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExQjVCMjlFMUFBQTg0NkUwMDhCNjA0MiAvKiBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMDU4QURC
MUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
MTA1OEFERDFENjc5MkMxMDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyRDZGM0U5MDFDMUVDQjI3MDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTdGMDQ3MTlERDQxM0MwMDFFRTlDMyAvKiBNb2Nr
UGFnZU92ZXJsYXlDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUE1RjNCOEYxNkNDNEIz
OTAwNDU1RUIwIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMjc2NzMsMTUgKzI3NzM3LDIzIEBACiAJCQkJMzEyODhFNzIwRTMwMDVENjAwMzYx
OUFFIC8qIENTU0tleWZyYW1lUnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTI4OEU3NDBF
MzAwNUQ2MDAzNjE5QUUgLyogQ1NTS2V5ZnJhbWVzUnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzc3MkUxNjEzMzE2MkMyMDAxRUM5Q0UgLyogQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk5NDZEMzc0OTFENkQwNjI4MDA3NzA4NEYgLyogQ1NTTWFya3Vw
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU2Q0ZDMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NN
ZWRpYVJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE0QkUzQTMxQjMwRjZEMTAwMTQxOTgy
IC8qIENTU05hbWVkSW1hZ2VWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGOThGRkY0NDEx
QTI2NzYyMDBGNTQ4RTggLyogQ1NTT01VdGlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBF
NkNGNTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUGFnZVJ1bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJOTQ2RDM3MkQxRDZDQjI5NDAwNzcwODRGIC8qIENTU1BhcnNlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk5NDlDNzcwMDFENkUxRDk4MDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTk0OUM3NzA4MUQ2RTQ5ODcwMEMwREU0RiAvKiBDU1NQYXJz
ZXJPYnNlcnZlcldyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTQ2RDM3M0YxRDZDRTND
MjAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0NkQz
NzREMUQ2RDA4QTYwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJhbmdlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTk0NkQzNzMwMUQ2Q0IyOTQwMDc3MDg0RiAvKiBDU1NQYXJzZXJWYWx1ZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3QjM4NjIxMjI4ODNFOTAwQjgxRkY4IC8qIENTU1ByZWxv
YWRTY2FubmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU2RDA1MEExOTg5Q0EwMDdGQjhD
NSAvKiBDU1NQcmltaXRpdmVWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBFNkNGNzBB
MTk4OUNBMDA3RkI4QzUgLyogQ1NTUHJvcGVydHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzhE
MDJCQzUxNTRBMThERjAwQjYyRDA1IC8qIENTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBQkE3NkNBMTFEMjBFNTAwMDRDMjAxQyAvKiBDU1NQcm9wZXJ0eU5hbWVz
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0NkQzNzQ1MUQ2RDAxRDQwMDc3MDg0RiAvKiBDU1NQ
cm9wZXJ0eVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NDlDNzcwNDFENkUzOUVBMDBD
MERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTgyRTNEOERFMTIyRUEwRDEwMDNBRTVCQyAvKiBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkM1QTEyREYwREMwNDE0ODAwQzlBRkFEIC8qIENTU1JlZmxlY3RW
YWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzdEOEZGMzFCRDFBNDc5MDBGRkU1NDAgLyog
Q1NTUmV2ZXJ0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzY5NSw2ICsyNzc2Nyw4IEBA
CiAJCQkJQThFQTgwMDgwQTE5NTE2RTAwQThFRjVGIC8qIENTU1N0eWxlU2hlZXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkQ2Nzc3MzkxOTVDQUZCQTAwNzJFMEQzIC8qIENTU1N1cHBvcnRzUnVs
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzgwQzk4NzBDRDI5NEVFMDBBMEI3QjMgLyogQ1NT
VGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NDZEMzczOTFENkNE
RkMwMDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0NkQz
NzNCMUQ2Q0RGQzAwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5QUIxRjM4MTE4RTI0ODlBMDA1MzQ3NDMgLyogQ1NTVG9MZW5ndGhDb252
ZXJzaW9uRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODgyREEyMDE1OTM4NDZBMDAwMTE1
RUQgLyogQ1NTVG9TdHlsZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzFGNTNFQTBEMjcw
NEY5MDBFQ0UwRDUgLyogQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0yODM2Nyw2ICsyODQ0MSw3IEBACiAJCQkJOTc1Q0EyQTExMzAzNjc5RDAwRTk5QUQ5IC8qIEpT
Q3J5cHRvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTdBOEYwMTgxODU0MjUwMDlGODIxRCAv
KiBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFDNjU3
MTIxODE1RjlERDAwMjU2Q0REIC8qIEpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3Q0VGMjYxOTFENkE5MzE3MDBCRTkwNUQgLyogSlNDcnlwdG9DdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE1N0E4RTAxODE3MzMxQzAwOUY4MjFEIC8qIEpT
Q3J5cHRvS2V5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTdBOEU4MTgxODRDNjcwMDlGODIx
RCAvKiBKU0NyeXB0b0tleUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUY4MEI4RDE4
MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
Mjg2ODQsNyArMjg3NTksNiBAQAogCQkJCTFBNzUwRDhEMEE5MEU1MjEwMDBGRjIxNSAvKiBKU05v
ZGVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTc1MERENDBBOTBFNzI5MDAwRkYy
MTUgLyogSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNEOUMy
QzIwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
OTQ2RDM3MzAxRDZDQjI5NDAwNzcwODRGIC8qIENTU1BhcnNlclZhbHVlcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQ0Q5QzI2NTBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlTGlzdEN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzkxQTM4RjFCNDk4QUJFMDAzRjlFRkEgLyogSlNOb2Rl
T3JTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzM1MDNDQTMxMDE3OUFENzAwM0I0N0Ux
IC8qIEpTTm90aWZpY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkxMDEsMTkgKzI5MTc1
LDE5IEBACiAJCQkJRkFCRTcyRjQxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkFCRTcyRkQxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTEVs
ZW1lbnRGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBCQ0Y4M0Y2MTA1OUMxRUIwMEQ5
OTlERCAvKiBNYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkFC
RTcyRjYxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRkFCRTcyRjgxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTE1hdGhF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA1RDkxM0NFRUFCMkE2MDUzNDIxOEFDRiAv
KiBNYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkFCRTcyRkUx
MDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE2
RUEyNENFRUFCMkE2MDUzNDIxOEFDRiAvKiBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRkE2NTRBNkIxMTA4QUJFRDAwMjYxNkYxIC8qIE1hdGhNTE9wZXJh
dG9yRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTlDQTM5MENFRDY2QzMyNTVGNzJD
NTkgLyogTWF0aE1MUGFkZGVkRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGQUJFNzJG
NjEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlGQTc2NUE2QjExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MUm93RWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTlDQTM5MENFRDY2QzMyNTVGNzJCNDggLyogTWF0
aE1MU2NyaXB0c0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVENDgzOTBDRUQ2NkMz
MjU1RjcyQzU5IC8qIE1hdGhNTFNlbGVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NEZBNjVBNkIxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0MzkxNzZERjEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkE2NTRBNkIxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRv
a2VuRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGQTc2NUE2QjExMDhBQkVEMDAyNjE1
RTAgLyogTWF0aE1MUm93RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGQTY1NEE2QjEx
MDhBQkVEMDAyNjI2RjEgLyogTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0MzkwNDZFOTEyREEyNUU4MTJBRjgwQUMgLyogTWF0aE9wZXJhdG9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTQ5RDVEQzJCMEY0MjNBNzMwMDhGMjBGRCAvKiBNYXRyaXgzRFRyYW5z
Zm9ybU9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5MjE1LDYgKzI5Mjg5LDggQEAK
IAkJCQlDNTNEMzkzNDFDOTc4QTQ1MDA3RjNBRTkgLyogTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTJGMTA4NjUxNjJCNkRBNDAwOUFDODFFIC8qIE1peGVkQ29u
dGVudENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RGMkIwMTAxODIwNTQwNjAwRjJC
NDI0IC8qIE1vY2tCb3guY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEwNThBREYxRDY3QzIyOTAw
OUE1MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMDU4QUUxMUQ2
N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTVFQTNENkUwMUM4NTlEODQwMDMwMEJCQiAvKiBNb2NrTWVkaWFFbmRwb2ludC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDREYyQjAxMjE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RGMkIwMTQxODIwNTQwNjAw
RjJCNDI0IC8qIE1vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
OTI1Nyw3ICsyOTMzMyw2IEBACiAJCQkJNDQzRjA0MjcwRTc1QzhGQjAwN0U1NDA3IC8qIE5ldHdv
cmtTdGF0ZU5vdGlmaWVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3RkE2NDkwRERBM0NC
QTAwMjhGOEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyTWFjLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTVDM0M4NTZEMUQ1QTdBREUwMDg4QjlFQyAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb24uY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJNTEwNThBREYxRDY3QzIyOTAwOUE1MzhDIC8qIE1vY2tHYW1l
cGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxM0VGMzQ5MTY4NTBDNDcwMDM0QzgzRiAvKiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNjkzOTcy
NjFBNEE1RkJEMDBFODM0OUQgLyogTkZBLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2NzcyNjAw
MUE1QjNBRDkwMDNDMjRERCAvKiBORkFUb0RGQS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5Mjkx
LDcgKzI5MzY2LDYgQEAKIAkJCQlGREE5MzI1RDE2NzAzQjJBMDA4OTgyREMgLyogT2ZmbGluZUF1
ZGlvQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREEzRTk1QjEzNEE0OUVGMDA4RDRC
NUEgLyogT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyRDNEQTY0MEQwMDZDRDYwMEVGNkYzQSAvKiBPcGVuVHlwZUNHLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTUxMDU4QUUxMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUIyRDNEQTY0MEQwMDZDRDYwMEVGNkYyNyAvKiBPcGVuVHlw
ZU1hdGhEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERTdGQzQ0MTgxOTA0QjEwMDJCQkI3
NyAvKiBPcmRlckl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTAwMTQ2MjhBMTAzQ0Qx
REUwMDBCMjBEQiAvKiBPcmlnaW5BY2Nlc3NFbnRyeS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5
MzUwLDcgKzI5NDI0LDYgQEAKIAkJCQkwRjQzQzg1RDE4OUUxMENGMDAwMTlBRTIgLyogUGVyZm9y
bWFuY2VUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1ODFGQjQxNTIwRjkzQjAwM0E3
QTc1IC8qIFBlcmlvZGljV2F2ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUQ1REMyRDBGNDIz
QTczMDA4RjIwRkQgLyogUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJOTQ2RDM3MzMxRDZDQzQyQjAwNzcwODRGIC8qIFNWR0NTU1BhcnNlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlEMEZGMkE1RDExRjhDNDVBMDA3RTc0RTAgLyogUGluZ0xvYWRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDdEMzM0MzFDN0ExMjNGMDAwNDEyOTMgLyogUGl4
ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkRGNDVBNzFCRDFD
NkZEMDBFNEZBOEMgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI5NzY5LDcgKzI5ODQyLDYgQEAKIAkJCQk5MzMwOUUxNTA5OUU2NDkyMDA1NkU1ODEgLyogU3Bs
aXRUZXh0Tm9kZUNvbnRhaW5pbmdFbGVtZW50Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBMUUxMTU0ODEzMDE1QzVEMDA1NEFDOEMgLyogU3BvdExpZ2h0U291cmNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3QkM2QTNFMTUwNUYwODEwMDFCNzRBQyAvKiBTUUxFeGNlcHRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJN0NFRjI2MTkxRDZBOTMxNzAwQkU5MDVEIC8qIEpTQ3J5cHRv
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkU2RTdBMENDNTU2RDUwMDRBMjA2MiAv
KiBTUUxpdGVBdXRob3JpemVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMjI0NjQ5MENDOThE
REIwMEMwNTI0MCAvKiBTUUxpdGVEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RTQ3
NEUyMDEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMjk4ODQsNiArMjk5NTYsNyBAQAogCQkJCUIyMjI3OUExMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdDb2xvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlBNDBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjIyMjdCMDUwRDAwQkZGMTAwNzFCNzgyIC8qIFNWR0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NDZEMzczMzFENkNDNDJC
MDA3NzA4NEYgLyogU1ZHQ1NTUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUE3
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdDdXJzb3JFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUIyMjI3OUFEMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdEZWZzRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCMjIyNzlCMDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRGVzY0VsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDA4Niw3ICszMDE1OSw2IEBACiAJCQkJN0FBM0E2OTkx
OTRBNjRFNzAwMUNCRDI0IC8qIFRpbGVDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFGNzJCRjBBMTg3RkQ0NDkwMDA5QkNCMyAvKiBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJ
T1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FBM0E2QTMxOTRCNUMyMjAwMUNCRDI0IC8qIFRp
bGVDb3ZlcmFnZU1hcC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5NDZEMzcyRDFENkNCMjk0MDA3
NzA4NEYgLyogQ1NTUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBQTNBNjlCMTk0QTY0
RTcwMDFDQkQyNCAvKiBUaWxlR3JpZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTg3NzBGMjEy
NDJDNTM1MDAyMjI2QkEgLyogVGlsaW5nRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNTVC
M0REQjEyNTFGMTJEMDAzRUYyNjkgLyogVGltZUlucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcAkocmV2aXNpb24gMjA0OTc4KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIs
OSArNjIsOSBAQAogI2luY2x1ZGUgIkNTU0tleWZyYW1lUnVsZS5jcHAiCiAjaW5jbHVkZSAiQ1NT
S2V5ZnJhbWVzUnVsZS5jcHAiCiAjaW5jbHVkZSAiQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5jcHAi
CisjaW5jbHVkZSAiQ1NTTWFya3VwLmNwcCIKICNpbmNsdWRlICJDU1NNZWRpYVJ1bGUuY3BwIgog
I2luY2x1ZGUgIkNTU05hbWVkSW1hZ2VWYWx1ZS5jcHAiCi0jaW5jbHVkZSAiQ1NTT01VdGlscy5j
cHAiCiAjaW5jbHVkZSAiQ1NTUGFnZVJ1bGUuY3BwIgogI2luY2x1ZGUgIkNTU1BhcnNlci5jcHAi
CiAjaW5jbHVkZSAiQ1NTUGFyc2VyVmFsdWVzLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NNYXJrdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNYXJr
dXAuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNYXJrdXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDAzIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgQWxs
YW4gU2FuZGZlbGQgSmVuc2VuIChrZGVAY2FyZXdvbGYuY29tKQorICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBOaWNob2xh
cyBTaGFua3MgPHdlYmtpdEBuaWNrc2hhbmtzLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBF
cmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNo
IE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxl
LmNvbS8pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9y
YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJDU1NNYXJrdXAuaCIKKworI2luY2x1ZGUgIkNTU1BhcnNlcklkaW9tcy5oIgorI2luY2x1ZGUg
PHd0Zi9IZXhOdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgaW5saW5lIGJvb2wg
aXNDU1NUb2tlbml6ZXJJZGVudGlmaWVyKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBlbmQgPSBjaGFy
YWN0ZXJzICsgbGVuZ3RoOworCisgICAgLy8gLT8KKyAgICBpZiAoY2hhcmFjdGVycyAhPSBlbmQg
JiYgY2hhcmFjdGVyc1swXSA9PSAnLScpCisgICAgICAgICsrY2hhcmFjdGVyczsKKworICAgIC8v
IHtubXN0YXJ0fQorICAgIGlmIChjaGFyYWN0ZXJzID09IGVuZCB8fCAhaXNOYW1lU3RhcnRDb2Rl
UG9pbnQoY2hhcmFjdGVyc1swXSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICArK2NoYXJh
Y3RlcnM7CisKKyAgICAvLyB7bm1jaGFyfSoKKyAgICBmb3IgKDsgY2hhcmFjdGVycyAhPSBlbmQ7
ICsrY2hhcmFjdGVycykgeworICAgICAgICBpZiAoIWlzTmFtZUNvZGVQb2ludChjaGFyYWN0ZXJz
WzBdKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworLy8gImlkZW50IiBmcm9tIHRoZSBDU1MgdG9rZW5pemVyLCBtaW51cyBiYWNrc2xh
c2gtZXNjYXBlIHNlcXVlbmNlcworc3RhdGljIGJvb2wgaXNDU1NUb2tlbml6ZXJJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5s
ZW5ndGgoKTsKKworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gaXNDU1NUb2tlbml6ZXJJZGVu
dGlmaWVyKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpOworICAgIHJldHVybiBpc0NTU1Rv
a2VuaXplcklkZW50aWZpZXIoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgpOworfQorCitz
dGF0aWMgdm9pZCBzZXJpYWxpemVDaGFyYWN0ZXIoVUNoYXIzMiBjLCBTdHJpbmdCdWlsZGVyJiBh
cHBlbmRUbykKK3sKKyAgICBhcHBlbmRUby5hcHBlbmQoJ1xcJyk7CisgICAgYXBwZW5kVG8uYXBw
ZW5kKGMpOworfQorCitzdGF0aWMgdm9pZCBzZXJpYWxpemVDaGFyYWN0ZXJBc0NvZGVQb2ludChV
Q2hhcjMyIGMsIFN0cmluZ0J1aWxkZXImIGFwcGVuZFRvKQoreworICAgIGFwcGVuZFRvLmFwcGVu
ZCgnXFwnKTsKKyAgICBhcHBlbmRVbnNpZ25lZEFzSGV4KGMsIGFwcGVuZFRvLCBMb3dlcmNhc2Up
OworICAgIGFwcGVuZFRvLmFwcGVuZCgnICcpOworfQorCit2b2lkIHNlcmlhbGl6ZUlkZW50aWZp
ZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBTdHJpbmdCdWlsZGVyJiBhcHBlbmRUbywgYm9v
bCBza2lwU3RhcnRDaGVja3MpCit7CisgICAgYm9vbCBpc0ZpcnN0ID0gIXNraXBTdGFydENoZWNr
czsKKyAgICBib29sIGlzU2Vjb25kID0gZmFsc2U7CisgICAgYm9vbCBpc0ZpcnN0Q2hhckh5cGhl
biA9IGZhbHNlOworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICB3aGlsZSAoaW5kZXggPCBp
ZGVudGlmaWVyLmxlbmd0aCgpKSB7CisgICAgICAgIFVDaGFyMzIgYyA9IGlkZW50aWZpZXIuY2hh
cmFjdGVyU3RhcnRpbmdBdChpbmRleCk7CisgICAgICAgIGlmICghYykgeworICAgICAgICAgICAg
Ly8gQ2hlY2sgZm9yIGxvbmUgc3Vycm9nYXRlIHdoaWNoIGNoYXJhY3RlclN0YXJ0aW5nQXQgZG9l
cyBub3QgcmV0dXJuLgorICAgICAgICAgICAgYyA9IGlkZW50aWZpZXJbaW5kZXhdOworICAgICAg
ICB9CisKKyAgICAgICAgaW5kZXggKz0gVTE2X0xFTkdUSChjKTsKKworICAgICAgICBpZiAoIWMp
CisgICAgICAgICAgICBhcHBlbmRUby5hcHBlbmQoMHhmZmZkKTsKKyAgICAgICAgZWxzZSBpZiAo
YyA8PSAweDFmIHx8IGMgPT0gMHg3ZiB8fCAoMHgzMCA8PSBjICYmIGMgPD0gMHgzOSAmJiAoaXNG
aXJzdCB8fCAoaXNTZWNvbmQgJiYgaXNGaXJzdENoYXJIeXBoZW4pKSkpCisgICAgICAgICAgICBz
ZXJpYWxpemVDaGFyYWN0ZXJBc0NvZGVQb2ludChjLCBhcHBlbmRUbyk7CisgICAgICAgIGVsc2Ug
aWYgKGMgPT0gMHgyZCAmJiBpc0ZpcnN0ICYmIGluZGV4ID09IGlkZW50aWZpZXIubGVuZ3RoKCkp
CisgICAgICAgICAgICBzZXJpYWxpemVDaGFyYWN0ZXIoYywgYXBwZW5kVG8pOworICAgICAgICBl
bHNlIGlmICgweDgwIDw9IGMgfHwgYyA9PSAweDJkIHx8IGMgPT0gMHg1ZiB8fCAoMHgzMCA8PSBj
ICYmIGMgPD0gMHgzOSkgfHwgKDB4NDEgPD0gYyAmJiBjIDw9IDB4NWEpIHx8ICgweDYxIDw9IGMg
JiYgYyA8PSAweDdhKSkKKyAgICAgICAgICAgIGFwcGVuZFRvLmFwcGVuZChjKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgc2VyaWFsaXplQ2hhcmFjdGVyKGMsIGFwcGVuZFRvKTsKKworICAg
ICAgICBpZiAoaXNGaXJzdCkgeworICAgICAgICAgICAgaXNGaXJzdCA9IGZhbHNlOworICAgICAg
ICAgICAgaXNTZWNvbmQgPSB0cnVlOworICAgICAgICAgICAgaXNGaXJzdENoYXJIeXBoZW4gPSAo
YyA9PSAweDJkKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc1NlY29uZCkKKyAgICAgICAgICAgIGlz
U2Vjb25kID0gZmFsc2U7CisgICAgfQorfQorCit2b2lkIHNlcmlhbGl6ZVN0cmluZyhjb25zdCBT
dHJpbmcmIHN0cmluZywgU3RyaW5nQnVpbGRlciYgYXBwZW5kVG8pCit7CisgICAgYXBwZW5kVG8u
YXBwZW5kKCdcIicpOworCisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIHdoaWxlIChpbmRl
eCA8IHN0cmluZy5sZW5ndGgoKSkgeworICAgICAgICBVQ2hhcjMyIGMgPSBzdHJpbmcuY2hhcmFj
dGVyU3RhcnRpbmdBdChpbmRleCk7CisgICAgICAgIGluZGV4ICs9IFUxNl9MRU5HVEgoYyk7CisK
KyAgICAgICAgaWYgKGMgPD0gMHgxZiB8fCBjID09IDB4N2YpCisgICAgICAgICAgICBzZXJpYWxp
emVDaGFyYWN0ZXJBc0NvZGVQb2ludChjLCBhcHBlbmRUbyk7CisgICAgICAgIGVsc2UgaWYgKGMg
PT0gMHgyMiB8fCBjID09IDB4NWMpCisgICAgICAgICAgICBzZXJpYWxpemVDaGFyYWN0ZXIoYywg
YXBwZW5kVG8pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcHBlbmRUby5hcHBlbmQoYyk7
CisgICAgfQorCisgICAgYXBwZW5kVG8uYXBwZW5kKCdcIicpOworfQorCitTdHJpbmcgc2VyaWFs
aXplU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKKyAgICBzZXJpYWxpemVTdHJpbmcoc3RyaW5nLCBidWlsZGVyKTsKKyAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOworfQorCitTdHJpbmcgc2VyaWFsaXplVVJJKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQoreworICAgIHJldHVybiAidXJsKCIgKyBzZXJpYWxpemVTdHJpbmcoc3RyaW5n
KSArICIpIjsKK30KKworU3RyaW5nIHNlcmlhbGl6ZUZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCit7CisgICAgcmV0dXJuIGlzQ1NTVG9rZW5pemVySWRlbnRpZmllcihzdHJpbmcpID8g
c3RyaW5nIDogc2VyaWFsaXplU3RyaW5nKHN0cmluZyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNYXJrdXAuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWFya3VwLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0NTU01hcmt1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlk
ZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOSAtIDIwMTAgIFRvcmNo
IE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBD
U1NNYXJrdXBfaAorI2RlZmluZSBDU1NNYXJrdXBfaAorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKKy8vIEhlbHBlciBmdW5jdGlvbnMgZm9yIGNvbnZlcnRpbmcgZnJvbSBDU1NW
YWx1ZXMgdG8gdGV4dC4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBDb21tb24gc2VyaWFs
aXppbmcgbWV0aG9kcy4gU2VlOiBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3NvbS8jY29tbW9u
LXNlcmlhbGl6aW5nLWlkaW9tcwordm9pZCBzZXJpYWxpemVJZGVudGlmaWVyKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgU3RyaW5nQnVpbGRlciYgYXBwZW5kVG8sIGJvb2wgc2tpcFN0YXJ0Q2hl
Y2tzID0gZmFsc2UpOwordm9pZCBzZXJpYWxpemVTdHJpbmcoY29uc3QgU3RyaW5nJiwgU3RyaW5n
QnVpbGRlciYgYXBwZW5kVG8pOworU3RyaW5nIHNlcmlhbGl6ZVN0cmluZyhjb25zdCBTdHJpbmcm
KTsKK1N0cmluZyBzZXJpYWxpemVVUkkoY29uc3QgU3RyaW5nJik7CitTdHJpbmcgc2VyaWFsaXpl
Rm9udEZhbWlseShjb25zdCBTdHJpbmcmKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gQ1NTTWFya3VwX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NPTVV0aWxz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTT01VdGlscy5jcHAJKHJl
dmlzaW9uIDIwNDk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NPTVV0aWxzLmNwcAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDEwNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkNTU09NVXRpbHMuaCIKLQotI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBz
ZXJpYWxpemVDaGFyYWN0ZXIoVUNoYXIzMiBjLCBTdHJpbmdCdWlsZGVyJiBhcHBlbmRUbykKLXsK
LSAgICBhcHBlbmRUby5hcHBlbmQoJ1xcJyk7Ci0gICAgYXBwZW5kVG8uYXBwZW5kKGMpOwotfQot
Ci12b2lkIHNlcmlhbGl6ZUNoYXJhY3RlckFzQ29kZVBvaW50KFVDaGFyMzIgYywgU3RyaW5nQnVp
bGRlciYgYXBwZW5kVG8pCi17Ci0gICAgYXBwZW5kVG8uYXBwZW5kKCdcXCcpOwotICAgIGFwcGVu
ZFVuc2lnbmVkQXNIZXgoYywgYXBwZW5kVG8sIExvd2VyY2FzZSk7Ci0gICAgYXBwZW5kVG8uYXBw
ZW5kKCcgJyk7Ci19Ci0KLXZvaWQgc2VyaWFsaXplSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIFN0cmluZ0J1aWxkZXImIGFwcGVuZFRvKQotewotICAgIGJvb2wgaXNGaXJzdCA9
IHRydWU7Ci0gICAgYm9vbCBpc1NlY29uZCA9IGZhbHNlOwotICAgIGJvb2wgaXNGaXJzdENoYXJI
eXBoZW4gPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IDA7Ci0gICAgd2hpbGUgKGluZGV4
IDwgaWRlbnRpZmllci5sZW5ndGgoKSkgewotICAgICAgICBVQ2hhcjMyIGMgPSBpZGVudGlmaWVy
LmNoYXJhY3RlclN0YXJ0aW5nQXQoaW5kZXgpOwotICAgICAgICBpZiAoIWMpIHsKLSAgICAgICAg
ICAgIC8vIENoZWNrIGZvciBsb25lIHN1cnJvZ2F0ZSB3aGljaCBjaGFyYWN0ZXJTdGFydGluZ0F0
IGRvZXMgbm90IHJldHVybi4KLSAgICAgICAgICAgIGMgPSBpZGVudGlmaWVyW2luZGV4XTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGluZGV4ICs9IFUxNl9MRU5HVEgoYyk7Ci0KLSAgICAgICAgaWYg
KCFjKQotICAgICAgICAgICAgYXBwZW5kVG8uYXBwZW5kKDB4ZmZmZCk7Ci0gICAgICAgIGVsc2Ug
aWYgKGMgPD0gMHgxZiB8fCBjID09IDB4N2YgfHwgKDB4MzAgPD0gYyAmJiBjIDw9IDB4MzkgJiYg
KGlzRmlyc3QgfHwgKGlzU2Vjb25kICYmIGlzRmlyc3RDaGFySHlwaGVuKSkpKQotICAgICAgICAg
ICAgc2VyaWFsaXplQ2hhcmFjdGVyQXNDb2RlUG9pbnQoYywgYXBwZW5kVG8pOwotICAgICAgICBl
bHNlIGlmIChjID09IDB4MmQgJiYgaXNGaXJzdCAmJiBpbmRleCA9PSBpZGVudGlmaWVyLmxlbmd0
aCgpKQotICAgICAgICAgICAgc2VyaWFsaXplQ2hhcmFjdGVyKGMsIGFwcGVuZFRvKTsKLSAgICAg
ICAgZWxzZSBpZiAoMHg4MCA8PSBjIHx8IGMgPT0gMHgyZCB8fCBjID09IDB4NWYgfHwgKDB4MzAg
PD0gYyAmJiBjIDw9IDB4MzkpIHx8ICgweDQxIDw9IGMgJiYgYyA8PSAweDVhKSB8fCAoMHg2MSA8
PSBjICYmIGMgPD0gMHg3YSkpCi0gICAgICAgICAgICBhcHBlbmRUby5hcHBlbmQoYyk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHNlcmlhbGl6ZUNoYXJhY3RlcihjLCBhcHBlbmRUbyk7Ci0K
LSAgICAgICAgaWYgKGlzRmlyc3QpIHsKLSAgICAgICAgICAgIGlzRmlyc3QgPSBmYWxzZTsKLSAg
ICAgICAgICAgIGlzU2Vjb25kID0gdHJ1ZTsKLSAgICAgICAgICAgIGlzRmlyc3RDaGFySHlwaGVu
ID0gKGMgPT0gMHgyZCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNTZWNvbmQpCi0gICAgICAgICAg
ICBpc1NlY29uZCA9IGZhbHNlOwotICAgIH0KLX0KLQotdm9pZCBzZXJpYWxpemVTdHJpbmcoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIFN0cmluZ0J1aWxkZXImIGFwcGVuZFRvKQotewotICAgIGFwcGVu
ZFRvLmFwcGVuZCgnXCInKTsKLQotICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKLSAgICB3aGlsZSAo
aW5kZXggPCBzdHJpbmcubGVuZ3RoKCkpIHsKLSAgICAgICAgVUNoYXIzMiBjID0gc3RyaW5nLmNo
YXJhY3RlclN0YXJ0aW5nQXQoaW5kZXgpOwotICAgICAgICBpbmRleCArPSBVMTZfTEVOR1RIKGMp
OwotICAgICAgICBpZiAoYyA8PSAweDFmKQotICAgICAgICAgICAgc2VyaWFsaXplQ2hhcmFjdGVy
QXNDb2RlUG9pbnQoYywgYXBwZW5kVG8pOwotICAgICAgICBlbHNlIGlmIChjID09IDB4MjIgfHwg
YyA9PSAweDVjKQotICAgICAgICAgICAgc2VyaWFsaXplQ2hhcmFjdGVyKGMsIGFwcGVuZFRvKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXBwZW5kVG8uYXBwZW5kKGMpOwotICAgIH0KLQot
ICAgIGFwcGVuZFRvLmFwcGVuZCgnXCInKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoK
UHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvY3NzL0NTU09NVXRpbHMuY3BwCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U09NVXRpbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTT01VdGlscy5o
CShyZXZpc2lvbiAyMDQ5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTT01VdGlscy5oCShu
b25leGlzdGVudCkKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8dW5p
Y29kZS91bWFjaGluZS5oPgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLS8vIFV0aWxpdGll
cyBmb3IgQ1NTT00gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nzb20vCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotLy8gQ29tbW9uIHNlcmlhbGl6aW5nIG1ldGhvZHMuIFNlZTogaHR0cDovL2Rl
di53My5vcmcvY3Nzd2cvY3Nzb20vI2NvbW1vbi1zZXJpYWxpemluZy1pZGlvbXMKLXZvaWQgc2Vy
aWFsaXplQ2hhcmFjdGVyKFVDaGFyMzIsIFN0cmluZ0J1aWxkZXImKTsKLXZvaWQgc2VyaWFsaXpl
Q2hhcmFjdGVyQXNDb2RlUG9pbnQoVUNoYXIzMiwgU3RyaW5nQnVpbGRlciYpOwotdm9pZCBzZXJp
YWxpemVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgU3RyaW5nQnVpbGRlciYp
Owotdm9pZCBzZXJpYWxpemVTdHJpbmcoY29uc3QgU3RyaW5nJiwgU3RyaW5nQnVpbGRlciYpOwot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTT01VdGlscy5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQoj
IyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCShyZXZpc2lvbiAyMDQ5NzgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKIAot
I2luY2x1ZGUgIkNTU09NVXRpbHMuaCIKKyNpbmNsdWRlICJDU1NNYXJrdXAuaCIKICNpbmNsdWRl
ICJDU1NTZWxlY3Rvckxpc3QuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJT
ZWxlY3RvclBzZXVkb1R5cGVNYXAuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NO
YW1lc3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NOYW1l
c3BhY2UuY3BwCShyZXZpc2lvbiAyMDQ5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NT
TmFtZXNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkRPTUNTU05hbWVzcGFjZS5oIgogCi0jaW5jbHVkZSAiQ1NT
T01VdGlscy5oIgorI2luY2x1ZGUgIkNTU01hcmt1cC5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5o
IgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAJ
KHJldmlzaW9uIDIwNDk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2ODgsNyArMTM2ODgsNyBAQCBDU1NWYWx1ZUlEIGNz
c1ZhbHVlS2V5d29yZElEKGNvbnN0IENTU1BhCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgotc3RhdGljIGlubGluZSBib29sIGlzQ1NTVG9rZW5pemVySWRlbnRpZmllcihj
b25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCitzdGF0aWMg
aW5saW5lIGJvb2wgaXNDU1NUb2tlbml6ZXJJZGVudChjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5k
ID0gY2hhcmFjdGVycyArIGxlbmd0aDsKIApAQCAtMTM3MTEsNyArMTM3MTEsNyBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgaXNDU1NUb2tlbml6ZXJJZGVudGlmCiB9CiAKIC8vICJpZGVudCIgZnJvbSB0
aGUgQ1NTIHRva2VuaXplciwgbWludXMgYmFja3NsYXNoLWVzY2FwZSBzZXF1ZW5jZXMKLXN0YXRp
YyBib29sIGlzQ1NTVG9rZW5pemVySWRlbnRpZmllcihjb25zdCBTdHJpbmcmIHN0cmluZykKK3N0
YXRpYyBib29sIGlzQ1NTVG9rZW5pemVySWRlbnQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwogCkBAIC0xMzcxOSw4ICsxMzcx
OSw4IEBAIHN0YXRpYyBib29sIGlzQ1NTVG9rZW5pemVySWRlbnRpZmllcihjb24KICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJu
IGlzQ1NTVG9rZW5pemVySWRlbnRpZmllcihzdHJpbmcuY2hhcmFjdGVyczgoKSwgbGVuZ3RoKTsK
LSAgICByZXR1cm4gaXNDU1NUb2tlbml6ZXJJZGVudGlmaWVyKHN0cmluZy5jaGFyYWN0ZXJzMTYo
KSwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGlzQ1NTVG9rZW5pemVySWRlbnQoc3RyaW5nLmNo
YXJhY3RlcnM4KCksIGxlbmd0aCk7CisgICAgcmV0dXJuIGlzQ1NTVG9rZW5pemVySWRlbnQoc3Ry
aW5nLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4KQEAgLTEzODM0LDcgKzEzODM0LDcgQEAgU3RyaW5nIHF1b3RlQ1NTU3RyaW5n
KGNvbnN0IFN0cmluZyYgc3RyaQogCiBTdHJpbmcgcXVvdGVDU1NTdHJpbmdJZk5lZWRlZChjb25z
dCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICByZXR1cm4gaXNDU1NUb2tlbml6ZXJJZGVudGlmaWVy
KHN0cmluZykgPyBzdHJpbmcgOiBxdW90ZUNTU1N0cmluZyhzdHJpbmcpOworICAgIHJldHVybiBp
c0NTU1Rva2VuaXplcklkZW50KHN0cmluZykgPyBzdHJpbmcgOiBxdW90ZUNTU1N0cmluZyhzdHJp
bmcpOwogfQogCiBTdHJpbmcgcXVvdGVDU1NVUkxJZk5lZWRlZChjb25zdCBTdHJpbmcmIHN0cmlu
ZykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQ
YXRocy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJGYXN0UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTExNyBAQAorLy8g
Q29weXJpZ2h0IDIwMTQgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBk
aXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
Ky8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJGYXN0UGF0aHMuaCIKKworLy8gRklYTUUtTkVX
UEFSU0VSOiAjaW5jbHVkZSAiQ1NTQ29sb3JWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0Z1bmN0aW9u
VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NJbmhlcml0ZWRWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0lu
aXRpYWxWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1BhcnNlcklkaW9tcy5oIgorI2luY2x1ZGUgIkNT
U1ByaW1pdGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlQYXJzZXIuaCIKKyNpbmNs
dWRlICJIVE1MUGFyc2VySWRpb21zLmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oIgorLy8gRklYTUUtTkVXUEFSU0VSOiAjaW5jbHVkZSAiU3R5bGVDb2xvci5oIgorI2luY2x1
ZGUgIlN0eWxlUHJvcGVydHlTaG9ydGhhbmQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisv
KiBGSVhNRS1ORVdQQVJTRVI6IFR1cm4gb2ZmIGZvciBub3cuCisgCitzdGF0aWMgaW5saW5lIGJv
b2wgaXNTaW1wbGVMZW5ndGhQcm9wZXJ0eUlEKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCwgYm9v
bCYgYWNjZXB0c05lZ2F0aXZlTnVtYmVycykKK3sKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsK
KyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFNpemU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRD
b2x1bW5HYXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRSb3dHYXA6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUhlaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2lkdGg6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eU1pbkhlaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWluV2lkdGg6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b206CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdM
ZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQ6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVBhZGRpbmdUb3A6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxXaWR0aDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TG9naWNhbEhlaWdodDoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWluTG9naWNhbFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
aW5Mb2dpY2FsSGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nQWZ0ZXI6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFBhZGRpbmdFbmQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRp
bmdTdGFydDoKKyAgLy8gIGNhc2UgQ1NTUHJvcGVydHlTaGFwZU1hcmdpbjoKKyAgICBjYXNlIENT
U1Byb3BlcnR5UjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Ung6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVJ5OgorICAgICAgICBhY2NlcHRzTmVnYXRpdmVOdW1iZXJzID0gZmFsc2U7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3R0b206CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUN4OgorICAgIGNhc2UgQ1NTUHJvcGVydHlDeToKKyAgICBjYXNlIENTU1Byb3BlcnR5TGVm
dDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlNYXJnaW5MZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5SaWdodDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5TWFyZ2luVG9wOgorIC8vICAgY2FzZSBDU1NQcm9wZXJ0eU1vdGlvbk9mZnNl
dDoKKyAgICBjYXNlIENTU1Byb3BlcnR5UmlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRvcDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXI6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
RW5kOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5TdGFydDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5WDoKKyAgICBjYXNlIENTU1Byb3BlcnR5WToKKyAgICAgICAgYWNjZXB0c05lZ2F0
aXZlTnVtYmVycyA9IHRydWU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgorc3RhdGljIGlubGluZSBib29sIHBhcnNlU2ltcGxlTGVuZ3RoKGNvbnN0IENo
YXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlcyYgdW5pdCwgZG91YmxlJiBudW1iZXIpCit7CisgICAgaWYgKGxlbmd0aCA+
IDIgJiYgKGNoYXJhY3RlcnNbbGVuZ3RoIC0gMl0gfCAweDIwKSA9PSAncCcgJiYgKGNoYXJhY3Rl
cnNbbGVuZ3RoIC0gMV0gfCAweDIwKSA9PSAneCcpIHsKKyAgICAgICAgbGVuZ3RoIC09IDI7Cisg
ICAgICAgIHVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUFg7CisgICAg
fSBlbHNlIGlmIChsZW5ndGggPiAxICYmIGNoYXJhY3RlcnNbbGVuZ3RoIC0gMV0gPT0gJyUnKSB7
CisgICAgICAgIGxlbmd0aCAtPSAxOworICAgICAgICB1bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlczo6Q1NTX1BFUkNFTlRBR0U7CisgICAgfQorCisgICAgLy8gV2UgcmVseSBvbiBj
aGFyYWN0ZXJzVG9Eb3VibGUgZm9yIHZhbGlkYXRpb24gYXMgd2VsbC4gVGhlIGZ1bmN0aW9uCisg
ICAgLy8gd2lsbCBzZXQgIm9rIiB0byAiZmFsc2UiIGlmIHRoZSBlbnRpcmUgcGFzc2VkLWluIGNo
YXJhY3RlciByYW5nZSBkb2VzCisgICAgLy8gbm90IHJlcHJlc2VudCBhIGRvdWJsZS4KKyAgICBi
b29sIG9rOworICAgIG51bWJlciA9IGNoYXJhY3RlcnNUb0RvdWJsZShjaGFyYWN0ZXJzLCBsZW5n
dGgsICZvayk7CisgICAgaWYgKCFvaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG51bWJl
ciA9IGNsYW1wVG88ZG91YmxlPihudW1iZXIsIC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6
bWF4KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogcGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJzZXJNb2RlIGNz
c1BhcnNlck1vZGUpCit7CisgICAgQVNTRVJUKCFzdHJpbmcuaXNFbXB0eSgpKTsKKyAgICBib29s
IGFjY2VwdHNOZWdhdGl2ZU51bWJlcnMgPSBmYWxzZTsKKworICAgIC8vIEluIEB2aWV3cG9ydCwg
d2lkdGggYW5kIGhlaWdodCBhcmUgc2hvcnRoYW5kcywgbm90IHNpbXBsZSBsZW5ndGggdmFsdWVz
LgorICAgIGlmIChpc0NTU1ZpZXdwb3J0UGFyc2luZ0VuYWJsZWRGb3JNb2RlKGNzc1BhcnNlck1v
ZGUpIHx8ICFpc1NpbXBsZUxlbmd0aFByb3BlcnR5SUQocHJvcGVydHlJZCwgYWNjZXB0c05lZ2F0
aXZlTnVtYmVycykpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgdW5zaWduZWQgbGVu
Z3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAgIGRvdWJsZSBudW1iZXI7CisgICAgQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlcyB1bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6
TnVtYmVyOworCisgICAgaWYgKHN0cmluZy5pczhCaXQoKSkgeworICAgICAgICBpZiAoIXBhcnNl
U2ltcGxlTGVuZ3RoKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgsIHVuaXQsIG51bWJlcikp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAo
IXBhcnNlU2ltcGxlTGVuZ3RoKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoLCB1bml0LCBu
dW1iZXIpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKHVu
aXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6TnVtYmVyKSB7CisgICAgICAgIGlm
IChjc3NQYXJzZXJNb2RlID09IFNWR0F0dHJpYnV0ZU1vZGUpCisgICAgICAgICAgICB1bml0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6VXNlclVuaXRzOworICAgICAgICBlbHNlIGlm
ICghbnVtYmVyKQorICAgICAgICAgICAgdW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZXM6OlBpeGVsczsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorCisgICAgaWYgKG51bWJlciA8IDAgJiYgIWFjY2VwdHNOZWdhdGl2ZU51bWJlcnMpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUobnVtYmVyLCB1bml0KTsKK30KKworc3RhdGljIGlubGluZSBib29sIGlzQ29sb3JQcm9w
ZXJ0eUlEKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCkKK3sKKyAgICBzd2l0Y2ggKHByb3BlcnR5
SWQpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3I6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVyUmlnaHRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3I6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGw6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsb29kQ29sb3I6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpZ2h0aW5nQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eU91dGxpbmVDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5U3RvcENvbG9yOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlTdHJva2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVy
Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1uUnVs
ZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcjoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3Jh
dGlvbkNvbG9yOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorfQorCisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFj
dGVycyB3aGljaCBmb3JtIGEgdmFsaWQgZG91YmxlCisvLyBhbmQgYXJlIHRlcm1pbmF0ZWQgYnkg
dGhlIGdpdmVuIHRlcm1pbmF0b3IgY2hhcmFjdGVyCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KK3N0YXRpYyBpbnQgY2hlY2tGb3JWYWxpZERvdWJsZShjb25zdCBDaGFyYWN0ZXJU
eXBlKiBzdHJpbmcsIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCwgY29uc3QgY2hhciB0ZXJtaW5h
dG9yKQoreworICAgIGludCBsZW5ndGggPSBlbmQgLSBzdHJpbmc7CisgICAgaWYgKGxlbmd0aCA8
IDEpCisgICAgICAgIHJldHVybiAwOworCisgICAgYm9vbCBkZWNpbWFsTWFya1NlZW4gPSBmYWxz
ZTsKKyAgICBpbnQgcHJvY2Vzc2VkTGVuZ3RoID0gMDsKKworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKHN0cmluZ1tpXSA9PSB0ZXJtaW5hdG9yKSB7
CisgICAgICAgICAgICBwcm9jZXNzZWRMZW5ndGggPSBpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoc3RyaW5nW2ldKSkgeworICAgICAg
ICAgICAgaWYgKCFkZWNpbWFsTWFya1NlZW4gJiYgc3RyaW5nW2ldID09ICcuJykKKyAgICAgICAg
ICAgICAgICBkZWNpbWFsTWFya1NlZW4gPSB0cnVlOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGRlY2ltYWxN
YXJrU2VlbiAmJiBwcm9jZXNzZWRMZW5ndGggPT0gMSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICByZXR1cm4gcHJvY2Vzc2VkTGVuZ3RoOworfQorCisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2Yg
Y2hhcmFjdGVycyBjb25zdW1lZCBmb3IgcGFyc2luZyBhIHZhbGlkIGRvdWJsZQorLy8gdGVybWlu
YXRlZCBieSB0aGUgZ2l2ZW4gdGVybWluYXRvciBjaGFyYWN0ZXIKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGludCBwYXJzZURvdWJsZShjb25zdCBDaGFyYWN0ZXJU
eXBlKiBzdHJpbmcsIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCwgY29uc3QgY2hhciB0ZXJtaW5h
dG9yLCBkb3VibGUmIHZhbHVlKQoreworICAgIGludCBsZW5ndGggPSBjaGVja0ZvclZhbGlkRG91
YmxlKHN0cmluZywgZW5kLCB0ZXJtaW5hdG9yKTsKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBpbnQgcG9zaXRpb24gPSAwOworICAgIGRvdWJsZSBsb2NhbFZhbHVl
ID0gMDsKKworICAgIC8vIFRoZSBjb25zdW1lZCBjaGFyYWN0ZXJzIGhlcmUgYXJlIGd1YXJhbnRl
ZWQgdG8gYmUKKyAgICAvLyBBU0NJSSBkaWdpdHMgd2l0aCBvciB3aXRob3V0IGEgZGVjaW1hbCBt
YXJrCisgICAgZm9yICg7IHBvc2l0aW9uIDwgbGVuZ3RoOyArK3Bvc2l0aW9uKSB7CisgICAgICAg
IGlmIChzdHJpbmdbcG9zaXRpb25dID09ICcuJykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBsb2NhbFZhbHVlID0gbG9jYWxWYWx1ZSAqIDEwICsgc3RyaW5nW3Bvc2l0aW9uXSAtICcwJzsK
KyAgICB9CisKKyAgICBpZiAoKytwb3NpdGlvbiA9PSBsZW5ndGgpIHsKKyAgICAgICAgdmFsdWUg
PSBsb2NhbFZhbHVlOworICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgIH0KKworICAgIGRvdWJs
ZSBmcmFjdGlvbiA9IDA7CisgICAgZG91YmxlIHNjYWxlID0gMTsKKworICAgIGNvbnN0IGRvdWJs
ZSBtYXhTY2FsZSA9IDEwMDAwMDA7CisgICAgd2hpbGUgKHBvc2l0aW9uIDwgbGVuZ3RoICYmIHNj
YWxlIDwgbWF4U2NhbGUpIHsKKyAgICAgICAgZnJhY3Rpb24gPSBmcmFjdGlvbiAqIDEwICsgc3Ry
aW5nW3Bvc2l0aW9uKytdIC0gJzAnOworICAgICAgICBzY2FsZSAqPSAxMDsKKyAgICB9CisKKyAg
ICB2YWx1ZSA9IGxvY2FsVmFsdWUgKyBmcmFjdGlvbiAvIHNjYWxlOworICAgIHJldHVybiBsZW5n
dGg7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGJvb2wg
cGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjb25zdCBDaGFyYWN0ZXJUeXBlKiYgc3RyaW5nLCBj
b25zdCBDaGFyYWN0ZXJUeXBlKiBlbmQsIGNvbnN0IGNoYXIgdGVybWluYXRvciwgQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlcyYgZXhwZWN0LCBpbnQmIHZhbHVlKQoreworICAgIGNvbnN0IENo
YXJhY3RlclR5cGUqIGN1cnJlbnQgPSBzdHJpbmc7CisgICAgZG91YmxlIGxvY2FsVmFsdWUgPSAw
OworICAgIGJvb2wgbmVnYXRpdmUgPSBmYWxzZTsKKyAgICB3aGlsZSAoY3VycmVudCAhPSBlbmQg
JiYgaXNIVE1MU3BhY2U8Q2hhcmFjdGVyVHlwZT4oKmN1cnJlbnQpKQorICAgICAgICBjdXJyZW50
Kys7CisgICAgaWYgKGN1cnJlbnQgIT0gZW5kICYmICpjdXJyZW50ID09ICctJykgeworICAgICAg
ICBuZWdhdGl2ZSA9IHRydWU7CisgICAgICAgIGN1cnJlbnQrKzsKKyAgICB9CisgICAgaWYgKGN1
cnJlbnQgPT0gZW5kIHx8ICFpc0FTQ0lJRGlnaXQoKmN1cnJlbnQpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgd2hpbGUgKGN1cnJlbnQgIT0gZW5kICYmIGlzQVNDSUlEaWdpdCgqY3VycmVu
dCkpIHsKKyAgICAgICAgZG91YmxlIG5ld1ZhbHVlID0gbG9jYWxWYWx1ZSAqIDEwICsgKmN1cnJl
bnQrKyAtICcwJzsKKyAgICAgICAgaWYgKG5ld1ZhbHVlID49IDI1NSkgeworICAgICAgICAgICAg
Ly8gQ2xhbXAgdmFsdWVzIGF0IDI1NS4KKyAgICAgICAgICAgIGxvY2FsVmFsdWUgPSAyNTU7Cisg
ICAgICAgICAgICB3aGlsZSAoY3VycmVudCAhPSBlbmQgJiYgaXNBU0NJSURpZ2l0KCpjdXJyZW50
KSkKKyAgICAgICAgICAgICAgICArK2N1cnJlbnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICBsb2NhbFZhbHVlID0gbmV3VmFsdWU7CisgICAgfQorCisgICAgaWYgKGN1
cnJlbnQgPT0gZW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoZXhwZWN0ID09
IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6Ok51bWJlciAmJiAoKmN1cnJlbnQgPT0gJy4n
IHx8ICpjdXJyZW50ID09ICclJykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgq
Y3VycmVudCA9PSAnLicpIHsKKyAgICAgICAgLy8gV2UgYWxyZWFkeSBwYXJzZWQgdGhlIGludGVn
cmFsIHBhcnQsIHRyeSB0byBwYXJzZQorICAgICAgICAvLyB0aGUgZnJhY3Rpb24gcGFydCBvZiB0
aGUgcGVyY2VudGFnZSB2YWx1ZS4KKyAgICAgICAgZG91YmxlIHBlcmNlbnRhZ2UgPSAwOworICAg
ICAgICBpbnQgbnVtQ2hhcmFjdGVyc1BhcnNlZCA9IHBhcnNlRG91YmxlKGN1cnJlbnQsIGVuZCwg
JyUnLCBwZXJjZW50YWdlKTsKKyAgICAgICAgaWYgKCFudW1DaGFyYWN0ZXJzUGFyc2VkKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjdXJyZW50ICs9IG51bUNoYXJhY3RlcnNQ
YXJzZWQ7CisgICAgICAgIGlmICgqY3VycmVudCAhPSAnJScpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGxvY2FsVmFsdWUgKz0gcGVyY2VudGFnZTsKKyAgICB9CisKKyAgICBp
ZiAoZXhwZWN0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OlBlcmNlbnRhZ2UgJiYg
KmN1cnJlbnQgIT0gJyUnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoKmN1cnJl
bnQgPT0gJyUnKSB7CisgICAgICAgIGV4cGVjdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZXM6OlBlcmNlbnRhZ2U7CisgICAgICAgIGxvY2FsVmFsdWUgPSBsb2NhbFZhbHVlIC8gMTAwLjAg
KiAyNTYuMDsKKyAgICAgICAgLy8gQ2xhbXAgdmFsdWVzIGF0IDI1NSBmb3IgcGVyY2VudGFnZXMg
b3ZlciAxMDAlCisgICAgICAgIGlmIChsb2NhbFZhbHVlID4gMjU1KQorICAgICAgICAgICAgbG9j
YWxWYWx1ZSA9IDI1NTsKKyAgICAgICAgY3VycmVudCsrOworICAgIH0gZWxzZSB7CisgICAgICAg
IGV4cGVjdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6Ok51bWJlcjsKKyAgICB9CisK
KyAgICB3aGlsZSAoY3VycmVudCAhPSBlbmQgJiYgaXNIVE1MU3BhY2U8Q2hhcmFjdGVyVHlwZT4o
KmN1cnJlbnQpKQorICAgICAgICBjdXJyZW50Kys7CisgICAgaWYgKGN1cnJlbnQgPT0gZW5kIHx8
ICpjdXJyZW50KysgIT0gdGVybWluYXRvcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8v
IENsYW1wIG5lZ2F0aXZlIHZhbHVlcyBhdCB6ZXJvLgorICAgIHZhbHVlID0gbmVnYXRpdmUgPyAw
IDogc3RhdGljX2Nhc3Q8aW50Pihsb2NhbFZhbHVlKTsKKyAgICBzdHJpbmcgPSBjdXJyZW50Owor
ICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4K
K3N0YXRpYyBpbmxpbmUgYm9vbCBpc1RlbnRoQWxwaGEoY29uc3QgQ2hhcmFjdGVyVHlwZSogc3Ry
aW5nLCBjb25zdCBpbnQgbGVuZ3RoKQoreworICAgIC8vICIwLlgiCisgICAgaWYgKGxlbmd0aCA9
PSAzICYmIHN0cmluZ1swXSA9PSAnMCcgJiYgc3RyaW5nWzFdID09ICcuJyAmJiBpc0FTQ0lJRGln
aXQoc3RyaW5nWzJdKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyAiLlgiCisgICAg
aWYgKGxlbmd0aCA9PSAyICYmIHN0cmluZ1swXSA9PSAnLicgJiYgaXNBU0NJSURpZ2l0KHN0cmlu
Z1sxXSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBpbmxpbmUgYm9vbCBwYXJz
ZUFscGhhVmFsdWUoY29uc3QgQ2hhcmFjdGVyVHlwZSomIHN0cmluZywgY29uc3QgQ2hhcmFjdGVy
VHlwZSogZW5kLCBjb25zdCBjaGFyIHRlcm1pbmF0b3IsIGludCYgdmFsdWUpCit7CisgICAgd2hp
bGUgKHN0cmluZyAhPSBlbmQgJiYgaXNIVE1MU3BhY2U8Q2hhcmFjdGVyVHlwZT4oKnN0cmluZykp
CisgICAgICAgIHN0cmluZysrOworCisgICAgYm9vbCBuZWdhdGl2ZSA9IGZhbHNlOworCisgICAg
aWYgKHN0cmluZyAhPSBlbmQgJiYgKnN0cmluZyA9PSAnLScpIHsKKyAgICAgICAgbmVnYXRpdmUg
PSB0cnVlOworICAgICAgICBzdHJpbmcrKzsKKyAgICB9CisKKyAgICB2YWx1ZSA9IDA7CisKKyAg
ICBpbnQgbGVuZ3RoID0gZW5kIC0gc3RyaW5nOworICAgIGlmIChsZW5ndGggPCAyKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc3RyaW5nW2xlbmd0aCAtIDFdICE9IHRlcm1pbmF0
b3IgfHwgIWlzQVNDSUlEaWdpdChzdHJpbmdbbGVuZ3RoIC0gMl0pKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoc3RyaW5nWzBdICE9ICcwJyAmJiBzdHJpbmdbMF0gIT0gJzEnICYm
IHN0cmluZ1swXSAhPSAnLicpIHsKKyAgICAgICAgaWYgKGNoZWNrRm9yVmFsaWREb3VibGUoc3Ry
aW5nLCBlbmQsIHRlcm1pbmF0b3IpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IG5lZ2F0aXZlID8g
MCA6IDI1NTsKKyAgICAgICAgICAgIHN0cmluZyA9IGVuZDsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAo
bGVuZ3RoID09IDIgJiYgc3RyaW5nWzBdICE9ICcuJykgeworICAgICAgICB2YWx1ZSA9ICFuZWdh
dGl2ZSAmJiBzdHJpbmdbMF0gPT0gJzEnID8gMjU1IDogMDsKKyAgICAgICAgc3RyaW5nID0gZW5k
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoaXNUZW50aEFscGhhKHN0
cmluZywgbGVuZ3RoIC0gMSkpIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCB0ZW50aEFscGhh
VmFsdWVzW10gPSB7IDAsIDI1LCA1MSwgNzYsIDEwMiwgMTI3LCAxNTMsIDE3OSwgMjA0LCAyMzAg
fTsKKyAgICAgICAgdmFsdWUgPSBuZWdhdGl2ZSA/IDAgOiB0ZW50aEFscGhhVmFsdWVzW3N0cmlu
Z1tsZW5ndGggLSAyXSAtICcwJ107CisgICAgICAgIHN0cmluZyA9IGVuZDsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgZG91YmxlIGFscGhhID0gMDsKKyAgICBpZiAoIXBhcnNl
RG91YmxlKHN0cmluZywgZW5kLCB0ZXJtaW5hdG9yLCBhbHBoYSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB2YWx1ZSA9IG5lZ2F0aXZlID8gMCA6IHN0YXRpY19jYXN0PGludD4oYWxwaGEg
KiBuZXh0YWZ0ZXIoMjU2LjAsIDAuMCkpOworICAgIHN0cmluZyA9IGVuZDsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgaW5s
aW5lIGJvb2wgbWlnaHRCZVJHQkEoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5z
aWduZWQgbGVuZ3RoKQoreworICAgIGlmIChsZW5ndGggPCA1KQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIGNoYXJhY3RlcnNbNF0gPT0gJygnCisgICAgICAgICYmIGlzQVNDSUlB
bHBoYUNhc2VsZXNzRXF1YWwoY2hhcmFjdGVyc1swXSwgJ3InKQorICAgICAgICAmJiBpc0FTQ0lJ
QWxwaGFDYXNlbGVzc0VxdWFsKGNoYXJhY3RlcnNbMV0sICdnJykKKyAgICAgICAgJiYgaXNBU0NJ
SUFscGhhQ2FzZWxlc3NFcXVhbChjaGFyYWN0ZXJzWzJdLCAnYicpCisgICAgICAgICYmIGlzQVND
SUlBbHBoYUNhc2VsZXNzRXF1YWwoY2hhcmFjdGVyc1szXSwgJ2EnKTsKK30KKwordGVtcGxhdGUg
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgaW5saW5lIGJvb2wgbWlnaHRCZVJHQihj
b25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAg
aWYgKGxlbmd0aCA8IDQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gY2hhcmFj
dGVyc1szXSA9PSAnKCcKKyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChjaGFy
YWN0ZXJzWzBdLCAncicpCisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoY2hh
cmFjdGVyc1sxXSwgJ2cnKQorICAgICAgICAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKGNo
YXJhY3RlcnNbMl0sICdiJyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
Pgorc3RhdGljIGJvb2wgZmFzdFBhcnNlQ29sb3JJbnRlcm5hbChSR0JBMzImIHJnYiwgY29uc3Qg
Q2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBib29sIHF1aXJrc01v
ZGUpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyBleHBlY3QgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpVbmtub3duOworCisgICAgaWYgKGxlbmd0aCA+PSA0ICYm
IGNoYXJhY3RlcnNbMF0gPT0gJyMnKQorICAgICAgICByZXR1cm4gQ29sb3I6OnBhcnNlSGV4Q29s
b3IoY2hhcmFjdGVycyArIDEsIGxlbmd0aCAtIDEsIHJnYik7CisKKyAgICBpZiAocXVpcmtzTW9k
ZSAmJiAobGVuZ3RoID09IDMgfHwgbGVuZ3RoID09IDYpKSB7CisgICAgICAgIGlmIChDb2xvcjo6
cGFyc2VIZXhDb2xvcihjaGFyYWN0ZXJzLCBsZW5ndGgsIHJnYikpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBUcnkgcmdiYSgpIHN5bnRheC4KKyAgICBpZiAobWln
aHRCZVJHQkEoY2hhcmFjdGVycywgbGVuZ3RoKSkgeworICAgICAgICBjb25zdCBDaGFyYWN0ZXJU
eXBlKiBjdXJyZW50ID0gY2hhcmFjdGVycyArIDU7CisgICAgICAgIGNvbnN0IENoYXJhY3RlclR5
cGUqIGVuZCA9IGNoYXJhY3RlcnMgKyBsZW5ndGg7CisgICAgICAgIGludCByZWQ7CisgICAgICAg
IGludCBncmVlbjsKKyAgICAgICAgaW50IGJsdWU7CisgICAgICAgIGludCBhbHBoYTsKKworICAg
ICAgICBpZiAoIXBhcnNlQ29sb3JJbnRPclBlcmNlbnRhZ2UoY3VycmVudCwgZW5kLCAnLCcsIGV4
cGVjdCwgcmVkKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFwYXJz
ZUNvbG9ySW50T3JQZXJjZW50YWdlKGN1cnJlbnQsIGVuZCwgJywnLCBleHBlY3QsIGdyZWVuKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFwYXJzZUNvbG9ySW50T3JQ
ZXJjZW50YWdlKGN1cnJlbnQsIGVuZCwgJywnLCBleHBlY3QsIGJsdWUpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIXBhcnNlQWxwaGFWYWx1ZShjdXJyZW50LCBlbmQs
ICcpJywgYWxwaGEpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoY3Vy
cmVudCAhPSBlbmQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJnYiA9IG1h
a2VSR0JBKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgLy8gVHJ5IHJnYigpIHN5bnRheC4KKyAgICBpZiAobWlnaHRCZVJHQihjaGFy
YWN0ZXJzLCBsZW5ndGgpKSB7CisgICAgICAgIGNvbnN0IENoYXJhY3RlclR5cGUqIGN1cnJlbnQg
PSBjaGFyYWN0ZXJzICsgNDsKKyAgICAgICAgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kID0gY2hh
cmFjdGVycyArIGxlbmd0aDsKKyAgICAgICAgaW50IHJlZDsKKyAgICAgICAgaW50IGdyZWVuOwor
ICAgICAgICBpbnQgYmx1ZTsKKyAgICAgICAgaWYgKCFwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdl
KGN1cnJlbnQsIGVuZCwgJywnLCBleHBlY3QsIHJlZCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGlmICghcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjdXJyZW50LCBlbmQs
ICcsJywgZXhwZWN0LCBncmVlbikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IGlmICghcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjdXJyZW50LCBlbmQsICcpJywgZXhwZWN0
LCBibHVlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGN1cnJlbnQg
IT0gZW5kKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZ2IgPSBtYWtlUkdC
KHJlZCwgZ3JlZW4sIGJsdWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK0NTU1ZhbHVlKiBDU1NQYXJzZXJGYXN0UGF0aHM6OnBhcnNlQ29s
b3IoY29uc3QgU3RyaW5nJiBzdHJpbmcsIENTU1BhcnNlck1vZGUgcGFyc2VyTW9kZSkKK3sKKyAg
ICBBU1NFUlQoIXN0cmluZy5pc0VtcHR5KCkpOworICAgIENTU1ZhbHVlSUQgdmFsdWVJRCA9IGNz
c1ZhbHVlS2V5d29yZElEKHN0cmluZyk7CisgICAgaWYgKFN0eWxlQ29sb3I6OmlzQ29sb3JLZXl3
b3JkKHZhbHVlSUQpKSB7CisgICAgICAgIGlmICghaXNWYWx1ZUFsbG93ZWRJbk1vZGUodmFsdWVJ
RCwgcGFyc2VyTW9kZSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKHZhbHVlSUQpOworICAgIH0K
KworICAgIFJHQkEzMiBjb2xvcjsKKyAgICBib29sIHF1aXJrc01vZGUgPSBpc1F1aXJrc01vZGVC
ZWhhdmlvcihwYXJzZXJNb2RlKTsKKworICAgIC8vIEZhc3QgcGF0aCBmb3IgaGV4IGNvbG9ycyBh
bmQgcmdiKCkvcmdiYSgpIGNvbG9ycworICAgIGJvb2wgcGFyc2VSZXN1bHQ7CisgICAgaWYgKHN0
cmluZy5pczhCaXQoKSkKKyAgICAgICAgcGFyc2VSZXN1bHQgPSBmYXN0UGFyc2VDb2xvckludGVy
bmFsKGNvbG9yLCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCBxdWlya3NN
b2RlKTsKKyAgICBlbHNlCisgICAgICAgIHBhcnNlUmVzdWx0ID0gZmFzdFBhcnNlQ29sb3JJbnRl
cm5hbChjb2xvciwgc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCksIHF1aXJr
c01vZGUpOworICAgIGlmICghcGFyc2VSZXN1bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiBDU1NDb2xvclZhbHVlOjpjcmVhdGUoY29sb3IpOworfQorCitib29sIENTU1Bh
cnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJZCwgQ1NTVmFsdWVJRCB2YWx1ZUlELCBDU1NQYXJzZXJNb2RlIHBhcnNlck1v
ZGUpCit7CisgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVJbnZhbGlkIHx8ICFpc1ZhbHVlQWxs
b3dlZEluTW9kZSh2YWx1ZUlELCBwYXJzZXJNb2RlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFsaWdubWVu
dEJhc2VsaW5lOgorICAgICAgICAvLyBhdXRvIHwgYmFzZWxpbmUgfCBiZWZvcmUtZWRnZSB8IHRl
eHQtYmVmb3JlLWVkZ2UgfCBtaWRkbGUgfAorICAgICAgICAvLyBjZW50cmFsIHwgYWZ0ZXItZWRn
ZSB8IHRleHQtYWZ0ZXItZWRnZSB8IGlkZW9ncmFwaGljIHwgYWxwaGFiZXRpYyB8CisgICAgICAg
IC8vIGhhbmdpbmcgfCBtYXRoZW1hdGljYWwKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NT
VmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBbHBoYWJldGljIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVCYXNlbGluZQorICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1pZGRs
ZSB8fCAodmFsdWVJRCA+PSBDU1NWYWx1ZUJlZm9yZUVkZ2UgJiYgdmFsdWVJRCA8PSBDU1NWYWx1
ZU1hdGhlbWF0aWNhbCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFsbDoKKyAgICAgICAgcmV0dXJu
IGZhbHNlOyAvLyBPbmx5IGFjY2VwdHMgY3NzLXdpZGUga2V5d29yZHMKKyAgICBjYXNlIENTU1By
b3BlcnR5QmFja2dyb3VuZFJlcGVhdFg6IC8vIHJlcGVhdCB8IG5vLXJlcGVhdAorICAgIGNhc2Ug
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WTogLy8gcmVwZWF0IHwgbm8tcmVwZWF0CisgICAg
ICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlUmVwZWF0IHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVOb1JlcGVhdDsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2U6IC8vIGNvbGxh
cHNlIHwgc2VwYXJhdGUKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2xsYXBz
ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2VwYXJhdGU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJv
cmRlclRvcFN0eWxlOiAvLyA8Ym9yZGVyLXN0eWxlPgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJSaWdodFN0eWxlOiAvLyBEZWZpbmVkIGFzOiBub25lIHwgaGlkZGVuIHwgZG90dGVkIHwgZGFz
aGVkIHwKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGU6IC8vIHNvbGlkIHwg
ZG91YmxlIHwgZ3Jvb3ZlIHwgcmlkZ2UgfCBpbnNldCB8IG91dHNldAorICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJMZWZ0U3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFm
dGVyU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZToKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1u
UnVsZVN0eWxlOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA+PSBDU1NWYWx1ZU5vbmUgJiYgdmFs
dWVJRCA8PSBDU1NWYWx1ZURvdWJsZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm94U2l6aW5nOgor
ICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUJvcmRlckJveCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlQ29udGVudEJveDsKKyAgICBjYXNlIENTU1Byb3BlcnR5QnVmZmVyZWRSZW5kZXJp
bmc6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlRHluYW1pYyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3RhdGljOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlDYXB0aW9uU2lkZTogLy8gdG9wIHwgYm90dG9tIHwgbGVmdCB8IHJpZ2h0Cisg
ICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTGVmdCB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlUmlnaHQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVRvcCB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
Qm90dG9tOworICAgIGNhc2UgQ1NTUHJvcGVydHlDbGVhcjogLy8gbm9uZSB8IGxlZnQgfCByaWdo
dCB8IGJvdGgKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVMZWZ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSaWdodCB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlQm90aDsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q2xpcFJ1bGU6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUZpbGxSdWxlOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1
ZU5vbnplcm8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUV2ZW5vZGQ7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3JJbnRlcnBv
bGF0aW9uRmlsdGVyczoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVTUkdCIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVMaW5lYXJSR0I7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yUmVuZGVyaW5nOgorICAgICAgICByZXR1cm4gdmFs
dWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU9wdGltaXplU3BlZWQg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU9wdGltaXplUXVhbGl0eTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5RGlyZWN0aW9uOiAvLyBsdHIgfCBydGwKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NT
VmFsdWVMdHIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJ0bDsKKyAgICBjYXNlIENTU1Byb3BlcnR5
RGlzcGxheToKKyAgICAgICAgLy8gaW5saW5lIHwgYmxvY2sgfCBsaXN0LWl0ZW0gfCBpbmxpbmUt
YmxvY2sgfCB0YWJsZSB8CisgICAgICAgIC8vIGlubGluZS10YWJsZSB8IHRhYmxlLXJvdy1ncm91
cCB8IHRhYmxlLWhlYWRlci1ncm91cCB8IHRhYmxlLWZvb3Rlci1ncm91cCB8IHRhYmxlLXJvdyB8
CisgICAgICAgIC8vIHRhYmxlLWNvbHVtbi1ncm91cCB8IHRhYmxlLWNvbHVtbiB8IHRhYmxlLWNl
bGwgfCB0YWJsZS1jYXB0aW9uIHwgLXdlYmtpdC1ib3ggfCAtd2Via2l0LWlubGluZS1ib3ggfCBu
b25lCisgICAgICAgIC8vIGZsZXggfCBpbmxpbmUtZmxleCB8IC13ZWJraXQtZmxleCB8IC13ZWJr
aXQtaW5saW5lLWZsZXggfCBncmlkIHwgaW5saW5lLWdyaWQKKyAgICAgICAgcmV0dXJuICh2YWx1
ZUlEID49IENTU1ZhbHVlSW5saW5lICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVJbmxpbmVGbGV4KSB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0RmxleCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Vi
a2l0SW5saW5lRmxleCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZQorICAgICAgICAgICAgfHwg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkgJiYgKHZhbHVl
SUQgPT0gQ1NTVmFsdWVHcmlkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVJbmxpbmVHcmlkKSk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eURvbWluYW50QmFzZWxpbmU6CisgICAgICAgIC8vIGF1dG8gfCB1
c2Utc2NyaXB0IHwgbm8tY2hhbmdlIHwgcmVzZXQtc2l6ZSB8IGlkZW9ncmFwaGljIHwKKyAgICAg
ICAgLy8gYWxwaGFiZXRpYyB8IGhhbmdpbmcgfCBtYXRoZW1hdGljYWwgfCBjZW50cmFsIHwgbWlk
ZGxlIHwKKyAgICAgICAgLy8gdGV4dC1hZnRlci1lZGdlIHwgdGV4dC1iZWZvcmUtZWRnZQorICAg
ICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUFscGhhYmV0aWMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1pZGRsZQorICAgICAgICAgICAgfHwg
KHZhbHVlSUQgPj0gQ1NTVmFsdWVVc2VTY3JpcHQgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZVJlc2V0
U2l6ZSkKKyAgICAgICAgICAgIHx8ICh2YWx1ZUlEID49IENTU1ZhbHVlQ2VudHJhbCAmJiB2YWx1
ZUlEIDw9IENTU1ZhbHVlTWF0aGVtYXRpY2FsKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5RW1wdHlD
ZWxsczogLy8gc2hvdyB8IGhpZGUKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVT
aG93IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVIaWRlOworICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9h
dDogLy8gbGVmdCB8IHJpZ2h0IHwgbm9uZQorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NW
YWx1ZUxlZnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVOb25lOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3R5bGU6IC8vIG5vcm1hbCB8IGl0YWxp
YyB8IG9ibGlxdWUKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUl0YWxpYyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlT2JsaXF1ZTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0cmV0Y2g6IC8vIG5vcm1hbCB8IHVsdHJhLWNvbmRl
bnNlZCB8IGV4dHJhLWNvbmRlbnNlZCB8IGNvbmRlbnNlZCB8IHNlbWktY29uZGVuc2VkIHwgc2Vt
aS1leHBhbmRlZCB8IGV4cGFuZGVkIHwgZXh0cmEtZXhwYW5kZWQgfCB1bHRyYS1leHBhbmRlZAor
ICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCAodmFsdWVJRCA+PSBD
U1NWYWx1ZVVsdHJhQ29uZGVuc2VkICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVVbHRyYUV4cGFuZGVk
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5SW1hZ2VSZW5kZXJpbmc6IC8vIGF1dG8gfCBvcHRpbWl6
ZUNvbnRyYXN0IHwgcGl4ZWxhdGVkCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVl
QXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0T3B0aW1pemVDb250cmFzdCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlUGl4ZWxhdGVkOworICAgIGNhc2UgQ1NTUHJvcGVydHlJc29sYXRpb246
IC8vIGF1dG8gfCBpc29sYXRlCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0
byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlSXNvbGF0ZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlz
dFN0eWxlUG9zaXRpb246IC8vIGluc2lkZSB8IG91dHNpZGUKKyAgICAgICAgcmV0dXJuIHZhbHVl
SUQgPT0gQ1NTVmFsdWVJbnNpZGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU91dHNpZGU7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGU6CisgICAgICAgIC8vIFNlZSBzZWN0aW9uIENT
U19QUk9QX0xJU1RfU1RZTEVfVFlQRSBvZiBmaWxlIENTU1ZhbHVlS2V5d29yZHMuaW4KKyAgICAg
ICAgLy8gZm9yIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBsaXN0LXN0eWxlLXR5cGVzLgorICAgICAg
ICByZXR1cm4gKHZhbHVlSUQgPj0gQ1NTVmFsdWVEaXNjICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVL
YXRha2FuYUlyb2hhKSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZTsKKyAgICBjYXNlIENTU1By
b3BlcnR5TWFza1R5cGU6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTHVtaW5h
bmNlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBbHBoYTsKKyAgICBjYXNlIENTU1Byb3BlcnR5T2Jq
ZWN0Rml0OgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUZpbGwgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUNvbnRhaW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvdmVyIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTY2FsZURvd247CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZTogLy8gKDxib3JkZXItc3R5bGU+IGV4Y2VwdCBo
aWRkZW4pIHwgYXV0bworICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgKHZhbHVlSUQgPj0gQ1NTVmFsdWVJbnNldCAmJiB2
YWx1ZUlEIDw9IENTU1ZhbHVlRG91YmxlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dB
bmNob3I6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlVmlzaWJsZSB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXV0bzsKKyAgICBjYXNl
IENTU1Byb3BlcnR5T3ZlcmZsb3dXcmFwOiAvLyBub3JtYWwgfCBicmVhay13b3JkCisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdvcmRXcmFwOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1
ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQnJlYWtXb3JkOworICAgIGNhc2UgQ1NTUHJv
cGVydHlPdmVyZmxvd1g6IC8vIHZpc2libGUgfCBoaWRkZW4gfCBzY3JvbGwgfCBhdXRvIHwgb3Zl
cmxheQorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUhpZGRlbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2Nyb2xsIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVPdmVybGF5OworICAgIGNh
c2UgQ1NTUHJvcGVydHlPdmVyZmxvd1k6IC8vIHZpc2libGUgfCBoaWRkZW4gfCBzY3JvbGwgfCBh
dXRvIHwgb3ZlcmxheSB8IC13ZWJraXQtcGFnZWQteCB8IC13ZWJraXQtcGFnZWQteQorICAgICAg
ICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUhpZGRlbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2Nyb2xsIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVPdmVybGF5IHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVXZWJraXRQYWdlZFggfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdlYmtpdFBhZ2VkWTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5QnJlYWtBZnRlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5QnJlYWtCZWZv
cmU6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlQXZvaWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkUGFnZSB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlUGFnZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTGVmdCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlUmlnaHQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJlY3RvIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVWZXJzbyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXZvaWRDb2x1bW4gfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUNvbHVtbjsKKyAgICBjYXNlIENTU1Byb3BlcnR5QnJlYWtJbnNpZGU6Cisg
ICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlQXZvaWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkUGFnZSB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlQXZvaWRDb2x1bW47CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHM6Cisg
ICAgICAgIC8vIG5vbmUgfCB2aXNpYmxlUGFpbnRlZCB8IHZpc2libGVGaWxsIHwgdmlzaWJsZVN0
cm9rZSB8IHZpc2libGUgfAorICAgICAgICAvLyBwYWludGVkIHwgZmlsbCB8IHN0cm9rZSB8IGF1
dG8gfCBhbGwgfCBib3VuZGluZy1ib3gKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFs
dWVWaXNpYmxlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVBbGwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgKHZhbHVlSUQgPj0gQ1NTVmFsdWVW
aXNpYmxlUGFpbnRlZCAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlQm91bmRpbmdCb3gpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlQb3NpdGlvbjogLy8gc3RhdGljIHwgcmVsYXRpdmUgfCBhYnNvbHV0ZSB8
IGZpeGVkIHwgc3RpY2t5CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlU3RhdGlj
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSZWxhdGl2ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQWJz
b2x1dGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUZpeGVkIHx8IChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpjc3NTdGlja3lQb3NpdGlvbkVuYWJsZWQoKSAmJiB2YWx1ZUlEID09IENTU1ZhbHVlU3Rp
Y2t5KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5UmVzaXplOiAvLyBub25lIHwgYm90aCB8IGhvcml6
b250YWwgfCB2ZXJ0aWNhbCB8IGF1dG8KKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFs
dWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCb3RoIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVI
b3Jpem9udGFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVWZXJ0aWNhbCB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlQXV0bzsKKyAgICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xsQmVoYXZpb3I6IC8vIGF1dG8g
fCBzbW9vdGgKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc29tU21v
b3RoU2Nyb2xsRW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVB
dXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTbW9vdGg7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNo
YXBlUmVuZGVyaW5nOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZU9wdGltaXplU3BlZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNy
aXNwRWRnZXMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUdlb21ldHJpY1ByZWNpc2lvbjsKKyAgICBj
YXNlIENTU1Byb3BlcnR5U3BlYWs6IC8vIG5vbmUgfCBub3JtYWwgfCBzcGVsbC1vdXQgfCBkaWdp
dHMgfCBsaXRlcmFsLXB1bmN0dWF0aW9uIHwgbm8tcHVuY3R1YXRpb24KKyAgICAgICAgcmV0dXJu
IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZVNwZWxsT3V0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEaWdpdHMg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUxpdGVyYWxQdW5jdHVhdGlvbiB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlTm9QdW5jdHVhdGlvbjsKKyAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlTGluZWpvaW46
CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTWl0ZXIgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZVJvdW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCZXZlbDsKKyAgICBjYXNlIENTU1By
b3BlcnR5U3Ryb2tlTGluZWNhcDoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVC
dXR0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSb3VuZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3F1
YXJlOworICAgIGNhc2UgQ1NTUHJvcGVydHlUYWJsZUxheW91dDogLy8gYXV0byB8IGZpeGVkCisg
ICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlRml4ZWQ7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRBbGlnbjoKKyAgICAgICAgcmV0dXJu
ICh2YWx1ZUlEID49IENTU1ZhbHVlV2Via2l0QXV0byAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlSW50
ZXJuYWxDZW50ZXIpIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlRW5kOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0QWxpZ25MYXN0OgorICAgICAgICAv
LyBhdXRvIHwgc3RhcnQgfCBlbmQgfCBsZWZ0IHwgcmlnaHQgfCBjZW50ZXIgfCBqdXN0aWZ5Cisg
ICAgICAgIHJldHVybiAodmFsdWVJRCA+PSBDU1NWYWx1ZUxlZnQgJiYgdmFsdWVJRCA8PSBDU1NW
YWx1ZUp1c3RpZnkpIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlRW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlUZXh0QW5jaG9yOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVN0YXJ0IHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVNaWRkbGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVuZDsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5VGV4dENvbWJpbmVVcHJpZ2h0OgorICAgICAgICByZXR1cm4gdmFs
dWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUFsbDsKKyAgICBjYXNl
IENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25TdHlsZToKKyAgICAgICAgLy8gc29saWQgfCBkb3Vi
bGUgfCBkb3R0ZWQgfCBkYXNoZWQgfCB3YXZ5CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpjc3MzVGV4dERlY29yYXRpb25zRW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJu
IHZhbHVlSUQgPT0gQ1NTVmFsdWVTb2xpZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRG91YmxlIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVEb3R0ZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURhc2hlZCB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlV2F2eTsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEp1c3Rp
Znk6CisgICAgICAgIC8vIGF1dG8gfCBub25lIHwgaW50ZXItd29yZCB8IGRpc3RyaWJ1dGUKKyAg
ICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzczNUZXh0RW5hYmxlZCgpKTsK
KyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVJbnRlcldvcmQgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZURpc3RyaWJ1dGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZU5vbmU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPcmllbnRhdGlvbjog
Ly8gbWl4ZWQgfCB1cHJpZ2h0IHwgc2lkZXdheXMgfCBzaWRld2F5cy1yaWdodAorICAgICAgICBy
ZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU1peGVkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVVcHJp
Z2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTaWRld2F5cyB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
U2lkZXdheXNSaWdodDsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dE9yaWVudGF0aW9u
OgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVNpZGV3YXlzIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVTaWRld2F5c1JpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVWZXJ0aWNhbFJp
Z2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVVcHJpZ2h0OworICAgIGNhc2UgQ1NTUHJvcGVydHlU
ZXh0T3ZlcmZsb3c6IC8vIGNsaXAgfCBlbGxpcHNpcworICAgICAgICByZXR1cm4gdmFsdWVJRCA9
PSBDU1NWYWx1ZUNsaXAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVsbGlwc2lzOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nOiAvLyBhdXRvIHwgb3B0aW1pemVTcGVlZCB8IG9wdGlt
aXplTGVnaWJpbGl0eSB8IGdlb21ldHJpY1ByZWNpc2lvbgorICAgICAgICByZXR1cm4gdmFsdWVJ
RCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU9wdGltaXplU3BlZWQgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZU9wdGltaXplTGVnaWJpbGl0eSB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlR2VvbWV0cmljUHJlY2lzaW9uOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VHJhbnNmb3Jt
OiAvLyBjYXBpdGFsaXplIHwgdXBwZXJjYXNlIHwgbG93ZXJjYXNlIHwgbm9uZQorICAgICAgICBy
ZXR1cm4gKHZhbHVlSUQgPj0gQ1NTVmFsdWVDYXBpdGFsaXplICYmIHZhbHVlSUQgPD0gQ1NTVmFs
dWVMb3dlcmNhc2UpIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lOworICAgIGNhc2UgQ1NTUHJv
cGVydHlVbmljb2RlQmlkaToKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3Jt
YWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVtYmVkCisgICAgICAgICAgICB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlQmlkaU92ZXJyaWRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRJc29sYXRl
CisgICAgICAgICAgICB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0SXNvbGF0ZU92ZXJyaWRl
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRQbGFpbnRleHQKKyAgICAgICAgICAgIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVJc29sYXRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVJc29sYXRlT3Zl
cnJpZGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVBsYWludGV4dDsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5VmVjdG9yRWZmZWN0OgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vblNjYWxpbmdTdHJva2U7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVZpc2liaWxpdHk6IC8vIHZpc2libGUgfCBoaWRkZW4gfCBjb2xsYXBzZQorICAgICAgICBy
ZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhp
ZGRlbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ29sbGFwc2U7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEFwcFJlZ2lvbjoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPj0gQ1NTVmFsdWVEcmFn
ICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVOb0RyYWc7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEFwcGVhcmFuY2U6CisgICAgICAgIHJldHVybiAodmFsdWVJRCA+PSBDU1NWYWx1ZUNoZWNrYm94
ICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVUZXh0YXJlYSkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5v
bmU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tmYWNlVmlzaWJpbGl0eToKKyAgICAgICAgcmV0
dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVIaWRk
ZW47CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1peEJsZW5kTW9kZToKKyAgICAgICAgcmV0dXJuIHZh
bHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU11bHRpcGx5IHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVTY3JlZW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU92ZXJsYXkK
KyAgICAgICAgICAgIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEYXJrZW4gfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUxpZ2h0ZW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbG9yRG9kZ2UgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUNvbG9yQnVybgorICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUhhcmRMaWdodCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU29mdExpZ2h0IHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVEaWZmZXJlbmNlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFeGNsdXNpb24KKyAgICAg
ICAgICAgIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVIdWUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNh
dHVyYXRpb24gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbG9yIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVMdW1pbm9zaXR5OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbjoKKyAgICAg
ICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVTdHJldGNoIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVD
ZW50ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJhc2VsaW5lOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRCb3hEZWNvcmF0aW9uQnJlYWs6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENT
U1ZhbHVlQ2xvbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNsaWNlOworICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRCb3hEaXJlY3Rpb246CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1Zh
bHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSZXZlcnNlOworICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRCb3hMaW5lczoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVT
aW5nbGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU11bHRpcGxlOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRCb3hPcmllbnQ6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlSG9y
aXpvbnRhbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVmVydGljYWwgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZUlubGluZUF4aXMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJsb2NrQXhpczsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm94UGFjazoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NT
VmFsdWVTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVDZW50ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUp1c3RpZnk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUNvbHVtbkZpbGw6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlQmFsYW5jZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25D
b250ZW50OgorICAgICAgICAvLyBGSVhNRTogUGVyIENTUyBhbGlnbm1lbnQsIHRoaXMgcHJvcGVy
dHkgc2hvdWxkIGFjY2VwdCBhbiBvcHRpb25hbCA8b3ZlcmZsb3ctcG9zaXRpb24+LiBXZSBzaG91
bGQgc2hhcmUgdGhpcyBwYXJzaW5nIGNvZGUgd2l0aCAnanVzdGlmeS1zZWxmJy4KKyAgICAgICAg
cmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVGbGV4U3RhcnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUZsZXhFbmQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNlbnRlciB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlU3BhY2VCZXR3ZWVuIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTcGFjZUFyb3VuZCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlU3RyZXRjaDsKKyAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25JdGVtczoK
KyAgICAgICAgLy8gRklYTUU6IFBlciBDU1MgYWxpZ25tZW50LCB0aGlzIHByb3BlcnR5IHNob3Vs
ZCBhY2NlcHQgdGhlIHNhbWUgYXJndW1lbnRzIGFzICdqdXN0aWZ5LXNlbGYnIHNvIHdlIHNob3Vs
ZCBzaGFyZSBpdHMgcGFyc2luZyBjb2RlLgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NW
YWx1ZUZsZXhTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRmxleEVuZCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlQ2VudGVyIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCYXNlbGluZSB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlU3RyZXRjaDsKKyAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25TZWxmOgorICAg
ICAgICAvLyBGSVhNRTogUGVyIENTUyBhbGlnbm1lbnQsIHRoaXMgcHJvcGVydHkgc2hvdWxkIGFj
Y2VwdCB0aGUgc2FtZSBhcmd1bWVudHMgYXMgJ2p1c3RpZnktc2VsZicgc28gd2Ugc2hvdWxkIHNo
YXJlIGl0cyBwYXJzaW5nIGNvZGUuCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVl
QXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRmxleFN0YXJ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVGbGV4RW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZUJhc2VsaW5lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdHJldGNoOworICAgIGNhc2UgQ1NT
UHJvcGVydHlGbGV4RGlyZWN0aW9uOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1
ZVJvdyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUm93UmV2ZXJzZSB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlQ29sdW1uIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2x1bW5SZXZlcnNlOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlGbGV4V3JhcDoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVO
b3dyYXAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdyYXAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdy
YXBSZXZlcnNlOworICAgIGNhc2UgQ1NTUHJvcGVydHlIeXBoZW5zOgorICAgICAgICByZXR1cm4g
dmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZU1hbnVhbDsKKyAgICBjYXNlIENTU1Byb3BlcnR5SnVzdGlmeUNvbnRl
bnQ6CisgICAgICAgIC8vIEZJWE1FOiBQZXIgQ1NTIGFsaWdubWVudCwgdGhpcyBwcm9wZXJ0eSBz
aG91bGQgYWNjZXB0IGFuIG9wdGlvbmFsIDxvdmVyZmxvdy1wb3NpdGlvbj4uIFdlIHNob3VsZCBz
aGFyZSB0aGlzIHBhcnNpbmcgY29kZSB3aXRoICdqdXN0aWZ5LXNlbGYnLgorICAgICAgICByZXR1
cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUZsZXhTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRmxl
eEVuZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ2VudGVyIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVT
cGFjZUJldHdlZW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNwYWNlQXJvdW5kOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlGb250S2VybmluZzoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFs
dWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZU5vbmU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmc6CisgICAgICAg
IHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9u
ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQW50aWFsaWFzZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZVN1YnBpeGVsQW50aWFsaWFzZWQ7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVh
azogLy8gYXV0byB8IGxvb3NlIHwgbm9ybWFsIHwgc3RyaWN0IHwgYWZ0ZXItd2hpdGUtc3BhY2UK
KyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVMb29zZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVTdHJpY3QgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUFmdGVyV2hpdGVTcGFjZTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZToKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5Ub3BDb2xsYXBzZToKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2xsYXBz
ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2VwYXJhdGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURp
c2NhcmQ7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFByaW50Q29sb3JBZGp1c3Q6CisgICAg
ICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlRXhhY3QgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUVjb25vbXk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nOgorICAgICAg
ICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUxvZ2ljYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZVZpc3VhbDsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uOgorICAgICAg
ICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUJlZm9yZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
QWZ0ZXI7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lOgorICAgICAgICBy
ZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhvcml6
b250YWw7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uOgor
ICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU92ZXIgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZVVuZGVyOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHk6IC8vIGRp
c2MgfCBjaXJjbGUgfCBzcXVhcmUgfCBub25lCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENT
U1ZhbHVlRGlzYyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ2lyY2xlIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVTcXVhcmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmU7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRyYW5zZm9ybVN0eWxlOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUZs
YXQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVByZXNlcnZlM2Q7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFVzZXJEcmFnOiAvLyBhdXRvIHwgbm9uZSB8IGVsZW1lbnQKKyAgICAgICAgcmV0dXJu
IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVFbGVtZW50OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2Vy
TW9kaWZ5OiAvLyByZWFkLW9ubHkgfCByZWFkLXdyaXRlCisgICAgICAgIHJldHVybiB2YWx1ZUlE
ID09IENTU1ZhbHVlUmVhZE9ubHkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJlYWRXcml0ZSB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlUmVhZFdyaXRlUGxhaW50ZXh0T25seTsKKyAgICBjYXNlIENTU1By
b3BlcnR5VXNlclNlbGVjdDogLy8gYXV0byB8IG5vbmUgfCB0ZXh0IHwgYWxsCisgICAgICAgIHJl
dHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlVGV4dCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQWxsOworICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9kZToKKyAgICAgICAgcmV0dXJuIHZhbHVl
SUQgPj0gQ1NTVmFsdWVIb3Jpem9udGFsVGIgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZVZlcnRpY2Fs
THI7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdyaXRpbmdNb2RlOgorICAgICAgICByZXR1cm4gdmFs
dWVJRCA9PSBDU1NWYWx1ZUhvcml6b250YWxUYgorICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZVZlcnRpY2FsUmwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVZlcnRpY2FsTHIKKyAgICAg
ICAgICAgIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVMclRiIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVS
bFRiIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVUYlJsCisgICAgICAgICAgICB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlTHIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJsIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVUYjsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2hpdGVTcGFjZTogLy8gbm9ybWFsIHwgcHJlIHwg
bm93cmFwCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVQcmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVByZVdyYXAgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZVByZUxpbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vd3JhcDsKKyAgICBj
YXNlIENTU1Byb3BlcnR5V29yZEJyZWFrOiAvLyBub3JtYWwgfCBicmVhay1hbGwgfCBrZWVwLWFs
bCB8IGJyZWFrLXdvcmQgKHRoaXMgaXMgYSBjdXN0b20gZXh0ZW5zaW9uKQorICAgICAgICByZXR1
cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQnJlYWtB
bGwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUtlZXBBbGwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJy
ZWFrV29yZDsKKyAgICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xsU25hcFR5cGU6IC8vIG5vbmUgfCBt
YW5kYXRvcnkgfCBwcm94aW1pdHkKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OmNzc1Njcm9sbFNuYXBQb2ludHNFbmFibGVkKCkpOworICAgICAgICByZXR1cm4gdmFsdWVJ
RCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1hbmRhdG9yeSB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlUHJveGltaXR5OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitib29sIENT
U1BhcnNlckZhc3RQYXRoczo6aXNLZXl3b3JkUHJvcGVydHlJRChDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5SWQpCit7CisgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUFsaWdubWVudEJhc2VsaW5lOgorICAgIGNhc2UgQ1NTUHJvcGVydHlBbGw6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eU1peEJsZW5kTW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5SXNvbGF0aW9uOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5QmFja2dyb3VuZFJlcGVhdFk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0
eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZToKKyAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyTGVmdFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0
eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZToKKyAgICBjYXNlIENTU1By
b3BlcnR5Qm94U2l6aW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCdWZmZXJlZFJlbmRlcmluZzoK
KyAgICBjYXNlIENTU1Byb3BlcnR5Q2FwdGlvblNpZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNs
ZWFyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDbGlwUnVsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5
Q29sb3JJbnRlcnBvbGF0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvckludGVycG9sYXRp
b25GaWx0ZXJzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvclJlbmRlcmluZzoKKyAgICBjYXNl
IENTU1Byb3BlcnR5RGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlEaXNwbGF5OgorICAg
IGNhc2UgQ1NTUHJvcGVydHlEb21pbmFudEJhc2VsaW5lOgorICAgIGNhc2UgQ1NTUHJvcGVydHlF
bXB0eUNlbGxzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlGaWxsUnVsZToKKyAgICBjYXNlIENTU1By
b3BlcnR5RmxvYXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHlsZToKKyAgICBjYXNlIENT
U1Byb3BlcnR5Rm9udFN0cmV0Y2g6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUh5cGhlbnM6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUltYWdlUmVuZGVyaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0
U3R5bGVQb3NpdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5TWFza1R5cGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9iamVjdEZpdDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlP
dmVyZmxvd0FuY2hvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dXcmFwOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlPdmVyZmxvd1g6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93WToK
KyAgICBjYXNlIENTU1Byb3BlcnR5QnJlYWtBZnRlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5QnJl
YWtCZWZvcmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJyZWFrSW5zaWRlOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlQb2ludGVyRXZlbnRzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQb3NpdGlvbjoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5UmVzaXplOgorICAgIGNhc2UgQ1NTUHJvcGVydHlTY3JvbGxCZWhh
dmlvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5U2hhcGVSZW5kZXJpbmc6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVNwZWFrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2VMaW5lY2FwOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlTdHJva2VMaW5lam9pbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGFibGVM
YXlvdXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRBbGlnbjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5VGV4dEFsaWduTGFzdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEFuY2hvcjoKKyAgICBj
YXNlIENTU1Byb3BlcnR5VGV4dENvbWJpbmVVcHJpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlU
ZXh0RGVjb3JhdGlvblN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0SnVzdGlmeToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5VGV4dE9yaWVudGF0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRUZXh0T3JpZW50YXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVyZmxvdzoK
KyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5
VGV4dFRyYW5zZm9ybToKKyAgICBjYXNlIENTU1Byb3BlcnR5VW5pY29kZUJpZGk6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVZlY3RvckVmZmVjdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VmlzaWJpbGl0
eToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXBwUmVnaW9uOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRBcHBlYXJhbmNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZmFjZVZpc2li
aWxpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGU6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyU3RhcnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ246CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveERlY29yYXRpb25CcmVhazoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hM
aW5lczoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94T3JpZW50OgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRCb3hQYWNrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDb2x1bW5GaWxsOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlDb2x1bW5SdWxlU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUZsZXhEaXJlY3Rpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsZXhXcmFwOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlGb250S2VybmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFNt
b290aGluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWFyZ2luQm90dG9tQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblRv
cENvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQcmludENvbG9yQWRqdXN0Ogor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0UnVieVBvc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29t
YmluZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb246Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0eToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5VHJhbnNmb3JtU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5OgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlVc2VyU2VsZWN0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9kZToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2hpdGVTcGFjZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V29yZEJy
ZWFrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkV3JhcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
V3JpdGluZ01vZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNjcm9sbFNuYXBUeXBlOgorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5SnVzdGlmeUNvbnRlbnQ6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUFsaWduQ29udGVudDoKKyAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25J
dGVtczoKKyAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25TZWxmOgorICAgICAgICByZXR1cm4gIVJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCk7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworc3RhdGljIENTU1ZhbHVlKiBw
YXJzZUtleXdvcmRWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBDU1NQYXJzZXJNb2RlIHBhcnNlck1vZGUpCit7CisgICAgQVNTRVJUKCFzdHJpbmcu
aXNFbXB0eSgpKTsKKworICAgIGlmICghQ1NTUGFyc2VyRmFzdFBhdGhzOjppc0tleXdvcmRQcm9w
ZXJ0eUlEKHByb3BlcnR5SWQpKSB7CisgICAgICAgIC8vIEFsbCBwcm9wZXJ0aWVzIGFjY2VwdCB0
aGUgdmFsdWVzIG9mICJpbml0aWFsIiBhbmQgImluaGVyaXQiLgorICAgICAgICBpZiAoIWVxdWFs
SWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAiaW5pdGlhbCIpICYmICFlcXVhbElnbm9yaW5nQVND
SUlDYXNlKHN0cmluZywgImluaGVyaXQiKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgICAgIC8vIFBhcnNlIGluaXRpYWwvaW5oZXJpdCBzaG9ydGhhbmRzIHVzaW5nIHRoZSBD
U1NQcm9wZXJ0eVBhcnNlci4KKyAgICAgICAgaWYgKHNob3J0aGFuZEZvclByb3BlcnR5KHByb3Bl
cnR5SWQpLmxlbmd0aCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAg
Ly8gRGVzY3JpcHRvcnMgZG8gbm90IHN1cHBvcnQgY3NzIHdpZGUga2V5d29yZHMuCisgICAgICAg
IGlmIChDU1NQcm9wZXJ0eU1ldGFkYXRhOjppc0Rlc2NyaXB0b3JPbmx5KHByb3BlcnR5SWQpKQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgQ1NTVmFsdWVJRCB2YWx1
ZUlEID0gY3NzVmFsdWVLZXl3b3JkSUQoc3RyaW5nKTsKKworICAgIGlmICghdmFsdWVJRCkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUluaGVy
aXQpCisgICAgICAgIHJldHVybiBDU1NJbmhlcml0ZWRWYWx1ZTo6Y3JlYXRlKCk7CisgICAgaWYg
KHZhbHVlSUQgPT0gQ1NTVmFsdWVJbml0aWFsKQorICAgICAgICByZXR1cm4gQ1NTSW5pdGlhbFZh
bHVlOjpjcmVhdGUoKTsKKyAgICBpZiAoQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5d29y
ZFByb3BlcnR5QW5kVmFsdWUocHJvcGVydHlJZCwgdmFsdWVJRCwgcGFyc2VyTW9kZSkpCisgICAg
ICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcih2YWx1ZUlEKTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgor
c3RhdGljIGJvb2wgcGFyc2VUcmFuc2Zvcm1UcmFuc2xhdGVBcmd1bWVudHMoQ2hhclR5cGUqJiBw
b3MsIENoYXJUeXBlKiBlbmQsIHVuc2lnbmVkIGV4cGVjdGVkQ291bnQsIENTU0Z1bmN0aW9uVmFs
dWUqIHRyYW5zZm9ybVZhbHVlKQoreworICAgIHdoaWxlIChleHBlY3RlZENvdW50KSB7CisgICAg
ICAgIHNpemVfdCBkZWxpbWl0ZXIgPSBXVEY6OmZpbmQocG9zLCBlbmQgLSBwb3MsIGV4cGVjdGVk
Q291bnQgPT0gMSA/ICcpJyA6ICcsJyk7CisgICAgICAgIGlmIChkZWxpbWl0ZXIgPT0ga05vdEZv
dW5kKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB1bnNpZ25lZCBhcmd1bWVu
dExlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZWxpbWl0ZXIpOworICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGVzOjpOdW1iZXI7CisgICAgICAgIGRvdWJsZSBudW1iZXI7CisgICAgICAgIGlmICghcGFyc2VT
aW1wbGVMZW5ndGgocG9zLCBhcmd1bWVudExlbmd0aCwgdW5pdCwgbnVtYmVyKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHVuaXQgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlczo6UGl4ZWxzICYmIChudW1iZXIgfHwgdW5pdCAhPSBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzOjpOdW1iZXIpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKCpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG51bWJl
ciwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6UGl4ZWxzKSk7CisgICAgICAgIHBvcyAr
PSBhcmd1bWVudExlbmd0aCArIDE7CisgICAgICAgIC0tZXhwZWN0ZWRDb3VudDsKKyAgICB9Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KK3N0YXRp
YyBib29sIHBhcnNlVHJhbnNmb3JtTnVtYmVyQXJndW1lbnRzKENoYXJUeXBlKiYgcG9zLCBDaGFy
VHlwZSogZW5kLCB1bnNpZ25lZCBleHBlY3RlZENvdW50LCBDU1NGdW5jdGlvblZhbHVlKiB0cmFu
c2Zvcm1WYWx1ZSkKK3sKKyAgICB3aGlsZSAoZXhwZWN0ZWRDb3VudCkgeworICAgICAgICBzaXpl
X3QgZGVsaW1pdGVyID0gV1RGOjpmaW5kKHBvcywgZW5kIC0gcG9zLCBleHBlY3RlZENvdW50ID09
IDEgPyAnKScgOiAnLCcpOworICAgICAgICBpZiAoZGVsaW1pdGVyID09IGtOb3RGb3VuZCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgdW5zaWduZWQgYXJndW1lbnRMZW5ndGgg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVsaW1pdGVyKTsKKyAgICAgICAgYm9vbCBvazsKKyAg
ICAgICAgZG91YmxlIG51bWJlciA9IGNoYXJhY3RlcnNUb0RvdWJsZShwb3MsIGFyZ3VtZW50TGVu
Z3RoLCAmb2spOworICAgICAgICBpZiAoIW9rKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKCpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KG51bWJlciwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6TnVtYmVyKSk7CisgICAgICAg
IHBvcyArPSBhcmd1bWVudExlbmd0aCArIDE7CisgICAgICAgIC0tZXhwZWN0ZWRDb3VudDsKKyAg
ICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBjb25zdCBpbnQga1Nob3J0ZXN0VmFs
aWRUcmFuc2Zvcm1TdHJpbmdMZW5ndGggPSAxMjsKKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJU
eXBlPgorc3RhdGljIENTU0Z1bmN0aW9uVmFsdWUqIHBhcnNlU2ltcGxlVHJhbnNmb3JtVmFsdWUo
Q2hhclR5cGUqJiBwb3MsIENoYXJUeXBlKiBlbmQpCit7CisgICAgaWYgKGVuZCAtIHBvcyA8IGtT
aG9ydGVzdFZhbGlkVHJhbnNmb3JtU3RyaW5nTGVuZ3RoKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIGNvbnN0IGJvb2wgaXNUcmFuc2xhdGUgPSB0b0FTQ0lJTG93ZXIocG9zWzBdKSA9
PSAndCcKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1sxXSkgPT0gJ3InCisgICAgICAgICYm
IHRvQVNDSUlMb3dlcihwb3NbMl0pID09ICdhJworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9z
WzNdKSA9PSAnbicKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1s0XSkgPT0gJ3MnCisgICAg
ICAgICYmIHRvQVNDSUlMb3dlcihwb3NbNV0pID09ICdsJworICAgICAgICAmJiB0b0FTQ0lJTG93
ZXIocG9zWzZdKSA9PSAnYScKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1s3XSkgPT0gJ3Qn
CisgICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3NbOF0pID09ICdlJzsKKworICAgIGlmIChpc1Ry
YW5zbGF0ZSkgeworICAgICAgICBDU1NWYWx1ZUlEIHRyYW5zZm9ybVR5cGU7CisgICAgICAgIHVu
c2lnbmVkIGV4cGVjdGVkQXJndW1lbnRDb3VudCA9IDE7CisgICAgICAgIHVuc2lnbmVkIGFyZ3Vt
ZW50U3RhcnQgPSAxMTsKKyAgICAgICAgQ2hhclR5cGUgYzkgPSB0b0FTQ0lJTG93ZXIocG9zWzld
KTsKKyAgICAgICAgaWYgKGM5ID09ICd4JyAmJiBwb3NbMTBdID09ICcoJykgeworICAgICAgICAg
ICAgdHJhbnNmb3JtVHlwZSA9IENTU1ZhbHVlVHJhbnNsYXRlWDsKKyAgICAgICAgfSBlbHNlIGlm
IChjOSA9PSAneScgJiYgcG9zWzEwXSA9PSAnKCcpIHsKKyAgICAgICAgICAgIHRyYW5zZm9ybVR5
cGUgPSBDU1NWYWx1ZVRyYW5zbGF0ZVk7CisgICAgICAgIH0gZWxzZSBpZiAoYzkgPT0gJ3onICYm
IHBvc1sxMF0gPT0gJygnKSB7CisgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlID0gQ1NTVmFsdWVU
cmFuc2xhdGVaOworICAgICAgICB9IGVsc2UgaWYgKGM5ID09ICcoJykgeworICAgICAgICAgICAg
dHJhbnNmb3JtVHlwZSA9IENTU1ZhbHVlVHJhbnNsYXRlOworICAgICAgICAgICAgZXhwZWN0ZWRB
cmd1bWVudENvdW50ID0gMjsKKyAgICAgICAgICAgIGFyZ3VtZW50U3RhcnQgPSAxMDsKKyAgICAg
ICAgfSBlbHNlIGlmIChjOSA9PSAnMycgJiYgdG9BU0NJSUxvd2VyKHBvc1sxMF0pID09ICdkJyAm
JiBwb3NbMTFdID09ICcoJykgeworICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSA9IENTU1ZhbHVl
VHJhbnNsYXRlM2Q7CisgICAgICAgICAgICBleHBlY3RlZEFyZ3VtZW50Q291bnQgPSAzOworICAg
ICAgICAgICAgYXJndW1lbnRTdGFydCA9IDEyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgcG9zICs9IGFyZ3VtZW50U3Rh
cnQ7CisgICAgICAgIENTU0Z1bmN0aW9uVmFsdWUqIHRyYW5zZm9ybVZhbHVlID0gQ1NTRnVuY3Rp
b25WYWx1ZTo6Y3JlYXRlKHRyYW5zZm9ybVR5cGUpOworICAgICAgICBpZiAoIXBhcnNlVHJhbnNm
b3JtVHJhbnNsYXRlQXJndW1lbnRzKHBvcywgZW5kLCBleHBlY3RlZEFyZ3VtZW50Q291bnQsIHRy
YW5zZm9ybVZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1
cm4gdHJhbnNmb3JtVmFsdWU7CisgICAgfQorCisgICAgY29uc3QgYm9vbCBpc01hdHJpeDNkID0g
dG9BU0NJSUxvd2VyKHBvc1swXSkgPT0gJ20nCisgICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3Nb
MV0pID09ICdhJworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzJdKSA9PSAndCcKKyAgICAg
ICAgJiYgdG9BU0NJSUxvd2VyKHBvc1szXSkgPT0gJ3InCisgICAgICAgICYmIHRvQVNDSUlMb3dl
cihwb3NbNF0pID09ICdpJworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzVdKSA9PSAneCcK
KyAgICAgICAgJiYgcG9zWzZdID09ICczJworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzdd
KSA9PSAnZCcKKyAgICAgICAgJiYgcG9zWzhdID09ICcoJzsKKworICAgIGlmIChpc01hdHJpeDNk
KSB7CisgICAgICAgIHBvcyArPSA5OworICAgICAgICBDU1NGdW5jdGlvblZhbHVlKiB0cmFuc2Zv
cm1WYWx1ZSA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShDU1NWYWx1ZU1hdHJpeDNkKTsKKyAg
ICAgICAgaWYgKCFwYXJzZVRyYW5zZm9ybU51bWJlckFyZ3VtZW50cyhwb3MsIGVuZCwgMTYsIHRy
YW5zZm9ybVZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1
cm4gdHJhbnNmb3JtVmFsdWU7CisgICAgfQorCisgICAgY29uc3QgYm9vbCBpc1NjYWxlM2QgPSB0
b0FTQ0lJTG93ZXIocG9zWzBdKSA9PSAncycKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1sx
XSkgPT0gJ2MnCisgICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3NbMl0pID09ICdhJworICAgICAg
ICAmJiB0b0FTQ0lJTG93ZXIocG9zWzNdKSA9PSAnbCcKKyAgICAgICAgJiYgdG9BU0NJSUxvd2Vy
KHBvc1s0XSkgPT0gJ2UnCisgICAgICAgICYmIHBvc1s1XSA9PSAnMycKKyAgICAgICAgJiYgdG9B
U0NJSUxvd2VyKHBvc1s2XSkgPT0gJ2QnCisgICAgICAgICYmIHBvc1s3XSA9PSAnKCc7CisKKyAg
ICBpZiAoaXNTY2FsZTNkKSB7CisgICAgICAgIHBvcyArPSA4OworICAgICAgICBDU1NGdW5jdGlv
blZhbHVlKiB0cmFuc2Zvcm1WYWx1ZSA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShDU1NWYWx1
ZVNjYWxlM2QpOworICAgICAgICBpZiAoIXBhcnNlVHJhbnNmb3JtTnVtYmVyQXJndW1lbnRzKHBv
cywgZW5kLCAzLCB0cmFuc2Zvcm1WYWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgcmV0dXJuIHRyYW5zZm9ybVZhbHVlOworICAgIH0KKworICAgIHJldHVybiBudWxs
cHRyOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CitzdGF0aWMgYm9vbCB0cmFu
c2Zvcm1DYW5MaWtlbHlVc2VGYXN0UGF0aChjb25zdCBDaGFyVHlwZSogY2hhcnMsIHVuc2lnbmVk
IGxlbmd0aCkKK3sKKyAgICAvLyBWZXJ5IGZhc3Qgc2NhbiB0aGF0IGF0dGVtcHRzIHRvIHJlamVj
dCBtb3N0IHRyYW5zZm9ybXMgdGhhdCBjb3VsZG4ndAorICAgIC8vIHRha2UgdGhlIGZhc3QgcGF0
aC4gVGhpcyBhdm9pZHMgZG9pbmcgdGhlIG1hbGxvYyBhbmQgc3RyaW5nLT5kb3VibGUKKyAgICAv
LyBjb252ZXJzaW9ucyBpbiBwYXJzZVNpbXBsZVRyYW5zZm9ybVZhbHVlIG9ubHkgdG8gZGlzY2Fy
ZCB0aGVtIHdoZW4gd2UKKyAgICAvLyBydW4gaW50byBhIHRyYW5zZm9ybSBjb21wb25lbnQgd2Ug
ZG9uJ3QgdW5kZXJzdGFuZC4KKyAgICB1bnNpZ25lZCBpID0gMDsKKyAgICB3aGlsZSAoaSA8IGxl
bmd0aCkgeworICAgICAgICBpZiAoaXNDU1NTcGFjZShjaGFyc1tpXSkpIHsKKyAgICAgICAgICAg
ICsraTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChsZW5n
dGggLSBpIDwga1Nob3J0ZXN0VmFsaWRUcmFuc2Zvcm1TdHJpbmdMZW5ndGgpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGNoYXJzW2ldKSkg
eworICAgICAgICBjYXNlICd0JzoKKyAgICAgICAgICAgIC8vIHRyYW5zbGF0ZSwgdHJhbnNsYXRl
WCwgdHJhbnNsYXRlWSwgdHJhbnNsYXRlWiwgdHJhbnNsYXRlM2QuCisgICAgICAgICAgICBpZiAo
dG9BU0NJSUxvd2VyKGNoYXJzW2kgKyA4XSkgIT0gJ2UnKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIGkgKz0gOTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlICdtJzoKKyAgICAgICAgICAgIC8vIG1hdHJpeDNkLgorICAgICAgICAgICAgaWYgKHRv
QVNDSUlMb3dlcihjaGFyc1tpICsgN10pICE9ICdkJykKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICBpICs9IDg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSAncyc6CisgICAgICAgICAgICAvLyBzY2FsZTNkLgorICAgICAgICAgICAgaWYgKHRvQVND
SUlMb3dlcihjaGFyc1tpICsgNl0pICE9ICdkJykKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICBpICs9IDc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIC8vIEFsbCBvdGhlciB0aGluZ3MsIGV4LiByb3RhdGUuCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgc2l6ZV90IGFyZ3VtZW50
c0VuZCA9IFdURjo6ZmluZChjaGFycywgbGVuZ3RoLCAnKScsIGkpOworICAgICAgICBpZiAoYXJn
dW1lbnRzRW5kID09IGtOb3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgLy8gQWR2YW5jZSB0byB0aGUgZW5kIG9mIHRoZSBhcmd1bWVudHMuCisgICAgICAgIGkgPSBh
cmd1bWVudHNFbmQgKyAxOworICAgIH0KKyAgICByZXR1cm4gaSA9PSBsZW5ndGg7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KK3N0YXRpYyBDU1NWYWx1ZUxpc3QqIHBhcnNlU2lt
cGxlVHJhbnNmb3JtTGlzdChjb25zdCBDaGFyVHlwZSogY2hhcnMsIHVuc2lnbmVkIGxlbmd0aCkK
K3sKKyAgICBpZiAoIXRyYW5zZm9ybUNhbkxpa2VseVVzZUZhc3RQYXRoKGNoYXJzLCBsZW5ndGgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBjb25zdCBDaGFyVHlwZSomIHBvcyA9IGNo
YXJzOworICAgIGNvbnN0IENoYXJUeXBlKiBlbmQgPSBjaGFycyArIGxlbmd0aDsKKyAgICBDU1NW
YWx1ZUxpc3QqIHRyYW5zZm9ybUxpc3QgPSBudWxscHRyOworICAgIHdoaWxlIChwb3MgPCBlbmQp
IHsKKyAgICAgICAgd2hpbGUgKHBvcyA8IGVuZCAmJiBpc0NTU1NwYWNlKCpwb3MpKQorICAgICAg
ICAgICAgKytwb3M7CisgICAgICAgIGlmIChwb3MgPj0gZW5kKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIENTU0Z1bmN0aW9uVmFsdWUqIHRyYW5zZm9ybVZhbHVlID0gcGFyc2VTaW1wbGVU
cmFuc2Zvcm1WYWx1ZShwb3MsIGVuZCk7CisgICAgICAgIGlmICghdHJhbnNmb3JtVmFsdWUpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKCF0cmFuc2Zvcm1MaXN0KQor
ICAgICAgICAgICAgdHJhbnNmb3JtTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKKyAgICAgICAgdHJhbnNmb3JtTGlzdC0+YXBwZW5kKCp0cmFuc2Zvcm1WYWx1ZSk7
CisgICAgfQorICAgIHJldHVybiB0cmFuc2Zvcm1MaXN0OworfQorCitzdGF0aWMgQ1NTVmFsdWUq
IHBhcnNlU2ltcGxlVHJhbnNmb3JtKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCit7CisgICAgQVNTRVJUKCFzdHJpbmcuaXNFbXB0eSgpKTsKKworICAgIGlm
IChwcm9wZXJ0eUlEICE9IENTU1Byb3BlcnR5VHJhbnNmb3JtKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gcGFyc2VTaW1w
bGVUcmFuc2Zvcm1MaXN0KHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwor
ICAgIHJldHVybiBwYXJzZVNpbXBsZVRyYW5zZm9ybUxpc3Qoc3RyaW5nLmNoYXJhY3RlcnMxNigp
LCBzdHJpbmcubGVuZ3RoKCkpOworfQorCitDU1NWYWx1ZSogQ1NTUGFyc2VyRmFzdFBhdGhzOjpt
YXliZVBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHN0
cmluZywgQ1NTUGFyc2VyTW9kZSBwYXJzZXJNb2RlKQoreworICAgIGlmIChDU1NWYWx1ZSogbGVu
Z3RoID0gcGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShwcm9wZXJ0eUlELCBzdHJpbmcsIHBhcnNlck1v
ZGUpKQorICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgIGlmIChpc0NvbG9yUHJvcGVydHlJRChw
cm9wZXJ0eUlEKSkKKyAgICAgICAgcmV0dXJuIHBhcnNlQ29sb3Ioc3RyaW5nLCBwYXJzZXJNb2Rl
KTsKKyAgICBpZiAoQ1NTVmFsdWUqIGtleXdvcmQgPSBwYXJzZUtleXdvcmRWYWx1ZShwcm9wZXJ0
eUlELCBzdHJpbmcsIHBhcnNlck1vZGUpKQorICAgICAgICByZXR1cm4ga2V5d29yZDsKKyAgICBp
ZiAoQ1NTVmFsdWUqIHRyYW5zZm9ybSA9IHBhcnNlU2ltcGxlVHJhbnNmb3JtKHByb3BlcnR5SUQs
IHN0cmluZykpCisgICAgICAgIHJldHVybiB0cmFuc2Zvcm07CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKKyAgICAgKi8KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisv
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisjaWZuZGVmIENTU1BhcnNlckZhc3RQYXRoc19oCisjZGVmaW5lIENT
U1BhcnNlckZhc3RQYXRoc19oCisKKyNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCisjaW5jbHVk
ZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBDU1NWYWx1ZTsKKworY2xhc3MgQ1NTUGFyc2VyRmFzdFBhdGhzIHsKK3B1YmxpYzoKKyAg
ICAvLyBQYXJzZXMgc2ltcGxlIHZhbHVlcyBsaWtlICcxMHB4JyBvciAnZ3JlZW4nLCBidXQgbWFr
ZXMgbm8gZ3VhcmFudGVlcworICAgIC8vIGFib3V0IGhhbmRsaW5nIGFueSBwcm9wZXJ0eSBjb21w
bGV0ZWx5LgorICAgIHN0YXRpYyBDU1NWYWx1ZSogbWF5YmVQYXJzZVZhbHVlKENTU1Byb3BlcnR5
SUQsIGNvbnN0IFN0cmluZyYsIENTU1BhcnNlck1vZGUpOworCisgICAgLy8gUHJvcGVydGllcyBo
YW5kbGVkIGhlcmUgc2hvdWxkbid0IGJlIGV4cGxpY2l0bHkgaGFuZGxlZCBpbiBDU1NQcm9wZXJ0
eVBhcnNlcgorICAgIHN0YXRpYyBib29sIGlzS2V5d29yZFByb3BlcnR5SUQoQ1NTUHJvcGVydHlJ
RCk7CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKENTU1By
b3BlcnR5SUQsIENTU1ZhbHVlSUQsIENTU1BhcnNlck1vZGUpOworCisgICAgc3RhdGljIENTU1Zh
bHVlKiBwYXJzZUNvbG9yKGNvbnN0IFN0cmluZyYsIENTU1BhcnNlck1vZGUpOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ1NTUGFyc2VyRmFzdFBhdGhzX2gKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENTU1BhcnNlcklkaW9tc19oCisj
ZGVmaW5lIENTU1BhcnNlcklkaW9tc19oCisKKyNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFNwYWNlIGNoYXJhY3RlcnMgYXMgZGVmaW5lZCBi
eSB0aGUgQ1NTIHNwZWNpZmljYXRpb24uCisvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXN5
bnRheC8jd2hpdGVzcGFjZQoraW5saW5lIGJvb2wgaXNDU1NTcGFjZShVQ2hhciBjKQoreworICAg
IHJldHVybiBjID09ICcgJyB8fCBjID09ICdcdCcgfHwgYyA9PSAnXG4nOworfQorCisvLyBodHRw
Oi8vZGV2LnczLm9yZy9jc3N3Zy9jc3Mtc3ludGF4LyNuYW1lLXN0YXJ0LWNvZGUtcG9pbnQKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorYm9vbCBpc05hbWVTdGFydENvZGVQb2lu
dChDaGFyYWN0ZXJUeXBlIGMpCit7CisgICAgcmV0dXJuIGlzQVNDSUlBbHBoYShjKSB8fCBjID09
ICdfJyB8fCAhaXNBU0NJSShjKTsKK30KKworLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nz
LXN5bnRheC8jbmFtZS1jb2RlLXBvaW50Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4KK2Jvb2wgaXNOYW1lQ29kZVBvaW50KENoYXJhY3RlclR5cGUgYykKK3sKKyAgICByZXR1cm4g
aXNOYW1lU3RhcnRDb2RlUG9pbnQoYykgfHwgaXNBU0NJSURpZ2l0KGMpIHx8IGMgPT0gJy0nOwor
fQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXJPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VyT2JzZXJ2ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlck9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwMyBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRl
bCA8ZXJpY0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5IC0gMjAxMCAgVG9yY2gg
TW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIENT
U1BhcnNlck9ic2VydmVyX2gKKyNkZWZpbmUgQ1NTUGFyc2VyT2JzZXJ2ZXJfaAorCisjaW5jbHVk
ZSAiQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmgiCisjaW5jbHVkZSAiU3R5bGVSdWxlLmgiCisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1Bh
cnNlclRva2VuOworY2xhc3MgQ1NTUGFyc2VyVG9rZW5SYW5nZTsKKworLy8gVGhpcyBpcyBvbmx5
IGZvciB0aGUgaW5zcGVjdG9yIGFuZCBzaG91bGRuJ3QgYmUgdXNlZCBlbHNld2hlcmUuCitjbGFz
cyBDU1NQYXJzZXJPYnNlcnZlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q1NTUGFyc2VyT2Jz
ZXJ2ZXIoKSB7IH07CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0UnVsZUhlYWRlcihTdHlsZVJ1bGU6
OlR5cGUsIHVuc2lnbmVkIG9mZnNldCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRSdWxlSGVh
ZGVyKHVuc2lnbmVkIG9mZnNldCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvYnNlcnZlU2VsZWN0
b3IodW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzdGFydFJ1bGVCb2R5KHVuc2lnbmVkIG9mZnNldCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBlbmRSdWxlQm9keSh1bnNpZ25lZCBvZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgb2JzZXJ2ZVByb3BlcnR5KHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQsIGJvb2wgaXNJbXBvcnRhbnQsIGJvb2wgaXNQYXJzZWQpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgb2JzZXJ2ZUNvbW1lbnQodW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCkgPSAwOworICAgIC8vIEZJWE1FOiBVbnVzZWQsIHNob3VsZCBiZSByZW1vdmVkCisgICAgdmly
dHVhbCB2b2lkIHN0YXJ0TWVkaWFRdWVyeUV4cCh1bnNpZ25lZCBvZmZzZXQpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZW5kTWVkaWFRdWVyeUV4cCh1bnNpZ25lZCBvZmZzZXQpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc3RhcnRNZWRpYVF1ZXJ5KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRN
ZWRpYVF1ZXJ5KCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gQ1NTUGFyc2VyT2JzZXJ2ZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmNwcAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlck9ic2VydmVyV3JhcHBlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MSBAQAorLy8gQ29weXJpZ2h0IDIwMTUgVGhlIENo
cm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisv
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8g
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJD
U1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaCIKKworI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuUmFu
Z2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1bnNpZ25lZCBDU1NQYXJzZXJPYnNlcnZl
cldyYXBwZXI6OnN0YXJ0T2Zmc2V0KGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQor
eworICAgIHJldHVybiBtX3Rva2VuT2Zmc2V0c1tyYW5nZS5iZWdpbigpIC0gbV9maXJzdFBhcnNl
clRva2VuXTsKK30KKwordW5zaWduZWQgQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyOjpwcmV2aW91
c1Rva2VuU3RhcnRPZmZzZXQoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7Cisg
ICAgaWYgKHJhbmdlLmJlZ2luKCkgPT0gbV9maXJzdFBhcnNlclRva2VuKQorICAgICAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gbV90b2tlbk9mZnNldHNbcmFuZ2UuYmVnaW4oKSAtIG1fZmlyc3RQ
YXJzZXJUb2tlbiAtIDFdOworfQorCit1bnNpZ25lZCBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6
OmVuZE9mZnNldChjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1
cm4gbV90b2tlbk9mZnNldHNbcmFuZ2UuZW5kKCkgLSBtX2ZpcnN0UGFyc2VyVG9rZW5dOworfQor
Cit2b2lkIENTU1BhcnNlck9ic2VydmVyV3JhcHBlcjo6c2tpcENvbW1lbnRzQmVmb3JlKGNvbnN0
IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBib29sIGxlYXZlRGlyZWN0bHlCZWZvcmUpCit7
CisgICAgdW5zaWduZWQgc3RhcnRJbmRleCA9IHJhbmdlLmJlZ2luKCkgLSBtX2ZpcnN0UGFyc2Vy
VG9rZW47CisgICAgaWYgKCFsZWF2ZURpcmVjdGx5QmVmb3JlKQorICAgICAgICBzdGFydEluZGV4
Kys7CisgICAgd2hpbGUgKG1fY29tbWVudEl0ZXJhdG9yIDwgbV9jb21tZW50T2Zmc2V0cy5lbmQo
KSAmJiBtX2NvbW1lbnRJdGVyYXRvci0+dG9rZW5zQmVmb3JlIDwgc3RhcnRJbmRleCkKKyAgICAg
ICAgbV9jb21tZW50SXRlcmF0b3IrKzsKK30KKwordm9pZCBDU1NQYXJzZXJPYnNlcnZlcldyYXBw
ZXI6OnlpZWxkQ29tbWVudHNCZWZvcmUoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Up
Cit7CisgICAgdW5zaWduZWQgc3RhcnRJbmRleCA9IHJhbmdlLmJlZ2luKCkgLSBtX2ZpcnN0UGFy
c2VyVG9rZW47CisgICAgd2hpbGUgKG1fY29tbWVudEl0ZXJhdG9yIDwgbV9jb21tZW50T2Zmc2V0
cy5lbmQoKSAmJiBtX2NvbW1lbnRJdGVyYXRvci0+dG9rZW5zQmVmb3JlIDw9IHN0YXJ0SW5kZXgp
IHsKKyAgICAgICAgbV9vYnNlcnZlci5vYnNlcnZlQ29tbWVudChtX2NvbW1lbnRJdGVyYXRvci0+
c3RhcnRPZmZzZXQsIG1fY29tbWVudEl0ZXJhdG9yLT5lbmRPZmZzZXQpOworICAgICAgICBtX2Nv
bW1lbnRJdGVyYXRvcisrOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlck9ic2VydmVy
V3JhcHBlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OSBAQAor
Ly8gQ29weXJpZ2h0IDIwMTUgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8g
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisv
LyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisv
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZm5kZWYg
Q1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyX2gKKyNkZWZpbmUgQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFw
cGVyX2gKKworI2luY2x1ZGUgIkNTU1BhcnNlck9ic2VydmVyLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyIHsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIoQ1NTUGFyc2VyT2JzZXJ2ZXImIG9ic2Vy
dmVyKQorICAgICAgICA6IG1fb2JzZXJ2ZXIob2JzZXJ2ZXIpCisgICAgeyB9CisKKyAgICB1bnNp
Z25lZCBzdGFydE9mZnNldChjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJik7CisgICAgdW5zaWdu
ZWQgcHJldmlvdXNUb2tlblN0YXJ0T2Zmc2V0KGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmKTsK
KyAgICB1bnNpZ25lZCBlbmRPZmZzZXQoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOyAvLyBJ
bmNsdWRlcyB0cmFpbGluZyBjb21tZW50cworCisgICAgdm9pZCBza2lwQ29tbWVudHNCZWZvcmUo
Y29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGJvb2wgbGVhdmVEaXJlY3RseUJlZm9yZSk7Cisg
ICAgdm9pZCB5aWVsZENvbW1lbnRzQmVmb3JlKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmKTsK
KworICAgIENTU1BhcnNlck9ic2VydmVyJiBvYnNlcnZlcigpIHsgcmV0dXJuIG1fb2JzZXJ2ZXI7
IH0KKyAgICB2b2lkIGFkZENvbW1lbnQodW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCwgdW5zaWduZWQgdG9rZW5zQmVmb3JlKQorICAgIHsKKyAgICAgICAgQ29tbWVudFBv
c2l0aW9uIHBvc2l0aW9uID0ge3N0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIHRva2Vuc0JlZm9yZX07
CisgICAgICAgIG1fY29tbWVudE9mZnNldHMuYXBwZW5kKHBvc2l0aW9uKTsKKyAgICB9CisgICAg
dm9pZCBhZGRUb2tlbih1bnNpZ25lZCBzdGFydE9mZnNldCkgeyBtX3Rva2VuT2Zmc2V0cy5hcHBl
bmQoc3RhcnRPZmZzZXQpOyB9CisgICAgdm9pZCBmaW5hbGl6ZUNvbnN0cnVjdGlvbihDU1NQYXJz
ZXJUb2tlbiogZmlyc3RQYXJzZXJUb2tlbikKKyAgICB7CisgICAgICAgIG1fZmlyc3RQYXJzZXJU
b2tlbiA9IGZpcnN0UGFyc2VyVG9rZW47CisgICAgICAgIG1fY29tbWVudEl0ZXJhdG9yID0gbV9j
b21tZW50T2Zmc2V0cy5iZWdpbigpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBDU1NQYXJzZXJP
YnNlcnZlciYgbV9vYnNlcnZlcjsKKyAgICBWZWN0b3I8dW5zaWduZWQ+IG1fdG9rZW5PZmZzZXRz
OworICAgIENTU1BhcnNlclRva2VuKiBtX2ZpcnN0UGFyc2VyVG9rZW47CisKKyAgICBzdHJ1Y3Qg
Q29tbWVudFBvc2l0aW9uIHsKKyAgICAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQ7CisgICAgICAg
IHVuc2lnbmVkIGVuZE9mZnNldDsKKyAgICAgICAgdW5zaWduZWQgdG9rZW5zQmVmb3JlOworICAg
IH07CisKKyAgICBWZWN0b3I8Q29tbWVudFBvc2l0aW9uPiBtX2NvbW1lbnRPZmZzZXRzOworICAg
IFZlY3RvcjxDb21tZW50UG9zaXRpb24+OjppdGVyYXRvciBtX2NvbW1lbnRJdGVyYXRvcjsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENTU1BhcnNlck9ic2VydmVy
V3JhcHBlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2Vu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRv
a2VuLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Bh
cnNlclRva2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3NiBAQAorLy8gQ29weXJp
Z2h0IDIwMTQgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLwor
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmli
dXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
Ky8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlbi5oIgorCisjaW5jbHVkZSAiQ1NTTWFya3VwLmgi
CisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eVBh
cnNlci5oIgorI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGVzIGNzc1ByaW1pdGl2ZVZhbHVlVW5pdEZyb21UcmllKGNvbnN0IENoYXJhY3RlclR5
cGUqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBBU1NFUlQoZGF0YSk7CisgICAgQVNT
RVJUKGxlbmd0aCk7CisgICAgc3dpdGNoIChsZW5ndGgpIHsKKyAgICBjYXNlIDE6CisgICAgICAg
IHN3aXRjaCAodG9BU0NJSUxvd2VyKGRhdGFbMF0pKSB7CisgICAgICAgIGNhc2UgJ3MnOgorICAg
ICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19TOworICAg
ICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAgICAgc3dpdGNoICh0b0FT
Q0lJTG93ZXIoZGF0YVswXSkpIHsKKyAgICAgICAgY2FzZSAnYyc6CisgICAgICAgICAgICBzd2l0
Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkgeworICAgICAgICAgICAgY2FzZSAnaCc6CisgICAg
ICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19DSFM7
CisgICAgICAgICAgICBjYXNlICdtJzoKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0NNOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgJ2UnOgorICAgICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93
ZXIoZGF0YVsxXSkpIHsKKyAgICAgICAgICAgIGNhc2UgJ20nOgorICAgICAgICAgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfRU1TOworICAgICAgICAgICAg
Y2FzZSAneCc6CisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZXM6OkNTU19FWFM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSAnZic6CisgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGRhdGFbMV0pID09ICdy
JykKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6
Q1NTX0ZSOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ2gnOgorICAgICAgICAg
ICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzFdKSA9PSAneicpCisgICAgICAgICAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19IWjsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlICdpJzoKKyAgICAgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoZGF0
YVsxXSkgPT0gJ24nKQorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGVzOjpDU1NfSU47CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnbSc6
CisgICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkgeworICAgICAgICAg
ICAgY2FzZSAnbSc6CisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZXM6OkNTU19NTTsKKyAgICAgICAgICAgIGNhc2UgJ3MnOgorICAgICAgICAgICAgICAg
IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfTVM7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAncCc6CisgICAgICAgICAgICBz
d2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkgeworICAgICAgICAgICAgY2FzZSAnYyc6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19Q
QzsKKyAgICAgICAgICAgIGNhc2UgJ3QnOgorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUFQ7CisgICAgICAgICAgICBjYXNlICd4JzoKKyAg
ICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1BY
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ3YnOgor
ICAgICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkpIHsKKyAgICAgICAgICAg
IGNhc2UgJ2gnOgorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGVzOjpDU1NfVkg7CisgICAgICAgICAgICBjYXNlICd3JzoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1ZXOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSAzOgorICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzBdKSkgeworICAgICAgICBj
YXNlICdkJzoKKyAgICAgICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGRhdGFbMV0pKSB7Cisg
ICAgICAgICAgICBjYXNlICdlJzoKKyAgICAgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGRh
dGFbMl0pID09ICdnJykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZXM6OkNTU19ERUc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlICdwJzoKKyAgICAgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGRhdGFbMl0p
ID09ICdpJykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZXM6OkNTU19EUEk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdrJzoKKyAgICAgICAgICAgIGlmICh0b0FT
Q0lJTG93ZXIoZGF0YVsxXSkgPT0gJ2gnICYmIHRvQVNDSUlMb3dlcihkYXRhWzJdKSA9PSAneicp
CisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNT
U19LSFo7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAncic6CisgICAgICAgICAg
ICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkgeworICAgICAgICAgICAgY2FzZSAnYSc6
CisgICAgICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzJdKSA9PSAnZCcpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1Nf
UkFEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnZSc6CisgICAg
ICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzJdKSA9PSAnbScpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUkVNUzsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGJyZWFrOworICAgIGNhc2UgNDoKKyAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93
ZXIoZGF0YVswXSkpIHsKKyAgICAgICAgY2FzZSAnZCc6CisgICAgICAgICAgICBzd2l0Y2ggKHRv
QVNDSUlMb3dlcihkYXRhWzFdKSkgeworICAgICAgICAgICAgY2FzZSAncCc6CisgICAgICAgICAg
ICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVsyXSkpIHsKKyAgICAgICAgICAgICAgICBj
YXNlICdjJzoKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzNdKSA9
PSAnbScpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlczo6Q1NTX0RQQ007CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgJ3AnOgorICAgICAgICAgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2Vy
KGRhdGFbM10pID09ICd4JykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfRFBQWDsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ2cnOgorICAgICAgICAgICAgaWYgKHRvQVNDSUlM
b3dlcihkYXRhWzFdKSA9PSAncicgJiYgdG9BU0NJSUxvd2VyKGRhdGFbMl0pID09ICdhJyAmJiB0
b0FTQ0lJTG93ZXIoZGF0YVszXSkgPT0gJ2QnKQorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQ
cmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfR1JBRDsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlICd0JzoKKyAgICAgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkg
PT0gJ3UnICYmIHRvQVNDSUlMb3dlcihkYXRhWzJdKSA9PSAncicgJiYgdG9BU0NJSUxvd2VyKGRh
dGFbM10pID09ICduJykKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlczo6Q1NTX1RVUk47CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAn
dic6CisgICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkgeworICAgICAg
ICAgICAgY2FzZSAnbSc6CisgICAgICAgICAgICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0
YVsyXSkpIHsKKyAgICAgICAgICAgICAgICBjYXNlICdhJzoKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHRvQVNDSUlMb3dlcihkYXRhWzNdKSA9PSAneCcpCisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1ZNQVg7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgJ2knOgorICAgICAgICAg
ICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGRhdGFbM10pID09ICduJykKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfVk1J
TjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA1OgorICAgICAgICBzd2l0Y2ggKHRvQVND
SUlMb3dlcihkYXRhWzBdKSkgeworICAgICAgICBjYXNlICdfJzoKKyAgICAgICAgICAgIGlmICh0
b0FTQ0lJTG93ZXIoZGF0YVsxXSkgPT0gJ18nICYmIHRvQVNDSUlMb3dlcihkYXRhWzJdKSA9PSAn
cScgJiYgdG9BU0NJSUxvd2VyKGRhdGFbM10pID09ICdlJyAmJiB0b0FTQ0lJTG93ZXIoZGF0YVs0
XSkgPT0gJ20nKQorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGVzOjpDU1NfRU1TOyAvLyBGSVhNRS1ORVdQQVJTRVI6IE5lZWQgcXVpcmt5IGVtcy4KKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1VOS05PV047Cit9CisKK3N0
YXRpYyBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHN0cmluZ1RvVW5pdFR5cGUoU3RyaW5n
VmlldyBzdHJpbmdWaWV3KQoreworICAgIGlmIChzdHJpbmdWaWV3LmlzOEJpdCgpKQorICAgICAg
ICByZXR1cm4gY3NzUHJpbWl0aXZlVmFsdWVVbml0RnJvbVRyaWUoc3RyaW5nVmlldy5jaGFyYWN0
ZXJzOCgpLCBzdHJpbmdWaWV3Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4gY3NzUHJpbWl0aXZlVmFs
dWVVbml0RnJvbVRyaWUoc3RyaW5nVmlldy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nVmlldy5sZW5n
dGgoKSk7Cit9CisKK0NTU1BhcnNlclRva2VuOjpDU1NQYXJzZXJUb2tlbihDU1NQYXJzZXJUb2tl
blR5cGUgdHlwZSwgQmxvY2tUeXBlIGJsb2NrVHlwZSkKKyAgICA6IG1fdHlwZSh0eXBlKQorICAg
ICwgbV9ibG9ja1R5cGUoYmxvY2tUeXBlKQoreworfQorCisvLyBKdXN0IGEgaGVscGVyIHVzZWQg
Zm9yIERlbGltaXRlciB0b2tlbnMuCitDU1NQYXJzZXJUb2tlbjo6Q1NTUGFyc2VyVG9rZW4oQ1NT
UGFyc2VyVG9rZW5UeXBlIHR5cGUsIFVDaGFyIGMpCisgICAgOiBtX3R5cGUodHlwZSkKKyAgICAs
IG1fYmxvY2tUeXBlKE5vdEJsb2NrKQorICAgICwgbV9kZWxpbWl0ZXIoYykKK3sKKyAgICBBU1NF
UlQobV90eXBlID09IERlbGltaXRlclRva2VuKTsKK30KKworQ1NTUGFyc2VyVG9rZW46OkNTU1Bh
cnNlclRva2VuKENTU1BhcnNlclRva2VuVHlwZSB0eXBlLCBTdHJpbmdWaWV3IHZhbHVlLCBCbG9j
a1R5cGUgYmxvY2tUeXBlKQorICAgIDogbV90eXBlKHR5cGUpCisgICAgLCBtX2Jsb2NrVHlwZShi
bG9ja1R5cGUpCit7CisgICAgaW5pdFZhbHVlRnJvbVN0cmluZ1ZpZXcodmFsdWUpOworICAgIG1f
aWQgPSAtMTsKK30KKworQ1NTUGFyc2VyVG9rZW46OkNTU1BhcnNlclRva2VuKENTU1BhcnNlclRv
a2VuVHlwZSB0eXBlLCBkb3VibGUgbnVtZXJpY1ZhbHVlLCBOdW1lcmljVmFsdWVUeXBlIG51bWVy
aWNWYWx1ZVR5cGUsIE51bWVyaWNTaWduIHNpZ24pCisgICAgOiBtX3R5cGUodHlwZSkKKyAgICAs
IG1fYmxvY2tUeXBlKE5vdEJsb2NrKQorICAgICwgbV9udW1lcmljVmFsdWVUeXBlKG51bWVyaWNW
YWx1ZVR5cGUpCisgICAgLCBtX251bWVyaWNTaWduKHNpZ24pCisgICAgLCBtX3VuaXQoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19OVU1CRVIp
KQoreworICAgIEFTU0VSVCh0eXBlID09IE51bWJlclRva2VuKTsKKyAgICBtX251bWVyaWNWYWx1
ZSA9IGNsYW1wVG88ZG91YmxlPihudW1lcmljVmFsdWUsIC1zdGQ6Om51bWVyaWNfbGltaXRzPGZs
b2F0Pjo6bWF4KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSk7Cit9CisKK0NT
U1BhcnNlclRva2VuOjpDU1NQYXJzZXJUb2tlbihDU1NQYXJzZXJUb2tlblR5cGUgdHlwZSwgVUNo
YXIzMiBzdGFydCwgVUNoYXIzMiBlbmQpCisgICAgOiBtX3R5cGUoVW5pY29kZVJhbmdlVG9rZW4p
CisgICAgLCBtX2Jsb2NrVHlwZShOb3RCbG9jaykKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHR5cGUs
IHR5cGUgPT0gVW5pY29kZVJhbmdlVG9rZW4pOworICAgIG1fdW5pY29kZVJhbmdlLnN0YXJ0ID0g
c3RhcnQ7CisgICAgbV91bmljb2RlUmFuZ2UuZW5kID0gZW5kOworfQorCitDU1NQYXJzZXJUb2tl
bjo6Q1NTUGFyc2VyVG9rZW4oSGFzaFRva2VuVHlwZSB0eXBlLCBTdHJpbmdWaWV3IHZhbHVlKQor
ICAgIDogbV90eXBlKEhhc2hUb2tlbikKKyAgICAsIG1fYmxvY2tUeXBlKE5vdEJsb2NrKQorICAg
ICwgbV9oYXNoVG9rZW5UeXBlKHR5cGUpCit7CisgICAgaW5pdFZhbHVlRnJvbVN0cmluZ1ZpZXco
dmFsdWUpOworfQorCit2b2lkIENTU1BhcnNlclRva2VuOjpjb252ZXJ0VG9EaW1lbnNpb25XaXRo
VW5pdChTdHJpbmdWaWV3IHVuaXQpCit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBOdW1iZXJUb2tl
bik7CisgICAgbV90eXBlID0gRGltZW5zaW9uVG9rZW47CisgICAgaW5pdFZhbHVlRnJvbVN0cmlu
Z1ZpZXcodW5pdCk7CisgICAgbV91bml0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0cmluZ1Rv
VW5pdFR5cGUodW5pdCkpOworfQorCit2b2lkIENTU1BhcnNlclRva2VuOjpjb252ZXJ0VG9QZXJj
ZW50YWdlKCkKK3sKKyAgICBBU1NFUlQobV90eXBlID09IE51bWJlclRva2VuKTsKKyAgICBtX3R5
cGUgPSBQZXJjZW50YWdlVG9rZW47CisgICAgbV91bml0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19QRVJDRU5UQUdFKTsKK30KKworVUNo
YXIgQ1NTUGFyc2VyVG9rZW46OmRlbGltaXRlcigpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlw
ZSA9PSBEZWxpbWl0ZXJUb2tlbik7CisgICAgcmV0dXJuIG1fZGVsaW1pdGVyOworfQorCitOdW1l
cmljU2lnbiBDU1NQYXJzZXJUb2tlbjo6bnVtZXJpY1NpZ24oKSBjb25zdAoreworICAgIC8vIFRo
aXMgaXMgdmFsaWQgZm9yIERpbWVuc2lvblRva2VuIGFuZCBQZXJjZW50YWdlVG9rZW4sIGJ1dCBv
bmx5IHVzZWQKKyAgICAvLyBpbiA8YW4rYj4gcGFyc2luZyBvbiBOdW1iZXJUb2tlbnMuCisgICAg
QVNTRVJUKG1fdHlwZSA9PSBOdW1iZXJUb2tlbik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE51
bWVyaWNTaWduPihtX251bWVyaWNTaWduKTsKK30KKworTnVtZXJpY1ZhbHVlVHlwZSBDU1NQYXJz
ZXJUb2tlbjo6bnVtZXJpY1ZhbHVlVHlwZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9
PSBOdW1iZXJUb2tlbiB8fCBtX3R5cGUgPT0gUGVyY2VudGFnZVRva2VuIHx8IG1fdHlwZSA9PSBE
aW1lbnNpb25Ub2tlbik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE51bWVyaWNWYWx1ZVR5cGU+
KG1fbnVtZXJpY1ZhbHVlVHlwZSk7Cit9CisKK2RvdWJsZSBDU1NQYXJzZXJUb2tlbjo6bnVtZXJp
Y1ZhbHVlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09IE51bWJlclRva2VuIHx8IG1f
dHlwZSA9PSBQZXJjZW50YWdlVG9rZW4gfHwgbV90eXBlID09IERpbWVuc2lvblRva2VuKTsKKyAg
ICByZXR1cm4gbV9udW1lcmljVmFsdWU7Cit9CisKK0NTU1Byb3BlcnR5SUQgQ1NTUGFyc2VyVG9r
ZW46OnBhcnNlQXNVbnJlc29sdmVkQ1NTUHJvcGVydHlJRCgpIGNvbnN0Cit7CisgICAgQVNTRVJU
KG1fdHlwZSA9PSBJZGVudFRva2VuKTsKKyAgICByZXR1cm4gdW5yZXNvbHZlZENTU1Byb3BlcnR5
SUQodmFsdWUoKSk7Cit9CisKK0NTU1ZhbHVlSUQgQ1NTUGFyc2VyVG9rZW46OmlkKCkgY29uc3QK
K3sKKyAgICBpZiAobV90eXBlICE9IElkZW50VG9rZW4pCisgICAgICAgIHJldHVybiBDU1NWYWx1
ZUludmFsaWQ7CisgICAgaWYgKG1faWQgPCAwKQorICAgICAgICBtX2lkID0gY3NzVmFsdWVLZXl3
b3JkSUQodmFsdWUoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KG1faWQp
OworfQorCitDU1NWYWx1ZUlEIENTU1BhcnNlclRva2VuOjpmdW5jdGlvbklkKCkgY29uc3QKK3sK
KyAgICBpZiAobV90eXBlICE9IEZ1bmN0aW9uVG9rZW4pCisgICAgICAgIHJldHVybiBDU1NWYWx1
ZUludmFsaWQ7CisgICAgaWYgKG1faWQgPCAwKQorICAgICAgICBtX2lkID0gY3NzVmFsdWVLZXl3
b3JkSUQodmFsdWUoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KG1faWQp
OworfQorCitib29sIENTU1BhcnNlclRva2VuOjpoYXNTdHJpbmdCYWNraW5nKCkgY29uc3QKK3sK
KyAgICBDU1NQYXJzZXJUb2tlblR5cGUgdG9rZW5UeXBlID0gdHlwZSgpOworICAgIHJldHVybiB0
b2tlblR5cGUgPT0gSWRlbnRUb2tlbgorICAgICAgICB8fCB0b2tlblR5cGUgPT0gRnVuY3Rpb25U
b2tlbgorICAgICAgICB8fCB0b2tlblR5cGUgPT0gQXRLZXl3b3JkVG9rZW4KKyAgICAgICAgfHwg
dG9rZW5UeXBlID09IEhhc2hUb2tlbgorICAgICAgICB8fCB0b2tlblR5cGUgPT0gVXJsVG9rZW4K
KyAgICAgICAgfHwgdG9rZW5UeXBlID09IERpbWVuc2lvblRva2VuCisgICAgICAgIHx8IHRva2Vu
VHlwZSA9PSBTdHJpbmdUb2tlbjsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTUGFyc2VyVG9rZW46
OmNvcHlXaXRoVXBkYXRlZFN0cmluZyhjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmcpIGNvbnN0Cit7
CisgICAgQ1NTUGFyc2VyVG9rZW4gY29weSgqdGhpcyk7CisgICAgY29weS5pbml0VmFsdWVGcm9t
U3RyaW5nVmlldyhzdHJpbmcpOworICAgIHJldHVybiBjb3B5OworfQorCitib29sIENTU1BhcnNl
clRva2VuOjp2YWx1ZURhdGFDaGFyUmF3RXF1YWwoY29uc3QgQ1NTUGFyc2VyVG9rZW4mIG90aGVy
KSBjb25zdAoreworICAgIGlmIChtX3ZhbHVlTGVuZ3RoICE9IG90aGVyLm1fdmFsdWVMZW5ndGgp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX3ZhbHVlRGF0YUNoYXJSYXcgPT0g
b3RoZXIubV92YWx1ZURhdGFDaGFyUmF3ICYmIG1fdmFsdWVJczhCaXQgPT0gb3RoZXIubV92YWx1
ZUlzOEJpdCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAobV92YWx1ZUlzOEJpdCkK
KyAgICAgICAgcmV0dXJuIG90aGVyLm1fdmFsdWVJczhCaXQgPyBlcXVhbChzdGF0aWNfY2FzdDxj
b25zdCBMQ2hhcio+KG1fdmFsdWVEYXRhQ2hhclJhdyksIHN0YXRpY19jYXN0PGNvbnN0IExDaGFy
Kj4ob3RoZXIubV92YWx1ZURhdGFDaGFyUmF3KSwgbV92YWx1ZUxlbmd0aCkgOiBlcXVhbChzdGF0
aWNfY2FzdDxjb25zdCBMQ2hhcio+KG1fdmFsdWVEYXRhQ2hhclJhdyksIHN0YXRpY19jYXN0PGNv
bnN0IFVDaGFyKj4ob3RoZXIubV92YWx1ZURhdGFDaGFyUmF3KSwgbV92YWx1ZUxlbmd0aCk7Cisg
ICAgCisgICAgcmV0dXJuIG90aGVyLm1fdmFsdWVJczhCaXQgPyBlcXVhbChzdGF0aWNfY2FzdDxj
b25zdCBVQ2hhcio+KG1fdmFsdWVEYXRhQ2hhclJhdyksIHN0YXRpY19jYXN0PGNvbnN0IExDaGFy
Kj4ob3RoZXIubV92YWx1ZURhdGFDaGFyUmF3KSwgbV92YWx1ZUxlbmd0aCkgOiBlcXVhbChzdGF0
aWNfY2FzdDxjb25zdCBVQ2hhcio+KG1fdmFsdWVEYXRhQ2hhclJhdyksIHN0YXRpY19jYXN0PGNv
bnN0IFVDaGFyKj4ob3RoZXIubV92YWx1ZURhdGFDaGFyUmF3KSwgbV92YWx1ZUxlbmd0aCk7Cit9
CisKK2Jvb2wgQ1NTUGFyc2VyVG9rZW46Om9wZXJhdG9yPT0oY29uc3QgQ1NTUGFyc2VyVG9rZW4m
IG90aGVyKSBjb25zdAoreworICAgIGlmIChtX3R5cGUgIT0gb3RoZXIubV90eXBlKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIERlbGltaXRl
clRva2VuOgorICAgICAgICByZXR1cm4gZGVsaW1pdGVyKCkgPT0gb3RoZXIuZGVsaW1pdGVyKCk7
CisgICAgY2FzZSBIYXNoVG9rZW46CisgICAgICAgIGlmIChtX2hhc2hUb2tlblR5cGUgIT0gb3Ro
ZXIubV9oYXNoVG9rZW5UeXBlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBG
QUxMVEhST1VHSDsKKyAgICBjYXNlIElkZW50VG9rZW46CisgICAgY2FzZSBGdW5jdGlvblRva2Vu
OgorICAgIGNhc2UgU3RyaW5nVG9rZW46CisgICAgY2FzZSBVcmxUb2tlbjoKKyAgICAgICAgcmV0
dXJuIHZhbHVlRGF0YUNoYXJSYXdFcXVhbChvdGhlcik7CisgICAgY2FzZSBEaW1lbnNpb25Ub2tl
bjoKKyAgICAgICAgaWYgKCF2YWx1ZURhdGFDaGFyUmF3RXF1YWwob3RoZXIpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIE51bWJlclRv
a2VuOgorICAgIGNhc2UgUGVyY2VudGFnZVRva2VuOgorICAgICAgICByZXR1cm4gbV9udW1lcmlj
U2lnbiA9PSBvdGhlci5tX251bWVyaWNTaWduICYmIG1fbnVtZXJpY1ZhbHVlID09IG90aGVyLm1f
bnVtZXJpY1ZhbHVlICYmIG1fbnVtZXJpY1ZhbHVlVHlwZSA9PSBvdGhlci5tX251bWVyaWNWYWx1
ZVR5cGU7CisgICAgY2FzZSBVbmljb2RlUmFuZ2VUb2tlbjoKKyAgICAgICAgcmV0dXJuIG1fdW5p
Y29kZVJhbmdlLnN0YXJ0ID09IG90aGVyLm1fdW5pY29kZVJhbmdlLnN0YXJ0ICYmIG1fdW5pY29k
ZVJhbmdlLmVuZCA9PSBvdGhlci5tX3VuaWNvZGVSYW5nZS5lbmQ7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfQorCit2b2lkIENTU1BhcnNlclRva2VuOjpzZXJp
YWxpemUoU3RyaW5nQnVpbGRlciYgYnVpbGRlcikgY29uc3QKK3sKKyAgICAvLyBUaGlzIGlzIGN1
cnJlbnRseSBvbmx5IHVzZWQgZm9yIEBzdXBwb3J0cyBDU1NPTS4gVG8ga2VlcCBvdXIgaW1wbGVt
ZW50YXRpb24KKyAgICAvLyBzaW1wbGUgd2UgaGFuZGxlIHNvbWUgb2YgdGhlIGVkZ2UgY2FzZXMg
aW5jb3JyZWN0bHkgKHNlZSBjb21tZW50cyBiZWxvdykuCisgICAgc3dpdGNoICh0eXBlKCkpIHsK
KyAgICBjYXNlIElkZW50VG9rZW46CisgICAgICAgIHNlcmlhbGl6ZUlkZW50aWZpZXIodmFsdWUo
KS50b1N0cmluZygpLCBidWlsZGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGdW5jdGlv
blRva2VuOgorICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKHZhbHVlKCkudG9TdHJpbmcoKSwg
YnVpbGRlcik7CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgnKCcpOworICAgIGNhc2Ug
QXRLZXl3b3JkVG9rZW46CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdAJyk7CisgICAgICAgIHNl
cmlhbGl6ZUlkZW50aWZpZXIodmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVyKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBIYXNoVG9rZW46CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcjJyk7
CisgICAgICAgIHNlcmlhbGl6ZUlkZW50aWZpZXIodmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVy
LCAoZ2V0SGFzaFRva2VuVHlwZSgpID09IEhhc2hUb2tlblVucmVzdHJpY3RlZCkpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFVybFRva2VuOgorICAgICAgICBidWlsZGVyLmFwcGVuZCgidXJs
KCIpOworICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKHZhbHVlKCkudG9TdHJpbmcoKSwgYnVp
bGRlcik7CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgnKScpOworICAgIGNhc2UgRGVs
aW1pdGVyVG9rZW46CisgICAgICAgIGlmIChkZWxpbWl0ZXIoKSA9PSAnXFwnKQorICAgICAgICAg
ICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCJcXFxuIik7CisgICAgICAgIHJldHVybiBidWlsZGVy
LmFwcGVuZChkZWxpbWl0ZXIoKSk7CisgICAgY2FzZSBOdW1iZXJUb2tlbjoKKyAgICAgICAgLy8g
VGhlc2Ugd29uJ3QgcHJvcGVybHkgcHJlc2VydmUgdGhlIE51bWVyaWNWYWx1ZVR5cGUgZmxhZwor
ICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmROdW1iZXIobnVtZXJpY1ZhbHVlKCkpOworICAg
IGNhc2UgUGVyY2VudGFnZVRva2VuOgorICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihudW1l
cmljVmFsdWUoKSk7CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgnJScpOworICAgIGNh
c2UgRGltZW5zaW9uVG9rZW46CisgICAgICAgIC8vIFRoaXMgd2lsbCBpbmNvcnJlY3RseSBzZXJp
YWxpemUgZS5nLiA0ZTNlMiBhcyA0MDAwZTIKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIo
bnVtZXJpY1ZhbHVlKCkpOworICAgICAgICBzZXJpYWxpemVJZGVudGlmaWVyKHZhbHVlKCkudG9T
dHJpbmcoKSwgYnVpbGRlcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVW5pY29kZVJhbmdl
VG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiVSsl
WC0lWCIsIHVuaWNvZGVSYW5nZVN0YXJ0KCksIHVuaWNvZGVSYW5nZUVuZCgpKSk7CisgICAgY2Fz
ZSBTdHJpbmdUb2tlbjoKKyAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZVN0cmluZyh2YWx1ZSgpLnRv
U3RyaW5nKCksIGJ1aWxkZXIpOworCisgICAgY2FzZSBJbmNsdWRlTWF0Y2hUb2tlbjoKKyAgICAg
ICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCJ+PSIpOworICAgIGNhc2UgRGFzaE1hdGNoVG9rZW46
CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgifD0iKTsKKyAgICBjYXNlIFByZWZpeE1h
dGNoVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgiXj0iKTsKKyAgICBjYXNl
IFN1ZmZpeE1hdGNoVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgiJD0iKTsK
KyAgICBjYXNlIFN1YnN0cmluZ01hdGNoVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFw
cGVuZCgiKj0iKTsKKyAgICBjYXNlIENvbHVtblRva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRl
ci5hcHBlbmQoInx8Iik7CisgICAgY2FzZSBDRE9Ub2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxk
ZXIuYXBwZW5kKCI8IS0tIik7CisgICAgY2FzZSBDRENUb2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1
aWxkZXIuYXBwZW5kKCItLT4iKTsKKyAgICBjYXNlIEJhZFN0cmluZ1Rva2VuOgorICAgICAgICBy
ZXR1cm4gYnVpbGRlci5hcHBlbmQoIidcbiIpOworICAgIGNhc2UgQmFkVXJsVG9rZW46CisgICAg
ICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgidXJsKCgpIik7CisgICAgY2FzZSBXaGl0ZXNwYWNl
VG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgnICcpOworICAgIGNhc2UgQ29s
b25Ub2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CisgICAgY2FzZSBT
ZW1pY29sb25Ub2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCc7Jyk7CisgICAg
Y2FzZSBDb21tYVRva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJywnKTsKKyAg
ICBjYXNlIExlZnRQYXJlbnRoZXNpc1Rva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBl
bmQoJygnKTsKKyAgICBjYXNlIFJpZ2h0UGFyZW50aGVzaXNUb2tlbjoKKyAgICAgICAgcmV0dXJu
IGJ1aWxkZXIuYXBwZW5kKCcpJyk7CisgICAgY2FzZSBMZWZ0QnJhY2tldFRva2VuOgorICAgICAg
ICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJ1snKTsKKyAgICBjYXNlIFJpZ2h0QnJhY2tldFRva2Vu
OgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJ10nKTsKKyAgICBjYXNlIExlZnRCcmFj
ZVRva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJ3snKTsKKyAgICBjYXNlIFJp
Z2h0QnJhY2VUb2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCd9Jyk7CisKKyAg
ICBjYXNlIEVPRlRva2VuOgorICAgIGNhc2UgQ29tbWVudFRva2VuOgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tl
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVG9r
ZW4uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNl
clRva2VuLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODAgQEAKKy8vIENvcHlyaWdodCAy
MDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8v
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9u
LgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZuZGVmIENTU1BhcnNlclRva2Vu
X2gKKyNkZWZpbmUgQ1NTUGFyc2VyVG9rZW5faAorCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFs
dWUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworZW51bSBDU1NQYXJzZXJUb2tlblR5cGUgeworICAgIElkZW50VG9rZW4gPSAwLAor
ICAgIEZ1bmN0aW9uVG9rZW4sCisgICAgQXRLZXl3b3JkVG9rZW4sCisgICAgSGFzaFRva2VuLAor
ICAgIFVybFRva2VuLAorICAgIEJhZFVybFRva2VuLAorICAgIERlbGltaXRlclRva2VuLAorICAg
IE51bWJlclRva2VuLAorICAgIFBlcmNlbnRhZ2VUb2tlbiwKKyAgICBEaW1lbnNpb25Ub2tlbiwK
KyAgICBJbmNsdWRlTWF0Y2hUb2tlbiwKKyAgICBEYXNoTWF0Y2hUb2tlbiwKKyAgICBQcmVmaXhN
YXRjaFRva2VuLAorICAgIFN1ZmZpeE1hdGNoVG9rZW4sCisgICAgU3Vic3RyaW5nTWF0Y2hUb2tl
biwKKyAgICBDb2x1bW5Ub2tlbiwKKyAgICBVbmljb2RlUmFuZ2VUb2tlbiwKKyAgICBXaGl0ZXNw
YWNlVG9rZW4sCisgICAgQ0RPVG9rZW4sCisgICAgQ0RDVG9rZW4sCisgICAgQ29sb25Ub2tlbiwK
KyAgICBTZW1pY29sb25Ub2tlbiwKKyAgICBDb21tYVRva2VuLAorICAgIExlZnRQYXJlbnRoZXNp
c1Rva2VuLAorICAgIFJpZ2h0UGFyZW50aGVzaXNUb2tlbiwKKyAgICBMZWZ0QnJhY2tldFRva2Vu
LAorICAgIFJpZ2h0QnJhY2tldFRva2VuLAorICAgIExlZnRCcmFjZVRva2VuLAorICAgIFJpZ2h0
QnJhY2VUb2tlbiwKKyAgICBTdHJpbmdUb2tlbiwKKyAgICBCYWRTdHJpbmdUb2tlbiwKKyAgICBF
T0ZUb2tlbiwKKyAgICBDb21tZW50VG9rZW4sCit9OworCitlbnVtIE51bWVyaWNTaWduIHsKKyAg
ICBOb1NpZ24sCisgICAgUGx1c1NpZ24sCisgICAgTWludXNTaWduLAorfTsKKworZW51bSBOdW1l
cmljVmFsdWVUeXBlIHsKKyAgICBJbnRlZ2VyVmFsdWVUeXBlLAorICAgIE51bWJlclZhbHVlVHlw
ZSwKK307CisKK2VudW0gSGFzaFRva2VuVHlwZSB7CisgICAgSGFzaFRva2VuSWQsCisgICAgSGFz
aFRva2VuVW5yZXN0cmljdGVkLAorfTsKKworY2xhc3MgQ1NTUGFyc2VyVG9rZW4geworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGVudW0gQmxvY2tUeXBlIHsKKyAg
ICAgICAgTm90QmxvY2ssCisgICAgICAgIEJsb2NrU3RhcnQsCisgICAgICAgIEJsb2NrRW5kLAor
ICAgIH07CisKKyAgICBDU1NQYXJzZXJUb2tlbihDU1NQYXJzZXJUb2tlblR5cGUsIEJsb2NrVHlw
ZSA9IE5vdEJsb2NrKTsKKyAgICBDU1NQYXJzZXJUb2tlbihDU1NQYXJzZXJUb2tlblR5cGUsIFN0
cmluZ1ZpZXcsIEJsb2NrVHlwZSA9IE5vdEJsb2NrKTsKKworICAgIENTU1BhcnNlclRva2VuKENT
U1BhcnNlclRva2VuVHlwZSwgVUNoYXIpOyAvLyBmb3IgRGVsaW1pdGVyVG9rZW4KKyAgICBDU1NQ
YXJzZXJUb2tlbihDU1NQYXJzZXJUb2tlblR5cGUsIGRvdWJsZSwgTnVtZXJpY1ZhbHVlVHlwZSwg
TnVtZXJpY1NpZ24pOyAvLyBmb3IgTnVtYmVyVG9rZW4KKyAgICBDU1NQYXJzZXJUb2tlbihDU1NQ
YXJzZXJUb2tlblR5cGUsIFVDaGFyMzIsIFVDaGFyMzIpOyAvLyBmb3IgVW5pY29kZVJhbmdlVG9r
ZW4KKworICAgIENTU1BhcnNlclRva2VuKEhhc2hUb2tlblR5cGUsIFN0cmluZ1ZpZXcpOworCisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1BhcnNlclRva2VuJiBvdGhlcikgY29uc3Q7Cisg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENTU1BhcnNlclRva2VuJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKworICAgIC8vIENvbnZlcnRzIE51bWJlclRva2Vu
IHRvIERpbWVuc2lvblRva2VuLgorICAgIHZvaWQgY29udmVydFRvRGltZW5zaW9uV2l0aFVuaXQo
U3RyaW5nVmlldyk7CisKKyAgICAvLyBDb252ZXJ0cyBOdW1iZXJUb2tlbiB0byBQZXJjZW50YWdl
VG9rZW4uCisgICAgdm9pZCBjb252ZXJ0VG9QZXJjZW50YWdlKCk7CisKKyAgICBDU1NQYXJzZXJU
b2tlblR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENTU1BhcnNlclRva2Vu
VHlwZT4obV90eXBlKTsgfQorICAgIFN0cmluZ1ZpZXcgdmFsdWUoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgaWYgKG1fdmFsdWVJczhCaXQpCisgICAgICAgICAgICByZXR1cm4gU3RyaW5nVmlldyhy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV92YWx1ZURhdGFDaGFyUmF3KSwgbV92YWx1
ZUxlbmd0aCk7CisgICAgICAgIHJldHVybiBTdHJpbmdWaWV3KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVUNoYXIqPihtX3ZhbHVlRGF0YUNoYXJSYXcpLCBtX3ZhbHVlTGVuZ3RoKTsKKyAgICB9CisK
KyAgICBVQ2hhciBkZWxpbWl0ZXIoKSBjb25zdDsKKyAgICBOdW1lcmljU2lnbiBudW1lcmljU2ln
bigpIGNvbnN0OworICAgIE51bWVyaWNWYWx1ZVR5cGUgbnVtZXJpY1ZhbHVlVHlwZSgpIGNvbnN0
OworICAgIGRvdWJsZSBudW1lcmljVmFsdWUoKSBjb25zdDsKKyAgICBIYXNoVG9rZW5UeXBlIGdl
dEhhc2hUb2tlblR5cGUoKSBjb25zdCB7IEFTU0VSVChtX3R5cGUgPT0gSGFzaFRva2VuKTsgcmV0
dXJuIG1faGFzaFRva2VuVHlwZTsgfQorICAgIEJsb2NrVHlwZSBnZXRCbG9ja1R5cGUoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxCbG9ja1R5cGU+KG1fYmxvY2tUeXBlKTsgfQorICAgIENT
U1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgdW5pdFR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzPihtX3VuaXQpOyB9CisgICAgVUNo
YXIzMiB1bmljb2RlUmFuZ2VTdGFydCgpIGNvbnN0IHsgQVNTRVJUKG1fdHlwZSA9PSBVbmljb2Rl
UmFuZ2VUb2tlbik7IHJldHVybiBtX3VuaWNvZGVSYW5nZS5zdGFydDsgfQorICAgIFVDaGFyMzIg
dW5pY29kZVJhbmdlRW5kKCkgY29uc3QgeyBBU1NFUlQobV90eXBlID09IFVuaWNvZGVSYW5nZVRv
a2VuKTsgcmV0dXJuIG1fdW5pY29kZVJhbmdlLmVuZDsgfQorICAgIENTU1ZhbHVlSUQgaWQoKSBj
b25zdDsKKyAgICBDU1NWYWx1ZUlEIGZ1bmN0aW9uSWQoKSBjb25zdDsKKworICAgIGJvb2wgaGFz
U3RyaW5nQmFja2luZygpIGNvbnN0OworCisgICAgQ1NTUHJvcGVydHlJRCBwYXJzZUFzVW5yZXNv
bHZlZENTU1Byb3BlcnR5SUQoKSBjb25zdDsKKworICAgIHZvaWQgc2VyaWFsaXplKFN0cmluZ0J1
aWxkZXImKSBjb25zdDsKKworICAgIENTU1BhcnNlclRva2VuIGNvcHlXaXRoVXBkYXRlZFN0cmlu
Zyhjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdm9pZCBpbml0VmFs
dWVGcm9tU3RyaW5nVmlldyhTdHJpbmdWaWV3IHN0cmluZykKKyAgICB7CisgICAgICAgIG1fdmFs
dWVMZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgICAgIG1fdmFsdWVJczhCaXQgPSBzdHJp
bmcuaXM4Qml0KCk7CisgICAgICAgIG1fdmFsdWVEYXRhQ2hhclJhdyA9IG1fdmFsdWVJczhCaXQg
PyBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oc3RyaW5nLmNoYXJhY3RlcnM4KCkpIDogc3RhdGlj
X2Nhc3Q8Y29uc3Qgdm9pZCo+KHN0cmluZy5jaGFyYWN0ZXJzMTYoKSk7CisgICAgfQorICAgIHVu
c2lnbmVkIG1fdHlwZSA6IDY7IC8vIENTU1BhcnNlclRva2VuVHlwZQorICAgIHVuc2lnbmVkIG1f
YmxvY2tUeXBlIDogMjsgLy8gQmxvY2tUeXBlCisgICAgdW5zaWduZWQgbV9udW1lcmljVmFsdWVU
eXBlIDogMTsgLy8gTnVtZXJpY1ZhbHVlVHlwZQorICAgIHVuc2lnbmVkIG1fbnVtZXJpY1NpZ24g
OiAyOyAvLyBOdW1lcmljU2lnbgorICAgIHVuc2lnbmVkIG1fdW5pdCA6IDc7IC8vIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZXMKKworICAgIGJvb2wgdmFsdWVEYXRhQ2hhclJhd0VxdWFsKGNv
bnN0IENTU1BhcnNlclRva2VuJiBvdGhlcikgY29uc3Q7CisKKyAgICAvLyBtX3ZhbHVlLi4uIGlz
IGFuIHVucGFja2VkIFN0cmluZ1ZpZXcgc28gdGhhdCB3ZSBjYW4gcGFjayBpdAorICAgIC8vIHRp
Z2h0bHkgd2l0aCB0aGUgcmVzdCBvZiB0aGlzIG9iamVjdCBmb3IgYSBzbWFsbGVyIG9iamVjdCBz
aXplLgorICAgIGJvb2wgbV92YWx1ZUlzOEJpdCA6IDE7CisgICAgdW5zaWduZWQgbV92YWx1ZUxl
bmd0aDsKKyAgICBjb25zdCB2b2lkKiBtX3ZhbHVlRGF0YUNoYXJSYXc7IC8vIEVpdGhlciBMQ2hh
ciogb3IgVUNoYXIqLgorCisgICAgdW5pb24geworICAgICAgICBVQ2hhciBtX2RlbGltaXRlcjsK
KyAgICAgICAgSGFzaFRva2VuVHlwZSBtX2hhc2hUb2tlblR5cGU7CisgICAgICAgIGRvdWJsZSBt
X251bWVyaWNWYWx1ZTsKKyAgICAgICAgbXV0YWJsZSBpbnQgbV9pZDsKKworICAgICAgICBzdHJ1
Y3QgeworICAgICAgICAgICAgVUNoYXIzMiBzdGFydDsKKyAgICAgICAgICAgIFVDaGFyMzIgZW5k
OworICAgICAgICB9IG1fdW5pY29kZVJhbmdlOworICAgIH07Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NTUGFyc2VyVG9rZW5faApJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlblJhbmdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuUmFuZ2UuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW5SYW5nZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NiBAQAorLy8gQ29weXJpZ2h0IDIwMTQgVGhl
IENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
Ly8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
Ky8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
Ky8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJDU1NQYXJzZXJUb2tlblJhbmdlLmgiCisKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworQ1NTUGFyc2VyVG9rZW4mIENTU1BhcnNlclRva2VuUmFuZ2U6OmVvZlRva2VuKCkK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q1NTUGFyc2VyVG9rZW4+IGVvZlRva2VuKEVP
RlRva2VuKTsKKyAgICByZXR1cm4gZW9mVG9rZW4uZ2V0KCk7Cit9CisKK0NTU1BhcnNlclRva2Vu
UmFuZ2UgQ1NTUGFyc2VyVG9rZW5SYW5nZTo6bWFrZVN1YlJhbmdlKGNvbnN0IENTU1BhcnNlclRv
a2VuKiBmaXJzdCwgY29uc3QgQ1NTUGFyc2VyVG9rZW4qIGxhc3QpIGNvbnN0Cit7CisgICAgaWYg
KGZpcnN0ID09ICZlb2ZUb2tlbigpKQorICAgICAgICBmaXJzdCA9IG1fbGFzdDsKKyAgICBpZiAo
bGFzdCA9PSAmZW9mVG9rZW4oKSkKKyAgICAgICAgbGFzdCA9IG1fbGFzdDsKKyAgICBBU1NFUlQo
Zmlyc3QgPD0gbGFzdCk7CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuUmFuZ2UoZmlyc3QsIGxh
c3QpOworfQorCitDU1NQYXJzZXJUb2tlblJhbmdlIENTU1BhcnNlclRva2VuUmFuZ2U6OmNvbnN1
bWVCbG9jaygpCit7CisgICAgQVNTRVJUKHBlZWsoKS5nZXRCbG9ja1R5cGUoKSA9PSBDU1NQYXJz
ZXJUb2tlbjo6QmxvY2tTdGFydCk7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4qIHN0YXJ0ID0g
JnBlZWsoKSArIDE7CisgICAgdW5zaWduZWQgbmVzdGluZ0xldmVsID0gMDsKKyAgICBkbyB7Cisg
ICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IGNvbnN1bWUoKTsKKyAgICAgICAg
aWYgKHRva2VuLmdldEJsb2NrVHlwZSgpID09IENTU1BhcnNlclRva2VuOjpCbG9ja1N0YXJ0KQor
ICAgICAgICAgICAgbmVzdGluZ0xldmVsKys7CisgICAgICAgIGVsc2UgaWYgKHRva2VuLmdldEJs
b2NrVHlwZSgpID09IENTU1BhcnNlclRva2VuOjpCbG9ja0VuZCkKKyAgICAgICAgICAgIG5lc3Rp
bmdMZXZlbC0tOworICAgIH0gd2hpbGUgKG5lc3RpbmdMZXZlbCAmJiBtX2ZpcnN0IDwgbV9sYXN0
KTsKKworICAgIGlmIChuZXN0aW5nTGV2ZWwpCisgICAgICAgIHJldHVybiBtYWtlU3ViUmFuZ2Uo
c3RhcnQsIG1fZmlyc3QpOyAvLyBFbmRlZCBhdCBFT0YKKyAgICByZXR1cm4gbWFrZVN1YlJhbmdl
KHN0YXJ0LCBtX2ZpcnN0IC0gMSk7Cit9CisKK3ZvaWQgQ1NTUGFyc2VyVG9rZW5SYW5nZTo6Y29u
c3VtZUNvbXBvbmVudFZhbHVlKCkKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBnb2luZyB0byBk
byBtdWx0aXBsZSBwYXNzZXMgb3ZlciBsYXJnZSBzZWN0aW9ucyBvZiBhIHN0eWxlc2hlZXQuCisg
ICAgLy8gV2Ugc2hvdWxkIGNvbnNpZGVyIG9wdGltaXNpbmcgdGhpcyBieSBwcmVjb21wdXRpbmcg
d2hlcmUgZWFjaCBibG9jayBlbmRzLgorICAgIHVuc2lnbmVkIG5lc3RpbmdMZXZlbCA9IDA7Cisg
ICAgZG8geworICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSBjb25zdW1lKCk7
CisgICAgICAgIGlmICh0b2tlbi5nZXRCbG9ja1R5cGUoKSA9PSBDU1NQYXJzZXJUb2tlbjo6Qmxv
Y2tTdGFydCkKKyAgICAgICAgICAgIG5lc3RpbmdMZXZlbCsrOworICAgICAgICBlbHNlIGlmICh0
b2tlbi5nZXRCbG9ja1R5cGUoKSA9PSBDU1NQYXJzZXJUb2tlbjo6QmxvY2tFbmQpCisgICAgICAg
ICAgICBuZXN0aW5nTGV2ZWwtLTsKKyAgICB9IHdoaWxlIChuZXN0aW5nTGV2ZWwgJiYgbV9maXJz
dCA8IG1fbGFzdCk7Cit9CisKK1N0cmluZyBDU1NQYXJzZXJUb2tlblJhbmdlOjpzZXJpYWxpemUo
KSBjb25zdAoreworICAgIC8vIFdlJ3JlIHN1cHBvc2VkIHRvIGluc2VydCBjb21tZW50cyBiZXR3
ZWVuIGNlcnRhaW4gcGFpcnMgb2YgdG9rZW4gdHlwZXMKKyAgICAvLyBhcyBwZXIgc3BlYywgYnV0
IHNpbmNlIHRoaXMgaXMgY3VycmVudGx5IG9ubHkgdXNlZCBmb3IgQHN1cHBvcnRzIENTU09NCisg
ICAgLy8gd2UganVzdCBnZXQgdGhlc2UgY2FzZXMgd3JvbmcgYW5kIGF2b2lkIHRoZSBhZGRpdGlv
bmFsIGNvbXBsZXhpdHkuCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGZvciAoY29u
c3QgQ1NTUGFyc2VyVG9rZW4qIGl0ID0gbV9maXJzdDsgaXQgPCBtX2xhc3Q7ICsraXQpCisgICAg
ICAgIGl0LT5zZXJpYWxpemUoYnVpbGRlcik7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJUb2tlblJhbmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlblJhbmdlLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlblJhbmdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMDUgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisv
LyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisjaWZuZGVmIENTU1BhcnNlclRva2VuUmFuZ2VfaAorI2RlZmluZSBDU1NQ
YXJzZXJUb2tlblJhbmdlX2gKKworI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuLmgiCisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEEgQ1NTUGFyc2Vy
VG9rZW5SYW5nZSBpcyBhbiBpdGVyYXRvciBvdmVyIGEgc3VicmFuZ2Ugb2YgYSB2ZWN0b3Igb2Yg
Q1NTUGFyc2VyVG9rZW5zLgorLy8gQWNjZXNzaW5nIG91dHNpZGUgb2YgdGhlIHJhbmdlIHdpbGwg
cmV0dXJuIGFuIGVuZGxlc3Mgc3RyZWFtIG9mIEVPRiB0b2tlbnMuCisvLyBUaGlzIGNsYXNzIHJl
ZmVycyB0byBoYWxmLW9wZW4gaW50ZXJ2YWxzIFtmaXJzdCwgbGFzdCkuCitjbGFzcyBDU1NQYXJz
ZXJUb2tlblJhbmdlIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQnVmZmVy
PgorICAgIENTU1BhcnNlclRva2VuUmFuZ2UoY29uc3QgVmVjdG9yPENTU1BhcnNlclRva2VuLCBp
bmxpbmVCdWZmZXI+JiB2ZWN0b3IpCisgICAgICAgIDogbV9maXJzdCh2ZWN0b3IuYmVnaW4oKSkK
KyAgICAgICAgLCBtX2xhc3QodmVjdG9yLmVuZCgpKQorICAgIHsKKyAgICB9CisKKyAgICAvLyBU
aGlzIHNob3VsZCBiZSBjYWxsZWQgb24gYSByYW5nZSB3aXRoIHRva2VucyByZXR1cm5lZCBieSB0
aGF0IHJhbmdlLgorICAgIENTU1BhcnNlclRva2VuUmFuZ2UgbWFrZVN1YlJhbmdlKGNvbnN0IENT
U1BhcnNlclRva2VuKiBmaXJzdCwgY29uc3QgQ1NTUGFyc2VyVG9rZW4qIGxhc3QpIGNvbnN0Owor
CisgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3QgPT0gbV9sYXN0OyB9Cisg
ICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4qIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdDsgfQor
CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHBlZWsodW5zaWduZWQgb2Zmc2V0ID0gMCkgY29u
c3QKKyAgICB7CisgICAgICAgIGlmIChtX2ZpcnN0ICsgb2Zmc2V0ID49IG1fbGFzdCkKKyAgICAg
ICAgICAgIHJldHVybiBlb2ZUb2tlbigpOworICAgICAgICByZXR1cm4gKihtX2ZpcnN0ICsgb2Zm
c2V0KTsKKyAgICB9CisKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgY29uc3VtZSgpCisgICAg
eworICAgICAgICBpZiAobV9maXJzdCA9PSBtX2xhc3QpCisgICAgICAgICAgICByZXR1cm4gZW9m
VG9rZW4oKTsKKyAgICAgICAgcmV0dXJuICptX2ZpcnN0Kys7CisgICAgfQorCisgICAgY29uc3Qg
Q1NTUGFyc2VyVG9rZW4mIGNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkKKyAgICB7CisgICAg
ICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiByZXN1bHQgPSBjb25zdW1lKCk7CisgICAgICAgIGNv
bnN1bWVXaGl0ZXNwYWNlKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAg
Ly8gVGhlIHJldHVybmVkIHJhbmdlIGRvZXNuJ3QgaW5jbHVkZSB0aGUgYnJhY2tldHMKKyAgICBD
U1NQYXJzZXJUb2tlblJhbmdlIGNvbnN1bWVCbG9jaygpOworCisgICAgdm9pZCBjb25zdW1lQ29t
cG9uZW50VmFsdWUoKTsKKworICAgIHZvaWQgY29uc3VtZVdoaXRlc3BhY2UoKQorICAgIHsKKyAg
ICAgICAgd2hpbGUgKHBlZWsoKS50eXBlKCkgPT0gV2hpdGVzcGFjZVRva2VuKQorICAgICAgICAg
ICAgKyttX2ZpcnN0OworICAgIH0KKworICAgIFN0cmluZyBzZXJpYWxpemUoKSBjb25zdDsKKwor
ICAgIGNvbnN0IENTU1BhcnNlclRva2VuKiBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3Q7
IH0KKworICAgIHN0YXRpYyBDU1NQYXJzZXJUb2tlbiYgZW9mVG9rZW4oKTsKKworcHJpdmF0ZToK
KyAgICBDU1NQYXJzZXJUb2tlblJhbmdlKGNvbnN0IENTU1BhcnNlclRva2VuKiBmaXJzdCwgY29u
c3QgQ1NTUGFyc2VyVG9rZW4qIGxhc3QpCisgICAgICAgIDogbV9maXJzdChmaXJzdCkKKyAgICAg
ICAgLCBtX2xhc3QobGFzdCkKKyAgICB7IH0KKworICAgIGNvbnN0IENTU1BhcnNlclRva2VuKiBt
X2ZpcnN0OworICAgIGNvbnN0IENTU1BhcnNlclRva2VuKiBtX2xhc3Q7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NQYXJzZXJUb2tlblJhbmdlX2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDc4MyBAQAorLy8gQ29weXJpZ2h0IDIw
MTUgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8g
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24u
CisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNlci5oIgorCisjaW5jbHVkZSAiQ1NTQmFzaWNTaGFwZXMu
aCIKKyNpbmNsdWRlICJDU1NCb3JkZXJJbWFnZS5oIgorI2luY2x1ZGUgIkNTU0NvbnRlbnREaXN0
cmlidXRpb25WYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKKy8vIEZJ
WE1FLU5FV1BBUlNFUiAjaW5jbHVkZSAiQ1NTQ3VzdG9tSWRlbnRWYWx1ZS5oIgorI2luY2x1ZGUg
IkNTU0ZvbnRGYWNlU3JjVmFsdWUuaCIKKy8vIEZJWE1FLU5FV1BBUlNFUiAjaW5jbHVkZSAiQ1NT
Rm9udEZhbWlseVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTRm9udEZlYXR1cmVWYWx1ZS5oIgorI2lu
Y2x1ZGUgIkNTU0Z1bmN0aW9uVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NHcmlkQXV0b1JlcGVhdFZh
bHVlLmgiCisjaW5jbHVkZSAiQ1NTR3JpZExpbmVOYW1lc1ZhbHVlLmgiCisjaW5jbHVkZSAiQ1NT
R3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0luaGVyaXRlZFZhbHVlLmgi
CisjaW5jbHVkZSAiQ1NTSW5pdGlhbFZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyRmFzdFBh
dGhzLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VySWRpb21zLmgiCisvLyBGSVhNRS1ORVdQQVJTRVIg
I2luY2x1ZGUgIkNTU1BhdGhWYWx1ZS5oIgorLy8gRklYTUUtTkVXUEFSU0VSICNpbmNsdWRlICJD
U1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1
ZU1hcHBpbmdzLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmgiCisvLyBG
SVhNRS1ORVdQQVJTRVIgI2luY2x1ZGUgIkNTU1F1YWRWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1Jl
ZmxlY3RWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1NoYWRvd1ZhbHVlLmgiCisvLyBGSVhNRS1ORVdQ
QVJTRVIgI2luY2x1ZGUgIkNTU1N0cmluZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTVGltaW5nRnVu
Y3Rpb25WYWx1ZS5oIgorLy8gRklYTUUtTkVXUEFSU0VSICNpbmNsdWRlICJDU1NVUklWYWx1ZS5o
IgorI2luY2x1ZGUgIkNTU1VuaWNvZGVSYW5nZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTVW5zZXRW
YWx1ZS5oIgorLy8gRklYTUUtTkVXUEFSU0VSICNpbmNsdWRlICJDU1NWYWx1ZVBhaXIuaCIKKy8v
IEZJWE1FLU5FV1BBUlNFUiAjaW5jbHVkZSAiQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oIgor
Ly8gRklYTUUtTkVXUEFSU0VSICNpbmNsdWRlICJDU1NWYXJpYWJsZVBhcnNlci5oIgorI2luY2x1
ZGUgIkNvdW50ZXIuaCIKKyNpbmNsdWRlICJGb250RmFjZS5oIgorI2luY2x1ZGUgIkhhc2hUb29s
cy5oIgorI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oIgorI2luY2x1ZGUgIlNWR1BhdGhVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJTdHls
ZVByb3BlcnR5U2hvcnRoYW5kLmgiCisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgYm9v
bCBoYXNQcmVmaXgoY29uc3QgY2hhciogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IGNo
YXIqIHByZWZpeCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgaWYgKCFwcmVmaXhbaV0pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgaWYgKHN0cmluZ1tpXSAhPSBwcmVmaXhbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworI2lmIFBMQVRGT1JNKElPUykKK3N0
YXRpYyB2b2lkIGNzc1Byb3BlcnR5TmFtZUlPU0FsaWFzaW5nKGNvbnN0IGNoYXIqIHByb3BlcnR5
TmFtZSwgY29uc3QgY2hhciomIHByb3BlcnR5TmFtZUFsaWFzLCB1bnNpZ25lZCYgbmV3TGVuZ3Ro
KQoreworICAgIGlmICghc3RyY21wKHByb3BlcnR5TmFtZSwgIi13ZWJraXQtaHlwaGVuYXRlLWxv
Y2FsZSIpKSB7CisgICAgICAgIC8vIFdvcmtlZCBpbiBpT1MgNC4yLgorICAgICAgICBzdGF0aWMg
Y29uc3QgY2hhciB3ZWJraXRMb2NhbGVbXSA9ICItd2Via2l0LWxvY2FsZSI7CisgICAgICAgIHBy
b3BlcnR5TmFtZUFsaWFzID0gd2Via2l0TG9jYWxlOworICAgICAgICBuZXdMZW5ndGggPSBzdHJs
ZW4od2Via2l0TG9jYWxlKTsKKyAgICB9Cit9CisjZW5kaWYKKwordGVtcGxhdGUgPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+CitzdGF0aWMgQ1NTUHJvcGVydHlJRCBjc3NQcm9wZXJ0eUlEKGNvbnN0
IENoYXJhY3RlclR5cGUqIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGNo
YXIgYnVmZmVyW21heENTU1Byb3BlcnR5TmFtZUxlbmd0aCArIDEgKyAxXTsgLy8gMSB0byB0dXJu
ICJhcHBsZSIvImtodG1sIiBpbnRvICJ3ZWJraXQiLCAxIGZvciBudWxsIGNoYXJhY3RlcgorICAg
IAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0gbGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
Q2hhcmFjdGVyVHlwZSBjID0gcHJvcGVydHlOYW1lW2ldOworICAgICAgICBpZiAoIWMgfHwgYyA+
PSAweDdGKQorICAgICAgICAgICAgcmV0dXJuIENTU1Byb3BlcnR5SW52YWxpZDsgLy8gaWxsZWdh
bCBjaGFyYWN0ZXIKKyAgICAgICAgYnVmZmVyW2ldID0gdG9BU0NJSUxvd2VyKGMpOworICAgIH0K
KyAgICBidWZmZXJbbGVuZ3RoXSA9ICdcMCc7CisgICAgCisgICAgY29uc3QgY2hhciogbmFtZSA9
IGJ1ZmZlcjsKKyAgICBpZiAoYnVmZmVyWzBdID09ICctJykgeworI2lmIEVOQUJMRShMRUdBQ1lf
Q1NTX1ZFTkRPUl9QUkVGSVhFUykKKyAgICAgICAgLy8gSWYgdGhlIHByZWZpeCBpcyAtYXBwbGUt
IG9yIC1raHRtbC0sIGNoYW5nZSBpdCB0byAtd2Via2l0LS4KKyAgICAgICAgLy8gVGhpcyBtYWtl
cyB0aGUgc3RyaW5nIG9uZSBjaGFyYWN0ZXIgbG9uZ2VyLgorICAgICAgICBpZiAoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5sZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0Vu
YWJsZWQoKQorICAgICAgICAgICAgJiYgKGhhc1ByZWZpeChidWZmZXIsIGxlbmd0aCwgIi1hcHBs
ZS0iKSB8fCBoYXNQcmVmaXgoYnVmZmVyLCBsZW5ndGgsICIta2h0bWwtIikpKSB7CisgICAgICAg
ICAgICBtZW1tb3ZlKGJ1ZmZlciArIDcsIGJ1ZmZlciArIDYsIGxlbmd0aCArIDEgLSA2KTsKKyAg
ICAgICAgICAgIG1lbWNweShidWZmZXIsICItd2Via2l0IiwgNyk7CisgICAgICAgICAgICArK2xl
bmd0aDsKKyAgICAgICAgfQorI2VuZGlmCisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICBjc3NQ
cm9wZXJ0eU5hbWVJT1NBbGlhc2luZyhidWZmZXIsIG5hbWUsIGxlbmd0aCk7CisjZW5kaWYKKyAg
ICB9CisgICAgCisgICAgY29uc3QgUHJvcGVydHkqIGhhc2hUYWJsZUVudHJ5ID0gZmluZFByb3Bl
cnR5KG5hbWUsIGxlbmd0aCk7CisgICAgcmV0dXJuIGhhc2hUYWJsZUVudHJ5ID8gc3RhdGljX2Nh
c3Q8Q1NTUHJvcGVydHlJRD4oaGFzaFRhYmxlRW50cnktPmlkKSA6IENTU1Byb3BlcnR5SW52YWxp
ZDsKK30KKworc3RhdGljIGJvb2wgaXNBcHBsZUxlZ2FjeUNzc1ZhbHVlS2V5d29yZChjb25zdCBj
aGFyKiB2YWx1ZUtleXdvcmQsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBzdGF0aWMgY29uc3Qg
Y2hhciBhcHBsZVByZWZpeFtdID0gIi1hcHBsZS0iOworICAgIHN0YXRpYyBjb25zdCBjaGFyIGFw
cGxlU3lzdGVtUHJlZml4W10gPSAiLWFwcGxlLXN5c3RlbSI7CisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIGFwcGxlV2lyZWxlc3NQbGF5YmFja1RhcmdldEFjdGl2ZSA9IGdldFZhbHVlTmFtZShDU1NW
YWx1ZUFwcGxlV2lyZWxlc3NQbGF5YmFja1RhcmdldEFjdGl2ZSk7CisgICAgCisgICAgcmV0dXJu
IGhhc1ByZWZpeCh2YWx1ZUtleXdvcmQsIGxlbmd0aCwgYXBwbGVQcmVmaXgpCisgICAgJiYgIWhh
c1ByZWZpeCh2YWx1ZUtleXdvcmQsIGxlbmd0aCwgYXBwbGVTeXN0ZW1QcmVmaXgpCisgICAgJiYg
IVdURjo6ZXF1YWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHZhbHVlS2V5d29yZCks
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihhcHBsZVdpcmVsZXNzUGxheWJhY2tUYXJn
ZXRBY3RpdmUpLCBsZW5ndGgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4KK3N0YXRpYyBDU1NWYWx1ZUlEIGNzc1ZhbHVlS2V5d29yZElEKGNvbnN0IENoYXJhY3RlclR5
cGUqIHZhbHVlS2V5d29yZCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGNoYXIgYnVmZmVyW21h
eENTU1ZhbHVlS2V5d29yZExlbmd0aCArIDEgKyAxXTsgLy8gMSB0byB0dXJuICJhcHBsZSIvImto
dG1sIiBpbnRvICJ3ZWJraXQiLCAxIGZvciBudWxsIGNoYXJhY3RlcgorICAgIAorICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgIT0gbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgQ2hhcmFjdGVyVHlw
ZSBjID0gdmFsdWVLZXl3b3JkW2ldOworICAgICAgICBpZiAoIWMgfHwgYyA+PSAweDdGKQorICAg
ICAgICAgICAgcmV0dXJuIENTU1ZhbHVlSW52YWxpZDsgLy8gaWxsZWdhbCBrZXl3b3JkLgorICAg
ICAgICBidWZmZXJbaV0gPSBXVEY6OnRvQVNDSUlMb3dlcihjKTsKKyAgICB9CisgICAgYnVmZmVy
W2xlbmd0aF0gPSAnXDAnOworICAgIAorICAgIGlmIChidWZmZXJbMF0gPT0gJy0nKSB7CisgICAg
ICAgIC8vIElmIHRoZSBwcmVmaXggaXMgLWFwcGxlLSBvciAta2h0bWwtLCBjaGFuZ2UgaXQgdG8g
LXdlYmtpdC0uCisgICAgICAgIC8vIFRoaXMgbWFrZXMgdGhlIHN0cmluZyBvbmUgY2hhcmFjdGVy
IGxvbmdlci4KKyAgICAgICAgLy8gT24gaU9TIHdlIGRvbid0IHdhbnQgdG8gY2hhbmdlIHZhbHVl
cyBzdGFydGluZyB3aXRoIC1hcHBsZS1zeXN0ZW0gdG8gLXdlYmtpdC1zeXN0ZW0uCisgICAgICAg
IC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBtYW5nbGluZyB3aXRob3V0IGJyZWFraW5nIHRoZSB3ZWIu
CisgICAgICAgIGlmIChpc0FwcGxlTGVnYWN5Q3NzVmFsdWVLZXl3b3JkKGJ1ZmZlciwgbGVuZ3Ro
KSB8fCBoYXNQcmVmaXgoYnVmZmVyLCBsZW5ndGgsICIta2h0bWwtIikpIHsKKyAgICAgICAgICAg
IG1lbW1vdmUoYnVmZmVyICsgNywgYnVmZmVyICsgNiwgbGVuZ3RoICsgMSAtIDYpOworICAgICAg
ICAgICAgbWVtY3B5KGJ1ZmZlciwgIi13ZWJraXQiLCA3KTsKKyAgICAgICAgICAgICsrbGVuZ3Ro
OworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGNvbnN0IFZhbHVlKiBoYXNoVGFibGVFbnRy
eSA9IGZpbmRWYWx1ZShidWZmZXIsIGxlbmd0aCk7CisgICAgcmV0dXJuIGhhc2hUYWJsZUVudHJ5
ID8gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJRD4oaGFzaFRhYmxlRW50cnktPmlkKSA6IENTU1ZhbHVl
SW52YWxpZDsKK30KKworQ1NTVmFsdWVJRCBjc3NWYWx1ZUtleXdvcmRJRChTdHJpbmdWaWV3IHN0
cmluZykKK3sKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgaWYg
KCFsZW5ndGgpCisgICAgICAgIHJldHVybiBDU1NWYWx1ZUludmFsaWQ7CisgICAgaWYgKGxlbmd0
aCA+IG1heENTU1ZhbHVlS2V5d29yZExlbmd0aCkKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVlSW52
YWxpZDsKKyAgICAKKyAgICByZXR1cm4gc3RyaW5nLmlzOEJpdCgpID8gY3NzVmFsdWVLZXl3b3Jk
SUQoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCkgOiBjc3NWYWx1ZUtleXdvcmRJRChzdHJp
bmcuY2hhcmFjdGVyczE2KCksIGxlbmd0aCk7Cit9CisKK0NTU1Byb3BlcnR5SUQgdW5yZXNvbHZl
ZENTU1Byb3BlcnR5SUQoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gc3RyaW5nLmxlbmd0aCgpOworICAgIAorICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1
cm4gQ1NTUHJvcGVydHlJbnZhbGlkOworICAgIGlmIChsZW5ndGggPiBtYXhDU1NQcm9wZXJ0eU5h
bWVMZW5ndGgpCisgICAgICAgIHJldHVybiBDU1NQcm9wZXJ0eUludmFsaWQ7CisgICAgCisgICAg
cmV0dXJuIHN0cmluZy5pczhCaXQoKSA/IGNzc1Byb3BlcnR5SUQoc3RyaW5nLmNoYXJhY3RlcnM4
KCksIGxlbmd0aCkgOiBjc3NQcm9wZXJ0eUlEKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3Ro
KTsKK30KKyAgICAKKy8vIEZJWE1FLU5FV1BBUlNFUgorLy8gQ29tbWVudCBvdXQgcHJvcGVydHkg
cGFyc2luZyBmb3Igbm93LgorLyoKK3VzaW5nIG5hbWVzcGFjZSBDU1NQcm9wZXJ0eVBhcnNlckhl
bHBlcnM7CisKKworQ1NTUHJvcGVydHlQYXJzZXI6OkNTU1Byb3BlcnR5UGFyc2VyKGNvbnN0IENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLAorICAgIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNv
bnRleHQsIFZlY3RvcjxDU1NQcm9wZXJ0eSwgMjU2PiogcGFyc2VkUHJvcGVydGllcykKKyAgICA6
IG1fcmFuZ2UocmFuZ2UpCisgICAgLCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fcGFyc2Vk
UHJvcGVydGllcyhwYXJzZWRQcm9wZXJ0aWVzKQoreworICAgIG1fcmFuZ2UuY29uc3VtZVdoaXRl
c3BhY2UoKTsKK30KKwordm9pZCBDU1NQcm9wZXJ0eVBhcnNlcjo6YWRkUHJvcGVydHkoQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eSwgQ1NTUHJvcGVydHlJRCBjdXJyZW50U2hvcnRoYW5kLCBjb25zdCBD
U1NWYWx1ZSYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBib29sIGltcGxpY2l0KQoreworICAgIEFT
U0VSVCghaXNQcm9wZXJ0eUFsaWFzKHByb3BlcnR5KSk7CisKKyAgICBpbnQgc2hvcnRoYW5kSW5k
ZXggPSAwOworICAgIGJvb2wgc2V0RnJvbVNob3J0aGFuZCA9IGZhbHNlOworCisgICAgaWYgKGN1
cnJlbnRTaG9ydGhhbmQpIHsKKyAgICAgICAgVmVjdG9yPFN0eWxlUHJvcGVydHlTaG9ydGhhbmQs
IDQ+IHNob3J0aGFuZHM7CisgICAgICAgIGdldE1hdGNoaW5nU2hvcnRoYW5kc0ZvckxvbmdoYW5k
KHByb3BlcnR5LCAmc2hvcnRoYW5kcyk7CisgICAgICAgIHNldEZyb21TaG9ydGhhbmQgPSB0cnVl
OworICAgICAgICBpZiAoc2hvcnRoYW5kcy5zaXplKCkgPiAxKQorICAgICAgICAgICAgc2hvcnRo
YW5kSW5kZXggPSBpbmRleE9mU2hvcnRoYW5kRm9yTG9uZ2hhbmQoY3VycmVudFNob3J0aGFuZCwg
c2hvcnRoYW5kcyk7CisgICAgfQorCisgICAgbV9wYXJzZWRQcm9wZXJ0aWVzLT5hcHBlbmQoQ1NT
UHJvcGVydHkocHJvcGVydHksIHZhbHVlLCBpbXBvcnRhbnQsIHNldEZyb21TaG9ydGhhbmQsIHNo
b3J0aGFuZEluZGV4LCBpbXBsaWNpdCkpOworfQorCit2b2lkIENTU1Byb3BlcnR5UGFyc2VyOjph
ZGRFeHBhbmRlZFByb3BlcnR5Rm9yVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3Qg
Q1NTVmFsdWUmIHZhbHVlLCBib29sIGltcG9ydGFudCkKK3sKKyAgICBjb25zdCBTdHlsZVByb3Bl
cnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQgPSBzaG9ydGhhbmRGb3JQcm9wZXJ0eShwcm9wZXJ0eSk7
CisgICAgdW5zaWduZWQgc2hvcnRoYW5kTGVuZ3RoID0gc2hvcnRoYW5kLmxlbmd0aCgpOworICAg
IEFTU0VSVChzaG9ydGhhbmRMZW5ndGgpOworICAgIGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdo
YW5kcyA9IHNob3J0aGFuZC5wcm9wZXJ0aWVzKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHNob3J0aGFuZExlbmd0aDsgKytpKQorICAgICAgICBhZGRQcm9wZXJ0eShsb25naGFuZHNb
aV0sIHByb3BlcnR5LCB2YWx1ZSwgaW1wb3J0YW50KTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBh
cnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0eSwgYm9vbCBp
bXBvcnRhbnQsCisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENT
U1BhcnNlckNvbnRleHQmIGNvbnRleHQsCisgICAgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+JiBw
YXJzZWRQcm9wZXJ0aWVzLCBTdHlsZVJ1bGU6OlR5cGUgcnVsZVR5cGUpCit7CisgICAgaW50IHBh
cnNlZFByb3BlcnRpZXNTaXplID0gcGFyc2VkUHJvcGVydGllcy5zaXplKCk7CisKKyAgICBDU1NQ
cm9wZXJ0eVBhcnNlciBwYXJzZXIocmFuZ2UsIGNvbnRleHQsICZwYXJzZWRQcm9wZXJ0aWVzKTsK
KyAgICBDU1NQcm9wZXJ0eUlEIHJlc29sdmVkUHJvcGVydHkgPSByZXNvbHZlQ1NTUHJvcGVydHlJ
RCh1bnJlc29sdmVkUHJvcGVydHkpOworICAgIGJvb2wgcGFyc2VTdWNjZXNzOworCisgICAgaWYg
KHJ1bGVUeXBlID09IFN0eWxlUnVsZTo6Vmlld3BvcnQpIHsKKyAgICAgICAgcGFyc2VTdWNjZXNz
ID0gKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc1ZpZXdwb3J0RW5hYmxlZCgpIHx8IGlzVUFT
aGVldEJlaGF2aW9yKGNvbnRleHQubW9kZSgpKSkKKyAgICAgICAgICAgICYmIHBhcnNlci5wYXJz
ZVZpZXdwb3J0RGVzY3JpcHRvcihyZXNvbHZlZFByb3BlcnR5LCBpbXBvcnRhbnQpOworICAgIH0g
ZWxzZSBpZiAocnVsZVR5cGUgPT0gU3R5bGVSdWxlOjpGb250RmFjZSkgeworICAgICAgICBwYXJz
ZVN1Y2Nlc3MgPSBwYXJzZXIucGFyc2VGb250RmFjZURlc2NyaXB0b3IocmVzb2x2ZWRQcm9wZXJ0
eSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcGFyc2VTdWNjZXNzID0gcGFyc2VyLnBhcnNlVmFs
dWVTdGFydCh1bnJlc29sdmVkUHJvcGVydHksIGltcG9ydGFudCk7CisgICAgfQorCisgICAgLy8g
VGhpcyBkb2Vzbid0IGNvdW50IFVBIHN0eWxlIHNoZWV0cworICAgIGlmIChwYXJzZVN1Y2Nlc3Mg
JiYgY29udGV4dC51c2VDb3VudGVyKCkpCisgICAgICAgIGNvbnRleHQudXNlQ291bnRlcigpLT5j
b3VudChjb250ZXh0Lm1vZGUoKSwgdW5yZXNvbHZlZFByb3BlcnR5KTsKKworICAgIGlmICghcGFy
c2VTdWNjZXNzKQorICAgICAgICBwYXJzZWRQcm9wZXJ0aWVzLnNocmluayhwYXJzZWRQcm9wZXJ0
aWVzU2l6ZSk7CisKKyAgICByZXR1cm4gcGFyc2VTdWNjZXNzOworfQorCitjb25zdCBDU1NWYWx1
ZSogQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlU2luZ2xlVmFsdWUoCisgICAgQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eSwgY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1Bh
cnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ1NTUHJvcGVydHlQYXJzZXIgcGFyc2VyKHJh
bmdlLCBjb250ZXh0LCBudWxscHRyKTsKKyAgICBjb25zdCBDU1NWYWx1ZSogdmFsdWUgPSBwYXJz
ZXIucGFyc2VTaW5nbGVWYWx1ZShwcm9wZXJ0eSk7CisgICAgaWYgKCF2YWx1ZSB8fCAhcGFyc2Vy
Lm1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHZh
bHVlOworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVZhbHVlU3RhcnQoQ1NTUHJv
cGVydHlJRCB1bnJlc29sdmVkUHJvcGVydHksIGJvb2wgaW1wb3J0YW50KQoreworICAgIGlmIChj
b25zdW1lQ1NTV2lkZUtleXdvcmQodW5yZXNvbHZlZFByb3BlcnR5LCBpbXBvcnRhbnQpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgIENTU1BhcnNlclRva2VuUmFuZ2Ugb3JpZ2luYWxSYW5n
ZSA9IG1fcmFuZ2U7CisgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkID0gcmVzb2x2ZUNTU1By
b3BlcnR5SUQodW5yZXNvbHZlZFByb3BlcnR5KTsKKyAgICBib29sIGlzU2hvcnRoYW5kID0gaXNT
aG9ydGhhbmRQcm9wZXJ0eShwcm9wZXJ0eUlkKTsKKworICAgIGlmIChpc1Nob3J0aGFuZCkgewor
ICAgICAgICAvLyBWYXJpYWJsZSByZWZlcmVuY2VzIHdpbGwgZmFpbCB0byBwYXJzZSBoZXJlIGFu
ZCB3aWxsIGZhbGwgb3V0IHRvIHRoZSB2YXJpYWJsZSByZWYgcGFyc2VyIGJlbG93LgorICAgICAg
ICBpZiAocGFyc2VTaG9ydGhhbmQodW5yZXNvbHZlZFByb3BlcnR5LCBpbXBvcnRhbnQpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGNvbnN0IENT
U1ZhbHVlKiBwYXJzZWRWYWx1ZSA9IHBhcnNlU2luZ2xlVmFsdWUodW5yZXNvbHZlZFByb3BlcnR5
KSkgeworICAgICAgICAgICAgaWYgKG1fcmFuZ2UuYXRFbmQoKSkgeworICAgICAgICAgICAgICAg
IGFkZFByb3BlcnR5KHByb3BlcnR5SWQsIENTU1Byb3BlcnR5SW52YWxpZCwgKnBhcnNlZFZhbHVl
LCBpbXBvcnRhbnQpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNz
c1ZhcmlhYmxlc0VuYWJsZWQoKSAmJiBDU1NWYXJpYWJsZVBhcnNlcjo6Y29udGFpbnNWYWxpZFZh
cmlhYmxlUmVmZXJlbmNlcyhvcmlnaW5hbFJhbmdlKSkgeworICAgICAgICBDU1NWYXJpYWJsZVJl
ZmVyZW5jZVZhbHVlKiB2YXJpYWJsZSA9IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6OmNyZWF0
ZShDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZShvcmlnaW5hbFJhbmdlKSk7CisKKyAgICAgICAgaWYg
KGlzU2hvcnRoYW5kKSB7CisgICAgICAgICAgICBjb25zdCBDU1NQZW5kaW5nU3Vic3RpdHV0aW9u
VmFsdWUmIHBlbmRpbmdWYWx1ZSA9ICpDU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWU6OmNyZWF0
ZShwcm9wZXJ0eUlkLCB2YXJpYWJsZSk7CisgICAgICAgICAgICBhZGRFeHBhbmRlZFByb3BlcnR5
Rm9yVmFsdWUocHJvcGVydHlJZCwgcGVuZGluZ1ZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydHlJZCwgQ1NTUHJvcGVydHlJ
bnZhbGlkLCAqdmFyaWFibGUsIGltcG9ydGFudCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorIAorYm9vbCBDU1NQcm9wZXJ0
eVBhcnNlcjo6Y29uc3VtZUNTU1dpZGVLZXl3b3JkKENTU1Byb3BlcnR5SUQgdW5yZXNvbHZlZFBy
b3BlcnR5LCBib29sIGltcG9ydGFudCkKK3sKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdl
Q29weSA9IG1fcmFuZ2U7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlQ29weS5jb25zdW1lSW5j
bHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgaWYgKCFyYW5nZUNvcHkuYXRFbmQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1NTVmFsdWUqIHZhbHVlID0gbnVsbHB0cjsKKyAg
ICBpZiAoaWQgPT0gQ1NTVmFsdWVJbml0aWFsKQorICAgICAgICB2YWx1ZSA9IENTU0luaXRpYWxW
YWx1ZTo6Y3JlYXRlKCk7CisgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVJbmhlcml0KQorICAg
ICAgICB2YWx1ZSA9IENTU0luaGVyaXRlZFZhbHVlOjpjcmVhdGUoKTsKKyAgICBlbHNlIGlmIChp
ZCA9PSBDU1NWYWx1ZVVuc2V0KQorICAgICAgICB2YWx1ZSA9IENTU1Vuc2V0VmFsdWU6OmNyZWF0
ZSgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eSA9IHJlc29sdmVDU1NQcm9wZXJ0eUlEKHVucmVzb2x2ZWRQcm9wZXJ0eSk7Cisg
ICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kID0gc2hvcnRoYW5kRm9y
UHJvcGVydHkocHJvcGVydHkpOworICAgIGlmICghc2hvcnRoYW5kLmxlbmd0aCgpKSB7CisgICAg
ICAgIGlmIChDU1NQcm9wZXJ0eU1ldGFkYXRhOjppc0Rlc2NyaXB0b3JPbmx5KHVucmVzb2x2ZWRQ
cm9wZXJ0eSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFkZFByb3BlcnR5
KHByb3BlcnR5LCBDU1NQcm9wZXJ0eUludmFsaWQsICp2YWx1ZSwgaW1wb3J0YW50KTsKKyAgICB9
IGVsc2UgeworICAgICAgICBhZGRFeHBhbmRlZFByb3BlcnR5Rm9yVmFsdWUocHJvcGVydHksICp2
YWx1ZSwgaW1wb3J0YW50KTsKKyAgICB9CisgICAgbV9yYW5nZSA9IHJhbmdlQ29weTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIENTU1ZhbHVlTGlzdCogY29uc3VtZVRyYW5zZm9ybU9y
aWdpbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJN
b2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzKQoreworICAgIENTU1ZhbHVlKiByZXN1bHRYID0g
bnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogcmVzdWx0WSA9IG51bGxwdHI7CisgICAgaWYgKGNvbnN1
bWVPbmVPclR3b1ZhbHVlZFBvc2l0aW9uKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcywg
cmVzdWx0WCwgcmVzdWx0WSkpIHsKKyAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICBsaXN0LT5hcHBlbmQoKnJl
c3VsdFgpOworICAgICAgICBsaXN0LT5hcHBlbmQoKnJlc3VsdFkpOworICAgICAgICBDU1NWYWx1
ZSogcmVzdWx0WiA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFu
Z2VBbGwpOworICAgICAgICBpZiAoIXJlc3VsdFopCisgICAgICAgICAgICByZXN1bHRaID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBp
eGVscyk7CisgICAgICAgIGxpc3QtPmFwcGVuZCgqcmVzdWx0Wik7CisgICAgICAgIHJldHVybiBs
aXN0OworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworLy8gTWV0aG9kcyBmb3IgY29u
c3VtaW5nIG5vbi1zaG9ydGhhbmQgcHJvcGVydGllcyBzdGFydHMgaGVyZS4KK3N0YXRpYyBDU1NW
YWx1ZSogY29uc3VtZVdpbGxDaGFuZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7Cisg
ICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgcmV0dXJu
IGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAvLyBFdmVyeSBjb21tYS1zZXBh
cmF0ZWQgbGlzdCBvZiBpZGVudGlmaWVycyBpcyBhIHZhbGlkIHdpbGwtY2hhbmdlIHZhbHVlLAor
ICAgIC8vIHVubGVzcyB0aGUgbGlzdCBpbmNsdWRlcyBhbiBleHBsaWNpdGx5IGRpc2FsbG93ZWQg
aWRlbnRpZmllci4KKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBpZiAocmFuZ2UucGVlaygp
LnR5cGUoKSAhPSBJZGVudFRva2VuKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIENTU1Byb3BlcnR5SUQgdW5yZXNvbHZlZFByb3BlcnR5ID0gdW5yZXNvbHZlZENTU1Byb3Bl
cnR5SUQocmFuZ2UucGVlaygpLnZhbHVlKCkpOworICAgICAgICBpZiAodW5yZXNvbHZlZFByb3Bl
cnR5KSB7CisgICAgICAgICAgICBBU1NFUlQoQ1NTUHJvcGVydHlNZXRhZGF0YTo6aXNFbmFibGVk
UHJvcGVydHkodW5yZXNvbHZlZFByb3BlcnR5KSk7CisgICAgICAgICAgICAvLyBOb3cgImFsbCIg
aXMgdXNlZCBieSBib3RoIENTU1ZhbHVlIGFuZCBDU1NQcm9wZXJ0eVZhbHVlLgorICAgICAgICAg
ICAgLy8gTmVlZCB0byByZXR1cm4gbnVsbHB0ciB3aGVuIGN1cnJlbnRWYWx1ZSBpcyBDU1NQcm9w
ZXJ0eUFsbC4KKyAgICAgICAgICAgIGlmICh1bnJlc29sdmVkUHJvcGVydHkgPT0gQ1NTUHJvcGVy
dHlXaWxsQ2hhbmdlIHx8IHVucmVzb2x2ZWRQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUFsbCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHZhbHVlcy0+YXBwZW5k
KCpDU1NDdXN0b21JZGVudFZhbHVlOjpjcmVhdGUodW5yZXNvbHZlZFByb3BlcnR5KSk7CisgICAg
ICAgICAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgc3dpdGNoIChyYW5nZS5wZWVrKCkuaWQoKSkgeworICAgICAgICAg
ICAgY2FzZSBDU1NWYWx1ZU5vbmU6CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQWxsOgorICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZUF1dG86CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlRGVm
YXVsdDoKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVJbml0aWFsOgorICAgICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZUluaGVyaXQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgICAgICBjYXNlIENTU1ZhbHVlQ29udGVudHM6CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVl
U2Nyb2xsUG9zaXRpb246CisgICAgICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoKmNvbnN1bWVJ
ZGVudChyYW5nZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHJhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKCFj
b25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSkKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiB2YWx1ZXM7Cit9CisKK3N0YXRpYyBDU1NG
b250RmVhdHVyZVZhbHVlKiBjb25zdW1lRm9udEZlYXR1cmVUYWcoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UpCit7CisgICAgLy8gRmVhdHVyZSB0YWcgbmFtZSBjb25zaXN0cyBvZiA0LWxldHRl
ciBjaGFyYWN0ZXJzLgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB0YWdOYW1lTGVuZ3RoID0g
NDsKKworICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLmNvbnN1bWVJbmNs
dWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgLy8gRmVhdHVyZSB0YWcgbmFtZSBjb21lcyBmaXJzdAor
ICAgIGlmICh0b2tlbi50eXBlKCkgIT0gU3RyaW5nVG9rZW4pCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIGlmICh0b2tlbi52YWx1ZSgpLmxlbmd0aCgpICE9IHRhZ05hbWVMZW5ndGgpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIEF0b21pY1N0cmluZyB0YWcgPSB0b2tlbi52YWx1
ZSgpLnRvQXRvbWljU3RyaW5nKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRhZ05h
bWVMZW5ndGg7ICsraSkgeworICAgICAgICAvLyBMaW1pdHMgdGhlIHJhbmdlIG9mIGNoYXJhY3Rl
cnMgdG8gMHgyMC0weDdFLCBmb2xsb3dpbmcgdGhlIHRhZyBuYW1lIHJ1bGVzIGRlZmllbmQgaW4g
dGhlIE9wZW5UeXBlIHNwZWNpZmljYXRpb24uCisgICAgICAgIFVDaGFyIGNoYXJhY3RlciA9IHRh
Z1tpXTsKKyAgICAgICAgaWYgKGNoYXJhY3RlciA8IDB4MjAgfHwgY2hhcmFjdGVyID4gMHg3RSkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGludCB0YWdWYWx1ZSA9
IDE7CisgICAgLy8gRmVhdHVyZSB0YWcgdmFsdWVzIGNvdWxkIGZvbGxvdzogPGludGVnZXI+IHwg
b24gfCBvZmYKKyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBOdW1iZXJUb2tlbiAmJiBy
YW5nZS5wZWVrKCkubnVtZXJpY1ZhbHVlVHlwZSgpID09IEludGVnZXJWYWx1ZVR5cGUgJiYgcmFu
Z2UucGVlaygpLm51bWVyaWNWYWx1ZSgpID49IDApIHsKKyAgICAgICAgdGFnVmFsdWUgPSBjbGFt
cFRvPGludD4ocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1lcmljVmFsdWUo
KSk7CisgICAgICAgIGlmICh0YWdWYWx1ZSA8IDApCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9IGVsc2UgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlT24gfHwgcmFu
Z2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVPZmYpIHsKKyAgICAgICAgdGFnVmFsdWUgPSByYW5n
ZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCkgPT0gQ1NTVmFsdWVPbjsKKyAgICB9
CisgICAgcmV0dXJuIENTU0ZvbnRGZWF0dXJlVmFsdWU6OmNyZWF0ZSh0YWcsIHRhZ1ZhbHVlKTsK
K30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lRm9udEZlYXR1cmVTZXR0aW5ncyhDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NT
VmFsdWVOb3JtYWwpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIENT
U1ZhbHVlTGlzdCogc2V0dGluZ3MgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVk
KCk7CisgICAgZG8geworICAgICAgICBDU1NGb250RmVhdHVyZVZhbHVlKiBmb250RmVhdHVyZVZh
bHVlID0gY29uc3VtZUZvbnRGZWF0dXJlVGFnKHJhbmdlKTsKKyAgICAgICAgaWYgKCFmb250RmVh
dHVyZVZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHNldHRpbmdz
LT5hcHBlbmQoKmZvbnRGZWF0dXJlVmFsdWUpOworICAgIH0gd2hpbGUgKGNvbnN1bWVDb21tYUlu
Y2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKTsKKyAgICByZXR1cm4gc2V0dGluZ3M7Cit9CisKK3N0
YXRpYyBDU1NWYWx1ZSogY29uc3VtZVBhZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7
CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVDdXN0b21JZGVudChy
YW5nZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVF1b3RlcyhDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVO
b25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICBDU1NWYWx1ZUxp
c3QqIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICB3
aGlsZSAoIXJhbmdlLmF0RW5kKCkpIHsKKyAgICAgICAgQ1NTU3RyaW5nVmFsdWUqIHBhcnNlZFZh
bHVlID0gY29uc3VtZVN0cmluZyhyYW5nZSk7CisgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgdmFsdWVzLT5hcHBlbmQoKnBhcnNl
ZFZhbHVlKTsKKyAgICB9CisgICAgaWYgKHZhbHVlcy0+bGVuZ3RoKCkgJiYgdmFsdWVzLT5sZW5n
dGgoKSAlIDIgPT0gMCkKKyAgICAgICAgcmV0dXJuIHZhbHVlczsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lV2Via2l0SGlnaGxpZ2h0KENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NW
YWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVy
biBjb25zdW1lU3RyaW5nKHJhbmdlKTsKK30KKworY2xhc3MgRm9udFZhcmlhbnRMaWdhdHVyZXNQ
YXJzZXIgeworICAgIFNUQUNLX0FMTE9DQVRFRCgpOworCitwdWJsaWM6CisgICAgRm9udFZhcmlh
bnRMaWdhdHVyZXNQYXJzZXIoKQorICAgICAgICA6IG1fc2F3Q29tbW9uTGlnYXR1cmVzVmFsdWUo
ZmFsc2UpCisgICAgICAgICwgbV9zYXdEaXNjcmV0aW9uYXJ5TGlnYXR1cmVzVmFsdWUoZmFsc2Up
CisgICAgICAgICwgbV9zYXdIaXN0b3JpY2FsTGlnYXR1cmVzVmFsdWUoZmFsc2UpCisgICAgICAg
ICwgbV9zYXdDb250ZXh0dWFsTGlnYXR1cmVzVmFsdWUoZmFsc2UpCisgICAgICAgICwgbV9yZXN1
bHQoQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpKQorICAgIHsKKyAgICB9CisK
KyAgICBlbnVtIGNsYXNzIFBhcnNlUmVzdWx0IHsKKyAgICAgICAgQ29uc3VtZWRWYWx1ZSwKKyAg
ICAgICAgRGlzYWxsb3dlZFZhbHVlLAorICAgICAgICBVbmtub3duVmFsdWUKKyAgICB9OworCisg
ICAgUGFyc2VSZXN1bHQgY29uc3VtZUxpZ2F0dXJlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
KQorICAgIHsKKyAgICAgICAgQ1NTVmFsdWVJRCB2YWx1ZUlEID0gcmFuZ2UucGVlaygpLmlkKCk7
CisgICAgICAgIHN3aXRjaCAodmFsdWVJRCkgeworICAgICAgICBjYXNlIENTU1ZhbHVlTm9Db21t
b25MaWdhdHVyZXM6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVDb21tb25MaWdhdHVyZXM6CisgICAg
ICAgICAgICBpZiAobV9zYXdDb21tb25MaWdhdHVyZXNWYWx1ZSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gUGFyc2VSZXN1bHQ6OkRpc2FsbG93ZWRWYWx1ZTsKKyAgICAgICAgICAgIG1fc2F3Q29t
bW9uTGlnYXR1cmVzVmFsdWUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgQ1NTVmFsdWVOb0Rpc2NyZXRpb25hcnlMaWdhdHVyZXM6CisgICAgICAgIGNhc2UgQ1NTVmFs
dWVEaXNjcmV0aW9uYXJ5TGlnYXR1cmVzOgorICAgICAgICAgICAgaWYgKG1fc2F3RGlzY3JldGlv
bmFyeUxpZ2F0dXJlc1ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBQYXJzZVJlc3VsdDo6
RGlzYWxsb3dlZFZhbHVlOworICAgICAgICAgICAgbV9zYXdEaXNjcmV0aW9uYXJ5TGlnYXR1cmVz
VmFsdWUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVO
b0hpc3RvcmljYWxMaWdhdHVyZXM6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVIaXN0b3JpY2FsTGln
YXR1cmVzOgorICAgICAgICAgICAgaWYgKG1fc2F3SGlzdG9yaWNhbExpZ2F0dXJlc1ZhbHVlKQor
ICAgICAgICAgICAgICAgIHJldHVybiBQYXJzZVJlc3VsdDo6RGlzYWxsb3dlZFZhbHVlOworICAg
ICAgICAgICAgbV9zYXdIaXN0b3JpY2FsTGlnYXR1cmVzVmFsdWUgPSB0cnVlOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVOb0NvbnRleHR1YWw6CisgICAgICAgIGNh
c2UgQ1NTVmFsdWVDb250ZXh0dWFsOgorICAgICAgICAgICAgaWYgKG1fc2F3Q29udGV4dHVhbExp
Z2F0dXJlc1ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBQYXJzZVJlc3VsdDo6RGlzYWxs
b3dlZFZhbHVlOworICAgICAgICAgICAgbV9zYXdDb250ZXh0dWFsTGlnYXR1cmVzVmFsdWUgPSB0
cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBy
ZXR1cm4gUGFyc2VSZXN1bHQ6OlVua25vd25WYWx1ZTsKKyAgICAgICAgfQorICAgICAgICBtX3Jl
c3VsdC0+YXBwZW5kKCpjb25zdW1lSWRlbnQocmFuZ2UpKTsKKyAgICAgICAgcmV0dXJuIFBhcnNl
UmVzdWx0OjpDb25zdW1lZFZhbHVlOworICAgIH0KKworICAgIENTU1ZhbHVlKiBmaW5hbGl6ZVZh
bHVlKCkKKyAgICB7CisgICAgICAgIGlmICghbV9yZXN1bHQtPmxlbmd0aCgpKQorICAgICAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9y
bWFsKTsKKyAgICAgICAgcmV0dXJuIG1fcmVzdWx0LnJlbGVhc2UoKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgYm9vbCBtX3Nhd0NvbW1vbkxpZ2F0dXJlc1ZhbHVlOworICAgIGJvb2wgbV9zYXdE
aXNjcmV0aW9uYXJ5TGlnYXR1cmVzVmFsdWU7CisgICAgYm9vbCBtX3Nhd0hpc3RvcmljYWxMaWdh
dHVyZXNWYWx1ZTsKKyAgICBib29sIG1fc2F3Q29udGV4dHVhbExpZ2F0dXJlc1ZhbHVlOworICAg
IE1lbWJlcjxDU1NWYWx1ZUxpc3Q+IG1fcmVzdWx0OworfTsKKworc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lRm9udFZhcmlhbnRMaWdhdHVyZXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7
CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9ybWFsIHx8IHJhbmdlLnBl
ZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChy
YW5nZSk7CisKKyAgICBGb250VmFyaWFudExpZ2F0dXJlc1BhcnNlciBsaWdhdHVyZXNQYXJzZXI7
CisgICAgZG8geworICAgICAgICBpZiAobGlnYXR1cmVzUGFyc2VyLmNvbnN1bWVMaWdhdHVyZShy
YW5nZSkgIT0KKyAgICAgICAgICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzUGFyc2VyOjpQYXJzZVJl
c3VsdDo6Q29uc3VtZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0g
d2hpbGUgKCFyYW5nZS5hdEVuZCgpKTsKKworICAgIHJldHVybiBsaWdhdHVyZXNQYXJzZXIuZmlu
YWxpemVWYWx1ZSgpOworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVGb250
VmFyaWFudENhcHMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgcmV0dXJuIGNv
bnN1bWVJZGVudDxDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVTbWFsbENhcHMsIENTU1ZhbHVlQWxs
U21hbGxDYXBzLAorICAgICAgICBDU1NWYWx1ZVBldGl0ZUNhcHMsIENTU1ZhbHVlQWxsUGV0aXRl
Q2FwcywKKyAgICAgICAgQ1NTVmFsdWVVbmljYXNlLCBDU1NWYWx1ZVRpdGxpbmdDYXBzPihyYW5n
ZSk7Cit9CisKK2NsYXNzIEZvbnRWYXJpYW50TnVtZXJpY1BhcnNlciB7CisgICAgU1RBQ0tfQUxM
T0NBVEVEKCk7CisKK3B1YmxpYzoKKyAgICBGb250VmFyaWFudE51bWVyaWNQYXJzZXIoKQorICAg
ICAgICA6IG1fc2F3TnVtZXJpY0ZpZ3VyZVZhbHVlKGZhbHNlKQorICAgICAgICAsIG1fc2F3TnVt
ZXJpY1NwYWNpbmdWYWx1ZShmYWxzZSkKKyAgICAgICAgLCBtX3Nhd051bWVyaWNGcmFjdGlvblZh
bHVlKGZhbHNlKQorICAgICAgICAsIG1fc2F3T3JkaW5hbFZhbHVlKGZhbHNlKQorICAgICAgICAs
IG1fc2F3U2xhc2hlZFplcm9WYWx1ZShmYWxzZSkKKyAgICAgICAgLCBtX3Jlc3VsdChDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCkpCisgICAgeworICAgIH0KKworICAgIGVudW0g
Y2xhc3MgUGFyc2VSZXN1bHQgeworICAgICAgICBDb25zdW1lZFZhbHVlLAorICAgICAgICBEaXNh
bGxvd2VkVmFsdWUsCisgICAgICAgIFVua25vd25WYWx1ZQorICAgIH07CisKKyAgICBQYXJzZVJl
c3VsdCBjb25zdW1lTnVtZXJpYyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKKyAgICB7Cisg
ICAgICAgIENTU1ZhbHVlSUQgdmFsdWVJRCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgICAgICBz
d2l0Y2ggKHZhbHVlSUQpIHsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUxpbmluZ051bXM6CisgICAg
ICAgIGNhc2UgQ1NTVmFsdWVPbGRzdHlsZU51bXM6CisgICAgICAgICAgICBpZiAobV9zYXdOdW1l
cmljRmlndXJlVmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0OjpEaXNh
bGxvd2VkVmFsdWU7CisgICAgICAgICAgICBtX3Nhd051bWVyaWNGaWd1cmVWYWx1ZSA9IHRydWU7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVByb3BvcnRpb25hbE51
bXM6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVUYWJ1bGFyTnVtczoKKyAgICAgICAgICAgIGlmICht
X3Nhd051bWVyaWNTcGFjaW5nVmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFBhcnNlUmVz
dWx0OjpEaXNhbGxvd2VkVmFsdWU7CisgICAgICAgICAgICBtX3Nhd051bWVyaWNTcGFjaW5nVmFs
dWUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVEaWFn
b25hbEZyYWN0aW9uczoKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVN0YWNrZWRGcmFjdGlvbnM6Cisg
ICAgICAgICAgICBpZiAobV9zYXdOdW1lcmljRnJhY3Rpb25WYWx1ZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gUGFyc2VSZXN1bHQ6OkRpc2FsbG93ZWRWYWx1ZTsKKyAgICAgICAgICAgIG1fc2F3
TnVtZXJpY0ZyYWN0aW9uVmFsdWUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQ1NTVmFsdWVPcmRpbmFsOgorICAgICAgICAgICAgaWYgKG1fc2F3T3JkaW5hbFZhbHVl
KQorICAgICAgICAgICAgICAgIHJldHVybiBQYXJzZVJlc3VsdDo6RGlzYWxsb3dlZFZhbHVlOwor
ICAgICAgICAgICAgbV9zYXdPcmRpbmFsVmFsdWUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQ1NTVmFsdWVTbGFzaGVkWmVybzoKKyAgICAgICAgICAgIGlmIChtX3Nh
d1NsYXNoZWRaZXJvVmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0OjpE
aXNhbGxvd2VkVmFsdWU7CisgICAgICAgICAgICBtX3Nhd1NsYXNoZWRaZXJvVmFsdWUgPSB0cnVl
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1
cm4gUGFyc2VSZXN1bHQ6OlVua25vd25WYWx1ZTsKKyAgICAgICAgfQorICAgICAgICBtX3Jlc3Vs
dC0+YXBwZW5kKCpjb25zdW1lSWRlbnQocmFuZ2UpKTsKKyAgICAgICAgcmV0dXJuIFBhcnNlUmVz
dWx0OjpDb25zdW1lZFZhbHVlOworICAgIH0KKworICAgIENTU1ZhbHVlKiBmaW5hbGl6ZVZhbHVl
KCkKKyAgICB7CisgICAgICAgIGlmICghbV9yZXN1bHQtPmxlbmd0aCgpKQorICAgICAgICAgICAg
cmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFs
KTsKKyAgICAgICAgcmV0dXJuIG1fcmVzdWx0LnJlbGVhc2UoKTsKKyAgICB9CisKKworcHJpdmF0
ZToKKyAgICBib29sIG1fc2F3TnVtZXJpY0ZpZ3VyZVZhbHVlOworICAgIGJvb2wgbV9zYXdOdW1l
cmljU3BhY2luZ1ZhbHVlOworICAgIGJvb2wgbV9zYXdOdW1lcmljRnJhY3Rpb25WYWx1ZTsKKyAg
ICBib29sIG1fc2F3T3JkaW5hbFZhbHVlOworICAgIGJvb2wgbV9zYXdTbGFzaGVkWmVyb1ZhbHVl
OworICAgIE1lbWJlcjxDU1NWYWx1ZUxpc3Q+IG1fcmVzdWx0OworfTsKKworc3RhdGljIENTU1Zh
bHVlKiBjb25zdW1lRm9udFZhcmlhbnROdW1lcmljKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
KQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBGb250VmFyaWFudE51bWVyaWNQ
YXJzZXIgbnVtZXJpY1BhcnNlcjsKKyAgICBkbyB7CisgICAgICAgIGlmIChudW1lcmljUGFyc2Vy
LmNvbnN1bWVOdW1lcmljKHJhbmdlKSAhPQorICAgICAgICAgICAgRm9udFZhcmlhbnROdW1lcmlj
UGFyc2VyOjpQYXJzZVJlc3VsdDo6Q29uc3VtZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgpKTsKKworICAgIHJldHVybiBudW1l
cmljUGFyc2VyLmZpbmFsaXplVmFsdWUoKTsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVl
KiBjb25zdW1lRm9udFZhcmlhbnRDU1MyMShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sK
KyAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZVNtYWxsQ2Fw
cz4ocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVGb250VmFyaWFudExpc3Qo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZXMg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgZG8geworICAgICAg
ICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBbGwpIHsKKyAgICAgICAgICAgIC8v
IEZJWE1FOiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VGb250VmFyaWFudCgpIGltcGxlbWVudHMK
KyAgICAgICAgICAgIC8vIHRoZSBvbGQgY3NzMyBkcmFmdDoKKyAgICAgICAgICAgIC8vIGh0dHA6
Ly93d3cudzMub3JnL1RSLzIwMDIvV0QtY3NzMy13ZWJmb250cy0yMDAyMDgwMi8jZm9udC12YXJp
YW50CisgICAgICAgICAgICAvLyAnYWxsJyBpcyBvbmx5IGFsbG93ZWQgaW4gQGZvbnQtZmFjZSBh
bmQgd2l0aCBubyBvdGhlciB2YWx1ZXMuCisgICAgICAgICAgICBpZiAodmFsdWVzLT5sZW5ndGgo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVybiBj
b25zdW1lSWRlbnQocmFuZ2UpOworICAgICAgICB9CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBmb250VmFyaWFudCA9IGNvbnN1bWVGb250VmFyaWFudENTUzIxKHJhbmdlKTsKKyAgICAgICAg
aWYgKGZvbnRWYXJpYW50KQorICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoKmZvbnRWYXJpYW50
KTsKKyAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSk7
CisKKyAgICBpZiAodmFsdWVzLT5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIHZhbHVlczsKKwor
ICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1
bWVGb250V2VpZ2h0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGNvbnN0IENT
U1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICBpZiAodG9rZW4uaWQoKSA+
PSBDU1NWYWx1ZU5vcm1hbCAmJiB0b2tlbi5pZCgpIDw9IENTU1ZhbHVlTGlnaHRlcikKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgaWYgKHRva2VuLnR5cGUoKSAhPSBO
dW1iZXJUb2tlbiB8fCB0b2tlbi5udW1lcmljVmFsdWVUeXBlKCkgIT0gSW50ZWdlclZhbHVlVHlw
ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaW50IHdlaWdodCA9IHN0YXRpY19jYXN0
PGludD4odG9rZW4ubnVtZXJpY1ZhbHVlKCkpOworICAgIGlmICgod2VpZ2h0ICUgMTAwKSB8fCB3
ZWlnaHQgPCAxMDAgfHwgd2VpZ2h0ID4gOTAwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgIHJldHVybiBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihzdGF0aWNfY2FzdDxDU1NWYWx1ZUlEPihDU1NW
YWx1ZTEwMCArIHdlaWdodCAvIDEwMCAtIDEpKTsKK30KKworc3RhdGljIFN0cmluZyBjb25jYXRl
bmF0ZUZhbWlseU5hbWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOworICAgIGJvb2wgYWRkZWRTcGFjZSA9IGZhbHNlOworICAgIGNvbnN0
IENTU1BhcnNlclRva2VuJiBmaXJzdFRva2VuID0gcmFuZ2UucGVlaygpOworICAgIHdoaWxlIChy
YW5nZS5wZWVrKCkudHlwZSgpID09IElkZW50VG9rZW4pIHsKKyAgICAgICAgaWYgKCFidWlsZGVy
LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAg
ICAgIGFkZGVkU3BhY2UgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKSk7CisgICAgfQorICAg
IGlmICghYWRkZWRTcGFjZSAmJiBpc0NTU1dpZGVLZXl3b3JkKGZpcnN0VG9rZW4uaWQoKSkpCisg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwor
fQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVGYW1pbHlOYW1lKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgpID09IFN0cmluZ1Rva2Vu
KQorICAgICAgICByZXR1cm4gQ1NTRm9udEZhbWlseVZhbHVlOjpjcmVhdGUocmFuZ2UuY29uc3Vt
ZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgpLnRvU3RyaW5nKCkpOworICAgIGlmIChyYW5n
ZS5wZWVrKCkudHlwZSgpICE9IElkZW50VG9rZW4pCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIFN0cmluZyBmYW1pbHlOYW1lID0gY29uY2F0ZW5hdGVGYW1pbHlOYW1lKHJhbmdlKTsKKyAg
ICBpZiAoZmFtaWx5TmFtZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuIENTU0ZvbnRGYW1pbHlWYWx1ZTo6Y3JlYXRlKGZhbWlseU5hbWUpOworfQorCitzdGF0
aWMgQ1NTVmFsdWUqIGNvbnN1bWVHZW5lcmljRmFtaWx5KENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlKQoreworICAgIHJldHVybiBjb25zdW1lSWRlbnRSYW5nZShyYW5nZSwgQ1NTVmFsdWVTZXJp
ZiwgQ1NTVmFsdWVXZWJraXRCb2R5KTsKK30KKworc3RhdGljIENTU1ZhbHVlTGlzdCogY29uc3Vt
ZUZvbnRGYW1pbHkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTVmFsdWVM
aXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgIGRv
IHsKKyAgICAgICAgQ1NTVmFsdWUqIHBhcnNlZFZhbHVlID0gY29uc3VtZUdlbmVyaWNGYW1pbHko
cmFuZ2UpOworICAgICAgICBpZiAocGFyc2VkVmFsdWUpIHsKKyAgICAgICAgICAgIGxpc3QtPmFw
cGVuZCgqcGFyc2VkVmFsdWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGFyc2Vk
VmFsdWUgPSBjb25zdW1lRmFtaWx5TmFtZShyYW5nZSk7CisgICAgICAgICAgICBpZiAocGFyc2Vk
VmFsdWUpIHsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdX
aGl0ZXNwYWNlKHJhbmdlKSk7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBDU1NWYWx1
ZSogY29uc3VtZVNwYWNpbmcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1v
ZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFs
dWVOb3JtYWwpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIC8vIEZJ
WE1FOiBhbGxvdyA8cGVyY2VudGFnZT5zIGluIHdvcmQtc3BhY2luZy4KKyAgICByZXR1cm4gY29u
c3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCwgVW5pdGxlc3NR
dWlyazo6QWxsb3cpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVUYWJTaXplKENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7Cisg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBhcnNlZFZhbHVlID0gY29uc3VtZUludGVnZXIocmFuZ2Us
IDApOworICAgIGlmIChwYXJzZWRWYWx1ZSkKKyAgICAgICAgcmV0dXJuIHBhcnNlZFZhbHVlOwor
ICAgIHJldHVybiBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdl
Tm9uTmVnYXRpdmUpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVUZXh0U2l6ZUFkanVz
dChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2Rl
KQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAg
IHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9
PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAg
IHJldHVybiBjb25zdW1lUGVyY2VudChyYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKK30K
Kworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lRm9udFNpemUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVz
cyA9IFVuaXRsZXNzUXVpcms6OkZvcmJpZCkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkg
Pj0gQ1NTVmFsdWVYeFNtYWxsICYmIHJhbmdlLnBlZWsoKS5pZCgpIDw9IENTU1ZhbHVlTGFyZ2Vy
KQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3Vt
ZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0
aXZlLCB1bml0bGVzcyk7Cit9CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUxp
bmVIZWlnaHQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFy
c2VyTW9kZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb3JtYWwp
CisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIGxpbmVIZWlnaHQgPSBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlTm9uTmVn
YXRpdmUpOworICAgIGlmIChsaW5lSGVpZ2h0KQorICAgICAgICByZXR1cm4gbGluZUhlaWdodDsK
KyAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwg
VmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKK30KKworc3RhdGljIENTU1ZhbHVlTGlzdCogY29uc3Vt
ZVJvdGF0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIEFTU0VSVChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NJbmRlcGVuZGVudFRyYW5zZm9ybVByb3BlcnRpZXNFbmFi
bGVkKCkpOworICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3Bh
Y2VTZXBhcmF0ZWQoKTsKKworICAgIENTU1ZhbHVlKiByb3RhdGlvbiA9IGNvbnN1bWVBbmdsZShy
YW5nZSk7CisgICAgaWYgKCFyb3RhdGlvbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
bGlzdC0+YXBwZW5kKCpyb3RhdGlvbik7CisKKyAgICBpZiAocmFuZ2UuYXRFbmQoKSkKKyAgICAg
ICAgcmV0dXJuIGxpc3Q7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMzsgaSsrKSB7
IC8vIDMgZGltZW5zaW9ucyBvZiByb3RhdGlvbgorICAgICAgICBDU1NWYWx1ZSogZGltZW5zaW9u
ID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGlmICghZGlt
ZW5zaW9uKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGxpc3QtPmFwcGVu
ZCgqZGltZW5zaW9uKTsKKyAgICB9CisKKyAgICByZXR1cm4gbGlzdDsKK30KKworc3RhdGljIENT
U1ZhbHVlTGlzdCogY29uc3VtZVNjYWxlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQorewor
ICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NJbmRlcGVuZGVudFRyYW5zZm9y
bVByb3BlcnRpZXNFbmFibGVkKCkpOworCisgICAgQ1NTVmFsdWUqIHNjYWxlID0gY29uc3VtZU51
bWJlcihyYW5nZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKCFzY2FsZSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGxpc3QtPmFwcGVuZCgqc2NhbGUpOworICAgIHNjYWxl
ID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKHNjYWxlKSB7
CisgICAgICAgIGxpc3QtPmFwcGVuZCgqc2NhbGUpOworICAgICAgICBzY2FsZSA9IGNvbnN1bWVO
dW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBpZiAoc2NhbGUpCisgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoKnNjYWxlKTsKKyAgICB9CisKKyAgICByZXR1cm4gbGlzdDsKK30K
Kworc3RhdGljIENTU1ZhbHVlTGlzdCogY29uc3VtZVRyYW5zbGF0ZShDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIEFTU0VSVChS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NJbmRlcGVuZGVudFRyYW5zZm9ybVByb3BlcnRpZXNF
bmFibGVkKCkpOworICAgIENTU1ZhbHVlKiB0cmFuc2xhdGUgPSBjb25zdW1lTGVuZ3RoT3JQZXJj
ZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBpZiAoIXRyYW5z
bGF0ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGxpc3QtPmFwcGVuZCgq
dHJhbnNsYXRlKTsKKyAgICB0cmFuc2xhdGUgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdl
LCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBpZiAodHJhbnNsYXRlKSB7Cisg
ICAgICAgIGxpc3QtPmFwcGVuZCgqdHJhbnNsYXRlKTsKKyAgICAgICAgdHJhbnNsYXRlID0gY29u
c3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAg
IGlmICh0cmFuc2xhdGUpCisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoKnRyYW5zbGF0ZSk7Cisg
ICAgfQorCisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUNv
dW50ZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGludCBkZWZhdWx0VmFsdWUpCit7Cisg
ICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJu
IGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgZG8geworICAgICAgICBDU1NDdXN0
b21JZGVudFZhbHVlKiBjb3VudGVyTmFtZSA9IGNvbnN1bWVDdXN0b21JZGVudChyYW5nZSk7Cisg
ICAgICAgIGlmICghY291bnRlck5hbWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgaW50IGkgPSBkZWZhdWx0VmFsdWU7CisgICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1
ZSogY291bnRlclZhbHVlID0gY29uc3VtZUludGVnZXIocmFuZ2UpKQorICAgICAgICAgICAgaSA9
IGNsYW1wVG88aW50Pihjb3VudGVyVmFsdWUtPmdldERvdWJsZVZhbHVlKCkpOworICAgICAgICBs
aXN0LT5hcHBlbmQoKkNTU1ZhbHVlUGFpcjo6Y3JlYXRlKGNvdW50ZXJOYW1lLAorICAgICAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShpLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGU6OkludGVnZXIpLAorICAgICAgICAgICAgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFs
dWVzKSk7CisgICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpOworICAgIHJldHVybiBsaXN0Owor
fQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVQYWdlU2l6ZShDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSkKK3sKKyAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlQTMsIENTU1ZhbHVl
QTQsIENTU1ZhbHVlQTUsIENTU1ZhbHVlQjQsIENTU1ZhbHVlQjUsIENTU1ZhbHVlTGVkZ2VyLCBD
U1NWYWx1ZUxlZ2FsLCBDU1NWYWx1ZUxldHRlcj4ocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFs
dWVMaXN0KiBjb25zdW1lU2l6ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2Vy
TW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIENTU1ZhbHVlTGlzdCogcmVzdWx0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworCisgICAgaWYgKHJhbmdlLnBlZWsoKS5p
ZCgpID09IENTU1ZhbHVlQXV0bykgeworICAgICAgICByZXN1bHQtPmFwcGVuZCgqY29uc3VtZUlk
ZW50KHJhbmdlKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgaWYgKENT
U1ZhbHVlKiB3aWR0aCA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVl
UmFuZ2VOb25OZWdhdGl2ZSkpIHsKKyAgICAgICAgQ1NTVmFsdWUqIGhlaWdodCA9IGNvbnN1bWVM
ZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAg
ICAgIHJlc3VsdC0+YXBwZW5kKCp3aWR0aCk7CisgICAgICAgIGlmIChoZWlnaHQpCisgICAgICAg
ICAgICByZXN1bHQtPmFwcGVuZCgqaGVpZ2h0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisKKyAgICBDU1NWYWx1ZSogcGFnZVNpemUgPSBjb25zdW1lUGFnZVNpemUocmFuZ2UpOwor
ICAgIENTU1ZhbHVlKiBvcmllbnRhdGlvbiA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZVBvcnRyYWl0
LCBDU1NWYWx1ZUxhbmRzY2FwZT4ocmFuZ2UpOworICAgIGlmICghcGFnZVNpemUpCisgICAgICAg
IHBhZ2VTaXplID0gY29uc3VtZVBhZ2VTaXplKHJhbmdlKTsKKworICAgIGlmICghb3JpZW50YXRp
b24gJiYgIXBhZ2VTaXplKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAocGFnZVNp
emUpCisgICAgICAgIHJlc3VsdC0+YXBwZW5kKCpwYWdlU2l6ZSk7CisgICAgaWYgKG9yaWVudGF0
aW9uKQorICAgICAgICByZXN1bHQtPmFwcGVuZCgqb3JpZW50YXRpb24pOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVNuYXBIZWlnaHQoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBD
U1NQcmltaXRpdmVWYWx1ZSogdW5pdCA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1v
ZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgaWYgKCF1bml0KQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgbGlzdC0+YXBwZW5kKCp1bml0KTsKKworICAgIGlmIChD
U1NQcmltaXRpdmVWYWx1ZSogcG9zaXRpb24gPSBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyKHJhbmdl
KSkgeworICAgICAgICBpZiAocG9zaXRpb24tPmdldEludFZhbHVlKCkgPiAxMDApCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgbGlzdC0+YXBwZW5kKCpwb3NpdGlvbik7Cisg
ICAgfQorCisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVRl
eHRJbmRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFy
c2VyTW9kZSkKK3sKKyAgICAvLyBbIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IF0gJiYgaGFuZ2lu
Zz8gJiYgZWFjaC1saW5lPworICAgIC8vIEtleXdvcmRzIG9ubHkgYWxsb3dlZCB3aGVuIGNzczNU
ZXh0IGlzIGVuYWJsZWQuCisgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0Ojpj
cmVhdGVTcGFjZVNlcGFyYXRlZCgpOworCisgICAgYm9vbCBoYXNMZW5ndGhPclBlcmNlbnRhZ2Ug
PSBmYWxzZTsKKyAgICBib29sIGhhc0VhY2hMaW5lID0gZmFsc2U7CisgICAgYm9vbCBoYXNIYW5n
aW5nID0gZmFsc2U7CisKKyAgICBkbyB7CisgICAgICAgIGlmICghaGFzTGVuZ3RoT3JQZXJjZW50
YWdlKSB7CisgICAgICAgICAgICBpZiAoQ1NTVmFsdWUqIHRleHRJbmRlbnQgPSBjb25zdW1lTGVu
Z3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsLCBVbml0bGVz
c1F1aXJrOjpBbGxvdykpIHsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoKnRleHRJbmRl
bnQpOworICAgICAgICAgICAgICAgIGhhc0xlbmd0aE9yUGVyY2VudGFnZSA9IHRydWU7CisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzM1RleHRFbmFibGVkKCkpIHsKKyAgICAg
ICAgICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICAgICAgICAgIGlm
ICghaGFzRWFjaExpbmUgJiYgaWQgPT0gQ1NTVmFsdWVFYWNoTGluZSkgeworICAgICAgICAgICAg
ICAgIGxpc3QtPmFwcGVuZCgqY29uc3VtZUlkZW50KHJhbmdlKSk7CisgICAgICAgICAgICAgICAg
aGFzRWFjaExpbmUgPSB0cnVlOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKCFoYXNIYW5naW5nICYmIGlkID09IENTU1ZhbHVlSGFuZ2lu
ZykgeworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCgqY29uc3VtZUlkZW50KHJhbmdlKSk7
CisgICAgICAgICAgICAgICAgaGFzSGFuZ2luZyA9IHRydWU7CisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpOworCisgICAgaWYgKCFoYXNMZW5ndGhPclBl
cmNlbnRhZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGxpc3Q7Cit9
CisKK3N0YXRpYyBib29sIHZhbGlkV2lkdGhPckhlaWdodEtleXdvcmQoQ1NTVmFsdWVJRCBpZCwg
Y29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVXZWJraXRNaW5Db250ZW50IHx8IGlkID09IENTU1ZhbHVlV2Via2l0TWF4Q29udGVudCB8fCBp
ZCA9PSBDU1NWYWx1ZVdlYmtpdEZpbGxBdmFpbGFibGUgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRG
aXRDb250ZW50CisgICAgICAgIHx8IGlkID09IENTU1ZhbHVlTWluQ29udGVudCB8fCBpZCA9PSBD
U1NWYWx1ZU1heENvbnRlbnQgfHwgaWQgPT0gQ1NTVmFsdWVGaXRDb250ZW50KSB7CisgICAgICAg
IGlmIChjb250ZXh0LnVzZUNvdW50ZXIoKSkgeworICAgICAgICAgICAgc3dpdGNoIChpZCkgewor
ICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdE1pbkNvbnRlbnQ6CisgICAgICAgICAgICAg
ICAgY29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlUHJlZml4
ZWRNaW5Db250ZW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVXZWJraXRNYXhDb250ZW50OgorICAgICAgICAgICAgICAgIGNvbnRleHQudXNlQ291
bnRlcigpLT5jb3VudChVc2VDb3VudGVyOjpDU1NWYWx1ZVByZWZpeGVkTWF4Q29udGVudCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlV2Via2l0Rmls
bEF2YWlsYWJsZToKKyAgICAgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQo
VXNlQ291bnRlcjo6Q1NTVmFsdWVQcmVmaXhlZEZpbGxBdmFpbGFibGUpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEZpdENvbnRlbnQ6Cisg
ICAgICAgICAgICAgICAgY29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkNT
U1ZhbHVlUHJlZml4ZWRGaXRDb250ZW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsK
K30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lTWF4V2lkdGhPckhlaWdodChDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgVW5pdGxl
c3NRdWlyayB1bml0bGVzcyA9IFVuaXRsZXNzUXVpcms6OkZvcmJpZCkKK3sKKyAgICBpZiAocmFu
Z2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbGlkV2lkdGhPckhlaWdodEtleXdv
cmQocmFuZ2UucGVlaygpLmlkKCksIGNvbnRleHQpKQorICAgICAgICByZXR1cm4gY29uc3VtZUlk
ZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY29u
dGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwgdW5pdGxlc3MpOworfQorCitzdGF0
aWMgQ1NTVmFsdWUqIGNvbnN1bWVXaWR0aE9ySGVpZ2h0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBVbml0bGVzc1F1aXJrIHVuaXRs
ZXNzID0gVW5pdGxlc3NRdWlyazo6Rm9yYmlkKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQo
KSA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsaWRXaWR0aE9ySGVpZ2h0S2V5d29yZChyYW5nZS5wZWVr
KCkuaWQoKSwgY29udGV4dCkpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwor
ICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjb250ZXh0Lm1vZGUoKSwg
VmFsdWVSYW5nZU5vbk5lZ2F0aXZlLCB1bml0bGVzcyk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSog
Y29uc3VtZU1hcmdpbk9yT2Zmc2V0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJz
ZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCit7CisgICAgaWYg
KHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2Us
IGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwsIHVuaXRsZXNzKTsKK30KKworc3RhdGljIENT
U1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lQ2xpcENvbXBvbmVudChDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlmIChyYW5nZS5w
ZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQo
cmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBW
YWx1ZVJhbmdlQWxsLCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7Cit9CisKK3N0YXRpYyBDU1NWYWx1
ZSogY29uc3VtZUNsaXAoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUg
Y3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVB
dXRvKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIGlmIChyYW5n
ZS5wZWVrKCkuZnVuY3Rpb25JZCgpICE9IENTU1ZhbHVlUmVjdCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24o
cmFuZ2UpOworICAgIC8vIHJlY3QodCwgciwgYiwgbCkgfHwgcmVjdCh0IHIgYiBsKQorICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiB0b3AgPSBjb25zdW1lQ2xpcENvbXBvbmVudChhcmdzLCBjc3NQYXJz
ZXJNb2RlKTsKKyAgICBpZiAoIXRvcCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYm9v
bCBuZWVkc0NvbW1hID0gY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKTsKKyAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcmlnaHQgPSBjb25zdW1lQ2xpcENvbXBvbmVudChhcmdzLCBj
c3NQYXJzZXJNb2RlKTsKKyAgICBpZiAoIXJpZ2h0IHx8IChuZWVkc0NvbW1hICYmICFjb25zdW1l
Q29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGJvdHRvbSA9IGNvbnN1bWVDbGlwQ29tcG9uZW50KGFy
Z3MsIGNzc1BhcnNlck1vZGUpOworICAgIGlmICghYm90dG9tIHx8IChuZWVkc0NvbW1hICYmICFj
b25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGxlZnQgPSBjb25zdW1lQ2xpcENvbXBvbmVu
dChhcmdzLCBjc3NQYXJzZXJNb2RlKTsKKyAgICBpZiAoIWxlZnQgfHwgIWFyZ3MuYXRFbmQoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIENTU1F1YWRWYWx1ZTo6Y3JlYXRl
KHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCwgQ1NTUXVhZFZhbHVlOjpTZXJpYWxpemVBc1JlY3Qp
OworfQorCitzdGF0aWMgYm9vbCBjb25zdW1lUGFuKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBDU1NWYWx1ZSomIHBhblgsIENTU1ZhbHVlKiYgcGFuWSkKK3sKKyAgICBDU1NWYWx1ZUlEIGlk
ID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgaWYgKChpZCA9PSBDU1NWYWx1ZVBhblggfHwgaWQg
PT0gQ1NTVmFsdWVQYW5SaWdodCB8fCBpZCA9PSBDU1NWYWx1ZVBhbkxlZnQpICYmICFwYW5YKSB7
CisgICAgICAgIGlmIChpZCAhPSBDU1NWYWx1ZVBhblggJiYgIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OmNzc1RvdWNoQWN0aW9uUGFuRGlyZWN0aW9uc0VuYWJsZWQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgcGFuWCA9IGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgfSBl
bHNlIGlmICgoaWQgPT0gQ1NTVmFsdWVQYW5ZIHx8IGlkID09IENTU1ZhbHVlUGFuRG93biB8fCBp
ZCA9PSBDU1NWYWx1ZVBhblVwKSAmJiAhcGFuWSkgeworICAgICAgICBpZiAoaWQgIT0gQ1NTVmFs
dWVQYW5ZICYmICFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NUb3VjaEFjdGlvblBhbkRpcmVj
dGlvbnNFbmFibGVkKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHBhblkg
PSBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3Vt
ZVRvdWNoQWN0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIENTU1ZhbHVl
TGlzdCogbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBD
U1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgaWYgKGlkID09IENTU1ZhbHVl
QXV0byB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVNYW5pcHVsYXRpb24p
IHsKKyAgICAgICAgbGlzdC0+YXBwZW5kKCpjb25zdW1lSWRlbnQocmFuZ2UpKTsKKyAgICAgICAg
cmV0dXJuIGxpc3Q7CisgICAgfQorCisgICAgQ1NTVmFsdWUqIHBhblggPSBudWxscHRyOworICAg
IENTU1ZhbHVlKiBwYW5ZID0gbnVsbHB0cjsKKyAgICBpZiAoIWNvbnN1bWVQYW4ocmFuZ2UsIHBh
blgsIHBhblkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIXJhbmdlLmF0RW5k
KCkgJiYgIWNvbnN1bWVQYW4ocmFuZ2UsIHBhblgsIHBhblkpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIGlmIChwYW5YKQorICAgICAgICBsaXN0LT5hcHBlbmQoKnBhblgpOworICAg
IGlmIChwYW5ZKQorICAgICAgICBsaXN0LT5hcHBlbmQoKnBhblkpOworICAgIHJldHVybiBsaXN0
OworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVMaW5lQ2xhbXAoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgIT0g
UGVyY2VudGFnZVRva2VuICYmIHJhbmdlLnBlZWsoKS50eXBlKCkgIT0gTnVtYmVyVG9rZW4pCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjbGFtcFZhbHVl
ID0gY29uc3VtZVBlcmNlbnQocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgaWYg
KGNsYW1wVmFsdWUpCisgICAgICAgIHJldHVybiBjbGFtcFZhbHVlOworICAgIC8vIFdoZW4gc3Bl
Y2lmeWluZyBudW1iZXIgb2YgbGluZXMsIGRvbid0IGFsbG93IDAgYXMgYSB2YWxpZCB2YWx1ZS4K
KyAgICByZXR1cm4gY29uc3VtZVBvc2l0aXZlSW50ZWdlcihyYW5nZSk7Cit9CisKK3N0YXRpYyBD
U1NWYWx1ZSogY29uc3VtZUxvY2FsZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAg
ICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICByZXR1cm4g
Y29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZVN0cmluZyhyYW5nZSk7Cit9
CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUNvbHVtbldpZHRoKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8p
CisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIC8vIEFsd2F5cyBwYXJz
ZSBsZW5ndGhzIGluIHN0cmljdCBtb2RlIGhlcmUsIHNpbmNlIGl0IHdvdWxkIGJlIGFtYmlndW91
cyBvdGhlcndpc2Ugd2hlbiB1c2VkIGluCisgICAgLy8gdGhlICdjb2x1bW5zJyBzaG9ydGhhbmQg
cHJvcGVydHkuCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbHVtbldpZHRoID0gY29uc3VtZUxl
bmd0aChyYW5nZSwgSFRNTFN0YW5kYXJkTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAg
ICBpZiAoIWNvbHVtbldpZHRoIHx8ICghY29sdW1uV2lkdGgtPmlzQ2FsY3VsYXRlZCgpICYmIGNv
bHVtbldpZHRoLT5nZXREb3VibGVWYWx1ZSgpID09IDApKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gY29sdW1uV2lkdGg7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3Vt
ZUNvbHVtbkNvdW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5n
ZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBjb25zdW1lSWRl
bnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyKHJhbmdlKTsKK30K
Kworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQ29sdW1uR2FwKENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgaWYgKHJhbmdlLnBl
ZWsoKS5pZCgpID09IENTU1ZhbHVlTm9ybWFsKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50
KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwg
VmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQ29s
dW1uU3BhbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4gY29uc3Vt
ZUlkZW50PENTU1ZhbHVlQWxsLCBDU1NWYWx1ZU5vbmU+KHJhbmdlKTsKK30KKworc3RhdGljIENT
U1ZhbHVlKiBjb25zdW1lWm9vbShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NT
UGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9r
ZW4gPSByYW5nZS5wZWVrKCk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHpvb20gPSBudWxscHRy
OworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSWRlbnRUb2tlbikgeworICAgICAgICB6b29tID0g
Y29uc3VtZUlkZW50PENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZVJlc2V0LCBDU1NWYWx1ZURvY3Vt
ZW50PihyYW5nZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgem9vbSA9IGNvbnN1bWVQZXJjZW50
KHJhbmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICBpZiAoIXpvb20pCisgICAg
ICAgICAgICB6b29tID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZl
KTsKKyAgICB9CisgICAgaWYgKHpvb20gJiYgY29udGV4dC51c2VDb3VudGVyKCkKKyAgICAgICAg
JiYgISh0b2tlbi5pZCgpID09IENTU1ZhbHVlTm9ybWFsCisgICAgICAgICAgICB8fCAodG9rZW4u
dHlwZSgpID09IE51bWJlclRva2VuICYmIHpvb20tPmdldERvdWJsZVZhbHVlKCkgPT0gMSkKKyAg
ICAgICAgICAgIHx8ICh0b2tlbi50eXBlKCkgPT0gUGVyY2VudGFnZVRva2VuICYmIHpvb20tPmdl
dERvdWJsZVZhbHVlKCkgPT0gMTAwKSkpCisgICAgICAgIGNvbnRleHQudXNlQ291bnRlcigpLT5j
b3VudChVc2VDb3VudGVyOjpDU1Nab29tTm90RXF1YWxUb09uZSk7CisgICAgcmV0dXJuIHpvb207
Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50KENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9
PSBDU1NWYWx1ZUluZmluaXRlKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsK
KyAgICByZXR1cm4gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsK
K30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQW5pbWF0aW9uTmFtZShDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgYm9vbCBhbGxv
d1F1b3RlZE5hbWUpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9u
ZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBpZiAoYWxsb3dR
dW90ZWROYW1lICYmIHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gU3RyaW5nVG9rZW4pIHsKKyAgICAg
ICAgLy8gTGVnYWN5IHN1cHBvcnQgZm9yIHN0cmluZ3MgaW4gcHJlZml4ZWQgYW5pbWF0aW9ucy4K
KyAgICAgICAgaWYgKGNvbnRleHQudXNlQ291bnRlcigpKQorICAgICAgICAgICAgY29udGV4dC51
c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OlF1b3RlZEFuaW1hdGlvbk5hbWUpOworCisg
ICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLmNvbnN1bWVJbmNsdWRp
bmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRva2Vu
LnZhbHVlKCksICJub25lIikpCisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKTsKKyAgICAgICAgcmV0dXJuIENTU0N1c3Rv
bUlkZW50VmFsdWU6OmNyZWF0ZSh0b2tlbi52YWx1ZSgpLnRvU3RyaW5nKCkpOworICAgIH0KKwor
ICAgIHJldHVybiBjb25zdW1lQ3VzdG9tSWRlbnQocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFs
dWUqIGNvbnN1bWVUcmFuc2l0aW9uUHJvcGVydHkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Up
Cit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOworICAg
IGlmICh0b2tlbi50eXBlKCkgIT0gSWRlbnRUb2tlbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgaWYgKHRva2VuLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29u
c3VtZUlkZW50KHJhbmdlKTsKKworICAgIGlmIChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5ID0gdG9r
ZW4ucGFyc2VBc1VucmVzb2x2ZWRDU1NQcm9wZXJ0eUlEKCkpIHsKKyAgICAgICAgQVNTRVJUKENT
U1Byb3BlcnR5TWV0YWRhdGE6OmlzRW5hYmxlZFByb3BlcnR5KHByb3BlcnR5KSk7CisgICAgICAg
IHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIHJldHVybiBDU1ND
dXN0b21JZGVudFZhbHVlOjpjcmVhdGUocHJvcGVydHkpOworICAgIH0KKyAgICByZXR1cm4gY29u
c3VtZUN1c3RvbUlkZW50KHJhbmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lU3Rl
cHMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQVNTRVJUKHJhbmdlLnBlZWso
KS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVTdGVwcyk7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5n
ZSByYW5nZUNvcHkgPSByYW5nZTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25z
dW1lRnVuY3Rpb24ocmFuZ2VDb3B5KTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzdGVwcyA9
IGNvbnN1bWVQb3NpdGl2ZUludGVnZXIoYXJncyk7CisgICAgaWYgKCFzdGVwcykKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVwUG9zaXRpb24g
cG9zaXRpb24gPSBTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVwUG9zaXRpb246OkVORDsKKyAgICBp
ZiAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkgeworICAgICAgICBzd2l0
Y2ggKGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpKSB7CisgICAgICAgIGNh
c2UgQ1NTVmFsdWVNaWRkbGU6CisgICAgICAgICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OndlYkFuaW1hdGlvbnNBUElFbmFibGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgICAgICBwb3NpdGlvbiA9IFN0ZXBzVGltaW5nRnVuY3Rpb246OlN0ZXBQ
b3NpdGlvbjo6TUlERExFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFs
dWVTdGFydDoKKyAgICAgICAgICAgIHBvc2l0aW9uID0gU3RlcHNUaW1pbmdGdW5jdGlvbjo6U3Rl
cFBvc2l0aW9uOjpTVEFSVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1Zh
bHVlRW5kOgorICAgICAgICAgICAgcG9zaXRpb24gPSBTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVw
UG9zaXRpb246OkVORDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWFy
Z3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByYW5nZSA9IHJhbmdl
Q29weTsKKyAgICByZXR1cm4gQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUoc3Rl
cHMtPmdldEludFZhbHVlKCksIHBvc2l0aW9uKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25z
dW1lQ3ViaWNCZXppZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQVNTRVJU
KHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVDdWJpY0Jlemllcik7CisgICAg
Q1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSByYW5nZTsKKyAgICBDU1NQYXJzZXJUb2tl
blJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2VDb3B5KTsKKworICAgIGRvdWJsZSB4
MSwgeTEsIHgyLCB5MjsKKyAgICBpZiAoY29uc3VtZU51bWJlclJhdyhhcmdzLCB4MSkKKyAgICAg
ICAgJiYgeDEgPj0gMCAmJiB4MSA8PSAxCisgICAgICAgICYmIGNvbnN1bWVDb21tYUluY2x1ZGlu
Z1doaXRlc3BhY2UoYXJncykKKyAgICAgICAgJiYgY29uc3VtZU51bWJlclJhdyhhcmdzLCB5MSkK
KyAgICAgICAgJiYgY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKQorICAgICAg
ICAmJiBjb25zdW1lTnVtYmVyUmF3KGFyZ3MsIHgyKQorICAgICAgICAmJiB4MiA+PSAwICYmIHgy
IDw9IDEKKyAgICAgICAgJiYgY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKQor
ICAgICAgICAmJiBjb25zdW1lTnVtYmVyUmF3KGFyZ3MsIHkyKQorICAgICAgICAmJiBhcmdzLmF0
RW5kKCkpIHsKKyAgICAgICAgcmFuZ2UgPSByYW5nZUNvcHk7CisgICAgICAgIHJldHVybiBDU1ND
dWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZSh4MSwgeTEsIHgyLCB5Mik7Cisg
ICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3Vt
ZUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQorewor
ICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICBpZiAoaWQgPT0gQ1NT
VmFsdWVFYXNlIHx8IGlkID09IENTU1ZhbHVlTGluZWFyIHx8IGlkID09IENTU1ZhbHVlRWFzZUlu
CisgICAgICAgIHx8IGlkID09IENTU1ZhbHVlRWFzZU91dCB8fCBpZCA9PSBDU1NWYWx1ZUVhc2VJ
bk91dCB8fCBpZCA9PSBDU1NWYWx1ZVN0ZXBTdGFydAorICAgICAgICB8fCBpZCA9PSBDU1NWYWx1
ZVN0ZXBFbmQgfHwgaWQgPT0gQ1NTVmFsdWVTdGVwTWlkZGxlKQorICAgICAgICByZXR1cm4gY29u
c3VtZUlkZW50KHJhbmdlKTsKKworICAgIENTU1ZhbHVlSUQgZnVuY3Rpb24gPSByYW5nZS5wZWVr
KCkuZnVuY3Rpb25JZCgpOworICAgIGlmIChmdW5jdGlvbiA9PSBDU1NWYWx1ZVN0ZXBzKQorICAg
ICAgICByZXR1cm4gY29uc3VtZVN0ZXBzKHJhbmdlKTsKKyAgICBpZiAoZnVuY3Rpb24gPT0gQ1NT
VmFsdWVDdWJpY0JlemllcikKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDdWJpY0JlemllcihyYW5n
ZSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUFu
aW1hdGlvblZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBib29sIHVzZUxlZ2FjeVBh
cnNpbmcpCit7CisgICAgc3dpdGNoIChwcm9wZXJ0eSkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlB
bmltYXRpb25EZWxheToKKyAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvbkRlbGF5OgorICAg
ICAgICByZXR1cm4gY29uc3VtZVRpbWUocmFuZ2UsIFZhbHVlUmFuZ2VBbGwpOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlBbmltYXRpb25EaXJlY3Rpb246CisgICAgICAgIHJldHVybiBjb25zdW1lSWRl
bnQ8Q1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlQWx0ZXJuYXRlLCBDU1NWYWx1ZVJldmVyc2UsIENT
U1ZhbHVlQWx0ZXJuYXRlUmV2ZXJzZT4ocmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlBbmlt
YXRpb25EdXJhdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvbkR1cmF0aW9uOgor
ICAgICAgICByZXR1cm4gY29uc3VtZVRpbWUocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkZpbGxNb2RlOgorICAgICAgICByZXR1cm4g
Y29uc3VtZUlkZW50PENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVGb3J3YXJkcywgQ1NTVmFsdWVCYWNr
d2FyZHMsIENTU1ZhbHVlQm90aD4ocmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRp
b25JdGVyYXRpb25Db3VudDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVBbmltYXRpb25JdGVyYXRp
b25Db3VudChyYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbk5hbWU6CisgICAg
ICAgIHJldHVybiBjb25zdW1lQW5pbWF0aW9uTmFtZShyYW5nZSwgY29udGV4dCwgdXNlTGVnYWN5
UGFyc2luZyk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvblBsYXlTdGF0ZToKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVJZGVudDxDU1NWYWx1ZVJ1bm5pbmcsIENTU1ZhbHVlUGF1c2VkPihy
YW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25Qcm9wZXJ0eToKKyAgICAgICAg
cmV0dXJuIGNvbnN1bWVUcmFuc2l0aW9uUHJvcGVydHkocmFuZ2UpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlBbmltYXRpb25UaW1pbmdGdW5jdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNp
dGlvblRpbWluZ0Z1bmN0aW9uOgorICAgICAgICByZXR1cm4gY29uc3VtZUFuaW1hdGlvblRpbWlu
Z0Z1bmN0aW9uKHJhbmdlKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBp
c1ZhbGlkQW5pbWF0aW9uUHJvcGVydHlMaXN0KENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0
IENTU1ZhbHVlTGlzdCYgdmFsdWVMaXN0KQoreworICAgIGlmIChwcm9wZXJ0eSAhPSBDU1NQcm9w
ZXJ0eVRyYW5zaXRpb25Qcm9wZXJ0eSB8fCB2YWx1ZUxpc3QubGVuZ3RoKCkgPCAyKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBmb3IgKGF1dG8mIHZhbHVlIDogdmFsdWVMaXN0KSB7CisgICAg
ICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIHRvQ1NTUHJpbWl0aXZlVmFsdWUo
KnZhbHVlKS5pc1ZhbHVlSUQoKQorICAgICAgICAgICAgJiYgdG9DU1NQcmltaXRpdmVWYWx1ZSgq
dmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgQ1NTVmFsdWVMaXN0
KiBjb25zdW1lQW5pbWF0aW9uUHJvcGVydHlMaXN0KENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0
LCBib29sIHVzZUxlZ2FjeVBhcnNpbmcpCit7CisgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgIGRvIHsKKyAgICAgICAgQ1NT
VmFsdWUqIHZhbHVlID0gY29uc3VtZUFuaW1hdGlvblZhbHVlKHByb3BlcnR5LCByYW5nZSwgY29u
dGV4dCwgdXNlTGVnYWN5UGFyc2luZyk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgbGlzdC0+YXBwZW5kKCp2YWx1ZSk7CisgICAgfSB3
aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpOworICAgIGlmICgh
aXNWYWxpZEFuaW1hdGlvblByb3BlcnR5TGlzdChwcm9wZXJ0eSwgKmxpc3QpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBBU1NFUlQobGlzdC0+bGVuZ3RoKCkpOworICAgIHJldHVybiBs
aXN0OworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lQW5pbWF0aW9uU2hvcnRo
YW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCwgYm9vbCB1c2VMZWdh
Y3lQYXJzaW5nLCBib29sIGltcG9ydGFudCkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBsb25naGFu
ZENvdW50ID0gc2hvcnRoYW5kLmxlbmd0aCgpOworICAgIENTU1ZhbHVlTGlzdCogbG9uZ2hhbmRz
WzhdOworICAgIEFTU0VSVChsb25naGFuZENvdW50IDw9IDgpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbG9uZ2hhbmRDb3VudDsgKytpKQorICAgICAgICBsb25naGFuZHNbaV0gPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisKKyAgICBkbyB7CisgICAgICAgIGJv
b2wgcGFyc2VkTG9uZ2hhbmRbOF0gPSB7IGZhbHNlIH07CisgICAgICAgIGRvIHsKKyAgICAgICAg
ICAgIGJvb2wgZm91bmRQcm9wZXJ0eSA9IGZhbHNlOworICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsb25naGFuZENvdW50OyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAocGFy
c2VkTG9uZ2hhbmRbaV0pCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
ICAgICAgICAgaWYgKENTU1ZhbHVlKiB2YWx1ZSA9IGNvbnN1bWVBbmltYXRpb25WYWx1ZShzaG9y
dGhhbmQucHJvcGVydGllcygpW2ldLCBtX3JhbmdlLCBtX2NvbnRleHQsIHVzZUxlZ2FjeVBhcnNp
bmcpKSB7CisgICAgICAgICAgICAgICAgICAgIHBhcnNlZExvbmdoYW5kW2ldID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgZm91bmRQcm9wZXJ0eSA9IHRydWU7CisgICAgICAgICAgICAgICAg
ICAgIGxvbmdoYW5kc1tpXS0+YXBwZW5kKCp2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgh
Zm91bmRQcm9wZXJ0eSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0g
d2hpbGUgKCFtX3JhbmdlLmF0RW5kKCkgJiYgbV9yYW5nZS5wZWVrKCkudHlwZSgpICE9IENvbW1h
VG9rZW4pOworCisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgbWFrZSBpbnZhbGlkIGxvbmdo
YW5kcywgc2VlIGNyYnVnLmNvbS8zODY0NTkKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBsb25naGFuZENvdW50OyArK2kpIHsKKyAgICAgICAgICAgIGlmICghcGFyc2VkTG9uZ2hhbmRb
aV0pCisgICAgICAgICAgICAgICAgbG9uZ2hhbmRzW2ldLT5hcHBlbmQoKkNTU0luaXRpYWxWYWx1
ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSk7CisgICAgICAgICAgICBwYXJzZWRMb25naGFuZFtp
XSA9IGZhbHNlOworICAgICAgICB9CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5n
V2hpdGVzcGFjZShtX3JhbmdlKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxvbmdo
YW5kQ291bnQ7ICsraSkgeworICAgICAgICBpZiAoIWlzVmFsaWRBbmltYXRpb25Qcm9wZXJ0eUxp
c3Qoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSwgKmxvbmdoYW5kc1tpXSkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsb25n
aGFuZENvdW50OyArK2kpCisgICAgICAgIGFkZFByb3BlcnR5KHNob3J0aGFuZC5wcm9wZXJ0aWVz
KClbaV0sIHNob3J0aGFuZC5pZCgpLCAqbG9uZ2hhbmRzW2ldLCBpbXBvcnRhbnQpOworCisgICAg
cmV0dXJuIG1fcmFuZ2UuYXRFbmQoKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lWklu
ZGV4KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCku
aWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2Up
OworICAgIHJldHVybiBjb25zdW1lSW50ZWdlcihyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NTaGFk
b3dWYWx1ZSogcGFyc2VTaW5nbGVTaGFkb3coQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgYm9vbCBhbGxvd0luc2V0LCBib29sIGFsbG93U3By
ZWFkKQoreworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzdHlsZSA9IG51bGxwdHI7CisgICAgQ1NT
VmFsdWUqIGNvbG9yID0gbnVsbHB0cjsKKworICAgIGlmIChyYW5nZS5hdEVuZCgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVJ
bnNldCkgeworICAgICAgICBpZiAoIWFsbG93SW5zZXQpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgc3R5bGUgPSBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIH0KKyAgICBj
b2xvciA9IGNvbnN1bWVDb2xvcihyYW5nZSwgY3NzUGFyc2VyTW9kZSk7CisKKyAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogaG9yaXpvbnRhbE9mZnNldCA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1Bh
cnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgIGlmICghaG9yaXpvbnRhbE9mZnNldCkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmVydGljYWxP
ZmZzZXQgPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxs
KTsKKyAgICBpZiAoIXZlcnRpY2FsT2Zmc2V0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBibHVyUmFkaXVzID0gY29uc3VtZUxlbmd0aChyYW5nZSwg
Y3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNw
cmVhZERpc3RhbmNlID0gbnVsbHB0cjsKKyAgICBpZiAoYmx1clJhZGl1cykgeworICAgICAgICAv
LyBCbHVyIHJhZGl1cyBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4KKyAgICAgICAgaWYgKGJsdXJSYWRp
dXMtPmdldERvdWJsZVZhbHVlKCkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIGlmIChhbGxvd1NwcmVhZCkKKyAgICAgICAgICAgIHNwcmVhZERpc3RhbmNlID0gY29u
c3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgfQor
CisgICAgaWYgKCFyYW5nZS5hdEVuZCgpKSB7CisgICAgICAgIGlmICghY29sb3IpCisgICAgICAg
ICAgICBjb2xvciA9IGNvbnN1bWVDb2xvcihyYW5nZSwgY3NzUGFyc2VyTW9kZSk7CisgICAgICAg
IGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUluc2V0KSB7CisgICAgICAgICAgICBp
ZiAoIWFsbG93SW5zZXQgfHwgc3R5bGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgICAgICBzdHlsZSA9IGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgcmV0dXJuIENTU1NoYWRvd1ZhbHVlOjpjcmVhdGUoaG9yaXpvbnRhbE9mZnNldCwg
dmVydGljYWxPZmZzZXQsIGJsdXJSYWRpdXMsCisgICAgICAgIHNwcmVhZERpc3RhbmNlLCBzdHls
ZSwgY29sb3IpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVTaGFkb3coQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgYm9vbCBpc0Jv
eFNoYWRvd1Byb3BlcnR5KQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1
ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgQ1NTVmFs
dWVMaXN0KiBzaGFkb3dWYWx1ZUxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJh
dGVkKCk7CisgICAgZG8geworICAgICAgICBpZiAoQ1NTU2hhZG93VmFsdWUqIHNoYWRvd1ZhbHVl
ID0gcGFyc2VTaW5nbGVTaGFkb3cocmFuZ2UsIGNzc1BhcnNlck1vZGUsIGlzQm94U2hhZG93UHJv
cGVydHksIGlzQm94U2hhZG93UHJvcGVydHkpKQorICAgICAgICAgICAgc2hhZG93VmFsdWVMaXN0
LT5hcHBlbmQoKnNoYWRvd1ZhbHVlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShy
YW5nZSkpOworICAgIHJldHVybiBzaGFkb3dWYWx1ZUxpc3Q7Cit9CisKK3N0YXRpYyBDU1NGdW5j
dGlvblZhbHVlKiBjb25zdW1lRmlsdGVyRnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ1NTVmFsdWVJRCBm
aWx0ZXJUeXBlID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKTsKKyAgICBpZiAoZmlsdGVyVHlw
ZSA8IENTU1ZhbHVlSW52ZXJ0IHx8IGZpbHRlclR5cGUgPiBDU1NWYWx1ZURyb3BTaGFkb3cpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYXJncyA9IGNv
bnN1bWVGdW5jdGlvbihyYW5nZSk7CisgICAgQ1NTRnVuY3Rpb25WYWx1ZSogZmlsdGVyVmFsdWUg
PSBDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUoZmlsdGVyVHlwZSk7CisgICAgQ1NTVmFsdWUqIHBh
cnNlZFZhbHVlID0gbnVsbHB0cjsKKworICAgIGlmIChmaWx0ZXJUeXBlID09IENTU1ZhbHVlRHJv
cFNoYWRvdykgeworICAgICAgICBwYXJzZWRWYWx1ZSA9IHBhcnNlU2luZ2xlU2hhZG93KGFyZ3Ms
IGNvbnRleHQubW9kZSgpLCBmYWxzZSwgZmFsc2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlm
IChhcmdzLmF0RW5kKCkpIHsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LnVzZUNvdW50ZXIoKSkK
KyAgICAgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291bnRlcjo6
Q1NTRmlsdGVyRnVuY3Rpb25Ob0FyZ3VtZW50cyk7CisgICAgICAgICAgICByZXR1cm4gZmlsdGVy
VmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZpbHRlclR5cGUgPT0gQ1NTVmFsdWVCcmln
aHRuZXNzKSB7CisgICAgICAgICAgICAvLyBGSVhNRSAoY3JidWcuY29tLzM5NzA2MSk6IFN1cHBv
cnQgY2FsYyBleHByZXNzaW9ucyBsaWtlIGNhbGMoMTAlICsgMC41KQorICAgICAgICAgICAgcGFy
c2VkVmFsdWUgPSBjb25zdW1lUGVyY2VudChhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAg
ICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25z
dW1lTnVtYmVyKGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICB9IGVsc2UgaWYgKGZpbHRl
clR5cGUgPT0gQ1NTVmFsdWVIdWVSb3RhdGUpIHsKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0g
Y29uc3VtZUFuZ2xlKGFyZ3MpOworICAgICAgICB9IGVsc2UgaWYgKGZpbHRlclR5cGUgPT0gQ1NT
VmFsdWVCbHVyKSB7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGgoYXJn
cywgSFRNTFN0YW5kYXJkTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIC8vIEZJWE1FIChjcmJ1Zy5jb20vMzk3MDYxKTogU3VwcG9ydCBj
YWxjIGV4cHJlc3Npb25zIGxpa2UgY2FsYygxMCUgKyAwLjUpCisgICAgICAgICAgICBwYXJzZWRW
YWx1ZSA9IGNvbnN1bWVQZXJjZW50KGFyZ3MsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAg
ICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0g
Y29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICAgICAg
aWYgKHBhcnNlZFZhbHVlICYmIGZpbHRlclR5cGUgIT0gQ1NTVmFsdWVTYXR1cmF0ZSAmJiBmaWx0
ZXJUeXBlICE9IENTU1ZhbHVlQ29udHJhc3QpIHsKKyAgICAgICAgICAgICAgICBib29sIGlzUGVy
Y2VudGFnZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUocGFyc2VkVmFsdWUpLT5pc1BlcmNlbnRhZ2Uo
KTsKKyAgICAgICAgICAgICAgICBkb3VibGUgbWF4QWxsb3dlZCA9IGlzUGVyY2VudGFnZSA/IDEw
MC4wIDogMS4wOworICAgICAgICAgICAgICAgIGlmICh0b0NTU1ByaW1pdGl2ZVZhbHVlKHBhcnNl
ZFZhbHVlKS0+Z2V0RG91YmxlVmFsdWUoKSA+IG1heEFsbG93ZWQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgcGFyc2VkVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKAorICAgICAgICAg
ICAgICAgICAgICAgICAgbWF4QWxsb3dlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzUGVy
Y2VudGFnZSA/IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGVyY2VudGFnZSA6IENTU1By
aW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFwYXJzZWRWYWx1ZSB8fCAhYXJn
cy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBmaWx0ZXJWYWx1ZS0+YXBw
ZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAgcmV0dXJuIGZpbHRlclZhbHVlOworfQorCitzdGF0aWMg
Q1NTVmFsdWUqIGNvbnN1bWVGaWx0ZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0
IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgp
ID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisK
KyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJh
dGVkKCk7CisgICAgZG8geworICAgICAgICBDU1NWYWx1ZSogZmlsdGVyVmFsdWUgPSBjb25zdW1l
VXJsKHJhbmdlKTsKKyAgICAgICAgaWYgKCFmaWx0ZXJWYWx1ZSkgeworICAgICAgICAgICAgZmls
dGVyVmFsdWUgPSBjb25zdW1lRmlsdGVyRnVuY3Rpb24ocmFuZ2UsIGNvbnRleHQpOworICAgICAg
ICAgICAgaWYgKCFmaWx0ZXJWYWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgfQorICAgICAgICBsaXN0LT5hcHBlbmQoKmZpbHRlclZhbHVlKTsKKyAgICB9IHdo
aWxlICghcmFuZ2UuYXRFbmQoKSk7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBDU1NW
YWx1ZSogY29uc3VtZVRleHREZWNvcmF0aW9uTGluZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSkKK3sKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgaWYgKGlk
ID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisK
KyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJh
dGVkKCk7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGlk
ZW50ID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQmxpbmssIENTU1ZhbHVlVW5kZXJsaW5lLCBDU1NW
YWx1ZU92ZXJsaW5lLCBDU1NWYWx1ZUxpbmVUaHJvdWdoPihyYW5nZSk7CisgICAgICAgIGlmICgh
aWRlbnQpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGxpc3QtPmhhc1ZhbHVlKCpp
ZGVudCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgbGlzdC0+YXBwZW5k
KCppZGVudCk7CisgICAgfQorCisgICAgaWYgKCFsaXN0LT5sZW5ndGgoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKKy8vIG5vbmUgfCBzdHJpY3QgfCBj
b250ZW50IHwgWyBsYXlvdXQgfHwgc3R5bGUgfHwgcGFpbnQgfHwgc2l6ZSBdCitzdGF0aWMgQ1NT
VmFsdWUqIGNvbnN1bWVDb250YWluKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAg
IENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIENTU1Zh
bHVlTGlzdCogbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAg
ICBpZiAoaWQgPT0gQ1NTVmFsdWVTdHJpY3QgfHwgaWQgPT0gQ1NTVmFsdWVDb250ZW50KSB7Cisg
ICAgICAgIGxpc3QtPmFwcGVuZCgqY29uc3VtZUlkZW50KHJhbmdlKSk7CisgICAgICAgIHJldHVy
biBsaXN0OworICAgIH0KKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogaWRlbnQgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVQYWludCwgQ1NTVmFsdWVMYXlvdXQs
IENTU1ZhbHVlU3R5bGUsIENTU1ZhbHVlU2l6ZT4ocmFuZ2UpOworICAgICAgICBpZiAoIWlkZW50
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChsaXN0LT5oYXNWYWx1ZSgqaWRlbnQp
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGxpc3QtPmFwcGVuZCgqaWRl
bnQpOworICAgIH0KKworICAgIGlmICghbGlzdC0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBsaXN0OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVQ
YXRoKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIC8vIEZJWE1FOiBBZGQgc3Vw
cG9ydCBmb3IgPHVybD4sIDxiYXNpYy1zaGFwZT4sIDxnZW9tZXRyeS1ib3g+LgorICAgIGlmIChy
YW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpICE9IENTU1ZhbHVlUGF0aCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGZ1bmN0aW9uUmFuZ2UgPSByYW5n
ZTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGZ1bmN0aW9uQXJncyA9IGNvbnN1bWVGdW5jdGlv
bihmdW5jdGlvblJhbmdlKTsKKworICAgIGlmIChmdW5jdGlvbkFyZ3MucGVlaygpLnR5cGUoKSAh
PSBTdHJpbmdUb2tlbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgU3RyaW5nIHBhdGhT
dHJpbmcgPSBmdW5jdGlvbkFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgp
LnRvU3RyaW5nKCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IGJ5
dGVTdHJlYW0gPSBTVkdQYXRoQnl0ZVN0cmVhbTo6Y3JlYXRlKCk7CisgICAgaWYgKGJ1aWxkQnl0
ZVN0cmVhbUZyb21TdHJpbmcocGF0aFN0cmluZywgKmJ5dGVTdHJlYW0pICE9IFNWR1BhcnNlU3Rh
dHVzOjpOb0Vycm9yCisgICAgICAgIHx8ICFmdW5jdGlvbkFyZ3MuYXRFbmQoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICByYW5nZSA9IGZ1bmN0aW9uUmFuZ2U7CisgICAgaWYgKGJ5
dGVTdHJlYW0tPmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSk7CisgICAgcmV0dXJuIENTU1BhdGhWYWx1ZTo6
Y3JlYXRlKHN0ZDo6bW92ZShieXRlU3RyZWFtKSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29u
c3VtZVBhdGhPck5vbmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTVmFs
dWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUp
CisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgcmV0dXJuIGNvbnN1
bWVQYXRoKHJhbmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lTW90aW9uUm90YXRp
b24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTVmFsdWUqIGFuZ2xlID0g
Y29uc3VtZUFuZ2xlKHJhbmdlKTsKKyAgICBDU1NWYWx1ZSoga2V5d29yZCA9IGNvbnN1bWVJZGVu
dDxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlUmV2ZXJzZT4ocmFuZ2UpOworICAgIGlmICghYW5nbGUg
JiYgIWtleXdvcmQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKCFhbmdsZSkK
KyAgICAgICAgYW5nbGUgPSBjb25zdW1lQW5nbGUocmFuZ2UpOworCisgICAgQ1NTVmFsdWVMaXN0
KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGlmIChr
ZXl3b3JkKQorICAgICAgICBsaXN0LT5hcHBlbmQoKmtleXdvcmQpOworICAgIGlmIChhbmdsZSkK
KyAgICAgICAgbGlzdC0+YXBwZW5kKCphbmdsZSk7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0
YXRpYyBDU1NWYWx1ZSogY29uc3VtZVRleHRFbXBoYXNpc1N0eWxlKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQoreworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAg
ICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJh
bmdlKTsKKworICAgIGlmIChDU1NWYWx1ZSogdGV4dEVtcGhhc2lzU3R5bGUgPSBjb25zdW1lU3Ry
aW5nKHJhbmdlKSkKKyAgICAgICAgcmV0dXJuIHRleHRFbXBoYXNpc1N0eWxlOworCisgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIGZpbGwgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVGaWxsZWQsIENTU1Zh
bHVlT3Blbj4ocmFuZ2UpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzaGFwZSA9IGNvbnN1bWVJ
ZGVudDxDU1NWYWx1ZURvdCwgQ1NTVmFsdWVDaXJjbGUsIENTU1ZhbHVlRG91YmxlQ2lyY2xlLCBD
U1NWYWx1ZVRyaWFuZ2xlLCBDU1NWYWx1ZVNlc2FtZT4ocmFuZ2UpOworICAgIGlmICghZmlsbCkK
KyAgICAgICAgZmlsbCA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUZpbGxlZCwgQ1NTVmFsdWVPcGVu
PihyYW5nZSk7CisgICAgaWYgKGZpbGwgJiYgc2hhcGUpIHsKKyAgICAgICAgQ1NTVmFsdWVMaXN0
KiBwYXJzZWRWYWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Cisg
ICAgICAgIHBhcnNlZFZhbHVlcy0+YXBwZW5kKCpmaWxsKTsKKyAgICAgICAgcGFyc2VkVmFsdWVz
LT5hcHBlbmQoKnNoYXBlKTsKKyAgICAgICAgcmV0dXJuIHBhcnNlZFZhbHVlczsKKyAgICB9Cisg
ICAgaWYgKGZpbGwpCisgICAgICAgIHJldHVybiBmaWxsOworICAgIGlmIChzaGFwZSkKKyAgICAg
ICAgcmV0dXJuIHNoYXBlOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgQ1NTVmFs
dWUqIGNvbnN1bWVPdXRsaW5lQ29sb3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1Bh
cnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICAvLyBBbGxvdyB0aGUgc3BlY2lhbCBmb2N1
cyBjb2xvciBldmVuIGluIEhUTUwgU3RhbmRhcmQgcGFyc2luZyBtb2RlLgorICAgIGlmIChyYW5n
ZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZVdlYmtpdEZvY3VzUmluZ0NvbG9yKQorICAgICAgICBy
ZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZUNvbG9yKHJhbmdl
LCBjc3NQYXJzZXJNb2RlKTsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1l
TGluZVdpZHRoKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1Bh
cnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCit7CisgICAgQ1NTVmFsdWVJRCBpZCA9
IHJhbmdlLnBlZWsoKS5pZCgpOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZVRoaW4gfHwgaWQgPT0g
Q1NTVmFsdWVNZWRpdW0gfHwgaWQgPT0gQ1NTVmFsdWVUaGljaykKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1Bh
cnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwgdW5pdGxlc3MpOworfQorCitzdGF0aWMg
Q1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVCb3JkZXJXaWR0aChDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRs
ZXNzKQoreworICAgIHJldHVybiBjb25zdW1lTGluZVdpZHRoKHJhbmdlLCBjc3NQYXJzZXJNb2Rl
LCB1bml0bGVzcyk7Cit9CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZVRleHRT
dHJva2VXaWR0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQ
YXJzZXJNb2RlKQoreworICAgIHJldHVybiBjb25zdW1lTGluZVdpZHRoKHJhbmdlLCBjc3NQYXJz
ZXJNb2RlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZl
VmFsdWUqIGNvbnN1bWVDb2x1bW5SdWxlV2lkdGgoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Us
IENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICByZXR1cm4gY29uc3VtZUxpbmVX
aWR0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKK30KKwor
c3RhdGljIGJvb2wgY29uc3VtZVRyYW5zbGF0ZTNkKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3Ms
IENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgQ1NTRnVuY3Rpb25WYWx1ZSomIHRyYW5zZm9y
bVZhbHVlKQoreworICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzID0gMjsKKyAgICBDU1NW
YWx1ZSogcGFyc2VkVmFsdWUgPSBudWxscHRyOworICAgIGRvIHsKKyAgICAgICAgcGFyc2VkVmFs
dWUgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFu
Z2VBbGwpOworICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAg
ICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9IHdoaWxlICgtLW51bWJlck9mQXJndW1lbnRzKTsKKyAg
ICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGgoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVS
YW5nZUFsbCk7CisgICAgaWYgKCFwYXJzZWRWYWx1ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworc3RhdGljIGJvb2wgY29uc3VtZU51bWJlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
YXJncywgQ1NTRnVuY3Rpb25WYWx1ZSomIHRyYW5zZm9ybVZhbHVlLCB1bnNpZ25lZCBudW1iZXJP
ZkFyZ3VtZW50cykKK3sKKyAgICBkbyB7CisgICAgICAgIENTU1ZhbHVlKiBwYXJzZWRWYWx1ZSA9
IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGlmICghcGFyc2Vk
VmFsdWUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHRyYW5zZm9ybVZhbHVl
LT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICAgICAgaWYgKC0tbnVtYmVyT2ZBcmd1bWVudHMg
JiYgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfSB3aGlsZSAobnVtYmVyT2ZBcmd1bWVudHMpOworICAgIHJldHVy
biB0cnVlOworfQorCitzdGF0aWMgYm9vbCBjb25zdW1lUGVyc3BlY3RpdmUoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NGdW5jdGlvblZh
bHVlKiYgdHJhbnNmb3JtVmFsdWUsIGJvb2wgdXNlTGVnYWN5UGFyc2luZykKK3sKKyAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcGFyc2VkVmFsdWUgPSBjb25zdW1lTGVuZ3RoKGFyZ3MsIGNzc1BhcnNl
ck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgaWYgKCFwYXJzZWRWYWx1ZSAmJiB1
c2VMZWdhY3lQYXJzaW5nKSB7CisgICAgICAgIGRvdWJsZSBwZXJzcGVjdGl2ZTsKKyAgICAgICAg
aWYgKCFjb25zdW1lTnVtYmVyUmF3KGFyZ3MsIHBlcnNwZWN0aXZlKSB8fCBwZXJzcGVjdGl2ZSA8
IDApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHBhcnNlZFZhbHVlID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShwZXJzcGVjdGl2ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlOjpQaXhlbHMpOworICAgIH0KKyAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZCgqcGFyc2VkVmFsdWUpOwor
ICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVUcmFuc2Zvcm1W
YWx1ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJN
b2RlLCBib29sIHVzZUxlZ2FjeVBhcnNpbmcpCit7CisgICAgQ1NTVmFsdWVJRCBmdW5jdGlvbklk
ID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKTsKKyAgICBpZiAoZnVuY3Rpb25JZCA9PSBDU1NW
YWx1ZUludmFsaWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIENTU1BhcnNlclRva2Vu
UmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7CisgICAgaWYgKGFyZ3MuYXRFbmQo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NTRnVuY3Rpb25WYWx1ZSogdHJhbnNm
b3JtVmFsdWUgPSBDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUoZnVuY3Rpb25JZCk7CisgICAgQ1NT
VmFsdWUqIHBhcnNlZFZhbHVlID0gbnVsbHB0cjsKKyAgICBzd2l0Y2ggKGZ1bmN0aW9uSWQpIHsK
KyAgICBjYXNlIENTU1ZhbHVlUm90YXRlOgorICAgIGNhc2UgQ1NTVmFsdWVSb3RhdGVYOgorICAg
IGNhc2UgQ1NTVmFsdWVSb3RhdGVZOgorICAgIGNhc2UgQ1NTVmFsdWVSb3RhdGVaOgorICAgIGNh
c2UgQ1NTVmFsdWVTa2V3WDoKKyAgICBjYXNlIENTU1ZhbHVlU2tld1k6CisgICAgY2FzZSBDU1NW
YWx1ZVNrZXc6CisgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUFuZ2xlKGFyZ3MpOworICAg
ICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIGlmIChmdW5jdGlvbklkID09IENTU1ZhbHVlU2tldyAmJiBjb25zdW1lQ29tbWFJbmNsdWRp
bmdXaGl0ZXNwYWNlKGFyZ3MpKSB7CisgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5k
KCpwYXJzZWRWYWx1ZSk7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVBbmdsZShh
cmdzKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1
ZVNjYWxlWDoKKyAgICBjYXNlIENTU1ZhbHVlU2NhbGVZOgorICAgIGNhc2UgQ1NTVmFsdWVTY2Fs
ZVo6CisgICAgY2FzZSBDU1NWYWx1ZVNjYWxlOgorICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1
bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGlmICghcGFyc2VkVmFsdWUp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKGZ1bmN0aW9uSWQgPT0g
Q1NTVmFsdWVTY2FsZSAmJiBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKSB7
CisgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAg
ICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7
CisgICAgICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVQZXJz
cGVjdGl2ZToKKyAgICAgICAgaWYgKCFjb25zdW1lUGVyc3BlY3RpdmUoYXJncywgY3NzUGFyc2Vy
TW9kZSwgdHJhbnNmb3JtVmFsdWUsIHVzZUxlZ2FjeVBhcnNpbmcpKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVUcmFuc2xhdGVY
OgorICAgIGNhc2UgQ1NTVmFsdWVUcmFuc2xhdGVZOgorICAgIGNhc2UgQ1NTVmFsdWVUcmFuc2xh
dGU6CisgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBj
c3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBpZiAoZnVuY3Rpb25JZCA9PSBD
U1NWYWx1ZVRyYW5zbGF0ZSAmJiBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3Mp
KSB7CisgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7Cisg
ICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3Nz
UGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgICAgICBpZiAoIXBhcnNlZFZhbHVl
KQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQ1NTVmFsdWVUcmFuc2xhdGVaOgorICAgICAgICBwYXJzZWRWYWx1ZSA9
IGNvbnN1bWVMZW5ndGgoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVNYXRyaXg6CisgICAgY2FzZSBDU1NWYWx1ZU1h
dHJpeDNkOgorICAgICAgICBpZiAoIWNvbnN1bWVOdW1iZXJzKGFyZ3MsIHRyYW5zZm9ybVZhbHVl
LCAoZnVuY3Rpb25JZCA9PSBDU1NWYWx1ZU1hdHJpeDNkKSA/IDE2IDogNikpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZVNjYWxl
M2Q6CisgICAgICAgIGlmICghY29uc3VtZU51bWJlcnMoYXJncywgdHJhbnNmb3JtVmFsdWUsIDMp
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q1NTVmFsdWVSb3RhdGUzZDoKKyAgICAgICAgaWYgKCFjb25zdW1lTnVtYmVycyhhcmdzLCB0cmFu
c2Zvcm1WYWx1ZSwgMykgfHwgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25z
dW1lQW5nbGUoYXJncyk7CisgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZVRyYW5zbGF0
ZTNkOgorICAgICAgICBpZiAoIWNvbnN1bWVUcmFuc2xhdGUzZChhcmdzLCBjc3NQYXJzZXJNb2Rl
LCB0cmFuc2Zvcm1WYWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAg
IGlmIChwYXJzZWRWYWx1ZSkKKyAgICAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZCgqcGFyc2Vk
VmFsdWUpOworICAgIGlmICghYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gdHJhbnNmb3JtVmFsdWU7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3Vt
ZVRyYW5zZm9ybShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQ
YXJzZXJNb2RlLCBib29sIHVzZUxlZ2FjeVBhcnNpbmcpCit7CisgICAgaWYgKHJhbmdlLnBlZWso
KS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5n
ZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNl
U2VwYXJhdGVkKCk7CisgICAgZG8geworICAgICAgICBDU1NWYWx1ZSogcGFyc2VkVHJhbnNmb3Jt
VmFsdWUgPSBjb25zdW1lVHJhbnNmb3JtVmFsdWUocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVzZUxl
Z2FjeVBhcnNpbmcpOworICAgICAgICBpZiAoIXBhcnNlZFRyYW5zZm9ybVZhbHVlKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGxpc3QtPmFwcGVuZCgqcGFyc2VkVHJhbnNm
b3JtVmFsdWUpOworICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgpKTsKKworICAgIHJldHVybiBs
aXN0OworfQorCit0ZW1wbGF0ZSA8Q1NTVmFsdWVJRCBzdGFydCwgQ1NTVmFsdWVJRCBlbmQ+Citz
dGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVQb3NpdGlvbkxvbmdoYW5kKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgaWYgKHJhbmdl
LnBlZWsoKS50eXBlKCkgPT0gSWRlbnRUb2tlbikgeworICAgICAgICBDU1NWYWx1ZUlEIGlkID0g
cmFuZ2UucGVlaygpLmlkKCk7CisgICAgICAgIGludCBwZXJjZW50OworICAgICAgICBpZiAoaWQg
PT0gc3RhcnQpCisgICAgICAgICAgICBwZXJjZW50ID0gMDsKKyAgICAgICAgZWxzZSBpZiAoaWQg
PT0gQ1NTVmFsdWVDZW50ZXIpCisgICAgICAgICAgICBwZXJjZW50ID0gNTA7CisgICAgICAgIGVs
c2UgaWYgKGlkID09IGVuZCkKKyAgICAgICAgICAgIHBlcmNlbnQgPSAxMDA7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByYW5nZS5jb25zdW1lSW5j
bHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShwZXJjZW50LCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBlcmNlbnRhZ2UpOwor
ICAgIH0KKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2Vy
TW9kZSwgVmFsdWVSYW5nZUFsbCk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVBvc2l0
aW9uWChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJN
b2RlKQoreworICAgIHJldHVybiBjb25zdW1lUG9zaXRpb25Mb25naGFuZDxDU1NWYWx1ZUxlZnQs
IENTU1ZhbHVlUmlnaHQ+KHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKK30KKworc3RhdGljIENTU1Zh
bHVlKiBjb25zdW1lUG9zaXRpb25ZKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJz
ZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgcmV0dXJuIGNvbnN1bWVQb3NpdGlvbkxvbmdo
YW5kPENTU1ZhbHVlVG9wLCBDU1NWYWx1ZUJvdHRvbT4ocmFuZ2UsIGNzc1BhcnNlck1vZGUpOwor
fQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVQYWludFN0cm9rZShDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlmIChyYW5n
ZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRl
bnQocmFuZ2UpOworICAgIENTU1VSSVZhbHVlKiB1cmwgPSBjb25zdW1lVXJsKHJhbmdlKTsKKyAg
ICBpZiAodXJsKSB7CisgICAgICAgIENTU1ZhbHVlKiBwYXJzZWRWYWx1ZSA9IG51bGxwdHI7Cisg
ICAgICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgICAg
ICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUNvbG9yKHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsK
KyAgICAgICAgaWYgKHBhcnNlZFZhbHVlKSB7CisgICAgICAgICAgICBDU1NWYWx1ZUxpc3QqIHZh
bHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAg
IHZhbHVlcy0+YXBwZW5kKCp1cmwpOworICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoKnBhcnNl
ZFZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZXM7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIHVybDsKKyAgICB9CisgICAgcmV0dXJuIGNvbnN1bWVDb2xvcihyYW5nZSwgY3NzUGFy
c2VyTW9kZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVBhaW50T3JkZXIoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENT
U1ZhbHVlTm9ybWFsKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAg
IFZlY3RvcjxDU1NWYWx1ZUlELCAzPiBwYWludFR5cGVMaXN0OworICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBmaWxsID0gbnVsbHB0cjsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogc3Ryb2tlID0gbnVs
bHB0cjsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogbWFya2VycyA9IG51bGxwdHI7CisgICAgZG8g
eworICAgICAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZUZpbGwgJiYgIWZpbGwpCisgICAgICAgICAgICBmaWxsID0gY29uc3Vt
ZUlkZW50KHJhbmdlKTsKKyAgICAgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVTdHJva2UgJiYg
IXN0cm9rZSkKKyAgICAgICAgICAgIHN0cm9rZSA9IGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAg
ICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlTWFya2VycyAmJiAhbWFya2VycykKKyAgICAgICAg
ICAgIG1hcmtlcnMgPSBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcGFpbnRUeXBlTGlzdC5hcHBlbmQoaWQpOwor
ICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgpKTsKKworICAgIC8vIEFmdGVyIHBhcnNpbmcgd2Ug
c2VyaWFsaXplIHRoZSBwYWludC1vcmRlciBsaXN0LiBTaW5jZSBpdCBpcyBub3QgcG9zc2libGUg
dG8KKyAgICAvLyBwb3AgYSBsYXN0IGxpc3QgaXRlbXMgZnJvbSBDU1NWYWx1ZUxpc3Qgd2l0aG91
dCBiaWdnZXIgY29zdCwgd2UgY3JlYXRlIHRoZQorICAgIC8vIGxpc3QgYWZ0ZXIgcGFyc2luZy4K
KyAgICBDU1NWYWx1ZUlEIGZpcnN0UGFpbnRPcmRlclR5cGUgPSBwYWludFR5cGVMaXN0LmF0KDAp
OworICAgIENTU1ZhbHVlTGlzdCogcGFpbnRPcmRlckxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgc3dpdGNoIChmaXJzdFBhaW50T3JkZXJUeXBlKSB7Cisg
ICAgY2FzZSBDU1NWYWx1ZUZpbGw6CisgICAgY2FzZSBDU1NWYWx1ZVN0cm9rZToKKyAgICAgICAg
cGFpbnRPcmRlckxpc3QtPmFwcGVuZChmaXJzdFBhaW50T3JkZXJUeXBlID09IENTU1ZhbHVlRmls
bCA/ICpmaWxsIDogKnN0cm9rZSk7CisgICAgICAgIGlmIChwYWludFR5cGVMaXN0LnNpemUoKSA+
IDEpIHsKKyAgICAgICAgICAgIGlmIChwYWludFR5cGVMaXN0LmF0KDEpID09IENTU1ZhbHVlTWFy
a2VycykKKyAgICAgICAgICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKCptYXJrZXJzKTsK
KyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlTWFya2VyczoKKyAg
ICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZCgqbWFya2Vycyk7CisgICAgICAgIGlmIChwYWlu
dFR5cGVMaXN0LnNpemUoKSA+IDEpIHsKKyAgICAgICAgICAgIGlmIChwYWludFR5cGVMaXN0LmF0
KDEpID09IENTU1ZhbHVlU3Ryb2tlKQorICAgICAgICAgICAgICAgIHBhaW50T3JkZXJMaXN0LT5h
cHBlbmQoKnN0cm9rZSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgcmV0dXJuIHBhaW50
T3JkZXJMaXN0OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVOb25lT3JVUkkoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENT
U1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0
dXJuIGNvbnN1bWVVcmwocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVGbGV4
QmFzaXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2Vy
TW9kZSkKK3sKKyAgICAvLyBGSVhNRTogU3VwcG9ydCBpbnRyaW5zaWMgZGltZW5zaW9ucyB0b28u
CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNl
bnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7Cit9CisKK3N0
YXRpYyBDU1NWYWx1ZSogY29uc3VtZVN0cm9rZURhc2hhcnJheShDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSkKK3sKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAg
aWYgKGlkID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5n
ZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIGRhc2hlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29t
bWFTZXBhcmF0ZWQoKTsKKyAgICBkbyB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBkYXNo
ID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgU1ZHQXR0cmlidXRlTW9kZSwgVmFsdWVS
YW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgaWYgKCFkYXNoIHx8IChjb25zdW1lQ29tbWFJbmNs
dWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSAmJiByYW5nZS5hdEVuZCgpKSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICBkYXNoZXMtPmFwcGVuZCgqZGFzaCk7CisgICAgfSB3aGls
ZSAoIXJhbmdlLmF0RW5kKCkpOworICAgIHJldHVybiBkYXNoZXM7Cit9CisKK3N0YXRpYyBDU1NQ
cmltaXRpdmVWYWx1ZSogY29uc3VtZUJhc2VsaW5lU2hpZnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UpCit7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgIGlm
IChpZCA9PSBDU1NWYWx1ZUJhc2VsaW5lIHx8IGlkID09IENTU1ZhbHVlU3ViIHx8IGlkID09IENT
U1ZhbHVlU3VwZXIpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJl
dHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBTVkdBdHRyaWJ1dGVNb2RlLCBWYWx1
ZVJhbmdlQWxsKTsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lUnhPclJ5
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQo
KSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwor
ICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBTVkdBdHRyaWJ1dGVNb2Rl
LCBWYWx1ZVJhbmdlQWxsLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworfQorCitzdGF0aWMgQ1NT
VmFsdWUqIGNvbnN1bWVDdXJzb3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENT
U1BhcnNlckNvbnRleHQmIGNvbnRleHQsIGJvb2wgaW5RdWlya3NNb2RlKQoreworICAgIENTU1Zh
bHVlTGlzdCogbGlzdCA9IG51bGxwdHI7CisgICAgd2hpbGUgKENTU1ZhbHVlKiBpbWFnZSA9IGNv
bnN1bWVJbWFnZShyYW5nZSwgY29udGV4dCwgQ29uc3VtZUdlbmVyYXRlZEltYWdlOjpGb3JiaWQp
KSB7CisgICAgICAgIGRvdWJsZSBudW07CisgICAgICAgIEludFBvaW50IGhvdFNwb3QoLTEsIC0x
KTsKKyAgICAgICAgYm9vbCBob3RTcG90U3BlY2lmaWVkID0gZmFsc2U7CisgICAgICAgIGlmIChj
b25zdW1lTnVtYmVyUmF3KHJhbmdlLCBudW0pKSB7CisgICAgICAgICAgICBob3RTcG90LnNldFgo
aW50KG51bSkpOworICAgICAgICAgICAgaWYgKCFjb25zdW1lTnVtYmVyUmF3KHJhbmdlLCBudW0p
KQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgaG90U3BvdC5z
ZXRZKGludChudW0pKTsKKyAgICAgICAgICAgIGhvdFNwb3RTcGVjaWZpZWQgPSB0cnVlOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCFsaXN0KQorICAgICAgICAgICAgbGlzdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKworICAgICAgICBsaXN0LT5hcHBlbmQoKkNT
U0N1cnNvckltYWdlVmFsdWU6OmNyZWF0ZShpbWFnZSwgaG90U3BvdFNwZWNpZmllZCwgaG90U3Bv
dCkpOworICAgICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2Up
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgQ1NTVmFsdWVJRCBp
ZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgIGlmICghcmFuZ2UuYXRFbmQoKSAmJiBjb250ZXh0
LnVzZUNvdW50ZXIoKSkgeworICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRab29tSW4p
CisgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291bnRlcjo6UHJl
Zml4ZWRDdXJzb3Jab29tSW4pOworICAgICAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtp
dFpvb21PdXQpCisgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291
bnRlcjo6UHJlZml4ZWRDdXJzb3Jab29tT3V0KTsKKyAgICB9CisgICAgQ1NTVmFsdWUqIGN1cnNv
clR5cGUgPSBudWxscHRyOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZUhhbmQpIHsKKyAgICAgICAg
aWYgKCFpblF1aXJrc01vZGUpIC8vIE5vbi1zdGFuZGFyZCBiZWhhdmlvcgorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIGN1cnNvclR5cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVBvaW50ZXIpOworICAgICAgICByYW5nZS5jb25zdW1l
SW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgIH0gZWxzZSBpZiAoKGlkID49IENTU1ZhbHVlQXV0
byAmJiBpZCA8PSBDU1NWYWx1ZVdlYmtpdFpvb21PdXQpIHx8IGlkID09IENTU1ZhbHVlQ29weSB8
fCBpZCA9PSBDU1NWYWx1ZU5vbmUpIHsKKyAgICAgICAgY3Vyc29yVHlwZSA9IGNvbnN1bWVJZGVu
dChyYW5nZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CisgICAgaWYgKCFsaXN0KQorICAgICAgICByZXR1cm4gY3Vyc29yVHlwZTsKKyAgICBsaXN0LT5h
cHBlbmQoKmN1cnNvclR5cGUpOworICAgIHJldHVybiBsaXN0OworfQorCitzdGF0aWMgQ1NTVmFs
dWUqIGNvbnN1bWVBdHRyKENTU1BhcnNlclRva2VuUmFuZ2UgYXJncywgQ1NTUGFyc2VyQ29udGV4
dCBjb250ZXh0KQoreworICAgIGlmIChhcmdzLnBlZWsoKS50eXBlKCkgIT0gSWRlbnRUb2tlbikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBTdHJpbmcgYXR0ck5hbWUgPSBhcmdzLmNv
bnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b1N0cmluZygpOworICAgIGlmICgh
YXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChjb250ZXh0
LmlzSFRNTERvY3VtZW50KCkpCisgICAgICAgIGF0dHJOYW1lID0gYXR0ck5hbWUubG93ZXIoKTsK
KworICAgIENTU0Z1bmN0aW9uVmFsdWUqIGF0dHJWYWx1ZSA9IENTU0Z1bmN0aW9uVmFsdWU6OmNy
ZWF0ZShDU1NWYWx1ZUF0dHIpOworICAgIGF0dHJWYWx1ZS0+YXBwZW5kKCpDU1NDdXN0b21JZGVu
dFZhbHVlOjpjcmVhdGUoYXR0ck5hbWUpKTsKKyAgICByZXR1cm4gYXR0clZhbHVlOworfQorCitz
dGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDb3VudGVyQ29udGVudChDU1NQYXJzZXJUb2tlblJhbmdl
IGFyZ3MsIGJvb2wgY291bnRlcnMpCit7CisgICAgQ1NTQ3VzdG9tSWRlbnRWYWx1ZSogaWRlbnRp
ZmllciA9IGNvbnN1bWVDdXN0b21JZGVudChhcmdzKTsKKyAgICBpZiAoIWlkZW50aWZpZXIpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQ1NTU3RyaW5nVmFsdWUqIHNlcGFyYXRvciA9
IG51bGxwdHI7CisgICAgaWYgKCFjb3VudGVycykgeworICAgICAgICBzZXBhcmF0b3IgPSBDU1NT
dHJpbmdWYWx1ZTo6Y3JlYXRlKFN0cmluZygpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAo
IWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykgfHwgYXJncy5wZWVrKCkudHlw
ZSgpICE9IFN0cmluZ1Rva2VuKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IHNlcGFyYXRvciA9IENTU1N0cmluZ1ZhbHVlOjpjcmVhdGUoYXJncy5jb25zdW1lSW5jbHVkaW5n
V2hpdGVzcGFjZSgpLnZhbHVlKCkudG9TdHJpbmcoKSk7CisgICAgfQorCisgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIGxpc3RTdHlsZSA9IG51bGxwdHI7CisgICAgaWYgKGNvbnN1bWVDb21tYUluY2x1
ZGluZ1doaXRlc3BhY2UoYXJncykpIHsKKyAgICAgICAgQ1NTVmFsdWVJRCBpZCA9IGFyZ3MucGVl
aygpLmlkKCk7CisgICAgICAgIGlmICgoaWQgIT0gQ1NTVmFsdWVOb25lICYmIChpZCA8IENTU1Zh
bHVlRGlzYyB8fCBpZCA+IENTU1ZhbHVlS2F0YWthbmFJcm9oYSkpKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIGxpc3RTdHlsZSA9IGNvbnN1bWVJZGVudChhcmdzKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBsaXN0U3R5bGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
SWRlbnRpZmllcihDU1NWYWx1ZURlY2ltYWwpOworICAgIH0KKworICAgIGlmICghYXJncy5hdEVu
ZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gQ1NTQ291bnRlclZhbHVl
OjpjcmVhdGUoaWRlbnRpZmllciwgbGlzdFN0eWxlLCBzZXBhcmF0b3IpOworfQorCitzdGF0aWMg
Q1NTVmFsdWUqIGNvbnN1bWVDb250ZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQ
YXJzZXJDb250ZXh0IGNvbnRleHQpCit7CisgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZU5v
bmUsIENTU1ZhbHVlTm9ybWFsPihyYW5nZS5wZWVrKCkuaWQoKSkpCisgICAgICAgIHJldHVybiBj
b25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZXMgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisKKyAgICBkbyB7CisgICAgICAgIENTU1Zh
bHVlKiBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVJbWFnZShyYW5nZSwgY29udGV4dCk7CisgICAgICAg
IGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVJZGVu
dDxDU1NWYWx1ZU9wZW5RdW90ZSwgQ1NTVmFsdWVDbG9zZVF1b3RlLCBDU1NWYWx1ZU5vT3BlblF1
b3RlLCBDU1NWYWx1ZU5vQ2xvc2VRdW90ZT4ocmFuZ2UpOworICAgICAgICBpZiAoIXBhcnNlZFZh
bHVlKQorICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lU3RyaW5nKHJhbmdlKTsKKyAg
ICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkgeworICAgICAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS5m
dW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVBdHRyKQorICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVl
ID0gY29uc3VtZUF0dHIoY29uc3VtZUZ1bmN0aW9uKHJhbmdlKSwgY29udGV4dCk7CisgICAgICAg
ICAgICBlbHNlIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlQ291bnRl
cikKKyAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVDb3VudGVyQ29udGVudChj
b25zdW1lRnVuY3Rpb24ocmFuZ2UpLCBmYWxzZSk7CisgICAgICAgICAgICBlbHNlIGlmIChyYW5n
ZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlQ291bnRlcnMpCisgICAgICAgICAgICAg
ICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lQ291bnRlckNvbnRlbnQoY29uc3VtZUZ1bmN0aW9uKHJh
bmdlKSwgdHJ1ZSk7CisgICAgICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIHZhbHVlcy0+YXBwZW5kKCpw
YXJzZWRWYWx1ZSk7CisgICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpOworCisgICAgcmV0dXJu
IHZhbHVlczsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lUGVyc3BlY3Rp
dmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9k
ZSwgQ1NTUHJvcGVydHlJRCB1bnJlc29sdmVkUHJvcGVydHkpCit7CisgICAgaWYgKHJhbmdlLnBl
ZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChy
YW5nZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBhcnNlZFZhbHVlID0gY29uc3VtZUxlbmd0
aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKCFwYXJzZWRW
YWx1ZSAmJiAodW5yZXNvbHZlZFByb3BlcnR5ID09IENTU1Byb3BlcnR5QWxpYXNXZWJraXRQZXJz
cGVjdGl2ZSkpIHsKKyAgICAgICAgZG91YmxlIHBlcnNwZWN0aXZlOworICAgICAgICBpZiAoIWNv
bnN1bWVOdW1iZXJSYXcocmFuZ2UsIHBlcnNwZWN0aXZlKSkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICBwYXJzZWRWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
cGVyc3BlY3RpdmUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGl4ZWxzKTsKKyAgICB9
CisgICAgaWYgKHBhcnNlZFZhbHVlICYmIChwYXJzZWRWYWx1ZS0+aXNDYWxjdWxhdGVkKCkgfHwg
cGFyc2VkVmFsdWUtPmdldERvdWJsZVZhbHVlKCkgPiAwKSkKKyAgICAgICAgcmV0dXJuIHBhcnNl
ZFZhbHVlOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgQ1NTVmFsdWVMaXN0KiBj
b25zdW1lUG9zaXRpb25MaXN0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJN
b2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgQ1NTVmFsdWVMaXN0KiBwb3NpdGlvbnMgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgZG8geworICAgICAgICBDU1NW
YWx1ZSogcG9zaXRpb24gPSBjb25zdW1lUG9zaXRpb24ocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFVu
aXRsZXNzUXVpcms6OkZvcmJpZCk7CisgICAgICAgIGlmICghcG9zaXRpb24pCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcG9zaXRpb25zLT5hcHBlbmQoKnBvc2l0aW9uKTsK
KyAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSk7Cisg
ICAgcmV0dXJuIHBvc2l0aW9uczsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lU2Nyb2xs
U25hcENvb3JkaW5hdGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUg
Y3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVO
b25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29u
c3VtZVBvc2l0aW9uTGlzdChyYW5nZSwgY3NzUGFyc2VyTW9kZSk7Cit9CisKK3N0YXRpYyBDU1NW
YWx1ZSogY29uc3VtZVNjcm9sbFNuYXBQb2ludHMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Us
IENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlk
KCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsK
KyAgICBpZiAocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZVJlcGVhdCkgewor
ICAgICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2Up
OworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcGFyc2VkVmFsdWUgPSBjb25zdW1lTGVuZ3Ro
T3JQZXJjZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7Cisg
ICAgICAgIGlmIChhcmdzLmF0RW5kKCkgJiYgcGFyc2VkVmFsdWUgJiYgKHBhcnNlZFZhbHVlLT5p
c0NhbGN1bGF0ZWQoKSB8fCBwYXJzZWRWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSA+IDApKSB7Cisg
ICAgICAgICAgICBDU1NGdW5jdGlvblZhbHVlKiByZXN1bHQgPSBDU1NGdW5jdGlvblZhbHVlOjpj
cmVhdGUoQ1NTVmFsdWVSZXBlYXQpOworICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmQoKnBhcnNl
ZFZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUJvcmRlclJh
ZGl1c0Nvcm5lcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQ
YXJzZXJNb2RlKQoreworICAgIENTU1ZhbHVlKiBwYXJzZWRWYWx1ZTEgPSBjb25zdW1lTGVuZ3Ro
T3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOwor
ICAgIGlmICghcGFyc2VkVmFsdWUxKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBDU1NW
YWx1ZSogcGFyc2VkVmFsdWUyID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFy
c2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICBpZiAoIXBhcnNlZFZhbHVlMikK
KyAgICAgICAgcGFyc2VkVmFsdWUyID0gcGFyc2VkVmFsdWUxOworICAgIHJldHVybiBDU1NWYWx1
ZVBhaXI6OmNyZWF0ZShwYXJzZWRWYWx1ZTEsIHBhcnNlZFZhbHVlMiwgQ1NTVmFsdWVQYWlyOjpE
cm9wSWRlbnRpY2FsVmFsdWVzKTsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25z
dW1lVmVydGljYWxBbGlnbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlKQoreworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwYXJzZWRWYWx1ZSA9
IGNvbnN1bWVJZGVudFJhbmdlKHJhbmdlLCBDU1NWYWx1ZUJhc2VsaW5lLCBDU1NWYWx1ZVdlYmtp
dEJhc2VsaW5lTWlkZGxlKTsKKyAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICBwYXJzZWRW
YWx1ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVl
UmFuZ2VBbGwsIFVuaXRsZXNzUXVpcms6OkFsbG93KTsKKyAgICByZXR1cm4gcGFyc2VkVmFsdWU7
Cit9CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZVNoYXBlUmFkaXVzKENTU1Bh
cnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAg
ICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlQ2xvc2VzdFNpZGUsIENTU1ZhbHVlRmFydGhlc3RT
aWRlPihhcmdzLnBlZWsoKS5pZCgpKSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChhcmdz
KTsKKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjc3NQYXJzZXJNb2Rl
LCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworfQorCitzdGF0aWMgQ1NTQmFzaWNTaGFwZUNpcmNs
ZVZhbHVlKiBjb25zdW1lQmFzaWNTaGFwZUNpcmNsZShDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdz
LCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIC8vIHNwZWM6IGh0dHBz
Oi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtc2hhcGVzLyNzdXBwb3J0ZWQtYmFzaWMtc2hhcGVzCisg
ICAgLy8gY2lyY2xlKCBbPHNoYXBlLXJhZGl1cz5dPyBbYXQgPHBvc2l0aW9uPl0/ICkKKyAgICBD
U1NCYXNpY1NoYXBlQ2lyY2xlVmFsdWUqIHNoYXBlID0gQ1NTQmFzaWNTaGFwZUNpcmNsZVZhbHVl
OjpjcmVhdGUoKTsKKyAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWUqIHJhZGl1cyA9IGNvbnN1bWVT
aGFwZVJhZGl1cyhhcmdzLCBjb250ZXh0Lm1vZGUoKSkpCisgICAgICAgIHNoYXBlLT5zZXRSYWRp
dXMocmFkaXVzKTsKKyAgICBpZiAoY29uc3VtZUlkZW50PENTU1ZhbHVlQXQ+KGFyZ3MpKSB7Cisg
ICAgICAgIENTU1ZhbHVlKiBjZW50ZXJYID0gbnVsbHB0cjsKKyAgICAgICAgQ1NTVmFsdWUqIGNl
bnRlclkgPSBudWxscHRyOworICAgICAgICBpZiAoIWNvbnN1bWVQb3NpdGlvbihhcmdzLCBjb250
ZXh0Lm1vZGUoKSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBjZW50ZXJYLCBjZW50ZXJZKSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBzaGFwZS0+c2V0Q2VudGVyWChjZW50
ZXJYKTsKKyAgICAgICAgc2hhcGUtPnNldENlbnRlclkoY2VudGVyWSk7CisgICAgfQorICAgIHJl
dHVybiBzaGFwZTsKK30KKworc3RhdGljIENTU0Jhc2ljU2hhcGVFbGxpcHNlVmFsdWUqIGNvbnN1
bWVCYXNpY1NoYXBlRWxsaXBzZShDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQ
YXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIC8vIHNwZWM6IGh0dHBzOi8vZHJhZnRzLmNz
c3dnLm9yZy9jc3Mtc2hhcGVzLyNzdXBwb3J0ZWQtYmFzaWMtc2hhcGVzCisgICAgLy8gZWxsaXBz
ZSggWzxzaGFwZS1yYWRpdXM+ezJ9XT8gW2F0IDxwb3NpdGlvbj5dPyApCisgICAgQ1NTQmFzaWNT
aGFwZUVsbGlwc2VWYWx1ZSogc2hhcGUgPSBDU1NCYXNpY1NoYXBlRWxsaXBzZVZhbHVlOjpjcmVh
dGUoKTsKKyAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWUqIHJhZGl1c1ggPSBjb25zdW1lU2hhcGVS
YWRpdXMoYXJncywgY29udGV4dC5tb2RlKCkpKSB7CisgICAgICAgIHNoYXBlLT5zZXRSYWRpdXNY
KHJhZGl1c1gpOworICAgICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWUqIHJhZGl1c1kgPSBjb25z
dW1lU2hhcGVSYWRpdXMoYXJncywgY29udGV4dC5tb2RlKCkpKQorICAgICAgICAgICAgc2hhcGUt
PnNldFJhZGl1c1kocmFkaXVzWSk7CisgICAgfQorICAgIGlmIChjb25zdW1lSWRlbnQ8Q1NTVmFs
dWVBdD4oYXJncykpIHsKKyAgICAgICAgQ1NTVmFsdWUqIGNlbnRlclggPSBudWxscHRyOworICAg
ICAgICBDU1NWYWx1ZSogY2VudGVyWSA9IG51bGxwdHI7CisgICAgICAgIGlmICghY29uc3VtZVBv
c2l0aW9uKGFyZ3MsIGNvbnRleHQubW9kZSgpLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQsIGNlbnRl
clgsIGNlbnRlclkpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHNoYXBl
LT5zZXRDZW50ZXJYKGNlbnRlclgpOworICAgICAgICBzaGFwZS0+c2V0Q2VudGVyWShjZW50ZXJZ
KTsKKyAgICB9CisgICAgcmV0dXJuIHNoYXBlOworfQorCitzdGF0aWMgQ1NTQmFzaWNTaGFwZVBv
bHlnb25WYWx1ZSogY29uc3VtZUJhc2ljU2hhcGVQb2x5Z29uKENTU1BhcnNlclRva2VuUmFuZ2Um
IGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ1NTQmFzaWNT
aGFwZVBvbHlnb25WYWx1ZSogc2hhcGUgPSBDU1NCYXNpY1NoYXBlUG9seWdvblZhbHVlOjpjcmVh
dGUoKTsKKyAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlRXZlbm9kZCwgQ1NTVmFsdWVOb256
ZXJvPihhcmdzLnBlZWsoKS5pZCgpKSkgeworICAgICAgICBzaGFwZS0+c2V0V2luZFJ1bGUoYXJn
cy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCkgPT0gQ1NTVmFsdWVFdmVub2RkID8g
UlVMRV9FVkVOT0REIDogUlVMRV9OT05aRVJPKTsKKyAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJ
bmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorCisgICAgZG8geworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogeExlbmd0aCA9IGNv
bnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VBbGwp
OworICAgICAgICBpZiAoIXhMZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHlMZW5ndGggPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50
KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgaWYgKCF5TGVu
Z3RoKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHNoYXBlLT5hcHBlbmRQ
b2ludCh4TGVuZ3RoLCB5TGVuZ3RoKTsKKyAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRp
bmdXaGl0ZXNwYWNlKGFyZ3MpKTsKKyAgICByZXR1cm4gc2hhcGU7Cit9CisKK3N0YXRpYyB2b2lk
IGNvbXBsZXRlNFNpZGVzKENTU1ByaW1pdGl2ZVZhbHVlKiBzaWRlWzRdKQoreworICAgIGlmIChz
aWRlWzNdKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFzaWRlWzJdKSB7CisgICAgICAgIGlm
ICghc2lkZVsxXSkKKyAgICAgICAgICAgIHNpZGVbMV0gPSBzaWRlWzBdOworICAgICAgICBzaWRl
WzJdID0gc2lkZVswXTsKKyAgICB9CisgICAgc2lkZVszXSA9IHNpZGVbMV07Cit9CisKK3N0YXRp
YyBib29sIGNvbnN1bWVSYWRpaShDU1NQcmltaXRpdmVWYWx1ZSogaG9yaXpvbnRhbFJhZGlpWzRd
LCBDU1NQcmltaXRpdmVWYWx1ZSogdmVydGljYWxSYWRpaVs0XSwgQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgYm9vbCB1c2VMZWdhY3lQYXJz
aW5nKQoreworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIGZvciAoOyBpIDwgNCAmJiAhcmFuZ2Uu
YXRFbmQoKSAmJiByYW5nZS5wZWVrKCkudHlwZSgpICE9IERlbGltaXRlclRva2VuOyArK2kpIHsK
KyAgICAgICAgaG9yaXpvbnRhbFJhZGlpW2ldID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5n
ZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgaWYgKCFo
b3Jpem9udGFsUmFkaWlbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IGlmICghaG9yaXpvbnRhbFJhZGlpWzBdKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KHJhbmdlLmF0RW5kKCkpIHsKKyAgICAgICAgLy8gTGVnYWN5IHN5bnRheDogLXdlYmtpdC1ib3Jk
ZXItcmFkaXVzOiBsMSBsMjsgaXMgZXF1aXZhbGVudCB0byBib3JkZXItcmFkaXVzOiBsMSAvIGwy
OworICAgICAgICBpZiAodXNlTGVnYWN5UGFyc2luZyAmJiBpID09IDIpIHsKKyAgICAgICAgICAg
IHZlcnRpY2FsUmFkaWlbMF0gPSBob3Jpem9udGFsUmFkaWlbMV07CisgICAgICAgICAgICBob3Jp
em9udGFsUmFkaWlbMV0gPSBudWxscHRyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
Y29tcGxldGU0U2lkZXMoaG9yaXpvbnRhbFJhZGlpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCA0OyArK2kpCisgICAgICAgICAgICAgICAgdmVydGljYWxSYWRpaVtpXSA9
IGhvcml6b250YWxSYWRpaVtpXTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNw
YWNlKHJhbmdlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZm9yIChpID0g
MDsgaSA8IDQgJiYgIXJhbmdlLmF0RW5kKCk7ICsraSkgeworICAgICAgICAgICAgdmVydGljYWxS
YWRpaVtpXSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZh
bHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgICAgICBpZiAoIXZlcnRpY2FsUmFkaWlbaV0p
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmICgh
dmVydGljYWxSYWRpaVswXSB8fCAhcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgY29tcGxldGU0U2lkZXMoaG9yaXpvbnRhbFJhZGlpKTsKKyAgICBj
b21wbGV0ZTRTaWRlcyh2ZXJ0aWNhbFJhZGlpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3Rh
dGljIENTU0Jhc2ljU2hhcGVJbnNldFZhbHVlKiBjb25zdW1lQmFzaWNTaGFwZUluc2V0KENTU1Bh
cnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7
CisgICAgQ1NTQmFzaWNTaGFwZUluc2V0VmFsdWUqIHNoYXBlID0gQ1NTQmFzaWNTaGFwZUluc2V0
VmFsdWU6OmNyZWF0ZSgpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0b3AgPSBjb25zdW1lTGVu
Z3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBp
ZiAoIXRvcCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHJpZ2h0ID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjb250ZXh0Lm1vZGUoKSwgVmFs
dWVSYW5nZUFsbCk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGJvdHRvbSA9IG51bGxwdHI7Cisg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGxlZnQgPSBudWxscHRyOworICAgIGlmIChyaWdodCkgewor
ICAgICAgICBib3R0b20gPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9k
ZSgpLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgaWYgKGJvdHRvbSkKKyAgICAgICAgICAgIGxl
ZnQgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBWYWx1ZVJh
bmdlQWxsKTsKKyAgICB9CisgICAgaWYgKGxlZnQpCisgICAgICAgIHNoYXBlLT51cGRhdGVTaGFw
ZVNpemU0VmFsdWVzKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7CisgICAgZWxzZSBpZiAoYm90
dG9tKQorICAgICAgICBzaGFwZS0+dXBkYXRlU2hhcGVTaXplM1ZhbHVlcyh0b3AsIHJpZ2h0LCBi
b3R0b20pOworICAgIGVsc2UgaWYgKHJpZ2h0KQorICAgICAgICBzaGFwZS0+dXBkYXRlU2hhcGVT
aXplMlZhbHVlcyh0b3AsIHJpZ2h0KTsKKyAgICBlbHNlCisgICAgICAgIHNoYXBlLT51cGRhdGVT
aGFwZVNpemUxVmFsdWUodG9wKTsKKworICAgIGlmIChjb25zdW1lSWRlbnQ8Q1NTVmFsdWVSb3Vu
ZD4oYXJncykpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGhvcml6b250YWxSYWRpaVs0
XSA9IHsgMCB9OworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmVydGljYWxSYWRpaVs0XSA9
IHsgMCB9OworICAgICAgICBpZiAoIWNvbnN1bWVSYWRpaShob3Jpem9udGFsUmFkaWksIHZlcnRp
Y2FsUmFkaWksIGFyZ3MsIGNvbnRleHQubW9kZSgpLCBmYWxzZSkpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgc2hhcGUtPnNldFRvcExlZnRSYWRpdXMoQ1NTVmFsdWVQYWly
OjpjcmVhdGUoaG9yaXpvbnRhbFJhZGlpWzBdLCB2ZXJ0aWNhbFJhZGlpWzBdLCBDU1NWYWx1ZVBh
aXI6OkRyb3BJZGVudGljYWxWYWx1ZXMpKTsKKyAgICAgICAgc2hhcGUtPnNldFRvcFJpZ2h0UmFk
aXVzKENTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhvcml6b250YWxSYWRpaVsxXSwgdmVydGljYWxSYWRp
aVsxXSwgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVzKSk7CisgICAgICAgIHNoYXBl
LT5zZXRCb3R0b21SaWdodFJhZGl1cyhDU1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsUmFk
aWlbMl0sIHZlcnRpY2FsUmFkaWlbMl0sIENTU1ZhbHVlUGFpcjo6RHJvcElkZW50aWNhbFZhbHVl
cykpOworICAgICAgICBzaGFwZS0+c2V0Qm90dG9tTGVmdFJhZGl1cyhDU1NWYWx1ZVBhaXI6OmNy
ZWF0ZShob3Jpem9udGFsUmFkaWlbM10sIHZlcnRpY2FsUmFkaWlbM10sIENTU1ZhbHVlUGFpcjo6
RHJvcElkZW50aWNhbFZhbHVlcykpOworICAgIH0KKyAgICByZXR1cm4gc2hhcGU7Cit9CisKK3N0
YXRpYyBDU1NWYWx1ZSogY29uc3VtZUJhc2ljU2hhcGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ1NTVmFsdWUqIHNo
YXBlID0gbnVsbHB0cjsKKyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBGdW5jdGlvblRv
a2VuKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2Uu
cGVlaygpLmZ1bmN0aW9uSWQoKTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlQ29weSA9
IHJhbmdlOworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihy
YW5nZUNvcHkpOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZUNpcmNsZSkKKyAgICAgICAgc2hhcGUg
PSBjb25zdW1lQmFzaWNTaGFwZUNpcmNsZShhcmdzLCBjb250ZXh0KTsKKyAgICBlbHNlIGlmIChp
ZCA9PSBDU1NWYWx1ZUVsbGlwc2UpCisgICAgICAgIHNoYXBlID0gY29uc3VtZUJhc2ljU2hhcGVF
bGxpcHNlKGFyZ3MsIGNvbnRleHQpOworICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlUG9seWdv
bikKKyAgICAgICAgc2hhcGUgPSBjb25zdW1lQmFzaWNTaGFwZVBvbHlnb24oYXJncywgY29udGV4
dCk7CisgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVJbnNldCkKKyAgICAgICAgc2hhcGUgPSBj
b25zdW1lQmFzaWNTaGFwZUluc2V0KGFyZ3MsIGNvbnRleHQpOworICAgIGlmICghc2hhcGUgfHwg
IWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmFuZ2UgPSByYW5n
ZUNvcHk7CisgICAgcmV0dXJuIHNoYXBlOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVX
ZWJraXRDbGlwUGF0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2Vy
Q29udGV4dCYgY29udGV4dCkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFs
dWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICBpZiAoQ1NT
VVJJVmFsdWUqIHVybCA9IGNvbnN1bWVVcmwocmFuZ2UpKQorICAgICAgICByZXR1cm4gdXJsOwor
ICAgIHJldHVybiBjb25zdW1lQmFzaWNTaGFwZShyYW5nZSwgY29udGV4dCk7Cit9CisKK3N0YXRp
YyBDU1NWYWx1ZSogY29uc3VtZVNoYXBlT3V0c2lkZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBpZiAoQ1NTVmFsdWUq
IGltYWdlVmFsdWUgPSBjb25zdW1lSW1hZ2VPck5vbmUocmFuZ2UsIGNvbnRleHQpKQorICAgICAg
ICByZXR1cm4gaW1hZ2VWYWx1ZTsKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgaWYgKENTU1ZhbHVlKiBib3hWYWx1ZSA9
IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUNvbnRlbnRCb3gsIENTU1ZhbHVlUGFkZGluZ0JveCwgQ1NT
VmFsdWVCb3JkZXJCb3gsIENTU1ZhbHVlTWFyZ2luQm94PihyYW5nZSkpCisgICAgICAgIGxpc3Qt
PmFwcGVuZCgqYm94VmFsdWUpOworICAgIGlmIChDU1NWYWx1ZSogc2hhcGVWYWx1ZSA9IGNvbnN1
bWVCYXNpY1NoYXBlKHJhbmdlLCBjb250ZXh0KSkgeworICAgICAgICBsaXN0LT5hcHBlbmQoKnNo
YXBlVmFsdWUpOworICAgICAgICBpZiAobGlzdC0+bGVuZ3RoKCkgPCAyKSB7CisgICAgICAgICAg
ICBpZiAoQ1NTVmFsdWUqIGJveFZhbHVlID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQ29udGVudEJv
eCwgQ1NTVmFsdWVQYWRkaW5nQm94LCBDU1NWYWx1ZUJvcmRlckJveCwgQ1NTVmFsdWVNYXJnaW5C
b3g+KHJhbmdlKSkKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoKmJveFZhbHVlKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBpZiAoIWxpc3QtPmxlbmd0aCgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gbGlzdDsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1l
Q29udGVudERpc3RyaWJ1dGlvbk92ZXJmbG93UG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UpCit7CisgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVC
YXNlbGluZSwgQ1NTVmFsdWVMYXN0QmFzZWxpbmU+KHJhbmdlLnBlZWsoKS5pZCgpKSkKKyAgICAg
ICAgcmV0dXJuIENTU0NvbnRlbnREaXN0cmlidXRpb25WYWx1ZTo6Y3JlYXRlKENTU1ZhbHVlSW52
YWxpZCwgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpLCBDU1NWYWx1ZUlu
dmFsaWQpOworCisgICAgQ1NTVmFsdWVJRCBkaXN0cmlidXRpb24gPSBDU1NWYWx1ZUludmFsaWQ7
CisgICAgQ1NTVmFsdWVJRCBwb3NpdGlvbiA9IENTU1ZhbHVlSW52YWxpZDsKKyAgICBDU1NWYWx1
ZUlEIG92ZXJmbG93ID0gQ1NTVmFsdWVJbnZhbGlkOworICAgIGRvIHsKKyAgICAgICAgQ1NTVmFs
dWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgICAgICBpZiAoaWRlbnRNYXRjaGVzPENT
U1ZhbHVlU3BhY2VCZXR3ZWVuLCBDU1NWYWx1ZVNwYWNlQXJvdW5kLCBDU1NWYWx1ZVNwYWNlRXZl
bmx5LCBDU1NWYWx1ZVN0cmV0Y2g+KGlkKSkgeworICAgICAgICAgICAgaWYgKGRpc3RyaWJ1dGlv
biAhPSBDU1NWYWx1ZUludmFsaWQpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgICAgICBkaXN0cmlidXRpb24gPSBpZDsKKyAgICAgICAgfSBlbHNlIGlmIChpZGVudE1h
dGNoZXM8Q1NTVmFsdWVTdGFydCwgQ1NTVmFsdWVFbmQsIENTU1ZhbHVlQ2VudGVyLCBDU1NWYWx1
ZUZsZXhTdGFydCwgQ1NTVmFsdWVGbGV4RW5kLCBDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+
KGlkKSkgeworICAgICAgICAgICAgaWYgKHBvc2l0aW9uICE9IENTU1ZhbHVlSW52YWxpZCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHBvc2l0aW9uID0gaWQ7
CisgICAgICAgIH0gZWxzZSBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlVW5zYWZlLCBDU1NWYWx1
ZVNhZmU+KGlkKSkgeworICAgICAgICAgICAgaWYgKG92ZXJmbG93ICE9IENTU1ZhbHVlSW52YWxp
ZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIG92ZXJmbG93
ID0gaWQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgfQorICAgICAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAg
IH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgpKTsKKworICAgIC8vIFRoZSBncmFtbWFyIHN0YXRlcyB0
aGF0IHdlIHNob3VsZCBoYXZlIGF0IGxlYXN0IDxjb250ZW50LWRpc3RyaWJ1dGlvbj4gb3IgPGNv
bnRlbnQtcG9zaXRpb24+LgorICAgIGlmIChwb3NpdGlvbiA9PSBDU1NWYWx1ZUludmFsaWQgJiYg
ZGlzdHJpYnV0aW9uID09IENTU1ZhbHVlSW52YWxpZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICAvLyBUaGUgZ3JhbW1hciBzdGF0ZXMgdGhhdCA8b3ZlcmZsb3ctcG9zaXRpb24+IG11
c3QgYmUgYXNzb2NpYXRlZCB0byA8Y29udGVudC1wb3NpdGlvbj4uCisgICAgaWYgKG92ZXJmbG93
ICE9IENTU1ZhbHVlSW52YWxpZCAmJiBwb3NpdGlvbiA9PSBDU1NWYWx1ZUludmFsaWQpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIENTU0NvbnRlbnREaXN0cmlidXRpb25W
YWx1ZTo6Y3JlYXRlKGRpc3RyaWJ1dGlvbiwgcG9zaXRpb24sIG92ZXJmbG93KTsKK30KKworc3Rh
dGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lQm9yZGVySW1hZ2VSZXBlYXRLZXl3b3JkKENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBjb25zdW1lSWRlbnQ8Q1NT
VmFsdWVTdHJldGNoLCBDU1NWYWx1ZVJlcGVhdCwgQ1NTVmFsdWVTcGFjZSwgQ1NTVmFsdWVSb3Vu
ZD4ocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVCb3JkZXJJbWFnZVJlcGVh
dChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSog
aG9yaXpvbnRhbCA9IGNvbnN1bWVCb3JkZXJJbWFnZVJlcGVhdEtleXdvcmQocmFuZ2UpOworICAg
IGlmICghaG9yaXpvbnRhbCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHZlcnRpY2FsID0gY29uc3VtZUJvcmRlckltYWdlUmVwZWF0S2V5d29yZChyYW5n
ZSk7CisgICAgaWYgKCF2ZXJ0aWNhbCkKKyAgICAgICAgdmVydGljYWwgPSBob3Jpem9udGFsOwor
ICAgIHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsLCB2ZXJ0aWNhbCwgQ1NT
VmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVzKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lQm9yZGVySW1hZ2VTbGljZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBib29sIGZpbGwgPSBjb25zdW1lSWRlbnQ8Q1NTVmFs
dWVGaWxsPihyYW5nZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNsaWNlc1s0XSA9IHsgMCB9
OworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IDQ7ICsraW5kZXgpIHsKKyAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlID0gY29uc3VtZVBlcmNlbnQocmFuZ2UsIFZh
bHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICB2
YWx1ZSA9IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAg
ICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgc2xpY2VzW2luZGV4
XSA9IHZhbHVlOworICAgIH0KKyAgICBpZiAoIXNsaWNlc1swXSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgaWYgKGNvbnN1bWVJZGVudDxDU1NWYWx1ZUZpbGw+KHJhbmdlKSkgeworICAg
ICAgICBpZiAoZmlsbCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBmaWxs
ID0gdHJ1ZTsKKyAgICB9CisgICAgY29tcGxldGU0U2lkZXMoc2xpY2VzKTsKKyAgICAvLyBGSVhN
RTogRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCAtd2Via2l0LWJvcmRlci1pbWFnZSwgLXdl
YmtpdC1tYXNrLWJveC1pbWFnZSBhbmQgLXdlYmtpdC1ib3gtcmVmbGVjdCBoYXZlIHRvIGRvIGEg
ZmlsbCBieSBkZWZhdWx0LgorICAgIC8vIEZJWE1FOiBXaGF0IGRvIHdlIGRvIHdpdGggLXdlYmtp
dC1ib3gtcmVmbGVjdCBhbmQgLXdlYmtpdC1tYXNrLWJveC1pbWFnZT8gUHJvYmFibHkganVzdCBo
YXZlIHRvIGxlYXZlIHRoZW0gZmlsbGluZy4uLgorICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckltYWdlIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0TWFz
a0JveEltYWdlIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Qm94UmVmbGVjdCkKKyAg
ICAgICAgZmlsbCA9IHRydWU7CisgICAgcmV0dXJuIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZTo6
Y3JlYXRlKENTU1F1YWRWYWx1ZTo6Y3JlYXRlKHNsaWNlc1swXSwgc2xpY2VzWzFdLCBzbGljZXNb
Ml0sIHNsaWNlc1szXSwgQ1NTUXVhZFZhbHVlOjpTZXJpYWxpemVBc1F1YWQpLCBmaWxsKTsKK30K
Kworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQm9yZGVySW1hZ2VPdXRzZXQoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIG91dHNldHNbNF0gPSB7
IDAgfTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSA9IG51bGxwdHI7CisgICAgZm9y
IChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IDQ7ICsraW5kZXgpIHsKKyAgICAgICAgdmFsdWUg
PSBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICBp
ZiAoIXZhbHVlKQorICAgICAgICAgICAgdmFsdWUgPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBIVE1M
U3RhbmRhcmRNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICBpZiAoIXZhbHVl
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG91dHNldHNbaW5kZXhdID0gdmFsdWU7Cisg
ICAgfQorICAgIGlmICghb3V0c2V0c1swXSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
Y29tcGxldGU0U2lkZXMob3V0c2V0cyk7CisgICAgcmV0dXJuIENTU1F1YWRWYWx1ZTo6Y3JlYXRl
KG91dHNldHNbMF0sIG91dHNldHNbMV0sIG91dHNldHNbMl0sIG91dHNldHNbM10sIENTU1F1YWRW
YWx1ZTo6U2VyaWFsaXplQXNRdWFkKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQm9y
ZGVySW1hZ2VXaWR0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogd2lkdGhzWzRdID0geyAwIH07CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSog
dmFsdWUgPSBudWxscHRyOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCA0OyAr
K2luZGV4KSB7CisgICAgICAgIHZhbHVlID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5n
ZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHZhbHVlID0g
Y29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgSFRNTFN0YW5kYXJkTW9kZSwgVmFsdWVSYW5n
ZU5vbk5lZ2F0aXZlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworICAgICAgICBpZiAoIXZhbHVl
KQorICAgICAgICAgICAgdmFsdWUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBdXRvPihyYW5nZSk7
CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgd2lkdGhz
W2luZGV4XSA9IHZhbHVlOworICAgIH0KKyAgICBpZiAoIXdpZHRoc1swXSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgY29tcGxldGU0U2lkZXMod2lkdGhzKTsKKyAgICByZXR1cm4gQ1NT
UXVhZFZhbHVlOjpjcmVhdGUod2lkdGhzWzBdLCB3aWR0aHNbMV0sIHdpZHRoc1syXSwgd2lkdGhz
WzNdLCBDU1NRdWFkVmFsdWU6OlNlcmlhbGl6ZUFzUXVhZCk7Cit9CisKK3N0YXRpYyBib29sIGNv
bnN1bWVCb3JkZXJJbWFnZUNvbXBvbmVudHMoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIENT
U1ZhbHVlKiYgc291cmNlLAorICAgIENTU1ZhbHVlKiYgc2xpY2UsIENTU1ZhbHVlKiYgd2lkdGgs
IENTU1ZhbHVlKiYgb3V0c2V0LCBDU1NWYWx1ZSomIHJlcGVhdCkKK3sKKyAgICBkbyB7CisgICAg
ICAgIGlmICghc291cmNlKSB7CisgICAgICAgICAgICBzb3VyY2UgPSBjb25zdW1lSW1hZ2VPck5v
bmUocmFuZ2UsIGNvbnRleHQpOworICAgICAgICAgICAgaWYgKHNvdXJjZSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXJlcGVhdCkgeworICAgICAg
ICAgICAgcmVwZWF0ID0gY29uc3VtZUJvcmRlckltYWdlUmVwZWF0KHJhbmdlKTsKKyAgICAgICAg
ICAgIGlmIChyZXBlYXQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKCFzbGljZSkgeworICAgICAgICAgICAgc2xpY2UgPSBjb25zdW1lQm9yZGVySW1h
Z2VTbGljZShwcm9wZXJ0eSwgcmFuZ2UpOworICAgICAgICAgICAgaWYgKHNsaWNlKSB7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKCF3aWR0aCAmJiAhb3V0c2V0KTsKKyAgICAgICAgICAgICAgICBp
ZiAoY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgd2lkdGggPSBjb25zdW1lQm9yZGVySW1hZ2VXaWR0aChyYW5nZSk7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgb3V0c2V0ID0gY29uc3VtZUJvcmRlckltYWdlT3V0
c2V0KHJhbmdlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghb3V0c2V0KQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIGlmICghd2lkdGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0
aWMgQ1NTVmFsdWUqIGNvbnN1bWVXZWJraXRCb3JkZXJJbWFnZShDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5LCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYg
Y29udGV4dCkKK3sKKyAgICBDU1NWYWx1ZSogc291cmNlID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1
ZSogc2xpY2UgPSBudWxscHRyOworICAgIENTU1ZhbHVlKiB3aWR0aCA9IG51bGxwdHI7CisgICAg
Q1NTVmFsdWUqIG91dHNldCA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIHJlcGVhdCA9IG51bGxw
dHI7CisgICAgaWYgKGNvbnN1bWVCb3JkZXJJbWFnZUNvbXBvbmVudHMocHJvcGVydHksIHJhbmdl
LCBjb250ZXh0LCBzb3VyY2UsIHNsaWNlLCB3aWR0aCwgb3V0c2V0LCByZXBlYXQpKQorICAgICAg
ICByZXR1cm4gY3JlYXRlQm9yZGVySW1hZ2VWYWx1ZShzb3VyY2UsIHNsaWNlLCB3aWR0aCwgb3V0
c2V0LCByZXBlYXQpOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgQ1NTVmFsdWUq
IGNvbnN1bWVSZWZsZWN0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJz
ZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBkaXJlY3Rpb24g
PSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBYm92ZSwgQ1NTVmFsdWVCZWxvdywgQ1NTVmFsdWVMZWZ0
LCBDU1NWYWx1ZVJpZ2h0PihyYW5nZSk7CisgICAgaWYgKCFkaXJlY3Rpb24pCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIG9mZnNldCA9IG51bGxwdHI7
CisgICAgaWYgKHJhbmdlLmF0RW5kKCkpIHsKKyAgICAgICAgb2Zmc2V0ID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZSgwLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBpeGVscyk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgb2Zmc2V0ID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5n
ZSwgY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VBbGwsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7
CisgICAgICAgIGlmICghb2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCisgICAgQ1NTVmFsdWUqIG1hc2sgPSBudWxscHRyOworICAgIGlmICghcmFuZ2UuYXRFbmQo
KSkgeworICAgICAgICBtYXNrID0gY29uc3VtZVdlYmtpdEJvcmRlckltYWdlKENTU1Byb3BlcnR5
V2Via2l0Qm94UmVmbGVjdCwgcmFuZ2UsIGNvbnRleHQpOworICAgICAgICBpZiAoIW1hc2spCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIENTU1JlZmxlY3RW
YWx1ZTo6Y3JlYXRlKGRpcmVjdGlvbiwgb2Zmc2V0LCBtYXNrKTsKK30KKworc3RhdGljIENTU1Zh
bHVlKiBjb25zdW1lRm9udFNpemVBZGp1c3QoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7
CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVOdW1iZXIocmFuZ2Us
IFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUlt
YWdlT3JpZW50YXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJh
bmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlRnJvbUltYWdlKQorICAgICAgICByZXR1cm4gY29u
c3VtZUlkZW50KHJhbmdlKTsKKyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBOdW1iZXJU
b2tlbikgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogYW5nbGUgPSBjb25zdW1lQW5nbGUo
cmFuZ2UpOworICAgICAgICBpZiAoYW5nbGUgJiYgYW5nbGUtPmdldERvdWJsZVZhbHVlKCkgPT0g
MCkKKyAgICAgICAgICAgIHJldHVybiBhbmdsZTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUJhY2tncm91bmRCbGVuZE1vZGUoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWso
KS5pZCgpOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZU92
ZXJsYXkgfHwgKGlkID49IENTU1ZhbHVlTXVsdGlwbHkgJiYgaWQgPD0gQ1NTVmFsdWVMdW1pbm9z
aXR5KSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUJhY2tncm91bmRBdHRhY2htZW50
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBjb25zdW1lSWRlbnQ8
Q1NTVmFsdWVTY3JvbGwsIENTU1ZhbHVlRml4ZWQsIENTU1ZhbHVlTG9jYWw+KHJhbmdlKTsKK30K
Kworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQmFja2dyb3VuZEJveChDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlQm9yZGVyQm94
LCBDU1NWYWx1ZVBhZGRpbmdCb3gsIENTU1ZhbHVlQ29udGVudEJveD4ocmFuZ2UpOworfQorCitz
dGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVCYWNrZ3JvdW5kQ29tcG9zaXRlKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBjb25zdW1lSWRlbnRSYW5nZShyYW5nZSwgQ1NT
VmFsdWVDbGVhciwgQ1NTVmFsdWVQbHVzTGlnaHRlcik7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSog
Y29uc3VtZU1hc2tTb3VyY2VUeXBlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAg
IEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NNYXNrU291cmNlVHlwZUVuYWJsZWQo
KSk7CisgICAgcmV0dXJuIGNvbnN1bWVJZGVudDxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlQWxwaGEs
IENTU1ZhbHVlTHVtaW5hbmNlPihyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3Vt
ZVByZWZpeGVkQmFja2dyb3VuZEJveChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAg
ICAvLyBUaGUgdmFsdWVzICdib3JkZXInLCAncGFkZGluZycgYW5kICdjb250ZW50JyBhcmUgZGVw
cmVjYXRlZCBhbmQgZG8gbm90IGFwcGx5IHRvIHRoZSB2ZXJzaW9uIG9mIHRoZSBwcm9wZXJ0eSB0
aGF0IGhhcyB0aGUgLXdlYmtpdC0gcHJlZml4IHJlbW92ZWQuCisgICAgaWYgKENTU1ZhbHVlKiB2
YWx1ZSA9IGNvbnN1bWVJZGVudFJhbmdlKHJhbmdlLCBDU1NWYWx1ZUJvcmRlciwgQ1NTVmFsdWVQ
YWRkaW5nQm94KSkKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGlmICgocHJvcGVydHkgPT0g
Q1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xpcCB8fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tDbGlwKSAmJiByYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZVRleHQpCisg
ICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBudWxscHRyOwor
fQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVCYWNrZ3JvdW5kU2l6ZShDU1NQcm9wZXJ0eUlE
IHVucmVzb2x2ZWRQcm9wZXJ0eSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNl
ck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlQ29u
dGFpbiwgQ1NTVmFsdWVDb3Zlcj4ocmFuZ2UucGVlaygpLmlkKCkpKQorICAgICAgICByZXR1cm4g
Y29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBob3Jpem9udGFs
ID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQXV0bz4ocmFuZ2UpOworICAgIGlmICghaG9yaXpvbnRh
bCkKKyAgICAgICAgaG9yaXpvbnRhbCA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNz
c1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CisKKyAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogdmVydGljYWwgPSBudWxscHRyOworICAgIGlmICghcmFuZ2Uu
YXRFbmQoKSkgeworICAgICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBdXRv
KSAvLyBgYXV0bycgaXMgdGhlIGRlZmF1bHQKKyAgICAgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNs
dWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZlcnRpY2FsID0g
Y29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFs
bCwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKKyAgICB9IGVsc2UgaWYgKHVucmVzb2x2ZWRQcm9w
ZXJ0eSA9PSBDU1NQcm9wZXJ0eUFsaWFzV2Via2l0QmFja2dyb3VuZFNpemUpIHsKKyAgICAgICAg
Ly8gTGVnYWN5IHN5bnRheDogIi13ZWJraXQtYmFja2dyb3VuZC1zaXplOiAxMHB4IiBpcyBlcXVp
dmFsZW50IHRvICJiYWNrZ3JvdW5kLXNpemU6IDEwcHggMTBweCIuCisgICAgICAgIHZlcnRpY2Fs
ID0gaG9yaXpvbnRhbDsKKyAgICB9CisgICAgaWYgKCF2ZXJ0aWNhbCkKKyAgICAgICAgcmV0dXJu
IGhvcml6b250YWw7CisgICAgcmV0dXJuIENTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhvcml6b250YWws
IHZlcnRpY2FsLCBDU1NWYWx1ZVBhaXI6OktlZXBJZGVudGljYWxWYWx1ZXMpOworfQorCitzdGF0
aWMgQ1NTVmFsdWVMaXN0KiBjb25zdW1lR3JpZEF1dG9GbG93KENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlKQoreworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiByb3dPckNvbHVtblZhbHVlID0gY29u
c3VtZUlkZW50PENTU1ZhbHVlUm93LCBDU1NWYWx1ZUNvbHVtbj4ocmFuZ2UpOworICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBkZW5zZUFsZ29yaXRobSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZURlbnNl
PihyYW5nZSk7CisgICAgaWYgKCFyb3dPckNvbHVtblZhbHVlKSB7CisgICAgICAgIHJvd09yQ29s
dW1uVmFsdWUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVSb3csIENTU1ZhbHVlQ29sdW1uPihyYW5n
ZSk7CisgICAgICAgIGlmICghcm93T3JDb2x1bW5WYWx1ZSAmJiAhZGVuc2VBbGdvcml0aG0pCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgQ1NTVmFsdWVMaXN0KiBwYXJz
ZWRWYWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgaWYg
KHJvd09yQ29sdW1uVmFsdWUpCisgICAgICAgIHBhcnNlZFZhbHVlcy0+YXBwZW5kKCpyb3dPckNv
bHVtblZhbHVlKTsKKyAgICBpZiAoZGVuc2VBbGdvcml0aG0pCisgICAgICAgIHBhcnNlZFZhbHVl
cy0+YXBwZW5kKCpkZW5zZUFsZ29yaXRobSk7CisgICAgcmV0dXJuIHBhcnNlZFZhbHVlczsKK30K
Kworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQmFja2dyb3VuZENvbXBvbmVudChDU1NQcm9wZXJ0
eUlEIHVucmVzb2x2ZWRQcm9wZXJ0eSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0
IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgc3dpdGNoICh1bnJlc29sdmVkUHJv
cGVydHkpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXA6CisgICAgICAgIHJl
dHVybiBjb25zdW1lQmFja2dyb3VuZEJveChyYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRCbGVuZE1vZGU6CisgICAgICAgIHJldHVybiBjb25zdW1lQmFja2dyb3VuZEJsZW5k
TW9kZShyYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50Ogor
ICAgICAgICByZXR1cm4gY29uc3VtZUJhY2tncm91bmRBdHRhY2htZW50KHJhbmdlKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVC
YWNrZ3JvdW5kQm94KHJhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0NvbXBv
c2l0ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCYWNrZ3JvdW5kQ29tcG9zaXRlKHJhbmdlKTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5TWFza1NvdXJjZVR5cGU6CisgICAgICAgIHJldHVybiBjb25z
dW1lTWFza1NvdXJjZVR5cGUocmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNr
Z3JvdW5kQ2xpcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZE9yaWdpbjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tPcmlnaW46CisgICAgICAgIHJldHVybiBjb25zdW1lUHJlZml4ZWRCYWNrZ3Jv
dW5kQm94KHVucmVzb2x2ZWRQcm9wZXJ0eSwgcmFuZ2UsIGNvbnRleHQpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJ
bWFnZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJbWFnZU9yTm9uZShyYW5nZSwgY29udGV4dCk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblg6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblg6CisgICAgICAgIHJldHVybiBjb25zdW1lUG9zaXRp
b25YKHJhbmdlLCBjb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91
bmRQb3NpdGlvblk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblk6Cisg
ICAgICAgIHJldHVybiBjb25zdW1lUG9zaXRpb25ZKHJhbmdlLCBjb250ZXh0Lm1vZGUoKSk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplOgorICAgIGNhc2UgQ1NTUHJvcGVydHlB
bGlhc1dlYmtpdEJhY2tncm91bmRTaXplOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNr
U2l6ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCYWNrZ3JvdW5kU2l6ZSh1bnJlc29sdmVkUHJv
cGVydHksIHJhbmdlLCBjb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDb2xvcjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb2xvcihyYW5nZSwgY29udGV4dC5t
b2RlKCkpOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH07CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK3N0YXRpYyB2b2lkIGFkZEJhY2tncm91bmRWYWx1ZShDU1NWYWx1ZSom
IGxpc3QsIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAobGlzdCkgeworICAgICAgICBpZiAo
IWxpc3QtPmlzQmFzZVZhbHVlTGlzdCgpKSB7CisgICAgICAgICAgICBDU1NWYWx1ZSogZmlyc3RW
YWx1ZSA9IGxpc3Q7CisgICAgICAgICAgICBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21t
YVNlcGFyYXRlZCgpOworICAgICAgICAgICAgdG9DU1NWYWx1ZUxpc3QobGlzdCktPmFwcGVuZCgq
Zmlyc3RWYWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgdG9DU1NWYWx1ZUxpc3QobGlzdCktPmFw
cGVuZCgqdmFsdWUpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFRvIGNvbnNlcnZlIG1lbW9y
eSB3ZSBkb24ndCBhY3R1YWxseSB3cmFwIGEgc2luZ2xlIHZhbHVlIGluIGEgbGlzdC4KKyAgICAg
ICAgbGlzdCA9IHZhbHVlOworICAgIH0KK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQ29t
bWFTZXBhcmF0ZWRCYWNrZ3JvdW5kQ29tcG9uZW50KENTU1Byb3BlcnR5SUQgdW5yZXNvbHZlZFBy
b3BlcnR5LCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4
dCYgY29udGV4dCkKK3sKKyAgICBDU1NWYWx1ZSogcmVzdWx0ID0gbnVsbHB0cjsKKyAgICBkbyB7
CisgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IGNvbnN1bWVCYWNrZ3JvdW5kQ29tcG9uZW50KHVu
cmVzb2x2ZWRQcm9wZXJ0eSwgcmFuZ2UsIGNvbnRleHQpOworICAgICAgICBpZiAoIXZhbHVlKQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGFkZEJhY2tncm91bmRWYWx1ZShy
ZXN1bHQsIHZhbHVlKTsKKyAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNw
YWNlKHJhbmdlKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIENTU1ByaW1pdGl2
ZVZhbHVlKiBjb25zdW1lU2VsZlBvc2l0aW9uS2V5d29yZChDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSkKK3sKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgaWYg
KGlkID09IENTU1ZhbHVlU3RhcnQgfHwgaWQgPT0gQ1NTVmFsdWVFbmQgfHwgaWQgPT0gQ1NTVmFs
dWVDZW50ZXIKKyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVTZWxmU3RhcnQgfHwgaWQgPT0gQ1NT
VmFsdWVTZWxmRW5kIHx8IGlkID09IENTU1ZhbHVlRmxleFN0YXJ0CisgICAgICAgIHx8IGlkID09
IENTU1ZhbHVlRmxleEVuZCB8fCBpZCA9PSBDU1NWYWx1ZUxlZnQgfHwgaWQgPT0gQ1NTVmFsdWVS
aWdodCkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVNlbGZQb3NpdGlvbk92ZXJmbG93
UG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKGlkZW50TWF0
Y2hlczxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZVN0cmV0Y2gsIENTU1Zh
bHVlQmFzZWxpbmUsIENTU1ZhbHVlTGFzdEJhc2VsaW5lPihyYW5nZS5wZWVrKCkuaWQoKSkpCisg
ICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIG92ZXJmbG93UG9zaXRpb24gPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVVbnNhZmUsIENTU1Zh
bHVlU2FmZT4ocmFuZ2UpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWxmUG9zaXRpb24gPSBj
b25zdW1lU2VsZlBvc2l0aW9uS2V5d29yZChyYW5nZSk7CisgICAgaWYgKCFzZWxmUG9zaXRpb24p
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghb3ZlcmZsb3dQb3NpdGlvbikKKyAg
ICAgICAgb3ZlcmZsb3dQb3NpdGlvbiA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZVVuc2FmZSwgQ1NT
VmFsdWVTYWZlPihyYW5nZSk7CisgICAgaWYgKG92ZXJmbG93UG9zaXRpb24pCisgICAgICAgIHJl
dHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShzZWxmUG9zaXRpb24sIG92ZXJmbG93UG9zaXRpb24s
IENTU1ZhbHVlUGFpcjo6RHJvcElkZW50aWNhbFZhbHVlcyk7CisgICAgcmV0dXJuIHNlbGZQb3Np
dGlvbjsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQWxpZ25JdGVtcyhDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICAvLyBhbGlnbi1pdGVtcyBwcm9wZXJ0eSBkb2VzIG5v
dCBhbGxvdyB0aGUgJ2F1dG8nIHZhbHVlLgorICAgIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVB
dXRvPihyYW5nZS5wZWVrKCkuaWQoKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiBjb25zdW1lU2VsZlBvc2l0aW9uT3ZlcmZsb3dQb3NpdGlvbihyYW5nZSk7Cit9CisKK3N0
YXRpYyBDU1NWYWx1ZSogY29uc3VtZUp1c3RpZnlJdGVtcyhDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSkKK3sKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlQ29weSA9IHJhbmdlOworICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBsZWdhY3kgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVMZWdhY3k+
KHJhbmdlQ29weSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBvc2l0aW9uS2V5d29yZCA9IGNv
bnN1bWVJZGVudDxDU1NWYWx1ZUNlbnRlciwgQ1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0Pihy
YW5nZUNvcHkpOworICAgIGlmICghbGVnYWN5KQorICAgICAgICBsZWdhY3kgPSBjb25zdW1lSWRl
bnQ8Q1NTVmFsdWVMZWdhY3k+KHJhbmdlQ29weSk7CisgICAgaWYgKGxlZ2FjeSAmJiBwb3NpdGlv
bktleXdvcmQpIHsKKyAgICAgICAgcmFuZ2UgPSByYW5nZUNvcHk7CisgICAgICAgIHJldHVybiBD
U1NWYWx1ZVBhaXI6OmNyZWF0ZShsZWdhY3ksIHBvc2l0aW9uS2V5d29yZCwgQ1NTVmFsdWVQYWly
OjpEcm9wSWRlbnRpY2FsVmFsdWVzKTsKKyAgICB9CisgICAgcmV0dXJuIGNvbnN1bWVTZWxmUG9z
aXRpb25PdmVyZmxvd1Bvc2l0aW9uKHJhbmdlKTsKK30KKworc3RhdGljIENTU0N1c3RvbUlkZW50
VmFsdWUqIGNvbnN1bWVDdXN0b21JZGVudEZvckdyaWRMaW5lKENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8gfHwg
cmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVTcGFuKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gY29uc3VtZUN1c3RvbUlkZW50KHJhbmdlKTsKK30KKworc3RhdGljIENT
U1ZhbHVlKiBjb25zdW1lR3JpZExpbmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7Cisg
ICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgcmV0dXJu
IGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogc3BhblZhbHVl
ID0gbnVsbHB0cjsKKyAgICBDU1NDdXN0b21JZGVudFZhbHVlKiBncmlkTGluZU5hbWUgPSBudWxs
cHRyOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBudW1lcmljVmFsdWUgPSBjb25zdW1lSW50ZWdl
cihyYW5nZSk7CisgICAgaWYgKG51bWVyaWNWYWx1ZSkgeworICAgICAgICBncmlkTGluZU5hbWUg
PSBjb25zdW1lQ3VzdG9tSWRlbnRGb3JHcmlkTGluZShyYW5nZSk7CisgICAgICAgIHNwYW5WYWx1
ZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZVNwYW4+KHJhbmdlKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBzcGFuVmFsdWUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVTcGFuPihyYW5nZSk7CisgICAg
ICAgIGlmIChzcGFuVmFsdWUpIHsKKyAgICAgICAgICAgIG51bWVyaWNWYWx1ZSA9IGNvbnN1bWVJ
bnRlZ2VyKHJhbmdlKTsKKyAgICAgICAgICAgIGdyaWRMaW5lTmFtZSA9IGNvbnN1bWVDdXN0b21J
ZGVudEZvckdyaWRMaW5lKHJhbmdlKTsKKyAgICAgICAgICAgIGlmICghbnVtZXJpY1ZhbHVlKQor
ICAgICAgICAgICAgICAgIG51bWVyaWNWYWx1ZSA9IGNvbnN1bWVJbnRlZ2VyKHJhbmdlKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGdyaWRMaW5lTmFtZSA9IGNvbnN1bWVDdXN0b21J
ZGVudEZvckdyaWRMaW5lKHJhbmdlKTsKKyAgICAgICAgICAgIGlmIChncmlkTGluZU5hbWUpIHsK
KyAgICAgICAgICAgICAgICBudW1lcmljVmFsdWUgPSBjb25zdW1lSW50ZWdlcihyYW5nZSk7Cisg
ICAgICAgICAgICAgICAgc3BhblZhbHVlID0gY29uc3VtZUlkZW50PENTU1ZhbHVlU3Bhbj4ocmFu
Z2UpOworICAgICAgICAgICAgICAgIGlmICghc3BhblZhbHVlICYmICFudW1lcmljVmFsdWUpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBncmlkTGluZU5hbWU7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgaWYgKHNwYW5WYWx1ZSAmJiAhbnVtZXJpY1ZhbHVlICYmICFn
cmlkTGluZU5hbWUpCisgICAgICAgIHJldHVybiBudWxscHRyOyAvLyAic3BhbiIga2V5d29yZCBh
bG9uZSBpcyBpbnZhbGlkLgorICAgIGlmIChzcGFuVmFsdWUgJiYgbnVtZXJpY1ZhbHVlICYmIG51
bWVyaWNWYWx1ZS0+Z2V0SW50VmFsdWUoKSA8IDApCisgICAgICAgIHJldHVybiBudWxscHRyOyAv
LyBOZWdhdGl2ZSBudW1iZXJzIGFyZSBub3QgYWxsb3dlZCBmb3Igc3Bhbi4KKyAgICBpZiAobnVt
ZXJpY1ZhbHVlICYmIG51bWVyaWNWYWx1ZS0+Z2V0SW50VmFsdWUoKSA9PSAwKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsgLy8gQW4gPGludGVnZXI+IHZhbHVlIG9mIHplcm8gbWFrZXMgdGhlIGRl
Y2xhcmF0aW9uIGludmFsaWQuCisKKyAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBpZiAoc3BhblZhbHVlKQorICAgICAg
ICB2YWx1ZXMtPmFwcGVuZCgqc3BhblZhbHVlKTsKKyAgICBpZiAobnVtZXJpY1ZhbHVlKQorICAg
ICAgICB2YWx1ZXMtPmFwcGVuZCgqbnVtZXJpY1ZhbHVlKTsKKyAgICBpZiAoZ3JpZExpbmVOYW1l
KQorICAgICAgICB2YWx1ZXMtPmFwcGVuZCgqZ3JpZExpbmVOYW1lKTsKKyAgICBBU1NFUlQodmFs
dWVzLT5sZW5ndGgoKSk7CisgICAgcmV0dXJuIHZhbHVlczsKK30KKworc3RhdGljIGJvb2wgaXNH
cmlkVHJhY2tGaXhlZFNpemVkKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1
ZSkKK3sKKyAgICBDU1NWYWx1ZUlEIHZhbHVlSUQgPSBwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlE
KCk7CisgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVNaW5Db250ZW50IHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVNYXhDb250ZW50IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHByaW1pdGl2
ZVZhbHVlLmlzRmxleCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworc3RhdGljIGJvb2wgaXNHcmlkVHJhY2tGaXhlZFNpemVkKGNvbnN0IENTU1ZhbHVl
JiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUuaXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICBy
ZXR1cm4gaXNHcmlkVHJhY2tGaXhlZFNpemVkKHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpKTsK
KworICAgIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBtaW5QcmltaXRpdmVWYWx1ZSA9IHRvQ1NT
UHJpbWl0aXZlVmFsdWUodG9DU1NGdW5jdGlvblZhbHVlKHZhbHVlKS5pdGVtKDApKTsKKyAgICBj
b25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgbWF4UHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2
ZVZhbHVlKHRvQ1NTRnVuY3Rpb25WYWx1ZSh2YWx1ZSkuaXRlbSgxKSk7CisgICAgcmV0dXJuIGlz
R3JpZFRyYWNrRml4ZWRTaXplZChtaW5QcmltaXRpdmVWYWx1ZSkgfHwgaXNHcmlkVHJhY2tGaXhl
ZFNpemVkKG1heFByaW1pdGl2ZVZhbHVlKTsKK30KKworc3RhdGljIFZlY3RvcjxTdHJpbmc+IHBh
cnNlR3JpZFRlbXBsYXRlQXJlYXNDb2x1bW5OYW1lcyhjb25zdCBTdHJpbmcmIGdyaWRSb3dOYW1l
cykKK3sKKyAgICBBU1NFUlQoIWdyaWRSb3dOYW1lcy5pc0VtcHR5KCkpOworICAgIFZlY3RvcjxT
dHJpbmc+IGNvbHVtbk5hbWVzOworICAgIC8vIFVzaW5nIFN0cmluZ0ltcGwgdG8gYXZvaWQgY2hl
Y2tzIGFuZCBpbmRpcmVjdGlvbiBpbiBldmVyeSBjYWxsIHRvIFN0cmluZzo6b3BlcmF0b3JbXS4K
KyAgICBTdHJpbmdJbXBsJiB0ZXh0ID0gKmdyaWRSb3dOYW1lcy5pbXBsKCk7CisKKyAgICBTdHJp
bmdCdWlsZGVyIGFyZWFOYW1lOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0ZXh0Lmxl
bmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKGlzQ1NTU3BhY2UodGV4dFtpXSkpIHsKKyAgICAg
ICAgICAgIGlmICghYXJlYU5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgY29sdW1u
TmFtZXMuYXBwZW5kKGFyZWFOYW1lLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGFyZWFO
YW1lLmNsZWFyKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAodGV4dFtpXSA9PSAnLicpIHsKKyAgICAgICAgICAgIGlmIChhcmVh
TmFtZSA9PSAiLiIpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAo
IWFyZWFOYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIGNvbHVtbk5hbWVzLmFwcGVu
ZChhcmVhTmFtZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBhcmVhTmFtZS5jbGVhcigp
OworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKCFpc05h
bWVDb2RlUG9pbnQodGV4dFtpXSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJp
bmc+KCk7CisgICAgICAgICAgICBpZiAoYXJlYU5hbWUgPT0gIi4iKSB7CisgICAgICAgICAgICAg
ICAgY29sdW1uTmFtZXMuYXBwZW5kKGFyZWFOYW1lLnRvU3RyaW5nKCkpOworICAgICAgICAgICAg
ICAgIGFyZWFOYW1lLmNsZWFyKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBhcmVhTmFtZS5hcHBlbmQodGV4dFtpXSk7CisgICAgfQorCisgICAgaWYgKCFhcmVhTmFtZS5p
c0VtcHR5KCkpCisgICAgICAgIGNvbHVtbk5hbWVzLmFwcGVuZChhcmVhTmFtZS50b1N0cmluZygp
KTsKKworICAgIHJldHVybiBjb2x1bW5OYW1lczsKK30KKworc3RhdGljIGJvb2wgcGFyc2VHcmlk
VGVtcGxhdGVBcmVhc1Jvdyhjb25zdCBTdHJpbmcmIGdyaWRSb3dOYW1lcywgTmFtZWRHcmlkQXJl
YU1hcCYgZ3JpZEFyZWFNYXAsIGNvbnN0IHNpemVfdCByb3dDb3VudCwgc2l6ZV90JiBjb2x1bW5D
b3VudCkKK3sKKyAgICBpZiAoZ3JpZFJvd05hbWVzLmlzRW1wdHkoKSB8fCBncmlkUm93TmFtZXMu
Y29udGFpbnNPbmx5V2hpdGVzcGFjZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBW
ZWN0b3I8U3RyaW5nPiBjb2x1bW5OYW1lcyA9IHBhcnNlR3JpZFRlbXBsYXRlQXJlYXNDb2x1bW5O
YW1lcyhncmlkUm93TmFtZXMpOworICAgIGlmIChyb3dDb3VudCA9PSAwKSB7CisgICAgICAgIGNv
bHVtbkNvdW50ID0gY29sdW1uTmFtZXMuc2l6ZSgpOworICAgICAgICBpZiAoY29sdW1uQ291bnQg
PT0gMCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IGVsc2UgaWYgKGNvbHVtbkNv
dW50ICE9IGNvbHVtbk5hbWVzLnNpemUoKSkgeworICAgICAgICAvLyBUaGUgZGVjbGFyYXRpb24g
aXMgaW52YWxpZCBpZiBhbGwgdGhlIHJvd3MgZG9uJ3QgaGF2ZSB0aGUgbnVtYmVyIG9mIGNvbHVt
bnMuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBjdXJy
ZW50Q29sdW1uID0gMDsgY3VycmVudENvbHVtbiA8IGNvbHVtbkNvdW50OyArK2N1cnJlbnRDb2x1
bW4pIHsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBncmlkQXJlYU5hbWUgPSBjb2x1bW5OYW1lc1tj
dXJyZW50Q29sdW1uXTsKKworICAgICAgICAvLyBVbmFtZWQgYXJlYXMgYXJlIGFsd2F5cyB2YWxp
ZCAod2UgY29uc2lkZXIgdGhlbSB0byBiZSAxeDEpLgorICAgICAgICBpZiAoZ3JpZEFyZWFOYW1l
ID09ICIuIikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHNpemVfdCBsb29rQWhl
YWRDb2x1bW4gPSBjdXJyZW50Q29sdW1uICsgMTsKKyAgICAgICAgd2hpbGUgKGxvb2tBaGVhZENv
bHVtbiA8IGNvbHVtbkNvdW50ICYmIGNvbHVtbk5hbWVzW2xvb2tBaGVhZENvbHVtbl0gPT0gZ3Jp
ZEFyZWFOYW1lKQorICAgICAgICAgICAgbG9va0FoZWFkQ29sdW1uKys7CisKKyAgICAgICAgTmFt
ZWRHcmlkQXJlYU1hcDo6aXRlcmF0b3IgZ3JpZEFyZWFJdCA9IGdyaWRBcmVhTWFwLmZpbmQoZ3Jp
ZEFyZWFOYW1lKTsKKyAgICAgICAgaWYgKGdyaWRBcmVhSXQgPT0gZ3JpZEFyZWFNYXAuZW5kKCkp
IHsKKyAgICAgICAgICAgIGdyaWRBcmVhTWFwLmFkZChncmlkQXJlYU5hbWUsIEdyaWRBcmVhKEdy
aWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3Bhbihyb3dDb3VudCwgcm93Q291bnQgKyAx
KSwgR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKGN1cnJlbnRDb2x1bW4sIGxv
b2tBaGVhZENvbHVtbikpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEdyaWRBcmVh
JiBncmlkQXJlYSA9IGdyaWRBcmVhSXQtPnZhbHVlOworCisgICAgICAgICAgICAvLyBUaGUgZm9s
bG93aW5nIGNoZWNrcyB0ZXN0IHRoYXQgdGhlIGdyaWQgYXJlYSBpcyBhIHNpbmdsZSBmaWxsZWQt
aW4gcmVjdGFuZ2xlLgorICAgICAgICAgICAgLy8gMS4gVGhlIG5ldyByb3cgaXMgYWRqYWNlbnQg
dG8gdGhlIHByZXZpb3VzbHkgcGFyc2VkIHJvdy4KKyAgICAgICAgICAgIGlmIChyb3dDb3VudCAh
PSBncmlkQXJlYS5yb3dzLmVuZExpbmUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgICAgIC8vIDIuIFRoZSBuZXcgYXJlYSBzdGFydHMgYXQgdGhlIHNhbWUgcG9z
aXRpb24gYXMgdGhlIHByZXZpb3VzbHkgcGFyc2VkIGFyZWEuCisgICAgICAgICAgICBpZiAoY3Vy
cmVudENvbHVtbiAhPSBncmlkQXJlYS5jb2x1bW5zLnN0YXJ0TGluZSgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgLy8gMy4gVGhlIG5ldyBhcmVhIGVuZHMg
YXQgdGhlIHNhbWUgcG9zaXRpb24gYXMgdGhlIHByZXZpb3VzbHkgcGFyc2VkIGFyZWEuCisgICAg
ICAgICAgICBpZiAobG9va0FoZWFkQ29sdW1uICE9IGdyaWRBcmVhLmNvbHVtbnMuZW5kTGluZSgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgZ3JpZEFyZWEu
cm93cyA9IEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihncmlkQXJlYS5yb3dz
LnN0YXJ0TGluZSgpLCBncmlkQXJlYS5yb3dzLmVuZExpbmUoKSArIDEpOworICAgICAgICB9Cisg
ICAgICAgIGN1cnJlbnRDb2x1bW4gPSBsb29rQWhlYWRDb2x1bW4gLSAxOworICAgIH0KKworICAg
IHJldHVybiB0cnVlOworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVHcmlk
QnJlYWR0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJz
ZXJNb2RlKQoreworICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWso
KTsKKyAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlTWluQ29udGVudCwgQ1NTVmFsdWVNYXhD
b250ZW50LCBDU1NWYWx1ZUF1dG8+KHRva2VuLmlkKCkpKQorICAgICAgICByZXR1cm4gY29uc3Vt
ZUlkZW50KHJhbmdlKTsKKyAgICBpZiAodG9rZW4udHlwZSgpID09IERpbWVuc2lvblRva2VuICYm
IHRva2VuLnVuaXRUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpGcmFjdGlv
bikgeworICAgICAgICBpZiAocmFuZ2UucGVlaygpLm51bWVyaWNWYWx1ZSgpIDwgMCkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkZyYWN0aW9uKTsKKyAgICB9CisgICAgcmV0
dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFu
Z2VOb25OZWdhdGl2ZSwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOworfQorCitzdGF0aWMgQ1NTVmFs
dWUqIGNvbnN1bWVHcmlkVHJhY2tTaXplKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQ
YXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRv
a2VuID0gcmFuZ2UucGVlaygpOworICAgIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVBdXRvPih0
b2tlbi5pZCgpKSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBp
ZiAodG9rZW4uZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlTWlubWF4KSB7CisgICAgICAgIENTU1Bh
cnNlclRva2VuUmFuZ2UgcmFuZ2VDb3B5ID0gcmFuZ2U7CisgICAgICAgIENTU1BhcnNlclRva2Vu
UmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZUNvcHkpOworICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogbWluVHJhY2tCcmVhZHRoID0gY29uc3VtZUdyaWRCcmVhZHRoKGFyZ3MsIGNz
c1BhcnNlck1vZGUpOworICAgICAgICBpZiAoIW1pblRyYWNrQnJlYWR0aCB8fCBtaW5UcmFja0Jy
ZWFkdGgtPmlzRmxleCgpIHx8ICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3Mp
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBtYXhUcmFja0JyZWFkdGggPSBjb25zdW1lR3JpZEJyZWFkdGgoYXJncywgY3NzUGFyc2VyTW9k
ZSk7CisgICAgICAgIGlmICghbWF4VHJhY2tCcmVhZHRoIHx8ICFhcmdzLmF0RW5kKCkpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmFuZ2UgPSByYW5nZUNvcHk7CisgICAg
ICAgIENTU0Z1bmN0aW9uVmFsdWUqIHJlc3VsdCA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShD
U1NWYWx1ZU1pbm1heCk7CisgICAgICAgIHJlc3VsdC0+YXBwZW5kKCptaW5UcmFja0JyZWFkdGgp
OworICAgICAgICByZXN1bHQtPmFwcGVuZCgqbWF4VHJhY2tCcmVhZHRoKTsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIGNvbnN1bWVHcmlkQnJlYWR0aChyYW5nZSwg
Y3NzUGFyc2VyTW9kZSk7Cit9CisKKy8vIEFwcGVuZHMgdG8gdGhlIHBhc3NlZCBpbiBDU1NHcmlk
TGluZU5hbWVzVmFsdWUgaWYgYW55LCBvdGhlcndpc2UgY3JlYXRlcyBhIG5ldyBvbmUuCitzdGF0
aWMgQ1NTR3JpZExpbmVOYW1lc1ZhbHVlKiBjb25zdW1lR3JpZExpbmVOYW1lcyhDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgQ1NTR3JpZExpbmVOYW1lc1ZhbHVlKiBsaW5lTmFtZXMgPSBudWxs
cHRyKQoreworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2VDb3B5ID0gcmFuZ2U7CisgICAg
aWYgKHJhbmdlQ29weS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLnR5cGUoKSAhPSBMZWZ0
QnJhY2tldFRva2VuKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWxpbmVOYW1l
cykKKyAgICAgICAgbGluZU5hbWVzID0gQ1NTR3JpZExpbmVOYW1lc1ZhbHVlOjpjcmVhdGUoKTsK
KyAgICB3aGlsZSAoQ1NTQ3VzdG9tSWRlbnRWYWx1ZSogbGluZU5hbWUgPSBjb25zdW1lQ3VzdG9t
SWRlbnRGb3JHcmlkTGluZShyYW5nZUNvcHkpKQorICAgICAgICBsaW5lTmFtZXMtPmFwcGVuZCgq
bGluZU5hbWUpOworICAgIGlmIChyYW5nZUNvcHkuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2Uo
KS50eXBlKCkgIT0gUmlnaHRCcmFja2V0VG9rZW4pCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJhbmdlID0gcmFuZ2VDb3B5OworICAgIHJldHVybiBsaW5lTmFtZXM7Cit9CisKK3N0YXRp
YyBib29sIGNvbnN1bWVHcmlkVHJhY2tSZXBlYXRGdW5jdGlvbihDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NWYWx1ZUxpc3QmIGxpc3Qs
IGJvb2wmIGlzQXV0b1JlcGVhdCwgYm9vbCYgYWxsVHJhY2tzQXJlRml4ZWRTaXplZCkKK3sKKyAg
ICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2UpOworICAg
IC8vIFRoZSBudW1iZXIgb2YgcmVwZXRpdGlvbnMgZm9yIDxhdXRvLXJlcGVhdD4gaXMgbm90IGlt
cG9ydGFudCBhdCBwYXJzaW5nIGxldmVsCisgICAgLy8gYmVjYXVzZSBpdCB3aWxsIGJlIGNvbXB1
dGVkIGxhdGVyLCBsZXQncyBzZXQgaXQgdG8gMS4KKyAgICBzaXplX3QgcmVwZXRpdGlvbnMgPSAx
OworICAgIGlzQXV0b1JlcGVhdCA9IGlkZW50TWF0Y2hlczxDU1NWYWx1ZUF1dG9GaWxsLCBDU1NW
YWx1ZUF1dG9GaXQ+KGFyZ3MucGVlaygpLmlkKCkpOworICAgIENTU1ZhbHVlTGlzdCogcmVwZWF0
ZWRWYWx1ZXM7CisgICAgaWYgKGlzQXV0b1JlcGVhdCkgeworICAgICAgICByZXBlYXRlZFZhbHVl
cyA9IENTU0dyaWRBdXRvUmVwZWF0VmFsdWU6OmNyZWF0ZShhcmdzLmNvbnN1bWVJbmNsdWRpbmdX
aGl0ZXNwYWNlKCkuaWQoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gRklYTUU6IGEgY29u
c3VtZUludGVnZXJSYXcgd291bGQgYmUgbW9yZSBlZmZpY2llbnQgaGVyZS4KKyAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHJlcGV0aXRpb24gPSBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyKGFyZ3Mp
OworICAgICAgICBpZiAoIXJlcGV0aXRpb24pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHJlcGV0aXRpb25zID0gY2xhbXBUbzxzaXplX3Q+KHJlcGV0aXRpb24tPmdldERvdWJs
ZVZhbHVlKCksIDAsIGtHcmlkTWF4VHJhY2tzKTsKKyAgICAgICAgcmVwZWF0ZWRWYWx1ZXMgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgfQorICAgIGlmICghY29u
c3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIENTU0dyaWRMaW5lTmFtZXNWYWx1ZSogbGluZU5hbWVzID0gY29uc3VtZUdyaWRMaW5l
TmFtZXMoYXJncyk7CisgICAgaWYgKGxpbmVOYW1lcykKKyAgICAgICAgcmVwZWF0ZWRWYWx1ZXMt
PmFwcGVuZCgqbGluZU5hbWVzKTsKKworICAgIHNpemVfdCBudW1iZXJPZlRyYWNrcyA9IDA7Cisg
ICAgd2hpbGUgKCFhcmdzLmF0RW5kKCkpIHsKKyAgICAgICAgQ1NTVmFsdWUqIHRyYWNrU2l6ZSA9
IGNvbnN1bWVHcmlkVHJhY2tTaXplKGFyZ3MsIGNzc1BhcnNlck1vZGUpOworICAgICAgICBpZiAo
IXRyYWNrU2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGFsbFRy
YWNrc0FyZUZpeGVkU2l6ZWQpCisgICAgICAgICAgICBhbGxUcmFja3NBcmVGaXhlZFNpemVkID0g
aXNHcmlkVHJhY2tGaXhlZFNpemVkKCp0cmFja1NpemUpOworICAgICAgICByZXBlYXRlZFZhbHVl
cy0+YXBwZW5kKCp0cmFja1NpemUpOworICAgICAgICArK251bWJlck9mVHJhY2tzOworICAgICAg
ICBsaW5lTmFtZXMgPSBjb25zdW1lR3JpZExpbmVOYW1lcyhhcmdzKTsKKyAgICAgICAgaWYgKGxp
bmVOYW1lcykKKyAgICAgICAgICAgIHJlcGVhdGVkVmFsdWVzLT5hcHBlbmQoKmxpbmVOYW1lcyk7
CisgICAgfQorICAgIC8vIFdlIHNob3VsZCBoYXZlIGZvdW5kIGF0IGxlYXN0IG9uZSA8dHJhY2st
c2l6ZT4gb3IgZWxzZSBpdCBpcyBub3QgYSB2YWxpZCA8dHJhY2stbGlzdD4uCisgICAgaWYgKCFu
dW1iZXJPZlRyYWNrcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGlzQXV0b1Jl
cGVhdCkgeworICAgICAgICBsaXN0LmFwcGVuZCgqcmVwZWF0ZWRWYWx1ZXMpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIC8vIFdlIGNsYW1wIHRoZSByZXBldGl0aW9ucyB0byBhIG11bHRpcGxlIG9m
IHRoZSByZXBlYXQoKSB0cmFjayBsaXN0J3Mgc2l6ZSwgd2hpbGUgc3RheWluZyBiZWxvdyB0aGUg
bWF4IGdyaWQgc2l6ZS4KKyAgICAgICAgcmVwZXRpdGlvbnMgPSBzdGQ6Om1pbihyZXBldGl0aW9u
cywga0dyaWRNYXhUcmFja3MgLyBudW1iZXJPZlRyYWNrcyk7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgcmVwZXRpdGlvbnM7ICsraSkgeworICAgICAgICAgICAgZm9yIChzaXplX3Qg
aiA9IDA7IGogPCByZXBlYXRlZFZhbHVlcy0+bGVuZ3RoKCk7ICsraikKKyAgICAgICAgICAgICAg
ICBsaXN0LmFwcGVuZChyZXBlYXRlZFZhbHVlcy0+aXRlbShqKSk7CisgICAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2VudW0gVHJhY2tMaXN0VHlwZSB7IEdyaWRUZW1wbGF0
ZSwgR3JpZFRlbXBsYXRlTm9SZXBlYXQsIEdyaWRBdXRvIH07CisKK3N0YXRpYyBDU1NWYWx1ZSog
Y29uc3VtZUdyaWRUcmFja0xpc3QoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNl
ck1vZGUgY3NzUGFyc2VyTW9kZSwgVHJhY2tMaXN0VHlwZSB0cmFja0xpc3RUeXBlKQoreworICAg
IGJvb2wgYWxsb3dHcmlkTGluZU5hbWVzID0gdHJhY2tMaXN0VHlwZSAhPSBHcmlkQXV0bzsKKyAg
ICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0
ZWQoKTsKKyAgICBDU1NHcmlkTGluZU5hbWVzVmFsdWUqIGxpbmVOYW1lcyA9IGNvbnN1bWVHcmlk
TGluZU5hbWVzKHJhbmdlKTsKKyAgICBpZiAobGluZU5hbWVzKSB7CisgICAgICAgIGlmICghYWxs
b3dHcmlkTGluZU5hbWVzKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHZh
bHVlcy0+YXBwZW5kKCpsaW5lTmFtZXMpOworICAgIH0KKworICAgIGJvb2wgYWxsb3dSZXBlYXQg
PSB0cmFja0xpc3RUeXBlID09IEdyaWRUZW1wbGF0ZTsKKyAgICBib29sIHNlZW5BdXRvUmVwZWF0
ID0gZmFsc2U7CisgICAgYm9vbCBhbGxUcmFja3NBcmVGaXhlZFNpemVkID0gdHJ1ZTsKKyAgICBk
byB7CisgICAgICAgIGJvb2wgaXNBdXRvUmVwZWF0OworICAgICAgICBpZiAocmFuZ2UucGVlaygp
LmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZVJlcGVhdCkgeworICAgICAgICAgICAgaWYgKCFhbGxv
d1JlcGVhdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGlm
ICghY29uc3VtZUdyaWRUcmFja1JlcGVhdEZ1bmN0aW9uKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCAq
dmFsdWVzLCBpc0F1dG9SZXBlYXQsIGFsbFRyYWNrc0FyZUZpeGVkU2l6ZWQpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgaWYgKGlzQXV0b1JlcGVhdCAmJiBz
ZWVuQXV0b1JlcGVhdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
ICAgIHNlZW5BdXRvUmVwZWF0ID0gc2VlbkF1dG9SZXBlYXQgfHwgaXNBdXRvUmVwZWF0OworICAg
ICAgICB9IGVsc2UgaWYgKENTU1ZhbHVlKiB2YWx1ZSA9IGNvbnN1bWVHcmlkVHJhY2tTaXplKHJh
bmdlLCBjc3NQYXJzZXJNb2RlKSkgeworICAgICAgICAgICAgaWYgKGFsbFRyYWNrc0FyZUZpeGVk
U2l6ZWQpCisgICAgICAgICAgICAgICAgYWxsVHJhY2tzQXJlRml4ZWRTaXplZCA9IGlzR3JpZFRy
YWNrRml4ZWRTaXplZCgqdmFsdWUpOworICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoKnZhbHVl
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICB9CisgICAgICAgIGlmIChzZWVuQXV0b1JlcGVhdCAmJiAhYWxsVHJhY2tzQXJlRml4ZWRTaXpl
ZCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBsaW5lTmFtZXMgPSBjb25z
dW1lR3JpZExpbmVOYW1lcyhyYW5nZSk7CisgICAgICAgIGlmIChsaW5lTmFtZXMpIHsKKyAgICAg
ICAgICAgIGlmICghYWxsb3dHcmlkTGluZU5hbWVzKQorICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoKmxpbmVOYW1lcyk7CisgICAgICAg
IH0KKyAgICB9IHdoaWxlICghcmFuZ2UuYXRFbmQoKSAmJiByYW5nZS5wZWVrKCkudHlwZSgpICE9
IERlbGltaXRlclRva2VuKTsKKyAgICByZXR1cm4gdmFsdWVzOworfQorCitzdGF0aWMgQ1NTVmFs
dWUqIGNvbnN1bWVHcmlkVGVtcGxhdGVzUm93c09yQ29sdW1ucyhDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlmIChyYW5nZS5w
ZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQo
cmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lR3JpZFRyYWNrTGlzdChyYW5nZSwgY3NzUGFyc2Vy
TW9kZSwgR3JpZFRlbXBsYXRlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lR3JpZFRl
bXBsYXRlQXJlYXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdl
LnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVu
dChyYW5nZSk7CisKKyAgICBOYW1lZEdyaWRBcmVhTWFwIGdyaWRBcmVhTWFwOworICAgIHNpemVf
dCByb3dDb3VudCA9IDA7CisgICAgc2l6ZV90IGNvbHVtbkNvdW50ID0gMDsKKworICAgIHdoaWxl
IChyYW5nZS5wZWVrKCkudHlwZSgpID09IFN0cmluZ1Rva2VuKSB7CisgICAgICAgIGlmICghcGFy
c2VHcmlkVGVtcGxhdGVBcmVhc1JvdyhyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgp
LnZhbHVlKCkudG9TdHJpbmcoKSwgZ3JpZEFyZWFNYXAsIHJvd0NvdW50LCBjb2x1bW5Db3VudCkp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgKytyb3dDb3VudDsKKyAgICB9
CisKKyAgICBpZiAocm93Q291bnQgPT0gMCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
QVNTRVJUKGNvbHVtbkNvdW50KTsKKyAgICByZXR1cm4gQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1
ZTo6Y3JlYXRlKGdyaWRBcmVhTWFwLCByb3dDb3VudCwgY29sdW1uQ291bnQpOworfQorCitzdGF0
aWMgdm9pZCBjb3VudEtleXdvcmRPbmx5UHJvcGVydHlVc2FnZShDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5LCBVc2VDb3VudGVyKiBjb3VudGVyLCBDU1NWYWx1ZUlEIHZhbHVlSUQpCit7CisgICAgaWYg
KCFjb3VudGVyKQorICAgICAgICByZXR1cm47CisgICAgc3dpdGNoIChwcm9wZXJ0eSkgeworICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlOgorICAgICAgICBpZiAodmFsdWVJRCA9
PSBDU1NWYWx1ZU5vbmUpIHsKKyAgICAgICAgICAgIGNvdW50ZXItPmNvdW50KFVzZUNvdW50ZXI6
OkNTU1ZhbHVlQXBwZWFyYW5jZU5vbmUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
Y291bnRlci0+Y291bnQoVXNlQ291bnRlcjo6Q1NTVmFsdWVBcHBlYXJhbmNlTm90Tm9uZSk7Cisg
ICAgICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUJ1dHRvbikKKyAgICAgICAgICAgICAg
ICBjb3VudGVyLT5jb3VudChVc2VDb3VudGVyOjpDU1NWYWx1ZUFwcGVhcmFuY2VCdXR0b24pOwor
ICAgICAgICAgICAgZWxzZSBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUNhcmV0KQorICAgICAgICAg
ICAgICAgIGNvdW50ZXItPmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5jZUNhcmV0
KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVDaGVja2JveCkKKyAg
ICAgICAgICAgICAgICBjb3VudGVyLT5jb3VudChVc2VDb3VudGVyOjpDU1NWYWx1ZUFwcGVhcmFu
Y2VDaGVja2JveCk7CisgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlTWVu
dWxpc3QpCisgICAgICAgICAgICAgICAgY291bnRlci0+Y291bnQoVXNlQ291bnRlcjo6Q1NTVmFs
dWVBcHBlYXJhbmNlTWVudWxpc3QpOworICAgICAgICAgICAgZWxzZSBpZiAodmFsdWVJRCA9PSBD
U1NWYWx1ZU1lbnVsaXN0QnV0dG9uKQorICAgICAgICAgICAgICAgIGNvdW50ZXItPmNvdW50KFVz
ZUNvdW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5jZU1lbnVsaXN0QnV0dG9uKTsKKyAgICAgICAgICAg
IGVsc2UgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVMaXN0Ym94KQorICAgICAgICAgICAgICAgIGNv
dW50ZXItPmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5jZUxpc3Rib3gpOworICAg
ICAgICAgICAgZWxzZSBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVJhZGlvKQorICAgICAgICAgICAg
ICAgIGNvdW50ZXItPmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5jZVJhZGlvKTsK
KyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVTZWFyY2hmaWVsZCkKKyAg
ICAgICAgICAgICAgICBjb3VudGVyLT5jb3VudChVc2VDb3VudGVyOjpDU1NWYWx1ZUFwcGVhcmFu
Y2VTZWFyY2hGaWVsZCk7CisgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZUlEID09IENTU1ZhbHVl
VGV4dGZpZWxkKQorICAgICAgICAgICAgICAgIGNvdW50ZXItPmNvdW50KFVzZUNvdW50ZXI6OkNT
U1ZhbHVlQXBwZWFyYW5jZVRleHRGaWVsZCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgY291bnRlci0+Y291bnQoVXNlQ291bnRlcjo6Q1NTVmFsdWVBcHBlYXJhbmNlT3RoZXJz
KTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIGJy
ZWFrOworICAgIH0KK30KKworY29uc3QgQ1NTVmFsdWUqIENTU1Byb3BlcnR5UGFyc2VyOjpwYXJz
ZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5SUQgdW5yZXNvbHZlZFByb3BlcnR5LCBDU1NQcm9wZXJ0
eUlEIGN1cnJlbnRTaG9ydGhhbmQpCit7CisgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSA9IHJl
c29sdmVDU1NQcm9wZXJ0eUlEKHVucmVzb2x2ZWRQcm9wZXJ0eSk7CisgICAgaWYgKENTU1BhcnNl
ckZhc3RQYXRoczo6aXNLZXl3b3JkUHJvcGVydHlJRChwcm9wZXJ0eSkpIHsKKyAgICAgICAgaWYg
KCFDU1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRWYWx1ZShwcm9w
ZXJ0eSwgbV9yYW5nZS5wZWVrKCkuaWQoKSwgbV9jb250ZXh0Lm1vZGUoKSkpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgY291bnRLZXl3b3JkT25seVByb3BlcnR5VXNhZ2Uo
cHJvcGVydHksIG1fY29udGV4dC51c2VDb3VudGVyKCksIG1fcmFuZ2UucGVlaygpLmlkKCkpOwor
ICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KG1fcmFuZ2UpOworICAgIH0KKyAgICBzd2l0Y2gg
KHByb3BlcnR5KSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdpbGxDaGFuZ2U6CisgICAgICAgIHJl
dHVybiBjb25zdW1lV2lsbENoYW5nZShtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFn
ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVQYWdlKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlRdW90ZXM6CisgICAgICAgIHJldHVybiBjb25zdW1lUXVvdGVzKG1fcmFuZ2UpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIaWdobGlnaHQ6CisgICAgICAgIHJldHVybiBjb25zdW1l
V2Via2l0SGlnaGxpZ2h0KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250VmFyaWFu
dENhcHM6CisgICAgICAgIHJldHVybiBjb25zdW1lRm9udFZhcmlhbnRDYXBzKG1fcmFuZ2UpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlGb250VmFyaWFudExpZ2F0dXJlczoKKyAgICAgICAgcmV0dXJu
IGNvbnN1bWVGb250VmFyaWFudExpZ2F0dXJlcyhtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Rm9udFZhcmlhbnROdW1lcmljOgorICAgICAgICByZXR1cm4gY29uc3VtZUZvbnRWYXJpYW50
TnVtZXJpYyhtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEZlYXR1cmVTZXR0aW5n
czoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVGb250RmVhdHVyZVNldHRpbmdzKG1fcmFuZ2UpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlGb250RmFtaWx5OgorICAgICAgICByZXR1cm4gY29uc3VtZUZv
bnRGYW1pbHkobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQ6CisgICAg
ICAgIHJldHVybiBjb25zdW1lRm9udFdlaWdodChtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5TGV0dGVyU3BhY2luZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V29yZFNwYWNpbmc6CisgICAg
ICAgIHJldHVybiBjb25zdW1lU3BhY2luZyhtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5VGFiU2l6ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVUYWJTaXpl
KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0U2l6
ZUFkanVzdDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVUZXh0U2l6ZUFkanVzdChtX3JhbmdlLCBt
X2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFNpemU6CisgICAgICAg
IHJldHVybiBjb25zdW1lRm9udFNpemUobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVW5pdGxl
c3NRdWlyazo6QWxsb3cpOworICAgIGNhc2UgQ1NTUHJvcGVydHlMaW5lSGVpZ2h0OgorICAgICAg
ICByZXR1cm4gY29uc3VtZUxpbmVIZWlnaHQobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVJvdGF0ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVSb3RhdGlv
bihtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5U2NhbGU6CisgICAgICAgIHJldHVybiBj
b25zdW1lU2NhbGUobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zbGF0ZToKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVUcmFuc2xhdGUobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmc6CisgICAgICAgIHJl
dHVybiBjb25zdW1lTGVuZ3RoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VO
b25OZWdhdGl2ZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvdW50ZXJJbmNyZW1lbnQ6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUNvdW50ZXJSZXNldDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb3Vu
dGVyKG1fcmFuZ2UsIHByb3BlcnR5ID09IENTU1Byb3BlcnR5Q291bnRlckluY3JlbWVudCA/IDEg
OiAwKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5U2l6ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVT
aXplKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlTbmFw
SGVpZ2h0OgorICAgICAgICByZXR1cm4gY29uc3VtZVNuYXBIZWlnaHQobV9yYW5nZSwgbV9jb250
ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRJbmRlbnQ6CisgICAgICAgIHJl
dHVybiBjb25zdW1lVGV4dEluZGVudChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5TWF4V2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1heEhlaWdodDoK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVNYXhXaWR0aE9ySGVpZ2h0KG1fcmFuZ2UsIG1fY29udGV4
dCwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXhM
b2dpY2FsV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxIZWlnaHQ6
CisgICAgICAgIHJldHVybiBjb25zdW1lTWF4V2lkdGhPckhlaWdodChtX3JhbmdlLCBtX2NvbnRl
eHQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5XaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
TWluSGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXaWR0aDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5SGVpZ2h0OgorICAgICAgICByZXR1cm4gY29uc3VtZVdpZHRoT3JIZWlnaHQobV9yYW5nZSwg
bV9jb250ZXh0LCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1pbkxvZ2ljYWxXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNh
bEhlaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TG9naWNhbFdpZHRoOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRMb2dpY2FsSGVpZ2h0OgorICAgICAgICByZXR1cm4gY29uc3Vt
ZVdpZHRoT3JIZWlnaHQobV9yYW5nZSwgbV9jb250ZXh0KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
TWFyZ2luVG9wOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5SaWdodDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5TWFyZ2luQm90dG9tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0Ogor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3R0b206CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxlZnQ6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVJpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUb3A6CisgICAg
ICAgIHJldHVybiBjb25zdW1lTWFyZ2luT3JPZmZzZXQobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUo
KSwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5TdGFydDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luRW5kOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hcmdpbkFmdGVyOgorICAgICAgICByZXR1cm4gY29uc3VtZU1hcmdpbk9yT2Zmc2V0KG1fcmFu
Z2UsIG1fY29udGV4dC5tb2RlKCksIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVBhZGRpbmdUb3A6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ0JvdHRvbToKKyAgICBjYXNlIENTU1Byb3BlcnR5
UGFkZGluZ0xlZnQ6CisgICAgICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KG1fcmFu
Z2UsIG1fY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwgVW5pdGxlc3NRdWly
azo6QWxsb3cpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nU3RhcnQ6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdFbmQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFBhZGRpbmdCZWZvcmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdBZnRl
cjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQobV9yYW5nZSwgbV9jb250
ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlDbGlwOgorICAgICAgICByZXR1cm4gY29uc3VtZUNsaXAo
bV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRvdWNoQWN0
aW9uOgorICAgICAgICByZXR1cm4gY29uc3VtZVRvdWNoQWN0aW9uKG1fcmFuZ2UpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlTY3JvbGxTbmFwRGVzdGluYXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0
eU9iamVjdFBvc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQZXJzcGVjdGl2ZU9yaWdpbjoK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVQb3NpdGlvbihtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgp
LCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5l
Q2xhbXA6CisgICAgICAgIHJldHVybiBjb25zdW1lTGluZUNsYW1wKG1fcmFuZ2UpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRGb250U2l6ZURlbHRhOgorICAgICAgICByZXR1cm4gY29uc3Vt
ZUxlbmd0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxsLCBVbml0bGVz
c1F1aXJrOjpBbGxvdyk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUNoYXJh
Y3RlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TG9jYWxlOgorICAgICAgICByZXR1cm4g
Y29uc3VtZUxvY2FsZShtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1uV2lkdGg6
CisgICAgICAgIHJldHVybiBjb25zdW1lQ29sdW1uV2lkdGgobV9yYW5nZSk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUNvbHVtbkNvdW50OgorICAgICAgICByZXR1cm4gY29uc3VtZUNvbHVtbkNvdW50
KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlDb2x1bW5HYXA6CisgICAgICAgIHJldHVy
biBjb25zdW1lQ29sdW1uR2FwKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlDb2x1bW5TcGFuOgorICAgICAgICByZXR1cm4gY29uc3VtZUNvbHVtblNwYW4o
bV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVpvb206CisgICAgICAgIHJldHVybiBjb25z
dW1lWm9vbShtX3JhbmdlLCBtX2NvbnRleHQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRp
b25EZWxheToKKyAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvbkRlbGF5OgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlBbmltYXRpb25EaXJlY3Rpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1h
dGlvbkR1cmF0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uRHVyYXRpb246Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkZpbGxNb2RlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlBbmltYXRpb25JdGVyYXRpb25Db3VudDoKKyAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9u
TmFtZToKKyAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uUGxheVN0YXRlOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlUcmFuc2l0aW9uUHJvcGVydHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1h
dGlvblRpbWluZ0Z1bmN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uVGltaW5n
RnVuY3Rpb246CisgICAgICAgIHJldHVybiBjb25zdW1lQW5pbWF0aW9uUHJvcGVydHlMaXN0KHBy
b3BlcnR5LCBtX3JhbmdlLCBtX2NvbnRleHQsIHVucmVzb2x2ZWRQcm9wZXJ0eSA9PSBDU1NQcm9w
ZXJ0eUFsaWFzV2Via2l0QW5pbWF0aW9uTmFtZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRD
b2x1bW5HYXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRSb3dHYXA6CisgICAgICAgIHJldHVy
biBjb25zdW1lTGVuZ3RoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VOb25O
ZWdhdGl2ZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNoYXBlTWFyZ2luOgorICAgICAgICByZXR1
cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1
ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgIGNhc2UgQ1NTUHJvcGVydHlTaGFwZUltYWdlVGhyZXNo
b2xkOgorICAgICAgICByZXR1cm4gY29uc3VtZU51bWJlcihtX3JhbmdlLCBWYWx1ZVJhbmdlQWxs
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94T3JkaW5hbEdyb3VwOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlPcnBoYW5zOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXaWRvd3M6CisgICAgICAg
IHJldHVybiBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlUZXh0RGVjb3JhdGlvbkNvbG9yOgorICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6Y3NzM1RleHREZWNvcmF0aW9uc0VuYWJsZWQoKSk7CisgICAgICAgIHJldHVybiBj
b25zdW1lQ29sb3IobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVUZXh0U3Ry
b2tlV2lkdGgobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFRleHRGaWxsQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRhcEhpZ2hs
aWdodENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvcjoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckJlZm9yZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRl
ckNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3I6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVN0b3BDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Rmxvb2RDb2xv
cjoKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlnaHRpbmdDb2xvcjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Q29sdW1uUnVsZUNvbG9yOgorICAgICAgICByZXR1cm4gY29uc3VtZUNvbG9yKG1fcmFuZ2Us
IG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvcjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yOgorICAgICAgICByZXR1cm4gY29uc3VtZUNvbG9y
KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIGluUXVpcmtzTW9kZSgpKTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyRW5kV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9y
ZVdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldpZHRoOgorICAg
ICAgICByZXR1cm4gY29uc3VtZUJvcmRlcldpZHRoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCks
IFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3I6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRv
cENvbG9yOiB7CisgICAgICAgIGJvb2wgYWxsb3dRdWlya3lDb2xvcnMgPSBpblF1aXJrc01vZGUo
KQorICAgICAgICAgICAgJiYgKGN1cnJlbnRTaG9ydGhhbmQgPT0gQ1NTUHJvcGVydHlJbnZhbGlk
IHx8IGN1cnJlbnRTaG9ydGhhbmQgPT0gQ1NTUHJvcGVydHlCb3JkZXJDb2xvcik7CisgICAgICAg
IHJldHVybiBjb25zdW1lQ29sb3IobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgYWxsb3dRdWly
a3lDb2xvcnMpOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGg6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHRXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGg6
IHsKKyAgICAgICAgYm9vbCBhbGxvd1F1aXJreUxlbmd0aHMgPSBpblF1aXJrc01vZGUoKQorICAg
ICAgICAgICAgJiYgKGN1cnJlbnRTaG9ydGhhbmQgPT0gQ1NTUHJvcGVydHlJbnZhbGlkIHx8IGN1
cnJlbnRTaG9ydGhhbmQgPT0gQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCk7CisgICAgICAgIFVuaXRs
ZXNzUXVpcmsgdW5pdGxlc3MgPSBhbGxvd1F1aXJreUxlbmd0aHMgPyBVbml0bGVzc1F1aXJrOjpB
bGxvdyA6IFVuaXRsZXNzUXVpcms6OkZvcmJpZDsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCb3Jk
ZXJXaWR0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCB1bml0bGVzcyk7CisgICAgfQorICAg
IGNhc2UgQ1NTUHJvcGVydHlaSW5kZXg6CisgICAgICAgIHJldHVybiBjb25zdW1lWkluZGV4KG1f
cmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0U2hhZG93OiAvLyBDU1MyIHByb3BlcnR5
LCBkcm9wcGVkIGluIENTUzIuMSwgYmFjayBpbiBDU1MzLCBzbyB0cmVhdCBhcyBDU1MzCisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJveFNoYWRvdzoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaGFkb3co
bV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCb3hTaGFk
b3cpOworICAgIGNhc2UgQ1NTUHJvcGVydHlGaWx0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJh
Y2tkcm9wRmlsdGVyOgorICAgICAgICByZXR1cm4gY29uc3VtZUZpbHRlcihtX3JhbmdlLCBtX2Nv
bnRleHQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbjoKKyAgICAgICAgQVNT
RVJUKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3MzVGV4dERlY29yYXRpb25zRW5hYmxlZCgp
KTsKKyAgICAgICAgLy8gZmFsbHRocm91Z2gKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4
dERlY29yYXRpb25zSW5FZmZlY3Q6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9u
TGluZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVUZXh0RGVjb3JhdGlvbkxpbmUobV9yYW5nZSk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1vdGlvblBhdGg6
CisgICAgICAgIHJldHVybiBjb25zdW1lUGF0aE9yTm9uZShtX3JhbmdlKTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5TW90aW9uT2Zmc2V0OgorICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVy
Y2VudChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5TW90aW9uUm90YXRpb246CisgICAgICAgIHJldHVybiBjb25zdW1lTW90aW9u
Um90YXRpb24obV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNp
c1N0eWxlOgorICAgICAgICByZXR1cm4gY29uc3VtZVRleHRFbXBoYXNpc1N0eWxlKG1fcmFuZ2Up
OworICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3I6CisgICAgICAgIHJldHVybiBjb25z
dW1lT3V0bGluZUNvbG9yKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlPdXRsaW5lT2Zmc2V0OgorICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0aChtX3Jh
bmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5T3V0bGluZVdpZHRoOgorICAgICAgICByZXR1cm4gY29uc3VtZUxpbmVXaWR0aChtX3Jhbmdl
LCBtX2NvbnRleHQubW9kZSgpLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlUcmFuc2Zvcm06CisgICAgICAgIHJldHVybiBjb25zdW1lVHJhbnNmb3JtKG1fcmFu
Z2UsIG1fY29udGV4dC5tb2RlKCksIHVucmVzb2x2ZWRQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUFs
aWFzV2Via2l0VHJhbnNmb3JtKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3Jt
T3JpZ2luWDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YOgor
ICAgICAgICByZXR1cm4gY29uc3VtZVBvc2l0aW9uWChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgp
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWToKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZOgorICAgICAgICByZXR1cm4gY29u
c3VtZVBvc2l0aW9uWShtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVMZW5n
dGgobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZUFsbCk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUZpbGw6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZToKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVQYWludFN0cm9rZShtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5UGFpbnRPcmRlcjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVQYWludE9y
ZGVyKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJrZXJTdGFydDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5TWFya2VyTWlkOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJrZXJFbmQ6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUNsaXBQYXRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXNrOgor
ICAgICAgICByZXR1cm4gY29uc3VtZU5vbmVPclVSSShtX3JhbmdlKTsKKyAgICBjYXNlIENTU1By
b3BlcnR5RmxleEJhc2lzOgorICAgICAgICByZXR1cm4gY29uc3VtZUZsZXhCYXNpcyhtX3Jhbmdl
LCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5RmxleEdyb3c6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUZsZXhTaHJpbms6CisgICAgICAgIHJldHVybiBjb25zdW1lTnVtYmVy
KG1fcmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0
cm9rZURhc2hhcnJheToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTdHJva2VEYXNoYXJyYXkobV9y
YW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVtblJ1bGVXaWR0aDoKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVDb2x1bW5SdWxlV2lkdGgobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZU9wYWNpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZp
bGxPcGFjaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlTdG9wT3BhY2l0eToKKyAgICBjYXNlIENT
U1Byb3BlcnR5Rmxvb2RPcGFjaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlPcGFjaXR5OgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4OgorICAgICAgICByZXR1cm4gY29uc3VtZU51
bWJlcihtX3JhbmdlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFzZWxp
bmVTaGlmdDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCYXNlbGluZVNoaWZ0KG1fcmFuZ2UpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2VNaXRlcmxpbWl0OgorICAgICAgICByZXR1cm4gY29u
c3VtZU51bWJlcihtX3JhbmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlTdHJva2VXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlRGFzaG9mZnNl
dDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q3g6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUN5OgorICAg
IGNhc2UgQ1NTUHJvcGVydHlYOgorICAgIGNhc2UgQ1NTUHJvcGVydHlZOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlSOgorICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChtX3Jhbmdl
LCBTVkdBdHRyaWJ1dGVNb2RlLCBWYWx1ZVJhbmdlQWxsLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlSeDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Unk6CisgICAg
ICAgIHJldHVybiBjb25zdW1lUnhPclJ5KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlD
dXJzb3I6CisgICAgICAgIHJldHVybiBjb25zdW1lQ3Vyc29yKG1fcmFuZ2UsIG1fY29udGV4dCwg
aW5RdWlya3NNb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlDb250YWluOgorICAgICAgICBy
ZXR1cm4gY29uc3VtZUNvbnRhaW4obV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5z
Zm9ybU9yaWdpbjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVUcmFuc2Zvcm1PcmlnaW4obV9yYW5n
ZSwgbV9jb250ZXh0Lm1vZGUoKSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5Q29udGVudDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb250ZW50KG1fcmFuZ2Us
IG1fY29udGV4dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFza0JveEltYWdlU291cmNlOgorICAgICAgICByZXR1cm4gY29uc3VtZUltYWdlT3JOb25l
KG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBlcnNwZWN0aXZlOgor
ICAgICAgICByZXR1cm4gY29uc3VtZVBlcnNwZWN0aXZlKG1fcmFuZ2UsIG1fY29udGV4dC5tb2Rl
KCksIHVucmVzb2x2ZWRQcm9wZXJ0eSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNjcm9sbFNuYXBD
b29yZGluYXRlOgorICAgICAgICByZXR1cm4gY29uc3VtZVNjcm9sbFNuYXBDb29yZGluYXRlKG1f
cmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlTY3JvbGxTbmFw
UG9pbnRzWDoKKyAgICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xsU25hcFBvaW50c1k6CisgICAgICAg
IHJldHVybiBjb25zdW1lU2Nyb2xsU25hcFBvaW50cyhtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgp
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXM6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
ckJvdHRvbUxlZnRSYWRpdXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0
UmFkaXVzOgorICAgICAgICByZXR1cm4gY29uc3VtZUJvcmRlclJhZGl1c0Nvcm5lcihtX3Jhbmdl
LCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RmxleEdy
b3VwOgorICAgICAgICByZXR1cm4gY29uc3VtZUludGVnZXIobV9yYW5nZSwgMCk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eU9yZGVyOgorICAgICAgICByZXR1cm4gY29uc3VtZUludGVnZXIobV9yYW5n
ZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVQb3NpdGlvbjoKKyAgICAgICAg
Ly8gYXV0byB8IFsgdW5kZXIgfHwgWyBsZWZ0IHwgcmlnaHQgXSBdLCBidXQgd2Ugb25seSBzdXBw
b3J0IGF1dG8gfCB1bmRlciBmb3Igbm93CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpjc3MzVGV4dERlY29yYXRpb25zRW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVJZGVudDxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlVW5kZXI+KG1fcmFuZ2UpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduOgorICAgICAgICByZXR1cm4gY29uc3VtZVZlcnRp
Y2FsQWxpZ24obV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVNoYXBlT3V0c2lkZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaGFwZU91dHNpZGUobV9yYW5n
ZSwgbV9jb250ZXh0KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q2xpcFBhdGg6CisgICAg
ICAgIHJldHVybiBjb25zdW1lV2Via2l0Q2xpcFBhdGgobV9yYW5nZSwgbV9jb250ZXh0KTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5SnVzdGlmeUNvbnRlbnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFs
aWduQ29udGVudDoKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dy
aWRMYXlvdXRFbmFibGVkKCkpOworICAgICAgICByZXR1cm4gY29uc3VtZUNvbnRlbnREaXN0cmli
dXRpb25PdmVyZmxvd1Bvc2l0aW9uKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJJbWFnZVJlcGVhdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlUmVw
ZWF0OgorICAgICAgICByZXR1cm4gY29uc3VtZUJvcmRlckltYWdlUmVwZWF0KG1fcmFuZ2UpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNsaWNlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrQm94SW1hZ2VTbGljZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCb3JkZXJJ
bWFnZVNsaWNlKHByb3BlcnR5LCBtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
SW1hZ2VPdXRzZXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZU91dHNl
dDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCb3JkZXJJbWFnZU91dHNldChtX3JhbmdlKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TWFza0JveEltYWdlV2lkdGg6CisgICAgICAgIHJldHVybiBjb25zdW1lQm9yZGVySW1h
Z2VXaWR0aChtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2U6
CisgICAgICAgIHJldHVybiBjb25zdW1lV2Via2l0Qm9yZGVySW1hZ2UocHJvcGVydHksIG1fcmFu
Z2UsIG1fY29udGV4dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3Q6Cisg
ICAgICAgIHJldHVybiBjb25zdW1lUmVmbGVjdChtX3JhbmdlLCBtX2NvbnRleHQpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlGb250U2l6ZUFkanVzdDoKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmNzc0ZvbnRTaXplQWRqdXN0RW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJu
IGNvbnN1bWVGb250U2l6ZUFkanVzdChtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5SW1h
Z2VPcmllbnRhdGlvbjoKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Omlt
YWdlT3JpZW50YXRpb25FbmFibGVkKCkpOworICAgICAgICByZXR1cm4gY29uc3VtZUltYWdlT3Jp
ZW50YXRpb24obV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2ht
ZW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQmxlbmRNb2RlOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZEltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUG9zaXRpb25ZOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5TWFza1NvdXJjZVR5cGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJhY2tncm91bmRDbGlwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5k
T3JpZ2luOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFza0NvbXBvc2l0ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWFza0ltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUG9zaXRpb25ZOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZToK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb21tYVNlcGFyYXRlZEJhY2tncm91bmRDb21wb25lbnQo
dW5yZXNvbHZlZFByb3BlcnR5LCBtX3JhbmdlLCBtX2NvbnRleHQpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXNrUmVwZWF0WDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Jl
cGVhdFk6CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGNhc2UgQ1NTUHJvcGVydHlBbGln
bkl0ZW1zOgorICAgICAgICBEQ0hFQ0soUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzR3JpZExh
eW91dEVuYWJsZWQoKSk7CisgICAgICAgIHJldHVybiBjb25zdW1lQWxpZ25JdGVtcyhtX3Jhbmdl
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5SnVzdGlmeVNlbGY6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUFsaWduU2VsZjoKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dy
aWRMYXlvdXRFbmFibGVkKCkpOworICAgICAgICByZXR1cm4gY29uc3VtZVNlbGZQb3NpdGlvbk92
ZXJmbG93UG9zaXRpb24obV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUp1c3RpZnlJdGVt
czoKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRF
bmFibGVkKCkpOworICAgICAgICByZXR1cm4gY29uc3VtZUp1c3RpZnlJdGVtcyhtX3JhbmdlKTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZENvbHVtbkVuZDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
R3JpZENvbHVtblN0YXJ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkUm93RW5kOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlHcmlkUm93U3RhcnQ6CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpjc3NHcmlkTGF5b3V0RW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVHcmlkTGluZShtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZEF1dG9Db2x1bW5z
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkQXV0b1Jvd3M6CisgICAgICAgIEFTU0VSVChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NHcmlkTGF5b3V0RW5hYmxlZCgpKTsKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVHcmlkVHJhY2tMaXN0KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIEdyaWRB
dXRvKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQ29sdW1uczoKKyAgICBjYXNl
IENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlUm93czoKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkpOworICAgICAgICByZXR1cm4gY29u
c3VtZUdyaWRUZW1wbGF0ZXNSb3dzT3JDb2x1bW5zKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVBcmVhczoKKyAgICAgICAgQVNTRVJU
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkpOworICAgICAg
ICByZXR1cm4gY29uc3VtZUdyaWRUZW1wbGF0ZUFyZWFzKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlHcmlkQXV0b0Zsb3c6CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpjc3NHcmlkTGF5b3V0RW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVHcmlk
QXV0b0Zsb3cobV9yYW5nZSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVGb250RGlzcGxh
eShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4gY29uc3VtZUlkZW50
PENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVCbG9jaywgQ1NTVmFsdWVTd2FwLCBDU1NWYWx1ZUZhbGxi
YWNrLCBDU1NWYWx1ZU9wdGlvbmFsPihyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZUxpc3Qq
IGNvbnN1bWVGb250RmFjZVVuaWNvZGVSYW5nZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkK
K3sKKyAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFT
ZXBhcmF0ZWQoKTsKKworICAgIGRvIHsKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRv
a2VuID0gcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgaWYgKHRv
a2VuLnR5cGUoKSAhPSBVbmljb2RlUmFuZ2VUb2tlbikKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgICAgIFVDaGFyMzIgc3RhcnQgPSB0b2tlbi51bmljb2RlUmFuZ2VTdGFydCgp
OworICAgICAgICBVQ2hhcjMyIGVuZCA9IHRva2VuLnVuaWNvZGVSYW5nZUVuZCgpOworICAgICAg
ICBpZiAoc3RhcnQgPiBlbmQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
dmFsdWVzLT5hcHBlbmQoKkNTU1VuaWNvZGVSYW5nZVZhbHVlOjpjcmVhdGUoc3RhcnQsIGVuZCkp
OworICAgIH0gd2hpbGUgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKTsK
KworICAgIHJldHVybiB2YWx1ZXM7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUZvbnRG
YWNlU3JjVVJJKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250
ZXh0JiBjb250ZXh0KQoreworICAgIFN0cmluZyB1cmwgPSBjb25zdW1lVXJsQXNTdHJpbmdWaWV3
KHJhbmdlKS50b1N0cmluZygpOworICAgIGlmICh1cmwuaXNOdWxsKCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIENTU0ZvbnRGYWNlU3JjVmFsdWUqIHVyaVZhbHVlKENTU0ZvbnRGYWNl
U3JjVmFsdWU6OmNyZWF0ZSh1cmwsIGNvbnRleHQuY29tcGxldGVVUkwodXJsKSwgY29udGV4dC5z
aG91bGRDaGVja0NvbnRlbnRTZWN1cml0eVBvbGljeSgpKSk7CisgICAgdXJpVmFsdWUtPnNldFJl
ZmVycmVyKGNvbnRleHQucmVmZXJyZXIoKSk7CisKKyAgICBpZiAocmFuZ2UucGVlaygpLmZ1bmN0
aW9uSWQoKSAhPSBDU1NWYWx1ZUZvcm1hdCkKKyAgICAgICAgcmV0dXJuIHVyaVZhbHVlOworCisg
ICAgLy8gRklYTUU6IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtZm9udHMgc2F5cyB0aGF0
IGZvcm1hdCgpIGNvbnRhaW5zIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Ygc3RyaW5ncywKKyAg
ICAvLyBidXQgQ1NTRm9udEZhY2VTcmNWYWx1ZSBzdG9yZXMgb25seSBvbmUgZm9ybWF0LiBBbGxv
d2luZyBvbmUgZm9ybWF0IGZvciBub3cuCisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0g
Y29uc3VtZUZ1bmN0aW9uKHJhbmdlKTsKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgYXJnID0g
YXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgIGlmICgoYXJnLnR5cGUoKSAh
PSBTdHJpbmdUb2tlbikgfHwgIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgdXJpVmFsdWUtPnNldEZvcm1hdChhcmcudmFsdWUoKS50b1N0cmluZygpKTsKKyAgICBy
ZXR1cm4gdXJpVmFsdWU7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUZvbnRGYWNlU3Jj
TG9jYWwoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQm
IGNvbnRleHQpCit7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0
aW9uKHJhbmdlKTsKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXNwb3NpdGlvbiBzaG91bGRD
aGVja0NvbnRlbnRTZWN1cml0eVBvbGljeSA9IGNvbnRleHQuc2hvdWxkQ2hlY2tDb250ZW50U2Vj
dXJpdHlQb2xpY3koKTsKKyAgICBpZiAoYXJncy5wZWVrKCkudHlwZSgpID09IFN0cmluZ1Rva2Vu
KSB7CisgICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiBhcmcgPSBhcmdzLmNvbnN1bWVJbmNs
dWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIGlmICghYXJncy5hdEVuZCgpKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBDU1NGb250RmFjZVNyY1ZhbHVlOjpj
cmVhdGVMb2NhbChhcmcudmFsdWUoKS50b1N0cmluZygpLCBzaG91bGRDaGVja0NvbnRlbnRTZWN1
cml0eVBvbGljeSk7CisgICAgfQorICAgIGlmIChhcmdzLnBlZWsoKS50eXBlKCkgPT0gSWRlbnRU
b2tlbikgeworICAgICAgICBTdHJpbmcgZmFtaWx5TmFtZSA9IGNvbmNhdGVuYXRlRmFtaWx5TmFt
ZShhcmdzKTsKKyAgICAgICAgaWYgKCFhcmdzLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIENTU0ZvbnRGYWNlU3JjVmFsdWU6OmNyZWF0ZUxvY2Fs
KGZhbWlseU5hbWUsIHNob3VsZENoZWNrQ29udGVudFNlY3VyaXR5UG9saWN5KTsKKyAgICB9Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZUxpc3QqIGNvbnN1bWVGb250
RmFjZVNyYyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4
dCYgY29udGV4dCkKK3sKKyAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6
Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKworICAgIGRvIHsKKyAgICAgICAgY29uc3QgQ1NTUGFy
c2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOworICAgICAgICBDU1NWYWx1ZSogcGFyc2Vk
VmFsdWUgPSBudWxscHRyOworICAgICAgICBpZiAodG9rZW4uZnVuY3Rpb25JZCgpID09IENTU1Zh
bHVlTG9jYWwpCisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVGb250RmFjZVNyY0xv
Y2FsKHJhbmdlLCBjb250ZXh0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFyc2VkVmFs
dWUgPSBjb25zdW1lRm9udEZhY2VTcmNVUkkocmFuZ2UsIGNvbnRleHQpOworICAgICAgICBpZiAo
IXBhcnNlZFZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHZhbHVl
cy0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVk
aW5nV2hpdGVzcGFjZShyYW5nZSkpOworICAgIHJldHVybiB2YWx1ZXM7Cit9CisKK2Jvb2wgQ1NT
UHJvcGVydHlQYXJzZXI6OnBhcnNlRm9udEZhY2VEZXNjcmlwdG9yKENTU1Byb3BlcnR5SUQgcHJv
cElkKQoreworICAgIENTU1ZhbHVlKiBwYXJzZWRWYWx1ZSA9IG51bGxwdHI7CisgICAgc3dpdGNo
IChwcm9wSWQpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEZhbWlseToKKyAgICAgICAgaWYg
KGNvbnN1bWVHZW5lcmljRmFtaWx5KG1fcmFuZ2UpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVGYW1pbHlOYW1lKG1fcmFuZ2UpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5U3JjOiAvLyBUaGlzIGlzIGEgbGlzdCBv
ZiB1cmxzIG9yIGxvY2FsIHJlZmVyZW5jZXMuCisgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3Vt
ZUZvbnRGYWNlU3JjKG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQ1NTUHJvcGVydHlVbmljb2RlUmFuZ2U6CisgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3Vt
ZUZvbnRGYWNlVW5pY29kZVJhbmdlKG1fcmFuZ2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1Byb3BlcnR5Rm9udERpc3BsYXk6CisgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUZv
bnREaXNwbGF5KG1fcmFuZ2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5
Rm9udFN0cmV0Y2g6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHlsZTogeworICAgICAgICBD
U1NWYWx1ZUlEIGlkID0gbV9yYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7
CisgICAgICAgIGlmICghQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5d29yZFByb3BlcnR5
QW5kVmFsdWUocHJvcElkLCBpZCwgbV9jb250ZXh0Lm1vZGUoKSkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHBhcnNlZFZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZUlkZW50aWZpZXIoaWQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUZvbnRWYXJpYW50OgorICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVGb250VmFyaWFu
dExpc3QobV9yYW5nZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250
V2VpZ2h0OgorICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVGb250V2VpZ2h0KG1fcmFuZ2Up
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEZlYXR1cmVTZXR0aW5n
czoKKyAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lRm9udEZlYXR1cmVTZXR0aW5ncyhtX3Jh
bmdlKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgaWYgKCFwYXJzZWRWYWx1ZSB8fCAhbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIENTU1Byb3BlcnR5SW52YWxp
ZCwgKnBhcnNlZFZhbHVlLCBmYWxzZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NT
UHJvcGVydHlQYXJzZXI6OmNvbnN1bWVTeXN0ZW1Gb250KGJvb2wgaW1wb3J0YW50KQoreworICAg
IENTU1ZhbHVlSUQgc3lzdGVtRm9udElEID0gbV9yYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVz
cGFjZSgpLmlkKCk7CisgICAgQVNTRVJUKHN5c3RlbUZvbnRJRCA+PSBDU1NWYWx1ZUNhcHRpb24g
JiYgc3lzdGVtRm9udElEIDw9IENTU1ZhbHVlU3RhdHVzQmFyKTsKKyAgICBpZiAoIW1fcmFuZ2Uu
YXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRm9udFN0eWxlIGZvbnRTdHls
ZSA9IEZvbnRTdHlsZU5vcm1hbDsKKyAgICBGb250V2VpZ2h0IGZvbnRXZWlnaHQgPSBGb250V2Vp
Z2h0Tm9ybWFsOworICAgIGZsb2F0IGZvbnRTaXplID0gMDsKKyAgICBBdG9taWNTdHJpbmcgZm9u
dEZhbWlseTsKKyAgICBMYXlvdXRUaGVtZTo6dGhlbWUoKS5zeXN0ZW1Gb250KHN5c3RlbUZvbnRJ
RCwgZm9udFN0eWxlLCBmb250V2VpZ2h0LCBmb250U2l6ZSwgZm9udEZhbWlseSk7CisKKyAgICBh
ZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoZm9udFN0eWxlID09IEZvbnRTdHlsZUl0YWxp
YyA/IENTU1ZhbHVlSXRhbGljIDogQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAgIGFk
ZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFdlaWdodCwgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShmb250V2VpZ2h0KSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBDU1NQcm9wZXJ0eUZvbnQsICpDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKGZvbnRTaXplLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBpeGVs
cyksIGltcG9ydGFudCk7CisgICAgQ1NTVmFsdWVMaXN0KiBmb250RmFtaWx5TGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICBmb250RmFtaWx5TGlzdC0+YXBw
ZW5kKCpDU1NGb250RmFtaWx5VmFsdWU6OmNyZWF0ZShmb250RmFtaWx5KSk7CisgICAgYWRkUHJv
cGVydHkoQ1NTUHJvcGVydHlGb250RmFtaWx5LCBDU1NQcm9wZXJ0eUZvbnQsICpmb250RmFtaWx5
TGlzdCwgaW1wb3J0YW50KTsKKworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFN0cmV0
Y2gsIENTU1Byb3BlcnR5Rm9udCwgKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVy
KENTU1ZhbHVlTm9ybWFsKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0
eUZvbnRWYXJpYW50Q2FwcywgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3Bl
cnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXMsIENTU1Byb3BlcnR5Rm9udCwgKkNT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFsKSwgaW1wb3J0
YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50TnVtZXJpYywgQ1NT
UHJvcGVydHlGb250LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFs
dWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5TGluZUhl
aWdodCwgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZp
ZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lRm9udChib29sIGltcG9ydGFudCkKK3sKKyAg
ICAvLyBMZXQncyBjaGVjayBpZiB0aGVyZSBpcyBhbiBpbmhlcml0IG9yIGluaXRpYWwgc29tZXdo
ZXJlIGluIHRoZSBzaG9ydGhhbmQuCisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSA9IG1f
cmFuZ2U7CisgICAgd2hpbGUgKCFyYW5nZS5hdEVuZCgpKSB7CisgICAgICAgIENTU1ZhbHVlSUQg
aWQgPSByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZUluaGVyaXQgfHwgaWQgPT0gQ1NTVmFsdWVJbml0aWFsKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAvLyBPcHRpb25hbCBmb250LXN0eWxlLCBm
b250LXZhcmlhbnQsIGZvbnQtc3RyZXRjaCBhbmQgZm9udC13ZWlnaHQuCisgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIGZvbnRTdHlsZSA9IG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZv
bnRWYXJpYW50Q2FwcyA9IG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZvbnRXZWln
aHQgPSBudWxscHRyOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmb250U3RyZXRjaCA9IG51bGxw
dHI7CisgICAgd2hpbGUgKCFtX3JhbmdlLmF0RW5kKCkpIHsKKyAgICAgICAgQ1NTVmFsdWVJRCBp
ZCA9IG1fcmFuZ2UucGVlaygpLmlkKCk7CisgICAgICAgIGlmICghZm9udFN0eWxlICYmIENTU1Bh
cnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKENTU1Byb3BlcnR5
Rm9udFN0eWxlLCBpZCwgbV9jb250ZXh0Lm1vZGUoKSkpIHsKKyAgICAgICAgICAgIGZvbnRTdHls
ZSA9IGNvbnN1bWVJZGVudChtX3JhbmdlKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisgICAgICAgIGlmICghZm9udFZhcmlhbnRDYXBzICYmIChpZCA9PSBDU1NWYWx1ZU5vcm1h
bCB8fCBpZCA9PSBDU1NWYWx1ZVNtYWxsQ2FwcykpIHsKKyAgICAgICAgICAgIC8vIEZvbnQgdmFy
aWFudCBpbiB0aGUgc2hvcnRoYW5kIGlzIHBhcnRpY3VsYXIsIGl0IG9ubHkgYWNjZXB0cyBub3Jt
YWwgb3Igc21hbGwtY2Fwcy4KKyAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2RyYWZ0cy5jc3N3
Zy5vcmcvY3NzLWZvbnRzLyNwcm9wZGVmLWZvbnQKKyAgICAgICAgICAgIGZvbnRWYXJpYW50Q2Fw
cyA9IGNvbnN1bWVGb250VmFyaWFudENTUzIxKG1fcmFuZ2UpOworICAgICAgICAgICAgaWYgKGZv
bnRWYXJpYW50Q2FwcykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoIWZvbnRXZWlnaHQpIHsKKyAgICAgICAgICAgIGZvbnRXZWlnaHQgPSBjb25zdW1l
Rm9udFdlaWdodChtX3JhbmdlKTsKKyAgICAgICAgICAgIGlmIChmb250V2VpZ2h0KQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICghZm9udFN0cmV0Y2gg
JiYgQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUoQ1NT
UHJvcGVydHlGb250U3RyZXRjaCwgaWQsIG1fY29udGV4dC5tb2RlKCkpKQorICAgICAgICAgICAg
Zm9udFN0cmV0Y2ggPSBjb25zdW1lSWRlbnQobV9yYW5nZSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChtX3JhbmdlLmF0RW5kKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFN0eWxlLCBD
U1NQcm9wZXJ0eUZvbnQsIGZvbnRTdHlsZSA/ICpmb250U3R5bGUgOiAqQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAgIGFk
ZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRDYXBzLCBDU1NQcm9wZXJ0eUZvbnQsIGZv
bnRWYXJpYW50Q2FwcyA/ICpmb250VmFyaWFudENhcHMgOiAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3Bl
cnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXMsIENTU1Byb3BlcnR5Rm9udCwgKkNT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFsKSwgaW1wb3J0
YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50TnVtZXJpYywgQ1NT
UHJvcGVydHlGb250LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFs
dWVOb3JtYWwpLCBpbXBvcnRhbnQpOworCisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250
V2VpZ2h0LCBDU1NQcm9wZXJ0eUZvbnQsIGZvbnRXZWlnaHQgPyAqZm9udFdlaWdodCA6ICpDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vcm1hbCksIGltcG9ydGFu
dCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250U3RyZXRjaCwgQ1NTUHJvcGVydHlG
b250LCBmb250U3RyZXRjaCA/ICpmb250U3RyZXRjaCA6ICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vcm1hbCksIGltcG9ydGFudCk7CisKKyAgICAvLyBOb3cg
YSBmb250IHNpemUgX211c3RfIGNvbWUuCisgICAgQ1NTVmFsdWUqIGZvbnRTaXplID0gY29uc3Vt
ZUZvbnRTaXplKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGlmICghZm9udFNpemUg
fHwgbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhZGRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBDU1NQcm9wZXJ0eUZvbnQsICpmb250U2l6ZSwgaW1w
b3J0YW50KTsKKworICAgIGlmIChjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKG1fcmFu
Z2UpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBsaW5lSGVpZ2h0ID0gY29uc3VtZUxp
bmVIZWlnaHQobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgICAgIGlmICghbGluZUhl
aWdodCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NT
UHJvcGVydHlMaW5lSGVpZ2h0LCBDU1NQcm9wZXJ0eUZvbnQsICpsaW5lSGVpZ2h0LCBpbXBvcnRh
bnQpOworICAgIH0gZWxzZSB7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5TGluZUhl
aWdodCwgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZp
ZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAgIH0KKworICAgIC8vIEZvbnQgZmFt
aWx5IG11c3QgY29tZSBub3cuCisgICAgQ1NTVmFsdWUqIHBhcnNlZEZhbWlseVZhbHVlID0gY29u
c3VtZUZvbnRGYW1pbHkobV9yYW5nZSk7CisgICAgaWYgKCFwYXJzZWRGYW1pbHlWYWx1ZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFt
aWx5LCBDU1NQcm9wZXJ0eUZvbnQsICpwYXJzZWRGYW1pbHlWYWx1ZSwgaW1wb3J0YW50KTsKKwor
ICAgIC8vIEZJWE1FOiBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1dELWNzczMtZm9udHMtMjAx
MTAzMjQvI2ZvbnQtcHJvcCByZXF1aXJlcyB0aGF0CisgICAgLy8gImZvbnQtc3RyZXRjaCIsICJm
b250LXNpemUtYWRqdXN0IiwgYW5kICJmb250LWtlcm5pbmciIGJlIHJlc2V0IHRvIHRoZWlyIGlu
aXRpYWwgdmFsdWVzCisgICAgLy8gYnV0IHdlIGRvbid0IHNlZW0gdG8gc3VwcG9ydCB0aGVtIGF0
IHRoZSBtb21lbnQuIFRoZXkgc2hvdWxkIGFsc28gYmUgYWRkZWQgaGVyZSBvbmNlIGltcGxlbWVu
dGVkLgorICAgIHJldHVybiBtX3JhbmdlLmF0RW5kKCk7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQ
YXJzZXI6OmNvbnN1bWVGb250VmFyaWFudFNob3J0aGFuZChib29sIGltcG9ydGFudCkKK3sKKyAg
ICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZU5vbmU+KG1fcmFuZ2Uu
cGVlaygpLmlkKCkpKSB7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlh
bnRMaWdhdHVyZXMsIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsICpjb25zdW1lSWRlbnQobV9yYW5n
ZSksIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlh
bnRDYXBzLCBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4g
bV9yYW5nZS5hdEVuZCgpOworICAgIH0KKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjYXBzVmFs
dWUgPSBudWxscHRyOworICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzUGFyc2VyIGxpZ2F0dXJlc1Bh
cnNlcjsKKyAgICBGb250VmFyaWFudE51bWVyaWNQYXJzZXIgbnVtZXJpY1BhcnNlcjsKKyAgICBk
byB7CisgICAgICAgIEZvbnRWYXJpYW50TGlnYXR1cmVzUGFyc2VyOjpQYXJzZVJlc3VsdCBsaWdh
dHVyZXNQYXJzZVJlc3VsdCA9IGxpZ2F0dXJlc1BhcnNlci5jb25zdW1lTGlnYXR1cmUobV9yYW5n
ZSk7CisgICAgICAgIEZvbnRWYXJpYW50TnVtZXJpY1BhcnNlcjo6UGFyc2VSZXN1bHQgbnVtZXJp
Y1BhcnNlUmVzdWx0ID0gbnVtZXJpY1BhcnNlci5jb25zdW1lTnVtZXJpYyhtX3JhbmdlKTsKKyAg
ICAgICAgaWYgKGxpZ2F0dXJlc1BhcnNlUmVzdWx0ID09IEZvbnRWYXJpYW50TGlnYXR1cmVzUGFy
c2VyOjpQYXJzZVJlc3VsdDo6Q29uc3VtZWRWYWx1ZQorICAgICAgICAgICAgfHwgbnVtZXJpY1Bh
cnNlUmVzdWx0ID09IEZvbnRWYXJpYW50TnVtZXJpY1BhcnNlcjo6UGFyc2VSZXN1bHQ6OkNvbnN1
bWVkVmFsdWUpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAobGlnYXR1cmVz
UGFyc2VSZXN1bHQgPT0gRm9udFZhcmlhbnRMaWdhdHVyZXNQYXJzZXI6OlBhcnNlUmVzdWx0OjpE
aXNhbGxvd2VkVmFsdWUKKyAgICAgICAgICAgIHx8IG51bWVyaWNQYXJzZVJlc3VsdCA9PSBGb250
VmFyaWFudE51bWVyaWNQYXJzZXI6OlBhcnNlUmVzdWx0OjpEaXNhbGxvd2VkVmFsdWUpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgQ1NTVmFsdWVJRCBpZCA9IG1fcmFuZ2Uu
cGVlaygpLmlkKCk7CisgICAgICAgIHN3aXRjaCAoaWQpIHsKKyAgICAgICAgY2FzZSBDU1NWYWx1
ZVNtYWxsQ2FwczoKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUFsbFNtYWxsQ2FwczoKKyAgICAgICAg
Y2FzZSBDU1NWYWx1ZVBldGl0ZUNhcHM6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVBbGxQZXRpdGVD
YXBzOgorICAgICAgICBjYXNlIENTU1ZhbHVlVW5pY2FzZToKKyAgICAgICAgY2FzZSBDU1NWYWx1
ZVRpdGxpbmdDYXBzOgorICAgICAgICAgICAgLy8gT25seSBvbmUgY2FwcyB2YWx1ZSBwZXJtaXR0
ZWQgaW4gZm9udC12YXJpYW50IGdyYW1tYXIuCisgICAgICAgICAgICBpZiAoY2Fwc1ZhbHVlKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGNhcHNWYWx1ZSA9IGNv
bnN1bWVJZGVudChtX3JhbmdlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfSB3aGlsZSAoIW1f
cmFuZ2UuYXRFbmQoKSk7CisKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50
TGlnYXR1cmVzLCBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LCAqbGlnYXR1cmVzUGFyc2VyLmZpbmFs
aXplVmFsdWUoKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRW
YXJpYW50TnVtZXJpYywgQ1NTUHJvcGVydHlGb250VmFyaWFudCwgKm51bWVyaWNQYXJzZXIuZmlu
YWxpemVWYWx1ZSgpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9u
dFZhcmlhbnRDYXBzLCBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LCBjYXBzVmFsdWUgPyAqY2Fwc1Zh
bHVlIDogKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFs
KSwgaW1wb3J0YW50KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBh
cnNlcjo6Y29uc3VtZUJvcmRlclNwYWNpbmcoYm9vbCBpbXBvcnRhbnQpCit7CisgICAgQ1NTVmFs
dWUqIGhvcml6b250YWxTcGFjaW5nID0gY29uc3VtZUxlbmd0aChtX3JhbmdlLCBtX2NvbnRleHQu
bW9kZSgpLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUsIFVuaXRsZXNzUXVpcms6OkFsbG93KTsKKyAg
ICBpZiAoIWhvcml6b250YWxTcGFjaW5nKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQ1NT
VmFsdWUqIHZlcnRpY2FsU3BhY2luZyA9IGhvcml6b250YWxTcGFjaW5nOworICAgIGlmICghbV9y
YW5nZS5hdEVuZCgpKQorICAgICAgICB2ZXJ0aWNhbFNwYWNpbmcgPSBjb25zdW1lTGVuZ3RoKG1f
cmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwgVW5pdGxlc3NR
dWlyazo6QWxsb3cpOworICAgIGlmICghdmVydGljYWxTcGFjaW5nIHx8ICFtX3JhbmdlLmF0RW5k
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcsICpo
b3Jpem9udGFsU3BhY2luZywgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZywgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nLCAq
dmVydGljYWxTcGFjaW5nLCBpbXBvcnRhbnQpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0
aWMgQ1NTVmFsdWUqIGNvbnN1bWVTaW5nbGVWaWV3cG9ydERlc2NyaXB0b3IoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIENTU1Byb3BlcnR5SUQgcHJvcElkLCBDU1NQYXJzZXJNb2RlIGNzc1Bh
cnNlck1vZGUpCit7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAg
IHN3aXRjaCAocHJvcElkKSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbldpZHRoOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlNYXhXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWluSGVpZ2h0Ogor
ICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhIZWlnaHQ6CisgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1
ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVJbnRlcm5hbEV4dGVuZFRvWm9vbSkKKyAgICAgICAgICAg
IHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0
aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5TWluWm9vbToKKyAgICBjYXNlIENTU1Byb3BlcnR5TWF4Wm9v
bToKKyAgICBjYXNlIENTU1Byb3BlcnR5Wm9vbTogeworICAgICAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVBdXRvKQorICAgICAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgICAg
IENTU1ZhbHVlKiBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2VO
b25OZWdhdGl2ZSk7CisgICAgICAgIGlmIChwYXJzZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVy
biBwYXJzZWRWYWx1ZTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVQZXJjZW50KHJhbmdlLCBWYWx1
ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5VXNlclpvb206
CisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVab29tLCBDU1NWYWx1ZUZpeGVk
PihyYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9yaWVudGF0aW9uOgorICAgICAgICByZXR1
cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVQb3J0cmFpdCwgQ1NTVmFsdWVM
YW5kc2NhcGU+KHJhbmdlKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNl
Vmlld3BvcnREZXNjcmlwdG9yKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkK
K3sKKyAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzVmlld3BvcnRFbmFibGVk
KCkgfHwgaXNVQVNoZWV0QmVoYXZpb3IobV9jb250ZXh0Lm1vZGUoKSkpOworCisgICAgc3dpdGNo
IChwcm9wSWQpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2lkdGg6IHsKKyAgICAgICAgQ1NTVmFs
dWUqIG1pbldpZHRoID0gY29uc3VtZVNpbmdsZVZpZXdwb3J0RGVzY3JpcHRvcihtX3JhbmdlLCBD
U1NQcm9wZXJ0eU1pbldpZHRoLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICAgICAgaWYgKCFtaW5X
aWR0aCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgQ1NTVmFsdWUqIG1heFdp
ZHRoID0gbWluV2lkdGg7CisgICAgICAgIGlmICghbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICAg
ICAgbWF4V2lkdGggPSBjb25zdW1lU2luZ2xlVmlld3BvcnREZXNjcmlwdG9yKG1fcmFuZ2UsIENT
U1Byb3BlcnR5TWF4V2lkdGgsIG1fY29udGV4dC5tb2RlKCkpOworICAgICAgICBpZiAoIW1heFdp
ZHRoIHx8ICFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5TWluV2lkdGgsIENTU1Byb3BlcnR5SW52YWxpZCwg
Km1pbldpZHRoLCBpbXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1h
eFdpZHRoLCBDU1NQcm9wZXJ0eUludmFsaWQsICptYXhXaWR0aCwgaW1wb3J0YW50KTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlIZWlnaHQ6IHsKKyAg
ICAgICAgQ1NTVmFsdWUqIG1pbkhlaWdodCA9IGNvbnN1bWVTaW5nbGVWaWV3cG9ydERlc2NyaXB0
b3IobV9yYW5nZSwgQ1NTUHJvcGVydHlNaW5IZWlnaHQsIG1fY29udGV4dC5tb2RlKCkpOworICAg
ICAgICBpZiAoIW1pbkhlaWdodCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
Q1NTVmFsdWUqIG1heEhlaWdodCA9IG1pbkhlaWdodDsKKyAgICAgICAgaWYgKCFtX3JhbmdlLmF0
RW5kKCkpCisgICAgICAgICAgICBtYXhIZWlnaHQgPSBjb25zdW1lU2luZ2xlVmlld3BvcnREZXNj
cmlwdG9yKG1fcmFuZ2UsIENTU1Byb3BlcnR5TWF4SGVpZ2h0LCBtX2NvbnRleHQubW9kZSgpKTsK
KyAgICAgICAgaWYgKCFtYXhIZWlnaHQgfHwgIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlNaW5IZWlnaHQs
IENTU1Byb3BlcnR5SW52YWxpZCwgKm1pbkhlaWdodCwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRk
UHJvcGVydHkoQ1NTUHJvcGVydHlNYXhIZWlnaHQsIENTU1Byb3BlcnR5SW52YWxpZCwgKm1heEhl
aWdodCwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGNhc2Ug
Q1NTUHJvcGVydHlNaW5XaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWF4V2lkdGg6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eU1pbkhlaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWF4SGVpZ2h0
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5ab29tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXha
b29tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlab29tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlVc2Vy
Wm9vbToKKyAgICBjYXNlIENTU1Byb3BlcnR5T3JpZW50YXRpb246IHsKKyAgICAgICAgQ1NTVmFs
dWUqIHBhcnNlZFZhbHVlID0gY29uc3VtZVNpbmdsZVZpZXdwb3J0RGVzY3JpcHRvcihtX3Jhbmdl
LCBwcm9wSWQsIG1fY29udGV4dC5tb2RlKCkpOworICAgICAgICBpZiAoIXBhcnNlZFZhbHVlIHx8
ICFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFk
ZFByb3BlcnR5KHByb3BJZCwgQ1NTUHJvcGVydHlJbnZhbGlkLCAqcGFyc2VkVmFsdWUsIGltcG9y
dGFudCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBjb25zdW1lQ29sdW1uV2lk
dGhPckNvdW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NWYWx1ZSomIGNvbHVtbldp
ZHRoLCBDU1NWYWx1ZSomIGNvbHVtbkNvdW50KQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQo
KSA9PSBDU1NWYWx1ZUF1dG8pIHsKKyAgICAgICAgY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmICghY29sdW1uV2lkdGgpIHsKKyAgICAgICAg
Y29sdW1uV2lkdGggPSBjb25zdW1lQ29sdW1uV2lkdGgocmFuZ2UpOworICAgICAgICBpZiAoY29s
dW1uV2lkdGgpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKCFjb2x1
bW5Db3VudCkKKyAgICAgICAgY29sdW1uQ291bnQgPSBjb25zdW1lQ29sdW1uQ291bnQocmFuZ2Up
OworICAgIHJldHVybiBjb2x1bW5Db3VudDsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6
Y29uc3VtZUNvbHVtbnMoYm9vbCBpbXBvcnRhbnQpCit7CisgICAgQ1NTVmFsdWUqIGNvbHVtbldp
ZHRoID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogY29sdW1uQ291bnQgPSBudWxscHRyOworICAg
IGlmICghY29uc3VtZUNvbHVtbldpZHRoT3JDb3VudChtX3JhbmdlLCBjb2x1bW5XaWR0aCwgY29s
dW1uQ291bnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY29uc3VtZUNvbHVtbldpZHRo
T3JDb3VudChtX3JhbmdlLCBjb2x1bW5XaWR0aCwgY29sdW1uQ291bnQpOworICAgIGlmICghbV9y
YW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjb2x1bW5XaWR0
aCkKKyAgICAgICAgY29sdW1uV2lkdGggPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRp
ZmllcihDU1NWYWx1ZUF1dG8pOworICAgIGlmICghY29sdW1uQ291bnQpCisgICAgICAgIGNvbHVt
bkNvdW50ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVBdXRv
KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbHVtbldpZHRoLCBDU1NQcm9wZXJ0eUlu
dmFsaWQsICpjb2x1bW5XaWR0aCwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUNvbHVtbkNvdW50LCBDU1NQcm9wZXJ0eUludmFsaWQsICpjb2x1bW5Db3VudCwgaW1wb3J0
YW50KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29u
c3VtZVNob3J0aGFuZEdyZWVkaWx5KGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0
aGFuZCwgYm9vbCBpbXBvcnRhbnQpCit7CisgICAgQVNTRVJUKHNob3J0aGFuZC5sZW5ndGgoKSA8
PSA2KTsgLy8gRXhpc3Rpbmcgc2hvcnRoYW5kcyBoYXZlIGF0IG1vc3QgNiBsb25naGFuZHMuCisg
ICAgY29uc3QgQ1NTVmFsdWUqIGxvbmdoYW5kc1s2XSA9IHsgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OworICAgIGNvbnN0IENTU1Byb3BlcnR5
SUQqIHNob3J0aGFuZFByb3BlcnRpZXMgPSBzaG9ydGhhbmQucHJvcGVydGllcygpOworICAgIGRv
IHsKKyAgICAgICAgYm9vbCBmb3VuZExvbmdoYW5kID0gZmFsc2U7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyAhZm91bmRMb25naGFuZCAmJiBpIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyArK2kp
IHsKKyAgICAgICAgICAgIGlmIChsb25naGFuZHNbaV0pCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBsb25naGFuZHNbaV0gPSBwYXJzZVNpbmdsZVZhbHVlKHNob3J0aGFu
ZFByb3BlcnRpZXNbaV0sIHNob3J0aGFuZC5pZCgpKTsKKyAgICAgICAgICAgIGlmIChsb25naGFu
ZHNbaV0pCisgICAgICAgICAgICAgICAgZm91bmRMb25naGFuZCA9IHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKCFmb3VuZExvbmdoYW5kKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0gd2hpbGUgKCFtX3JhbmdlLmF0RW5kKCkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsraSkgeworICAgICAgICBpZiAobG9uZ2hhbmRzW2ld
KQorICAgICAgICAgICAgYWRkUHJvcGVydHkoc2hvcnRoYW5kUHJvcGVydGllc1tpXSwgc2hvcnRo
YW5kLmlkKCksICpsb25naGFuZHNbaV0sIGltcG9ydGFudCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGFkZFByb3BlcnR5KHNob3J0aGFuZFByb3BlcnRpZXNbaV0sIHNob3J0aGFuZC5pZCgp
LCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29u
c3VtZUZsZXgoYm9vbCBpbXBvcnRhbnQpCit7CisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB1bnNl
dFZhbHVlID0gLTE7CisgICAgZG91YmxlIGZsZXhHcm93ID0gdW5zZXRWYWx1ZTsKKyAgICBkb3Vi
bGUgZmxleFNocmluayA9IHVuc2V0VmFsdWU7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZsZXhC
YXNpcyA9IG51bGxwdHI7CisKKyAgICBpZiAobV9yYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1
ZU5vbmUpIHsKKyAgICAgICAgZmxleEdyb3cgPSAwOworICAgICAgICBmbGV4U2hyaW5rID0gMDsK
KyAgICAgICAgZmxleEJhc2lzID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIo
Q1NTVmFsdWVBdXRvKTsKKyAgICAgICAgbV9yYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFj
ZSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICAgICAg
d2hpbGUgKCFtX3JhbmdlLmF0RW5kKCkgJiYgaW5kZXgrKyA8IDMpIHsKKyAgICAgICAgICAgIGRv
dWJsZSBudW07CisgICAgICAgICAgICBpZiAoY29uc3VtZU51bWJlclJhdyhtX3JhbmdlLCBudW0p
KSB7CisgICAgICAgICAgICAgICAgaWYgKG51bSA8IDApCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoZmxleEdyb3cgPT0gdW5zZXRWYWx1ZSkK
KyAgICAgICAgICAgICAgICAgICAgZmxleEdyb3cgPSBudW07CisgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoZmxleFNocmluayA9PSB1bnNldFZhbHVlKQorICAgICAgICAgICAgICAgICAgICBmbGV4
U2hyaW5rID0gbnVtOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFudW0pIC8vIGZsZXggb25s
eSBhbGxvd3MgYSBiYXNpcyBvZiAwIChzYW5zIHVuaXRzKSBpZiBmbGV4LWdyb3cgYW5kIGZsZXgt
c2hyaW5rIHZhbHVlcyBoYXZlIGFscmVhZHkgYmVlbiBzZXQuCisgICAgICAgICAgICAgICAgICAg
IGZsZXhCYXNpcyA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMCwgQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlOjpQaXhlbHMpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfSBlbHNlIGlmICghZmxleEJhc2lz
KSB7CisgICAgICAgICAgICAgICAgaWYgKG1fcmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVB
dXRvKQorICAgICAgICAgICAgICAgICAgICBmbGV4QmFzaXMgPSBjb25zdW1lSWRlbnQobV9yYW5n
ZSk7CisgICAgICAgICAgICAgICAgaWYgKCFmbGV4QmFzaXMpCisgICAgICAgICAgICAgICAgICAg
IGZsZXhCYXNpcyA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQobV9yYW5nZSwgbV9jb250ZXh0Lm1v
ZGUoKSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXgg
PT0gMiAmJiAhbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGluZGV4ID09IDApCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChmbGV4R3JvdyA9PSB1bnNldFZh
bHVlKQorICAgICAgICAgICAgZmxleEdyb3cgPSAxOworICAgICAgICBpZiAoZmxleFNocmluayA9
PSB1bnNldFZhbHVlKQorICAgICAgICAgICAgZmxleFNocmluayA9IDE7CisgICAgICAgIGlmICgh
ZmxleEJhc2lzKQorICAgICAgICAgICAgZmxleEJhc2lzID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZSgwLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBlcmNlbnRhZ2UpOworICAgIH0K
KworICAgIGlmICghbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGbGV4R3JvdywgQ1NTUHJvcGVydHlGbGV4LCAqQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShjbGFtcFRvPGZsb2F0PihmbGV4R3JvdyksIENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUZsZXhTaHJpbmssIENTU1Byb3BlcnR5RmxleCwgKkNTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGUoY2xhbXBUbzxmbG9hdD4oZmxleFNocmluayksIENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZTo6TnVtYmVyKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0
eUZsZXhCYXNpcywgQ1NTUHJvcGVydHlGbGV4LCAqZmxleEJhc2lzLCBpbXBvcnRhbnQpOworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lQm9yZGVy
KGJvb2wgaW1wb3J0YW50KQoreworICAgIENTU1ZhbHVlKiB3aWR0aCA9IG51bGxwdHI7CisgICAg
Y29uc3QgQ1NTVmFsdWUqIHN0eWxlID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogY29sb3IgPSBu
dWxscHRyOworCisgICAgd2hpbGUgKCF3aWR0aCB8fCAhc3R5bGUgfHwgIWNvbG9yKSB7CisgICAg
ICAgIGlmICghd2lkdGgpIHsKKyAgICAgICAgICAgIHdpZHRoID0gY29uc3VtZUxpbmVXaWR0aCht
X3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworICAgICAg
ICAgICAgaWYgKHdpZHRoKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9Cisg
ICAgICAgIGlmICghc3R5bGUpIHsKKyAgICAgICAgICAgIHN0eWxlID0gcGFyc2VTaW5nbGVWYWx1
ZShDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXIpOworICAgICAg
ICAgICAgaWYgKHN0eWxlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9Cisg
ICAgICAgIGlmICghY29sb3IpIHsKKyAgICAgICAgICAgIGNvbG9yID0gY29uc3VtZUNvbG9yKG1f
cmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgICAgICAgICAgaWYgKGNvbG9yKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIGlmICghd2lkdGggJiYgIXN0eWxlICYmICFjb2xvcikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKCF3aWR0aCkKKyAgICAgICAgd2lkdGggPSBDU1NJbml0aWFsVmFsdWU6OmNy
ZWF0ZUxlZ2FjeUltcGxpY2l0KCk7CisgICAgaWYgKCFzdHlsZSkKKyAgICAgICAgc3R5bGUgPSBD
U1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCk7CisgICAgaWYgKCFjb2xvcikK
KyAgICAgICAgY29sb3IgPSBDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCk7
CisKKyAgICBhZGRFeHBhbmRlZFByb3BlcnR5Rm9yVmFsdWUoQ1NTUHJvcGVydHlCb3JkZXJXaWR0
aCwgKndpZHRoLCBpbXBvcnRhbnQpOworICAgIGFkZEV4cGFuZGVkUHJvcGVydHlGb3JWYWx1ZShD
U1NQcm9wZXJ0eUJvcmRlclN0eWxlLCAqc3R5bGUsIGltcG9ydGFudCk7CisgICAgYWRkRXhwYW5k
ZWRQcm9wZXJ0eUZvclZhbHVlKENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IsICpjb2xvciwgaW1wb3J0
YW50KTsKKyAgICBhZGRFeHBhbmRlZFByb3BlcnR5Rm9yVmFsdWUoQ1NTUHJvcGVydHlCb3JkZXJJ
bWFnZSwgKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50
KTsKKworICAgIHJldHVybiBtX3JhbmdlLmF0RW5kKCk7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQ
YXJzZXI6OmNvbnN1bWU0VmFsdWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0
aGFuZCwgYm9vbCBpbXBvcnRhbnQpCit7CisgICAgQVNTRVJUKHNob3J0aGFuZC5sZW5ndGgoKSA9
PSA0KTsKKyAgICBjb25zdCBDU1NQcm9wZXJ0eUlEKiBsb25naGFuZHMgPSBzaG9ydGhhbmQucHJv
cGVydGllcygpOworICAgIGNvbnN0IENTU1ZhbHVlKiB0b3AgPSBwYXJzZVNpbmdsZVZhbHVlKGxv
bmdoYW5kc1swXSwgc2hvcnRoYW5kLmlkKCkpOworICAgIGlmICghdG9wKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBjb25zdCBDU1NWYWx1ZSogcmlnaHQgPSBwYXJzZVNpbmdsZVZhbHVl
KGxvbmdoYW5kc1sxXSwgc2hvcnRoYW5kLmlkKCkpOworICAgIGNvbnN0IENTU1ZhbHVlKiBib3R0
b20gPSBudWxscHRyOworICAgIGNvbnN0IENTU1ZhbHVlKiBsZWZ0ID0gbnVsbHB0cjsKKyAgICBp
ZiAocmlnaHQpIHsKKyAgICAgICAgYm90dG9tID0gcGFyc2VTaW5nbGVWYWx1ZShsb25naGFuZHNb
Ml0sIHNob3J0aGFuZC5pZCgpKTsKKyAgICAgICAgaWYgKGJvdHRvbSkKKyAgICAgICAgICAgIGxl
ZnQgPSBwYXJzZVNpbmdsZVZhbHVlKGxvbmdoYW5kc1szXSwgc2hvcnRoYW5kLmlkKCkpOworICAg
IH0KKworICAgIGlmICghcmlnaHQpCisgICAgICAgIHJpZ2h0ID0gdG9wOworICAgIGlmICghYm90
dG9tKQorICAgICAgICBib3R0b20gPSB0b3A7CisgICAgaWYgKCFsZWZ0KQorICAgICAgICBsZWZ0
ID0gcmlnaHQ7CisKKyAgICBhZGRQcm9wZXJ0eShsb25naGFuZHNbMF0sIHNob3J0aGFuZC5pZCgp
LCAqdG9wLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KGxvbmdoYW5kc1sxXSwgc2hvcnRo
YW5kLmlkKCksICpyaWdodCwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShsb25naGFuZHNb
Ml0sIHNob3J0aGFuZC5pZCgpLCAqYm90dG9tLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5
KGxvbmdoYW5kc1szXSwgc2hvcnRoYW5kLmlkKCksICpsZWZ0LCBpbXBvcnRhbnQpOworCisgICAg
cmV0dXJuIG1fcmFuZ2UuYXRFbmQoKTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29u
c3VtZUJvcmRlckltYWdlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGJvb2wgaW1wb3J0YW50KQor
eworICAgIENTU1ZhbHVlKiBzb3VyY2UgPSBudWxscHRyOworICAgIENTU1ZhbHVlKiBzbGljZSA9
IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIHdpZHRoID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSog
b3V0c2V0ID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogcmVwZWF0ID0gbnVsbHB0cjsKKyAgICBp
ZiAoY29uc3VtZUJvcmRlckltYWdlQ29tcG9uZW50cyhwcm9wZXJ0eSwgbV9yYW5nZSwgbV9jb250
ZXh0LCBzb3VyY2UsIHNsaWNlLCB3aWR0aCwgb3V0c2V0LCByZXBlYXQpKSB7CisgICAgICAgIHN3
aXRjaCAocHJvcGVydHkpIHsKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJ
bWFnZToKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFza0JveElt
YWdlU291cmNlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgc291cmNlID8gKnNvdXJj
ZSA6ICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7
CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVNs
aWNlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgc2xpY2UgPyAqc2xpY2UgOiAqQ1NT
SW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgICAg
ICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VXaWR0aCwgQ1NT
UHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2UsIHdpZHRoID8gKndpZHRoIDogKkNTU0luaXRpYWxW
YWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgIGFk
ZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlT3V0c2V0LCBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tCb3hJbWFnZSwgb3V0c2V0ID8gKm91dHNldCA6ICpDU1NJbml0aWFsVmFsdWU6
OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7CisgICAgICAgICAgICBhZGRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVJlcGVhdCwgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrQm94SW1hZ2UsIHJlcGVhdCA/ICpyZXBlYXQgOiAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVh
dGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZToKKyAgICAgICAgICAgIGFkZFBy
b3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VTb3VyY2UsIENTU1Byb3BlcnR5Qm9yZGVySW1h
Z2UsIHNvdXJjZSA/ICpzb3VyY2UgOiAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBs
aWNpdCgpLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlC
b3JkZXJJbWFnZVNsaWNlLCBDU1NQcm9wZXJ0eUJvcmRlckltYWdlLCBzbGljZSA/ICpzbGljZSA6
ICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7Cisg
ICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckltYWdlV2lkdGgsIENTU1By
b3BlcnR5Qm9yZGVySW1hZ2UsIHdpZHRoID8gKndpZHRoIDogKkNTU0luaXRpYWxWYWx1ZTo6Y3Jl
YXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgIGFkZFByb3BlcnR5
KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VPdXRzZXQsIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2UsIG91
dHNldCA/ICpvdXRzZXQgOiAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgp
LCBpbXBvcnRhbnQpOworICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJJ
bWFnZVJlcGVhdCwgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZSwgcmVwZWF0ID8gKnJlcGVhdCA6ICpD
U1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGlubGluZSBDU1NWYWx1ZUlEIG1h
cEZyb21QYWdlQnJlYWtCZXR3ZWVuKENTU1ZhbHVlSUQgdmFsdWUpCit7CisgICAgaWYgKHZhbHVl
ID09IENTU1ZhbHVlQWx3YXlzKQorICAgICAgICByZXR1cm4gQ1NTVmFsdWVQYWdlOworICAgIGlm
ICh2YWx1ZSA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWUgPT0gQ1NTVmFsdWVBdm9pZCB8fCB2YWx1
ZSA9PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWUgPT0gQ1NTVmFsdWVSaWdodCkKKyAgICAgICAgcmV0
dXJuIHZhbHVlOworICAgIHJldHVybiBDU1NWYWx1ZUludmFsaWQ7Cit9CisKK3N0YXRpYyBpbmxp
bmUgQ1NTVmFsdWVJRCBtYXBGcm9tQ29sdW1uQnJlYWtCZXR3ZWVuKENTU1ZhbHVlSUQgdmFsdWUp
Cit7CisgICAgaWYgKHZhbHVlID09IENTU1ZhbHVlQWx3YXlzKQorICAgICAgICByZXR1cm4gQ1NT
VmFsdWVDb2x1bW47CisgICAgaWYgKHZhbHVlID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZSA9PSBD
U1NWYWx1ZUF2b2lkKQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgcmV0dXJuIENTU1ZhbHVl
SW52YWxpZDsKK30KKworc3RhdGljIGlubGluZSBDU1NWYWx1ZUlEIG1hcEZyb21Db2x1bW5PclBh
Z2VCcmVha0luc2lkZShDU1NWYWx1ZUlEIHZhbHVlKQoreworICAgIGlmICh2YWx1ZSA9PSBDU1NW
YWx1ZUF1dG8gfHwgdmFsdWUgPT0gQ1NTVmFsdWVBdm9pZCkKKyAgICAgICAgcmV0dXJuIHZhbHVl
OworICAgIHJldHVybiBDU1NWYWx1ZUludmFsaWQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgQ1NTUHJv
cGVydHlJRCBtYXBGcm9tTGVnYWN5QnJlYWtQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
KQoreworICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyIHx8IHBy
b3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtBZnRlcikKKyAgICAgICAgcmV0
dXJuIENTU1Byb3BlcnR5QnJlYWtBZnRlcjsKKyAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVy
dHlQYWdlQnJlYWtCZWZvcmUgfHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5C
cmVha0JlZm9yZSkKKyAgICAgICAgcmV0dXJuIENTU1Byb3BlcnR5QnJlYWtCZWZvcmU7CisgICAg
QVNTRVJUKHByb3BlcnR5ID09IENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlIHx8IHByb3BlcnR5
ID09IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGUpOworICAgIHJldHVybiBDU1NQ
cm9wZXJ0eUJyZWFrSW5zaWRlOworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1l
TGVnYWN5QnJlYWtQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBib29sIGltcG9ydGFu
dCkKK3sKKyAgICAvLyBUaGUgZnJhZ21lbnRhdGlvbiBzcGVjIHNheXMgdGhhdCBwYWdlLWJyZWFr
LShhZnRlcnxiZWZvcmV8aW5zaWRlKSBhcmUgdG8gYmUgdHJlYXRlZCBhcworICAgIC8vIHNob3J0
aGFuZHMgZm9yIHRoZWlyIGJyZWFrLShhZnRlcnxiZWZvcmV8aW5zaWRlKSBjb3VudGVycGFydHMu
IFdlJ2xsIGRvIHRoZSBzYW1lIGZvciB0aGUKKyAgICAvLyBub24tc3RhbmRhcmQgcHJvcGVydGll
cyAtd2Via2l0LWNvbHVtbi1icmVhay0oYWZ0ZXJ8YmVmb3JlfGluc2lkZSkuCisgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIGtleXdvcmQgPSBjb25zdW1lSWRlbnQobV9yYW5nZSk7CisgICAgaWYgKCFr
ZXl3b3JkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBDU1NWYWx1ZUlEIHZhbHVlID0ga2V5d29yZC0+
Z2V0VmFsdWVJRCgpOworICAgIHN3aXRjaCAocHJvcGVydHkpIHsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5UGFnZUJyZWFrQWZ0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0JlZm9yZToK
KyAgICAgICAgdmFsdWUgPSBtYXBGcm9tUGFnZUJyZWFrQmV0d2Vlbih2YWx1ZSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0FmdGVyOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0JlZm9yZToKKyAgICAgICAgdmFsdWUg
PSBtYXBGcm9tQ29sdW1uQnJlYWtCZXR3ZWVuKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0luc2lkZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Q29sdW1uQnJlYWtJbnNpZGU6CisgICAgICAgIHZhbHVlID0gbWFwRnJvbUNvbHVtbk9yUGFn
ZUJyZWFrSW5zaWRlKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIGlmICh2YWx1ZSA9PSBDU1NWYWx1
ZUludmFsaWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENTU1Byb3BlcnR5SUQgZ2Vu
ZXJpY0JyZWFrUHJvcGVydHkgPSBtYXBGcm9tTGVnYWN5QnJlYWtQcm9wZXJ0eShwcm9wZXJ0eSk7
CisgICAgYWRkUHJvcGVydHkoZ2VuZXJpY0JyZWFrUHJvcGVydHksIHByb3BlcnR5LCAqQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIodmFsdWUpLCBpbXBvcnRhbnQpOworICAgIHJl
dHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBjb25zdW1lQmFja2dyb3VuZFBvc2l0aW9uKENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0
LCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzLCBDU1NWYWx1ZSomIHJlc3VsdFgsIENTU1ZhbHVlKiYg
cmVzdWx0WSkKK3sKKyAgICBkbyB7CisgICAgICAgIENTU1ZhbHVlKiBwb3NpdGlvblggPSBudWxs
cHRyOworICAgICAgICBDU1NWYWx1ZSogcG9zaXRpb25ZID0gbnVsbHB0cjsKKyAgICAgICAgaWYg
KCFjb25zdW1lUG9zaXRpb24ocmFuZ2UsIGNvbnRleHQubW9kZSgpLCB1bml0bGVzcywgcG9zaXRp
b25YLCBwb3NpdGlvblkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhZGRC
YWNrZ3JvdW5kVmFsdWUocmVzdWx0WCwgcG9zaXRpb25YKTsKKyAgICAgICAgYWRkQmFja2dyb3Vu
ZFZhbHVlKHJlc3VsdFksIHBvc2l0aW9uWSk7CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5j
bHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMg
Ym9vbCBjb25zdW1lUmVwZWF0U3R5bGVDb21wb25lbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIENTU1ZhbHVlKiYgdmFsdWUxLCBDU1NWYWx1ZSomIHZhbHVlMiwgYm9vbCYgaW1wbGljaXQp
Cit7CisgICAgaWYgKGNvbnN1bWVJZGVudDxDU1NWYWx1ZVJlcGVhdFg+KHJhbmdlKSkgeworICAg
ICAgICB2YWx1ZTEgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1
ZVJlcGVhdCk7CisgICAgICAgIHZhbHVlMiA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVu
dGlmaWVyKENTU1ZhbHVlTm9SZXBlYXQpOworICAgICAgICBpbXBsaWNpdCA9IHRydWU7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoY29uc3VtZUlkZW50PENTU1ZhbHVlUmVw
ZWF0WT4ocmFuZ2UpKSB7CisgICAgICAgIHZhbHVlMSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGVJZGVudGlmaWVyKENTU1ZhbHVlTm9SZXBlYXQpOworICAgICAgICB2YWx1ZTIgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVJlcGVhdCk7CisgICAgICAgIGlt
cGxpY2l0ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHZhbHVlMSA9
IGNvbnN1bWVJZGVudDxDU1NWYWx1ZVJlcGVhdCwgQ1NTVmFsdWVOb1JlcGVhdCwgQ1NTVmFsdWVS
b3VuZCwgQ1NTVmFsdWVTcGFjZT4ocmFuZ2UpOworICAgIGlmICghdmFsdWUxKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICB2YWx1ZTIgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVSZXBlYXQs
IENTU1ZhbHVlTm9SZXBlYXQsIENTU1ZhbHVlUm91bmQsIENTU1ZhbHVlU3BhY2U+KHJhbmdlKTsK
KyAgICBpZiAoIXZhbHVlMikgeworICAgICAgICB2YWx1ZTIgPSB2YWx1ZTE7CisgICAgICAgIGlt
cGxpY2l0ID0gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29s
IGNvbnN1bWVSZXBlYXRTdHlsZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTVmFsdWUq
JiByZXN1bHRYLCBDU1NWYWx1ZSomIHJlc3VsdFksIGJvb2wmIGltcGxpY2l0KQoreworICAgIGRv
IHsKKyAgICAgICAgQ1NTVmFsdWUqIHJlcGVhdFggPSBudWxscHRyOworICAgICAgICBDU1NWYWx1
ZSogcmVwZWF0WSA9IG51bGxwdHI7CisgICAgICAgIGlmICghY29uc3VtZVJlcGVhdFN0eWxlQ29t
cG9uZW50KHJhbmdlLCByZXBlYXRYLCByZXBlYXRZLCBpbXBsaWNpdCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGFkZEJhY2tncm91bmRWYWx1ZShyZXN1bHRYLCByZXBlYXRY
KTsKKyAgICAgICAgYWRkQmFja2dyb3VuZFZhbHVlKHJlc3VsdFksIHJlcGVhdFkpOworICAgIH0g
d2hpbGUgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworLy8gTm90ZTogY29uc3VtZUJhY2tncm91bmRTaG9ydGhhbmQgYXNzdW1l
cyB5IHByb3BlcnRpZXMgKGZvciBleGFtcGxlIGJhY2tncm91bmQtcG9zaXRpb24teSkgZm9sbG93
CisvLyB0aGUgeCBwcm9wZXJ0aWVzIGluIHRoZSBzaG9ydGhhbmQgYXJyYXkuCitib29sIENTU1By
b3BlcnR5UGFyc2VyOjpjb25zdW1lQmFja2dyb3VuZFNob3J0aGFuZChjb25zdCBTdHlsZVByb3Bl
cnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQsIGJvb2wgaW1wb3J0YW50KQoreworICAgIGNvbnN0IHVu
c2lnbmVkIGxvbmdoYW5kQ291bnQgPSBzaG9ydGhhbmQubGVuZ3RoKCk7CisgICAgQ1NTVmFsdWUq
IGxvbmdoYW5kc1sxMF0gPSB7IDAgfTsKKyAgICBBU1NFUlQobG9uZ2hhbmRDb3VudCA8PSAxMCk7
CisKKyAgICBib29sIGltcGxpY2l0ID0gZmFsc2U7CisgICAgZG8geworICAgICAgICBib29sIHBh
cnNlZExvbmdoYW5kWzEwXSA9IHsgZmFsc2UgfTsKKyAgICAgICAgQ1NTVmFsdWUqIG9yaWdpblZh
bHVlID0gbnVsbHB0cjsKKyAgICAgICAgZG8geworICAgICAgICAgICAgYm9vbCBmb3VuZFByb3Bl
cnR5ID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxvbmdoYW5k
Q291bnQ7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChwYXJzZWRMb25naGFuZFtpXSkKKyAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBDU1NWYWx1ZSog
dmFsdWUgPSBudWxscHRyOworICAgICAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZVkgPSBudWxs
cHRyOworICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHkgPSBzaG9ydGhhbmQu
cHJvcGVydGllcygpW2ldOworICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRSZXBlYXRYIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0TWFz
a1JlcGVhdFgpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3VtZVJlcGVhdFN0eWxlQ29tcG9u
ZW50KG1fcmFuZ2UsIHZhbHVlLCB2YWx1ZVksIGltcGxpY2l0KTsKKyAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCB8fCBw
cm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSBtX3JhbmdlOworICAgICAg
ICAgICAgICAgICAgICBpZiAoIWNvbnN1bWVQb3NpdGlvbihyYW5nZUNvcHksIG1fY29udGV4dC5t
b2RlKCksIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgdmFsdWUsIHZhbHVlWSkpCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgbV9yYW5nZSA9IHJh
bmdlQ29weTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5ID09IENTU1Byb3Bl
cnR5QmFja2dyb3VuZFNpemUgfHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6
ZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRl
c3BhY2UobV9yYW5nZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgICAgICAgICAgdmFsdWUgPSBjb25zdW1lQmFja2dyb3VuZFNpemUocHJvcGVydHksIG1f
cmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbHVl
IHx8ICFwYXJzZWRMb25naGFuZFtpIC0gMV0pIC8vIFBvc2l0aW9uIG11c3QgaGF2ZSBiZWVuIHBh
cnNlZCBpbiB0aGUgY3VycmVudCBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5ID09IENTU1Byb3Bl
cnR5QmFja2dyb3VuZFBvc2l0aW9uWSB8fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91
bmRSZXBlYXRZCisgICAgICAgICAgICAgICAgICAgIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5
V2Via2l0TWFza1Bvc2l0aW9uWSB8fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tS
ZXBlYXRZKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gY29uc3VtZUJhY2tncm91bmRD
b21wb25lbnQocHJvcGVydHksIG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
cHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luIHx8IHByb3BlcnR5ID09IENT
U1Byb3BlcnR5V2Via2l0TWFza09yaWdpbikKKyAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdp
blZhbHVlID0gdmFsdWU7CisgICAgICAgICAgICAgICAgICAgIHBhcnNlZExvbmdoYW5kW2ldID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgZm91bmRQcm9wZXJ0eSA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgIGFkZEJhY2tncm91bmRWYWx1ZShsb25naGFuZHNbaV0sIHZhbHVlKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlWSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
cGFyc2VkTG9uZ2hhbmRbaSArIDFdID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFk
ZEJhY2tncm91bmRWYWx1ZShsb25naGFuZHNbaSArIDFdLCB2YWx1ZVkpOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKCFmb3VuZFByb3BlcnR5KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfSB3aGlsZSAoIW1fcmFuZ2UuYXRFbmQoKSAmJiBtX3JhbmdlLnBlZWsoKS50eXBlKCkgIT0g
Q29tbWFUb2tlbik7CisKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgd2lsbCBtYWtlIGludmFsaWQg
bG9uZ2hhbmRzLCBzZWUgY3JidWcuY29tLzM4NjQ1OQorICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxvbmdoYW5kQ291bnQ7ICsraSkgeworICAgICAgICAgICAgQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eSA9IHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV07CisgICAgICAgICAgICBpZiAocHJv
cGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IgJiYgIW1fcmFuZ2UuYXRFbmQoKSkg
eworICAgICAgICAgICAgICAgIGlmIChwYXJzZWRMb25naGFuZFtpXSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOyAvLyBDb2xvcnMgYXJlIG9ubHkgYWxsb3dlZCBpbiB0aGUgbGFz
dCBsYXllci4KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmICgocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCB8fCBwcm9w
ZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwKSAmJiAhcGFyc2VkTG9uZ2hhbmRbaV0g
JiYgb3JpZ2luVmFsdWUpIHsKKyAgICAgICAgICAgICAgICBhZGRCYWNrZ3JvdW5kVmFsdWUobG9u
Z2hhbmRzW2ldLCBvcmlnaW5WYWx1ZSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAoIXBhcnNlZExvbmdoYW5kW2ldKQorICAgICAgICAg
ICAgICAgIGFkZEJhY2tncm91bmRWYWx1ZShsb25naGFuZHNbaV0sIENTU0luaXRpYWxWYWx1ZTo6
Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSk7CisgICAgICAgIH0KKyAgICB9IHdoaWxlIChjb25zdW1l
Q29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKG1fcmFuZ2UpKTsKKyAgICBpZiAoIW1fcmFuZ2UuYXRF
bmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBsb25naGFuZENvdW50OyArK2kpIHsKKyAgICAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSA9
IHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV07CisgICAgICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRTaXplICYmIGxvbmdoYW5kc1tpXSAmJiBtX2NvbnRleHQudXNlTGVn
YWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvcigpKQorICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnR5LCBzaG9ydGhhbmQuaWQoKSwgKmxvbmdo
YW5kc1tpXSwgaW1wb3J0YW50LCBpbXBsaWNpdCk7CisgICAgfQorICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lR3JpZEl0ZW1Qb3NpdGlvblNob3J0
aGFuZChDU1NQcm9wZXJ0eUlEIHNob3J0aGFuZElkLCBib29sIGltcG9ydGFudCkKK3sKKyAgICBB
U1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzR3JpZExheW91dEVuYWJsZWQoKSk7Cisg
ICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kID0gc2hvcnRoYW5kRm9y
UHJvcGVydHkoc2hvcnRoYW5kSWQpOworICAgIEFTU0VSVChzaG9ydGhhbmQubGVuZ3RoKCkgPT0g
Mik7CisgICAgQ1NTVmFsdWUqIHN0YXJ0VmFsdWUgPSBjb25zdW1lR3JpZExpbmUobV9yYW5nZSk7
CisgICAgaWYgKCFzdGFydFZhbHVlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDU1NW
YWx1ZSogZW5kVmFsdWUgPSBudWxscHRyOworICAgIGlmIChjb25zdW1lU2xhc2hJbmNsdWRpbmdX
aGl0ZXNwYWNlKG1fcmFuZ2UpKSB7CisgICAgICAgIGVuZFZhbHVlID0gY29uc3VtZUdyaWRMaW5l
KG1fcmFuZ2UpOworICAgICAgICBpZiAoIWVuZFZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0gZWxzZSB7CisgICAgICAgIGVuZFZhbHVlID0gc3RhcnRWYWx1ZS0+aXNDdXN0
b21JZGVudFZhbHVlKCkgPyBzdGFydFZhbHVlIDogQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlk
ZW50aWZpZXIoQ1NTVmFsdWVBdXRvKTsKKyAgICB9CisgICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhZGRQcm9wZXJ0eShzaG9ydGhhbmQucHJvcGVy
dGllcygpWzBdLCBzaG9ydGhhbmRJZCwgKnN0YXJ0VmFsdWUsIGltcG9ydGFudCk7CisgICAgYWRk
UHJvcGVydHkoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVsxXSwgc2hvcnRoYW5kSWQsICplbmRWYWx1
ZSwgaW1wb3J0YW50KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBh
cnNlcjo6Y29uc3VtZUdyaWRBcmVhU2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KQoreworICAgIEFT
U0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NHcmlkTGF5b3V0RW5hYmxlZCgpKTsKKyAg
ICBBU1NFUlQoZ3JpZEFyZWFTaG9ydGhhbmQoKS5sZW5ndGgoKSA9PSA0KTsKKyAgICBDU1NWYWx1
ZSogcm93U3RhcnRWYWx1ZSA9IGNvbnN1bWVHcmlkTGluZShtX3JhbmdlKTsKKyAgICBpZiAoIXJv
d1N0YXJ0VmFsdWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBDU1NWYWx1ZSogY29sdW1u
U3RhcnRWYWx1ZSA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIHJvd0VuZFZhbHVlID0gbnVsbHB0
cjsKKyAgICBDU1NWYWx1ZSogY29sdW1uRW5kVmFsdWUgPSBudWxscHRyOworICAgIGlmIChjb25z
dW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKG1fcmFuZ2UpKSB7CisgICAgICAgIGNvbHVtblN0
YXJ0VmFsdWUgPSBjb25zdW1lR3JpZExpbmUobV9yYW5nZSk7CisgICAgICAgIGlmICghY29sdW1u
U3RhcnRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGNvbnN1
bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UobV9yYW5nZSkpIHsKKyAgICAgICAgICAgIHJvd0Vu
ZFZhbHVlID0gY29uc3VtZUdyaWRMaW5lKG1fcmFuZ2UpOworICAgICAgICAgICAgaWYgKCFyb3dF
bmRWYWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAo
Y29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShtX3JhbmdlKSkgeworICAgICAgICAgICAg
ICAgIGNvbHVtbkVuZFZhbHVlID0gY29uc3VtZUdyaWRMaW5lKG1fcmFuZ2UpOworICAgICAgICAg
ICAgICAgIGlmICghY29sdW1uRW5kVmFsdWUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIW1fcmFuZ2Uu
YXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY29sdW1uU3RhcnRWYWx1
ZSkKKyAgICAgICAgY29sdW1uU3RhcnRWYWx1ZSA9IHJvd1N0YXJ0VmFsdWUtPmlzQ3VzdG9tSWRl
bnRWYWx1ZSgpID8gcm93U3RhcnRWYWx1ZSA6IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVu
dGlmaWVyKENTU1ZhbHVlQXV0byk7CisgICAgaWYgKCFyb3dFbmRWYWx1ZSkKKyAgICAgICAgcm93
RW5kVmFsdWUgPSByb3dTdGFydFZhbHVlLT5pc0N1c3RvbUlkZW50VmFsdWUoKSA/IHJvd1N0YXJ0
VmFsdWUgOiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUF1dG8p
OworICAgIGlmICghY29sdW1uRW5kVmFsdWUpCisgICAgICAgIGNvbHVtbkVuZFZhbHVlID0gY29s
dW1uU3RhcnRWYWx1ZS0+aXNDdXN0b21JZGVudFZhbHVlKCkgPyBjb2x1bW5TdGFydFZhbHVlIDog
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVBdXRvKTsKKworICAg
IGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFJvd1N0YXJ0LCBDU1NQcm9wZXJ0eUdyaWRBcmVh
LCAqcm93U3RhcnRWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0
eUdyaWRDb2x1bW5TdGFydCwgQ1NTUHJvcGVydHlHcmlkQXJlYSwgKmNvbHVtblN0YXJ0VmFsdWUs
IGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkUm93RW5kLCBDU1NQ
cm9wZXJ0eUdyaWRBcmVhLCAqcm93RW5kVmFsdWUsIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVy
dHkoQ1NTUHJvcGVydHlHcmlkQ29sdW1uRW5kLCBDU1NQcm9wZXJ0eUdyaWRBcmVhLCAqY29sdW1u
RW5kVmFsdWUsIGltcG9ydGFudCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTUHJv
cGVydHlQYXJzZXI6OmNvbnN1bWVHcmlkVGVtcGxhdGVSb3dzQW5kQXJlYXNBbmRDb2x1bW5zKENT
U1Byb3BlcnR5SUQgc2hvcnRoYW5kSWQsIGJvb2wgaW1wb3J0YW50KQoreworICAgIE5hbWVkR3Jp
ZEFyZWFNYXAgZ3JpZEFyZWFNYXA7CisgICAgc2l6ZV90IHJvd0NvdW50ID0gMDsKKyAgICBzaXpl
X3QgY29sdW1uQ291bnQgPSAwOworICAgIENTU1ZhbHVlTGlzdCogdGVtcGxhdGVSb3dzID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworCisgICAgLy8gUGVyc2lzdHMgYmV0
d2VlbiBsb29wIGl0ZXJhdGlvbnMgc28gd2UgY2FuIHVzZSB0aGUgc2FtZSB2YWx1ZSBmb3IKKyAg
ICAvLyBjb25zZWN1dGl2ZSA8bGluZS1uYW1lcz4gdmFsdWVzCisgICAgQ1NTR3JpZExpbmVOYW1l
c1ZhbHVlKiBsaW5lTmFtZXMgPSBudWxscHRyOworCisgICAgZG8geworICAgICAgICAvLyBIYW5k
bGUgbGVhZGluZyA8Y3VzdG9tLWlkZW50PiouCisgICAgICAgIGJvb2wgaGFzUHJldmlvdXNMaW5l
TmFtZXMgPSBsaW5lTmFtZXM7CisgICAgICAgIGxpbmVOYW1lcyA9IGNvbnN1bWVHcmlkTGluZU5h
bWVzKG1fcmFuZ2UsIGxpbmVOYW1lcyk7CisgICAgICAgIGlmIChsaW5lTmFtZXMgJiYgIWhhc1By
ZXZpb3VzTGluZU5hbWVzKQorICAgICAgICAgICAgdGVtcGxhdGVSb3dzLT5hcHBlbmQoKmxpbmVO
YW1lcyk7CisKKyAgICAgICAgLy8gSGFuZGxlIGEgdGVtcGxhdGUtYXJlYSdzIHJvdy4KKyAgICAg
ICAgaWYgKG1fcmFuZ2UucGVlaygpLnR5cGUoKSAhPSBTdHJpbmdUb2tlbiB8fCAhcGFyc2VHcmlk
VGVtcGxhdGVBcmVhc1JvdyhtX3JhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFs
dWUoKS50b1N0cmluZygpLCBncmlkQXJlYU1hcCwgcm93Q291bnQsIGNvbHVtbkNvdW50KSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgKytyb3dDb3VudDsKKworICAgICAgICAv
LyBIYW5kbGUgdGVtcGxhdGUtcm93cydzIHRyYWNrLXNpemUuCisgICAgICAgIENTU1ZhbHVlKiB2
YWx1ZSA9IGNvbnN1bWVHcmlkVHJhY2tTaXplKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOwor
ICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgdmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUF1dG8pOworICAgICAgICB0ZW1wbGF0ZVJvd3Mt
PmFwcGVuZCgqdmFsdWUpOworCisgICAgICAgIC8vIFRoaXMgd2lsbCBoYW5kbGUgdGhlIHRyYWls
aW5nL2xlYWRpbmcgPGN1c3RvbS1pZGVudD4qIGluIHRoZSBncmFtbWFyLgorICAgICAgICBsaW5l
TmFtZXMgPSBjb25zdW1lR3JpZExpbmVOYW1lcyhtX3JhbmdlKTsKKyAgICAgICAgaWYgKGxpbmVO
YW1lcykKKyAgICAgICAgICAgIHRlbXBsYXRlUm93cy0+YXBwZW5kKCpsaW5lTmFtZXMpOworICAg
IH0gd2hpbGUgKCFtX3JhbmdlLmF0RW5kKCkgJiYgIShtX3JhbmdlLnBlZWsoKS50eXBlKCkgPT0g
RGVsaW1pdGVyVG9rZW4gJiYgbV9yYW5nZS5wZWVrKCkuZGVsaW1pdGVyKCkgPT0gJy8nKSk7CisK
KyAgICBDU1NWYWx1ZSogY29sdW1uc1ZhbHVlID0gbnVsbHB0cjsKKyAgICBpZiAoIW1fcmFuZ2Uu
YXRFbmQoKSkgeworICAgICAgICBpZiAoIWNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2Uo
bV9yYW5nZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNvbHVtbnNWYWx1
ZSA9IGNvbnN1bWVHcmlkVHJhY2tMaXN0KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIEdyaWRU
ZW1wbGF0ZU5vUmVwZWF0KTsKKyAgICAgICAgaWYgKCFjb2x1bW5zVmFsdWUgfHwgIW1fcmFuZ2Uu
YXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBjb2x1bW5zVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NW
YWx1ZU5vbmUpOworICAgIH0KKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0
ZVJvd3MsIHNob3J0aGFuZElkLCAqdGVtcGxhdGVSb3dzLCBpbXBvcnRhbnQpOworICAgIGFkZFBy
b3BlcnR5KENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQ29sdW1ucywgc2hvcnRoYW5kSWQsICpjb2x1
bW5zVmFsdWUsIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkVGVt
cGxhdGVBcmVhcywgc2hvcnRoYW5kSWQsICpDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlOjpjcmVh
dGUoZ3JpZEFyZWFNYXAsIHJvd0NvdW50LCBjb2x1bW5Db3VudCksIGltcG9ydGFudCk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVHcmlkVGVt
cGxhdGVTaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCBzaG9ydGhhbmRJZCwgYm9vbCBpbXBvcnRhbnQp
Cit7CisgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFi
bGVkKCkpOworICAgIEFTU0VSVChncmlkVGVtcGxhdGVTaG9ydGhhbmQoKS5sZW5ndGgoKSA9PSAz
KTsKKworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2VDb3B5ID0gbV9yYW5nZTsKKyAgICBD
U1NWYWx1ZSogcm93c1ZhbHVlID0gY29uc3VtZUlkZW50PENTU1ZhbHVlTm9uZT4obV9yYW5nZSk7
CisKKyAgICAvLyAxLSAnbm9uZScgY2FzZS4KKyAgICBpZiAocm93c1ZhbHVlICYmIG1fcmFuZ2Uu
YXRFbmQoKSkgeworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZVJv
d3MsIHNob3J0aGFuZElkLCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NT
VmFsdWVOb25lKSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlH
cmlkVGVtcGxhdGVDb2x1bW5zLCBzaG9ydGhhbmRJZCwgKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSksIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3Bl
cnR5KENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQXJlYXMsIHNob3J0aGFuZElkLCAqQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKSwgaW1wb3J0YW50KTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gMi0gPGdyaWQtdGVtcGxhdGUtcm93
cz4gLyA8Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zPgorICAgIGlmICghcm93c1ZhbHVlKQorICAgICAg
ICByb3dzVmFsdWUgPSBjb25zdW1lR3JpZFRyYWNrTGlzdChtX3JhbmdlLCBtX2NvbnRleHQubW9k
ZSgpLCBHcmlkVGVtcGxhdGUpOworCisgICAgaWYgKHJvd3NWYWx1ZSkgeworICAgICAgICBpZiAo
IWNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UobV9yYW5nZSkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIENTU1ZhbHVlKiBjb2x1bW5zVmFsdWUgPSBjb25zdW1lR3Jp
ZFRlbXBsYXRlc1Jvd3NPckNvbHVtbnMobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAg
ICAgIGlmICghY29sdW1uc1ZhbHVlIHx8ICFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkVGVtcGxh
dGVSb3dzLCBzaG9ydGhhbmRJZCwgKnJvd3NWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRk
UHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVDb2x1bW5zLCBzaG9ydGhhbmRJZCwgKmNv
bHVtbnNWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlH
cmlkVGVtcGxhdGVBcmVhcywgc2hvcnRoYW5kSWQsICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
SWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICAvLyAzLSBbIDxsaW5lLW5hbWVzPj8gPHN0cmluZz4gPHRyYWNrLXNp
emU+PyA8bGluZS1uYW1lcz4/IF0rIFsgLyA8dHJhY2stbGlzdD4gXT8KKyAgICBtX3JhbmdlID0g
cmFuZ2VDb3B5OworICAgIHJldHVybiBjb25zdW1lR3JpZFRlbXBsYXRlUm93c0FuZEFyZWFzQW5k
Q29sdW1ucyhzaG9ydGhhbmRJZCwgaW1wb3J0YW50KTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBh
cnNlcjo6Y29uc3VtZUdyaWRTaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpCit7CisgICAgQVNTRVJU
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkpOworICAgIEFT
U0VSVChzaG9ydGhhbmRGb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWQpLmxlbmd0aCgpID09IDgp
OworCisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSBtX3JhbmdlOworCisgICAg
Ly8gMS0gPGdyaWQtdGVtcGxhdGU+CisgICAgaWYgKGNvbnN1bWVHcmlkVGVtcGxhdGVTaG9ydGhh
bmQoQ1NTUHJvcGVydHlHcmlkLCBpbXBvcnRhbnQpKSB7CisgICAgICAgIC8vIEl0IGNhbiBvbmx5
IGJlIHNwZWNpZmllZCB0aGUgZXhwbGljaXQgb3IgdGhlIGltcGxpY2l0IGdyaWQgcHJvcGVydGll
cyBpbiBhIHNpbmdsZSBncmlkIGRlY2xhcmF0aW9uLgorICAgICAgICAvLyBUaGUgc3ViLXByb3Bl
cnRpZXMgbm90IHNwZWNpZmllZCBhcmUgc2V0IHRvIHRoZWlyIGluaXRpYWwgdmFsdWUsIGFzIG5v
cm1hbCBmb3Igc2hvcnRoYW5kcy4KKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlk
QXV0b0Zsb3csIENTU1Byb3BlcnR5R3JpZCwgKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5
SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlH
cmlkQXV0b0NvbHVtbnMsIENTU1Byb3BlcnR5R3JpZCwgKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRl
TGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJv
cGVydHlHcmlkQXV0b1Jvd3MsIENTU1Byb3BlcnR5R3JpZCwgKkNTU0luaXRpYWxWYWx1ZTo6Y3Jl
YXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NT
UHJvcGVydHlHcmlkQ29sdW1uR2FwLCBDU1NQcm9wZXJ0eUdyaWQsICpDU1NJbml0aWFsVmFsdWU6
OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5
KENTU1Byb3BlcnR5R3JpZFJvd0dhcCwgQ1NTUHJvcGVydHlHcmlkLCAqQ1NTSW5pdGlhbFZhbHVl
OjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICBtX3JhbmdlID0gcmFuZ2VDb3B5OworCisgICAgLy8gMi0gPGdyaWQt
YXV0by1mbG93PiBbIDxncmlkLWF1dG8tcm93cz4gWyAvIDxncmlkLWF1dG8tY29sdW1ucz4gXT8g
XQorICAgIENTU1ZhbHVlTGlzdCogZ3JpZEF1dG9GbG93ID0gY29uc3VtZUdyaWRBdXRvRmxvdyht
X3JhbmdlKTsKKyAgICBpZiAoIWdyaWRBdXRvRmxvdykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgQ1NTVmFsdWUqIGF1dG9Db2x1bW5zVmFsdWUgPSBudWxscHRyOworICAgIENTU1ZhbHVl
KiBhdXRvUm93c1ZhbHVlID0gbnVsbHB0cjsKKworICAgIGlmICghbV9yYW5nZS5hdEVuZCgpKSB7
CisgICAgICAgIGF1dG9Sb3dzVmFsdWUgPSBjb25zdW1lR3JpZFRyYWNrTGlzdChtX3JhbmdlLCBt
X2NvbnRleHQubW9kZSgpLCBHcmlkQXV0byk7CisgICAgICAgIGlmICghYXV0b1Jvd3NWYWx1ZSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGNvbnN1bWVTbGFzaEluY2x1
ZGluZ1doaXRlc3BhY2UobV9yYW5nZSkpIHsKKyAgICAgICAgICAgIGF1dG9Db2x1bW5zVmFsdWUg
PSBjb25zdW1lR3JpZFRyYWNrTGlzdChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBHcmlkQXV0
byk7CisgICAgICAgICAgICBpZiAoIWF1dG9Db2x1bW5zVmFsdWUpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmICghbV9yYW5nZS5hdEVuZCgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIE90aGVy
IG9taXR0ZWQgdmFsdWVzIGFyZSBzZXQgdG8gdGhlaXIgaW5pdGlhbCB2YWx1ZXMuCisgICAgICAg
IGF1dG9Db2x1bW5zVmFsdWUgPSBDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0
KCk7CisgICAgICAgIGF1dG9Sb3dzVmFsdWUgPSBDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2Fj
eUltcGxpY2l0KCk7CisgICAgfQorCisgICAgLy8gaWYgPGdyaWQtYXV0by1jb2x1bW5zPiB2YWx1
ZSBpcyBvbWl0dGVkLCBpdCBpcyBzZXQgdG8gdGhlIHZhbHVlIHNwZWNpZmllZCBmb3IgZ3JpZC1h
dXRvLXJvd3MuCisgICAgaWYgKCFhdXRvQ29sdW1uc1ZhbHVlKQorICAgICAgICBhdXRvQ29sdW1u
c1ZhbHVlID0gYXV0b1Jvd3NWYWx1ZTsKKworICAgIC8vIEl0IGNhbiBvbmx5IGJlIHNwZWNpZmll
ZCB0aGUgZXhwbGljaXQgb3IgdGhlIGltcGxpY2l0IGdyaWQgcHJvcGVydGllcyBpbiBhIHNpbmds
ZSBncmlkIGRlY2xhcmF0aW9uLgorICAgIC8vIFRoZSBzdWItcHJvcGVydGllcyBub3Qgc3BlY2lm
aWVkIGFyZSBzZXQgdG8gdGhlaXIgaW5pdGlhbCB2YWx1ZSwgYXMgbm9ybWFsIGZvciBzaG9ydGhh
bmRzLgorICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQ29sdW1ucywgQ1NT
UHJvcGVydHlHcmlkLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBp
bXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlUm93cywg
Q1NTUHJvcGVydHlHcmlkLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgp
LCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQXJl
YXMsIENTU1Byb3BlcnR5R3JpZCwgKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGlj
aXQoKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRBdXRvRmxv
dywgQ1NTUHJvcGVydHlHcmlkLCAqZ3JpZEF1dG9GbG93LCBpbXBvcnRhbnQpOworICAgIGFkZFBy
b3BlcnR5KENTU1Byb3BlcnR5R3JpZEF1dG9Db2x1bW5zLCBDU1NQcm9wZXJ0eUdyaWQsICphdXRv
Q29sdW1uc1ZhbHVlLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3Jp
ZEF1dG9Sb3dzLCBDU1NQcm9wZXJ0eUdyaWQsICphdXRvUm93c1ZhbHVlLCBpbXBvcnRhbnQpOwor
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZENvbHVtbkdhcCwgQ1NTUHJvcGVydHlHcmlk
LCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOwor
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFJvd0dhcCwgQ1NTUHJvcGVydHlHcmlkLCAq
Q1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNob3J0aGFu
ZChDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0eSwgYm9vbCBpbXBvcnRhbnQpCit7Cisg
ICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSA9IHJlc29sdmVDU1NQcm9wZXJ0eUlEKHVucmVzb2x2
ZWRQcm9wZXJ0eSk7CisKKyAgICBzd2l0Y2ggKHByb3BlcnR5KSB7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlOiB7CisgICAgICAgIENTU1ZhbHVlSUQgaWQgPSBtX3Jh
bmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKKyAgICAgICAgaWYgKCFDU1NQ
YXJzZXJGYXN0UGF0aHM6OmlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRWYWx1ZShDU1NQcm9wZXJ0
eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlLCBpZCwgbV9jb250ZXh0Lm1vZGUoKSkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIENTU1ZhbHVlKiBiZWZvcmVDb2xsYXBzZSA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKGlkKTsKKyAgICAgICAgYWRkUHJv
cGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSwgQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5Db2xsYXBzZSwgKmJlZm9yZUNvbGxhcHNlLCBpbXBvcnRhbnQpOworICAgICAg
ICBpZiAobV9yYW5nZS5hdEVuZCgpKSB7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29s
bGFwc2UsICpiZWZvcmVDb2xsYXBzZSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisgICAgICAgIGlkID0gbV9yYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hp
dGVzcGFjZSgpLmlkKCk7CisgICAgICAgIGlmICghQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlk
S2V5d29yZFByb3BlcnR5QW5kVmFsdWUoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxh
cHNlLCBpZCwgbV9jb250ZXh0Lm1vZGUoKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSwg
Q1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSwgKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGVJZGVudGlmaWVyKGlkKSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvdzogeworICAgICAgICBDU1NWYWx1ZUlEIGlk
ID0gbV9yYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgICAgIGlm
ICghQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUoQ1NT
UHJvcGVydHlPdmVyZmxvd1ksIGlkLCBtX2NvbnRleHQubW9kZSgpKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIENTU1ZhbHVlKiBvdmVyZmxvd1lWYWx1ZSA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKGlkKTsKKworICAgICAgICBDU1NWYWx1ZSogb3Zl
cmZsb3dYVmFsdWUgPSBudWxscHRyOworCisgICAgICAgIC8vIEZJWE1FOiAtd2Via2l0LXBhZ2Vk
LXggb3IgLXdlYmtpdC1wYWdlZC15IG9ubHkgYXBwbHkgdG8gb3ZlcmZsb3cteS4gSWYgdGhpcyB2
YWx1ZSBoYXMgYmVlbgorICAgICAgICAvLyBzZXQgdXNpbmcgdGhlIHNob3J0aGFuZCwgdGhlbiBm
b3Igbm93IG92ZXJmbG93LXggd2lsbCBkZWZhdWx0IHRvIGF1dG8sIGJ1dCBvbmNlIHdlIGltcGxl
bWVudAorICAgICAgICAvLyBwYWdpbmF0aW9uIGNvbnRyb2xzLCBpdCBzaG91bGQgZGVmYXVsdCB0
byBoaWRkZW4uIElmIHRoZSBvdmVyZmxvdy15IHZhbHVlIGlzIGFueXRoaW5nIGJ1dAorICAgICAg
ICAvLyBwYWdlZC14IG9yIHBhZ2VkLXksIHRoZW4gb3ZlcmZsb3cteCBhbmQgb3ZlcmZsb3cteSBz
aG91bGQgaGF2ZSB0aGUgc2FtZSB2YWx1ZS4KKyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlV2Vi
a2l0UGFnZWRYIHx8IGlkID09IENTU1ZhbHVlV2Via2l0UGFnZWRZKQorICAgICAgICAgICAgb3Zl
cmZsb3dYVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1
ZUF1dG8pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvdmVyZmxvd1hWYWx1ZSA9IG92ZXJm
bG93WVZhbHVlOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU92ZXJmbG93WCwgQ1NT
UHJvcGVydHlPdmVyZmxvdywgKm92ZXJmbG93WFZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICBh
ZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU92ZXJmbG93WSwgQ1NTUHJvcGVydHlPdmVyZmxvdywgKm92
ZXJmbG93WVZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnQ6IHsKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4m
IHRva2VuID0gbV9yYW5nZS5wZWVrKCk7CisgICAgICAgIGlmICh0b2tlbi5pZCgpID49IENTU1Zh
bHVlQ2FwdGlvbiAmJiB0b2tlbi5pZCgpIDw9IENTU1ZhbHVlU3RhdHVzQmFyKQorICAgICAgICAg
ICAgcmV0dXJuIGNvbnN1bWVTeXN0ZW1Gb250KGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiBj
b25zdW1lRm9udChpbXBvcnRhbnQpOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFZh
cmlhbnQ6CisgICAgICAgIHJldHVybiBjb25zdW1lRm9udFZhcmlhbnRTaG9ydGhhbmQoaW1wb3J0
YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZzoKKyAgICAgICAgcmV0dXJu
IGNvbnN1bWVCb3JkZXJTcGFjaW5nKGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNv
bHVtbnM6CisgICAgICAgIHJldHVybiBjb25zdW1lQ29sdW1ucyhpbXBvcnRhbnQpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlBbmltYXRpb246CisgICAgICAgIHJldHVybiBjb25zdW1lQW5pbWF0aW9u
U2hvcnRoYW5kKGFuaW1hdGlvblNob3J0aGFuZEZvclBhcnNpbmcoKSwgdW5yZXNvbHZlZFByb3Bl
cnR5ID09IENTU1Byb3BlcnR5QWxpYXNXZWJraXRBbmltYXRpb24sIGltcG9ydGFudCk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRpb246CisgICAgICAgIHJldHVybiBjb25zdW1lQW5pbWF0
aW9uU2hvcnRoYW5kKHRyYW5zaXRpb25TaG9ydGhhbmRGb3JQYXJzaW5nKCksIGZhbHNlLCBpbXBv
cnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbjoKKyAgICAgICAgQVNT
RVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzczNUZXh0RGVjb3JhdGlvbnNFbmFibGVkKCkp
OworICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KHRleHREZWNvcmF0aW9u
U2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbjoKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWU0VmFsdWVzKG1hcmdpblNob3J0aGFuZCgpLCBpbXBvcnRhbnQp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nOgorICAgICAgICByZXR1cm4gY29uc3VtZTRW
YWx1ZXMocGFkZGluZ1Nob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlNb3Rpb246CisgICAgICAgIHJldHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkobW90aW9u
U2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRF
bXBoYXNpczoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhhbmRHcmVlZGlseSh3ZWJraXRU
ZXh0RW1waGFzaXNTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
T3V0bGluZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhhbmRHcmVlZGlseShvdXRsaW5l
U2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
clN0YXJ0OgorICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KHdlYmtpdEJv
cmRlclN0YXJ0U2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckVuZDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhhbmRHcmVlZGlseSh3
ZWJraXRCb3JkZXJFbmRTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyQmVmb3JlOgorICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdy
ZWVkaWx5KHdlYmtpdEJvcmRlckJlZm9yZVNob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVT
aG9ydGhhbmRHcmVlZGlseSh3ZWJraXRCb3JkZXJBZnRlclNob3J0aGFuZCgpLCBpbXBvcnRhbnQp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlOgorICAgICAgICByZXR1cm4g
Y29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KHdlYmtpdFRleHRTdHJva2VTaG9ydGhhbmQoKSwgaW1w
b3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFya2VyOiB7CisgICAgICAgIGNvbnN0IENT
U1ZhbHVlKiBtYXJrZXIgPSBwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5TWFya2VyU3RhcnQp
OworICAgICAgICBpZiAoIW1hcmtlciB8fCAhbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmtlclN0YXJ0
LCBDU1NQcm9wZXJ0eU1hcmtlciwgKm1hcmtlciwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJv
cGVydHkoQ1NTUHJvcGVydHlNYXJrZXJNaWQsIENTU1Byb3BlcnR5TWFya2VyLCAqbWFya2VyLCBp
bXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmtlckVuZCwgQ1NT
UHJvcGVydHlNYXJrZXIsICptYXJrZXIsIGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5RmxleDoKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVGbGV4KGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsZXhGbG93OgorICAgICAg
ICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KGZsZXhGbG93U2hvcnRoYW5kKCksIGlt
cG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVtblJ1bGU6CisgICAgICAgIHJldHVy
biBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkoY29sdW1uUnVsZVNob3J0aGFuZCgpLCBpbXBvcnRh
bnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGU6CisgICAgICAgIHJldHVybiBjb25z
dW1lU2hvcnRoYW5kR3JlZWRpbHkobGlzdFN0eWxlU2hvcnRoYW5kKCksIGltcG9ydGFudCk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1czogeworICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogaG9yaXpvbnRhbFJhZGlpWzRdID0geyAwIH07CisgICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiB2ZXJ0aWNhbFJhZGlpWzRdID0geyAwIH07CisgICAgICAgIGlmICghY29uc3VtZVJhZGlp
KGhvcml6b250YWxSYWRpaSwgdmVydGljYWxSYWRpaSwgbV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUo
KSwgdW5yZXNvbHZlZFByb3BlcnR5ID09IENTU1Byb3BlcnR5QWxpYXNXZWJraXRCb3JkZXJSYWRp
dXMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXMsIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzLCAqQ1NT
VmFsdWVQYWlyOjpjcmVhdGUoaG9yaXpvbnRhbFJhZGlpWzBdLCB2ZXJ0aWNhbFJhZGlpWzBdLCBD
U1NWYWx1ZVBhaXI6OkRyb3BJZGVudGljYWxWYWx1ZXMpLCBpbXBvcnRhbnQpOworICAgICAgICBh
ZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzLCBDU1NQcm9wZXJ0eUJv
cmRlclJhZGl1cywgKkNTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhvcml6b250YWxSYWRpaVsxXSwgdmVy
dGljYWxSYWRpaVsxXSwgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVzKSwgaW1wb3J0
YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJh
ZGl1cywgQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMsICpDU1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jp
em9udGFsUmFkaWlbMl0sIHZlcnRpY2FsUmFkaWlbMl0sIENTU1ZhbHVlUGFpcjo6RHJvcElkZW50
aWNhbFZhbHVlcyksIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywgQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMsICpDU1NWYWx1
ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsUmFkaWlbM10sIHZlcnRpY2FsUmFkaWlbM10sIENTU1Zh
bHVlUGFpcjo6RHJvcElkZW50aWNhbFZhbHVlcyksIGltcG9ydGFudCk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3I6CisgICAgICAg
IHJldHVybiBjb25zdW1lNFZhbHVlcyhib3JkZXJDb2xvclNob3J0aGFuZCgpLCBpbXBvcnRhbnQp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZToKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWU0VmFsdWVzKGJvcmRlclN0eWxlU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUJvcmRlcldpZHRoOgorICAgICAgICByZXR1cm4gY29uc3VtZTRWYWx1ZXMoYm9y
ZGVyV2lkdGhTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9y
ZGVyVG9wOgorICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KGJvcmRlclRv
cFNob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdo
dDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhhbmRHcmVlZGlseShib3JkZXJSaWdodFNo
b3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b206
CisgICAgICAgIHJldHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkoYm9yZGVyQm90dG9tU2hv
cnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnQ6Cisg
ICAgICAgIHJldHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkoYm9yZGVyTGVmdFNob3J0aGFu
ZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6CisgICAgICAgIHJl
dHVybiBjb25zdW1lQm9yZGVyKGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
ckltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2U6CisgICAgICAg
IHJldHVybiBjb25zdW1lQm9yZGVySW1hZ2UocHJvcGVydHksIGltcG9ydGFudCk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlQnJl
YWtCZWZvcmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0luc2lkZToKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtBZnRlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uQnJlYWtCZWZvcmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVt
bkJyZWFrSW5zaWRlOgorICAgICAgICByZXR1cm4gY29uc3VtZUxlZ2FjeUJyZWFrUHJvcGVydHko
cHJvcGVydHksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3Np
dGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uOiB7CisgICAgICAg
IENTU1ZhbHVlKiByZXN1bHRYID0gbnVsbHB0cjsKKyAgICAgICAgQ1NTVmFsdWUqIHJlc3VsdFkg
PSBudWxscHRyOworICAgICAgICBpZiAoIWNvbnN1bWVCYWNrZ3JvdW5kUG9zaXRpb24obV9yYW5n
ZSwgbV9jb250ZXh0LCBVbml0bGVzc1F1aXJrOjpBbGxvdywgcmVzdWx0WCwgcmVzdWx0WSkgfHwg
IW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYWRk
UHJvcGVydHkocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24gPyBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblggOiBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlv
blgsIHByb3BlcnR5LCAqcmVzdWx0WCwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHko
cHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24gPyBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRQb3NpdGlvblkgOiBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblksIHByb3Bl
cnR5LCAqcmVzdWx0WSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0OgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUmVwZWF0OiB7CisgICAgICAgIENTU1ZhbHVlKiByZXN1bHRYID0gbnVsbHB0
cjsKKyAgICAgICAgQ1NTVmFsdWUqIHJlc3VsdFkgPSBudWxscHRyOworICAgICAgICBib29sIGlt
cGxpY2l0ID0gZmFsc2U7CisgICAgICAgIGlmICghY29uc3VtZVJlcGVhdFN0eWxlKG1fcmFuZ2Us
IHJlc3VsdFgsIHJlc3VsdFksIGltcGxpY2l0KSB8fCAhbV9yYW5nZS5hdEVuZCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0eSA9PSBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRSZXBlYXQgPyBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYIDog
Q1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WCwgcHJvcGVydHksICpyZXN1bHRYLCBpbXBvcnRh
bnQsIGltcGxpY2l0KTsKKyAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydHkgPT0gQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUmVwZWF0ID8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSA6IENTU1By
b3BlcnR5V2Via2l0TWFza1JlcGVhdFksIHByb3BlcnR5LCAqcmVzdWx0WSwgaW1wb3J0YW50LCBp
bXBsaWNpdCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBjYXNlIENTU1Byb3Bl
cnR5QmFja2dyb3VuZDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCYWNrZ3JvdW5kU2hvcnRoYW5k
KGJhY2tncm91bmRTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TWFzazoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCYWNrZ3JvdW5kU2hvcnRoYW5kKHdl
YmtpdE1hc2tTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5R3Jp
ZEdhcDogeworICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzR3JpZExh
eW91dEVuYWJsZWQoKSAmJiBzaG9ydGhhbmRGb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRHYXAp
Lmxlbmd0aCgpID09IDIpOworICAgICAgICBDU1NWYWx1ZSogcm93R2FwID0gY29uc3VtZUxlbmd0
aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAg
ICAgICBDU1NWYWx1ZSogY29sdW1uR2FwID0gY29uc3VtZUxlbmd0aChtX3JhbmdlLCBtX2NvbnRl
eHQubW9kZSgpLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICBpZiAoIXJvd0dhcCB8
fCAhbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBp
ZiAoIWNvbHVtbkdhcCkKKyAgICAgICAgICAgIGNvbHVtbkdhcCA9IHJvd0dhcDsKKyAgICAgICAg
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkUm93R2FwLCBDU1NQcm9wZXJ0eUdyaWRHYXAsICpy
b3dHYXAsIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZENv
bHVtbkdhcCwgQ1NTUHJvcGVydHlHcmlkR2FwLCAqY29sdW1uR2FwLCBpbXBvcnRhbnQpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRDb2x1bW46
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRSb3c6CisgICAgICAgIHJldHVybiBjb25zdW1lR3Jp
ZEl0ZW1Qb3NpdGlvblNob3J0aGFuZChwcm9wZXJ0eSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5R3JpZEFyZWE6CisgICAgICAgIHJldHVybiBjb25zdW1lR3JpZEFyZWFTaG9ydGhh
bmQoaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlOgorICAgICAg
ICByZXR1cm4gY29uc3VtZUdyaWRUZW1wbGF0ZVNob3J0aGFuZChDU1NQcm9wZXJ0eUdyaWRUZW1w
bGF0ZSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZDoKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVHcmlkU2hvcnRoYW5kKGltcG9ydGFudCk7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKyovCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBh
cnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDAzIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5v
cmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgLSAyMDEwICBUb3JjaCBNb2JpbGUgKEJlaWppbmcp
IENvLiBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgQ1NTUHJvcGVydHlQYXJzZXJf
aAorI2RlZmluZSBDU1NQcm9wZXJ0eVBhcnNlcl9oCisKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tl
blJhbmdlLmgiCisjaW5jbHVkZSAiU3R5bGVSdWxlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nVmlldy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1Byb3BlcnR5Owor
Y2xhc3MgQ1NTVmFsdWU7CitjbGFzcyBTdHlsZVByb3BlcnR5U2hvcnRoYW5kOworCisvLyBJbnB1
dHM6IFByb3BlcnR5SUQsIGlzSW1wb3J0YW50IGJvb2wsIENTU1BhcnNlclRva2VuUmFuZ2UuCisv
LyBPdXRwdXRzOiBWZWN0b3Igb2YgQ1NTUHJvcGVydGllcworCitjbGFzcyBDU1NQcm9wZXJ0eVBh
cnNlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ1NTUHJvcGVydHlQYXJzZXIpOworcHVi
bGljOgorICAgIHN0YXRpYyBib29sIHBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBv
cnRhbnQsCisgICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmLCBjb25zdCBDU1NQYXJz
ZXJDb250ZXh0JiwKKyAgICAgICAgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+JiwgU3R5bGVSdWxl
OjpUeXBlKTsKKworICAgIC8vIFBhcnNlcyBhIG5vbi1zaG9ydGhhbmQgQ1NTIHByb3BlcnR5Cisg
ICAgc3RhdGljIGNvbnN0IENTU1ZhbHVlKiBwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5SUQs
IGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CisK
K3ByaXZhdGU6CisgICAgQ1NTUHJvcGVydHlQYXJzZXIoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmLAorICAgICAgICBWZWN0b3I8Q1NTUHJvcGVydHks
IDI1Nj4qKTsKKworICAgIC8vIEZJWE1FOiBSZW5hbWUgb25jZSB0aGUgQ1NTUGFyc2VyVmFsdWUt
YmFzZWQgcGFyc2VWYWx1ZSBpcyByZW1vdmVkCisgICAgYm9vbCBwYXJzZVZhbHVlU3RhcnQoQ1NT
UHJvcGVydHlJRCB1bnJlc29sdmVkUHJvcGVydHksIGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29s
IGNvbnN1bWVDU1NXaWRlS2V5d29yZChDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0eSwg
Ym9vbCBpbXBvcnRhbnQpOworICAgIGNvbnN0IENTU1ZhbHVlKiBwYXJzZVNpbmdsZVZhbHVlKENT
U1Byb3BlcnR5SUQsIENTU1Byb3BlcnR5SUQgPSBDU1NQcm9wZXJ0eUludmFsaWQpOworCisgICAg
Ym9vbCBpblF1aXJrc01vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQubW9kZSA9PSBDU1NR
dWlya3NNb2RlOyB9CisKKyAgICBib29sIHBhcnNlVmlld3BvcnREZXNjcmlwdG9yKENTU1Byb3Bl
cnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBwYXJzZUZvbnRGYWNlRGVz
Y3JpcHRvcihDU1NQcm9wZXJ0eUlEKTsKKworICAgIHZvaWQgYWRkUHJvcGVydHkoQ1NTUHJvcGVy
dHlJRCwgQ1NTUHJvcGVydHlJRCwgY29uc3QgQ1NTVmFsdWUmLCBib29sIGltcG9ydGFudCwgYm9v
bCBpbXBsaWNpdCA9IGZhbHNlKTsKKyAgICB2b2lkIGFkZEV4cGFuZGVkUHJvcGVydHlGb3JWYWx1
ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgY29uc3QgQ1NTVmFsdWUmLCBib29sKTsKKworICAgIGJv
b2wgY29uc3VtZUJvcmRlcihib29sIGltcG9ydGFudCk7CisKKyAgICBib29sIHBhcnNlU2hvcnRo
YW5kKENTU1Byb3BlcnR5SUQsIGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29sIGNvbnN1bWVTaG9y
dGhhbmRHcmVlZGlseShjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiwgYm9vbCBpbXBvcnRh
bnQpOworICAgIGJvb2wgY29uc3VtZTRWYWx1ZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFu
ZCYsIGJvb2wgaW1wb3J0YW50KTsKKworICAgIC8vIExlZ2FjeSBwYXJzaW5nIGFsbG93cyA8c3Ry
aW5nPnMgZm9yIGFuaW1hdGlvbi1uYW1lCisgICAgYm9vbCBjb25zdW1lQW5pbWF0aW9uU2hvcnRo
YW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmLCBib29sIHVzZUxlZ2FjeVBhcnNpbmcs
IGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29sIGNvbnN1bWVCYWNrZ3JvdW5kU2hvcnRoYW5kKGNv
bnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmLCBib29sIGltcG9ydGFudCk7CisKKyAgICBib29s
IGNvbnN1bWVDb2x1bW5zKGJvb2wgaW1wb3J0YW50KTsKKworICAgIGJvb2wgY29uc3VtZUdyaWRJ
dGVtUG9zaXRpb25TaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRhbnQpOworICAg
IGJvb2wgY29uc3VtZUdyaWRUZW1wbGF0ZVJvd3NBbmRBcmVhc0FuZENvbHVtbnMoQ1NTUHJvcGVy
dHlJRCwgYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wgY29uc3VtZUdyaWRUZW1wbGF0ZVNob3J0
aGFuZChDU1NQcm9wZXJ0eUlELCBib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBjb25zdW1lR3Jp
ZFNob3J0aGFuZChib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBjb25zdW1lR3JpZEFyZWFTaG9y
dGhhbmQoYm9vbCBpbXBvcnRhbnQpOworCisgICAgYm9vbCBjb25zdW1lRm9udChib29sIGltcG9y
dGFudCk7CisgICAgYm9vbCBjb25zdW1lRm9udFZhcmlhbnRTaG9ydGhhbmQoYm9vbCBpbXBvcnRh
bnQpOworICAgIGJvb2wgY29uc3VtZVN5c3RlbUZvbnQoYm9vbCBpbXBvcnRhbnQpOworCisgICAg
Ym9vbCBjb25zdW1lQm9yZGVyU3BhY2luZyhib29sIGltcG9ydGFudCk7CisKKyAgICAvLyBDU1Mz
IFBhcnNpbmcgUm91dGluZXMgKGZvciBwcm9wZXJ0aWVzIHNwZWNpZmljIHRvIENTUzMpCisgICAg
Ym9vbCBjb25zdW1lQm9yZGVySW1hZ2UoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRhbnQpOwor
CisgICAgYm9vbCBjb25zdW1lRmxleChib29sIGltcG9ydGFudCk7CisKKyAgICBib29sIGNvbnN1
bWVMZWdhY3lCcmVha1Byb3BlcnR5KENTU1Byb3BlcnR5SUQsIGJvb2wgaW1wb3J0YW50KTsKKwor
cHJpdmF0ZToKKyAgICAvLyBJbnB1dHM6CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBtX3Jhbmdl
OworICAgIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIG1fY29udGV4dDsKKyAgICAvLyBPdXRwdXRz
OgorICAgIFZlY3RvcjxDU1NQcm9wZXJ0eSwgMjU2PiogbV9wYXJzZWRQcm9wZXJ0aWVzOworfTsK
KworQ1NTUHJvcGVydHlJRCB1bnJlc29sdmVkQ1NTUHJvcGVydHlJRChTdHJpbmdWaWV3KTsKK0NT
U1ZhbHVlSUQgY3NzVmFsdWVLZXl3b3JkSUQoU3RyaW5nVmlldyk7CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIENTU1Byb3BlcnR5UGFyc2VyX2gKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5j
cHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTExMCBAQAorLy8g
Q29weXJpZ2h0IDIwMTYgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBk
aXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
Ky8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaCIKKworI2luY2x1
ZGUgIkNTU0NhbGN1bGF0aW9uVmFsdWUuaCIKKy8vIEZJWE1FLU5FV1BBUlNFUjogI2luY2x1ZGUg
IkNTU0NvbG9yVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NDcm9zc2ZhZGVWYWx1ZS5oIgorI2luY2x1
ZGUgIkNTU0dyYWRpZW50VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NJbWFnZVNldFZhbHVlLmgiCisj
aW5jbHVkZSAiQ1NTSW1hZ2VWYWx1ZS5oIgorLy8gRklYTUUtTkVXUEFSU0VSOiAjaW5jbHVkZSAi
Q1NTUGFpbnRWYWx1ZS5oIgorLy8gRklYTUVfTkVXUEFSU0VSOiAjaW5jbHVkZSAiQ1NTU3RyaW5n
VmFsdWUuaCIKKy8vIEZJWE1FLU5FV1BBUlNFUjogI2luY2x1ZGUgIkNTU1VSSVZhbHVlLmgiCisv
LyBGSVhNRV9ORVdQQVJTRVI6ICNpbmNsdWRlICJDU1NWYWx1ZVBhaXIuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisvKiBGSVhNRS1ORVdQQVJTRVI6IERpc2FibGUgZm9yIG5vdy4KKyAKK25h
bWVzcGFjZSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMgeworCitib29sIGNvbnN1bWVDb21tYUlu
Y2x1ZGluZ1doaXRlc3BhY2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NT
UGFyc2VyVG9rZW4gdmFsdWUgPSByYW5nZS5wZWVrKCk7CisgICAgaWYgKHZhbHVlLnR5cGUoKSAh
PSBDb21tYVRva2VuKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmFuZ2UuY29uc3VtZUlu
Y2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBjb25zdW1l
U2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQorewor
ICAgIENTU1BhcnNlclRva2VuIHZhbHVlID0gcmFuZ2UucGVlaygpOworICAgIGlmICh2YWx1ZS50
eXBlKCkgIT0gRGVsaW1pdGVyVG9rZW4gfHwgdmFsdWUuZGVsaW1pdGVyKCkgIT0gJy8nKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2Uo
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworQ1NTUGFyc2VyVG9rZW5SYW5nZSBjb25zdW1lRnVu
Y3Rpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQVNTRVJUKHJhbmdlLnBl
ZWsoKS50eXBlKCkgPT0gRnVuY3Rpb25Ub2tlbik7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBj
b250ZW50cyA9IHJhbmdlLmNvbnN1bWVCbG9jaygpOworICAgIHJhbmdlLmNvbnN1bWVXaGl0ZXNw
YWNlKCk7CisgICAgY29udGVudHMuY29uc3VtZVdoaXRlc3BhY2UoKTsKKyAgICByZXR1cm4gY29u
dGVudHM7Cit9CisKKy8vIEZJWE1FOiBjb25zaWRlciBwdWxsaW5nIGluIHRoZSBwYXJzaW5nIGxv
Z2ljIGZyb20gQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAuCitjbGFzcyBDYWxjUGFyc2VyIHsKKwor
cHVibGljOgorICAgIGV4cGxpY2l0IENhbGNQYXJzZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSA9IFZhbHVlUmFuZ2VBbGwpCisgICAgICAgIDogbV9z
b3VyY2VSYW5nZShyYW5nZSkKKyAgICAgICAgLCBtX3JhbmdlKHJhbmdlKQorICAgIHsKKyAgICAg
ICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOworICAgICAgICBp
ZiAodG9rZW4uZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlQ2FsYyB8fCB0b2tlbi5mdW5jdGlvbklk
KCkgPT0gQ1NTVmFsdWVXZWJraXRDYWxjKQorICAgICAgICAgICAgbV9jYWxjVmFsdWUgPSBDU1ND
YWxjVmFsdWU6OmNyZWF0ZShjb25zdW1lRnVuY3Rpb24obV9yYW5nZSksIHZhbHVlUmFuZ2UpOwor
ICAgIH0KKworICAgIGNvbnN0IENTU0NhbGNWYWx1ZSogdmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X2NhbGNWYWx1ZS5nZXQoKTsgfQorICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lVmFsdWUo
KQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NhbGNWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICBtX3NvdXJjZVJhbmdlID0gbV9yYW5nZTsKKyAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV9jYWxjVmFsdWUucmVsZWFzZSgpKTsKKyAgICB9
CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVOdW1iZXIoKQorICAgIHsKKyAgICAgICAg
aWYgKCFtX2NhbGNWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBt
X3NvdXJjZVJhbmdlID0gbV9yYW5nZTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlIHVuaXRUeXBlID0gbV9jYWxjVmFsdWUtPmlzSW50KCkgPyBDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGU6OkludGVnZXIgOiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6Ok51bWJlcjsK
KyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV9jYWxjVmFsdWUtPmRv
dWJsZVZhbHVlKCksIHVuaXRUeXBlKTsKKyAgICB9CisKKyAgICBib29sIGNvbnN1bWVOdW1iZXJS
YXcoZG91YmxlJiByZXN1bHQpCisgICAgeworICAgICAgICBpZiAoIW1fY2FsY1ZhbHVlIHx8IG1f
Y2FsY1ZhbHVlLT5jYXRlZ29yeSgpICE9IENhbGNOdW1iZXIpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIG1fc291cmNlUmFuZ2UgPSBtX3JhbmdlOworICAgICAgICByZXN1bHQg
PSBtX2NhbGNWYWx1ZS0+ZG91YmxlVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCitwcml2YXRlOgorICAgIENTU1BhcnNlclRva2VuUmFuZ2UmIG1fc291cmNlUmFuZ2U7Cisg
ICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBtX3JhbmdlOworICAgIE1lbWJlcjxDU1NDYWxjVmFsdWU+
IG1fY2FsY1ZhbHVlOworfTsKKworQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVJbnRlZ2VyKENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBkb3VibGUgbWluaW11bVZhbHVlKQoreworICAgIGNv
bnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICBpZiAodG9rZW4u
dHlwZSgpID09IE51bWJlclRva2VuKSB7CisgICAgICAgIGlmICh0b2tlbi5udW1lcmljVmFsdWVU
eXBlKCkgPT0gTnVtYmVyVmFsdWVUeXBlIHx8IHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgbWluaW11
bVZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCku
bnVtZXJpY1ZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6SW50ZWdlcik7Cisg
ICAgfQorICAgIENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSk7CisgICAgaWYgKGNvbnN0IENT
U0NhbGNWYWx1ZSogY2FsY3VsYXRpb24gPSBjYWxjUGFyc2VyLnZhbHVlKCkpIHsKKyAgICAgICAg
aWYgKGNhbGN1bGF0aW9uLT5jYXRlZ29yeSgpICE9IENhbGNOdW1iZXIgfHwgIWNhbGN1bGF0aW9u
LT5pc0ludCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGRvdWJsZSB2
YWx1ZSA9IGNhbGN1bGF0aW9uLT5kb3VibGVWYWx1ZSgpOworICAgICAgICBpZiAodmFsdWUgPCBt
aW5pbXVtVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJu
IGNhbGNQYXJzZXIuY29uc3VtZU51bWJlcigpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVQb3NpdGl2ZUludGVnZXIoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgcmV0dXJuIGNvbnN1bWVJbnRlZ2VyKHJhbmdlLCAx
KTsKK30KKworYm9vbCBjb25zdW1lTnVtYmVyUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBkb3VibGUmIHJlc3VsdCkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBOdW1i
ZXJUb2tlbikgeworICAgICAgICByZXN1bHQgPSByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVz
cGFjZSgpLm51bWVyaWNWYWx1ZSgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
Q2FsY1BhcnNlciBjYWxjUGFyc2VyKHJhbmdlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICByZXR1cm4g
Y2FsY1BhcnNlci5jb25zdW1lTnVtYmVyUmF3KHJlc3VsdCk7Cit9CisKKy8vIEZJWE1FOiBXb3Jr
IG91dCBpZiB0aGlzIGNhbiBqdXN0IGNhbGwgY29uc3VtZU51bWJlclJhdworQ1NTUHJpbWl0aXZl
VmFsdWUqIGNvbnN1bWVOdW1iZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIFZhbHVlUmFu
Z2UgdmFsdWVSYW5nZSkKK3sKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5n
ZS5wZWVrKCk7CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbikgeworICAgICAg
ICBpZiAodmFsdWVSYW5nZSA9PSBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUgJiYgdG9rZW4ubnVtZXJp
Y1ZhbHVlKCkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNw
YWNlKCkubnVtZXJpY1ZhbHVlKCksIHRva2VuLnVuaXRUeXBlKCkpOworICAgIH0KKyAgICBDYWxj
UGFyc2VyIGNhbGNQYXJzZXIocmFuZ2UsIFZhbHVlUmFuZ2VBbGwpOworICAgIGlmIChjb25zdCBD
U1NDYWxjVmFsdWUqIGNhbGN1bGF0aW9uID0gY2FsY1BhcnNlci52YWx1ZSgpKSB7CisgICAgICAg
IC8vIEZJWE1FOiBDYWxjcyBzaG91bGQgbm90IGJlIHN1YmplY3QgdG8gcGFyc2UgdGltZSByYW5n
ZSBjaGVja3MuCisgICAgICAgIC8vIHNwZWM6IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mt
dmFsdWVzLTMvI2NhbGMtcmFuZ2UKKyAgICAgICAgaWYgKGNhbGN1bGF0aW9uLT5jYXRlZ29yeSgp
ICE9IENhbGNOdW1iZXIgfHwgKHZhbHVlUmFuZ2UgPT0gVmFsdWVSYW5nZU5vbk5lZ2F0aXZlICYm
IGNhbGN1bGF0aW9uLT5pc05lZ2F0aXZlKCkpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIHJldHVybiBjYWxjUGFyc2VyLmNvbnN1bWVOdW1iZXIoKTsKKyAgICB9CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK2lubGluZSBib29sIHNob3VsZEFjY2VwdFVuaXRsZXNzTGVu
Z3RoKGRvdWJsZSB2YWx1ZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1
aXJrIHVuaXRsZXNzKQoreworICAgIC8vIEZJWE1FOiBQcmVzZW50YXRpb25hbCBIVE1MIGF0dHJp
YnV0ZXMgc2hvdWxkbid0IHVzZSB0aGUgQ1NTIHBhcnNlciBmb3IgbGVuZ3RocworICAgIHJldHVy
biB2YWx1ZSA9PSAwCisgICAgICAgIHx8IGlzVW5pdExlc3NMZW5ndGhQYXJzaW5nRW5hYmxlZEZv
ck1vZGUoY3NzUGFyc2VyTW9kZSkKKyAgICAgICAgfHwgKGNzc1BhcnNlck1vZGUgPT0gSFRNTFF1
aXJrc01vZGUgJiYgdW5pdGxlc3MgPT0gVW5pdGxlc3NRdWlyazo6QWxsb3cpOworfQorCitDU1NQ
cmltaXRpdmVWYWx1ZSogY29uc3VtZUxlbmd0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Q1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UsIFVuaXRs
ZXNzUXVpcmsgdW5pdGxlc3MpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0g
cmFuZ2UucGVlaygpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4pIHsK
KyAgICAgICAgc3dpdGNoICh0b2tlbi51bml0VHlwZSgpKSB7CisgICAgICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpRdWlya3lFbXM6CisgICAgICAgICAgICBpZiAoY3NzUGFy
c2VyTW9kZSAhPSBVQVNoZWV0TW9kZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZTo6RW1zOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZTo6UmVtczoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkNoczoK
KyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkV4czoKKyAgICAgICAg
Y2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBpeGVsczoKKyAgICAgICAgY2FzZSBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkNlbnRpbWV0ZXJzOgorICAgICAgICBjYXNlIENT
U1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TWlsbGltZXRlcnM6CisgICAgICAgIGNhc2UgQ1NT
UHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpJbmNoZXM6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlOjpQb2ludHM6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlOjpQaWNhczoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGU6OlVzZXJVbml0czoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGU6OlZpZXdwb3J0V2lkdGg6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlOjpWaWV3cG9ydEhlaWdodDoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGU6OlZpZXdwb3J0TWluOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZTo6Vmlld3BvcnRNYXg6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1
ZVJhbmdlID09IFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSAmJiB0b2tlbi5udW1lcmljVmFsdWUoKSA8
IDApCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1l
cmljVmFsdWUoKSwgdG9rZW4udW5pdFR5cGUoKSk7CisgICAgfQorICAgIGlmICh0b2tlbi50eXBl
KCkgPT0gTnVtYmVyVG9rZW4pIHsKKyAgICAgICAgaWYgKCFzaG91bGRBY2NlcHRVbml0bGVzc0xl
bmd0aCh0b2tlbi5udW1lcmljVmFsdWUoKSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpCisgICAg
ICAgICAgICB8fCAodmFsdWVSYW5nZSA9PSBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUgJiYgdG9rZW4u
bnVtZXJpY1ZhbHVlKCkgPCAwKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGUgdW5pdFR5cGUgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGU6OlBpeGVsczsKKyAgICAgICAgaWYgKGNzc1BhcnNlck1vZGUgPT0gU1ZHQXR0
cmlidXRlTW9kZSkKKyAgICAgICAgICAgIHVuaXRUeXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlOjpVc2VyVW5pdHM7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCksIHVu
aXRUeXBlKTsKKyAgICB9CisgICAgaWYgKGNzc1BhcnNlck1vZGUgPT0gU1ZHQXR0cmlidXRlTW9k
ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ2FsY1BhcnNlciBjYWxjUGFyc2VyKHJh
bmdlLCB2YWx1ZVJhbmdlKTsKKyAgICBpZiAoY2FsY1BhcnNlci52YWx1ZSgpICYmIGNhbGNQYXJz
ZXIudmFsdWUoKS0+Y2F0ZWdvcnkoKSA9PSBDYWxjTGVuZ3RoKQorICAgICAgICByZXR1cm4gY2Fs
Y1BhcnNlci5jb25zdW1lVmFsdWUoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworQ1NTUHJp
bWl0aXZlVmFsdWUqIGNvbnN1bWVQZXJjZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBW
YWx1ZVJhbmdlIHZhbHVlUmFuZ2UpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2Vu
ID0gcmFuZ2UucGVlaygpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gUGVyY2VudGFnZVRva2Vu
KSB7CisgICAgICAgIGlmICh2YWx1ZVJhbmdlID09IFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSAmJiB0
b2tlbi5udW1lcmljVmFsdWUoKSA8IDApCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFuZ2UuY29uc3VtZUluY2x1
ZGluZ1doaXRlc3BhY2UoKS5udW1lcmljVmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlOjpQZXJjZW50YWdlKTsKKyAgICB9CisgICAgQ2FsY1BhcnNlciBjYWxjUGFyc2VyKHJhbmdl
LCB2YWx1ZVJhbmdlKTsKKyAgICBpZiAoY29uc3QgQ1NTQ2FsY1ZhbHVlKiBjYWxjdWxhdGlvbiA9
IGNhbGNQYXJzZXIudmFsdWUoKSkgeworICAgICAgICBpZiAoY2FsY3VsYXRpb24tPmNhdGVnb3J5
KCkgPT0gQ2FsY1BlcmNlbnQpCisgICAgICAgICAgICByZXR1cm4gY2FsY1BhcnNlci5jb25zdW1l
VmFsdWUoKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wgY2FuQ29uc3Vt
ZUNhbGNWYWx1ZShDYWxjdWxhdGlvbkNhdGVnb3J5IGNhdGVnb3J5LCBDU1NQYXJzZXJNb2RlIGNz
c1BhcnNlck1vZGUpCit7CisgICAgaWYgKGNhdGVnb3J5ID09IENhbGNMZW5ndGggfHwgY2F0ZWdv
cnkgPT0gQ2FsY1BlcmNlbnQgfHwgY2F0ZWdvcnkgPT0gQ2FsY1BlcmNlbnRMZW5ndGgpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGNzc1BhcnNlck1vZGUgIT0gU1ZHQXR0cmlidXRl
TW9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGNhdGVnb3J5ID09IENhbGNO
dW1iZXIgfHwgY2F0ZWdvcnkgPT0gQ2FsY1BlcmNlbnROdW1iZXIgfHwgY2F0ZWdvcnkgPT0gQ2Fs
Y0xlbmd0aE51bWJlciB8fCBjYXRlZ29yeSA9PSBDYWxjUGVyY2VudExlbmd0aE51bWJlcikKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0NTU1ByaW1pdGl2
ZVZhbHVlKiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSwgVW5p
dGxlc3NRdWlyayB1bml0bGVzcykKK3sKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4g
PSByYW5nZS5wZWVrKCk7CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbiB8
fCB0b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4pCisgICAgICAgIHJldHVybiBjb25zdW1lTGVu
Z3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB2YWx1ZVJhbmdlLCB1bml0bGVzcyk7CisgICAgaWYg
KHRva2VuLnR5cGUoKSA9PSBQZXJjZW50YWdlVG9rZW4pCisgICAgICAgIHJldHVybiBjb25zdW1l
UGVyY2VudChyYW5nZSwgdmFsdWVSYW5nZSk7CisgICAgQ2FsY1BhcnNlciBjYWxjUGFyc2VyKHJh
bmdlLCB2YWx1ZVJhbmdlKTsKKyAgICBpZiAoY29uc3QgQ1NTQ2FsY1ZhbHVlKiBjYWxjdWxhdGlv
biA9IGNhbGNQYXJzZXIudmFsdWUoKSkgeworICAgICAgICBpZiAoY2FuQ29uc3VtZUNhbGNWYWx1
ZShjYWxjdWxhdGlvbi0+Y2F0ZWdvcnkoKSwgY3NzUGFyc2VyTW9kZSkpCisgICAgICAgICAgICBy
ZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lVmFsdWUoKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lQW5nbGUoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2Uu
cGVlaygpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4pIHsKKyAgICAg
ICAgc3dpdGNoICh0b2tlbi51bml0VHlwZSgpKSB7CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZl
VmFsdWU6OlVuaXRUeXBlOjpEZWdyZWVzOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZTo6UmFkaWFuczoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGU6OkdyYWRpYW5zOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZTo6VHVybnM6CisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShy
YW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgpLCB0b2tlbi51
bml0VHlwZSgpKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICB9CisgICAgfQorICAgIGlmICh0b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4g
JiYgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPT0gMCkgeworICAgICAgICByYW5nZS5jb25zdW1lSW5j
bHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZSgwLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkRlZ3JlZXMpOworICAgIH0KKyAg
ICBDYWxjUGFyc2VyIGNhbGNQYXJzZXIocmFuZ2UsIFZhbHVlUmFuZ2VBbGwpOworICAgIGlmIChj
b25zdCBDU1NDYWxjVmFsdWUqIGNhbGN1bGF0aW9uID0gY2FsY1BhcnNlci52YWx1ZSgpKSB7Cisg
ICAgICAgIGlmIChjYWxjdWxhdGlvbi0+Y2F0ZWdvcnkoKSA9PSBDYWxjQW5nbGUpCisgICAgICAg
ICAgICByZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lVmFsdWUoKTsKKyAgICB9CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lVGltZShDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgVmFsdWVSYW5nZSB2YWx1ZVJhbmdlKQoreworICAgIGNvbnN0IENT
U1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICBpZiAodG9rZW4udHlwZSgp
ID09IERpbWVuc2lvblRva2VuKSB7CisgICAgICAgIGlmICh2YWx1ZVJhbmdlID09IFZhbHVlUmFu
Z2VOb25OZWdhdGl2ZSAmJiB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDApCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlIHVuaXQg
PSB0b2tlbi51bml0VHlwZSgpOworICAgICAgICBpZiAodW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGU6Ok1pbGxpc2Vjb25kcyB8fCB1bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZTo6U2Vjb25kcykKKyAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCks
IHRva2VuLnVuaXRUeXBlKCkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAg
Q2FsY1BhcnNlciBjYWxjUGFyc2VyKHJhbmdlLCB2YWx1ZVJhbmdlKTsKKyAgICBpZiAoY29uc3Qg
Q1NTQ2FsY1ZhbHVlKiBjYWxjdWxhdGlvbiA9IGNhbGNQYXJzZXIudmFsdWUoKSkgeworICAgICAg
ICBpZiAoY2FsY3VsYXRpb24tPmNhdGVnb3J5KCkgPT0gQ2FsY1RpbWUpCisgICAgICAgICAgICBy
ZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lVmFsdWUoKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lSWRlbnQoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgIT0gSWRlbnRUb2tl
bikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGVJZGVudGlmaWVyKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQo
KSk7Cit9CisKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lSWRlbnRSYW5nZShDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgQ1NTVmFsdWVJRCBsb3dlciwgQ1NTVmFsdWVJRCB1cHBlcikKK3sK
KyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPCBsb3dlciB8fCByYW5nZS5wZWVrKCkuaWQoKSA+
IHVwcGVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY29uc3VtZUlkZW50
KHJhbmdlKTsKK30KKworQ1NTQ3VzdG9tSWRlbnRWYWx1ZSogY29uc3VtZUN1c3RvbUlkZW50KENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgp
ICE9IElkZW50VG9rZW4gfHwgaXNDU1NXaWRlS2V5d29yZChyYW5nZS5wZWVrKCkuaWQoKSkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBDU1NDdXN0b21JZGVudFZhbHVlOjpj
cmVhdGUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgpLnRvU3RyaW5n
KCkpOworfQorCitDU1NTdHJpbmdWYWx1ZSogY29uc3VtZVN0cmluZyhDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBTdHJpbmdUb2tl
bikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIENTU1N0cmluZ1ZhbHVlOjpj
cmVhdGUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgpLnRvU3RyaW5n
KCkpOworfQorCitTdHJpbmdWaWV3IGNvbnN1bWVVcmxBc1N0cmluZ1ZpZXcoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFu
Z2UucGVlaygpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gVXJsVG9rZW4pIHsKKyAgICAgICAg
cmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgcmV0dXJuIHRva2Vu
LnZhbHVlKCk7CisgICAgfQorICAgIGlmICh0b2tlbi5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVV
cmwpIHsKKyAgICAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSB1cmxSYW5nZSA9IHJhbmdlOworICAg
ICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHVybEFyZ3MgPSB1cmxSYW5nZS5jb25zdW1lQmxvY2so
KTsKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIG5leHQgPSB1cmxBcmdzLmNvbnN1bWVJ
bmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIGlmIChuZXh0LnR5cGUoKSA9PSBCYWRTdHJp
bmdUb2tlbiB8fCAhdXJsQXJncy5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIFN0cmluZ1Zp
ZXcoKTsKKyAgICAgICAgQVNTRVJUKG5leHQudHlwZSgpID09IFN0cmluZ1Rva2VuKTsKKyAgICAg
ICAgcmFuZ2UgPSB1cmxSYW5nZTsKKyAgICAgICAgcmFuZ2UuY29uc3VtZVdoaXRlc3BhY2UoKTsK
KyAgICAgICAgcmV0dXJuIG5leHQudmFsdWUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5n
VmlldygpOworfQorCitDU1NVUklWYWx1ZSogY29uc3VtZVVybChDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSkKK3sKKyAgICBTdHJpbmdWaWV3IHVybCA9IGNvbnN1bWVVcmxBc1N0cmluZ1ZpZXco
cmFuZ2UpOworICAgIGlmICh1cmwuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiBDU1NVUklWYWx1ZTo6Y3JlYXRlKHVybC50b1N0cmluZygpKTsKK30KKworc3Rh
dGljIGludCBjbGFtcFJHQkNvbXBvbmVudChjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUp
Cit7CisgICAgZG91YmxlIHJlc3VsdCA9IHZhbHVlLmdldERvdWJsZVZhbHVlKCk7CisgICAgLy8g
RklYTUU6IE11bHRpcGx5IGJ5IDIuNTUgYW5kIHJvdW5kIGluc3RlYWQgb2YgZmxvb3IuCisgICAg
aWYgKHZhbHVlLmlzUGVyY2VudGFnZSgpKQorICAgICAgICByZXN1bHQgKj0gMi41NjsKKyAgICBy
ZXR1cm4gY2xhbXBUbzxpbnQ+KHJlc3VsdCwgMCwgMjU1KTsKK30KKworc3RhdGljIGJvb2wgcGFy
c2VSR0JQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBSR0JBMzImIHJlc3Vs
dCwgYm9vbCBwYXJzZUFscGhhKQoreworICAgIEFTU0VSVChyYW5nZS5wZWVrKCkuZnVuY3Rpb25J
ZCgpID09IENTU1ZhbHVlUmdiIHx8IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFs
dWVSZ2JhKTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24o
cmFuZ2UpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjb2xvclBhcmFtZXRlciA9IGNvbnN1bWVJ
bnRlZ2VyKGFyZ3MpOworICAgIGlmICghY29sb3JQYXJhbWV0ZXIpCisgICAgICAgIGNvbG9yUGFy
YW1ldGVyID0gY29uc3VtZVBlcmNlbnQoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKCFj
b2xvclBhcmFtZXRlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNvbnN0IGJvb2wgaXNQ
ZXJjZW50ID0gY29sb3JQYXJhbWV0ZXItPmlzUGVyY2VudGFnZSgpOworICAgIGludCBjb2xvckFy
cmF5WzNdOworICAgIGNvbG9yQXJyYXlbMF0gPSBjbGFtcFJHQkNvbXBvbmVudCgqY29sb3JQYXJh
bWV0ZXIpOworICAgIGZvciAoaW50IGkgPSAxOyBpIDwgMzsgaSsrKSB7CisgICAgICAgIGlmICgh
Y29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgY29sb3JQYXJhbWV0ZXIgPSBpc1BlcmNlbnQgPyBjb25zdW1lUGVy
Y2VudChhcmdzLCBWYWx1ZVJhbmdlQWxsKSA6IGNvbnN1bWVJbnRlZ2VyKGFyZ3MpOworICAgICAg
ICBpZiAoIWNvbG9yUGFyYW1ldGVyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBjb2xvckFycmF5W2ldID0gY2xhbXBSR0JDb21wb25lbnQoKmNvbG9yUGFyYW1ldGVyKTsKKyAg
ICB9CisgICAgaWYgKHBhcnNlQWxwaGEpIHsKKyAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNs
dWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBkb3VibGUgYWxwaGE7CisgICAgICAgIGlmICghY29uc3VtZU51bWJlclJhdyhhcmdzLCBhbHBo
YSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIC8vIENvbnZlcnQgdGhlIGZs
b2F0aW5nIHBvaW50ZXIgbnVtYmVyIG9mIGFscGhhIHRvIGFuIGludGVnZXIgaW4gdGhlIHJhbmdl
IFswLCAyNTYpLAorICAgICAgICAvLyB3aXRoIGFuIGVxdWFsIGRpc3RyaWJ1dGlvbiBhY3Jvc3Mg
YWxsIDI1NiB2YWx1ZXMuCisgICAgICAgIGludCBhbHBoYUNvbXBvbmVudCA9IHN0YXRpY19jYXN0
PGludD4oY2xhbXBUbzxkb3VibGU+KGFscGhhLCAwLjAsIDEuMCkgKiBuZXh0YWZ0ZXIoMjU2LjAs
IDAuMCkpOworICAgICAgICByZXN1bHQgPSBtYWtlUkdCQShjb2xvckFycmF5WzBdLCBjb2xvckFy
cmF5WzFdLCBjb2xvckFycmF5WzJdLCBhbHBoYUNvbXBvbmVudCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgcmVzdWx0ID0gbWFrZVJHQihjb2xvckFycmF5WzBdLCBjb2xvckFycmF5WzFdLCBjb2xv
ckFycmF5WzJdKTsKKyAgICB9CisgICAgcmV0dXJuIGFyZ3MuYXRFbmQoKTsKK30KKworc3RhdGlj
IGJvb2wgcGFyc2VIU0xQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBSR0JB
MzImIHJlc3VsdCwgYm9vbCBwYXJzZUFscGhhKQoreworICAgIEFTU0VSVChyYW5nZS5wZWVrKCku
ZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlSHNsIHx8IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkg
PT0gQ1NTVmFsdWVIc2xhKTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1l
RnVuY3Rpb24ocmFuZ2UpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBoc2xWYWx1ZSA9IGNvbnN1
bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKCFoc2xWYWx1ZSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGRvdWJsZSBjb2xvckFycmF5WzNdOworICAgIGNvbG9yQXJy
YXlbMF0gPSAoKChoc2xWYWx1ZS0+Z2V0SW50VmFsdWUoKSAlIDM2MCkgKyAzNjApICUgMzYwKSAv
IDM2MC4wOworICAgIGZvciAoaW50IGkgPSAxOyBpIDwgMzsgaSsrKSB7CisgICAgICAgIGlmICgh
Y29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgaHNsVmFsdWUgPSBjb25zdW1lUGVyY2VudChhcmdzLCBWYWx1ZVJh
bmdlQWxsKTsKKyAgICAgICAgaWYgKCFoc2xWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgZG91YmxlIGRvdWJsZVZhbHVlID0gaHNsVmFsdWUtPmdldERvdWJsZVZhbHVl
KCk7CisgICAgICAgIGNvbG9yQXJyYXlbaV0gPSBjbGFtcFRvPGRvdWJsZT4oZG91YmxlVmFsdWUs
IDAuMCwgMTAwLjApIC8gMTAwLjA7IC8vIE5lZWRzIHRvIGJlIHZhbHVlIGJldHdlZW4gMCBhbmQg
MS4wLgorICAgIH0KKyAgICBkb3VibGUgYWxwaGEgPSAxLjA7CisgICAgaWYgKHBhcnNlQWxwaGEp
IHsKKyAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWNvbnN1bWVOdW1iZXJSYXco
YXJncywgYWxwaGEpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhbHBoYSA9
IGNsYW1wVG88ZG91YmxlPihhbHBoYSwgMC4wLCAxLjApOworICAgIH0KKyAgICByZXN1bHQgPSBt
YWtlUkdCQUZyb21IU0xBKGNvbG9yQXJyYXlbMF0sIGNvbG9yQXJyYXlbMV0sIGNvbG9yQXJyYXlb
Ml0sIGFscGhhKTsKKyAgICByZXR1cm4gYXJncy5hdEVuZCgpOworfQorCitzdGF0aWMgYm9vbCBw
YXJzZUhleENvbG9yKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBSR0JBMzImIHJlc3VsdCwg
Ym9vbCBhY2NlcHRRdWlya3lDb2xvcnMpCit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRv
a2VuID0gcmFuZ2UucGVlaygpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSGFzaFRva2VuKSB7
CisgICAgICAgIGlmICghQ29sb3I6OnBhcnNlSGV4Q29sb3IodG9rZW4udmFsdWUoKSwgcmVzdWx0
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IGVsc2UgaWYgKGFjY2VwdFF1aXJr
eUNvbG9ycykgeworICAgICAgICBTdHJpbmcgY29sb3I7CisgICAgICAgIGlmICh0b2tlbi50eXBl
KCkgPT0gTnVtYmVyVG9rZW4gfHwgdG9rZW4udHlwZSgpID09IERpbWVuc2lvblRva2VuKSB7Cisg
ICAgICAgICAgICBpZiAodG9rZW4ubnVtZXJpY1ZhbHVlVHlwZSgpICE9IEludGVnZXJWYWx1ZVR5
cGUKKyAgICAgICAgICAgICAgICB8fCB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDAuIHx8IHRva2Vu
Lm51bWVyaWNWYWx1ZSgpID49IDEwMDAwMDAuKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIGlmICh0b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4pIC8vIGUuZy4g
MTEyMjMzCisgICAgICAgICAgICAgICAgY29sb3IgPSBTdHJpbmc6OmZvcm1hdCgiJWQiLCBzdGF0
aWNfY2FzdDxpbnQ+KHRva2VuLm51bWVyaWNWYWx1ZSgpKSk7CisgICAgICAgICAgICBlbHNlIC8v
IGUuZy4gMDAwMUZGCisgICAgICAgICAgICAgICAgY29sb3IgPSBTdHJpbmc6Om51bWJlcihzdGF0
aWNfY2FzdDxpbnQ+KHRva2VuLm51bWVyaWNWYWx1ZSgpKSkgKyB0b2tlbi52YWx1ZSgpLnRvU3Ry
aW5nKCk7CisgICAgICAgICAgICB3aGlsZSAoY29sb3IubGVuZ3RoKCkgPCA2KQorICAgICAgICAg
ICAgICAgIGNvbG9yID0gIjAiICsgY29sb3I7CisgICAgICAgIH0gZWxzZSBpZiAodG9rZW4udHlw
ZSgpID09IElkZW50VG9rZW4pIHsgLy8gZS5nLiBGRjAwMDAKKyAgICAgICAgICAgIGNvbG9yID0g
dG9rZW4udmFsdWUoKS50b1N0cmluZygpOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGxl
bmd0aCA9IGNvbG9yLmxlbmd0aCgpOworICAgICAgICBpZiAobGVuZ3RoICE9IDMgJiYgbGVuZ3Ro
ICE9IDYpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghQ29sb3I6OnBh
cnNlSGV4Q29sb3IoY29sb3IsIHJlc3VsdCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByYW5nZS5jb25z
dW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMg
Ym9vbCBwYXJzZUNvbG9yRnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIFJHQkEz
MiYgcmVzdWx0KQoreworICAgIENTU1ZhbHVlSUQgZnVuY3Rpb25JZCA9IHJhbmdlLnBlZWsoKS5m
dW5jdGlvbklkKCk7CisgICAgaWYgKGZ1bmN0aW9uSWQgPCBDU1NWYWx1ZVJnYiB8fCBmdW5jdGlv
bklkID4gQ1NTVmFsdWVIc2xhKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQ1NTUGFyc2Vy
VG9rZW5SYW5nZSBjb2xvclJhbmdlID0gcmFuZ2U7CisgICAgaWYgKChmdW5jdGlvbklkIDw9IENT
U1ZhbHVlUmdiYSAmJiAhcGFyc2VSR0JQYXJhbWV0ZXJzKGNvbG9yUmFuZ2UsIHJlc3VsdCwgZnVu
Y3Rpb25JZCA9PSBDU1NWYWx1ZVJnYmEpKQorICAgICAgICB8fCAoZnVuY3Rpb25JZCA+PSBDU1NW
YWx1ZUhzbCAmJiAhcGFyc2VIU0xQYXJhbWV0ZXJzKGNvbG9yUmFuZ2UsIHJlc3VsdCwgZnVuY3Rp
b25JZCA9PSBDU1NWYWx1ZUhzbGEpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJhbmdl
ID0gY29sb3JSYW5nZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworQ1NTVmFsdWUqIGNvbnN1bWVD
b2xvcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJN
b2RlLCBib29sIGFjY2VwdFF1aXJreUNvbG9ycykKK3sKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFu
Z2UucGVlaygpLmlkKCk7CisgICAgaWYgKFN0eWxlQ29sb3I6OmlzQ29sb3JLZXl3b3JkKGlkKSkg
eworICAgICAgICBpZiAoIWlzVmFsdWVBbGxvd2VkSW5Nb2RlKGlkLCBjc3NQYXJzZXJNb2RlKSkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50
KHJhbmdlKTsKKyAgICB9CisgICAgUkdCQTMyIGNvbG9yID0gQ29sb3I6OnRyYW5zcGFyZW50Owor
ICAgIGlmICghcGFyc2VIZXhDb2xvcihyYW5nZSwgY29sb3IsIGFjY2VwdFF1aXJreUNvbG9ycykg
JiYgIXBhcnNlQ29sb3JGdW5jdGlvbihyYW5nZSwgY29sb3IpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICByZXR1cm4gQ1NTQ29sb3JWYWx1ZTo6Y3JlYXRlKGNvbG9yKTsKK30KKworc3Rh
dGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lUG9zaXRpb25Db21wb25lbnQoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NR
dWlyayB1bml0bGVzcykKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBJZGVudFRv
a2VuKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVU
b3AsIENTU1ZhbHVlQm90dG9tLCBDU1NWYWx1ZVJpZ2h0LCBDU1NWYWx1ZUNlbnRlcj4ocmFuZ2Up
OworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2Rl
LCBWYWx1ZVJhbmdlQWxsLCB1bml0bGVzcyk7Cit9CisKK3N0YXRpYyBib29sIGlzSG9yaXpvbnRh
bFBvc2l0aW9uS2V5d29yZE9ubHkoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQorewor
ICAgIHJldHVybiB2YWx1ZS5pc1ZhbHVlSUQoKSAmJiAodmFsdWUuZ2V0VmFsdWVJRCgpID09IENT
U1ZhbHVlTGVmdCB8fCB2YWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVSaWdodCk7Cit9CisK
K3N0YXRpYyBib29sIGlzVmVydGljYWxQb3NpdGlvbktleXdvcmRPbmx5KGNvbnN0IENTU1ByaW1p
dGl2ZVZhbHVlJiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUuaXNWYWx1ZUlEKCkgJiYgKHZh
bHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVRvcCB8fCB2YWx1ZS5nZXRWYWx1ZUlEKCkgPT0g
Q1NTVmFsdWVCb3R0b20pOworfQorCitzdGF0aWMgdm9pZCBwb3NpdGlvbkZyb21PbmVWYWx1ZShD
U1NQcmltaXRpdmVWYWx1ZSogdmFsdWUsIENTU1ZhbHVlKiYgcmVzdWx0WCwgQ1NTVmFsdWUqJiBy
ZXN1bHRZKQoreworICAgIGJvb2wgdmFsdWVBcHBsaWVzVG9ZQXhpc09ubHkgPSBpc1ZlcnRpY2Fs
UG9zaXRpb25LZXl3b3JkT25seSgqdmFsdWUpOworICAgIHJlc3VsdFggPSB2YWx1ZTsKKyAgICBy
ZXN1bHRZID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVDZW50
ZXIpOworICAgIGlmICh2YWx1ZUFwcGxpZXNUb1lBeGlzT25seSkKKyAgICAgICAgc3RkOjpzd2Fw
KHJlc3VsdFgsIHJlc3VsdFkpOworfQorCitzdGF0aWMgYm9vbCBwb3NpdGlvbkZyb21Ud29WYWx1
ZXMoQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlMSwgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlMiwK
KyAgICBDU1NWYWx1ZSomIHJlc3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSkKK3sKKyAgICBib29s
IG11c3RPcmRlckFzWFkgPSBpc0hvcml6b250YWxQb3NpdGlvbktleXdvcmRPbmx5KCp2YWx1ZTEp
IHx8IGlzVmVydGljYWxQb3NpdGlvbktleXdvcmRPbmx5KCp2YWx1ZTIpCisgICAgICAgIHx8ICF2
YWx1ZTEtPmlzVmFsdWVJRCgpIHx8ICF2YWx1ZTItPmlzVmFsdWVJRCgpOworICAgIGJvb2wgbXVz
dE9yZGVyQXNZWCA9IGlzVmVydGljYWxQb3NpdGlvbktleXdvcmRPbmx5KCp2YWx1ZTEpIHx8IGlz
SG9yaXpvbnRhbFBvc2l0aW9uS2V5d29yZE9ubHkoKnZhbHVlMik7CisgICAgaWYgKG11c3RPcmRl
ckFzWFkgJiYgbXVzdE9yZGVyQXNZWCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3Vs
dFggPSB2YWx1ZTE7CisgICAgcmVzdWx0WSA9IHZhbHVlMjsKKyAgICBpZiAobXVzdE9yZGVyQXNZ
WCkKKyAgICAgICAgc3RkOjpzd2FwKHJlc3VsdFgsIHJlc3VsdFkpOworICAgIHJldHVybiB0cnVl
OworfQorCitzdGF0aWMgYm9vbCBwb3NpdGlvbkZyb21UaHJlZU9yRm91clZhbHVlcyhDU1NQcmlt
aXRpdmVWYWx1ZSoqIHZhbHVlcywgQ1NTVmFsdWUqJiByZXN1bHRYLCBDU1NWYWx1ZSomIHJlc3Vs
dFkpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNlbnRlciA9IG51bGxwdHI7CisgICAgZm9y
IChpbnQgaSA9IDA7IHZhbHVlc1tpXTsgaSsrKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBjdXJyZW50VmFsdWUgPSB2YWx1ZXNbaV07CisgICAgICAgIGlmICghY3VycmVudFZhbHVlLT5p
c1ZhbHVlSUQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgQ1NTVmFsdWVJ
RCBpZCA9IGN1cnJlbnRWYWx1ZS0+Z2V0VmFsdWVJRCgpOworCisgICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZUNlbnRlcikgeworICAgICAgICAgICAgaWYgKGNlbnRlcikKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBjZW50ZXIgPSBjdXJyZW50VmFsdWU7CisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIENTU1ZhbHVlKiByZXN1bHQg
PSBudWxscHRyOworICAgICAgICBpZiAodmFsdWVzW2kgKyAxXSAmJiAhdmFsdWVzW2kgKyAxXS0+
aXNWYWx1ZUlEKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IENTU1ZhbHVlUGFpcjo6Y3JlYXRl
KGN1cnJlbnRWYWx1ZSwgdmFsdWVzWysraV0sIENTU1ZhbHVlUGFpcjo6S2VlcElkZW50aWNhbFZh
bHVlcyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXN1bHQgPSBjdXJyZW50VmFs
dWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVMZWZ0IHx8IGlkID09
IENTU1ZhbHVlUmlnaHQpIHsKKyAgICAgICAgICAgIGlmIChyZXN1bHRYKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJlc3VsdFggPSByZXN1bHQ7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQoaWQgPT0gQ1NTVmFsdWVUb3AgfHwgaWQgPT0g
Q1NTVmFsdWVCb3R0b20pOworICAgICAgICAgICAgaWYgKHJlc3VsdFkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmVzdWx0WSA9IHJlc3VsdDsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGlmIChjZW50ZXIpIHsKKyAgICAgICAgQVNTRVJUKHJlc3VsdFggfHwg
cmVzdWx0WSk7CisgICAgICAgIGlmIChyZXN1bHRYICYmIHJlc3VsdFkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghcmVzdWx0WCkKKyAgICAgICAgICAgIHJlc3VsdFgg
PSBjZW50ZXI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdFkgPSBjZW50ZXI7Cisg
ICAgfQorCisgICAgQVNTRVJUKHJlc3VsdFggJiYgcmVzdWx0WSk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKKy8vIEZJWE1FOiBUaGlzIG1heSBjb25zdW1lIGZyb20gdGhlIHJhbmdlIHVwb24gZmFp
bHVyZS4gVGhlIGJhY2tncm91bmQKKy8vIHNob3J0aGFuZCB3b3JrcyBhcm91bmQgaXQsIGJ1dCB3
ZSBzaG91bGQganVzdCBmaXggaXQgaGVyZS4KK2Jvb2wgY29uc3VtZVBvc2l0aW9uKENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNz
UXVpcmsgdW5pdGxlc3MsIENTU1ZhbHVlKiYgcmVzdWx0WCwgQ1NTVmFsdWUqJiByZXN1bHRZKQor
eworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZTEgPSBjb25zdW1lUG9zaXRpb25Db21wb25l
bnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKTsKKyAgICBpZiAoIXZhbHVlMSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlMiA9IGNv
bnN1bWVQb3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpOwor
ICAgIGlmICghdmFsdWUyKSB7CisgICAgICAgIHBvc2l0aW9uRnJvbU9uZVZhbHVlKHZhbHVlMSwg
cmVzdWx0WCwgcmVzdWx0WSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZTMgPSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQocmFuZ2Us
IGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKTsKKyAgICBpZiAoIXZhbHVlMykKKyAgICAgICAgcmV0
dXJuIHBvc2l0aW9uRnJvbVR3b1ZhbHVlcyh2YWx1ZTEsIHZhbHVlMiwgcmVzdWx0WCwgcmVzdWx0
WSk7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWU0ID0gY29uc3VtZVBvc2l0aW9uQ29t
cG9uZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7CisgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHZhbHVlc1s1XTsKKyAgICB2YWx1ZXNbMF0gPSB2YWx1ZTE7CisgICAgdmFsdWVzWzFd
ID0gdmFsdWUyOworICAgIHZhbHVlc1syXSA9IHZhbHVlMzsKKyAgICB2YWx1ZXNbM10gPSB2YWx1
ZTQ7CisgICAgdmFsdWVzWzRdID0gbnVsbHB0cjsKKyAgICByZXR1cm4gcG9zaXRpb25Gcm9tVGhy
ZWVPckZvdXJWYWx1ZXModmFsdWVzLCByZXN1bHRYLCByZXN1bHRZKTsKK30KKworQ1NTVmFsdWVQ
YWlyKiBjb25zdW1lUG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNl
ck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKK3sKKyAgICBDU1NW
YWx1ZSogcmVzdWx0WCA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIHJlc3VsdFkgPSBudWxscHRy
OworICAgIGlmIChjb25zdW1lUG9zaXRpb24ocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNz
LCByZXN1bHRYLCByZXN1bHRZKSkKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVlUGFpcjo6Y3JlYXRl
KHJlc3VsdFgsIHJlc3VsdFksIENTU1ZhbHVlUGFpcjo6S2VlcElkZW50aWNhbFZhbHVlcyk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wgY29uc3VtZU9uZU9yVHdvVmFsdWVkUG9zaXRp
b24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9k
ZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcywgQ1NTVmFsdWUqJiByZXN1bHRYLCBDU1NWYWx1ZSom
IHJlc3VsdFkpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlMSA9IGNvbnN1bWVQb3Np
dGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpOworICAgIGlmICgh
dmFsdWUxKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZh
bHVlMiA9IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5p
dGxlc3MpOworICAgIGlmICghdmFsdWUyKSB7CisgICAgICAgIHBvc2l0aW9uRnJvbU9uZVZhbHVl
KHZhbHVlMSwgcmVzdWx0WCwgcmVzdWx0WSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICByZXR1cm4gcG9zaXRpb25Gcm9tVHdvVmFsdWVzKHZhbHVlMSwgdmFsdWUyLCByZXN1bHRY
LCByZXN1bHRZKTsKK30KKworLy8gVGhpcyBzaG91bGQgZ28gYXdheSBvbmNlIHdlIGRyb3Agc3Vw
cG9ydCBmb3IgLXdlYmtpdC1ncmFkaWVudAorc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25z
dW1lRGVwcmVjYXRlZEdyYWRpZW50UG9pbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgYm9v
bCBob3Jpem9udGFsKQoreworICAgIGlmIChhcmdzLnBlZWsoKS50eXBlKCkgPT0gSWRlbnRUb2tl
bikgeworICAgICAgICBpZiAoKGhvcml6b250YWwgJiYgY29uc3VtZUlkZW50PENTU1ZhbHVlTGVm
dD4oYXJncykpIHx8ICghaG9yaXpvbnRhbCAmJiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVUb3A+KGFy
Z3MpKSkKKyAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAuLCBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBlcmNlbnRhZ2UpOworICAgICAgICBpZiAoKGhv
cml6b250YWwgJiYgY29uc3VtZUlkZW50PENTU1ZhbHVlUmlnaHQ+KGFyZ3MpKSB8fCAoIWhvcml6
b250YWwgJiYgY29uc3VtZUlkZW50PENTU1ZhbHVlQm90dG9tPihhcmdzKSkpCisgICAgICAgICAg
ICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxMDAuLCBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGU6OlBlcmNlbnRhZ2UpOworICAgICAgICBpZiAoY29uc3VtZUlkZW50PENTU1Zh
bHVlQ2VudGVyPihhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKDUwLiwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQZXJjZW50YWdlKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIENTU1ByaW1pdGl2ZVZhbHVlKiByZXN1
bHQgPSBjb25zdW1lUGVyY2VudChhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBpZiAoIXJlc3Vs
dCkKKyAgICAgICAgcmVzdWx0ID0gY29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdlQWxsKTsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCisvLyBVc2VkIHRvIHBhcnNlIGNvbG9ycyBmb3IgLXdl
YmtpdC1ncmFkaWVudCguLi4pLgorc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lRGVwcmVjYXRlZEdy
YWRpZW50U3RvcENvbG9yKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlck1vZGUg
Y3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAoYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUN1
cnJlbnRjb2xvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNvbnN1bWVD
b2xvcihhcmdzLCBjc3NQYXJzZXJNb2RlKTsKK30KKworc3RhdGljIGJvb2wgY29uc3VtZURlcHJl
Y2F0ZWRHcmFkaWVudENvbG9yU3RvcChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTR3Jh
ZGllbnRDb2xvclN0b3AmIHN0b3AsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAg
ICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKTsKKyAgICBpZiAoaWQg
IT0gQ1NTVmFsdWVGcm9tICYmIGlkICE9IENTU1ZhbHVlVG8gJiYgaWQgIT0gQ1NTVmFsdWVDb2xv
clN0b3ApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENTU1BhcnNlclRva2VuUmFuZ2Ug
YXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7CisgICAgZG91YmxlIHBvc2l0aW9uOworICAg
IGlmIChpZCA9PSBDU1NWYWx1ZUZyb20gfHwgaWQgPT0gQ1NTVmFsdWVUbykgeworICAgICAgICBw
b3NpdGlvbiA9IChpZCA9PSBDU1NWYWx1ZUZyb20pID8gMCA6IDE7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgRENIRUNLKGlkID09IENTU1ZhbHVlQ29sb3JTdG9wKTsKKyAgICAgICAgY29uc3QgQ1NT
UGFyc2VyVG9rZW4mIGFyZyA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAg
ICAgICAgaWYgKGFyZy50eXBlKCkgPT0gUGVyY2VudGFnZVRva2VuKQorICAgICAgICAgICAgcG9z
aXRpb24gPSBhcmcubnVtZXJpY1ZhbHVlKCkgLyAxMDAuMDsKKyAgICAgICAgZWxzZSBpZiAoYXJn
LnR5cGUoKSA9PSBOdW1iZXJUb2tlbikKKyAgICAgICAgICAgIHBvc2l0aW9uID0gYXJnLm51bWVy
aWNWYWx1ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN0b3AubV9wb3NpdGlvbiA9IENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUocG9zaXRpb24sIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZTo6TnVtYmVyKTsKKyAgICBzdG9wLm1fY29sb3IgPSBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50
U3RvcENvbG9yKGFyZ3MsIGNzc1BhcnNlck1vZGUpOworICAgIHJldHVybiBzdG9wLm1fY29sb3Ig
JiYgYXJncy5hdEVuZCgpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVEZXByZWNhdGVk
R3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJz
ZXJNb2RlKQoreworICAgIENTU0dyYWRpZW50VmFsdWUqIHJlc3VsdCA9IG51bGxwdHI7CisgICAg
Q1NTVmFsdWVJRCBpZCA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpOwor
ICAgIGJvb2wgaXNEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQgPSAoaWQgPT0gQ1NTVmFsdWVSYWRp
YWwpOworICAgIGlmIChpc0RlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCkKKyAgICAgICAgcmVzdWx0
ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJlcGVhdGluZywgQ1NTRGVwcmVj
YXRlZFJhZGlhbEdyYWRpZW50KTsKKyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZUxpbmVhcikK
KyAgICAgICAgcmVzdWx0ID0gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJlcGVh
dGluZywgQ1NTRGVwcmVjYXRlZExpbmVhckdyYWRpZW50KTsKKyAgICBpZiAoIXJlc3VsdCB8fCAh
Y29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcG9pbnQgPSBjb25zdW1lRGVwcmVjYXRl
ZEdyYWRpZW50UG9pbnQoYXJncywgdHJ1ZSk7CisgICAgaWYgKCFwb2ludCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmVzdWx0LT5zZXRGaXJzdFgocG9pbnQpOworICAgIHBvaW50ID0g
Y29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudFBvaW50KGFyZ3MsIGZhbHNlKTsKKyAgICBpZiAoIXBv
aW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXN1bHQtPnNldEZpcnN0WShwb2lu
dCk7CisKKyAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gRm9yIHJhZGlhbCBncmFkaWVudHMgb25s
eSwgd2Ugbm93IGV4cGVjdCBhIG51bWVyaWMgcmFkaXVzLgorICAgIGlmIChpc0RlcHJlY2F0ZWRS
YWRpYWxHcmFkaWVudCkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcmFkaXVzID0gY29u
c3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgaWYgKCFyYWRpdXMgfHwg
IWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgdG9DU1NSYWRpYWxHcmFkaWVudFZhbHVlKHJlc3VsdCktPnNl
dEZpcnN0UmFkaXVzKHJhZGl1cyk7CisgICAgfQorCisgICAgcG9pbnQgPSBjb25zdW1lRGVwcmVj
YXRlZEdyYWRpZW50UG9pbnQoYXJncywgdHJ1ZSk7CisgICAgaWYgKCFwb2ludCkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmVzdWx0LT5zZXRTZWNvbmRYKHBvaW50KTsKKyAgICBwb2lu
dCA9IGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnRQb2ludChhcmdzLCBmYWxzZSk7CisgICAgaWYg
KCFwb2ludCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmVzdWx0LT5zZXRTZWNvbmRZ
KHBvaW50KTsKKworICAgIC8vIEZvciByYWRpYWwgZ3JhZGllbnRzIG9ubHksIHdlIG5vdyBleHBl
Y3QgdGhlIHNlY29uZCByYWRpdXMuCisgICAgaWYgKGlzRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50
KSB7CisgICAgICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSog
cmFkaXVzID0gY29uc3VtZU51bWJlcihhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgaWYg
KCFyYWRpdXMpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgdG9DU1NSYWRp
YWxHcmFkaWVudFZhbHVlKHJlc3VsdCktPnNldFNlY29uZFJhZGl1cyhyYWRpdXMpOworICAgIH0K
KworICAgIENTU0dyYWRpZW50Q29sb3JTdG9wIHN0b3A7CisgICAgd2hpbGUgKGNvbnN1bWVDb21t
YUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpIHsKKyAgICAgICAgaWYgKCFjb25zdW1lRGVwcmVj
YXRlZEdyYWRpZW50Q29sb3JTdG9wKGFyZ3MsIHN0b3AsIGNzc1BhcnNlck1vZGUpKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJlc3VsdC0+YWRkU3RvcChzdG9wKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgYm9vbCBjb25zdW1lR3JhZGll
bnRDb2xvclN0b3BzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNz
c1BhcnNlck1vZGUsIENTU0dyYWRpZW50VmFsdWUqIGdyYWRpZW50KQoreworICAgIGJvb2wgc3Vw
cG9ydHNDb2xvckhpbnRzID0gZ3JhZGllbnQtPmdyYWRpZW50VHlwZSgpID09IENTU0xpbmVhckdy
YWRpZW50IHx8IGdyYWRpZW50LT5ncmFkaWVudFR5cGUoKSA9PSBDU1NSYWRpYWxHcmFkaWVudDsK
KworICAgIC8vIFRoZSBmaXJzdCBjb2xvciBzdG9wIGNhbm5vdCBiZSBhIGNvbG9yIGhpbnQuCisg
ICAgYm9vbCBwcmV2aW91c1N0b3BXYXNDb2xvckhpbnQgPSB0cnVlOworICAgIGRvIHsKKyAgICAg
ICAgQ1NTR3JhZGllbnRDb2xvclN0b3Agc3RvcDsKKyAgICAgICAgc3RvcC5tX2NvbG9yID0gY29u
c3VtZUNvbG9yKHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKKyAgICAgICAgLy8gVHdvIGhpbnRzIGlu
IGEgcm93IGFyZSBub3QgYWxsb3dlZC4KKyAgICAgICAgaWYgKCFzdG9wLm1fY29sb3IgJiYgKCFz
dXBwb3J0c0NvbG9ySGludHMgfHwgcHJldmlvdXNTdG9wV2FzQ29sb3JIaW50KSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcHJldmlvdXNTdG9wV2FzQ29sb3JIaW50ID0gIXN0
b3AubV9jb2xvcjsKKyAgICAgICAgc3RvcC5tX3Bvc2l0aW9uID0gY29uc3VtZUxlbmd0aE9yUGVy
Y2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGlmICgh
c3RvcC5tX2NvbG9yICYmICFzdG9wLm1fcG9zaXRpb24pCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGdyYWRpZW50LT5hZGRTdG9wKHN0b3ApOworICAgIH0gd2hpbGUgKGNvbnN1
bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKTsKKworICAgIC8vIFRoZSBsYXN0IGNv
bG9yIHN0b3AgY2Fubm90IGJlIGEgY29sb3IgaGludC4KKyAgICBpZiAocHJldmlvdXNTdG9wV2Fz
Q29sb3JIaW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNdXN0IGhhdmUgMiBv
ciBtb3JlIHN0b3BzIHRvIGJlIHZhbGlkLgorICAgIHJldHVybiBncmFkaWVudC0+c3RvcENvdW50
KCkgPj0gMjsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lRGVwcmVjYXRlZFJhZGlhbEdy
YWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlck1vZGUgY3NzUGFyc2Vy
TW9kZSwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nKQoreworICAgIENTU1JhZGlhbEdyYWRp
ZW50VmFsdWUqIHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRp
bmcsIENTU1ByZWZpeGVkUmFkaWFsR3JhZGllbnQpOworICAgIENTU1ZhbHVlKiBjZW50ZXJYID0g
bnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogY2VudGVyWSA9IG51bGxwdHI7CisgICAgY29uc3VtZU9u
ZU9yVHdvVmFsdWVkUG9zaXRpb24oYXJncywgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyazo6
Rm9yYmlkLCBjZW50ZXJYLCBjZW50ZXJZKTsKKyAgICBpZiAoKGNlbnRlclggfHwgY2VudGVyWSkg
JiYgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgcmVzdWx0LT5zZXRGaXJzdFgodG9DU1NQcmltaXRpdmVWYWx1ZShj
ZW50ZXJYKSk7CisgICAgcmVzdWx0LT5zZXRTZWNvbmRYKHRvQ1NTUHJpbWl0aXZlVmFsdWUoY2Vu
dGVyWCkpOworICAgIHJlc3VsdC0+c2V0Rmlyc3RZKHRvQ1NTUHJpbWl0aXZlVmFsdWUoY2VudGVy
WSkpOworICAgIHJlc3VsdC0+c2V0U2Vjb25kWSh0b0NTU1ByaW1pdGl2ZVZhbHVlKGNlbnRlclkp
KTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzaGFwZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1
ZUNpcmNsZSwgQ1NTVmFsdWVFbGxpcHNlPihhcmdzKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSog
c2l6ZUtleXdvcmQgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVDbG9zZXN0U2lkZSwgQ1NTVmFsdWVD
bG9zZXN0Q29ybmVyLCBDU1NWYWx1ZUZhcnRoZXN0U2lkZSwgQ1NTVmFsdWVGYXJ0aGVzdENvcm5l
ciwgQ1NTVmFsdWVDb250YWluLCBDU1NWYWx1ZUNvdmVyPihhcmdzKTsKKyAgICBpZiAoIXNoYXBl
KQorICAgICAgICBzaGFwZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUNpcmNsZSwgQ1NTVmFsdWVF
bGxpcHNlPihhcmdzKTsKKyAgICByZXN1bHQtPnNldFNoYXBlKHNoYXBlKTsKKyAgICByZXN1bHQt
PnNldFNpemluZ0JlaGF2aW9yKHNpemVLZXl3b3JkKTsKKworICAgIC8vIE9yLCB0d28gbGVuZ3Ro
cyBvciBwZXJjZW50YWdlcworICAgIGlmICghc2hhcGUgJiYgIXNpemVLZXl3b3JkKSB7CisgICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBob3Jpem9udGFsU2l6ZSA9IGNvbnN1bWVMZW5ndGhPclBl
cmNlbnQoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiB2ZXJ0aWNhbFNpemUgPSBudWxscHRyOworICAgICAgICBpZiAoaG9yaXpv
bnRhbFNpemUpIHsKKyAgICAgICAgICAgIHZlcnRpY2FsU2l6ZSA9IGNvbnN1bWVMZW5ndGhPclBl
cmNlbnQoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgICAgICBp
ZiAoIXZlcnRpY2FsU2l6ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgICAgIGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncyk7CisgICAgICAgICAg
ICByZXN1bHQtPnNldEVuZEhvcml6b250YWxTaXplKGhvcml6b250YWxTaXplKTsKKyAgICAgICAg
ICAgIHJlc3VsdC0+c2V0RW5kVmVydGljYWxTaXplKHZlcnRpY2FsU2l6ZSk7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgeworICAgICAgICBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFy
Z3MpOworICAgIH0KKyAgICBpZiAoIWNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMoYXJncywgY3Nz
UGFyc2VyTW9kZSwgcmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVSYWRpYWxHcmFkaWVudChD
U1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENT
U0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykKK3sKKyAgICBDU1NSYWRpYWxHcmFkaWVudFZhbHVl
KiByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCBDU1NS
YWRpYWxHcmFkaWVudCk7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2hhcGUgPSBudWxscHRy
OworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzaXplS2V5d29yZCA9IG51bGxwdHI7CisgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIGhvcml6b250YWxTaXplID0gbnVsbHB0cjsKKyAgICBDU1NQcmltaXRp
dmVWYWx1ZSogdmVydGljYWxTaXplID0gbnVsbHB0cjsKKworICAgIC8vIEZpcnN0IHBhcnQgb2Yg
Z3JhbW1hciwgdGhlIHNpemUvc2hhcGUgY2xhdXNlOgorICAgIC8vIFsgY2lyY2xlIHx8IDxsZW5n
dGg+IF0gfAorICAgIC8vIFsgZWxsaXBzZSB8fCBbIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IF17
Mn0gXSB8CisgICAgLy8gWyBbIGNpcmNsZSB8IGVsbGlwc2VdIHx8IDxzaXplLWtleXdvcmQ+IF0K
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkgeworICAgICAgICBpZiAoYXJncy5wZWVr
KCkudHlwZSgpID09IElkZW50VG9rZW4pIHsKKyAgICAgICAgICAgIENTU1ZhbHVlSUQgaWQgPSBh
cmdzLnBlZWsoKS5pZCgpOworICAgICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQ2lyY2xlIHx8
IGlkID09IENTU1ZhbHVlRWxsaXBzZSkgeworICAgICAgICAgICAgICAgIGlmIChzaGFwZSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAgICAgc2hhcGUg
PSBjb25zdW1lSWRlbnQoYXJncyk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlkID09IENTU1Zh
bHVlQ2xvc2VzdFNpZGUgfHwgaWQgPT0gQ1NTVmFsdWVDbG9zZXN0Q29ybmVyIHx8IGlkID09IENT
U1ZhbHVlRmFydGhlc3RTaWRlIHx8IGlkID09IENTU1ZhbHVlRmFydGhlc3RDb3JuZXIpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoc2l6ZUtleXdvcmQpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICAgICAgICAgIHNpemVLZXl3b3JkID0gY29uc3VtZUlkZW50KGFy
Z3MpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBjZW50ZXIgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUsIFZh
bHVlUmFuZ2VBbGwpOworICAgICAgICAgICAgaWYgKCFjZW50ZXIpCisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBpZiAoaG9yaXpvbnRhbFNpemUpCisgICAgICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBob3Jpem9udGFsU2l6ZSA9IGNlbnRlcjsKKyAg
ICAgICAgICAgIGNlbnRlciA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2Vy
TW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgICAgICBpZiAoY2VudGVyKSB7CisgICAgICAg
ICAgICAgICAgdmVydGljYWxTaXplID0gY2VudGVyOworICAgICAgICAgICAgICAgICsraTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFlvdSBjYW4gc3BlY2lmeSBz
aXplIGFzIGEga2V5d29yZCBvciBhIGxlbmd0aC9wZXJjZW50YWdlLCBub3QgYm90aC4KKyAgICBp
ZiAoc2l6ZUtleXdvcmQgJiYgaG9yaXpvbnRhbFNpemUpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIC8vIENpcmNsZXMgbXVzdCBoYXZlIDAgb3IgMSBsZW5ndGhzLgorICAgIGlmIChzaGFw
ZSAmJiBzaGFwZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQ2lyY2xlICYmIHZlcnRpY2FsU2l6
ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgLy8gRWxsaXBzZXMgbXVzdCBoYXZlIDAg
b3IgMiBsZW5ndGgvcGVyY2VudGFnZXMuCisgICAgaWYgKHNoYXBlICYmIHNoYXBlLT5nZXRWYWx1
ZUlEKCkgPT0gQ1NTVmFsdWVFbGxpcHNlICYmIGhvcml6b250YWxTaXplICYmICF2ZXJ0aWNhbFNp
emUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIC8vIElmIHRoZXJlJ3Mgb25seSBvbmUg
c2l6ZSwgaXQgbXVzdCBiZSBhIGxlbmd0aC4KKyAgICBpZiAoIXZlcnRpY2FsU2l6ZSAmJiBob3Jp
em9udGFsU2l6ZSAmJiBob3Jpem9udGFsU2l6ZS0+aXNQZXJjZW50YWdlKCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIGlmICgoaG9yaXpvbnRhbFNpemUgJiYgaG9yaXpvbnRhbFNpemUt
PmlzQ2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoKCkpCisgICAgICAgIHx8ICh2ZXJ0aWNh
bFNpemUgJiYgdmVydGljYWxTaXplLT5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgp
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXN1bHQtPnNldFNoYXBlKHNoYXBl
KTsKKyAgICByZXN1bHQtPnNldFNpemluZ0JlaGF2aW9yKHNpemVLZXl3b3JkKTsKKyAgICByZXN1
bHQtPnNldEVuZEhvcml6b250YWxTaXplKGhvcml6b250YWxTaXplKTsKKyAgICByZXN1bHQtPnNl
dEVuZFZlcnRpY2FsU2l6ZSh2ZXJ0aWNhbFNpemUpOworCisgICAgQ1NTVmFsdWUqIGNlbnRlclgg
PSBudWxscHRyOworICAgIENTU1ZhbHVlKiBjZW50ZXJZID0gbnVsbHB0cjsKKyAgICBpZiAoYXJn
cy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF0KSB7CisgICAgICAgIGFyZ3MuY29uc3VtZUluY2x1
ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgY29uc3VtZVBvc2l0aW9uKGFyZ3MsIGNzc1BhcnNl
ck1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgY2VudGVyWCwgY2VudGVyWSk7CisgICAgICAg
IGlmICghKGNlbnRlclggJiYgY2VudGVyWSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgcmVzdWx0LT5zZXRGaXJzdFgoY2VudGVyWCk7CisgICAgICAgIHJlc3VsdC0+c2V0
Rmlyc3RZKGNlbnRlclkpOworICAgICAgICAvLyBSaWdodCBub3csIENTUyByYWRpYWwgZ3JhZGll
bnRzIGhhdmUgdGhlIHNhbWUgc3RhcnQgYW5kIGVuZCBjZW50ZXJzLgorICAgICAgICByZXN1bHQt
PnNldFNlY29uZFgoY2VudGVyWCk7CisgICAgICAgIHJlc3VsdC0+c2V0U2Vjb25kWShjZW50ZXJZ
KTsKKyAgICB9CisKKyAgICBpZiAoKHNoYXBlIHx8IHNpemVLZXl3b3JkIHx8IGhvcml6b250YWxT
aXplIHx8IGNlbnRlclggfHwgY2VudGVyWSkgJiYgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRl
c3BhY2UoYXJncykpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghY29uc3VtZUdy
YWRpZW50Q29sb3JTdG9wcyhhcmdzLCBjc3NQYXJzZXJNb2RlLCByZXN1bHQpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgQ1NTVmFsdWUq
IGNvbnN1bWVMaW5lYXJHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJz
ZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZywgQ1NTR3Jh
ZGllbnRUeXBlIGdyYWRpZW50VHlwZSkKK3sKKyAgICBDU1NMaW5lYXJHcmFkaWVudFZhbHVlKiBy
ZXN1bHQgPSBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCBncmFkaWVu
dFR5cGUpOworCisgICAgYm9vbCBleHBlY3RDb21tYSA9IHRydWU7CisgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIGFuZ2xlID0gY29uc3VtZUFuZ2xlKGFyZ3MpOworICAgIGlmIChhbmdsZSkgeworICAg
ICAgICByZXN1bHQtPnNldEFuZ2xlKGFuZ2xlKTsKKyAgICB9IGVsc2UgaWYgKGdyYWRpZW50VHlw
ZSA9PSBDU1NQcmVmaXhlZExpbmVhckdyYWRpZW50IHx8IGNvbnN1bWVJZGVudDxDU1NWYWx1ZVRv
PihhcmdzKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogZW5kWCA9IGNvbnN1bWVJZGVu
dDxDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KGFyZ3MpOworICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogZW5kWSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUJvdHRvbSwgQ1NTVmFsdWVUb3A+
KGFyZ3MpOworICAgICAgICBpZiAoIWVuZFggJiYgIWVuZFkpIHsKKyAgICAgICAgICAgIGlmIChn
cmFkaWVudFR5cGUgPT0gQ1NTTGluZWFyR3JhZGllbnQpCisgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgICAgICBlbmRZID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlk
ZW50aWZpZXIoQ1NTVmFsdWVUb3ApOworICAgICAgICAgICAgZXhwZWN0Q29tbWEgPSBmYWxzZTsK
KyAgICAgICAgfSBlbHNlIGlmICghZW5kWCkgeworICAgICAgICAgICAgZW5kWCA9IGNvbnN1bWVJ
ZGVudDxDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KGFyZ3MpOworICAgICAgICB9CisKKyAg
ICAgICAgcmVzdWx0LT5zZXRGaXJzdFgoZW5kWCk7CisgICAgICAgIHJlc3VsdC0+c2V0Rmlyc3RZ
KGVuZFkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGV4cGVjdENvbW1hID0gZmFsc2U7CisgICAg
fQorCisgICAgaWYgKGV4cGVjdENvbW1hICYmICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNw
YWNlKGFyZ3MpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWNvbnN1bWVHcmFk
aWVudENvbG9yU3RvcHMoYXJncywgY3NzUGFyc2VyTW9kZSwgcmVzdWx0KSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQ1NTVmFsdWUqIGNvbnN1bWVJ
bWFnZU9yTm9uZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyQ29udGV4dCBj
b250ZXh0KQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisg
ICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lSW1h
Z2UocmFuZ2UsIGNvbnRleHQpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDcm9zc0Zh
ZGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KQor
eworICAgIENTU1ZhbHVlKiBmcm9tSW1hZ2VWYWx1ZSA9IGNvbnN1bWVJbWFnZU9yTm9uZShhcmdz
LCBjb250ZXh0KTsKKyAgICBpZiAoIWZyb21JbWFnZVZhbHVlIHx8ICFjb25zdW1lQ29tbWFJbmNs
dWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBDU1NW
YWx1ZSogdG9JbWFnZVZhbHVlID0gY29uc3VtZUltYWdlT3JOb25lKGFyZ3MsIGNvbnRleHQpOwor
ICAgIGlmICghdG9JbWFnZVZhbHVlIHx8ICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNl
KGFyZ3MpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBwZXJjZW50YWdlID0gbnVsbHB0cjsKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgcGVyY2Vu
dGFnZUFyZyA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICBpZiAocGVy
Y2VudGFnZUFyZy50eXBlKCkgPT0gUGVyY2VudGFnZVRva2VuKQorICAgICAgICBwZXJjZW50YWdl
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShjbGFtcFRvPGRvdWJsZT4ocGVyY2VudGFnZUFy
Zy5udW1lcmljVmFsdWUoKSAvIDEwMCwgMCwgMSksIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZTo6TnVtYmVyKTsKKyAgICBlbHNlIGlmIChwZXJjZW50YWdlQXJnLnR5cGUoKSA9PSBOdW1iZXJU
b2tlbikKKyAgICAgICAgcGVyY2VudGFnZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoY2xh
bXBUbzxkb3VibGU+KHBlcmNlbnRhZ2VBcmcubnVtZXJpY1ZhbHVlKCksIDAsIDEpLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGU6Ok51bWJlcik7CisKKyAgICBpZiAoIXBlcmNlbnRhZ2UpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBDU1NDcm9zc2ZhZGVWYWx1ZTo6Y3Jl
YXRlKGZyb21JbWFnZVZhbHVlLCB0b0ltYWdlVmFsdWUsIHBlcmNlbnRhZ2UpOworfQorCitzdGF0
aWMgQ1NTVmFsdWUqIGNvbnN1bWVQYWludChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQ
YXJzZXJDb250ZXh0IGNvbnRleHQpCit7CisgICAgRENIRUNLKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OmNzc1BhaW50QVBJRW5hYmxlZCgpKTsKKworICAgIENTU0N1c3RvbUlkZW50VmFsdWUqIG5h
bWUgPSBjb25zdW1lQ3VzdG9tSWRlbnQoYXJncyk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBDU1NQYWludFZhbHVlOjpjcmVhdGUobmFtZSk7
Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUdlbmVyYXRlZEltYWdlKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQpCit7CisgICAgQ1NTVmFs
dWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCk7CisgICAgQ1NTUGFyc2VyVG9rZW5S
YW5nZSByYW5nZUNvcHkgPSByYW5nZTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBj
b25zdW1lRnVuY3Rpb24ocmFuZ2VDb3B5KTsKKyAgICBDU1NWYWx1ZSogcmVzdWx0ID0gbnVsbHB0
cjsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVSYWRpYWxHcmFkaWVudCkgeworICAgICAgICByZXN1
bHQgPSBjb25zdW1lUmFkaWFsR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCksIE5vblJlcGVh
dGluZyk7CisgICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVJlcGVhdGluZ1JhZGlhbEdyYWRp
ZW50KSB7CisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVSYWRpYWxHcmFkaWVudChhcmdzLCBjb250
ZXh0Lm1vZGUoKSwgUmVwZWF0aW5nKTsKKyAgICB9IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Vi
a2l0TGluZWFyR3JhZGllbnQpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHNlbmQg
YSBkZXByZWNhdGlvbiBtZXNzYWdlLgorICAgICAgICBpZiAoY29udGV4dC51c2VDb3VudGVyKCkp
CisgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291bnRlcjo6RGVw
cmVjYXRlZFdlYktpdExpbmVhckdyYWRpZW50KTsKKyAgICAgICAgcmVzdWx0ID0gY29uc3VtZUxp
bmVhckdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBOb25SZXBlYXRpbmcsIENTU1ByZWZp
eGVkTGluZWFyR3JhZGllbnQpOworICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRS
ZXBlYXRpbmdMaW5lYXJHcmFkaWVudCkgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
c2VuZCBhIGRlcHJlY2F0aW9uIG1lc3NhZ2UuCisgICAgICAgIGlmIChjb250ZXh0LnVzZUNvdW50
ZXIoKSkKKyAgICAgICAgICAgIGNvbnRleHQudXNlQ291bnRlcigpLT5jb3VudChVc2VDb3VudGVy
OjpEZXByZWNhdGVkV2ViS2l0UmVwZWF0aW5nTGluZWFyR3JhZGllbnQpOworICAgICAgICByZXN1
bHQgPSBjb25zdW1lTGluZWFyR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCksIFJlcGVhdGlu
ZywgQ1NTUHJlZml4ZWRMaW5lYXJHcmFkaWVudCk7CisgICAgfSBlbHNlIGlmIChpZCA9PSBDU1NW
YWx1ZVJlcGVhdGluZ0xpbmVhckdyYWRpZW50KSB7CisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVM
aW5lYXJHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUoKSwgUmVwZWF0aW5nLCBDU1NMaW5lYXJH
cmFkaWVudCk7CisgICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZUxpbmVhckdyYWRpZW50KSB7
CisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVMaW5lYXJHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1v
ZGUoKSwgTm9uUmVwZWF0aW5nLCBDU1NMaW5lYXJHcmFkaWVudCk7CisgICAgfSBlbHNlIGlmIChp
ZCA9PSBDU1NWYWx1ZVdlYmtpdEdyYWRpZW50KSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBzZW5kIGEgZGVwcmVjYXRpb24gbWVzc2FnZS4KKyAgICAgICAgaWYgKGNvbnRleHQudXNl
Q291bnRlcigpKQorICAgICAgICAgICAgY29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNv
dW50ZXI6OkRlcHJlY2F0ZWRXZWJLaXRHcmFkaWVudCk7CisgICAgICAgIHJlc3VsdCA9IGNvbnN1
bWVEZXByZWNhdGVkR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCkpOworICAgIH0gZWxzZSBp
ZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRSYWRpYWxHcmFkaWVudCkgeworICAgICAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgc2VuZCBhIGRlcHJlY2F0aW9uIG1lc3NhZ2UuCisgICAgICAgIGlmIChj
b250ZXh0LnVzZUNvdW50ZXIoKSkKKyAgICAgICAgICAgIGNvbnRleHQudXNlQ291bnRlcigpLT5j
b3VudChVc2VDb3VudGVyOjpEZXByZWNhdGVkV2ViS2l0UmFkaWFsR3JhZGllbnQpOworICAgICAg
ICByZXN1bHQgPSBjb25zdW1lRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KGFyZ3MsIGNvbnRleHQu
bW9kZSgpLCBOb25SZXBlYXRpbmcpOworICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJr
aXRSZXBlYXRpbmdSYWRpYWxHcmFkaWVudCkgeworICAgICAgICBpZiAoY29udGV4dC51c2VDb3Vu
dGVyKCkpCisgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291bnRl
cjo6RGVwcmVjYXRlZFdlYktpdFJlcGVhdGluZ1JhZGlhbEdyYWRpZW50KTsKKyAgICAgICAgcmVz
dWx0ID0gY29uc3VtZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUo
KSwgUmVwZWF0aW5nKTsKKyAgICB9IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0Q3Jvc3NG
YWRlKSB7CisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVDcm9zc0ZhZGUoYXJncywgY29udGV4dCk7
CisgICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVBhaW50KSB7CisgICAgICAgIHJlc3VsdCA9
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc1BhaW50QVBJRW5hYmxlZCgpID8gY29uc3VtZVBh
aW50KGFyZ3MsIGNvbnRleHQpIDogbnVsbHB0cjsKKyAgICB9CisgICAgaWYgKCFyZXN1bHQgfHwg
IWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmFuZ2UgPSByYW5n
ZUNvcHk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjcmVhdGVD
U1NJbWFnZVZhbHVlV2l0aFJlZmVycmVyKGNvbnN0IEF0b21pY1N0cmluZyYgcmF3VmFsdWUsIGNv
bnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ1NTVmFsdWUqIGltYWdlVmFs
dWUgPSBDU1NJbWFnZVZhbHVlOjpjcmVhdGUocmF3VmFsdWUsIGNvbnRleHQuY29tcGxldGVVUkwo
cmF3VmFsdWUpKTsKKyAgICB0b0NTU0ltYWdlVmFsdWUoaW1hZ2VWYWx1ZSktPnNldFJlZmVycmVy
KGNvbnRleHQucmVmZXJyZXIoKSk7CisgICAgcmV0dXJuIGltYWdlVmFsdWU7Cit9CisKK3N0YXRp
YyBDU1NWYWx1ZSogY29uc3VtZUltYWdlU2V0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBj
b25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIENTU1BhcnNlclRva2VuUmFu
Z2UgcmFuZ2VDb3B5ID0gcmFuZ2U7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29u
c3VtZUZ1bmN0aW9uKHJhbmdlQ29weSk7CisgICAgQ1NTSW1hZ2VTZXRWYWx1ZSogaW1hZ2VTZXQg
PSBDU1NJbWFnZVNldFZhbHVlOjpjcmVhdGUoKTsKKyAgICBkbyB7CisgICAgICAgIEF0b21pY1N0
cmluZyB1cmxWYWx1ZSA9IGNvbnN1bWVVcmxBc1N0cmluZ1ZpZXcoYXJncykudG9BdG9taWNTdHJp
bmcoKTsKKyAgICAgICAgaWYgKHVybFZhbHVlLmlzTnVsbCgpKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICAgICAgQ1NTVmFsdWUqIGltYWdlID0gY3JlYXRlQ1NTSW1hZ2VWYWx1
ZVdpdGhSZWZlcnJlcih1cmxWYWx1ZSwgY29udGV4dCk7CisgICAgICAgIGltYWdlU2V0LT5hcHBl
bmQoKmltYWdlKTsKKworICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSBhcmdz
LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIGlmICh0b2tlbi50eXBlKCkg
IT0gRGltZW5zaW9uVG9rZW4pCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
aWYgKHRva2VuLnZhbHVlKCkgIT0gIngiKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIERDSEVDSyh0b2tlbi51bml0VHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZTo6VW5rbm93bik7CisgICAgICAgIGRvdWJsZSBpbWFnZVNjYWxlRmFjdG9yID0gdG9rZW4u
bnVtZXJpY1ZhbHVlKCk7CisgICAgICAgIGlmIChpbWFnZVNjYWxlRmFjdG9yIDw9IDApCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaW1hZ2VTZXQtPmFwcGVuZCgqQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShpbWFnZVNjYWxlRmFjdG9yLCBDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGU6Ok51bWJlcikpOworICAgIH0gd2hpbGUgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1do
aXRlc3BhY2UoYXJncykpOworICAgIGlmICghYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByYW5nZSA9IHJhbmdlQ29weTsKKyAgICByZXR1cm4gaW1hZ2VTZXQ7Cit9
CisKK3N0YXRpYyBib29sIGlzR2VuZXJhdGVkSW1hZ2UoQ1NTVmFsdWVJRCBpZCkKK3sKKyAgICBy
ZXR1cm4gaWQgPT0gQ1NTVmFsdWVMaW5lYXJHcmFkaWVudCB8fCBpZCA9PSBDU1NWYWx1ZVJhZGlh
bEdyYWRpZW50CisgICAgICAgIHx8IGlkID09IENTU1ZhbHVlUmVwZWF0aW5nTGluZWFyR3JhZGll
bnQgfHwgaWQgPT0gQ1NTVmFsdWVSZXBlYXRpbmdSYWRpYWxHcmFkaWVudAorICAgICAgICB8fCBp
ZCA9PSBDU1NWYWx1ZVdlYmtpdExpbmVhckdyYWRpZW50IHx8IGlkID09IENTU1ZhbHVlV2Via2l0
UmFkaWFsR3JhZGllbnQKKyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRSZXBlYXRpbmdM
aW5lYXJHcmFkaWVudCB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdFJlcGVhdGluZ1JhZGlhbEdyYWRp
ZW50CisgICAgICAgIHx8IGlkID09IENTU1ZhbHVlV2Via2l0R3JhZGllbnQgfHwgaWQgPT0gQ1NT
VmFsdWVXZWJraXRDcm9zc0ZhZGUgfHwgaWQgPT0gQ1NTVmFsdWVQYWludDsKK30KKworQ1NTVmFs
dWUqIGNvbnN1bWVJbWFnZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyQ29u
dGV4dCBjb250ZXh0LCBDb25zdW1lR2VuZXJhdGVkSW1hZ2UgZ2VuZXJhdGVkSW1hZ2UpCit7Cisg
ICAgQXRvbWljU3RyaW5nIHVyaSA9IGNvbnN1bWVVcmxBc1N0cmluZ1ZpZXcocmFuZ2UpLnRvQXRv
bWljU3RyaW5nKCk7CisgICAgaWYgKCF1cmkuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBjcmVh
dGVDU1NJbWFnZVZhbHVlV2l0aFJlZmVycmVyKHVyaSwgY29udGV4dCk7CisgICAgaWYgKHJhbmdl
LnBlZWsoKS50eXBlKCkgPT0gRnVuY3Rpb25Ub2tlbikgeworICAgICAgICBDU1NWYWx1ZUlEIGlk
ID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKTsKKyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
V2Via2l0SW1hZ2VTZXQpCisgICAgICAgICAgICByZXR1cm4gY29uc3VtZUltYWdlU2V0KHJhbmdl
LCBjb250ZXh0KTsKKyAgICAgICAgaWYgKGdlbmVyYXRlZEltYWdlID09IENvbnN1bWVHZW5lcmF0
ZWRJbWFnZTo6QWxsb3cgJiYgaXNHZW5lcmF0ZWRJbWFnZShpZCkpCisgICAgICAgICAgICByZXR1
cm4gY29uc3VtZUdlbmVyYXRlZEltYWdlKHJhbmdlLCBjb250ZXh0KTsKKyAgICB9CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIENTU1Byb3BlcnR5UGFyc2VySGVscGVy
cworKi8KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjEgQEAKKy8vIENvcHlyaWdodCAyMDE2IFRo
ZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
Ky8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8g
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyNpZm5kZWYgQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzX2gKKyNkZWZpbmUgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzX2gKKworLy8gRklYTUUt
TkVXUEFSU0VSICNpbmNsdWRlICJDU1NDdXN0b21JZGVudFZhbHVlLmgiCisjaW5jbHVkZSAiQ1NT
UGFyc2VyTW9kZS5oIgorI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuUmFuZ2UuaCIKKyNpbmNsdWRl
ICJDU1NQcmltaXRpdmVWYWx1ZS5oIgorI2luY2x1ZGUgIkxlbmd0aC5oIiAvLyBGb3IgVmFsdWVS
YW5nZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1N0cmluZ1ZhbHVlOworY2xh
c3MgQ1NTVVJJVmFsdWU7CitjbGFzcyBDU1NWYWx1ZVBhaXI7CisKKy8vIFdoZW4gdGhlc2UgZnVu
Y3Rpb25zIGFyZSBzdWNjZXNzZnVsLCB0aGV5IHdpbGwgY29uc3VtZSBhbGwgdGhlIHJlbGV2YW50
CisvLyB0b2tlbnMgZnJvbSB0aGUgcmFuZ2UgYW5kIGFsc28gY29uc3VtZSBhbnkgd2hpdGVzcGFj
ZSB3aGljaCBmb2xsb3dzLiBXaGVuCisvLyB0aGUgc3RhcnQgb2YgdGhlIHJhbmdlIGRvZXNuJ3Qg
bWF0Y2ggdGhlIHR5cGUgd2UncmUgbG9va2luZyBmb3IsIHRoZSByYW5nZQorLy8gd2lsbCBub3Qg
YmUgbW9kaWZpZWQuCituYW1lc3BhY2UgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzIHsKKworLy8g
RklYTUU6IFRoZXNlIHNob3VsZCBwcm9iYWJseSBqdXN0IGJlIGNvbnN1bWVDb21tYSBhbmQgY29u
c3VtZVNsYXNoLgorYm9vbCBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKENTU1BhcnNl
clRva2VuUmFuZ2UmKTsKK2Jvb2wgY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShDU1NQ
YXJzZXJUb2tlblJhbmdlJik7CisvLyBjb25zdW1lRnVuY3Rpb24gZXhwZWN0cyB0aGUgcmFuZ2Ug
c3RhcnRzIHdpdGggYSBGdW5jdGlvblRva2VuLgorQ1NTUGFyc2VyVG9rZW5SYW5nZSBjb25zdW1l
RnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworCitlbnVtIGNsYXNzIFVuaXRsZXNzUXVp
cmsgeworICAgIEFsbG93LAorICAgIEZvcmJpZAorfTsKKworQ1NTUHJpbWl0aXZlVmFsdWUqIGNv
bnN1bWVJbnRlZ2VyKENTU1BhcnNlclRva2VuUmFuZ2UmLCBkb3VibGUgbWluaW11bVZhbHVlID0g
LXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpOworQ1NTUHJpbWl0aXZlVmFsdWUq
IGNvbnN1bWVQb3NpdGl2ZUludGVnZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworYm9vbCBjb25z
dW1lTnVtYmVyUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmLCBkb3VibGUmIHJlc3VsdCk7CitDU1NQ
cmltaXRpdmVWYWx1ZSogY29uc3VtZU51bWJlcihDU1NQYXJzZXJUb2tlblJhbmdlJiwgVmFsdWVS
YW5nZSk7CitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUxlbmd0aChDU1NQYXJzZXJUb2tlblJh
bmdlJiwgQ1NTUGFyc2VyTW9kZSwgVmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayA9IFVuaXRsZXNz
UXVpcms6OkZvcmJpZCk7CitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZVBlcmNlbnQoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYsIFZhbHVlUmFuZ2UpOworQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVM
ZW5ndGhPclBlcmNlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIFZhbHVl
UmFuZ2UsIFVuaXRsZXNzUXVpcmsgPSBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworQ1NTUHJpbWl0
aXZlVmFsdWUqIGNvbnN1bWVBbmdsZShDU1NQYXJzZXJUb2tlblJhbmdlJik7CitDU1NQcmltaXRp
dmVWYWx1ZSogY29uc3VtZVRpbWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIFZhbHVlUmFuZ2UpOwor
CitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUlkZW50KENTU1BhcnNlclRva2VuUmFuZ2UmKTsK
K0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lSWRlbnRSYW5nZShDU1NQYXJzZXJUb2tlblJhbmdl
JiwgQ1NTVmFsdWVJRCBsb3dlciwgQ1NTVmFsdWVJRCB1cHBlcik7Cit0ZW1wbGF0ZTxDU1NWYWx1
ZUlELCBDU1NWYWx1ZUlELi4uPiBpbmxpbmUgYm9vbCBpZGVudE1hdGNoZXMoQ1NTVmFsdWVJRCBp
ZCk7Cit0ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIGFsbG93ZWRJZGVudHM+IENTU1ByaW1pdGl2ZVZh
bHVlKiBjb25zdW1lSWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworCisvLyBGSVhNRS1ORVdQ
QVJTRVIgQ1NTQ3VzdG9tSWRlbnRWYWx1ZSogY29uc3VtZUN1c3RvbUlkZW50KENTU1BhcnNlclRv
a2VuUmFuZ2UmKTsKK0NTU1N0cmluZ1ZhbHVlKiBjb25zdW1lU3RyaW5nKENTU1BhcnNlclRva2Vu
UmFuZ2UmKTsKK1N0cmluZ1ZpZXcgY29uc3VtZVVybEFzU3RyaW5nVmlldyhDU1NQYXJzZXJUb2tl
blJhbmdlJik7CitDU1NVUklWYWx1ZSogY29uc3VtZVVybChDU1NQYXJzZXJUb2tlblJhbmdlJik7
CisKK0NTU1ZhbHVlKiBjb25zdW1lQ29sb3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNl
ck1vZGUsIGJvb2wgYWNjZXB0UXVpcmt5Q29sb3JzID0gZmFsc2UpOworCitDU1NWYWx1ZVBhaXIq
IGNvbnN1bWVQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5p
dGxlc3NRdWlyayk7Citib29sIGNvbnN1bWVQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiwg
Q1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyaywgQ1NTVmFsdWUqJiByZXN1bHRYLCBDU1NWYWx1
ZSomIHJlc3VsdFkpOworYm9vbCBjb25zdW1lT25lT3JUd29WYWx1ZWRQb3NpdGlvbihDU1NQYXJz
ZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyaywgQ1NTVmFsdWUqJiBy
ZXN1bHRYLCBDU1NWYWx1ZSomIHJlc3VsdFkpOworCitlbnVtIGNsYXNzIENvbnN1bWVHZW5lcmF0
ZWRJbWFnZSB7CisgICAgQWxsb3csCisgICAgRm9yYmlkCit9OworCitDU1NWYWx1ZSogY29uc3Vt
ZUltYWdlKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJDb250ZXh0LCBDb25zdW1lR2Vu
ZXJhdGVkSW1hZ2UgPSBDb25zdW1lR2VuZXJhdGVkSW1hZ2U6OkFsbG93KTsKK0NTU1ZhbHVlKiBj
b25zdW1lSW1hZ2VPck5vbmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlckNvbnRleHQp
OworCisvLyBUZW1wbGF0ZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGF0IHRoZSBib3R0b20gb2YgdGhl
IGZpbGUgZm9yIHJlYWRhYmlsaXR5LgorCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBlbXB0eUJhc2VD
YXNlPiBpbmxpbmUgYm9vbCBpZGVudE1hdGNoZXMoQ1NTVmFsdWVJRCkgeyByZXR1cm4gZmFsc2U7
IH0KK3RlbXBsYXRlPENTU1ZhbHVlSUQgaGVhZCwgQ1NTVmFsdWVJRC4uLiB0YWlsPiBpbmxpbmUg
Ym9vbCBpZGVudE1hdGNoZXMoQ1NTVmFsdWVJRCBpZCkKK3sKKyAgICByZXR1cm4gaWQgPT0gaGVh
ZCB8fCBpZGVudE1hdGNoZXM8dGFpbC4uLj4oaWQpOworfQorCisvLyBGSVhNRS1ORVdQQVJTRVIg
LSBjb252ZXJ0ZWQgdG8gYSBSZWZQdHIgcmV0dXJuIHR5cGUgZnJvbSBhIHJhdyBwdHIuCit0ZW1w
bGF0ZTxDU1NWYWx1ZUlELi4uIG5hbWVzPiBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1
bWVJZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVl
aygpLnR5cGUoKSAhPSBJZGVudFRva2VuIHx8ICFpZGVudE1hdGNoZXM8bmFtZXMuLi4+KHJhbmdl
LnBlZWsoKS5pZCgpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0
ZXNwYWNlKCkuaWQoKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0NTU1dpZGVLZXl3b3Jk
KGNvbnN0IENTU1ZhbHVlSUQmIGlkKQoreworICAgIHJldHVybiBpZCA9PSBDU1NWYWx1ZUluaXRp
YWwgfHwgaWQgPT0gQ1NTVmFsdWVJbmhlcml0IHx8IGlkID09IENTU1ZhbHVlVW5zZXQgfHwgaWQg
PT0gQ1NTVmFsdWVEZWZhdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBDU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnMKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9r
ZW5pemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rv
a2VuaXplci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NUb2tlbml6ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODg4IEBACisvLyBDb3B5
cmlnaHQgMjAxNSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
CisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3Ry
aWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkNTU1Rva2VuaXplci5oIgorCisjaW5jbHVkZSAiQ1NTUGFyc2VySWRp
b21zLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmgiCisjaW5jbHVkZSAi
Q1NTUGFyc2VyVG9rZW5SYW5nZS5oIgorI2luY2x1ZGUgIkNTU1Rva2VuaXplcklucHV0U3RyZWFt
LmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgorI2luY2x1ZGUgPHd0Zi91bmljb2Rl
L0NoYXJhY3Rlck5hbWVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ1NTVG9rZW5pemVy
OjpTY29wZTo6U2NvcGUoY29uc3QgU3RyaW5nJiBzdHJpbmcpCisgICAgOiBtX3N0cmluZyhzdHJp
bmcpCit7CisgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBzcGVjLCB3ZSBzaG91bGQgcGVyZm9ybSBw
cmVwcm9jZXNzaW5nIGhlcmUuCisgICAgLy8gU2VlOiBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9j
c3Mtc3ludGF4LyNpbnB1dC1wcmVwcm9jZXNzaW5nCisgICAgLy8KKyAgICAvLyBIb3dldmVyLCB3
ZSBjYW4gc2tpcCB0aGlzIHN0ZXAgc2luY2U6CisgICAgLy8gKiBXZSdyZSB1c2luZyBIVE1MIHNw
YWNlcyAod2hpY2ggYWNjZXB0IFxyIGFuZCBcZiBhcyBhIHZhbGlkIHdoaXRlIHNwYWNlKQorICAg
IC8vICogRG8gbm90IGNvdW50IHdoaXRlIHNwYWNlcworICAgIC8vICogQ1NTVG9rZW5pemVySW5w
dXRTdHJlYW06Om5leHRJbnB1dENoYXIoKSByZXBsYWNlcyBOVUxMcyBmb3IgcmVwbGFjZW1lbnQg
Y2hhcmFjdGVycworCisgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIFRvIGF2b2lkIHJlc2l6aW5nIHdlIGVyciBvbiB0aGUgc2lkZSBvZiByZXNlcnZp
bmcgdG9vIG11Y2ggc3BhY2UuCisgICAgLy8gTW9zdCBzdHJpbmdzIHdlIHRva2VuaXplIGhhdmUg
YWJvdXQgMy41IHRvIDUgY2hhcmFjdGVycyBwZXIgdG9rZW4uCisgICAgbV90b2tlbnMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShzdHJpbmcubGVuZ3RoKCkgLyAzKTsKKworICAgIENTU1Rva2VuaXpl
cklucHV0U3RyZWFtIGlucHV0KHN0cmluZyk7CisgICAgQ1NTVG9rZW5pemVyIHRva2VuaXplcihp
bnB1dCwgKnRoaXMpOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIENTU1BhcnNlclRva2Vu
IHRva2VuID0gdG9rZW5pemVyLm5leHRUb2tlbigpOworICAgICAgICBpZiAodG9rZW4udHlwZSgp
ID09IENvbW1lbnRUb2tlbikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAodG9r
ZW4udHlwZSgpID09IEVPRlRva2VuKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3Rv
a2Vucy5hcHBlbmQodG9rZW4pOworICAgIH0KK30KKworQ1NTVG9rZW5pemVyOjpTY29wZTo6U2Nv
cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIENTU1BhcnNlck9ic2VydmVyV3JhcHBlciYgd3JhcHBl
cikKKyAgICA6IG1fc3RyaW5nKHN0cmluZykKK3sKKyAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0gaW5wdXQoc3Ry
aW5nKTsKKyAgICBDU1NUb2tlbml6ZXIgdG9rZW5pemVyKGlucHV0LCAqdGhpcyk7CisKKyAgICB1
bnNpZ25lZCBvZmZzZXQgPSAwOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIENTU1BhcnNl
clRva2VuIHRva2VuID0gdG9rZW5pemVyLm5leHRUb2tlbigpOworICAgICAgICBpZiAodG9rZW4u
dHlwZSgpID09IEVPRlRva2VuKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICh0b2tl
bi50eXBlKCkgPT0gQ29tbWVudFRva2VuKQorICAgICAgICAgICAgd3JhcHBlci5hZGRDb21tZW50
KG9mZnNldCwgaW5wdXQub2Zmc2V0KCksIG1fdG9rZW5zLnNpemUoKSk7CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgbV90b2tlbnMuYXBwZW5kKHRva2VuKTsKKyAgICAgICAgICAgIHdyYXBw
ZXIuYWRkVG9rZW4ob2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAgICBvZmZzZXQgPSBpbnB1dC5v
ZmZzZXQoKTsKKyAgICB9CisKKyAgICB3cmFwcGVyLmFkZFRva2VuKG9mZnNldCk7CisgICAgd3Jh
cHBlci5maW5hbGl6ZUNvbnN0cnVjdGlvbihtX3Rva2Vucy5iZWdpbigpKTsKK30KKworQ1NTUGFy
c2VyVG9rZW5SYW5nZSBDU1NUb2tlbml6ZXI6OlNjb3BlOjp0b2tlblJhbmdlKCkKK3sKKyAgICBy
ZXR1cm4gbV90b2tlbnM7Cit9CisKK3Vuc2lnbmVkIENTU1Rva2VuaXplcjo6U2NvcGU6OnRva2Vu
Q291bnQoKQoreworICAgIHJldHVybiBtX3Rva2Vucy5zaXplKCk7Cit9CisKK3N0YXRpYyBib29s
IGlzTmV3TGluZShVQ2hhciBjYykKK3sKKyAgICAvLyBXZSBjaGVjayBcciBhbmQgXGYgaGVyZSwg
c2luY2Ugd2UgaGF2ZSBubyBwcmVwcm9jZXNzaW5nIHN0YWdlCisgICAgcmV0dXJuIChjYyA9PSAn
XHInIHx8IGNjID09ICdcbicgfHwgY2MgPT0gJ1xmJyk7Cit9CisKKy8vIGh0dHA6Ly9kZXYudzMu
b3JnL2Nzc3dnL2Nzcy1zeW50YXgvI2NoZWNrLWlmLXR3by1jb2RlLXBvaW50cy1hcmUtYS12YWxp
ZC1lc2NhcGUKK3N0YXRpYyBib29sIHR3b0NoYXJzQXJlVmFsaWRFc2NhcGUoVUNoYXIgZmlyc3Qs
IFVDaGFyIHNlY29uZCkKK3sKKyAgICByZXR1cm4gZmlyc3QgPT0gJ1xcJyAmJiAhaXNOZXdMaW5l
KHNlY29uZCk7Cit9CisKK0NTU1Rva2VuaXplcjo6Q1NTVG9rZW5pemVyKENTU1Rva2VuaXplcklu
cHV0U3RyZWFtJiBpbnB1dFN0cmVhbSwgU2NvcGUmIHNjb3BlKQorICAgIDogbV9pbnB1dChpbnB1
dFN0cmVhbSkKKyAgICAsIG1fc2NvcGUoc2NvcGUpCit7Cit9CisKK3ZvaWQgQ1NTVG9rZW5pemVy
OjpyZWNvbnN1bWUoVUNoYXIgYykKK3sKKyAgICBtX2lucHV0LnB1c2hCYWNrKGMpOworfQorCitV
Q2hhciBDU1NUb2tlbml6ZXI6OmNvbnN1bWUoKQoreworICAgIFVDaGFyIGN1cnJlbnQgPSBtX2lu
cHV0Lm5leHRJbnB1dENoYXIoKTsKKyAgICBtX2lucHV0LmFkdmFuY2UoKTsKKyAgICByZXR1cm4g
Y3VycmVudDsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjp3aGl0ZVNwYWNlKFVD
aGFyIC8qY2MqLykKK3sKKyAgICBtX2lucHV0LmFkdmFuY2VVbnRpbE5vbldoaXRlc3BhY2UoKTsK
KyAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oV2hpdGVzcGFjZVRva2VuKTsKK30KKworQ1NTUGFy
c2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpibG9ja1N0YXJ0KENTU1BhcnNlclRva2VuVHlwZSB0eXBl
KQoreworICAgIG1fYmxvY2tTdGFjay5hcHBlbmQodHlwZSk7CisgICAgcmV0dXJuIENTU1BhcnNl
clRva2VuKHR5cGUsIENTU1BhcnNlclRva2VuOjpCbG9ja1N0YXJ0KTsKK30KKworQ1NTUGFyc2Vy
VG9rZW4gQ1NTVG9rZW5pemVyOjpibG9ja1N0YXJ0KENTU1BhcnNlclRva2VuVHlwZSBibG9ja1R5
cGUsIENTU1BhcnNlclRva2VuVHlwZSB0eXBlLCBTdHJpbmdWaWV3IG5hbWUpCit7CisgICAgbV9i
bG9ja1N0YWNrLmFwcGVuZChibG9ja1R5cGUpOworICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbih0
eXBlLCBuYW1lLCBDU1NQYXJzZXJUb2tlbjo6QmxvY2tTdGFydCk7Cit9CisKK0NTU1BhcnNlclRv
a2VuIENTU1Rva2VuaXplcjo6YmxvY2tFbmQoQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIENTU1Bh
cnNlclRva2VuVHlwZSBzdGFydFR5cGUpCit7CisgICAgaWYgKCFtX2Jsb2NrU3RhY2suaXNFbXB0
eSgpICYmIG1fYmxvY2tTdGFjay5sYXN0KCkgPT0gc3RhcnRUeXBlKSB7CisgICAgICAgIG1fYmxv
Y2tTdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbih0eXBl
LCBDU1NQYXJzZXJUb2tlbjo6QmxvY2tFbmQpOworICAgIH0KKyAgICByZXR1cm4gQ1NTUGFyc2Vy
VG9rZW4odHlwZSk7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6bGVmdFBhcmVu
dGhlc2lzKFVDaGFyIC8qY2MqLykKK3sKKyAgICByZXR1cm4gYmxvY2tTdGFydChMZWZ0UGFyZW50
aGVzaXNUb2tlbik7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6cmlnaHRQYXJl
bnRoZXNpcyhVQ2hhciAvKmNjKi8pCit7CisgICAgcmV0dXJuIGJsb2NrRW5kKFJpZ2h0UGFyZW50
aGVzaXNUb2tlbiwgTGVmdFBhcmVudGhlc2lzVG9rZW4pOworfQorCitDU1NQYXJzZXJUb2tlbiBD
U1NUb2tlbml6ZXI6OmxlZnRCcmFja2V0KFVDaGFyIC8qY2MqLykKK3sKKyAgICByZXR1cm4gYmxv
Y2tTdGFydChMZWZ0QnJhY2tldFRva2VuKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5p
emVyOjpyaWdodEJyYWNrZXQoVUNoYXIgLypjYyovKQoreworICAgIHJldHVybiBibG9ja0VuZChS
aWdodEJyYWNrZXRUb2tlbiwgTGVmdEJyYWNrZXRUb2tlbik7Cit9CisKK0NTU1BhcnNlclRva2Vu
IENTU1Rva2VuaXplcjo6bGVmdEJyYWNlKFVDaGFyIC8qY2MqLykKK3sKKyAgICByZXR1cm4gYmxv
Y2tTdGFydChMZWZ0QnJhY2VUb2tlbik7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXpl
cjo6cmlnaHRCcmFjZShVQ2hhciAvKmNjKi8pCit7CisgICAgcmV0dXJuIGJsb2NrRW5kKFJpZ2h0
QnJhY2VUb2tlbiwgTGVmdEJyYWNlVG9rZW4pOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tl
bml6ZXI6OnBsdXNPckZ1bGxTdG9wKFVDaGFyIGNjKQoreworICAgIGlmIChuZXh0Q2hhcnNBcmVO
dW1iZXIoY2MpKSB7CisgICAgICAgIHJlY29uc3VtZShjYyk7CisgICAgICAgIHJldHVybiBjb25z
dW1lTnVtZXJpY1Rva2VuKCk7CisgICAgfQorICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihEZWxp
bWl0ZXJUb2tlbiwgY2MpOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmFzdGVy
aXNrKFVDaGFyIGNjKQoreworICAgIEFTU0VSVF9VTlVTRUQoY2MsIGNjID09ICcqJyk7CisgICAg
aWYgKGNvbnN1bWVJZk5leHQoJz0nKSkKKyAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKFN1
YnN0cmluZ01hdGNoVG9rZW4pOworICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihEZWxpbWl0ZXJU
b2tlbiwgJyonKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpsZXNzVGhhbihV
Q2hhciBjYykKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGNjLCBjYyA9PSAnPCcpOworICAgIGlmICht
X2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkgPT0gJyEnCisgICAgICAgICYmIG1faW5w
dXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgxKSA9PSAnLScKKyAgICAgICAgJiYgbV9pbnB1dC5w
ZWVrV2l0aG91dFJlcGxhY2VtZW50KDIpID09ICctJykgeworICAgICAgICBtX2lucHV0LmFkdmFu
Y2UoMyk7CisgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihDRE9Ub2tlbik7CisgICAgfQor
ICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihEZWxpbWl0ZXJUb2tlbiwgJzwnKTsKK30KKworQ1NT
UGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjb21tYShVQ2hhciAvKmNjKi8pCit7CisgICAgcmV0
dXJuIENTU1BhcnNlclRva2VuKENvbW1hVG9rZW4pOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NU
b2tlbml6ZXI6Omh5cGhlbk1pbnVzKFVDaGFyIGNjKQoreworICAgIGlmIChuZXh0Q2hhcnNBcmVO
dW1iZXIoY2MpKSB7CisgICAgICAgIHJlY29uc3VtZShjYyk7CisgICAgICAgIHJldHVybiBjb25z
dW1lTnVtZXJpY1Rva2VuKCk7CisgICAgfQorICAgIGlmIChtX2lucHV0LnBlZWtXaXRob3V0UmVw
bGFjZW1lbnQoMCkgPT0gJy0nCisgICAgICAgICYmIG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNl
bWVudCgxKSA9PSAnPicpIHsKKyAgICAgICAgbV9pbnB1dC5hZHZhbmNlKDIpOworICAgICAgICBy
ZXR1cm4gQ1NTUGFyc2VyVG9rZW4oQ0RDVG9rZW4pOworICAgIH0KKyAgICBpZiAobmV4dENoYXJz
QXJlSWRlbnRpZmllcihjYykpIHsKKyAgICAgICAgcmVjb25zdW1lKGNjKTsKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVJZGVudExpa2VUb2tlbigpOworICAgIH0KKyAgICByZXR1cm4gQ1NTUGFyc2Vy
VG9rZW4oRGVsaW1pdGVyVG9rZW4sIGNjKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5p
emVyOjpzb2xpZHVzKFVDaGFyIGNjKQoreworICAgIGlmIChjb25zdW1lSWZOZXh0KCcqJykpIHsK
KyAgICAgICAgLy8gVGhlc2UgZ2V0IGlnbm9yZWQsIGJ1dCB3ZSBuZWVkIGEgdmFsdWUgdG8gcmV0
dXJuLgorICAgICAgICBjb25zdW1lVW50aWxDb21tZW50RW5kRm91bmQoKTsKKyAgICAgICAgcmV0
dXJuIENTU1BhcnNlclRva2VuKENvbW1lbnRUb2tlbik7CisgICAgfQorCisgICAgcmV0dXJuIENT
U1BhcnNlclRva2VuKERlbGltaXRlclRva2VuLCBjYyk7Cit9CisKK0NTU1BhcnNlclRva2VuIENT
U1Rva2VuaXplcjo6Y29sb24oVUNoYXIgLypjYyovKQoreworICAgIHJldHVybiBDU1NQYXJzZXJU
b2tlbihDb2xvblRva2VuKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpzZW1p
Q29sb24oVUNoYXIgLypjYyovKQoreworICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihTZW1pY29s
b25Ub2tlbik7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6aGFzaChVQ2hhciBj
YykKK3sKKyAgICBVQ2hhciBuZXh0Q2hhciA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVu
dCgwKTsKKyAgICBpZiAoaXNOYW1lQ29kZVBvaW50KG5leHRDaGFyKSB8fCB0d29DaGFyc0FyZVZh
bGlkRXNjYXBlKG5leHRDaGFyLCBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMSkpKSB7
CisgICAgICAgIEhhc2hUb2tlblR5cGUgdHlwZSA9IG5leHRDaGFyc0FyZUlkZW50aWZpZXIoKSA/
IEhhc2hUb2tlbklkIDogSGFzaFRva2VuVW5yZXN0cmljdGVkOworICAgICAgICByZXR1cm4gQ1NT
UGFyc2VyVG9rZW4odHlwZSwgY29uc3VtZU5hbWUoKSk7CisgICAgfQorCisgICAgcmV0dXJuIENT
U1BhcnNlclRva2VuKERlbGltaXRlclRva2VuLCBjYyk7Cit9CisKK0NTU1BhcnNlclRva2VuIENT
U1Rva2VuaXplcjo6Y2lyY3VtZmxleEFjY2VudChVQ2hhciBjYykKK3sKKyAgICBBU1NFUlRfVU5V
U0VEKGNjLCBjYyA9PSAnXicpOworICAgIGlmIChjb25zdW1lSWZOZXh0KCc9JykpCisgICAgICAg
IHJldHVybiBDU1NQYXJzZXJUb2tlbihQcmVmaXhNYXRjaFRva2VuKTsKKyAgICByZXR1cm4gQ1NT
UGFyc2VyVG9rZW4oRGVsaW1pdGVyVG9rZW4sICdeJyk7Cit9CisKK0NTU1BhcnNlclRva2VuIENT
U1Rva2VuaXplcjo6ZG9sbGFyU2lnbihVQ2hhciBjYykKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGNj
LCBjYyA9PSAnJCcpOworICAgIGlmIChjb25zdW1lSWZOZXh0KCc9JykpCisgICAgICAgIHJldHVy
biBDU1NQYXJzZXJUb2tlbihTdWZmaXhNYXRjaFRva2VuKTsKKyAgICByZXR1cm4gQ1NTUGFyc2Vy
VG9rZW4oRGVsaW1pdGVyVG9rZW4sICckJyk7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2Vu
aXplcjo6dmVydGljYWxMaW5lKFVDaGFyIGNjKQoreworICAgIEFTU0VSVF9VTlVTRUQoY2MsIGNj
ID09ICd8Jyk7CisgICAgaWYgKGNvbnN1bWVJZk5leHQoJz0nKSkKKyAgICAgICAgcmV0dXJuIENT
U1BhcnNlclRva2VuKERhc2hNYXRjaFRva2VuKTsKKyAgICBpZiAoY29uc3VtZUlmTmV4dCgnfCcp
KQorICAgICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oQ29sdW1uVG9rZW4pOworICAgIHJldHVy
biBDU1NQYXJzZXJUb2tlbihEZWxpbWl0ZXJUb2tlbiwgJ3wnKTsKK30KKworQ1NTUGFyc2VyVG9r
ZW4gQ1NTVG9rZW5pemVyOjp0aWxkZShVQ2hhciBjYykKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGNj
LCBjYyA9PSAnficpOworICAgIGlmIChjb25zdW1lSWZOZXh0KCc9JykpCisgICAgICAgIHJldHVy
biBDU1NQYXJzZXJUb2tlbihJbmNsdWRlTWF0Y2hUb2tlbik7CisgICAgcmV0dXJuIENTU1BhcnNl
clRva2VuKERlbGltaXRlclRva2VuLCAnficpOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tl
bml6ZXI6OmNvbW1lcmNpYWxBdChVQ2hhciBjYykKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGNjLCBj
YyA9PSAnQCcpOworICAgIGlmIChuZXh0Q2hhcnNBcmVJZGVudGlmaWVyKCkpCisgICAgICAgIHJl
dHVybiBDU1NQYXJzZXJUb2tlbihBdEtleXdvcmRUb2tlbiwgY29uc3VtZU5hbWUoKSk7CisgICAg
cmV0dXJuIENTU1BhcnNlclRva2VuKERlbGltaXRlclRva2VuLCAnQCcpOworfQorCitDU1NQYXJz
ZXJUb2tlbiBDU1NUb2tlbml6ZXI6OnJldmVyc2VTb2xpZHVzKFVDaGFyIGNjKQoreworICAgIGlm
ICh0d29DaGFyc0FyZVZhbGlkRXNjYXBlKGNjLCBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1l
bnQoMCkpKSB7CisgICAgICAgIHJlY29uc3VtZShjYyk7CisgICAgICAgIHJldHVybiBjb25zdW1l
SWRlbnRMaWtlVG9rZW4oKTsKKyAgICB9CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKERlbGlt
aXRlclRva2VuLCBjYyk7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6YXNjaWlE
aWdpdChVQ2hhciBjYykKK3sKKyAgICByZWNvbnN1bWUoY2MpOworICAgIHJldHVybiBjb25zdW1l
TnVtZXJpY1Rva2VuKCk7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6bGV0dGVy
VShVQ2hhciBjYykKK3sKKyAgICBpZiAobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDAp
ID09ICcrJworICAgICAgICAmJiAoaXNBU0NJSUhleERpZ2l0KG1faW5wdXQucGVla1dpdGhvdXRS
ZXBsYWNlbWVudCgxKSkKKyAgICAgICAgICAgIHx8IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNl
bWVudCgxKSA9PSAnPycpKSB7CisgICAgICAgIG1faW5wdXQuYWR2YW5jZSgpOworICAgICAgICBy
ZXR1cm4gY29uc3VtZVVuaWNvZGVSYW5nZSgpOworICAgIH0KKyAgICByZWNvbnN1bWUoY2MpOwor
ICAgIHJldHVybiBjb25zdW1lSWRlbnRMaWtlVG9rZW4oKTsKK30KKworQ1NTUGFyc2VyVG9rZW4g
Q1NTVG9rZW5pemVyOjpuYW1lU3RhcnQoVUNoYXIgY2MpCit7CisgICAgcmVjb25zdW1lKGNjKTsK
KyAgICByZXR1cm4gY29uc3VtZUlkZW50TGlrZVRva2VuKCk7Cit9CisKK0NTU1BhcnNlclRva2Vu
IENTU1Rva2VuaXplcjo6c3RyaW5nU3RhcnQoVUNoYXIgY2MpCit7CisgICAgcmV0dXJuIGNvbnN1
bWVTdHJpbmdUb2tlblVudGlsKGNjKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVy
OjplbmRPZkZpbGUoVUNoYXIgLypjYyovKQoreworICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihF
T0ZUb2tlbik7Cit9CisKK2NvbnN0IENTU1Rva2VuaXplcjo6Q29kZVBvaW50IENTU1Rva2VuaXpl
cjo6Y29kZVBvaW50c1sxMjhdID0geworICAgICZDU1NUb2tlbml6ZXI6OmVuZE9mRmlsZSwKKyAg
ICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAg
IDAsCisgICAgJkNTU1Rva2VuaXplcjo6d2hpdGVTcGFjZSwKKyAgICAmQ1NTVG9rZW5pemVyOjp3
aGl0ZVNwYWNlLAorICAgIDAsCisgICAgJkNTU1Rva2VuaXplcjo6d2hpdGVTcGFjZSwKKyAgICAm
Q1NTVG9rZW5pemVyOjp3aGl0ZVNwYWNlLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAs
CisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwK
KyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAor
ICAgICZDU1NUb2tlbml6ZXI6OndoaXRlU3BhY2UsCisgICAgMCwKKyAgICAmQ1NTVG9rZW5pemVy
OjpzdHJpbmdTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpoYXNoLAorICAgICZDU1NUb2tlbml6
ZXI6OmRvbGxhclNpZ24sCisgICAgMCwKKyAgICAwLAorICAgICZDU1NUb2tlbml6ZXI6OnN0cmlu
Z1N0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6OmxlZnRQYXJlbnRoZXNpcywKKyAgICAmQ1NTVG9r
ZW5pemVyOjpyaWdodFBhcmVudGhlc2lzLAorICAgICZDU1NUb2tlbml6ZXI6OmFzdGVyaXNrLAor
ICAgICZDU1NUb2tlbml6ZXI6OnBsdXNPckZ1bGxTdG9wLAorICAgICZDU1NUb2tlbml6ZXI6OmNv
bW1hLAorICAgICZDU1NUb2tlbml6ZXI6Omh5cGhlbk1pbnVzLAorICAgICZDU1NUb2tlbml6ZXI6
OnBsdXNPckZ1bGxTdG9wLAorICAgICZDU1NUb2tlbml6ZXI6OnNvbGlkdXMsCisgICAgJkNTU1Rv
a2VuaXplcjo6YXNjaWlEaWdpdCwKKyAgICAmQ1NTVG9rZW5pemVyOjphc2NpaURpZ2l0LAorICAg
ICZDU1NUb2tlbml6ZXI6OmFzY2lpRGlnaXQsCisgICAgJkNTU1Rva2VuaXplcjo6YXNjaWlEaWdp
dCwKKyAgICAmQ1NTVG9rZW5pemVyOjphc2NpaURpZ2l0LAorICAgICZDU1NUb2tlbml6ZXI6OmFz
Y2lpRGlnaXQsCisgICAgJkNTU1Rva2VuaXplcjo6YXNjaWlEaWdpdCwKKyAgICAmQ1NTVG9rZW5p
emVyOjphc2NpaURpZ2l0LAorICAgICZDU1NUb2tlbml6ZXI6OmFzY2lpRGlnaXQsCisgICAgJkNT
U1Rva2VuaXplcjo6YXNjaWlEaWdpdCwKKyAgICAmQ1NTVG9rZW5pemVyOjpjb2xvbiwKKyAgICAm
Q1NTVG9rZW5pemVyOjpzZW1pQ29sb24sCisgICAgJkNTU1Rva2VuaXplcjo6bGVzc1RoYW4sCisg
ICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgJkNTU1Rva2VuaXplcjo6Y29tbWVyY2lhbEF0LAor
ICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3Rh
cnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5h
bWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXpl
cjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9r
ZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZD
U1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisg
ICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFy
dCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFt
ZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVy
OjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tl
bml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNT
U1Rva2VuaXplcjo6bGV0dGVyVSwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAg
JkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwK
KyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0
YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6OmxlZnRCcmFja2V0LAorICAgICZDU1NUb2tlbml6ZXI6
OnJldmVyc2VTb2xpZHVzLAorICAgICZDU1NUb2tlbml6ZXI6OnJpZ2h0QnJhY2tldCwKKyAgICAm
Q1NTVG9rZW5pemVyOjpjaXJjdW1mbGV4QWNjZW50LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVT
dGFydCwKKyAgICAwLAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9r
ZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZD
U1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisg
ICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFy
dCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFt
ZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVy
OjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tl
bml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNT
U1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAg
ICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0
LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1l
U3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bGV0dGVyVSwKKyAgICAmQ1NTVG9rZW5pemVyOjpu
YW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6
ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rv
a2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6OmxlZnRCcmFjZSwKKyAgICAm
Q1NTVG9rZW5pemVyOjp2ZXJ0aWNhbExpbmUsCisgICAgJkNTU1Rva2VuaXplcjo6cmlnaHRCcmFj
ZSwKKyAgICAmQ1NTVG9rZW5pemVyOjp0aWxkZSwKKyAgICAwLAorfTsKKyNpZiAhQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT05fRElTQUJMRUQKK2NvbnN0IHVuc2lnbmVkIGNvZGVQb2lu
dHNOdW1iZXIgPSAxMjg7CisjZW5kaWYKKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpu
ZXh0VG9rZW4oKQoreworICAgIC8vIFVubGlrZSB0aGUgSFRNTFRva2VuaXplciwgdGhlIENTUyBT
eW50YXggc3BlYyBpcyB3cml0dGVuCisgICAgLy8gYXMgYSBzdGF0ZWxlc3MsIChmaXhlZC1zaXpl
KSBsb29rLWFoZWFkIHRva2VuaXplci4KKyAgICAvLyBXZSBjb3VsZCBtb3ZlIHRvIHRoZSBzdGF0
ZWZ1bCBtb2RlbCBhbmQgaW5zdGVhZCBjcmVhdGUKKyAgICAvLyBzdGF0ZXMgZm9yIGFsbCB0aGUg
Im5leHQgMyBjb2RlcG9pbnRzIGFyZSBYIiBjYXNlcy4KKyAgICAvLyBTdGF0ZS1tYWNoaW5lIHRv
a2VuaXplcnMgYXJlIGVhc2llciB0byB3cml0ZSB0byBoYW5kbGUKKyAgICAvLyBpbmNyZW1lbnRh
bCB0b2tlbml6YXRpb24gb2YgcGFydGlhbCBzb3VyY2VzLgorICAgIC8vIEhvd2V2ZXIsIGZvciBu
b3cgd2UgZm9sbG93IHRoZSBzcGVjIGV4YWN0bHkuCisgICAgVUNoYXIgY2MgPSBjb25zdW1lKCk7
CisgICAgQ29kZVBvaW50IGNvZGVQb2ludEZ1bmMgPSAwOworCisgICAgaWYgKGlzQVNDSUkoY2Mp
KSB7CisgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGNjIDwgY29kZVBv
aW50c051bWJlcik7CisgICAgICAgIGNvZGVQb2ludEZ1bmMgPSBjb2RlUG9pbnRzW2NjXTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgY29kZVBvaW50RnVuYyA9ICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFy
dDsKKworICAgIGlmIChjb2RlUG9pbnRGdW5jKQorICAgICAgICByZXR1cm4gKCh0aGlzKS0+Kihj
b2RlUG9pbnRGdW5jKSkoY2MpOworICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihEZWxpbWl0ZXJU
b2tlbiwgY2MpOworfQorCisvLyBUaGlzIG1ldGhvZCBtZXJnZXMgdGhlIGZvbGxvd2luZyBzcGVj
IHNlY3Rpb25zIGZvciBlZmZpY2llbmN5CisvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXN5
bnRheC8jY29uc3VtZS1hLW51bWJlcgorLy8gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1zeW50
YXgvI2NvbnZlcnQtYS1zdHJpbmctdG8tYS1udW1iZXIKK0NTU1BhcnNlclRva2VuIENTU1Rva2Vu
aXplcjo6Y29uc3VtZU51bWJlcigpCit7CisgICAgQVNTRVJUKG5leHRDaGFyc0FyZU51bWJlcigp
KTsKKworICAgIE51bWVyaWNWYWx1ZVR5cGUgdHlwZSA9IEludGVnZXJWYWx1ZVR5cGU7CisgICAg
TnVtZXJpY1NpZ24gc2lnbiA9IE5vU2lnbjsKKyAgICB1bnNpZ25lZCBudW1iZXJMZW5ndGggPSAw
OworCisgICAgVUNoYXIgbmV4dCA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKTsK
KyAgICBpZiAobmV4dCA9PSAnKycpIHsKKyAgICAgICAgKytudW1iZXJMZW5ndGg7CisgICAgICAg
IHNpZ24gPSBQbHVzU2lnbjsKKyAgICB9IGVsc2UgaWYgKG5leHQgPT0gJy0nKSB7CisgICAgICAg
ICsrbnVtYmVyTGVuZ3RoOworICAgICAgICBzaWduID0gTWludXNTaWduOworICAgIH0KKworICAg
IG51bWJlckxlbmd0aCA9IG1faW5wdXQuc2tpcFdoaWxlUHJlZGljYXRlPGlzQVNDSUlEaWdpdD4o
bnVtYmVyTGVuZ3RoKTsKKyAgICBuZXh0ID0gbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50
KG51bWJlckxlbmd0aCk7CisgICAgaWYgKG5leHQgPT0gJy4nICYmIGlzQVNDSUlEaWdpdChtX2lu
cHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQobnVtYmVyTGVuZ3RoICsgMSkpKSB7CisgICAgICAg
IHR5cGUgPSBOdW1iZXJWYWx1ZVR5cGU7CisgICAgICAgIG51bWJlckxlbmd0aCA9IG1faW5wdXQu
c2tpcFdoaWxlUHJlZGljYXRlPGlzQVNDSUlEaWdpdD4obnVtYmVyTGVuZ3RoICsgMik7CisgICAg
ICAgIG5leHQgPSBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQobnVtYmVyTGVuZ3RoKTsK
KyAgICB9CisKKyAgICBpZiAobmV4dCA9PSAnRScgfHwgbmV4dCA9PSAnZScpIHsKKyAgICAgICAg
bmV4dCA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudChudW1iZXJMZW5ndGggKyAxKTsK
KyAgICAgICAgaWYgKGlzQVNDSUlEaWdpdChuZXh0KSkgeworICAgICAgICAgICAgdHlwZSA9IE51
bWJlclZhbHVlVHlwZTsKKyAgICAgICAgICAgIG51bWJlckxlbmd0aCA9IG1faW5wdXQuc2tpcFdo
aWxlUHJlZGljYXRlPGlzQVNDSUlEaWdpdD4obnVtYmVyTGVuZ3RoICsgMSk7CisgICAgICAgIH0g
ZWxzZSBpZiAoKG5leHQgPT0gJysnIHx8IG5leHQgPT0gJy0nKSAmJiBpc0FTQ0lJRGlnaXQobV9p
bnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KG51bWJlckxlbmd0aCArIDIpKSkgeworICAgICAg
ICAgICAgdHlwZSA9IE51bWJlclZhbHVlVHlwZTsKKyAgICAgICAgICAgIG51bWJlckxlbmd0aCA9
IG1faW5wdXQuc2tpcFdoaWxlUHJlZGljYXRlPGlzQVNDSUlEaWdpdD4obnVtYmVyTGVuZ3RoICsg
Myk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBkb3VibGUgdmFsdWUgPSBtX2lucHV0LmdldERv
dWJsZSgwLCBudW1iZXJMZW5ndGgpOworICAgIG1faW5wdXQuYWR2YW5jZShudW1iZXJMZW5ndGgp
OworCisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKE51bWJlclRva2VuLCB2YWx1ZSwgdHlwZSwg
c2lnbik7Cit9CisKKy8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtc3ludGF4LyNjb25zdW1l
LWEtbnVtZXJpYy10b2tlbgorQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjb25zdW1lTnVt
ZXJpY1Rva2VuKCkKK3sKKyAgICBDU1NQYXJzZXJUb2tlbiB0b2tlbiA9IGNvbnN1bWVOdW1iZXIo
KTsKKyAgICBpZiAobmV4dENoYXJzQXJlSWRlbnRpZmllcigpKQorICAgICAgICB0b2tlbi5jb252
ZXJ0VG9EaW1lbnNpb25XaXRoVW5pdChjb25zdW1lTmFtZSgpKTsKKyAgICBlbHNlIGlmIChjb25z
dW1lSWZOZXh0KCclJykpCisgICAgICAgIHRva2VuLmNvbnZlcnRUb1BlcmNlbnRhZ2UoKTsKKyAg
ICByZXR1cm4gdG9rZW47Cit9CisKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1zeW50
YXgvI2NvbnN1bWUtaWRlbnQtbGlrZS10b2tlbgorQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVy
Ojpjb25zdW1lSWRlbnRMaWtlVG9rZW4oKQoreworICAgIFN0cmluZ1ZpZXcgbmFtZSA9IGNvbnN1
bWVOYW1lKCk7CisgICAgaWYgKGNvbnN1bWVJZk5leHQoJygnKSkgeworICAgICAgICBpZiAoZXF1
YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAidXJsIikpIHsKKyAgICAgICAgICAgIC8vIFRoZSBz
cGVjIGlzIHNsaWdodGx5IGRpZmZlcmVudCBzbyBhcyB0byBhdm9pZCBkcm9wcGluZyB3aGl0ZXNw
YWNlCisgICAgICAgICAgICAvLyB0b2tlbnMsIGJ1dCB0aGV5IHdvdWxkbid0IGJlIHVzZWQgYW5k
IHRoaXMgaXMgZWFzaWVyLgorICAgICAgICAgICAgbV9pbnB1dC5hZHZhbmNlVW50aWxOb25XaGl0
ZXNwYWNlKCk7CisgICAgICAgICAgICBVQ2hhciBuZXh0ID0gbV9pbnB1dC5wZWVrV2l0aG91dFJl
cGxhY2VtZW50KDApOworICAgICAgICAgICAgaWYgKG5leHQgIT0gJyInICYmIG5leHQgIT0gJ1wn
JykKKyAgICAgICAgICAgICAgICByZXR1cm4gY29uc3VtZVVybFRva2VuKCk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGJsb2NrU3RhcnQoTGVmdFBhcmVudGhlc2lzVG9rZW4sIEZ1bmN0aW9u
VG9rZW4sIG5hbWUpOworICAgIH0KKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oSWRlbnRUb2tl
biwgbmFtZSk7Cit9CisKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1zeW50YXgvI2Nv
bnN1bWUtYS1zdHJpbmctdG9rZW4KK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6Y29uc3Vt
ZVN0cmluZ1Rva2VuVW50aWwoVUNoYXIgZW5kaW5nQ29kZVBvaW50KQoreworICAgIC8vIFN0cmlu
Z3Mgd2l0aG91dCBlc2NhcGVzIGdldCBoYW5kbGVkIHdpdGhvdXQgYWxsb2NhdGlvbnMKKyAgICBm
b3IgKHVuc2lnbmVkIHNpemUgPSAwOyA7IHNpemUrKykgeworICAgICAgICBVQ2hhciBjYyA9IG1f
aW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudChzaXplKTsKKyAgICAgICAgaWYgKGNjID09IGVu
ZGluZ0NvZGVQb2ludCkgeworICAgICAgICAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBtX2lu
cHV0Lm9mZnNldCgpOworICAgICAgICAgICAgbV9pbnB1dC5hZHZhbmNlKHNpemUgKyAxKTsKKyAg
ICAgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihTdHJpbmdUb2tlbiwgbV9pbnB1dC5yYW5n
ZUF0KHN0YXJ0T2Zmc2V0LCBzaXplKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzTmV3TGlu
ZShjYykpIHsKKyAgICAgICAgICAgIG1faW5wdXQuYWR2YW5jZShzaXplKTsKKyAgICAgICAgICAg
IHJldHVybiBDU1NQYXJzZXJUb2tlbihCYWRTdHJpbmdUb2tlbik7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKGNjID09ICdcMCcgfHwgY2MgPT0gJ1xcJykKKyAgICAgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIFN0cmluZ0J1aWxkZXIgb3V0cHV0OworICAgIHdoaWxlICh0cnVlKSB7CisgICAg
ICAgIFVDaGFyIGNjID0gY29uc3VtZSgpOworICAgICAgICBpZiAoY2MgPT0gZW5kaW5nQ29kZVBv
aW50IHx8IGNjID09IGtFbmRPZkZpbGVNYXJrZXIpCisgICAgICAgICAgICByZXR1cm4gQ1NTUGFy
c2VyVG9rZW4oU3RyaW5nVG9rZW4sIHJlZ2lzdGVyU3RyaW5nKG91dHB1dC50b1N0cmluZygpKSk7
CisgICAgICAgIGlmIChpc05ld0xpbmUoY2MpKSB7CisgICAgICAgICAgICByZWNvbnN1bWUoY2Mp
OworICAgICAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKEJhZFN0cmluZ1Rva2VuKTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoY2MgPT0gJ1xcJykgeworICAgICAgICAgICAgaWYgKG1faW5w
dXQubmV4dElucHV0Q2hhcigpID09IGtFbmRPZkZpbGVNYXJrZXIpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICBpZiAoaXNOZXdMaW5lKG1faW5wdXQucGVla1dpdGhvdXRS
ZXBsYWNlbWVudCgwKSkpCisgICAgICAgICAgICAgICAgY29uc3VtZVNpbmdsZVdoaXRlc3BhY2VJ
Zk5leHQoKTsgLy8gVGhpcyBoYW5kbGVzIFxyXG4gZm9yIHVzCisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZChjb25zdW1lRXNjYXBlKCkpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoY2MpOworICAgIH0KK30KKworQ1NTUGFy
c2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjb25zdW1lVW5pY29kZVJhbmdlKCkKK3sKKyAgICBBU1NF
UlQoaXNBU0NJSUhleERpZ2l0KG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSkgfHwg
bV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApID09ICc/Jyk7CisgICAgaW50IGxlbmd0
aFJlbWFpbmluZyA9IDY7CisgICAgVUNoYXIzMiBzdGFydCA9IDA7CisKKyAgICB3aGlsZSAobGVu
Z3RoUmVtYWluaW5nICYmIGlzQVNDSUlIZXhEaWdpdChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFj
ZW1lbnQoMCkpKSB7CisgICAgICAgIHN0YXJ0ID0gc3RhcnQgKiAxNiArIHRvQVNDSUlIZXhWYWx1
ZShjb25zdW1lKCkpOworICAgICAgICAtLWxlbmd0aFJlbWFpbmluZzsKKyAgICB9CisKKyAgICBV
Q2hhcjMyIGVuZCA9IHN0YXJ0OworICAgIGlmIChsZW5ndGhSZW1haW5pbmcgJiYgY29uc3VtZUlm
TmV4dCgnPycpKSB7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIHN0YXJ0ICo9IDE2OworICAg
ICAgICAgICAgZW5kID0gZW5kICogMTYgKyAweEY7CisgICAgICAgICAgICAtLWxlbmd0aFJlbWFp
bmluZzsKKyAgICAgICAgfSB3aGlsZSAobGVuZ3RoUmVtYWluaW5nICYmIGNvbnN1bWVJZk5leHQo
Jz8nKSk7CisgICAgfSBlbHNlIGlmIChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkg
PT0gJy0nICYmIGlzQVNDSUlIZXhEaWdpdChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQo
MSkpKSB7CisgICAgICAgIG1faW5wdXQuYWR2YW5jZSgpOworICAgICAgICBsZW5ndGhSZW1haW5p
bmcgPSA2OworICAgICAgICBlbmQgPSAwOworICAgICAgICBkbyB7CisgICAgICAgICAgICBlbmQg
PSBlbmQgKiAxNiArIHRvQVNDSUlIZXhWYWx1ZShjb25zdW1lKCkpOworICAgICAgICAgICAgLS1s
ZW5ndGhSZW1haW5pbmc7CisgICAgICAgIH0gd2hpbGUgKGxlbmd0aFJlbWFpbmluZyAmJiBpc0FT
Q0lJSGV4RGlnaXQobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApKSk7CisgICAgfQor
CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKFVuaWNvZGVSYW5nZVRva2VuLCBzdGFydCwgZW5k
KTsKK30KKworLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXN5bnRheC8jbm9uLXByaW50
YWJsZS1jb2RlLXBvaW50CitzdGF0aWMgYm9vbCBpc05vblByaW50YWJsZUNvZGVQb2ludChVQ2hh
ciBjYykKK3sKKyAgICByZXR1cm4gY2MgPD0gJ1x4OCcgfHwgY2MgPT0gJ1x4YicgfHwgKGNjID49
ICdceGUnICYmIGNjIDw9ICdceDFmJykgfHwgY2MgPT0gJ1x4N2YnOworfQorCisvLyBodHRwOi8v
ZGV2LnczLm9yZy9jc3N3Zy9jc3Mtc3ludGF4LyNjb25zdW1lLXVybC10b2tlbgorQ1NTUGFyc2Vy
VG9rZW4gQ1NTVG9rZW5pemVyOjpjb25zdW1lVXJsVG9rZW4oKQoreworICAgIG1faW5wdXQuYWR2
YW5jZVVudGlsTm9uV2hpdGVzcGFjZSgpOworCisgICAgLy8gVVJMIHRva2VucyB3aXRob3V0IGVz
Y2FwZXMgZ2V0IGhhbmRsZWQgd2l0aG91dCBhbGxvY2F0aW9ucworICAgIGZvciAodW5zaWduZWQg
c2l6ZSA9IDA7IDsgc2l6ZSsrKSB7CisgICAgICAgIFVDaGFyIGNjID0gbV9pbnB1dC5wZWVrV2l0
aG91dFJlcGxhY2VtZW50KHNpemUpOworICAgICAgICBpZiAoY2MgPT0gJyknKSB7CisgICAgICAg
ICAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IG1faW5wdXQub2Zmc2V0KCk7CisgICAgICAgICAg
ICBtX2lucHV0LmFkdmFuY2Uoc2l6ZSArIDEpOworICAgICAgICAgICAgcmV0dXJuIENTU1BhcnNl
clRva2VuKFVybFRva2VuLCBtX2lucHV0LnJhbmdlQXQoc3RhcnRPZmZzZXQsIHNpemUpKTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoY2MgPD0gJyAnIHx8IGNjID09ICdcXCcgfHwgY2MgPT0gJyIn
IHx8IGNjID09ICdcJycgfHwgY2MgPT0gJygnIHx8IGNjID09ICdceDdmJykKKyAgICAgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgIHdoaWxlICh0
cnVlKSB7CisgICAgICAgIFVDaGFyIGNjID0gY29uc3VtZSgpOworICAgICAgICBpZiAoY2MgPT0g
JyknIHx8IGNjID09IGtFbmRPZkZpbGVNYXJrZXIpCisgICAgICAgICAgICByZXR1cm4gQ1NTUGFy
c2VyVG9rZW4oVXJsVG9rZW4sIHJlZ2lzdGVyU3RyaW5nKHJlc3VsdC50b1N0cmluZygpKSk7CisK
KyAgICAgICAgaWYgKGlzSFRNTFNwYWNlKGNjKSkgeworICAgICAgICAgICAgbV9pbnB1dC5hZHZh
bmNlVW50aWxOb25XaGl0ZXNwYWNlKCk7CisgICAgICAgICAgICBpZiAoY29uc3VtZUlmTmV4dCgn
KScpIHx8IG1faW5wdXQubmV4dElucHV0Q2hhcigpID09IGtFbmRPZkZpbGVNYXJrZXIpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKFVybFRva2VuLCByZWdpc3RlclN0cmlu
ZyhyZXN1bHQudG9TdHJpbmcoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoY2MgPT0gJyInIHx8IGNjID09ICdcJycgfHwgY2MgPT0gJygnIHx8IGlzTm9u
UHJpbnRhYmxlQ29kZVBvaW50KGNjKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlm
IChjYyA9PSAnXFwnKSB7CisgICAgICAgICAgICBpZiAodHdvQ2hhcnNBcmVWYWxpZEVzY2FwZShj
YywgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApKSkgeworICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoY29uc3VtZUVzY2FwZSgpKTsKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZChjYyk7CisgICAgfQorCisgICAgY29uc3VtZUJhZFVybFJlbW5hbnRz
KCk7CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKEJhZFVybFRva2VuKTsKK30KKworLy8gaHR0
cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXN5bnRheC8jY29uc3VtZS10aGUtcmVtbmFudHMtb2Yt
YS1iYWQtdXJsCit2b2lkIENTU1Rva2VuaXplcjo6Y29uc3VtZUJhZFVybFJlbW5hbnRzKCkKK3sK
KyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBVQ2hhciBjYyA9IGNvbnN1bWUoKTsKKyAgICAg
ICAgaWYgKGNjID09ICcpJyB8fCBjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBpZiAodHdvQ2hhcnNBcmVWYWxpZEVzY2FwZShjYywgbV9pbnB1dC5w
ZWVrV2l0aG91dFJlcGxhY2VtZW50KDApKSkKKyAgICAgICAgICAgIGNvbnN1bWVFc2NhcGUoKTsK
KyAgICB9Cit9CisKK3ZvaWQgQ1NTVG9rZW5pemVyOjpjb25zdW1lU2luZ2xlV2hpdGVzcGFjZUlm
TmV4dCgpCit7CisgICAgLy8gV2UgY2hlY2sgZm9yIFxyXG4gYW5kIEhUTUwgc3BhY2VzIHNpbmNl
IHdlIGRvbid0IGRvIHByZXByb2Nlc3NpbmcKKyAgICBVQ2hhciBuZXh0ID0gbV9pbnB1dC5wZWVr
V2l0aG91dFJlcGxhY2VtZW50KDApOworICAgIGlmIChuZXh0ID09ICdccicgJiYgbV9pbnB1dC5w
ZWVrV2l0aG91dFJlcGxhY2VtZW50KDEpID09ICdcbicpCisgICAgICAgIG1faW5wdXQuYWR2YW5j
ZSgyKTsKKyAgICBlbHNlIGlmIChpc0hUTUxTcGFjZShuZXh0KSkKKyAgICAgICAgbV9pbnB1dC5h
ZHZhbmNlKCk7Cit9CisKK3ZvaWQgQ1NTVG9rZW5pemVyOjpjb25zdW1lVW50aWxDb21tZW50RW5k
Rm91bmQoKQoreworICAgIFVDaGFyIGMgPSBjb25zdW1lKCk7CisgICAgd2hpbGUgKHRydWUpIHsK
KyAgICAgICAgaWYgKGMgPT0ga0VuZE9mRmlsZU1hcmtlcikKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgaWYgKGMgIT0gJyonKSB7CisgICAgICAgICAgICBjID0gY29uc3VtZSgpOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgYyA9IGNvbnN1bWUoKTsKKyAg
ICAgICAgaWYgKGMgPT0gJy8nKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworYm9v
bCBDU1NUb2tlbml6ZXI6OmNvbnN1bWVJZk5leHQoVUNoYXIgY2hhcmFjdGVyKQoreworICAgIC8v
IFNpbmNlIHdlJ3JlIG5vdCBkb2luZyByZXBsYWNlbWVudCB3ZSBjYW4ndCB0ZWxsIHRoZSBkaWZm
ZXJlbmNlIGZyb20KKyAgICAvLyBhIE5VTCBpbiB0aGUgbWlkZGxlIGFuZCB0aGUga0VuZE9mRmls
ZU1hcmtlciwgc28gY2hhcmFjdGVyIG11c3Qgbm90IGJlCisgICAgLy8gTlVMLgorICAgIEFTU0VS
VChjaGFyYWN0ZXIpOworICAgIGlmIChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkg
PT0gY2hhcmFjdGVyKSB7CisgICAgICAgIG1faW5wdXQuYWR2YW5jZSgpOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCisvLyBodHRwOi8vd3d3Lncz
Lm9yZy9UUi9jc3MzLXN5bnRheC8jY29uc3VtZS1hLW5hbWUKK1N0cmluZ1ZpZXcgQ1NTVG9rZW5p
emVyOjpjb25zdW1lTmFtZSgpCit7CisgICAgLy8gTmFtZXMgd2l0aG91dCBlc2NhcGVzIGdldCBo
YW5kbGVkIHdpdGhvdXQgYWxsb2NhdGlvbnMKKyAgICBmb3IgKHVuc2lnbmVkIHNpemUgPSAwOyA7
ICsrc2l6ZSkgeworICAgICAgICBVQ2hhciBjYyA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNl
bWVudChzaXplKTsKKyAgICAgICAgaWYgKGlzTmFtZUNvZGVQb2ludChjYykpCisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgLy8gcGVla1dpdGhvdXRSZXBsYWNlbWVudCB3aWxsIHJldHVy
biBOVUwgd2hlbiB3ZSBoaXQgdGhlIGVuZCBvZiB0aGUKKyAgICAgICAgLy8gaW5wdXQuIEluIHRo
YXQgY2FzZSB3ZSB3YW50IHRvIHN0aWxsIHVzZSB0aGUgcmFuZ2VBdCgpIGZhc3QgcGF0aAorICAg
ICAgICAvLyBiZWxvdy4KKyAgICAgICAgaWYgKGNjID09ICdcMCcgJiYgbV9pbnB1dC5vZmZzZXQo
KSArIHNpemUgPCBtX2lucHV0Lmxlbmd0aCgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGlmIChjYyA9PSAnXFwnKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0ID0gbV9pbnB1dC5vZmZzZXQoKTsKKyAgICAgICAgbV9pbnB1dC5hZHZhbmNlKHNp
emUpOworICAgICAgICByZXR1cm4gbV9pbnB1dC5yYW5nZUF0KHN0YXJ0T2Zmc2V0LCBzaXplKTsK
KyAgICB9CisKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKKyAgICB3aGlsZSAodHJ1ZSkgewor
ICAgICAgICBVQ2hhciBjYyA9IGNvbnN1bWUoKTsKKyAgICAgICAgaWYgKGlzTmFtZUNvZGVQb2lu
dChjYykpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2MpOworICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHR3b0NoYXJzQXJlVmFsaWRFc2NhcGUoY2Ms
IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSkpIHsKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoY29uc3VtZUVzY2FwZSgpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisgICAgICAgIHJlY29uc3VtZShjYyk7CisgICAgICAgIHJldHVybiByZWdpc3RlclN0cmlu
ZyhyZXN1bHQudG9TdHJpbmcoKSk7CisgICAgfQorfQorCisvLyBodHRwOi8vZGV2LnczLm9yZy9j
c3N3Zy9jc3Mtc3ludGF4LyNjb25zdW1lLWFuLWVzY2FwZWQtY29kZS1wb2ludAorVUNoYXIzMiBD
U1NUb2tlbml6ZXI6OmNvbnN1bWVFc2NhcGUoKQoreworICAgIFVDaGFyIGNjID0gY29uc3VtZSgp
OworICAgIEFTU0VSVCghaXNOZXdMaW5lKGNjKSk7CisgICAgaWYgKGlzQVNDSUlIZXhEaWdpdChj
YykpIHsKKyAgICAgICAgdW5zaWduZWQgY29uc3VtZWRIZXhEaWdpdHMgPSAxOworICAgICAgICBT
dHJpbmdCdWlsZGVyIGhleENoYXJzOworICAgICAgICBoZXhDaGFycy5hcHBlbmQoY2MpOworICAg
ICAgICB3aGlsZSAoY29uc3VtZWRIZXhEaWdpdHMgPCA2ICYmIGlzQVNDSUlIZXhEaWdpdChtX2lu
cHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkpKSB7CisgICAgICAgICAgICBjYyA9IGNvbnN1
bWUoKTsKKyAgICAgICAgICAgIGhleENoYXJzLmFwcGVuZChjYyk7CisgICAgICAgICAgICBjb25z
dW1lZEhleERpZ2l0cysrOworICAgICAgICB9OworICAgICAgICBjb25zdW1lU2luZ2xlV2hpdGVz
cGFjZUlmTmV4dCgpOworICAgICAgICBib29sIG9rID0gZmFsc2U7CisgICAgICAgIFVDaGFyMzIg
Y29kZVBvaW50ID0gaGV4Q2hhcnMudG9TdHJpbmcoKS50b1VJbnRTdHJpY3QoJm9rLCAxNik7Cisg
ICAgICAgIEFTU0VSVChvayk7CisgICAgICAgIGlmICghY29kZVBvaW50IHx8ICgweEQ4MDAgPD0g
Y29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweERGRkYpIHx8IGNvZGVQb2ludCA+IDB4MTBGRkZG
KQorICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VtZW50Q2hhcmFjdGVyOworICAgICAgICByZXR1
cm4gY29kZVBvaW50OworICAgIH0KKworICAgIGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKQor
ICAgICAgICByZXR1cm4gcmVwbGFjZW1lbnRDaGFyYWN0ZXI7CisgICAgcmV0dXJuIGNjOworfQor
Citib29sIENTU1Rva2VuaXplcjo6bmV4dFR3b0NoYXJzQXJlVmFsaWRFc2NhcGUoKQoreworICAg
IHJldHVybiB0d29DaGFyc0FyZVZhbGlkRXNjYXBlKG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNl
bWVudCgwKSwgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDEpKTsKK30KKworLy8gaHR0
cDovL3d3dy53My5vcmcvVFIvY3NzMy1zeW50YXgvI3N0YXJ0cy13aXRoLWEtbnVtYmVyCitib29s
IENTU1Rva2VuaXplcjo6bmV4dENoYXJzQXJlTnVtYmVyKFVDaGFyIGZpcnN0KQoreworICAgIFVD
aGFyIHNlY29uZCA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKTsKKyAgICBpZiAo
aXNBU0NJSURpZ2l0KGZpcnN0KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGZpcnN0
ID09ICcrJyB8fCBmaXJzdCA9PSAnLScpCisgICAgICAgIHJldHVybiAoKGlzQVNDSUlEaWdpdChz
ZWNvbmQpKSB8fCAoc2Vjb25kID09ICcuJyAmJiBpc0FTQ0lJRGlnaXQobV9pbnB1dC5wZWVrV2l0
aG91dFJlcGxhY2VtZW50KDEpKSkpOworICAgIGlmIChmaXJzdCA9PScuJykKKyAgICAgICAgcmV0
dXJuIChpc0FTQ0lJRGlnaXQoc2Vjb25kKSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IENTU1Rva2VuaXplcjo6bmV4dENoYXJzQXJlTnVtYmVyKCkKK3sKKyAgICBVQ2hhciBmaXJzdCA9
IGNvbnN1bWUoKTsKKyAgICBib29sIGFyZU51bWJlciA9IG5leHRDaGFyc0FyZU51bWJlcihmaXJz
dCk7CisgICAgcmVjb25zdW1lKGZpcnN0KTsKKyAgICByZXR1cm4gYXJlTnVtYmVyOworfQorCisv
LyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3Mtc3ludGF4LyN3b3VsZC1zdGFydC1hbi1pZGVu
dGlmaWVyCitib29sIENTU1Rva2VuaXplcjo6bmV4dENoYXJzQXJlSWRlbnRpZmllcihVQ2hhciBm
aXJzdCkKK3sKKyAgICBVQ2hhciBzZWNvbmQgPSBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1l
bnQoMCk7CisgICAgaWYgKGlzTmFtZVN0YXJ0Q29kZVBvaW50KGZpcnN0KSB8fCB0d29DaGFyc0Fy
ZVZhbGlkRXNjYXBlKGZpcnN0LCBzZWNvbmQpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IGlmIChmaXJzdCA9PSAnLScpCisgICAgICAgIHJldHVybiBpc05hbWVTdGFydENvZGVQb2ludChz
ZWNvbmQpIHx8IHNlY29uZCA9PSAnLScgfHwgbmV4dFR3b0NoYXJzQXJlVmFsaWRFc2NhcGUoKTsK
KworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBDU1NUb2tlbml6ZXI6Om5leHRDaGFyc0Fy
ZUlkZW50aWZpZXIoKQoreworICAgIFVDaGFyIGZpcnN0ID0gY29uc3VtZSgpOworICAgIGJvb2wg
YXJlSWRlbnRpZmllciA9IG5leHRDaGFyc0FyZUlkZW50aWZpZXIoZmlyc3QpOworICAgIHJlY29u
c3VtZShmaXJzdCk7CisgICAgcmV0dXJuIGFyZUlkZW50aWZpZXI7Cit9CisKK1N0cmluZ1ZpZXcg
Q1NTVG9rZW5pemVyOjpyZWdpc3RlclN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAg
ICBtX3Njb3BlLnN0b3JlU3RyaW5nKHN0cmluZyk7CisgICAgcmV0dXJuIHN0cmluZzsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NUb2tlbml6ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1Rva2VuaXplci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTVG9rZW5pemVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzkgQEAKKy8vIENvcHly
aWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8K
Ky8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJp
YnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZuZGVmIENTU1Rva2Vu
aXplcl9oCisjZGVmaW5lIENTU1Rva2VuaXplcl9oCisKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tl
bi5oIgorI2luY2x1ZGUgIklucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmgiCisjaW5jbHVkZSA8Y2xp
bWl0cz4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTVG9rZW5p
emVySW5wdXRTdHJlYW07CitjbGFzcyBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI7CitjbGFzcyBD
U1NQYXJzZXJUb2tlblJhbmdlOworCitjbGFzcyBDU1NUb2tlbml6ZXIgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENTU1Rva2VuaXplcik7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgY2xhc3MgU2NvcGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgU2NvcGUo
Y29uc3QgU3RyaW5nJik7CisgICAgICAgIFNjb3BlKGNvbnN0IFN0cmluZyYsIENTU1BhcnNlck9i
c2VydmVyV3JhcHBlciYpOyAvLyBGb3IgdGhlIGluc3BlY3RvcgorCisgICAgICAgIENTU1BhcnNl
clRva2VuUmFuZ2UgdG9rZW5SYW5nZSgpOworICAgICAgICB1bnNpZ25lZCB0b2tlbkNvdW50KCk7
CisKKyAgICBwcml2YXRlOgorICAgICAgICB2b2lkIHN0b3JlU3RyaW5nKGNvbnN0IFN0cmluZyYg
c3RyaW5nKSB7IG1fc3RyaW5nUG9vbC5hcHBlbmQoc3RyaW5nKTsgfQorICAgICAgICBWZWN0b3I8
Q1NTUGFyc2VyVG9rZW4sIDMyPiBtX3Rva2VuczsKKyAgICAgICAgLy8gV2Ugb25seSBhbGxvY2F0
ZSBzdHJpbmdzIHdoZW4gZXNjYXBlcyBhcmUgdXNlZC4KKyAgICAgICAgVmVjdG9yPFN0cmluZz4g
bV9zdHJpbmdQb29sOworICAgICAgICBTdHJpbmcgbV9zdHJpbmc7CisKKyAgICAgICAgZnJpZW5k
IGNsYXNzIENTU1Rva2VuaXplcjsKKyAgICB9OworCitwcml2YXRlOgorICAgIENTU1Rva2VuaXpl
cihDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbSYsIFNjb3BlJik7CisKKyAgICBDU1NQYXJzZXJUb2tl
biBuZXh0VG9rZW4oKTsKKworICAgIFVDaGFyIGNvbnN1bWUoKTsKKyAgICB2b2lkIHJlY29uc3Vt
ZShVQ2hhcik7CisKKyAgICBDU1NQYXJzZXJUb2tlbiBjb25zdW1lTnVtZXJpY1Rva2VuKCk7Cisg
ICAgQ1NTUGFyc2VyVG9rZW4gY29uc3VtZUlkZW50TGlrZVRva2VuKCk7CisgICAgQ1NTUGFyc2Vy
VG9rZW4gY29uc3VtZU51bWJlcigpOworICAgIENTU1BhcnNlclRva2VuIGNvbnN1bWVTdHJpbmdU
b2tlblVudGlsKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBjb25zdW1lVW5pY29kZVJhbmdl
KCk7CisgICAgQ1NTUGFyc2VyVG9rZW4gY29uc3VtZVVybFRva2VuKCk7CisKKyAgICB2b2lkIGNv
bnN1bWVCYWRVcmxSZW1uYW50cygpOworICAgIHZvaWQgY29uc3VtZVNpbmdsZVdoaXRlc3BhY2VJ
Zk5leHQoKTsKKyAgICB2b2lkIGNvbnN1bWVVbnRpbENvbW1lbnRFbmRGb3VuZCgpOworCisgICAg
Ym9vbCBjb25zdW1lSWZOZXh0KFVDaGFyKTsKKyAgICBTdHJpbmdWaWV3IGNvbnN1bWVOYW1lKCk7
CisgICAgVUNoYXIzMiBjb25zdW1lRXNjYXBlKCk7CisKKyAgICBib29sIG5leHRUd29DaGFyc0Fy
ZVZhbGlkRXNjYXBlKCk7CisgICAgYm9vbCBuZXh0Q2hhcnNBcmVOdW1iZXIoVUNoYXIpOworICAg
IGJvb2wgbmV4dENoYXJzQXJlTnVtYmVyKCk7CisgICAgYm9vbCBuZXh0Q2hhcnNBcmVJZGVudGlm
aWVyKFVDaGFyKTsKKyAgICBib29sIG5leHRDaGFyc0FyZUlkZW50aWZpZXIoKTsKKworICAgIENT
U1BhcnNlclRva2VuIGJsb2NrU3RhcnQoQ1NTUGFyc2VyVG9rZW5UeXBlKTsKKyAgICBDU1NQYXJz
ZXJUb2tlbiBibG9ja1N0YXJ0KENTU1BhcnNlclRva2VuVHlwZSBibG9ja1R5cGUsIENTU1BhcnNl
clRva2VuVHlwZSwgU3RyaW5nVmlldyk7CisgICAgQ1NTUGFyc2VyVG9rZW4gYmxvY2tFbmQoQ1NT
UGFyc2VyVG9rZW5UeXBlLCBDU1NQYXJzZXJUb2tlblR5cGUgc3RhcnRUeXBlKTsKKworICAgIENT
U1BhcnNlclRva2VuIHdoaXRlU3BhY2UoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIGxlZnRQ
YXJlbnRoZXNpcyhVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gcmlnaHRQYXJlbnRoZXNpcyhV
Q2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gbGVmdEJyYWNrZXQoVUNoYXIpOworICAgIENTU1Bh
cnNlclRva2VuIHJpZ2h0QnJhY2tldChVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gbGVmdEJy
YWNlKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiByaWdodEJyYWNlKFVDaGFyKTsKKyAgICBD
U1NQYXJzZXJUb2tlbiBwbHVzT3JGdWxsU3RvcChVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4g
Y29tbWEoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIGh5cGhlbk1pbnVzKFVDaGFyKTsKKyAg
ICBDU1NQYXJzZXJUb2tlbiBhc3RlcmlzayhVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gbGVz
c1RoYW4oVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIHNvbGlkdXMoVUNoYXIpOworICAgIENT
U1BhcnNlclRva2VuIGNvbG9uKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBzZW1pQ29sb24o
VUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIGhhc2goVUNoYXIpOworICAgIENTU1BhcnNlclRv
a2VuIGNpcmN1bWZsZXhBY2NlbnQoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIGRvbGxhclNp
Z24oVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIHZlcnRpY2FsTGluZShVQ2hhcik7CisgICAg
Q1NTUGFyc2VyVG9rZW4gdGlsZGUoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIGNvbW1lcmNp
YWxBdChVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gcmV2ZXJzZVNvbGlkdXMoVUNoYXIpOwor
ICAgIENTU1BhcnNlclRva2VuIGFzY2lpRGlnaXQoVUNoYXIpOworICAgIENTU1BhcnNlclRva2Vu
IGxldHRlclUoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIG5hbWVTdGFydChVQ2hhcik7Cisg
ICAgQ1NTUGFyc2VyVG9rZW4gc3RyaW5nU3RhcnQoVUNoYXIpOworICAgIENTU1BhcnNlclRva2Vu
IGVuZE9mRmlsZShVQ2hhcik7CisKKyAgICBTdHJpbmdWaWV3IHJlZ2lzdGVyU3RyaW5nKGNvbnN0
IFN0cmluZyYpOworCisgICAgdXNpbmcgQ29kZVBvaW50ID0gQ1NTUGFyc2VyVG9rZW4gKENTU1Rv
a2VuaXplcjo6KikoVUNoYXIpOworICAgIHN0YXRpYyBjb25zdCBDb2RlUG9pbnQgY29kZVBvaW50
c1tdOworCisgICAgVmVjdG9yPENTU1BhcnNlclRva2VuVHlwZSwgOD4gbV9ibG9ja1N0YWNrOwor
ICAgIENTU1Rva2VuaXplcklucHV0U3RyZWFtJiBtX2lucHV0OworICAgIFNjb3BlJiBtX3Njb3Bl
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ1NTVG9rZW5pemVy
X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRTdHJl
YW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5p
emVySW5wdXRTdHJlYW0uY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNzIgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0
OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
Ly8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisv
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0u
aCIKKworI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbTo6Q1NTVG9rZW5pemVySW5wdXRTdHJlYW0oU3Ry
aW5nIGlucHV0KQorICAgIDogbV9vZmZzZXQoMCkKKyAgICAsIG1fc3RyaW5nTGVuZ3RoKGlucHV0
Lmxlbmd0aCgpKQorICAgICwgbV9zdHJpbmcoaW5wdXQuaW1wbCgpKQoreworfQorCit2b2lkIENT
U1Rva2VuaXplcklucHV0U3RyZWFtOjphZHZhbmNlVW50aWxOb25XaGl0ZXNwYWNlKCkKK3sKKyAg
ICAvLyBVc2luZyBIVE1MIHNwYWNlIGhlcmUgcmF0aGVyIHRoYW4gQ1NTIHNwYWNlIHNpbmNlIHdl
IGRvbid0IGRvIHByZXByb2Nlc3NpbmcKKyAgICBpZiAobV9zdHJpbmctPmlzOEJpdCgpKSB7Cisg
ICAgICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzID0gbV9zdHJpbmctPmNoYXJhY3RlcnM4KCk7
CisgICAgICAgIHdoaWxlIChtX29mZnNldCA8IG1fc3RyaW5nTGVuZ3RoICYmIGlzSFRNTFNwYWNl
KGNoYXJhY3RlcnNbbV9vZmZzZXRdKSkKKyAgICAgICAgICAgICsrbV9vZmZzZXQ7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBtX3N0cmluZy0+Y2hhcmFj
dGVyczE2KCk7CisgICAgICAgIHdoaWxlIChtX29mZnNldCA8IG1fc3RyaW5nTGVuZ3RoICYmIGlz
SFRNTFNwYWNlKGNoYXJhY3RlcnNbbV9vZmZzZXRdKSkKKyAgICAgICAgICAgICsrbV9vZmZzZXQ7
CisgICAgfQorfQorCitkb3VibGUgQ1NTVG9rZW5pemVySW5wdXRTdHJlYW06OmdldERvdWJsZSh1
bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kKSBjb25zdAoreworICAgIEFTU0VSVChzdGFydCA8
PSBlbmQgJiYgKChtX29mZnNldCArIGVuZCkgPD0gbV9zdHJpbmdMZW5ndGgpKTsKKyAgICBib29s
IGlzUmVzdWx0T0sgPSBmYWxzZTsKKyAgICBkb3VibGUgcmVzdWx0ID0gMC4wOworICAgIGlmIChz
dGFydCA8IGVuZCkgeworICAgICAgICBpZiAobV9zdHJpbmctPmlzOEJpdCgpKQorICAgICAgICAg
ICAgcmVzdWx0ID0gY2hhcmFjdGVyc1RvRG91YmxlKG1fc3RyaW5nLT5jaGFyYWN0ZXJzOCgpICsg
bV9vZmZzZXQgKyBzdGFydCwgZW5kIC0gc3RhcnQsICZpc1Jlc3VsdE9LKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcmVzdWx0ID0gY2hhcmFjdGVyc1RvRG91YmxlKG1fc3RyaW5nLT5jaGFy
YWN0ZXJzMTYoKSArIG1fb2Zmc2V0ICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCAmaXNSZXN1bHRPSyk7
CisgICAgfQorICAgIC8vIEZJWE1FOiBJdCBsb29rcyBsaWtlIGNhbGxlcnMgZW5zdXJlIHdlIGhh
dmUgYSB2YWxpZCBudW1iZXIKKyAgICByZXR1cm4gaXNSZXN1bHRPSyA/IHJlc3VsdCA6IDAuMDsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDkgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJv
bWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZuZGVmIENTU1Rva2VuaXplcklucHV0U3RyZWFtX2gK
KyNkZWZpbmUgQ1NTVG9rZW5pemVySW5wdXRTdHJlYW1faAorCisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nVmlldy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1Rva2VuaXplcklucHV0U3RyZWFtIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbSk7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQ1NTVG9rZW5pemVySW5wdXRT
dHJlYW0oU3RyaW5nIGlucHV0KTsKKworICAgIC8vIEdldHMgdGhlIGNoYXIgaW4gdGhlIHN0cmVh
bSByZXBsYWNpbmcgTlVMIGNoYXJhY3RlcnMgd2l0aCBhIHVuaWNvZGUKKyAgICAvLyByZXBsYWNl
bWVudCBjaGFyYWN0ZXIuIFdpbGwgcmV0dXJuIChOVUwpIGtFbmRPZkZpbGVNYXJrZXIgd2hlbiBh
dCB0aGUKKyAgICAvLyBlbmQgb2YgdGhlIHN0cmVhbS4KKyAgICBVQ2hhciBuZXh0SW5wdXRDaGFy
KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX29mZnNldCA+PSBtX3N0cmluZ0xlbmd0aCkK
KyAgICAgICAgICAgIHJldHVybiAnXDAnOworICAgICAgICBVQ2hhciByZXN1bHQgPSAoKm1fc3Ry
aW5nKVttX29mZnNldF07CisgICAgICAgIHJldHVybiByZXN1bHQgPyByZXN1bHQgOiAweEZGRkQ7
CisgICAgfQorCisgICAgLy8gR2V0cyB0aGUgY2hhciBhdCBsb29rYWhlYWRPZmZzZXQgZnJvbSB0
aGUgY3VycmVudCBzdHJlYW0gcG9zaXRpb24uIFdpbGwKKyAgICAvLyByZXR1cm4gTlVMIChrRW5k
T2ZGaWxlTWFya2VyKSBpZiB0aGUgc3RyZWFtIHBvc2l0aW9uIGlzIGF0IHRoZSBlbmQuCisgICAg
Ly8gTk9URTogVGhpcyBtYXkgKmFsc28qIHJldHVybiBOVUwgaWYgdGhlcmUncyBvbmUgaW4gdGhl
IGlucHV0ISBOZXZlcgorICAgIC8vIGNvbXBhcmUgdGhlIHJldHVybiB2YWx1ZSB0byAnXDAnLgor
ICAgIFVDaGFyIHBlZWtXaXRob3V0UmVwbGFjZW1lbnQodW5zaWduZWQgbG9va2FoZWFkT2Zmc2V0
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKChtX29mZnNldCArIGxvb2thaGVhZE9mZnNldCkg
Pj0gbV9zdHJpbmdMZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gJ1wwJzsKKyAgICAgICAgcmV0
dXJuICgqbV9zdHJpbmcpW21fb2Zmc2V0ICsgbG9va2FoZWFkT2Zmc2V0XTsKKyAgICB9CisKKyAg
ICB2b2lkIGFkdmFuY2UodW5zaWduZWQgb2Zmc2V0ID0gMSkgeyBtX29mZnNldCArPSBvZmZzZXQ7
IH0KKyAgICB2b2lkIHB1c2hCYWNrKFVDaGFyIGNjKQorICAgIHsKKyAgICAgICAgLS1tX29mZnNl
dDsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjYywgbmV4dElucHV0Q2hhcigpID09IGNjKTsKKyAg
ICB9CisKKyAgICBkb3VibGUgZ2V0RG91YmxlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQp
IGNvbnN0OworCisgICAgdGVtcGxhdGU8Ym9vbCBjaGFyYWN0ZXJQcmVkaWNhdGUoVUNoYXIpPgor
ICAgIHVuc2lnbmVkIHNraXBXaGlsZVByZWRpY2F0ZSh1bnNpZ25lZCBvZmZzZXQpCisgICAgewor
ICAgICAgICBpZiAobV9zdHJpbmctPmlzOEJpdCgpKSB7CisgICAgICAgICAgICBjb25zdCBMQ2hh
ciogY2hhcmFjdGVyczggPSBtX3N0cmluZy0+Y2hhcmFjdGVyczgoKTsKKyAgICAgICAgICAgIHdo
aWxlICgobV9vZmZzZXQgKyBvZmZzZXQpIDwgbV9zdHJpbmdMZW5ndGggJiYgY2hhcmFjdGVyUHJl
ZGljYXRlKGNoYXJhY3RlcnM4W21fb2Zmc2V0ICsgb2Zmc2V0XSkpCisgICAgICAgICAgICAgICAg
KytvZmZzZXQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25zdCBVQ2hhciogY2hh
cmFjdGVyczE2ID0gbV9zdHJpbmctPmNoYXJhY3RlcnMxNigpOworICAgICAgICAgICAgd2hpbGUg
KChtX29mZnNldCArIG9mZnNldCkgPCBtX3N0cmluZ0xlbmd0aCAmJiBjaGFyYWN0ZXJQcmVkaWNh
dGUoY2hhcmFjdGVyczE2W21fb2Zmc2V0ICsgb2Zmc2V0XSkpCisgICAgICAgICAgICAgICAgKytv
ZmZzZXQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG9mZnNldDsKKyAgICB9CisKKyAgICB2
b2lkIGFkdmFuY2VVbnRpbE5vbldoaXRlc3BhY2UoKTsKKworICAgIHVuc2lnbmVkIGxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nTGVuZ3RoOyB9CisgICAgdW5zaWduZWQgb2Zmc2V0KCkg
Y29uc3QgeyByZXR1cm4gc3RkOjptaW4obV9vZmZzZXQsIG1fc3RyaW5nTGVuZ3RoKTsgfQorCisg
ICAgU3RyaW5nVmlldyByYW5nZUF0KHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQoc3RhcnQgKyBsZW5ndGggPD0gbV9zdHJpbmdMZW5n
dGgpOworICAgICAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZy5nZXQoKSkuc3Vic3RyaW5n
KHN0YXJ0LCBsZW5ndGgpOyAvLyBGSVhNRTogU2hvdWxkIG1ha2UgYSBjb25zdHJ1Y3RvciBvbiBT
dHJpbmdWaWV3IGZvciB0aGlzLgorICAgIH0KKworcHJpdmF0ZToKKyAgICBzaXplX3QgbV9vZmZz
ZXQ7CisgICAgY29uc3Qgc2l6ZV90IG1fc3RyaW5nTGVuZ3RoOworICAgIGNvbnN0IFJlZlB0cjxT
dHJpbmdJbXBsPiBtX3N0cmluZzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIENTU1Rva2VuaXplcklucHV0U3RyZWFtX2gKKwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGVuZ3RoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGVuZ3RoLmgJKHJldmlzaW9uIDIwNDk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xl
bmd0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCwxMSBAQCBlbnVtIExlbmd0aFR5cGUg
ewogICAgIFVuZGVmaW5lZAogfTsKIAorZW51bSBWYWx1ZVJhbmdlIHsKKyAgICBWYWx1ZVJhbmdl
QWxsLAorICAgIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZQorfTsKKwogY2xhc3MgQ2FsY3VsYXRpb25W
YWx1ZTsKIGNsYXNzIFRleHRTdHJlYW07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287046</attachid>
            <date>2016-08-25 16:54:51 -0700</date>
            <delta_ts>2016-08-25 16:56:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>454059</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3NyBAQAorMjAxNi0wOC0yNCAgRGF2ZSBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBJbml0aWFsIGxhbmRpbmcgb2YgQ1NT
IFBhcnNlciBUb2tlbml6YXRpb24gKGFuZCBmaWxlcyB0byBzdXBwb3J0IHRoYXQpLiBOb3QgdXNl
ZCB5ZXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjExNzQKKworICAgICAgICBUaGlzIGNvZGUgaXMgaW1wb3J0ZWQgZnJvbSBCbGluayBhbmQgaXMg
dGhlaXIgQ1NTIHBhcnNlciAobW9kaWZpZWQgdG8gd29yayBpbiBXZWJLaXQpLgorICAgICAgICBJ
dCBpcyBmcm9tIGNvbW1pdCBlNGJiOTBkZjdmMmVkOGE2Mzk3NWI1ZWQyN2ExYjQ4OGNiOWIxNDZm
LCBNb24gQXVnIDIyIDIwMTYuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL0NTU01hcmt1cC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6aXNDU1NUb2tlbml6ZXJJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OnNlcmlhbGl6ZUNoYXJhY3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVD
aGFyYWN0ZXJBc0NvZGVQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZVN0cmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpzZXJpYWxpemVVUkkpOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplRm9udEZhbWls
eSk6CisgICAgICAgICogY3NzL0NTU01hcmt1cC5oOiBBZGRlZC4KKyAgICAgICAgKiBjc3MvQ1NT
T01VdGlscy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogY3NzL0NTU09NVXRpbHMuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAqIGNzcy9wYXJzZXIv
Q1NTUGFyc2VyRmFzdFBhdGhzLmNwcDogQWRkZWQuCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQ
YXJzZXJGYXN0UGF0aHMuaDogQWRkZWQuCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJ
ZGlvbXMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjppc0NTU1NwYWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OmlzTmFtZVN0YXJ0Q29kZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OmlzTmFt
ZUNvZGVQb2ludCk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlck9ic2VydmVyOjp+Q1NTUGFyc2VyT2Jz
ZXJ2ZXIpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OnN0
YXJ0T2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlck9ic2VydmVyV3JhcHBlcjo6
cHJldmlvdXNUb2tlblN0YXJ0T2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlck9i
c2VydmVyV3JhcHBlcjo6ZW5kT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlck9i
c2VydmVyV3JhcHBlcjo6c2tpcENvbW1lbnRzQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlck9ic2VydmVyV3JhcHBlcjo6eWllbGRDb21tZW50c0JlZm9yZSk6CisgICAgICAgICog
Y3NzL3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OkNTU1BhcnNlck9ic2VydmVyV3JhcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6Om9ic2VydmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlck9ic2VydmVyV3JhcHBlcjo6YWRkQ29tbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OmFkZFRva2Vu
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlck9ic2VydmVyV3JhcHBlcjo6ZmluYWxpemVD
b25zdHJ1Y3Rpb24pOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW4uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNzc1ByaW1pdGl2ZVZhbHVlVW5pdEZyb21UcmllKToK
KyAgICAgICAgKFdlYkNvcmU6OnN0cmluZ1RvVW5pdFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyVG9rZW46OkNTU1BhcnNlclRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlclRva2VuOjpjb252ZXJ0VG9EaW1lbnNpb25XaXRoVW5pdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXJUb2tlbjo6Y29udmVydFRvUGVyY2VudGFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXJUb2tlbjo6ZGVsaW1pdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clRva2VuOjpudW1lcmljU2lnbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6
bnVtZXJpY1ZhbHVlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6bnVt
ZXJpY1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpwYXJzZUFzVW5y
ZXNvbHZlZENTU1Byb3BlcnR5SUQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46
OmlkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpmdW5jdGlvbklkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpoYXNTdHJpbmdCYWNraW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpjb3B5V2l0aFVwZGF0ZWRTdHJpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OnZhbHVlRGF0YUNoYXJSYXdFcXVhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6c2VyaWFsaXplKToKKyAgICAgICAgKiBjc3MvcGFyc2Vy
L0NTU1BhcnNlclRva2VuLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9r
ZW46Om9wZXJhdG9yIT0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OnR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OnZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlclRva2VuOjpnZXRIYXNoVG9rZW5UeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlclRva2VuOjpnZXRCbG9ja1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyVG9rZW46OnVuaXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2Vu
Ojp1bmljb2RlUmFuZ2VTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlbjo6
dW5pY29kZVJhbmdlRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjppbml0
VmFsdWVGcm9tU3RyaW5nVmlldyk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tl
blJhbmdlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlblJhbmdl
Ojplb2ZUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlblJhbmdlOjptYWtl
U3ViUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6Y29uc3Vt
ZUJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuUmFuZ2U6OmNvbnN1bWVD
b21wb25lbnRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJUb2tlblJhbmdlOjpz
ZXJpYWxpemUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW5SYW5nZS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuUmFuZ2U6OkNTU1BhcnNlclRv
a2VuUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6YXRFbmQp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW5SYW5nZTo6ZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlclRva2VuUmFuZ2U6OnBlZWspOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyVG9rZW5SYW5nZTo6Y29uc3VtZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXJUb2tlblJhbmdlOjpjb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXJUb2tlblJhbmdlOjpjb25zdW1lV2hpdGVzcGFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXJUb2tlblJhbmdlOjpiZWdpbik6CisgICAgICAgICogY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aGFzUHJl
Zml4KToKKyAgICAgICAgKFdlYkNvcmU6OmNzc1Byb3BlcnR5SUQpOgorICAgICAgICAoV2ViQ29y
ZTo6Y3NzUHJvcGVydHlOYW1lSU9TQWxpYXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6aXNBcHBs
ZUxlZ2FjeUNzc1ZhbHVlS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpjc3NWYWx1ZUtleXdv
cmRJRCk6CisgICAgICAgIChXZWJDb3JlOjp1bnJlc29sdmVkQ1NTUHJvcGVydHlJRCk6CisgICAg
ICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjppblF1aXJrc01vZGUpOgorICAgICAgICAqIGNzcy9w
YXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcDogQWRkZWQuCisgICAgICAgICogY3Nz
L3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmlkZW50TWF0Y2hlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVJZGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmlzQ1NTV2lkZUtleXdvcmQpOgor
ICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb2tlbml6ZXI6OlNjb3BlOjpTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NUb2tlbml6ZXI6OlNjb3BlOjp0b2tlblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rv
a2VuaXplcjo6U2NvcGU6OnRva2VuQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6aXNOZXdMaW5l
KToKKyAgICAgICAgKFdlYkNvcmU6OnR3b0NoYXJzQXJlVmFsaWRFc2NhcGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpDU1NUb2tlbml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVG9rZW5pemVyOjpyZWNvbnN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVy
Ojpjb25zdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6d2hpdGVTcGFjZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmJsb2NrU3RhcnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpibG9ja0VuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXI6OmxlZnRQYXJlbnRoZXNpcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6
ZXI6OnJpZ2h0UGFyZW50aGVzaXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjps
ZWZ0QnJhY2tldCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OnJpZ2h0QnJhY2tl
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmxlZnRCcmFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OnJpZ2h0QnJhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVG9rZW5pemVyOjpwbHVzT3JGdWxsU3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tl
bml6ZXI6OmFzdGVyaXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6bGVzc1Ro
YW4pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb21tYSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb2tlbml6ZXI6Omh5cGhlbk1pbnVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1Rva2VuaXplcjo6c29saWR1cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNv
bG9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6c2VtaUNvbG9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXI6OmNpcmN1bWZsZXhBY2NlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5p
emVyOjpkb2xsYXJTaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6dmVydGlj
YWxMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6dGlsZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb21tZXJjaWFsQXQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9rZW5pemVyOjpyZXZlcnNlU29saWR1cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
b2tlbml6ZXI6OmFzY2lpRGlnaXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjps
ZXR0ZXJVKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6c3RyaW5nU3RhcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVG9rZW5pemVyOjplbmRPZkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9r
ZW5pemVyOjpuZXh0VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVyOjpjb25z
dW1lTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZU51bWVy
aWNUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVJZGVudExp
a2VUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVTdHJpbmdU
b2tlblVudGlsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZVVuaWNv
ZGVSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjppc05vblByaW50YWJsZUNvZGVQb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVVcmxUb2tlbik6CisgICAgICAg
IChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVCYWRVcmxSZW1uYW50cyk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVTaW5nbGVXaGl0ZXNwYWNlSWZOZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZVVudGlsQ29tbWVudEVuZEZv
dW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZUlmTmV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVOYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZUVzY2FwZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NUb2tlbml6ZXI6Om5leHRUd29DaGFyc0FyZVZhbGlkRXNjYXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1Rva2VuaXplcjo6bmV4dENoYXJzQXJlTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Rva2VuaXplcjo6bmV4dENoYXJzQXJlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb2tlbml6ZXI6OnJlZ2lzdGVyU3RyaW5nKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NT
U1Rva2VuaXplci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6U2Nv
cGU6OnN0b3JlU3RyaW5nKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0
U3RyZWFtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXJJbnB1dFN0
cmVhbTo6Q1NTVG9rZW5pemVySW5wdXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9r
ZW5pemVySW5wdXRTdHJlYW06OmFkdmFuY2VVbnRpbE5vbldoaXRlc3BhY2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVG9rZW5pemVySW5wdXRTdHJlYW06OmdldERvdWJsZSk6CisgICAgICAgICog
Y3NzL3BhcnNlci9DU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Rva2VuaXplcklucHV0U3RyZWFtOjpuZXh0SW5wdXRDaGFyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Rva2VuaXplcklucHV0U3RyZWFtOjpwZWVrV2l0aG91dFJlcGxhY2VtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcklucHV0U3RyZWFtOjphZHZhbmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcklucHV0U3RyZWFtOjpwdXNoQmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbTo6c2tpcFdoaWxlUHJlZGlj
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcklucHV0U3RyZWFtOjpsZW5ndGgp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9rZW5pemVySW5wdXRTdHJlYW06Om9mZnNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbTo6cmFuZ2VBdCk6CisgICAg
ICAgICogcGxhdGZvcm0vTGVuZ3RoLmg6CisKIDIwMTYtMDgtMjQgIFNhbSBXZWluaWcgIDxzYW1A
d2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgdGhlIGFiaWxpdHkgdG8gb3ZlcnJpZGUgdGhlIGlt
cGxlbWVudGF0aW9uIG5hbWUgb2YgSURMIGVudW1zIGFuZCBkaWN0aW9uYXJpZXMKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMDQ5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTM0MSw5ICsxMzQxLDkgQEAgc2V0KFdlYkNv
cmVfU09VUkNFUwogICAgIGNzcy9DU1NLZXlmcmFtZVJ1bGUuY3BwCiAgICAgY3NzL0NTU0tleWZy
YW1lc1J1bGUuY3BwCiAgICAgY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuY3BwCisgICAgY3Nz
L0NTU01hcmt1cC5jcHAKICAgICBjc3MvQ1NTTWVkaWFSdWxlLmNwcAogICAgIGNzcy9DU1NOYW1l
ZEltYWdlVmFsdWUuY3BwCi0gICAgY3NzL0NTU09NVXRpbHMuY3BwCiAgICAgY3NzL0NTU1BhZ2VS
dWxlLmNwcAogICAgIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKICAgICBjc3MvQ1NTUHJvcGVy
dHkuY3BwCkBAIC0xNDEwLDcgKzE0MTAsMTUgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGNz
cy9XZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwCiAKICAgICBjc3MvcGFyc2VyL0NTU1BhcnNlci5j
cHAKKyAgICBjc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHAKKyAgICBjc3MvcGFyc2Vy
L0NTU1BhcnNlck9ic2VydmVyV3JhcHBlci5jcHAKKyAgICBjc3MvcGFyc2VyL0NTU1BhcnNlclRv
a2VuLmNwcAorICAgIGNzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW5SYW5nZS5jcHAKICAgICBjc3Mv
cGFyc2VyL0NTU1BhcnNlclZhbHVlcy5jcHAKKyAgICBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VyLmNwcAorICAgIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAorICAg
IGNzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmNwcAorICAgIGNzcy9wYXJzZXIvQ1NTVG9rZW5pemVy
SW5wdXRTdHJlYW0uY3BwCiAgICAgY3NzL3BhcnNlci9TVkdDU1NQYXJzZXIuY3BwCiAKICAgICBj
c3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwNDk3OCkKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtMzMzOSw2ICszMzM5LDI2IEBACiAJCTk0NkQzNzMwMUQ2Q0IyOTQwMDc3MDg0RiAv
KiBDU1NQYXJzZXJWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTQ2RDM3MkIxRDZDQjI4QjAwNzcwODRGIC8qIENTU1BhcnNlclZhbHVlcy5j
cHAgKi87IH07CiAJCTk0NkQzNzMxMUQ2Q0IyOTQwMDc3MDg0RiAvKiBDU1NQYXJzZXJWYWx1ZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzJD
MUQ2Q0IyOEIwMDc3MDg0RiAvKiBDU1NQYXJzZXJWYWx1ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NDZEMzczMzFENkNDNDJCMDA3NzA4NEYg
LyogU1ZHQ1NTUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk0NkQzNzMyMUQ2Q0MzNzIwMDc3MDg0RiAvKiBTVkdDU1NQYXJzZXIuY3BwICov
OyB9OworCQk5NDZEMzczOTFENkNERkMwMDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzM0MUQ2Q0RG
OTgwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXIuY3BwICovOyB9OworCQk5NDZEMzczQTFENkNERkMw
MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzczNzFENkNERjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVy
LmggKi87IH07CisJCTk0NkQzNzNCMUQ2Q0RGQzAwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXJJbnB1
dFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NDZEMzczNTFENkNERjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3Bw
ICovOyB9OworCQk5NDZEMzczQzFENkNERkMwMDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRT
dHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0
NkQzNzM4MUQ2Q0RGOTgwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5oICovOyB9
OworCQk5NDZEMzczRjFENkNFM0MyMDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW4uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3M0UxRDZDRTMx
QTAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuLmNwcCAqLzsgfTsKKwkJOTQ2RDM3NDAxRDZDRTND
MjAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzczRDFENkNFMzFBMDA3NzA4NEYgLyogQ1NTUGFyc2Vy
VG9rZW4uaCAqLzsgfTsKKwkJOTQ2RDM3NDQxRDZDRjdCMjAwNzcwODRGIC8qIENTU1BhcnNlcklk
aW9tcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2
RDM3NDMxRDZDRjc4ODAwNzcwODRGIC8qIENTU1BhcnNlcklkaW9tcy5oICovOyB9OworCQk5NDZE
Mzc0NTFENkQwMUQ0MDA3NzA4NEYgLyogQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3NDExRDZDRjYzMjAwNzcw
ODRGIC8qIENTU1Byb3BlcnR5UGFyc2VyLmNwcCAqLzsgfTsKKwkJOTQ2RDM3NDYxRDZEMDFENDAw
NzcwODRGIC8qIENTU1Byb3BlcnR5UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzc0MjFENkNGNjMyMDA3NzA4NEYgLyogQ1NTUHJvcGVy
dHlQYXJzZXIuaCAqLzsgfTsKKwkJOTQ2RDM3NDkxRDZEMDYyODAwNzcwODRGIC8qIENTU01hcmt1
cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZE
Mzc0NzFENkQwNjBDMDA3NzA4NEYgLyogQ1NTTWFya3VwLmNwcCAqLzsgfTsKKwkJOTQ2RDM3NEEx
RDZEMDYyODAwNzcwODRGIC8qIENTU01hcmt1cC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3NDgxRDZEMDYwQzAwNzcwODRGIC8qIENTU01hcmt1
cC5oICovOyB9OworCQk5NDZEMzc0RDFENkQwOEE2MDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW5S
YW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NDZEMzc0QjFENkQwN0Y1MDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW5SYW5nZS5jcHAgKi87IH07
CisJCTk0NkQzNzRFMUQ2RDA4QUEwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJhbmdlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzc0QzFENkQw
N0Y1MDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW5SYW5nZS5oICovOyB9OworCQk5NDlDNzcwMDFE
NkUxRDk4MDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0OUM3NkZFMUQ2RTFEOEMwMEMwREU0RiAv
KiBDU1NQYXJzZXJGYXN0UGF0aHMuY3BwICovOyB9OworCQk5NDlDNzcwMTFENkUxRDk4MDBDMERF
NEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NDlDNzZGRjFENkUxRDhDMDBDMERFNEYgLyogQ1NTUGFyc2VyRmFz
dFBhdGhzLmggKi87IH07CisJCTk0OUM3NzA0MUQ2RTM5RUEwMEMwREU0RiAvKiBDU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTQ5Qzc3MDIxRDZFMzkzNTAwQzBERTRGIC8qIENTU1Byb3BlcnR5UGFyc2VySGVs
cGVycy5jcHAgKi87IH07CisJCTk0OUM3NzA1MUQ2RTM5RUEwMEMwREU0RiAvKiBDU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk0OUM3NzAzMUQ2RTM5MzUwMEMwREU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlckhlbHBl
cnMuaCAqLzsgfTsKKwkJOTQ5Qzc3MDgxRDZFNDk4NzAwQzBERTRGIC8qIENTU1BhcnNlck9ic2Vy
dmVyV3JhcHBlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NDlDNzcwNjFENkU0OEVEMDBDMERFNEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVy
LmNwcCAqLzsgfTsKKwkJOTQ5Qzc3MDkxRDZFNDk4NzAwQzBERTRGIC8qIENTU1BhcnNlck9ic2Vy
dmVyV3JhcHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTQ5Qzc3MDcxRDZFNDhFRDAwQzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5o
ICovOyB9OworCQk5NDlDNzcwQjFENkU0OUVEMDBDMERFNEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0OUM3NzBB
MUQ2RTQ5QzMwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlci5oICovOyB9OwogCQk5NkFCQTQy
MzE0QkNCODBFMDBENTYyMDQgLyogR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTZBQkE0MjIxNEJD
QjgwRTAwRDU2MjA0IC8qIEdyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCAqLzsgfTsK
IAkJOTcwM0UxQkYxNURDNEUzNzAwMUYyNEM4IC8qIEpTVm9pZENhbGxiYWNrLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RTlFQzhCMTVEQzQ5MkYw
MDRGMkU3MSAvKiBKU1ZvaWRDYWxsYmFjay5jcHAgKi87IH07CiAJCTk3MDU5OTc3MTA3RDk3NTIw
MEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NzA1OTk3MzEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2Fs
bGJhY2suY3BwICovOyB9OwpAQCAtNjMxOCw4ICs2MzM4LDYgQEAKIAkJRjVFMEM2NUMxNjQzQzQy
QzAwRDZDQjY5IC8qIEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNUUwQzY1QTE2NDNDNDJD
MDBENkNCNjkgLyogQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUuaCAqLzsgfTsK
IAkJRjkxNkM0OEQwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5
MTZDNDhCMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5j
cHAgKi87IH07CiAJCUY5MTZDNDhFMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0
UHJvZ3Jlc3NFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjkxNkM0OEMwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVz
c0V2ZW50LmggKi87IH07Ci0JCUY5OEZGRjQ0MTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5OEZG
RjQyMTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmNwcCAqLzsgfTsKLQkJRjk4RkZGNDUx
MUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5OEZGRjQzMTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0
aWxzLmggKi87IH07CiAJCUY5RjBFRDdBMERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVz
dFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY5RjBFRDc3MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNz
RXZlbnQuaCAqLzsgfTsKIAkJRkE2NTRBNkIxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRva2Vu
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGQTY1NEE2OTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVG9rZW5FbGVtZW50LmNwcCAqLzsg
fTsKIAkJRkE2NTRBNkIxMTA4QUJFRDAwMjYxNkYxIC8qIE1hdGhNTE9wZXJhdG9yRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQTY1NEE2
OTExMDhBQkVEMDAyNjE2RjEgLyogTWF0aE1MT3BlcmF0b3JFbGVtZW50LmNwcCAqLzsgfTsKQEAg
LTEwNDUzLDYgKzEwNDcxLDI2IEBACiAJCTk0NkQzNzJCMUQ2Q0IyOEIwMDc3MDg0RiAvKiBDU1NQ
YXJzZXJWYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NT
UGFyc2VyVmFsdWVzLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJWYWx1ZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NDZEMzcyQzFENkNCMjhCMDA3NzA4NEYgLyogQ1NT
UGFyc2VyVmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENTU1BhcnNl
clZhbHVlcy5oOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlclZhbHVlcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5NDZEMzczMjFENkNDMzcyMDA3NzA4NEYgLyogU1ZHQ1NTUGFyc2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNWR0NTU1BhcnNlci5j
cHA7IHBhdGggPSBwYXJzZXIvU1ZHQ1NTUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTQ2RDM3MzQxRDZDREY5ODAwNzcwODRGIC8qIENTU1Rva2VuaXplci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDU1NUb2tlbml6ZXIuY3BwOyBwYXRo
ID0gcGFyc2VyL0NTU1Rva2VuaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTk0NkQzNzM1MUQ2Q0RGOTgwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDU1NUb2tlbml6ZXJJbnB1dFN0
cmVhbS5jcHA7IHBhdGggPSBwYXJzZXIvQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzczNzFENkNERjk4MDA3NzA4NEYgLyogQ1NT
VG9rZW5pemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENTU1Rva2VuaXpl
ci5oOyBwYXRoID0gcGFyc2VyL0NTU1Rva2VuaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5NDZEMzczODFENkNERjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJl
YW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ1NTVG9rZW5pemVySW5wdXRT
dHJlYW0uaDsgcGF0aCA9IHBhcnNlci9DU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzczRDFENkNFMzFBMDA3NzA4NEYgLyogQ1NTUGFy
c2VyVG9rZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ1NTUGFyc2VyVG9r
ZW4uaDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJUb2tlbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5NDZEMzczRTFENkNFMzFBMDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW4uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUGFyc2VyVG9rZW4uY3Bw
OyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTQ2RDM3NDExRDZDRjYzMjAwNzcwODRGIC8qIENTU1Byb3BlcnR5UGFyc2VyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1Byb3BlcnR5UGFyc2Vy
LmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTk0NkQzNzQyMUQ2Q0Y2MzIwMDc3MDg0RiAvKiBDU1NQcm9wZXJ0eVBh
cnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQcm9wZXJ0eVBhcnNl
ci5oOyBwYXRoID0gcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTk0NkQzNzQzMUQ2Q0Y3ODgwMDc3MDg0RiAvKiBDU1NQYXJzZXJJZGlvbXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ1NTUGFyc2VySWRpb21zLmg7IHBh
dGggPSBwYXJzZXIvQ1NTUGFyc2VySWRpb21zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTk0NkQzNzQ3MUQ2RDA2MEMwMDc3MDg0RiAvKiBDU1NNYXJrdXAuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTTWFya3VwLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTQ2RDM3NDgxRDZEMDYwQzAwNzcwODRGIC8qIENTU01hcmt1cC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NNYXJrdXAuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTQ2RDM3NEIxRDZEMDdGNTAwNzcwODRGIC8qIENTU1BhcnNlclRv
a2VuUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUGFy
c2VyVG9rZW5SYW5nZS5jcHA7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyVG9rZW5SYW5nZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NkQzNzRDMUQ2RDA3RjUwMDc3MDg0RiAv
KiBDU1NQYXJzZXJUb2tlblJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IENTU1BhcnNlclRva2VuUmFuZ2UuaDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJUb2tlblJhbmdl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0OUM3NkZFMUQ2RTFEOEMwMEMwREU0
RiAvKiBDU1NQYXJzZXJGYXN0UGF0aHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJG
YXN0UGF0aHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDlDNzZGRjFENkUx
RDhDMDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IENTU1BhcnNlckZhc3RQYXRocy5oOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNl
ckZhc3RQYXRocy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDlDNzcwMjFENkUz
OTM1MDBDMERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHA7IHBh
dGggPSBwYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTQ5Qzc3MDMxRDZFMzkzNTAwQzBERTRGIC8qIENTU1Byb3BlcnR5UGFy
c2VySGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnMuaDsgcGF0aCA9IHBhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ5Qzc3MDYxRDZFNDhFRDAwQzBERTRG
IC8qIENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3BwOyBwYXRoID0gcGFyc2Vy
L0NTU1BhcnNlck9ic2VydmVyV3JhcHBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTk0OUM3NzA3MUQ2RTQ4RUQwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFw
cGVyLmg7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0OUM3NzBBMUQ2RTQ5QzMwMEMwREU0RiAvKiBDU1NQYXJz
ZXJPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQYXJzZXJP
YnNlcnZlci5oOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlck9ic2VydmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk1MEM0QzAyQkVEODkzNkY4MThFMkY5OSAvKiBKU1NWR0dyYXBo
aWNzRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdHcmFw
aGljc0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTZBQkE0MjIxNEJD
QjgwRTAwRDU2MjA0IC8qIEdyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29t
bW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcwNTk5NzMxMDdEOTc1MjAw
QTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBvbGljeUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTEzODk0LDggKzEzOTMyLDYgQEAKIAkJRjgyMTYyOTkwMjlGNEZCNTAxMDAwMTMxIC8qIEph
dmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRoID0gSmF2YVNjcmlwdENvcmUu
ZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlGOTE2QzQ4
QjBEQjUxMEY4MDA3NkNEODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTWE1MSHR0cFJlcXVlc3RQcm9n
cmVzc0V2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjkxNkM0OEMwREI1
MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGOThGRkY0MjExQTI2NzYyMDBGNTQ4RTgg
LyogQ1NTT01VdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
U1NPTVV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjk4RkZGNDMxMUEy
Njc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ1NTT01VdGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGOUYwRUQ3
NzBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjlGMEVENzgwREI1MENBMjAwRDE2REI5
IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZBNjU0QTYzMTEwOEFCQjcwMDI2MTVFMCAvKiBtYXRobWwuY3NzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5jc3M7IHBhdGggPSBtYXRobWwuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTgwNzMsMTIgKzE4MTA5LDMwIEBACiAJCTk0NkQzNzI3MUQ2Q0IyMjUwMDc3MDg0RiAv
KiBwYXJzZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CTk0NkQzNzMyMUQ2Q0MzNzIwMDc3MDg0RiAvKiBTVkdDU1NQYXJzZXIuY3BwICovLAogCQkJCTk0
NkQzNzI4MUQ2Q0IyOEIwMDc3MDg0RiAvKiBDU1NQYXJzZXIuY3BwICovLAogCQkJCTk0NkQzNzI5
MUQ2Q0IyOEIwMDc3MDg0RiAvKiBDU1NQYXJzZXIuaCAqLywKKwkJCQk5NDlDNzZGRTFENkUxRDhD
MDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcCAqLywKKwkJCQk5NDlDNzZGRjFENkUx
RDhDMDBDMERFNEYgLyogQ1NTUGFyc2VyRmFzdFBhdGhzLmggKi8sCisJCQkJOTQ2RDM3NDMxRDZD
Rjc4ODAwNzcwODRGIC8qIENTU1BhcnNlcklkaW9tcy5oICovLAogCQkJCTk0NkQzNzJBMUQ2Q0Iy
OEIwMDc3MDg0RiAvKiBDU1NQYXJzZXJNb2RlLmggKi8sCisJCQkJOTQ5Qzc3MEExRDZFNDlDMzAw
QzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyLmggKi8sCisJCQkJOTQ5Qzc3MDYxRDZFNDhFRDAw
QzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5jcHAgKi8sCisJCQkJOTQ5Qzc3MDcx
RDZFNDhFRDAwQzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5oICovLAorCQkJCTk0
NkQzNzNFMUQ2Q0UzMUEwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlbi5jcHAgKi8sCisJCQkJOTQ2
RDM3M0QxRDZDRTMxQTAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuLmggKi8sCisJCQkJOTQ2RDM3
NEIxRDZEMDdGNTAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuUmFuZ2UuY3BwICovLAorCQkJCTk0
NkQzNzRDMUQ2RDA3RjUwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJhbmdlLmggKi8sCiAJCQkJ
OTQ2RDM3MkIxRDZDQjI4QjAwNzcwODRGIC8qIENTU1BhcnNlclZhbHVlcy5jcHAgKi8sCiAJCQkJ
OTQ2RDM3MkMxRDZDQjI4QjAwNzcwODRGIC8qIENTU1BhcnNlclZhbHVlcy5oICovLAorCQkJCTk0
NkQzNzQxMUQ2Q0Y2MzIwMDc3MDg0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlci5jcHAgKi8sCisJCQkJ
OTQ2RDM3NDIxRDZDRjYzMjAwNzcwODRGIC8qIENTU1Byb3BlcnR5UGFyc2VyLmggKi8sCisJCQkJ
OTQ5Qzc3MDIxRDZFMzkzNTAwQzBERTRGIC8qIENTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAg
Ki8sCisJCQkJOTQ5Qzc3MDMxRDZFMzkzNTAwQzBERTRGIC8qIENTU1Byb3BlcnR5UGFyc2VySGVs
cGVycy5oICovLAorCQkJCTk0NkQzNzM0MUQ2Q0RGOTgwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXIu
Y3BwICovLAorCQkJCTk0NkQzNzM3MUQ2Q0RGOTgwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXIuaCAq
LywKKwkJCQk5NDZEMzczNTFENkNERjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJl
YW0uY3BwICovLAorCQkJCTk0NkQzNzM4MUQ2Q0RGOTgwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXJJ
bnB1dFN0cmVhbS5oICovLAorCQkJCTk0NkQzNzMyMUQ2Q0MzNzIwMDc3MDg0RiAvKiBTVkdDU1NQ
YXJzZXIuY3BwICovLAogCQkJKTsKIAkJCW5hbWUgPSBwYXJzZXI7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMjA5NDYsOCArMjEwMDAsOCBAQAogCQkJCUJFNkRGNzEwMTcxQ0EyREEw
MERENTJCOCAvKiBKU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCAqLywKIAkJCQlGRDhBQTYzQjE2
OTUxNDhFMDBEMkVBNjggLyogSlNCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcCAqLywKIAkJCQk4
OTMxREU1QTE0QzQ0QzQ0MDAwREM5RDIgLyogSlNCbG9iQ3VzdG9tLmNwcCAqLywKLQkJCQk0OUVF
RDE0QjEwNTE5NzE5MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20u
Y3BwICovLAogCQkJCTQ2NTlEMjcwMUQ2QjkwOUYwMDk2RkQ4NiAvKiBKU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQuaCAqLywKKwkJCQk0OUVFRDE0QjEwNTE5NzE5MDAwOTlGQUIgLyogSlNDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwICovLAogCQkJCTdDMzNGMzU4MUI0QTA0NDgwMDUw
MkNBRiAvKiBKU0NoYXJhY3RlckRhdGFDdXN0b20uY3BwICovLAogCQkJCTQ2QTU4QUM0MUQ0NkIz
RkEwMDQzMjAzNiAvKiBKU0NsaWVudFJlY3RDdXN0b20uY3BwICovLAogCQkJCUE1ODRGRTM3MTg2
NERBQzEwMDg0M0IxMCAvKiBKU0NvbW1hbmRMaW5lQVBJSG9zdEN1c3RvbS5jcHAgKi8sCkBAIC0y
MjI0MCwxMyArMjIyOTQsMTMgQEAKIAkJCQkzMTZGRTA5MjBFNkNDRDdGMDBCRjYwODggLyogQ1NT
S2V5ZnJhbWVzUnVsZS5pZGwgKi8sCiAJCQkJQkM3NzJFMTUxMzMxNjJDMjAwMUVDOUNFIC8qIENT
U0xpbmVCb3hDb250YWluVmFsdWUuY3BwICovLAogCQkJCUJDNzcyRTEyMTMzMTYyMEMwMDFFQzlD
RSAvKiBDU1NMaW5lQm94Q29udGFpblZhbHVlLmggKi8sCisJCQkJOTQ2RDM3NDcxRDZEMDYwQzAw
NzcwODRGIC8qIENTU01hcmt1cC5jcHAgKi8sCisJCQkJOTQ2RDM3NDgxRDZEMDYwQzAwNzcwODRG
IC8qIENTU01hcmt1cC5oICovLAogCQkJCUE4MEU2Q0QyMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NN
ZWRpYVJ1bGUuY3BwICovLAogCQkJCUE4MEU2Q0Q5MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NNZWRp
YVJ1bGUuaCAqLywKIAkJCQk4NUM1NkNBMjBBQTg5QzEwMDBEOTU3NTUgLyogQ1NTTWVkaWFSdWxl
LmlkbCAqLywKIAkJCQkzMTRCRTNBMjFCMzBGNkQxMDAxNDE5ODIgLyogQ1NTTmFtZWRJbWFnZVZh
bHVlLmNwcCAqLywKIAkJCQkzMTRCRTNBMDFCMzBGNkI3MDAxNDE5ODIgLyogQ1NTTmFtZWRJbWFn
ZVZhbHVlLmggKi8sCi0JCQkJRjk4RkZGNDIxMUEyNjc2MjAwRjU0OEU4IC8qIENTU09NVXRpbHMu
Y3BwICovLAotCQkJCUY5OEZGRjQzMTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmggKi8s
CiAJCQkJQTgwRTZDQ0IwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1BhZ2VSdWxlLmNwcCAqLywKIAkJ
CQlBODBFNkNENjBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUGFnZVJ1bGUuaCAqLywKIAkJCQk4NUM1
NkNBNjBBQTg5RDVGMDBEOTU3NTUgLyogQ1NTUGFnZVJ1bGUuaWRsICovLApAQCAtMjMxNTMsOCAr
MjMyMDcsNiBAQAogCQkJCUZBQkU3MkVFMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50
LmggKi8sCiAJCQkJMEJDRjgzRUYxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEZyYWN0aW9uRWxl
bWVudC5jcHAgKi8sCiAJCQkJMEJDRjgzRjAxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEZyYWN0
aW9uRWxlbWVudC5oICovLAotCQkJCUZBQkU3MkVGMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxQ
cmVzZW50YXRpb25FbGVtZW50LmNwcCAqLywKLQkJCQlGQUJFNzJGMDEwNTlDMUVCMDBEOTk5REQg
LyogTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5oICovLAogCQkJCUZBQkU3MkYxMTA1OUMxRUIw
MEQ5OTlERCAvKiBNYXRoTUxNYXRoRWxlbWVudC5jcHAgKi8sCiAJCQkJRkFCRTcyRjIxMDU5QzFF
QjAwRDk5OUREIC8qIE1hdGhNTE1hdGhFbGVtZW50LmggKi8sCiAJCQkJQzNFNjFDNjUzQTY0ODA3
QTgzRTc2RkI4IC8qIE1hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHAgKi8sCkBAIC0yMzE2NSw2ICsy
MzIxNywxMCBAQAogCQkJCUZBNjU0QTZBMTEwOEFCRUQwMDI2MTZGMSAvKiBNYXRoTUxPcGVyYXRv
ckVsZW1lbnQuaCAqLywKIAkJCQlCNTlDQTU5QUYxNzBEOEZBQTVCOENBQkUgLyogTWF0aE1MUGFk
ZGVkRWxlbWVudC5jcHAgKi8sCiAJCQkJQjU5Q0E4NDlENDFFNkY2NUQ4MTE5OEJDIC8qIE1hdGhN
TFBhZGRlZEVsZW1lbnQuaCAqLywKKwkJCQlGQUJFNzJFRjEwNTlDMUVCMDBEOTk5REQgLyogTWF0
aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAgKi8sCisJCQkJRkFCRTcyRjAxMDU5QzFFQjAwRDk5
OUREIC8qIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuaCAqLywKKwkJCQlGQTc2NUE2OTExMDhB
QkVEMDAyNjE1RTAgLyogTWF0aE1MUm93RWxlbWVudC5jcHAgKi8sCisJCQkJRkE3NjVBNkExMTA4
QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFJvd0VsZW1lbnQuaCAqLywKIAkJCQlCNTlDQTU5QUYxNzBE
OEZBQTVCOEM5QUQgLyogTWF0aE1MU2NyaXB0c0VsZW1lbnQuY3BwICovLAogCQkJCUI1OUNBODQ5
RDQxRTZGNjVEODExOTdBQiAvKiBNYXRoTUxTY3JpcHRzRWxlbWVudC5oICovLAogCQkJCUY3NUEw
NTlBRjE3MEQ4RkFBNUI4Q0FCRSAvKiBNYXRoTUxTZWxlY3RFbGVtZW50LmNwcCAqLywKQEAgLTIz
MTczLDggKzIzMjI5LDYgQEAKIAkJCQk0RkE2NUE2QTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1M
U3BhY2VFbGVtZW50LmggKi8sCiAJCQkJRkE2NTRBNjkxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhN
TFRva2VuRWxlbWVudC5jcHAgKi8sCiAJCQkJRkE2NTRBNkExMTA4QUJFRDAwMjYxNUUwIC8qIE1h
dGhNTFRva2VuRWxlbWVudC5oICovLAotCQkJCUZBNzY1QTY5MTEwOEFCRUQwMDI2MTVFMCAvKiBN
YXRoTUxSb3dFbGVtZW50LmNwcCAqLywKLQkJCQlGQTc2NUE2QTExMDhBQkVEMDAyNjE1RTAgLyog
TWF0aE1MUm93RWxlbWVudC5oICovLAogCQkJCUZBNjU0QTY5MTEwOEFCRUQwMDI2MjZGMSAvKiBN
YXRoTUxVbmRlck92ZXJFbGVtZW50LmNwcCAqLywKIAkJCQlGQTY1NEE2QTExMDhBQkVEMDAyNjI2
RjEgLyogTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5oICovLAogCQkJCUZBQkU3MkYzMTA1OUMxRUIw
MEQ5OTlERCAvKiBtYXRodGFncy5pbiAqLywKQEAgLTIzNTM2LDggKzIzNTkwLDYgQEAKIAkJCWlz
YSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKIAkJCWZpbGVzID0gKAotCQkJCTUxMDU4QURFMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2Ft
ZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTA1OEFEQzFENjc5MkMxMDA5QTUz
OEMgLyogTW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNzE0RUFEMUNGNjU5NTEw
MDQ3MjNDNCAvKiBHQ09ic2VydmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTdEQTZEQTEz
NzM0RTZFMDA3QzU3RkIgLyogSW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0JGN0VF
MDE0QzkxNzVBMDAxNDQ4OUQgLyogSW50ZXJuYWxTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yMzU1Myw2ICsyMzYwNSw4IEBACiAJCQkJQ0RDMjZCNDExNjBBOENDRTAwMjY3NTdCIC8qIE1v
Y2tDRE0uaCBpbiBIZWFkZXJzICovLAogCQkJCUExQkY2QjgzMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFCNUIyOUYxQUFBODQ2RjAw
OEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUxMDU4QURDMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTEwNThBREUxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkUHJvdmlkZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTJENkYzRTkxMUMxRUNCMkYwMDYxREJENCAvKiBNb2NrUGFnZU92
ZXJsYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEOTdGMDQ4MTlERDQxNDAwMDFFRTlDMyAvKiBN
b2NrUGFnZU92ZXJsYXlDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBNUYzQjhEMTZDQzMz
RDEwMDQ1NUVCMCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yMzY4NCw3ICsyMzczOCw2IEBACiAJCQkJQkVGMjlFRUIxNzE1REQwOTAwQzRCNEM5
IC8qIEF1ZGlvVHJhY2tQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREUzQTg1NDE3RjVG
Q0U2MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkYuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNERTNBODU4MTdGNjAyMDQwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCBp
biBIZWFkZXJzICovLAotCQkJCTUxMDU4QUUyMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBh
ZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDU0QTc2MzE4MEY5RjcwMDBCMDc2Qzkg
LyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTA3RDZBNEY4MUJGMjMwN0QwMDE3NDE0NiAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA4QjEyQjAyNkY3MDBDMUEzNTkgLyogQXVk
aW9VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMjM5NjUsNyArMjQwMTgsNiBAQAogCQkJ
CTMxQkM3NDJFMUFBRkY0NUMwMDZCNDM0MCAvKiBDU1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFs
dWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNBRTlGOTEwMTQ2NDQxRjAwMEMyNDVCMCAvKiBDU1NB
c3BlY3RSYXRpb1ZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkQ2QUY4ODE1RUYyNUM5MDA4
QjcxMTAgLyogQ1NTQmFzaWNTaGFwZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxMDU4QUUwMUQ2
N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE2QTg0
RkExNEM4NUNDQzAwMjk3N0RGIC8qIENTU0JvcmRlckltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzI3NEIyRjE0MEVCRUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0OUFFMkQ4RjEzNEVFNTBDMDA3MjkyMEEgLyogQ1NTQ2FsY3Vs
YXRpb25WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDAwNSwxNiArMjQwNTcsMjcgQEAKIAkJ
CQkzMTI4OEU3MzBFMzAwNUQ2MDAzNjE5QUUgLyogQ1NTS2V5ZnJhbWVSdWxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzMTI4OEU3NTBFMzAwNUQ2MDAzNjE5QUUgLyogQ1NTS2V5ZnJhbWVzUnVsZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3NzJFMTMxMzMxNjIwQzAwMUVDOUNFIC8qIENTU0xpbmVC
b3hDb250YWluVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTk0NkQzNzRBMUQ2RDA2MjgwMDc3
MDg0RiAvKiBDU1NNYXJrdXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2RDAzMEExOTg5Q0Ew
MDdGQjhDNSAvKiBDU1NNZWRpYVJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNEJFM0ExMUIz
MEY2QjcwMDE0MTk4MiAvKiBDU1NOYW1lZEltYWdlVmFsdWUuaCBpbiBIZWFkZXJzICovLAotCQkJ
CUY5OEZGRjQ1MTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODBFNkQwMDBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUGFnZVJ1bGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTk0NkQzNzJFMUQ2Q0IyOTQwMDc3MDg0RiAvKiBDU1NQYXJzZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTk0OUM3NzAxMUQ2RTFEOTgwMEMwREU0RiAvKiBDU1NQYXJzZXJGYXN0UGF0
aHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTk0NkQzNzQ0MUQ2Q0Y3QjIwMDc3MDg0RiAvKiBDU1NQ
YXJzZXJJZGlvbXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTk0NkQzNzJGMUQ2Q0IyOTQwMDc3MDg0
RiAvKiBDU1NQYXJzZXJNb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDlDNzcwQjFENkU0OUVE
MDBDMERFNEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTk0OUM3
NzA5MUQ2RTQ5ODcwMEMwREU0RiAvKiBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTk0NkQzNzQwMUQ2Q0UzQzIwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJOTQ2RDM3NEUxRDZEMDhBQTAwNzcwODRGIC8qIENTU1BhcnNl
clRva2VuUmFuZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTk0NkQzNzMxMUQ2Q0IyOTQwMDc3MDg0
RiAvKiBDU1NQYXJzZXJWYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0IzODYzMTIyODgz
RTkwMEI4MUZGOCAvKiBDU1NQcmVsb2FkU2Nhbm5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgw
RTZDRTYwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1ByaW1pdGl2ZVZhbHVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMUVEOEFDMzBDQzQ5QkUwMDBCRkM1NTcgLyogQ1NTUHJpbWl0aXZlVmFsdWVNYXBw
aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZDRkYwQTE5ODlDQTAwN0ZCOEM1IC8qIENT
U1Byb3BlcnR5LmggaW4gSGVhZGVycyAqLywKIAkJCQk3OEQwMkJDNjE1NEExOERGMDBCNjJEMDUg
LyogQ1NTUHJvcGVydHlBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NjU4MEY0MDlE
MTJCMjAwMDBFNjFENyAvKiBDU1NQcm9wZXJ0eU5hbWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5
NDZEMzc0NjFENkQwMUQ0MDA3NzA4NEYgLyogQ1NTUHJvcGVydHlQYXJzZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTk0OUM3NzA1MUQ2RTM5RUEwMEMwREU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlckhl
bHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgyRTNEOERGMTIyRUEwRDEwMDNBRTVCQyAvKiBD
U1NQcm9wZXJ0eVNvdXJjZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNjI2NDBCMERFMTEz
N0QwMDlENUEwMCAvKiBDU1NSZWZsZWN0aW9uRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzVBMTJFMDBEQzA0MTQ4MDBDOUFGQUQgLyogQ1NTUmVmbGVjdFZhbHVlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTI0MDMwLDYgKzI0MDkzLDggQEAKIAkJCQlBOEVBODAwNzBBMTk1MTZFMDBBOEVG
NUYgLyogQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkM1NEQwNTcxNkE3Njcz
MTAwNTc1RTREIC8qIENTU1N1cHBvcnRzUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4MEM5
ODgwQ0QyOTRFRTAwQTBCN0IzIC8qIENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTk0NkQzNzNBMUQ2Q0RGQzAwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTk0NkQzNzNDMUQ2Q0RGQzAwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXJJ
bnB1dFN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUFCMUYzODAxOEUyNDg5QTAwNTM0NzQz
IC8qIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4ODJE
QTIzMTU5Mzg0OEQwMDAxMTVFRCAvKiBDU1NUb1N0eWxlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzNzFGNTNFOTBEMjcwNEY5MDBFQ0UwRDUgLyogQ1NTVW5pY29kZVJhbmdlVmFsdWUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjQ3NDksNiArMjQ4MTQsNyBAQAogCQkJCTY1REYzMjNDMDlEMURFNjUw
MDBCRTMyNSAvKiBKU0NhbnZhc1BhdHRlcm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTY1REYzMjND
MDlEMURFNjUwMDFCRTMyNSAvKiBKU0NhbnZhc1Byb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0
OUVFRDE0MzEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0LmggaW4g
SGVhZGVycyAqLywKKwkJCQk0NjU5RDI3MTFENkI5MEE1MDA5NkZEODYgLyogSlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUVFRDE0NTEwNTE5Njk0MDAwOTlG
QUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
RjlCN0ExMEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkRBMTVFQTIxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQ2hhbm5lbE1lcmdlck5vZGUuaCBp
biBIZWFkZXJzICovLApAQCAtMjQ5NzksNyArMjUwNDUsNiBAQAogCQkJCUZEMjNBMTI2MTNGNUZB
NTkwMEY2NzAwMSAvKiBKU01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTQ0NjE0MTkwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTTWVkaWFFcnJvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMzQzM5QjcwQzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0Lmgg
aW4gSGVhZGVycyAqLywKLQkJCQk0NjU5RDI3MTFENkI5MEE1MDA5NkZEODYgLyogSlNDYW52YXNS
ZW5kZXJpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q0MzdBMzFENTdCN0UyMDBB
Qjg1RUEgLyogSlNNZWRpYUxpc3RDdXN0b20uaCBpbiBIZWFkZXJzICovLAogCQkJCUQzQTk0QTQ3
MTIyREM0MEYwMEEzN0JCQyAvKiBKU01lZGlhUXVlcnlMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QzUzNDNGRDE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI1MTg2LDcgKzI1MjUxLDYgQEAKIAkJCQlCMkZBM0RCNTBBQjc1
QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJG
QTNEQjcwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjJGQTNEQjkwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0FyY0Ficy5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJOTQ2RDM3MkUxRDZDQjI5NDAwNzcwODRGIC8qIENTU1BhcnNlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEQkIwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNl
Z0FyY1JlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEQkQwQUI3NUE2RjAwMEU1QUM0IC8q
IEpTU1ZHUGF0aFNlZ0Nsb3NlUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEQkYwQUI3
NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficy5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNTM1OSw3ICsyNTQyMyw2IEBACiAJCQkJRTRFMzlBRkIxMzMwRUZBODAwM0FCMjc0
IC8qIExlZ2FjeVRpbGVMYXllclBvb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkREOEY1MEQ5
MUU2QUYwMDBGODlFRSAvKiBMZWdhY3lXZWJBcmNoaXZlLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0U2NUJFQjBFQUNERjE2MDA3RTQ1MzMgLyogTGVuZ3RoLmggaW4gSGVhZGVycyAqLywKLQkJCQk5
NDZEMzcyRjFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyTW9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNGRjY0OTEwRUFEMTVDMjAwQzFENkY3IC8qIExlbmd0aEJveC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTVCQTdENjMxNTE0MzdDQTAwRkUxRTNGIC8qIExlbmd0aEZ1bmN0aW9ucy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY4NzE2NzAxQzg2OUQ4MzAwNEZGMERFIC8qIExlbmd0aFBvaW50
LmggaW4gSGVhZGVycyAqLywKQEAgLTI1NDA2LDE0ICsyNTQ2OSwxNCBAQAogCQkJCUZBQkU3MkY1
MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0
NEEyOEFBQzEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBCQ0Y4M0Y3MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxGcmFjdGlvbkVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUZBQkU3MkY3MTA1OUMxRUIwMEQ5OTlERCAvKiBN
YXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGQUJFNzJGOTEw
NTlDMUVCMDBEOTk5REQgLyogTWF0aE1MTWF0aEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ0QTI4QUFGMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkE2NTRBNkMxMTA4QUJFRDAwMjYxNkYxIC8qIE1hdGhNTE9wZXJhdG9yRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRkFCRTcyRjcxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTFBy
ZXNlbnRhdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUZBNzY1QTZDMTEwOEFCRUQw
MDI2MTVFMCAvKiBNYXRoTUxSb3dFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0RkE2NUE2
QzExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MU3BhY2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MzkxNzZFMDEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZBNjU0QTZDMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUb2tlbkVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAotCQkJCUZBNzY1QTZDMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxS
b3dFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGQTY1NEE2QzExMDhBQkVEMDAyNjI2RjEg
LyogTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5MDQ2RUEx
MkRBMjVFODEyQUY4MEFDIC8qIE1hdGhPcGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlE
NURDMkMwRjQyM0E3MzAwOEYyMEZEIC8qIE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmggaW4g
SGVhZGVycyAqLywKQEAgLTI1NTM0LDYgKzI1NTk3LDggQEAKIAkJCQk1MkYxMDg2NjE2MkI2REE4
MDA5QUM4MUUgLyogTWl4ZWRDb250ZW50Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Ux
MjUyNDkxQTE2QzNCQzAwODY0NDgwIC8qIE1vYmlsZUdlc3RhbHRTUEkuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNERjJCMDExMTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrQm94LmggaW4gSGVhZGVycyAq
LywKKwkJCQk1MTA1OEFFMDFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTUxMDU4QUUyMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RUEzRDZERjFDODU5RDdGMDAzMDBCQkIgLyogTW9j
a01lZGlhRW5kcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjJCMDEzMTgyMDU0MDYwMEYy
QjQyNCAvKiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0RGMkIwMTUxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVNvdXJjZVByaXZhdGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjY1MzksNyArMjY2MDQsNiBAQAogCQkJCTA4MTNBNEVBMTI4NDEzMjYw
MDk5MjUxMSAvKiBTVkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyMjI3QUE5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdG9wRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIyMjdBQUMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0cmluZ0xpc3QuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTk0NkQzNzMxMUQ2Q0IyOTQwMDc3MDg0RiAvKiBDU1NQYXJzZXJWYWx1
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUI4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdT
dHlsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUJCMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdTVkdFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FCRTBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHU3dpdGNoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzI3Miw3
ICsyNzMzNiw2IEBACiAJCQkJNDE3REE2RDkxMzczNEU2RTAwN0M1N0ZCIC8qIEludGVybmFscy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTc5RjBEQTFCOTc3NEZFMDBFRDBBMjcgLyogSW50ZXJu
YWxzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdCRjdFREYxNEM5MTc1QTAwMTQ0ODlEIC8qIElu
dGVybmFsU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTEwNThBREQxRDY3OTJDMTAw
OUE1MzhDIC8qIE1vY2tHYW1lcGFkUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTNF
MjlFNUUxNjdBOEExOTAwNTg2RDNEIC8qIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTE3MTRFQjAxQ0Y2NjVDRTAwNDcyM0M0IC8qIEpTR0NPYnNlcnZh
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTdEQTcxRDEzNzM1REZBMDA3QzU3RkIgLyog
SlNJbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzI4MiwxMiArMjczNDUsMTMgQEAK
IAkJCQlDRDUzOTNEMzE3NUUwMTg2MDBDMDcxMjMgLyogSlNNZW1vcnlJbmZvLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUExOUFFQTIyMUFBQTgwOEEwMEI1MkIyNSAvKiBKU01vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFFNUIzMUYxQUFEMURBNDAwNkVC
RUZCIC8qIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQk1MTA1OEFEQjFENjc5MkMxMDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkQ0MTUwREUxQzFGODY4QzAwMEEzQkEyIC8qIEpTTW9ja1BhZ2VPdmVy
bGF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUVCRjUxMjFDMTY5NjQ5NkMwMDU2QkQyNSAvKiBK
U1R5cGVDb252ZXJzaW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREMyNkI0MDE2MEE4Q0M2
MDAyNjc1N0IgLyogTW9ja0NETS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUJGNkI4MjFBQTk2
QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNTEwNThBREIxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1l
cGFkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAvKiBN
b2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJENkYzRTkwMUMxRUNC
MjcwMDYxREJENCAvKiBNb2NrUGFnZU92ZXJsYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5
N0YwNDcxOURENDEzQzAwMUVFOUMzIC8qIE1vY2tQYWdlT3ZlcmxheUNsaWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBQTVGM0I4RjE2Q0M0QjM5MDA0NTVFQjAgLyogUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplck1vY2suY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzY3MywxNSArMjc3MzcsMjMg
QEAKIAkJCQkzMTI4OEU3MjBFMzAwNUQ2MDAzNjE5QUUgLyogQ1NTS2V5ZnJhbWVSdWxlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTMxMjg4RTc0MEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFt
ZXNSdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNzcyRTE2MTMzMTYyQzIwMDFFQzlDRSAv
KiBDU1NMaW5lQm94Q29udGFpblZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0NkQzNzQ5
MUQ2RDA2MjgwMDc3MDg0RiAvKiBDU1NNYXJrdXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgw
RTZDRkMwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU01lZGlhUnVsZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkzMTRCRTNBMzFCMzBGNkQxMDAxNDE5ODIgLyogQ1NTTmFtZWRJbWFnZVZhbHVlLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUY5OEZGRjQ0MTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU2Q0Y1MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQ
YWdlUnVsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NDZEMzcyRDFENkNCMjk0MDA3NzA4NEYg
LyogQ1NTUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0OUM3NzAwMUQ2RTFEOTgwMEMw
REU0RiAvKiBDU1NQYXJzZXJGYXN0UGF0aHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTQ5Qzc3
MDgxRDZFNDk4NzAwQzBERTRGIC8qIENTU1BhcnNlck9ic2VydmVyV3JhcHBlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk5NDZEMzczRjFENkNFM0MyMDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW4u
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTQ2RDM3NEQxRDZEMDhBNjAwNzcwODRGIC8qIENTU1Bh
cnNlclRva2VuUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTQ2RDM3MzAxRDZDQjI5NDAw
NzcwODRGIC8qIENTU1BhcnNlclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdCMzg2
MjEyMjg4M0U5MDBCODFGRjggLyogQ1NTUHJlbG9hZFNjYW5uZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTgwRTZEMDUwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1ByaW1pdGl2ZVZhbHVlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE4MEU2Q0Y3MEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQcm9wZXJ0
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3OEQwMkJDNTE1NEExOERGMDBCNjJEMDUgLyogQ1NT
UHJvcGVydHlBbmltYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCQTc2Q0ExMUQyMEU1
MDAwNEMyMDFDIC8qIENTU1Byb3BlcnR5TmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTQ2
RDM3NDUxRDZEMDFENDAwNzcwODRGIC8qIENTU1Byb3BlcnR5UGFyc2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTk0OUM3NzA0MUQ2RTM5RUEwMEMwREU0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlckhl
bHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODJFM0Q4REUxMjJFQTBEMTAwM0FFNUJDIC8q
IENTU1Byb3BlcnR5U291cmNlRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzVBMTJERjBE
QzA0MTQ4MDBDOUFGQUQgLyogQ1NTUmVmbGVjdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDN0Q4RkYzMUJEMUE0NzkwMEZGRTU0MCAvKiBDU1NSZXZlcnRWYWx1ZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTI3Njk1LDYgKzI3NzY3LDggQEAKIAkJCQlBOEVBODAwODBBMTk1MTZFMDBBOEVG
NUYgLyogQ1NTU3R5bGVTaGVldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDY3NzczOTE5NUNB
RkJBMDA3MkUwRDMgLyogQ1NTU3VwcG9ydHNSdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
ODBDOTg3MENEMjk0RUUwMEEwQjdCMyAvKiBDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTk0NkQzNzM5MUQ2Q0RGQzAwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTQ2RDM3M0IxRDZDREZDMDAwNzcwODRGIC8qIENTU1Rv
a2VuaXplcklucHV0U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlBQjFGMzgxMThFMjQ4
OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4ODJEQTIwMTU5Mzg0NkEwMDAxMTVFRCAvKiBDU1NUb1N0eWxlTWFwLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTM3MUY1M0VBMEQyNzA0RjkwMEVDRTBENSAvKiBDU1NVbmljb2RlUmFu
Z2VWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4MzY3LDYgKzI4NDQxLDcgQEAKIAkJCQk5
NzVDQTJBMTEzMDM2NzlEMDBFOTlBRDkgLyogSlNDcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTE1N0E4RjAxODE4NTQyNTAwOUY4MjFEIC8qIEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUM2NTcxMjE4MTVGOUREMDAyNTZDREQgLyogSlNDcnlw
dG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDRUYyNjE5MUQ2
QTkzMTcwMEJFOTA1RCAvKiBKU0NyeXB0b0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MTU3QThFMDE4MTczMzFDMDA5RjgyMUQgLyogSlNDcnlwdG9LZXkuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTE1N0E4RTgxODE4NEM2NzAwOUY4MjFEIC8qIEpTQ3J5cHRvS2V5Q3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUUxRjgwQjhEMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tl
eVBhaXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODY4NCw3ICsyODc1OSw2IEBACiAJCQkJMUE3
NTBEOEQwQTkwRTUyMTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBNzUwREQ0MEE5MEU3MjkwMDBGRjIxNSAvKiBKU05vZGVJdGVyYXRvckN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0Q5QzJDMjBDMTdCNjlFMDA1QzkwQTIgLyogSlNOb2Rl
TGlzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5NDZEMzczMDFENkNCMjk0MDA3NzA4NEYgLyog
Q1NTUGFyc2VyVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRDlDMjY1MEMxN0FBNjcw
MDVDOTBBMiAvKiBKU05vZGVMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDOTFB
MzhGMUI0OThBQkUwMDNGOUVGQSAvKiBKU05vZGVPclN0cmluZy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkzMzUwM0NBMzEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmljYXRpb24uY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0yOTEwMSwxOSArMjkxNzUsMTkgQEAKIAkJCQlGQUJFNzJGNDEwNTlDMUVC
MDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGQUJFNzJG
RDEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEJDRjgzRjYxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEZyYWN0aW9uRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGQUJFNzJGNjEwNTlDMUVCMDBEOTk5REQgLyogTWF0
aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGQUJFNzJGODEw
NTlDMUVCMDBEOTk5REQgLyogTWF0aE1MTWF0aEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMDVEOTEzQ0VFQUIyQTYwNTM0MjE4QUNGIC8qIE1hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGQUJFNzJGRTEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1MTmFt
ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTZFQTI0Q0VFQUIyQTYwNTM0MjE4QUNGIC8qIE1h
dGhNTE9wZXJhdG9yRGljdGlvbmFyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGQTY1NEE2QjEx
MDhBQkVEMDAyNjE2RjEgLyogTWF0aE1MT3BlcmF0b3JFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUI1OUNBMzkwQ0VENjZDMzI1NUY3MkM1OSAvKiBNYXRoTUxQYWRkZWRFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUZBQkU3MkY2MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxQ
cmVzZW50YXRpb25FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZBNzY1QTZCMTEwOEFC
RUQwMDI2MTVFMCAvKiBNYXRoTUxSb3dFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1
OUNBMzkwQ0VENjZDMzI1NUY3MkI0OCAvKiBNYXRoTUxTY3JpcHRzRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGRUQ0ODM5MENFRDY2QzMyNTVGNzJDNTkgLyogTWF0aE1MU2VsZWN0RWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0RkE2NUE2QjExMDhBQkVEMDAyNjE1RTAgLyog
TWF0aE1MU3BhY2VFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzOTE3NkRGMTJEQTI1
RTE3QkFGODBBMiAvKiBNYXRoTUxTdHlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGQTY1NEE2
QjExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVG9rZW5FbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCUZBNzY1QTZCMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxSb3dFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZBNjU0QTZCMTEwOEFCRUQwMDI2MjZGMSAvKiBNYXRoTUxVbmRl
ck92ZXJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzOTA0NkU5MTJEQTI1RTgxMkFG
ODBBQyAvKiBNYXRoT3BlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlENURDMkIwRjQy
M0E3MzAwOEYyMEZEIC8qIE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMjkyMTUsNiArMjkyODksOCBAQAogCQkJCUM1M0QzOTM0MUM5NzhBNDUwMDdGM0FF
OSAvKiBNSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MkYxMDg2
NTE2MkI2REE0MDA5QUM4MUUgLyogTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlDREYyQjAxMDE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja0JveC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MTA1OEFERjFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNTEwNThBRTExRDY3QzIyOTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFk
UHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUVBM0Q2RTAxQzg1OUQ4NDAwMzAwQkJC
IC8qIE1vY2tNZWRpYUVuZHBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERjJCMDEyMTgy
MDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlDREYyQjAxNDE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhU291cmNlUHJp
dmF0ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5MjU3LDcgKzI5MzMzLDYgQEAKIAkJCQk0NDNG
MDQyNzBFNzVDOEZCMDA3RTU0MDcgLyogTmV0d29ya1N0YXRlTm90aWZpZXJJT1MubW0gaW4gU291
cmNlcyAqLywKIAkJCQkxQTdGQTY0OTBEREEzQ0JBMDAyOEY4QTUgLyogTmV0d29ya1N0YXRlTm90
aWZpZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMzQzg1NkQxRDVBN0FERTAwODhCOUVD
IC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTA1OEFE
RjFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTEzRUYzNDkxNjg1MEM0NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTI2OTM5NzI2MUE0QTVGQkQwMEU4MzQ5RCAvKiBORkEuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMjY3NzI2MDAxQTVCM0FEOTAwM0MyNEREIC8qIE5GQVRvREZB
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkyOTEsNyArMjkzNjYsNiBAQAogCQkJCUZEQTkzMjVE
MTY3MDNCMkEwMDg5ODJEQyAvKiBPZmZsaW5lQXVkaW9Db250ZXh0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUZEQTNFOTVCMTM0QTQ5RUYwMDhENEI1QSAvKiBPZmZsaW5lQXVkaW9EZXN0aW5hdGlv
bk5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJEM0RBNjQwRDAwNkNENjAwRUY2RjNBIC8q
IE9wZW5UeXBlQ0cuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTEwNThBRTExRDY3QzIyOTAwOUE1
MzhDIC8qIE1vY2tHYW1lcGFkUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJEM0RB
NjQwRDAwNkNENjAwRUY2RjI3IC8qIE9wZW5UeXBlTWF0aERhdGEuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0RFN0ZDNDQxODE5MDRCMTAwMkJCQjc3IC8qIE9yZGVySXRlcmF0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMDAxNDYyOEExMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0Vu
dHJ5LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkzNTAsNyArMjk0MjQsNiBAQAogCQkJCTBGNDND
ODVEMTg5RTEwQ0YwMDAxOUFFMiAvKiBQZXJmb3JtYW5jZVRpbWluZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGRDU4MUZCNDE1MjBGOTNCMDAzQTdBNzUgLyogUGVyaW9kaWNXYXZlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTQ5RDVEQzJEMEY0MjNBNzMwMDhGMjBGRCAvKiBQZXJzcGVjdGl2ZVRy
YW5zZm9ybU9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5NDZEMzczMzFENkNDNDJC
MDA3NzA4NEYgLyogU1ZHQ1NTUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQwRkYyQTVE
MTFGOEM0NUEwMDdFNzRFMCAvKiBQaW5nTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNE
N0QzMzQzMUM3QTEyM0YwMDA0MTI5MyAvKiBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGREY0NUE3MUJEMUM2RkQwMEU0RkE4QyAvKiBQbGF0Zm9ybUNBQW5p
bWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk3NjksNyArMjk4NDIsNiBAQAogCQkJCTkz
MzA5RTE1MDk5RTY0OTIwMDU2RTU4MSAvKiBTcGxpdFRleHROb2RlQ29udGFpbmluZ0VsZW1lbnRD
b21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExRTExNTQ4MTMwMTVDNUQwMDU0QUM4QyAv
KiBTcG90TGlnaHRTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCQzZBM0UxNTA1RjA4
MTAwMUI3NEFDIC8qIFNRTEV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3Q0VGMjYx
OTFENkE5MzE3MDBCRTkwNUQgLyogSlNDcnlwdG9DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUEyRTZFN0EwQ0M1NTZENTAwNEEyMDYyIC8qIFNRTGl0ZUF1dGhvcml6ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUEyMjQ2NDkwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZURhdGFiYXNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFNDc0RTIwMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxp
dGVEYXRhYmFzZVRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTg4NCw2ICsyOTk1Niw3
IEBACiAJCQkJQjIyMjc5QTEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0NvbG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyMjI3OUE0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0IwNTBEMDBC
RkYxMDA3MUI3ODIgLyogU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTk0NkQzNzMzMUQ2Q0M0MkIwMDc3MDg0RiAvKiBTVkdDU1NQYXJzZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5QTcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0N1cnNv
ckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5QUQwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0RlZnNFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUIwMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdEZXNjRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwMDg2
LDcgKzMwMTU5LDYgQEAKIAkJCQk3QUEzQTY5OTE5NEE2NEU3MDAxQ0JEMjQgLyogVGlsZUNvbnRy
b2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUY3MkJGMEExODdGRDQ0OTAwMDlCQ0IzIC8q
IFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
QUEzQTZBMzE5NEI1QzIyMDAxQ0JEMjQgLyogVGlsZUNvdmVyYWdlTWFwLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTk0NkQzNzJEMUQ2Q0IyOTQwMDc3MDg0RiAvKiBDU1NQYXJzZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0FBM0E2OUIxOTRBNjRFNzAwMUNCRDI0IC8qIFRpbGVHcmlkLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQ5ODc3MEYyMTI0MkM1MzUwMDIyMjZCQSAvKiBUaWxpbmdEYXRh
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1NUIzRERCMTI1MUYxMkQwMDNFRjI2OSAvKiBUaW1l
SW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U0FsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQWxsSW5P
bmUuY3BwCShyZXZpc2lvbiAyMDQ5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQWxsSW5P
bmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw5ICs2Miw5IEBACiAjaW5jbHVkZSAiQ1NTS2V5
ZnJhbWVSdWxlLmNwcCIKICNpbmNsdWRlICJDU1NLZXlmcmFtZXNSdWxlLmNwcCIKICNpbmNsdWRl
ICJDU1NMaW5lQm94Q29udGFpblZhbHVlLmNwcCIKKyNpbmNsdWRlICJDU1NNYXJrdXAuY3BwIgog
I2luY2x1ZGUgIkNTU01lZGlhUnVsZS5jcHAiCiAjaW5jbHVkZSAiQ1NTTmFtZWRJbWFnZVZhbHVl
LmNwcCIKLSNpbmNsdWRlICJDU1NPTVV0aWxzLmNwcCIKICNpbmNsdWRlICJDU1NQYWdlUnVsZS5j
cHAiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmNwcCIKICNpbmNsdWRlICJDU1NQYXJzZXJWYWx1ZXMu
Y3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU01hcmt1cC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU01hcmt1cC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0NTU01hcmt1cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
NTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9y
ZykKKyAqIENvcHlyaWdodCAoQykgMjAwNSBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gKGtkZUBjYXJl
d29sZi5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3IE5pY2hvbGFzIFNoYW5rcyA8d2Via2l0QG5pY2tz
aGFua3MuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtp
dC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNTU01hcmt1cC5oIgorCisjaW5j
bHVkZSAiQ1NTUGFyc2VySWRpb21zLmgiCisjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0NTU1Rva2VuaXplcklkZW50aWZp
ZXIoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQorewor
ICAgIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCA9IGNoYXJhY3RlcnMgKyBsZW5ndGg7CisKKyAg
ICAvLyAtPworICAgIGlmIChjaGFyYWN0ZXJzICE9IGVuZCAmJiBjaGFyYWN0ZXJzWzBdID09ICct
JykKKyAgICAgICAgKytjaGFyYWN0ZXJzOworCisgICAgLy8ge25tc3RhcnR9CisgICAgaWYgKGNo
YXJhY3RlcnMgPT0gZW5kIHx8ICFpc05hbWVTdGFydENvZGVQb2ludChjaGFyYWN0ZXJzWzBdKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICsrY2hhcmFjdGVyczsKKworICAgIC8vIHtubWNo
YXJ9KgorICAgIGZvciAoOyBjaGFyYWN0ZXJzICE9IGVuZDsgKytjaGFyYWN0ZXJzKSB7CisgICAg
ICAgIGlmICghaXNOYW1lQ29kZVBvaW50KGNoYXJhY3RlcnNbMF0pKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCisvLyAiaWRlbnQiIGZy
b20gdGhlIENTUyB0b2tlbml6ZXIsIG1pbnVzIGJhY2tzbGFzaC1lc2NhcGUgc2VxdWVuY2VzCitz
dGF0aWMgYm9vbCBpc0NTU1Rva2VuaXplcklkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcp
Cit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOworCisgICAgaWYgKCFs
ZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkp
CisgICAgICAgIHJldHVybiBpc0NTU1Rva2VuaXplcklkZW50aWZpZXIoc3RyaW5nLmNoYXJhY3Rl
cnM4KCksIGxlbmd0aCk7CisgICAgcmV0dXJuIGlzQ1NTVG9rZW5pemVySWRlbnRpZmllcihzdHJp
bmcuY2hhcmFjdGVyczE2KCksIGxlbmd0aCk7Cit9CisKK3N0YXRpYyB2b2lkIHNlcmlhbGl6ZUNo
YXJhY3RlcihVQ2hhcjMyIGMsIFN0cmluZ0J1aWxkZXImIGFwcGVuZFRvKQoreworICAgIGFwcGVu
ZFRvLmFwcGVuZCgnXFwnKTsKKyAgICBhcHBlbmRUby5hcHBlbmQoYyk7Cit9CisKK3N0YXRpYyB2
b2lkIHNlcmlhbGl6ZUNoYXJhY3RlckFzQ29kZVBvaW50KFVDaGFyMzIgYywgU3RyaW5nQnVpbGRl
ciYgYXBwZW5kVG8pCit7CisgICAgYXBwZW5kVG8uYXBwZW5kKCdcXCcpOworICAgIGFwcGVuZFVu
c2lnbmVkQXNIZXgoYywgYXBwZW5kVG8sIExvd2VyY2FzZSk7CisgICAgYXBwZW5kVG8uYXBwZW5k
KCcgJyk7Cit9CisKK3ZvaWQgc2VyaWFsaXplSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIFN0cmluZ0J1aWxkZXImIGFwcGVuZFRvLCBib29sIHNraXBTdGFydENoZWNrcykKK3sK
KyAgICBib29sIGlzRmlyc3QgPSAhc2tpcFN0YXJ0Q2hlY2tzOworICAgIGJvb2wgaXNTZWNvbmQg
PSBmYWxzZTsKKyAgICBib29sIGlzRmlyc3RDaGFySHlwaGVuID0gZmFsc2U7CisgICAgdW5zaWdu
ZWQgaW5kZXggPSAwOworICAgIHdoaWxlIChpbmRleCA8IGlkZW50aWZpZXIubGVuZ3RoKCkpIHsK
KyAgICAgICAgVUNoYXIzMiBjID0gaWRlbnRpZmllci5jaGFyYWN0ZXJTdGFydGluZ0F0KGluZGV4
KTsKKyAgICAgICAgaWYgKCFjKSB7CisgICAgICAgICAgICAvLyBDaGVjayBmb3IgbG9uZSBzdXJy
b2dhdGUgd2hpY2ggY2hhcmFjdGVyU3RhcnRpbmdBdCBkb2VzIG5vdCByZXR1cm4uCisgICAgICAg
ICAgICBjID0gaWRlbnRpZmllcltpbmRleF07CisgICAgICAgIH0KKworICAgICAgICBpbmRleCAr
PSBVMTZfTEVOR1RIKGMpOworCisgICAgICAgIGlmICghYykKKyAgICAgICAgICAgIGFwcGVuZFRv
LmFwcGVuZCgweGZmZmQpOworICAgICAgICBlbHNlIGlmIChjIDw9IDB4MWYgfHwgYyA9PSAweDdm
IHx8ICgweDMwIDw9IGMgJiYgYyA8PSAweDM5ICYmIChpc0ZpcnN0IHx8IChpc1NlY29uZCAmJiBp
c0ZpcnN0Q2hhckh5cGhlbikpKSkKKyAgICAgICAgICAgIHNlcmlhbGl6ZUNoYXJhY3RlckFzQ29k
ZVBvaW50KGMsIGFwcGVuZFRvKTsKKyAgICAgICAgZWxzZSBpZiAoYyA9PSAweDJkICYmIGlzRmly
c3QgJiYgaW5kZXggPT0gaWRlbnRpZmllci5sZW5ndGgoKSkKKyAgICAgICAgICAgIHNlcmlhbGl6
ZUNoYXJhY3RlcihjLCBhcHBlbmRUbyk7CisgICAgICAgIGVsc2UgaWYgKDB4ODAgPD0gYyB8fCBj
ID09IDB4MmQgfHwgYyA9PSAweDVmIHx8ICgweDMwIDw9IGMgJiYgYyA8PSAweDM5KSB8fCAoMHg0
MSA8PSBjICYmIGMgPD0gMHg1YSkgfHwgKDB4NjEgPD0gYyAmJiBjIDw9IDB4N2EpKQorICAgICAg
ICAgICAgYXBwZW5kVG8uYXBwZW5kKGMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXJp
YWxpemVDaGFyYWN0ZXIoYywgYXBwZW5kVG8pOworCisgICAgICAgIGlmIChpc0ZpcnN0KSB7Cisg
ICAgICAgICAgICBpc0ZpcnN0ID0gZmFsc2U7CisgICAgICAgICAgICBpc1NlY29uZCA9IHRydWU7
CisgICAgICAgICAgICBpc0ZpcnN0Q2hhckh5cGhlbiA9IChjID09IDB4MmQpOworICAgICAgICB9
IGVsc2UgaWYgKGlzU2Vjb25kKQorICAgICAgICAgICAgaXNTZWNvbmQgPSBmYWxzZTsKKyAgICB9
Cit9CisKK3ZvaWQgc2VyaWFsaXplU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBTdHJpbmdC
dWlsZGVyJiBhcHBlbmRUbykKK3sKKyAgICBhcHBlbmRUby5hcHBlbmQoJ1wiJyk7CisKKyAgICB1
bnNpZ25lZCBpbmRleCA9IDA7CisgICAgd2hpbGUgKGluZGV4IDwgc3RyaW5nLmxlbmd0aCgpKSB7
CisgICAgICAgIFVDaGFyMzIgYyA9IHN0cmluZy5jaGFyYWN0ZXJTdGFydGluZ0F0KGluZGV4KTsK
KyAgICAgICAgaW5kZXggKz0gVTE2X0xFTkdUSChjKTsKKworICAgICAgICBpZiAoYyA8PSAweDFm
IHx8IGMgPT0gMHg3ZikKKyAgICAgICAgICAgIHNlcmlhbGl6ZUNoYXJhY3RlckFzQ29kZVBvaW50
KGMsIGFwcGVuZFRvKTsKKyAgICAgICAgZWxzZSBpZiAoYyA9PSAweDIyIHx8IGMgPT0gMHg1YykK
KyAgICAgICAgICAgIHNlcmlhbGl6ZUNoYXJhY3RlcihjLCBhcHBlbmRUbyk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGFwcGVuZFRvLmFwcGVuZChjKTsKKyAgICB9CisKKyAgICBhcHBlbmRU
by5hcHBlbmQoJ1wiJyk7Cit9CisKK1N0cmluZyBzZXJpYWxpemVTdHJpbmcoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIHNlcmlhbGl6ZVN0
cmluZyhzdHJpbmcsIGJ1aWxkZXIpOworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9
CisKK1N0cmluZyBzZXJpYWxpemVVUkkoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgcmV0
dXJuICJ1cmwoIiArIHNlcmlhbGl6ZVN0cmluZyhzdHJpbmcpICsgIikiOworfQorCitTdHJpbmcg
c2VyaWFsaXplRm9udEZhbWlseShjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICByZXR1cm4g
aXNDU1NUb2tlbml6ZXJJZGVudGlmaWVyKHN0cmluZykgPyBzdHJpbmcgOiBzZXJpYWxpemVTdHJp
bmcoc3RyaW5nKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL0NTU01hcmt1cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NNYXJrdXAuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWFya3Vw
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwMyBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQu
b3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5IC0gMjAxMCAgVG9yY2ggTW9iaWxlIChCZWlqaW5n
KSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIENTU01hcmt1cF9oCisjZGVm
aW5lIENTU01hcmt1cF9oCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworLy8g
SGVscGVyIGZ1bmN0aW9ucyBmb3IgY29udmVydGluZyBmcm9tIENTU1ZhbHVlcyB0byB0ZXh0Lgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIENvbW1vbiBzZXJpYWxpemluZyBtZXRob2RzLiBT
ZWU6IGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzc29tLyNjb21tb24tc2VyaWFsaXppbmctaWRp
b21zCit2b2lkIHNlcmlhbGl6ZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBT
dHJpbmdCdWlsZGVyJiBhcHBlbmRUbywgYm9vbCBza2lwU3RhcnRDaGVja3MgPSBmYWxzZSk7Cit2
b2lkIHNlcmlhbGl6ZVN0cmluZyhjb25zdCBTdHJpbmcmLCBTdHJpbmdCdWlsZGVyJiBhcHBlbmRU
byk7CitTdHJpbmcgc2VyaWFsaXplU3RyaW5nKGNvbnN0IFN0cmluZyYpOworU3RyaW5nIHNlcmlh
bGl6ZVVSSShjb25zdCBTdHJpbmcmKTsKK1N0cmluZyBzZXJpYWxpemVGb250RmFtaWx5KGNvbnN0
IFN0cmluZyYpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NNYXJr
dXBfaApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU09NVXRpbHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NPTVV0aWxzLmNwcAkocmV2aXNpb24gMjA0OTc4KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0NTU09NVXRpbHMuY3BwCShub25leGlzdGVudCkKQEAgLTEs
MTA2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ1NTT01VdGlscy5oIgot
Ci0jaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIHNlcmlhbGl6ZUNoYXJhY3Rl
cihVQ2hhcjMyIGMsIFN0cmluZ0J1aWxkZXImIGFwcGVuZFRvKQotewotICAgIGFwcGVuZFRvLmFw
cGVuZCgnXFwnKTsKLSAgICBhcHBlbmRUby5hcHBlbmQoYyk7Ci19Ci0KLXZvaWQgc2VyaWFsaXpl
Q2hhcmFjdGVyQXNDb2RlUG9pbnQoVUNoYXIzMiBjLCBTdHJpbmdCdWlsZGVyJiBhcHBlbmRUbykK
LXsKLSAgICBhcHBlbmRUby5hcHBlbmQoJ1xcJyk7Ci0gICAgYXBwZW5kVW5zaWduZWRBc0hleChj
LCBhcHBlbmRUbywgTG93ZXJjYXNlKTsKLSAgICBhcHBlbmRUby5hcHBlbmQoJyAnKTsKLX0KLQot
dm9pZCBzZXJpYWxpemVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgU3RyaW5n
QnVpbGRlciYgYXBwZW5kVG8pCi17Ci0gICAgYm9vbCBpc0ZpcnN0ID0gdHJ1ZTsKLSAgICBib29s
IGlzU2Vjb25kID0gZmFsc2U7Ci0gICAgYm9vbCBpc0ZpcnN0Q2hhckh5cGhlbiA9IGZhbHNlOwot
ICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKLSAgICB3aGlsZSAoaW5kZXggPCBpZGVudGlmaWVyLmxl
bmd0aCgpKSB7Ci0gICAgICAgIFVDaGFyMzIgYyA9IGlkZW50aWZpZXIuY2hhcmFjdGVyU3RhcnRp
bmdBdChpbmRleCk7Ci0gICAgICAgIGlmICghYykgewotICAgICAgICAgICAgLy8gQ2hlY2sgZm9y
IGxvbmUgc3Vycm9nYXRlIHdoaWNoIGNoYXJhY3RlclN0YXJ0aW5nQXQgZG9lcyBub3QgcmV0dXJu
LgotICAgICAgICAgICAgYyA9IGlkZW50aWZpZXJbaW5kZXhdOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaW5kZXggKz0gVTE2X0xFTkdUSChjKTsKLQotICAgICAgICBpZiAoIWMpCi0gICAgICAgICAg
ICBhcHBlbmRUby5hcHBlbmQoMHhmZmZkKTsKLSAgICAgICAgZWxzZSBpZiAoYyA8PSAweDFmIHx8
IGMgPT0gMHg3ZiB8fCAoMHgzMCA8PSBjICYmIGMgPD0gMHgzOSAmJiAoaXNGaXJzdCB8fCAoaXNT
ZWNvbmQgJiYgaXNGaXJzdENoYXJIeXBoZW4pKSkpCi0gICAgICAgICAgICBzZXJpYWxpemVDaGFy
YWN0ZXJBc0NvZGVQb2ludChjLCBhcHBlbmRUbyk7Ci0gICAgICAgIGVsc2UgaWYgKGMgPT0gMHgy
ZCAmJiBpc0ZpcnN0ICYmIGluZGV4ID09IGlkZW50aWZpZXIubGVuZ3RoKCkpCi0gICAgICAgICAg
ICBzZXJpYWxpemVDaGFyYWN0ZXIoYywgYXBwZW5kVG8pOwotICAgICAgICBlbHNlIGlmICgweDgw
IDw9IGMgfHwgYyA9PSAweDJkIHx8IGMgPT0gMHg1ZiB8fCAoMHgzMCA8PSBjICYmIGMgPD0gMHgz
OSkgfHwgKDB4NDEgPD0gYyAmJiBjIDw9IDB4NWEpIHx8ICgweDYxIDw9IGMgJiYgYyA8PSAweDdh
KSkKLSAgICAgICAgICAgIGFwcGVuZFRvLmFwcGVuZChjKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgc2VyaWFsaXplQ2hhcmFjdGVyKGMsIGFwcGVuZFRvKTsKLQotICAgICAgICBpZiAoaXNG
aXJzdCkgewotICAgICAgICAgICAgaXNGaXJzdCA9IGZhbHNlOwotICAgICAgICAgICAgaXNTZWNv
bmQgPSB0cnVlOwotICAgICAgICAgICAgaXNGaXJzdENoYXJIeXBoZW4gPSAoYyA9PSAweDJkKTsK
LSAgICAgICAgfSBlbHNlIGlmIChpc1NlY29uZCkKLSAgICAgICAgICAgIGlzU2Vjb25kID0gZmFs
c2U7Ci0gICAgfQotfQotCi12b2lkIHNlcmlhbGl6ZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmlu
ZywgU3RyaW5nQnVpbGRlciYgYXBwZW5kVG8pCi17Ci0gICAgYXBwZW5kVG8uYXBwZW5kKCdcIicp
OwotCi0gICAgdW5zaWduZWQgaW5kZXggPSAwOwotICAgIHdoaWxlIChpbmRleCA8IHN0cmluZy5s
ZW5ndGgoKSkgewotICAgICAgICBVQ2hhcjMyIGMgPSBzdHJpbmcuY2hhcmFjdGVyU3RhcnRpbmdB
dChpbmRleCk7Ci0gICAgICAgIGluZGV4ICs9IFUxNl9MRU5HVEgoYyk7Ci0gICAgICAgIGlmIChj
IDw9IDB4MWYpCi0gICAgICAgICAgICBzZXJpYWxpemVDaGFyYWN0ZXJBc0NvZGVQb2ludChjLCBh
cHBlbmRUbyk7Ci0gICAgICAgIGVsc2UgaWYgKGMgPT0gMHgyMiB8fCBjID09IDB4NWMpCi0gICAg
ICAgICAgICBzZXJpYWxpemVDaGFyYWN0ZXIoYywgYXBwZW5kVG8pOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBhcHBlbmRUby5hcHBlbmQoYyk7Ci0gICAgfQotCi0gICAgYXBwZW5kVG8uYXBw
ZW5kKCdcIicpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTT01VdGlscy5jcHAKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVk
OiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTT01VdGlscy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NPTVV0aWxzLmgJKHJldmlzaW9uIDIwNDk3
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NPTVV0aWxzLmgJKG5vbmV4aXN0ZW50KQpAQCAt
MSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx1bmljb2RlL3VtYWNoaW5lLmg+
Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotLy8gVXRpbGl0aWVzIGZvciBDU1NPTSBodHRw
Oi8vZGV2LnczLm9yZy9jc3N3Zy9jc3NvbS8KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBD
b21tb24gc2VyaWFsaXppbmcgbWV0aG9kcy4gU2VlOiBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9j
c3NvbS8jY29tbW9uLXNlcmlhbGl6aW5nLWlkaW9tcwotdm9pZCBzZXJpYWxpemVDaGFyYWN0ZXIo
VUNoYXIzMiwgU3RyaW5nQnVpbGRlciYpOwotdm9pZCBzZXJpYWxpemVDaGFyYWN0ZXJBc0NvZGVQ
b2ludChVQ2hhcjMyLCBTdHJpbmdCdWlsZGVyJik7Ci12b2lkIHNlcmlhbGl6ZUlkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBTdHJpbmdCdWlsZGVyJik7Ci12b2lkIHNlcmlhbGl6
ZVN0cmluZyhjb25zdCBTdHJpbmcmLCBTdHJpbmdCdWlsZGVyJik7Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NPTVV0
aWxzLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5h
dGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDIwNDk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogCi0jaW5jbHVkZSAiQ1NTT01V
dGlscy5oIgorI2luY2x1ZGUgIkNTU01hcmt1cC5oIgogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlz
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIlNlbGVjdG9yUHNldWRvVHlw
ZU1hcC5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU05hbWVzcGFjZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU05hbWVzcGFjZS5jcHAJKHJldmlz
aW9uIDIwNDk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NOYW1lc3BhY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiRE9NQ1NTTmFtZXNwYWNlLmgiCiAKLSNpbmNsdWRlICJDU1NPTVV0aWxzLmgiCisjaW5j
bHVkZSAiQ1NTTWFya3VwLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiU3R5
bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gMjA0OTc4
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwMyBMYXJzIEtub2xs
IChrbm9sbEBrZGUub3JnKQogICogQ29weXJpZ2h0IChDKSAyMDA1IEFsbGFuIFNhbmRmZWxkIEpl
bnNlbiAoa2RlQGNhcmV3b2xmLmNvbSkKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBOaWNo
b2xhcyBTaGFua3MgPHdlYmtpdEBuaWNrc2hhbmtzLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAw
OCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA5IFRv
cmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9i
aWxlLmNvbS8pCkBAIC0xMzY4OCw3ICsxMzY4OCw3IEBAIENTU1ZhbHVlSUQgY3NzVmFsdWVLZXl3
b3JkSUQoY29uc3QgQ1NTUGEKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNDU1NUb2tlbml6ZXJJZGVudGlmaWVyKGNvbnN0IENoYXJh
Y3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3N0YXRpYyBpbmxpbmUgYm9v
bCBpc0NTU1Rva2VuaXplcklkZW50KGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVu
c2lnbmVkIGxlbmd0aCkKIHsKICAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBlbmQgPSBjaGFyYWN0
ZXJzICsgbGVuZ3RoOwogCkBAIC0xMzcxMSw3ICsxMzcxMSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBpc0NTU1Rva2VuaXplcklkZW50aWYKIH0KIAogLy8gImlkZW50IiBmcm9tIHRoZSBDU1MgdG9r
ZW5pemVyLCBtaW51cyBiYWNrc2xhc2gtZXNjYXBlIHNlcXVlbmNlcwotc3RhdGljIGJvb2wgaXND
U1NUb2tlbml6ZXJJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorc3RhdGljIGJvb2wg
aXNDU1NUb2tlbml6ZXJJZGVudChjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICB1bnNpZ25l
ZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CiAKQEAgLTEzNzE5LDggKzEzNzE5LDggQEAgc3Rh
dGljIGJvb2wgaXNDU1NUb2tlbml6ZXJJZGVudGlmaWVyKGNvbgogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gaXNDU1NUb2tl
bml6ZXJJZGVudGlmaWVyKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpOwotICAgIHJldHVy
biBpc0NTU1Rva2VuaXplcklkZW50aWZpZXIoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgp
OworICAgICAgICByZXR1cm4gaXNDU1NUb2tlbml6ZXJJZGVudChzdHJpbmcuY2hhcmFjdGVyczgo
KSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gaXNDU1NUb2tlbml6ZXJJZGVudChzdHJpbmcuY2hhcmFj
dGVyczE2KCksIGxlbmd0aCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PgpAQCAtMTM4MzQsNyArMTM4MzQsNyBAQCBTdHJpbmcgcXVvdGVDU1NTdHJpbmcoY29uc3QgU3Ry
aW5nJiBzdHJpCiAKIFN0cmluZyBxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogewotICAgIHJldHVybiBpc0NTU1Rva2VuaXplcklkZW50aWZpZXIoc3RyaW5nKSA/
IHN0cmluZyA6IHF1b3RlQ1NTU3RyaW5nKHN0cmluZyk7CisgICAgcmV0dXJuIGlzQ1NTVG9rZW5p
emVySWRlbnQoc3RyaW5nKSA/IHN0cmluZyA6IHF1b3RlQ1NTU3RyaW5nKHN0cmluZyk7CiB9CiAK
IFN0cmluZyBxdW90ZUNTU1VSTElmTmVlZGVkKGNvbnN0IFN0cmluZyYgc3RyaW5nKQpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQ
YXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTE4IEBACisvLyBDb3B5cmlnaHQg
MjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8g
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24u
CisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJDU1NQYXJzZXJGYXN0UGF0aHMuaCIKKworLy8gRklYTUUtTkVXUEFSU0VSOiAjaW5j
bHVkZSAiQ1NTQ29sb3JWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0Z1bmN0aW9uVmFsdWUuaCIKKyNp
bmNsdWRlICJDU1NJbmhlcml0ZWRWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0luaXRpYWxWYWx1ZS5o
IgorI2luY2x1ZGUgIkNTU1BhcnNlcklkaW9tcy5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZh
bHVlLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlQYXJzZXIuaCIKKyNpbmNsdWRlICJIVE1MUGFy
c2VySWRpb21zLmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorLy8gRklY
TUUtTkVXUEFSU0VSOiAjaW5jbHVkZSAiU3R5bGVDb2xvci5oIgorI2luY2x1ZGUgIlN0eWxlUHJv
cGVydHlTaG9ydGhhbmQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvKiBGSVhNRS1ORVdQ
QVJTRVI6IFR1cm4gb2ZmIGZvciBub3cuCisgCitzdGF0aWMgaW5saW5lIGJvb2wgaXNTaW1wbGVM
ZW5ndGhQcm9wZXJ0eUlEKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCwgYm9vbCYgYWNjZXB0c05l
Z2F0aXZlTnVtYmVycykKK3sKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKKyAgICBjYXNlIENT
U1Byb3BlcnR5Rm9udFNpemU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRDb2x1bW5HYXA6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRSb3dHYXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUhlaWdo
dDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbkhl
aWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWluV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVBhZGRpbmdCb3R0b206CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0OgorICAgIGNh
c2UgQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdU
b3A6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxXaWR0aDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TG9naWNhbEhlaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWluTG9naWNhbFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsSGVp
Z2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nQWZ0ZXI6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFBhZGRpbmdFbmQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdTdGFydDoKKyAg
Ly8gIGNhc2UgQ1NTUHJvcGVydHlTaGFwZU1hcmdpbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5UjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5Ung6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVJ5OgorICAgICAg
ICBhY2NlcHRzTmVnYXRpdmVOdW1iZXJzID0gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3R0b206CisgICAgY2FzZSBDU1NQcm9wZXJ0eUN4OgorICAg
IGNhc2UgQ1NTUHJvcGVydHlDeToKKyAgICBjYXNlIENTU1Byb3BlcnR5TGVmdDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5TWFyZ2luQm90dG9tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5SaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
TWFyZ2luVG9wOgorIC8vICAgY2FzZSBDU1NQcm9wZXJ0eU1vdGlvbk9mZnNldDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5UmlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRvcDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
cmdpbkJlZm9yZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luRW5kOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5TdGFydDoKKyAgICBjYXNlIENTU1Byb3BlcnR5WDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5WToKKyAgICAgICAgYWNjZXB0c05lZ2F0aXZlTnVtYmVycyA9
IHRydWU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgor
c3RhdGljIGlubGluZSBib29sIHBhcnNlU2ltcGxlTGVuZ3RoKGNvbnN0IENoYXJhY3RlclR5cGUq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBl
cyYgdW5pdCwgZG91YmxlJiBudW1iZXIpCit7CisgICAgaWYgKGxlbmd0aCA+IDIgJiYgKGNoYXJh
Y3RlcnNbbGVuZ3RoIC0gMl0gfCAweDIwKSA9PSAncCcgJiYgKGNoYXJhY3RlcnNbbGVuZ3RoIC0g
MV0gfCAweDIwKSA9PSAneCcpIHsKKyAgICAgICAgbGVuZ3RoIC09IDI7CisgICAgICAgIHVuaXQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUFg7CisgICAgfSBlbHNlIGlmIChs
ZW5ndGggPiAxICYmIGNoYXJhY3RlcnNbbGVuZ3RoIC0gMV0gPT0gJyUnKSB7CisgICAgICAgIGxl
bmd0aCAtPSAxOworICAgICAgICB1bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6
Q1NTX1BFUkNFTlRBR0U7CisgICAgfQorCisgICAgLy8gV2UgcmVseSBvbiBjaGFyYWN0ZXJzVG9E
b3VibGUgZm9yIHZhbGlkYXRpb24gYXMgd2VsbC4gVGhlIGZ1bmN0aW9uCisgICAgLy8gd2lsbCBz
ZXQgIm9rIiB0byAiZmFsc2UiIGlmIHRoZSBlbnRpcmUgcGFzc2VkLWluIGNoYXJhY3RlciByYW5n
ZSBkb2VzCisgICAgLy8gbm90IHJlcHJlc2VudCBhIGRvdWJsZS4KKyAgICBib29sIG9rOworICAg
IG51bWJlciA9IGNoYXJhY3RlcnNUb0RvdWJsZShjaGFyYWN0ZXJzLCBsZW5ndGgsICZvayk7Cisg
ICAgaWYgKCFvaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG51bWJlciA9IGNsYW1wVG88
ZG91YmxlPihudW1iZXIsIC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCksIHN0ZDo6
bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0
YXRpYyBDU1NWYWx1ZSogcGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUp
Cit7CisgICAgQVNTRVJUKCFzdHJpbmcuaXNFbXB0eSgpKTsKKyAgICBib29sIGFjY2VwdHNOZWdh
dGl2ZU51bWJlcnMgPSBmYWxzZTsKKworICAgIC8vIEluIEB2aWV3cG9ydCwgd2lkdGggYW5kIGhl
aWdodCBhcmUgc2hvcnRoYW5kcywgbm90IHNpbXBsZSBsZW5ndGggdmFsdWVzLgorICAgIGlmIChp
c0NTU1ZpZXdwb3J0UGFyc2luZ0VuYWJsZWRGb3JNb2RlKGNzc1BhcnNlck1vZGUpIHx8ICFpc1Np
bXBsZUxlbmd0aFByb3BlcnR5SUQocHJvcGVydHlJZCwgYWNjZXB0c05lZ2F0aXZlTnVtYmVycykp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5n
Lmxlbmd0aCgpOworICAgIGRvdWJsZSBudW1iZXI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlcyB1bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6TnVtYmVyOworCisg
ICAgaWYgKHN0cmluZy5pczhCaXQoKSkgeworICAgICAgICBpZiAoIXBhcnNlU2ltcGxlTGVuZ3Ro
KHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgsIHVuaXQsIG51bWJlcikpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIXBhcnNlU2ltcGxl
TGVuZ3RoKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoLCB1bml0LCBudW1iZXIpKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKHVuaXQgPT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6TnVtYmVyKSB7CisgICAgICAgIGlmIChjc3NQYXJzZXJN
b2RlID09IFNWR0F0dHJpYnV0ZU1vZGUpCisgICAgICAgICAgICB1bml0ID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OlVuaXRUeXBlczo6VXNlclVuaXRzOworICAgICAgICBlbHNlIGlmICghbnVtYmVyKQor
ICAgICAgICAgICAgdW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OlBpeGVsczsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAg
aWYgKG51bWJlciA8IDAgJiYgIWFjY2VwdHNOZWdhdGl2ZU51bWJlcnMpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobnVtYmVy
LCB1bml0KTsKK30KKworc3RhdGljIGlubGluZSBib29sIGlzQ29sb3JQcm9wZXJ0eUlEKENTU1By
b3BlcnR5SUQgcHJvcGVydHlJZCkKK3sKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKKyAgICBj
YXNlIENTU1Byb3BlcnR5Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
cjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3I6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlckxlZnRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRD
b2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3I6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUZpbGw6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsb29kQ29sb3I6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUxpZ2h0aW5nQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVDb2xv
cjoKKyAgICBjYXNlIENTU1Byb3BlcnR5U3RvcENvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlT
dHJva2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3I6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJFbmRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyU3RhcnRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1uUnVsZUNvbG9yOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcjoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4
dFN0cm9rZUNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkNvbG9yOgor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorfQorCisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB3aGljaCBm
b3JtIGEgdmFsaWQgZG91YmxlCisvLyBhbmQgYXJlIHRlcm1pbmF0ZWQgYnkgdGhlIGdpdmVuIHRl
cm1pbmF0b3IgY2hhcmFjdGVyCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0
YXRpYyBpbnQgY2hlY2tGb3JWYWxpZERvdWJsZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBzdHJpbmcs
IGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCwgY29uc3QgY2hhciB0ZXJtaW5hdG9yKQoreworICAg
IGludCBsZW5ndGggPSBlbmQgLSBzdHJpbmc7CisgICAgaWYgKGxlbmd0aCA8IDEpCisgICAgICAg
IHJldHVybiAwOworCisgICAgYm9vbCBkZWNpbWFsTWFya1NlZW4gPSBmYWxzZTsKKyAgICBpbnQg
cHJvY2Vzc2VkTGVuZ3RoID0gMDsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgaWYgKHN0cmluZ1tpXSA9PSB0ZXJtaW5hdG9yKSB7CisgICAgICAgICAg
ICBwcm9jZXNzZWRMZW5ndGggPSBpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoc3RyaW5nW2ldKSkgeworICAgICAgICAgICAgaWYgKCFk
ZWNpbWFsTWFya1NlZW4gJiYgc3RyaW5nW2ldID09ICcuJykKKyAgICAgICAgICAgICAgICBkZWNp
bWFsTWFya1NlZW4gPSB0cnVlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGRlY2ltYWxNYXJrU2VlbiAmJiBw
cm9jZXNzZWRMZW5ndGggPT0gMSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gcHJv
Y2Vzc2VkTGVuZ3RoOworfQorCisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBj
b25zdW1lZCBmb3IgcGFyc2luZyBhIHZhbGlkIGRvdWJsZQorLy8gdGVybWluYXRlZCBieSB0aGUg
Z2l2ZW4gdGVybWluYXRvciBjaGFyYWN0ZXIKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPgorc3RhdGljIGludCBwYXJzZURvdWJsZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBzdHJpbmcs
IGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCwgY29uc3QgY2hhciB0ZXJtaW5hdG9yLCBkb3VibGUm
IHZhbHVlKQoreworICAgIGludCBsZW5ndGggPSBjaGVja0ZvclZhbGlkRG91YmxlKHN0cmluZywg
ZW5kLCB0ZXJtaW5hdG9yKTsKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBpbnQgcG9zaXRpb24gPSAwOworICAgIGRvdWJsZSBsb2NhbFZhbHVlID0gMDsKKworICAg
IC8vIFRoZSBjb25zdW1lZCBjaGFyYWN0ZXJzIGhlcmUgYXJlIGd1YXJhbnRlZWQgdG8gYmUKKyAg
ICAvLyBBU0NJSSBkaWdpdHMgd2l0aCBvciB3aXRob3V0IGEgZGVjaW1hbCBtYXJrCisgICAgZm9y
ICg7IHBvc2l0aW9uIDwgbGVuZ3RoOyArK3Bvc2l0aW9uKSB7CisgICAgICAgIGlmIChzdHJpbmdb
cG9zaXRpb25dID09ICcuJykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBsb2NhbFZhbHVl
ID0gbG9jYWxWYWx1ZSAqIDEwICsgc3RyaW5nW3Bvc2l0aW9uXSAtICcwJzsKKyAgICB9CisKKyAg
ICBpZiAoKytwb3NpdGlvbiA9PSBsZW5ndGgpIHsKKyAgICAgICAgdmFsdWUgPSBsb2NhbFZhbHVl
OworICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgIH0KKworICAgIGRvdWJsZSBmcmFjdGlvbiA9
IDA7CisgICAgZG91YmxlIHNjYWxlID0gMTsKKworICAgIGNvbnN0IGRvdWJsZSBtYXhTY2FsZSA9
IDEwMDAwMDA7CisgICAgd2hpbGUgKHBvc2l0aW9uIDwgbGVuZ3RoICYmIHNjYWxlIDwgbWF4U2Nh
bGUpIHsKKyAgICAgICAgZnJhY3Rpb24gPSBmcmFjdGlvbiAqIDEwICsgc3RyaW5nW3Bvc2l0aW9u
KytdIC0gJzAnOworICAgICAgICBzY2FsZSAqPSAxMDsKKyAgICB9CisKKyAgICB2YWx1ZSA9IGxv
Y2FsVmFsdWUgKyBmcmFjdGlvbiAvIHNjYWxlOworICAgIHJldHVybiBsZW5ndGg7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGJvb2wgcGFyc2VDb2xvcklu
dE9yUGVyY2VudGFnZShjb25zdCBDaGFyYWN0ZXJUeXBlKiYgc3RyaW5nLCBjb25zdCBDaGFyYWN0
ZXJUeXBlKiBlbmQsIGNvbnN0IGNoYXIgdGVybWluYXRvciwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlcyYgZXhwZWN0LCBpbnQmIHZhbHVlKQoreworICAgIGNvbnN0IENoYXJhY3RlclR5cGUq
IGN1cnJlbnQgPSBzdHJpbmc7CisgICAgZG91YmxlIGxvY2FsVmFsdWUgPSAwOworICAgIGJvb2wg
bmVnYXRpdmUgPSBmYWxzZTsKKyAgICB3aGlsZSAoY3VycmVudCAhPSBlbmQgJiYgaXNIVE1MU3Bh
Y2U8Q2hhcmFjdGVyVHlwZT4oKmN1cnJlbnQpKQorICAgICAgICBjdXJyZW50Kys7CisgICAgaWYg
KGN1cnJlbnQgIT0gZW5kICYmICpjdXJyZW50ID09ICctJykgeworICAgICAgICBuZWdhdGl2ZSA9
IHRydWU7CisgICAgICAgIGN1cnJlbnQrKzsKKyAgICB9CisgICAgaWYgKGN1cnJlbnQgPT0gZW5k
IHx8ICFpc0FTQ0lJRGlnaXQoKmN1cnJlbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
d2hpbGUgKGN1cnJlbnQgIT0gZW5kICYmIGlzQVNDSUlEaWdpdCgqY3VycmVudCkpIHsKKyAgICAg
ICAgZG91YmxlIG5ld1ZhbHVlID0gbG9jYWxWYWx1ZSAqIDEwICsgKmN1cnJlbnQrKyAtICcwJzsK
KyAgICAgICAgaWYgKG5ld1ZhbHVlID49IDI1NSkgeworICAgICAgICAgICAgLy8gQ2xhbXAgdmFs
dWVzIGF0IDI1NS4KKyAgICAgICAgICAgIGxvY2FsVmFsdWUgPSAyNTU7CisgICAgICAgICAgICB3
aGlsZSAoY3VycmVudCAhPSBlbmQgJiYgaXNBU0NJSURpZ2l0KCpjdXJyZW50KSkKKyAgICAgICAg
ICAgICAgICArK2N1cnJlbnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBsb2NhbFZhbHVlID0gbmV3VmFsdWU7CisgICAgfQorCisgICAgaWYgKGN1cnJlbnQgPT0gZW5k
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoZXhwZWN0ID09IENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZXM6Ok51bWJlciAmJiAoKmN1cnJlbnQgPT0gJy4nIHx8ICpjdXJyZW50
ID09ICclJykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgqY3VycmVudCA9PSAn
LicpIHsKKyAgICAgICAgLy8gV2UgYWxyZWFkeSBwYXJzZWQgdGhlIGludGVncmFsIHBhcnQsIHRy
eSB0byBwYXJzZQorICAgICAgICAvLyB0aGUgZnJhY3Rpb24gcGFydCBvZiB0aGUgcGVyY2VudGFn
ZSB2YWx1ZS4KKyAgICAgICAgZG91YmxlIHBlcmNlbnRhZ2UgPSAwOworICAgICAgICBpbnQgbnVt
Q2hhcmFjdGVyc1BhcnNlZCA9IHBhcnNlRG91YmxlKGN1cnJlbnQsIGVuZCwgJyUnLCBwZXJjZW50
YWdlKTsKKyAgICAgICAgaWYgKCFudW1DaGFyYWN0ZXJzUGFyc2VkKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBjdXJyZW50ICs9IG51bUNoYXJhY3RlcnNQYXJzZWQ7CisgICAg
ICAgIGlmICgqY3VycmVudCAhPSAnJScpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGxvY2FsVmFsdWUgKz0gcGVyY2VudGFnZTsKKyAgICB9CisKKyAgICBpZiAoZXhwZWN0ID09
IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OlBlcmNlbnRhZ2UgJiYgKmN1cnJlbnQgIT0g
JyUnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoKmN1cnJlbnQgPT0gJyUnKSB7
CisgICAgICAgIGV4cGVjdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OlBlcmNlbnRh
Z2U7CisgICAgICAgIGxvY2FsVmFsdWUgPSBsb2NhbFZhbHVlIC8gMTAwLjAgKiAyNTYuMDsKKyAg
ICAgICAgLy8gQ2xhbXAgdmFsdWVzIGF0IDI1NSBmb3IgcGVyY2VudGFnZXMgb3ZlciAxMDAlCisg
ICAgICAgIGlmIChsb2NhbFZhbHVlID4gMjU1KQorICAgICAgICAgICAgbG9jYWxWYWx1ZSA9IDI1
NTsKKyAgICAgICAgY3VycmVudCsrOworICAgIH0gZWxzZSB7CisgICAgICAgIGV4cGVjdCA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6Ok51bWJlcjsKKyAgICB9CisKKyAgICB3aGlsZSAo
Y3VycmVudCAhPSBlbmQgJiYgaXNIVE1MU3BhY2U8Q2hhcmFjdGVyVHlwZT4oKmN1cnJlbnQpKQor
ICAgICAgICBjdXJyZW50Kys7CisgICAgaWYgKGN1cnJlbnQgPT0gZW5kIHx8ICpjdXJyZW50Kysg
IT0gdGVybWluYXRvcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIENsYW1wIG5lZ2F0
aXZlIHZhbHVlcyBhdCB6ZXJvLgorICAgIHZhbHVlID0gbmVnYXRpdmUgPyAwIDogc3RhdGljX2Nh
c3Q8aW50Pihsb2NhbFZhbHVlKTsKKyAgICBzdHJpbmcgPSBjdXJyZW50OworICAgIHJldHVybiB0
cnVlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBpbmxp
bmUgYm9vbCBpc1RlbnRoQWxwaGEoY29uc3QgQ2hhcmFjdGVyVHlwZSogc3RyaW5nLCBjb25zdCBp
bnQgbGVuZ3RoKQoreworICAgIC8vICIwLlgiCisgICAgaWYgKGxlbmd0aCA9PSAzICYmIHN0cmlu
Z1swXSA9PSAnMCcgJiYgc3RyaW5nWzFdID09ICcuJyAmJiBpc0FTQ0lJRGlnaXQoc3RyaW5nWzJd
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyAiLlgiCisgICAgaWYgKGxlbmd0aCA9
PSAyICYmIHN0cmluZ1swXSA9PSAnLicgJiYgaXNBU0NJSURpZ2l0KHN0cmluZ1sxXSkpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBpbmxpbmUgYm9vbCBwYXJzZUFscGhhVmFsdWUo
Y29uc3QgQ2hhcmFjdGVyVHlwZSomIHN0cmluZywgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kLCBj
b25zdCBjaGFyIHRlcm1pbmF0b3IsIGludCYgdmFsdWUpCit7CisgICAgd2hpbGUgKHN0cmluZyAh
PSBlbmQgJiYgaXNIVE1MU3BhY2U8Q2hhcmFjdGVyVHlwZT4oKnN0cmluZykpCisgICAgICAgIHN0
cmluZysrOworCisgICAgYm9vbCBuZWdhdGl2ZSA9IGZhbHNlOworCisgICAgaWYgKHN0cmluZyAh
PSBlbmQgJiYgKnN0cmluZyA9PSAnLScpIHsKKyAgICAgICAgbmVnYXRpdmUgPSB0cnVlOworICAg
ICAgICBzdHJpbmcrKzsKKyAgICB9CisKKyAgICB2YWx1ZSA9IDA7CisKKyAgICBpbnQgbGVuZ3Ro
ID0gZW5kIC0gc3RyaW5nOworICAgIGlmIChsZW5ndGggPCAyKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZiAoc3RyaW5nW2xlbmd0aCAtIDFdICE9IHRlcm1pbmF0b3IgfHwgIWlzQVND
SUlEaWdpdChzdHJpbmdbbGVuZ3RoIC0gMl0pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoc3RyaW5nWzBdICE9ICcwJyAmJiBzdHJpbmdbMF0gIT0gJzEnICYmIHN0cmluZ1swXSAh
PSAnLicpIHsKKyAgICAgICAgaWYgKGNoZWNrRm9yVmFsaWREb3VibGUoc3RyaW5nLCBlbmQsIHRl
cm1pbmF0b3IpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IG5lZ2F0aXZlID8gMCA6IDI1NTsKKyAg
ICAgICAgICAgIHN0cmluZyA9IGVuZDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAobGVuZ3RoID09IDIg
JiYgc3RyaW5nWzBdICE9ICcuJykgeworICAgICAgICB2YWx1ZSA9ICFuZWdhdGl2ZSAmJiBzdHJp
bmdbMF0gPT0gJzEnID8gMjU1IDogMDsKKyAgICAgICAgc3RyaW5nID0gZW5kOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoaXNUZW50aEFscGhhKHN0cmluZywgbGVuZ3Ro
IC0gMSkpIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCB0ZW50aEFscGhhVmFsdWVzW10gPSB7
IDAsIDI1LCA1MSwgNzYsIDEwMiwgMTI3LCAxNTMsIDE3OSwgMjA0LCAyMzAgfTsKKyAgICAgICAg
dmFsdWUgPSBuZWdhdGl2ZSA/IDAgOiB0ZW50aEFscGhhVmFsdWVzW3N0cmluZ1tsZW5ndGggLSAy
XSAtICcwJ107CisgICAgICAgIHN0cmluZyA9IGVuZDsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgZG91YmxlIGFscGhhID0gMDsKKyAgICBpZiAoIXBhcnNlRG91YmxlKHN0cmlu
ZywgZW5kLCB0ZXJtaW5hdG9yLCBhbHBoYSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB2
YWx1ZSA9IG5lZ2F0aXZlID8gMCA6IHN0YXRpY19jYXN0PGludD4oYWxwaGEgKiBuZXh0YWZ0ZXIo
MjU2LjAsIDAuMCkpOworICAgIHN0cmluZyA9IGVuZDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgaW5saW5lIGJvb2wgbWln
aHRCZVJHQkEoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3Ro
KQoreworICAgIGlmIChsZW5ndGggPCA1KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0
dXJuIGNoYXJhY3RlcnNbNF0gPT0gJygnCisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNz
RXF1YWwoY2hhcmFjdGVyc1swXSwgJ3InKQorICAgICAgICAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVz
c0VxdWFsKGNoYXJhY3RlcnNbMV0sICdnJykKKyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxl
c3NFcXVhbChjaGFyYWN0ZXJzWzJdLCAnYicpCisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2Vs
ZXNzRXF1YWwoY2hhcmFjdGVyc1szXSwgJ2EnKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+CitzdGF0aWMgaW5saW5lIGJvb2wgbWlnaHRCZVJHQihjb25zdCBDaGFyYWN0
ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgaWYgKGxlbmd0aCA8
IDQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gY2hhcmFjdGVyc1szXSA9PSAn
KCcKKyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChjaGFyYWN0ZXJzWzBdLCAn
cicpCisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoY2hhcmFjdGVyc1sxXSwg
J2cnKQorICAgICAgICAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKGNoYXJhY3RlcnNbMl0s
ICdiJyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGJv
b2wgZmFzdFBhcnNlQ29sb3JJbnRlcm5hbChSR0JBMzImIHJnYiwgY29uc3QgQ2hhcmFjdGVyVHlw
ZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBib29sIHF1aXJrc01vZGUpCit7CisgICAg
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyBleHBlY3QgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGVzOjpVbmtub3duOworCisgICAgaWYgKGxlbmd0aCA+PSA0ICYmIGNoYXJhY3RlcnNb
MF0gPT0gJyMnKQorICAgICAgICByZXR1cm4gQ29sb3I6OnBhcnNlSGV4Q29sb3IoY2hhcmFjdGVy
cyArIDEsIGxlbmd0aCAtIDEsIHJnYik7CisKKyAgICBpZiAocXVpcmtzTW9kZSAmJiAobGVuZ3Ro
ID09IDMgfHwgbGVuZ3RoID09IDYpKSB7CisgICAgICAgIGlmIChDb2xvcjo6cGFyc2VIZXhDb2xv
cihjaGFyYWN0ZXJzLCBsZW5ndGgsIHJnYikpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICAvLyBUcnkgcmdiYSgpIHN5bnRheC4KKyAgICBpZiAobWlnaHRCZVJHQkEoY2hh
cmFjdGVycywgbGVuZ3RoKSkgeworICAgICAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBjdXJyZW50
ID0gY2hhcmFjdGVycyArIDU7CisgICAgICAgIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCA9IGNo
YXJhY3RlcnMgKyBsZW5ndGg7CisgICAgICAgIGludCByZWQ7CisgICAgICAgIGludCBncmVlbjsK
KyAgICAgICAgaW50IGJsdWU7CisgICAgICAgIGludCBhbHBoYTsKKworICAgICAgICBpZiAoIXBh
cnNlQ29sb3JJbnRPclBlcmNlbnRhZ2UoY3VycmVudCwgZW5kLCAnLCcsIGV4cGVjdCwgcmVkKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFwYXJzZUNvbG9ySW50T3JQ
ZXJjZW50YWdlKGN1cnJlbnQsIGVuZCwgJywnLCBleHBlY3QsIGdyZWVuKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlKGN1
cnJlbnQsIGVuZCwgJywnLCBleHBlY3QsIGJsdWUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBpZiAoIXBhcnNlQWxwaGFWYWx1ZShjdXJyZW50LCBlbmQsICcpJywgYWxwaGEp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoY3VycmVudCAhPSBlbmQp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJnYiA9IG1ha2VSR0JBKHJlZCwg
Z3JlZW4sIGJsdWUsIGFscGhhKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
Ly8gVHJ5IHJnYigpIHN5bnRheC4KKyAgICBpZiAobWlnaHRCZVJHQihjaGFyYWN0ZXJzLCBsZW5n
dGgpKSB7CisgICAgICAgIGNvbnN0IENoYXJhY3RlclR5cGUqIGN1cnJlbnQgPSBjaGFyYWN0ZXJz
ICsgNDsKKyAgICAgICAgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kID0gY2hhcmFjdGVycyArIGxl
bmd0aDsKKyAgICAgICAgaW50IHJlZDsKKyAgICAgICAgaW50IGdyZWVuOworICAgICAgICBpbnQg
Ymx1ZTsKKyAgICAgICAgaWYgKCFwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlKGN1cnJlbnQsIGVu
ZCwgJywnLCBleHBlY3QsIHJlZCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IGlmICghcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjdXJyZW50LCBlbmQsICcsJywgZXhwZWN0
LCBncmVlbikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghcGFyc2VD
b2xvckludE9yUGVyY2VudGFnZShjdXJyZW50LCBlbmQsICcpJywgZXhwZWN0LCBibHVlKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGN1cnJlbnQgIT0gZW5kKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZ2IgPSBtYWtlUkdCKHJlZCwgZ3JlZW4s
IGJsdWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK0NTU1ZhbHVlKiBDU1NQYXJzZXJGYXN0UGF0aHM6OnBhcnNlQ29sb3IoY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIENTU1BhcnNlck1vZGUgcGFyc2VyTW9kZSkKK3sKKyAgICBBU1NFUlQoIXN0
cmluZy5pc0VtcHR5KCkpOworICAgIENTU1ZhbHVlSUQgdmFsdWVJRCA9IGNzc1ZhbHVlS2V5d29y
ZElEKHN0cmluZyk7CisgICAgaWYgKFN0eWxlQ29sb3I6OmlzQ29sb3JLZXl3b3JkKHZhbHVlSUQp
KSB7CisgICAgICAgIGlmICghaXNWYWx1ZUFsbG93ZWRJbk1vZGUodmFsdWVJRCwgcGFyc2VyTW9k
ZSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKHZhbHVlSUQpOworICAgIH0KKworICAgIFJHQkEz
MiBjb2xvcjsKKyAgICBib29sIHF1aXJrc01vZGUgPSBpc1F1aXJrc01vZGVCZWhhdmlvcihwYXJz
ZXJNb2RlKTsKKworICAgIC8vIEZhc3QgcGF0aCBmb3IgaGV4IGNvbG9ycyBhbmQgcmdiKCkvcmdi
YSgpIGNvbG9ycworICAgIGJvb2wgcGFyc2VSZXN1bHQ7CisgICAgaWYgKHN0cmluZy5pczhCaXQo
KSkKKyAgICAgICAgcGFyc2VSZXN1bHQgPSBmYXN0UGFyc2VDb2xvckludGVybmFsKGNvbG9yLCBz
dHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCBxdWlya3NNb2RlKTsKKyAgICBl
bHNlCisgICAgICAgIHBhcnNlUmVzdWx0ID0gZmFzdFBhcnNlQ29sb3JJbnRlcm5hbChjb2xvciwg
c3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCksIHF1aXJrc01vZGUpOworICAg
IGlmICghcGFyc2VSZXN1bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBD
U1NDb2xvclZhbHVlOjpjcmVhdGUoY29sb3IpOworfQorCitib29sIENTU1BhcnNlckZhc3RQYXRo
czo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
ZCwgQ1NTVmFsdWVJRCB2YWx1ZUlELCBDU1NQYXJzZXJNb2RlIHBhcnNlck1vZGUpCit7CisgICAg
aWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVJbnZhbGlkIHx8ICFpc1ZhbHVlQWxsb3dlZEluTW9kZSh2
YWx1ZUlELCBwYXJzZXJNb2RlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3dpdGNo
IChwcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFsaWdubWVudEJhc2VsaW5lOgor
ICAgICAgICAvLyBhdXRvIHwgYmFzZWxpbmUgfCBiZWZvcmUtZWRnZSB8IHRleHQtYmVmb3JlLWVk
Z2UgfCBtaWRkbGUgfAorICAgICAgICAvLyBjZW50cmFsIHwgYWZ0ZXItZWRnZSB8IHRleHQtYWZ0
ZXItZWRnZSB8IGlkZW9ncmFwaGljIHwgYWxwaGFiZXRpYyB8CisgICAgICAgIC8vIGhhbmdpbmcg
fCBtYXRoZW1hdGljYWwKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVBbHBoYWJldGljIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCYXNl
bGluZQorICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1pZGRsZSB8fCAodmFsdWVJ
RCA+PSBDU1NWYWx1ZUJlZm9yZUVkZ2UgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZU1hdGhlbWF0aWNh
bCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFsbDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBP
bmx5IGFjY2VwdHMgY3NzLXdpZGUga2V5d29yZHMKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dy
b3VuZFJlcGVhdFg6IC8vIHJlcGVhdCB8IG5vLXJlcGVhdAorICAgIGNhc2UgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kUmVwZWF0WTogLy8gcmVwZWF0IHwgbm8tcmVwZWF0CisgICAgICAgIHJldHVybiB2
YWx1ZUlEID09IENTU1ZhbHVlUmVwZWF0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb1JlcGVhdDsK
KyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2U6IC8vIGNvbGxhcHNlIHwgc2VwYXJh
dGUKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2xsYXBzZSB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlU2VwYXJhdGU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxl
OiAvLyA8Ym9yZGVyLXN0eWxlPgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxl
OiAvLyBEZWZpbmVkIGFzOiBub25lIHwgaGlkZGVuIHwgZG90dGVkIHwgZGFzaGVkIHwKKyAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGU6IC8vIHNvbGlkIHwgZG91YmxlIHwgZ3Jv
b3ZlIHwgcmlkZ2UgfCBpbnNldCB8IG91dHNldAorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJM
ZWZ0U3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGU6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyU3RhcnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1uUnVsZVN0eWxlOgor
ICAgICAgICByZXR1cm4gdmFsdWVJRCA+PSBDU1NWYWx1ZU5vbmUgJiYgdmFsdWVJRCA8PSBDU1NW
YWx1ZURvdWJsZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm94U2l6aW5nOgorICAgICAgICByZXR1
cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUJvcmRlckJveCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ29u
dGVudEJveDsKKyAgICBjYXNlIENTU1Byb3BlcnR5QnVmZmVyZWRSZW5kZXJpbmc6CisgICAgICAg
IHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRHlu
YW1pYyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3RhdGljOworICAgIGNhc2UgQ1NTUHJvcGVydHlD
YXB0aW9uU2lkZTogLy8gdG9wIHwgYm90dG9tIHwgbGVmdCB8IHJpZ2h0CisgICAgICAgIHJldHVy
biB2YWx1ZUlEID09IENTU1ZhbHVlTGVmdCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmlnaHQgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZVRvcCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQm90dG9tOworICAg
IGNhc2UgQ1NTUHJvcGVydHlDbGVhcjogLy8gbm9uZSB8IGxlZnQgfCByaWdodCB8IGJvdGgKKyAg
ICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVMZWZ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSaWdodCB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
Qm90aDsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q2xpcFJ1bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUZpbGxSdWxlOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbnplcm8gfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUV2ZW5vZGQ7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9ySW50
ZXJwb2xhdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3JJbnRlcnBvbGF0aW9uRmlsdGVy
czoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVTUkdCIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVMaW5lYXJSR0I7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUNvbG9yUmVuZGVyaW5nOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NW
YWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU9wdGltaXplU3BlZWQgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZU9wdGltaXplUXVhbGl0eTsKKyAgICBjYXNlIENTU1Byb3BlcnR5RGlyZWN0aW9u
OiAvLyBsdHIgfCBydGwKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVMdHIgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZVJ0bDsKKyAgICBjYXNlIENTU1Byb3BlcnR5RGlzcGxheToKKyAg
ICAgICAgLy8gaW5saW5lIHwgYmxvY2sgfCBsaXN0LWl0ZW0gfCBpbmxpbmUtYmxvY2sgfCB0YWJs
ZSB8CisgICAgICAgIC8vIGlubGluZS10YWJsZSB8IHRhYmxlLXJvdy1ncm91cCB8IHRhYmxlLWhl
YWRlci1ncm91cCB8IHRhYmxlLWZvb3Rlci1ncm91cCB8IHRhYmxlLXJvdyB8CisgICAgICAgIC8v
IHRhYmxlLWNvbHVtbi1ncm91cCB8IHRhYmxlLWNvbHVtbiB8IHRhYmxlLWNlbGwgfCB0YWJsZS1j
YXB0aW9uIHwgLXdlYmtpdC1ib3ggfCAtd2Via2l0LWlubGluZS1ib3ggfCBub25lCisgICAgICAg
IC8vIGZsZXggfCBpbmxpbmUtZmxleCB8IC13ZWJraXQtZmxleCB8IC13ZWJraXQtaW5saW5lLWZs
ZXggfCBncmlkIHwgaW5saW5lLWdyaWQKKyAgICAgICAgcmV0dXJuICh2YWx1ZUlEID49IENTU1Zh
bHVlSW5saW5lICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVJbmxpbmVGbGV4KSB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlV2Via2l0RmxleCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0SW5saW5lRmxl
eCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZQorICAgICAgICAgICAgfHwgKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkgJiYgKHZhbHVlSUQgPT0gQ1NTVmFs
dWVHcmlkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVJbmxpbmVHcmlkKSk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eURvbWluYW50QmFzZWxpbmU6CisgICAgICAgIC8vIGF1dG8gfCB1c2Utc2NyaXB0IHwg
bm8tY2hhbmdlIHwgcmVzZXQtc2l6ZSB8IGlkZW9ncmFwaGljIHwKKyAgICAgICAgLy8gYWxwaGFi
ZXRpYyB8IGhhbmdpbmcgfCBtYXRoZW1hdGljYWwgfCBjZW50cmFsIHwgbWlkZGxlIHwKKyAgICAg
ICAgLy8gdGV4dC1hZnRlci1lZGdlIHwgdGV4dC1iZWZvcmUtZWRnZQorICAgICAgICByZXR1cm4g
dmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUFscGhhYmV0aWMg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1pZGRsZQorICAgICAgICAgICAgfHwgKHZhbHVlSUQgPj0g
Q1NTVmFsdWVVc2VTY3JpcHQgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZVJlc2V0U2l6ZSkKKyAgICAg
ICAgICAgIHx8ICh2YWx1ZUlEID49IENTU1ZhbHVlQ2VudHJhbCAmJiB2YWx1ZUlEIDw9IENTU1Zh
bHVlTWF0aGVtYXRpY2FsKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5RW1wdHlDZWxsczogLy8gc2hv
dyB8IGhpZGUKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVTaG93IHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVIaWRlOworICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9hdDogLy8gbGVmdCB8
IHJpZ2h0IHwgbm9uZQorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUxlZnQgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lOworICAg
IGNhc2UgQ1NTUHJvcGVydHlGb250U3R5bGU6IC8vIG5vcm1hbCB8IGl0YWxpYyB8IG9ibGlxdWUK
KyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUl0YWxpYyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlT2JsaXF1ZTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5Rm9udFN0cmV0Y2g6IC8vIG5vcm1hbCB8IHVsdHJhLWNvbmRlbnNlZCB8IGV4dHJh
LWNvbmRlbnNlZCB8IGNvbmRlbnNlZCB8IHNlbWktY29uZGVuc2VkIHwgc2VtaS1leHBhbmRlZCB8
IGV4cGFuZGVkIHwgZXh0cmEtZXhwYW5kZWQgfCB1bHRyYS1leHBhbmRlZAorICAgICAgICByZXR1
cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCAodmFsdWVJRCA+PSBDU1NWYWx1ZVVsdHJh
Q29uZGVuc2VkICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVVbHRyYUV4cGFuZGVkKTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5SW1hZ2VSZW5kZXJpbmc6IC8vIGF1dG8gfCBvcHRpbWl6ZUNvbnRyYXN0IHwg
cGl4ZWxhdGVkCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlV2Via2l0T3B0aW1pemVDb250cmFzdCB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlUGl4ZWxhdGVkOworICAgIGNhc2UgQ1NTUHJvcGVydHlJc29sYXRpb246IC8vIGF1dG8gfCBp
c29sYXRlCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlSXNvbGF0ZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRp
b246IC8vIGluc2lkZSB8IG91dHNpZGUKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFs
dWVJbnNpZGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU91dHNpZGU7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUxpc3RTdHlsZVR5cGU6CisgICAgICAgIC8vIFNlZSBzZWN0aW9uIENTU19QUk9QX0xJU1Rf
U1RZTEVfVFlQRSBvZiBmaWxlIENTU1ZhbHVlS2V5d29yZHMuaW4KKyAgICAgICAgLy8gZm9yIHRo
ZSBsaXN0IG9mIHN1cHBvcnRlZCBsaXN0LXN0eWxlLXR5cGVzLgorICAgICAgICByZXR1cm4gKHZh
bHVlSUQgPj0gQ1NTVmFsdWVEaXNjICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVLYXRha2FuYUlyb2hh
KSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFza1R5
cGU6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTHVtaW5hbmNlIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVBbHBoYTsKKyAgICBjYXNlIENTU1Byb3BlcnR5T2JqZWN0Rml0OgorICAg
ICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUZpbGwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUNvbnRhaW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvdmVyIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTY2FsZURvd247CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eU91dGxpbmVTdHlsZTogLy8gKDxib3JkZXItc3R5bGU+IGV4Y2VwdCBoaWRkZW4pIHwgYXV0
bworICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZU5vbmUgfHwgKHZhbHVlSUQgPj0gQ1NTVmFsdWVJbnNldCAmJiB2YWx1ZUlEIDw9IENT
U1ZhbHVlRG91YmxlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dBbmNob3I6CisgICAg
ICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlVmlzaWJsZSB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXV0bzsKKyAgICBjYXNlIENTU1Byb3BlcnR5
T3ZlcmZsb3dXcmFwOiAvLyBub3JtYWwgfCBicmVhay13b3JkCisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdvcmRXcmFwOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlQnJlYWtXb3JkOworICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxv
d1g6IC8vIHZpc2libGUgfCBoaWRkZW4gfCBzY3JvbGwgfCBhdXRvIHwgb3ZlcmxheQorICAgICAg
ICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUhpZGRlbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2Nyb2xsIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVPdmVybGF5OworICAgIGNhc2UgQ1NTUHJvcGVy
dHlPdmVyZmxvd1k6IC8vIHZpc2libGUgfCBoaWRkZW4gfCBzY3JvbGwgfCBhdXRvIHwgb3Zlcmxh
eSB8IC13ZWJraXQtcGFnZWQteCB8IC13ZWJraXQtcGFnZWQteQorICAgICAgICByZXR1cm4gdmFs
dWVJRCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhpZGRlbiB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlU2Nyb2xsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVPdmVybGF5IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRQYWdl
ZFggfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdlYmtpdFBhZ2VkWTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5QnJlYWtBZnRlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5QnJlYWtCZWZvcmU6CisgICAgICAg
IHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXZv
aWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkUGFnZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
UGFnZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTGVmdCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmln
aHQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJlY3RvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVWZXJz
byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXZvaWRDb2x1bW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUNvbHVtbjsKKyAgICBjYXNlIENTU1Byb3BlcnR5QnJlYWtJbnNpZGU6CisgICAgICAgIHJldHVy
biB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXZvaWQgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUF2b2lkUGFnZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXZvaWRD
b2x1bW47CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHM6CisgICAgICAgIC8vIG5v
bmUgfCB2aXNpYmxlUGFpbnRlZCB8IHZpc2libGVGaWxsIHwgdmlzaWJsZVN0cm9rZSB8IHZpc2li
bGUgfAorICAgICAgICAvLyBwYWludGVkIHwgZmlsbCB8IHN0cm9rZSB8IGF1dG8gfCBhbGwgfCBi
b3VuZGluZy1ib3gKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBbGwgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgKHZhbHVlSUQgPj0gQ1NTVmFsdWVWaXNpYmxlUGFpbnRl
ZCAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlQm91bmRpbmdCb3gpOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlQb3NpdGlvbjogLy8gc3RhdGljIHwgcmVsYXRpdmUgfCBhYnNvbHV0ZSB8IGZpeGVkIHwgc3Rp
Y2t5CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlU3RhdGljIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVSZWxhdGl2ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQWJzb2x1dGUgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZUZpeGVkIHx8IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NTdGlj
a3lQb3NpdGlvbkVuYWJsZWQoKSAmJiB2YWx1ZUlEID09IENTU1ZhbHVlU3RpY2t5KTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5UmVzaXplOiAvLyBub25lIHwgYm90aCB8IGhvcml6b250YWwgfCB2ZXJ0
aWNhbCB8IGF1dG8KKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVCb3RoIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVIb3Jpem9udGFsIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVWZXJ0aWNhbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXV0bzsK
KyAgICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xsQmVoYXZpb3I6IC8vIGF1dG8gfCBzbW9vdGgKKyAg
ICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc29tU21vb3RoU2Nyb2xsRW5h
YmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVTbW9vdGg7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNoYXBlUmVuZGVyaW5n
OgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZU9wdGltaXplU3BlZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNyaXNwRWRnZXMgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUdlb21ldHJpY1ByZWNpc2lvbjsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5U3BlYWs6IC8vIG5vbmUgfCBub3JtYWwgfCBzcGVsbC1vdXQgfCBkaWdpdHMgfCBsaXRlcmFs
LXB1bmN0dWF0aW9uIHwgbm8tcHVuY3R1YXRpb24KKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0g
Q1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZVNwZWxsT3V0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEaWdpdHMgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUxpdGVyYWxQdW5jdHVhdGlvbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9QdW5j
dHVhdGlvbjsKKyAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlTGluZWpvaW46CisgICAgICAgIHJl
dHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTWl0ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJvdW5k
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCZXZlbDsKKyAgICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tl
TGluZWNhcDoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVCdXR0IHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVSb3VuZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3F1YXJlOworICAgIGNh
c2UgQ1NTUHJvcGVydHlUYWJsZUxheW91dDogLy8gYXV0byB8IGZpeGVkCisgICAgICAgIHJldHVy
biB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRml4ZWQ7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRBbGlnbjoKKyAgICAgICAgcmV0dXJuICh2YWx1ZUlEID49
IENTU1ZhbHVlV2Via2l0QXV0byAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlSW50ZXJuYWxDZW50ZXIp
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRW5kOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0QWxpZ25MYXN0OgorICAgICAgICAvLyBhdXRvIHwgc3Rh
cnQgfCBlbmQgfCBsZWZ0IHwgcmlnaHQgfCBjZW50ZXIgfCBqdXN0aWZ5CisgICAgICAgIHJldHVy
biAodmFsdWVJRCA+PSBDU1NWYWx1ZUxlZnQgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZUp1c3RpZnkp
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRW5kIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0QW5jaG9y
OgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVNaWRkbGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVuZDsKKyAgICBjYXNlIENTU1By
b3BlcnR5VGV4dENvbWJpbmVVcHJpZ2h0OgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NW
YWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUFsbDsKKyAgICBjYXNlIENTU1Byb3BlcnR5
VGV4dERlY29yYXRpb25TdHlsZToKKyAgICAgICAgLy8gc29saWQgfCBkb3VibGUgfCBkb3R0ZWQg
fCBkYXNoZWQgfCB3YXZ5CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpj
c3MzVGV4dERlY29yYXRpb25zRW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0g
Q1NTVmFsdWVTb2xpZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRG91YmxlIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVEb3R0ZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURhc2hlZCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlV2F2eTsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEp1c3RpZnk6CisgICAgICAg
IC8vIGF1dG8gfCBub25lIHwgaW50ZXItd29yZCB8IGRpc3RyaWJ1dGUKKyAgICAgICAgQVNTRVJU
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzczNUZXh0RW5hYmxlZCgpKTsKKyAgICAgICAgcmV0
dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVJbnRlcldvcmQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURp
c3RyaWJ1dGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZU5vbmU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPcmllbnRhdGlvbjogLy8gbWl4ZWQgfCB1
cHJpZ2h0IHwgc2lkZXdheXMgfCBzaWRld2F5cy1yaWdodAorICAgICAgICByZXR1cm4gdmFsdWVJ
RCA9PSBDU1NWYWx1ZU1peGVkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVVcHJpZ2h0IHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVTaWRld2F5cyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2lkZXdheXNSaWdo
dDsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dE9yaWVudGF0aW9uOgorICAgICAgICBy
ZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVNpZGV3YXlzIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVT
aWRld2F5c1JpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVWZXJ0aWNhbFJpZ2h0IHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVVcHJpZ2h0OworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmZsb3c6
IC8vIGNsaXAgfCBlbGxpcHNpcworICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUNs
aXAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVsbGlwc2lzOworICAgIGNhc2UgQ1NTUHJvcGVydHlU
ZXh0UmVuZGVyaW5nOiAvLyBhdXRvIHwgb3B0aW1pemVTcGVlZCB8IG9wdGltaXplTGVnaWJpbGl0
eSB8IGdlb21ldHJpY1ByZWNpc2lvbgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1
ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU9wdGltaXplU3BlZWQgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZU9wdGltaXplTGVnaWJpbGl0eSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlR2VvbWV0cmlj
UHJlY2lzaW9uOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtOiAvLyBjYXBpdGFs
aXplIHwgdXBwZXJjYXNlIHwgbG93ZXJjYXNlIHwgbm9uZQorICAgICAgICByZXR1cm4gKHZhbHVl
SUQgPj0gQ1NTVmFsdWVDYXBpdGFsaXplICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVMb3dlcmNhc2Up
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lOworICAgIGNhc2UgQ1NTUHJvcGVydHlVbmljb2Rl
QmlkaToKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUVtYmVkCisgICAgICAgICAgICB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQmlk
aU92ZXJyaWRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRJc29sYXRlCisgICAgICAgICAg
ICB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0SXNvbGF0ZU92ZXJyaWRlIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVXZWJraXRQbGFpbnRleHQKKyAgICAgICAgICAgIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVJc29sYXRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVJc29sYXRlT3ZlcnJpZGUgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZVBsYWludGV4dDsKKyAgICBjYXNlIENTU1Byb3BlcnR5VmVjdG9yRWZm
ZWN0OgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZU5vblNjYWxpbmdTdHJva2U7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVZpc2liaWxp
dHk6IC8vIHZpc2libGUgfCBoaWRkZW4gfCBjb2xsYXBzZQorICAgICAgICByZXR1cm4gdmFsdWVJ
RCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhpZGRlbiB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlQ29sbGFwc2U7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFwcFJl
Z2lvbjoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPj0gQ1NTVmFsdWVEcmFnICYmIHZhbHVlSUQg
PD0gQ1NTVmFsdWVOb0RyYWc7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2U6
CisgICAgICAgIHJldHVybiAodmFsdWVJRCA+PSBDU1NWYWx1ZUNoZWNrYm94ICYmIHZhbHVlSUQg
PD0gQ1NTVmFsdWVUZXh0YXJlYSkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmU7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJhY2tmYWNlVmlzaWJpbGl0eToKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQg
PT0gQ1NTVmFsdWVWaXNpYmxlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVIaWRkZW47CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eU1peEJsZW5kTW9kZToKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NT
VmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU11bHRpcGx5IHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVTY3JlZW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU92ZXJsYXkKKyAgICAgICAgICAg
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEYXJrZW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUxpZ2h0
ZW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbG9yRG9kZ2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUNvbG9yQnVybgorICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhhcmRMaWdodCB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlU29mdExpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEaWZm
ZXJlbmNlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFeGNsdXNpb24KKyAgICAgICAgICAgIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVIdWUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNhdHVyYXRpb24gfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUNvbG9yIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVMdW1pbm9zaXR5
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbjoKKyAgICAgICAgcmV0dXJuIHZh
bHVlSUQgPT0gQ1NTVmFsdWVTdHJldGNoIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdGFydCB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlRW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZUJhc2VsaW5lOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hE
ZWNvcmF0aW9uQnJlYWs6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQ2xvbmUg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNsaWNlOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3hEaXJlY3Rpb246CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVSZXZlcnNlOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3hMaW5lczoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVTaW5nbGUgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZU11bHRpcGxlOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hP
cmllbnQ6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlSG9yaXpvbnRhbCB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlVmVydGljYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUlubGluZUF4
aXMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJsb2NrQXhpczsKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm94UGFjazoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVTdGFydCB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlRW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUp1c3RpZnk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVtbkZp
bGw6CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlQmFsYW5jZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25Db250ZW50OgorICAg
ICAgICAvLyBGSVhNRTogUGVyIENTUyBhbGlnbm1lbnQsIHRoaXMgcHJvcGVydHkgc2hvdWxkIGFj
Y2VwdCBhbiBvcHRpb25hbCA8b3ZlcmZsb3ctcG9zaXRpb24+LiBXZSBzaG91bGQgc2hhcmUgdGhp
cyBwYXJzaW5nIGNvZGUgd2l0aCAnanVzdGlmeS1zZWxmJy4KKyAgICAgICAgcmV0dXJuIHZhbHVl
SUQgPT0gQ1NTVmFsdWVGbGV4U3RhcnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUZsZXhFbmQgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUNlbnRlciB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3BhY2VCZXR3
ZWVuIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTcGFjZUFyb3VuZCB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlU3RyZXRjaDsKKyAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25JdGVtczoKKyAgICAgICAgLy8g
RklYTUU6IFBlciBDU1MgYWxpZ25tZW50LCB0aGlzIHByb3BlcnR5IHNob3VsZCBhY2NlcHQgdGhl
IHNhbWUgYXJndW1lbnRzIGFzICdqdXN0aWZ5LXNlbGYnIHNvIHdlIHNob3VsZCBzaGFyZSBpdHMg
cGFyc2luZyBjb2RlLgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUZsZXhTdGFy
dCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRmxleEVuZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ2Vu
dGVyIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCYXNlbGluZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
U3RyZXRjaDsKKyAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25TZWxmOgorICAgICAgICAvLyBGSVhN
RTogUGVyIENTUyBhbGlnbm1lbnQsIHRoaXMgcHJvcGVydHkgc2hvdWxkIGFjY2VwdCB0aGUgc2Ft
ZSBhcmd1bWVudHMgYXMgJ2p1c3RpZnktc2VsZicgc28gd2Ugc2hvdWxkIHNoYXJlIGl0cyBwYXJz
aW5nIGNvZGUuCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlRmxleFN0YXJ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVGbGV4RW5kIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJhc2VsaW5l
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdHJldGNoOworICAgIGNhc2UgQ1NTUHJvcGVydHlGbGV4
RGlyZWN0aW9uOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVJvdyB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlUm93UmV2ZXJzZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ29sdW1uIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2x1bW5SZXZlcnNlOworICAgIGNhc2UgQ1NTUHJvcGVydHlG
bGV4V3JhcDoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3dyYXAgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZVdyYXAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdyYXBSZXZlcnNlOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlIeXBoZW5zOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBD
U1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZU1hbnVhbDsKKyAgICBjYXNlIENTU1Byb3BlcnR5SnVzdGlmeUNvbnRlbnQ6CisgICAgICAg
IC8vIEZJWE1FOiBQZXIgQ1NTIGFsaWdubWVudCwgdGhpcyBwcm9wZXJ0eSBzaG91bGQgYWNjZXB0
IGFuIG9wdGlvbmFsIDxvdmVyZmxvdy1wb3NpdGlvbj4uIFdlIHNob3VsZCBzaGFyZSB0aGlzIHBh
cnNpbmcgY29kZSB3aXRoICdqdXN0aWZ5LXNlbGYnLgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9
PSBDU1NWYWx1ZUZsZXhTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRmxleEVuZCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlQ2VudGVyIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTcGFjZUJldHdlZW4g
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNwYWNlQXJvdW5kOworICAgIGNhc2UgQ1NTUHJvcGVydHlG
b250S2VybmluZzoKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmU7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmc6CisgICAgICAgIHJldHVybiB2YWx1
ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlQW50aWFsaWFzZWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVN1YnBpeGVsQW50
aWFsaWFzZWQ7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhazogLy8gYXV0byB8
IGxvb3NlIHwgbm9ybWFsIHwgc3RyaWN0IHwgYWZ0ZXItd2hpdGUtc3BhY2UKKyAgICAgICAgcmV0
dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVMb29zZSB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdHJpY3Qg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUFmdGVyV2hpdGVTcGFjZTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWFyZ2luQmVmb3JlQ29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJv
dHRvbUNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBz
ZToKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2xsYXBzZSB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlU2VwYXJhdGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURpc2NhcmQ7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFByaW50Q29sb3JBZGp1c3Q6CisgICAgICAgIHJldHVybiB2
YWx1ZUlEID09IENTU1ZhbHVlRXhhY3QgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVjb25vbXk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nOgorICAgICAgICByZXR1cm4gdmFs
dWVJRCA9PSBDU1NWYWx1ZUxvZ2ljYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVZpc3VhbDsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uOgorICAgICAgICByZXR1cm4gdmFs
dWVJRCA9PSBDU1NWYWx1ZUJlZm9yZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQWZ0ZXI7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lOgorICAgICAgICByZXR1cm4gdmFsdWVJ
RCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhvcml6b250YWw7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uOgorICAgICAgICByZXR1
cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU92ZXIgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVVuZGVyOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHk6IC8vIGRpc2MgfCBjaXJjbGUg
fCBzcXVhcmUgfCBub25lCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlRGlzYyB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlQ2lyY2xlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTcXVhcmUg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmU7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zZm9y
bVN0eWxlOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUZsYXQgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZVByZXNlcnZlM2Q7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJE
cmFnOiAvLyBhdXRvIHwgbm9uZSB8IGVsZW1lbnQKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0g
Q1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVFbGVtZW50OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5OiAvLyBy
ZWFkLW9ubHkgfCByZWFkLXdyaXRlCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVl
UmVhZE9ubHkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJlYWRXcml0ZSB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlUmVhZFdyaXRlUGxhaW50ZXh0T25seTsKKyAgICBjYXNlIENTU1Byb3BlcnR5VXNlclNl
bGVjdDogLy8gYXV0byB8IG5vbmUgfCB0ZXh0IHwgYWxsCisgICAgICAgIHJldHVybiB2YWx1ZUlE
ID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlVGV4dCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQWxsOworICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRXcml0aW5nTW9kZToKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPj0gQ1NTVmFs
dWVIb3Jpem9udGFsVGIgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZVZlcnRpY2FsTHI7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdyaXRpbmdNb2RlOgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NW
YWx1ZUhvcml6b250YWxUYgorICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVZlcnRp
Y2FsUmwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVZlcnRpY2FsTHIKKyAgICAgICAgICAgIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVMclRiIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSbFRiIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVUYlJsCisgICAgICAgICAgICB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTHIg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVUYjsKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2hpdGVTcGFjZTogLy8gbm9ybWFsIHwgcHJlIHwgbm93cmFwCisgICAg
ICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVQcmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVByZVdyYXAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZVByZUxpbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vd3JhcDsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V29yZEJyZWFrOiAvLyBub3JtYWwgfCBicmVhay1hbGwgfCBrZWVwLWFsbCB8IGJyZWFrLXdv
cmQgKHRoaXMgaXMgYSBjdXN0b20gZXh0ZW5zaW9uKQorICAgICAgICByZXR1cm4gdmFsdWVJRCA9
PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQnJlYWtBbGwgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUtlZXBBbGwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJyZWFrV29yZDsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5U2Nyb2xsU25hcFR5cGU6IC8vIG5vbmUgfCBtYW5kYXRvcnkgfCBw
cm94aW1pdHkKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc1Njcm9s
bFNuYXBQb2ludHNFbmFibGVkKCkpOworICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1
ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1hbmRhdG9yeSB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlUHJveGltaXR5OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitib29sIENTU1BhcnNlckZhc3RQ
YXRoczo6aXNLZXl3b3JkUHJvcGVydHlJRChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQpCit7Cisg
ICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFsaWdubWVudEJh
c2VsaW5lOgorICAgIGNhc2UgQ1NTUHJvcGVydHlBbGw6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1p
eEJsZW5kTW9kZToKKyAgICBjYXNlIENTU1Byb3BlcnR5SXNvbGF0aW9uOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WDoKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFJlcGVhdFk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
TGVmdFN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm94U2l6
aW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCdWZmZXJlZFJlbmRlcmluZzoKKyAgICBjYXNlIENT
U1Byb3BlcnR5Q2FwdGlvblNpZGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNsZWFyOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlDbGlwUnVsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3JJbnRlcnBv
bGF0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvckludGVycG9sYXRpb25GaWx0ZXJzOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvclJlbmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5
RGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlEaXNwbGF5OgorICAgIGNhc2UgQ1NTUHJv
cGVydHlEb21pbmFudEJhc2VsaW5lOgorICAgIGNhc2UgQ1NTUHJvcGVydHlFbXB0eUNlbGxzOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlGaWxsUnVsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5RmxvYXQ6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9u
dFN0cmV0Y2g6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUh5cGhlbnM6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUltYWdlUmVuZGVyaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlv
bjoKKyAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5TWFza1R5cGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9iamVjdEZpdDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5T3V0bGluZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd0FuY2hv
cjoKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dXcmFwOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlPdmVyZmxvd1g6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93WToKKyAgICBjYXNlIENT
U1Byb3BlcnR5QnJlYWtBZnRlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5QnJlYWtCZWZvcmU6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJyZWFrSW5zaWRlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQb2lu
dGVyRXZlbnRzOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQb3NpdGlvbjoKKyAgICBjYXNlIENTU1By
b3BlcnR5UmVzaXplOgorICAgIGNhc2UgQ1NTUHJvcGVydHlTY3JvbGxCZWhhdmlvcjoKKyAgICBj
YXNlIENTU1Byb3BlcnR5U2hhcGVSZW5kZXJpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNwZWFr
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2VMaW5lY2FwOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlTdHJva2VMaW5lam9pbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGFibGVMYXlvdXQ6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVRleHRBbGlnbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEFsaWdu
TGFzdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEFuY2hvcjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5VGV4dENvbWJpbmVVcHJpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlv
blN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0SnVzdGlmeToKKyAgICBjYXNlIENTU1By
b3BlcnR5VGV4dE9yaWVudGF0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0T3Jp
ZW50YXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVyZmxvdzoKKyAgICBjYXNlIENT
U1Byb3BlcnR5VGV4dFJlbmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFRyYW5zZm9y
bToKKyAgICBjYXNlIENTU1Byb3BlcnR5VW5pY29kZUJpZGk6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVZlY3RvckVmZmVjdDoKKyAgICBjYXNlIENTU1Byb3BlcnR5VmlzaWJpbGl0eToKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0QXBwUmVnaW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRB
cHBlYXJhbmNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZmFjZVZpc2liaWxpdHk6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGU6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJFbmRTdHlsZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHls
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ246CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJveERlY29yYXRpb25CcmVhazoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm94RGlyZWN0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lczoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm94T3JpZW50OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3hQYWNrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlDb2x1bW5GaWxsOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlDb2x1bW5SdWxlU3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsZXhEaXJlY3Rp
b246CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsZXhXcmFwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlG
b250S2VybmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290aGluZzoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5CZWZvcmVDb2xsYXBzZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9t
Q29sbGFwc2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblRvcENvbGxhcHNlOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQcmludENvbG9yQWRqdXN0OgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRSdGxPcmRlcmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UnVi
eVBvc2l0aW9uOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZToKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb246CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNmb3Jt
U3R5bGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlVc2VyU2VsZWN0
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9kZToKKyAgICBjYXNlIENTU1By
b3BlcnR5V2hpdGVTcGFjZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V29yZEJyZWFrOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlXb3JkV3JhcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V3JpdGluZ01vZGU6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNjcm9sbFNuYXBUeXBlOgorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBjYXNlIENTU1Byb3BlcnR5SnVzdGlmeUNvbnRlbnQ6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUFsaWduQ29udGVudDoKKyAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25JdGVtczoKKyAgICBj
YXNlIENTU1Byb3BlcnR5QWxpZ25TZWxmOgorICAgICAgICByZXR1cm4gIVJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KK30KKworc3RhdGljIENTU1ZhbHVlKiBwYXJzZUtleXdvcmRW
YWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NQ
YXJzZXJNb2RlIHBhcnNlck1vZGUpCit7CisgICAgQVNTRVJUKCFzdHJpbmcuaXNFbXB0eSgpKTsK
KworICAgIGlmICghQ1NTUGFyc2VyRmFzdFBhdGhzOjppc0tleXdvcmRQcm9wZXJ0eUlEKHByb3Bl
cnR5SWQpKSB7CisgICAgICAgIC8vIEFsbCBwcm9wZXJ0aWVzIGFjY2VwdCB0aGUgdmFsdWVzIG9m
ICJpbml0aWFsIiBhbmQgImluaGVyaXQiLgorICAgICAgICBpZiAoIWVxdWFsSWdub3JpbmdBU0NJ
SUNhc2Uoc3RyaW5nLCAiaW5pdGlhbCIpICYmICFlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHN0cmlu
ZywgImluaGVyaXQiKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIC8v
IFBhcnNlIGluaXRpYWwvaW5oZXJpdCBzaG9ydGhhbmRzIHVzaW5nIHRoZSBDU1NQcm9wZXJ0eVBh
cnNlci4KKyAgICAgICAgaWYgKHNob3J0aGFuZEZvclByb3BlcnR5KHByb3BlcnR5SWQpLmxlbmd0
aCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgLy8gRGVzY3JpcHRv
cnMgZG8gbm90IHN1cHBvcnQgY3NzIHdpZGUga2V5d29yZHMuCisgICAgICAgIGlmIChDU1NQcm9w
ZXJ0eU1ldGFkYXRhOjppc0Rlc2NyaXB0b3JPbmx5KHByb3BlcnR5SWQpKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgQ1NTVmFsdWVJRCB2YWx1ZUlEID0gY3NzVmFs
dWVLZXl3b3JkSUQoc3RyaW5nKTsKKworICAgIGlmICghdmFsdWVJRCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUluaGVyaXQpCisgICAgICAg
IHJldHVybiBDU1NJbmhlcml0ZWRWYWx1ZTo6Y3JlYXRlKCk7CisgICAgaWYgKHZhbHVlSUQgPT0g
Q1NTVmFsdWVJbml0aWFsKQorICAgICAgICByZXR1cm4gQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGUo
KTsKKyAgICBpZiAoQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5k
VmFsdWUocHJvcGVydHlJZCwgdmFsdWVJRCwgcGFyc2VyTW9kZSkpCisgICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcih2YWx1ZUlEKTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgorc3RhdGljIGJvb2wg
cGFyc2VUcmFuc2Zvcm1UcmFuc2xhdGVBcmd1bWVudHMoQ2hhclR5cGUqJiBwb3MsIENoYXJUeXBl
KiBlbmQsIHVuc2lnbmVkIGV4cGVjdGVkQ291bnQsIENTU0Z1bmN0aW9uVmFsdWUqIHRyYW5zZm9y
bVZhbHVlKQoreworICAgIHdoaWxlIChleHBlY3RlZENvdW50KSB7CisgICAgICAgIHNpemVfdCBk
ZWxpbWl0ZXIgPSBXVEY6OmZpbmQocG9zLCBlbmQgLSBwb3MsIGV4cGVjdGVkQ291bnQgPT0gMSA/
ICcpJyA6ICcsJyk7CisgICAgICAgIGlmIChkZWxpbWl0ZXIgPT0ga05vdEZvdW5kKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB1bnNpZ25lZCBhcmd1bWVudExlbmd0aCA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihkZWxpbWl0ZXIpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzIHVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpOdW1iZXI7
CisgICAgICAgIGRvdWJsZSBudW1iZXI7CisgICAgICAgIGlmICghcGFyc2VTaW1wbGVMZW5ndGgo
cG9zLCBhcmd1bWVudExlbmd0aCwgdW5pdCwgbnVtYmVyKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgaWYgKHVuaXQgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6
UGl4ZWxzICYmIChudW1iZXIgfHwgdW5pdCAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVz
OjpOdW1iZXIpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB0cmFuc2Zvcm1W
YWx1ZS0+YXBwZW5kKCpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG51bWJlciwgQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlczo6UGl4ZWxzKSk7CisgICAgICAgIHBvcyArPSBhcmd1bWVudExl
bmd0aCArIDE7CisgICAgICAgIC0tZXhwZWN0ZWRDb3VudDsKKyAgICB9CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KK3N0YXRpYyBib29sIHBhcnNl
VHJhbnNmb3JtTnVtYmVyQXJndW1lbnRzKENoYXJUeXBlKiYgcG9zLCBDaGFyVHlwZSogZW5kLCB1
bnNpZ25lZCBleHBlY3RlZENvdW50LCBDU1NGdW5jdGlvblZhbHVlKiB0cmFuc2Zvcm1WYWx1ZSkK
K3sKKyAgICB3aGlsZSAoZXhwZWN0ZWRDb3VudCkgeworICAgICAgICBzaXplX3QgZGVsaW1pdGVy
ID0gV1RGOjpmaW5kKHBvcywgZW5kIC0gcG9zLCBleHBlY3RlZENvdW50ID09IDEgPyAnKScgOiAn
LCcpOworICAgICAgICBpZiAoZGVsaW1pdGVyID09IGtOb3RGb3VuZCkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgdW5zaWduZWQgYXJndW1lbnRMZW5ndGggPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oZGVsaW1pdGVyKTsKKyAgICAgICAgYm9vbCBvazsKKyAgICAgICAgZG91Ymxl
IG51bWJlciA9IGNoYXJhY3RlcnNUb0RvdWJsZShwb3MsIGFyZ3VtZW50TGVuZ3RoLCAmb2spOwor
ICAgICAgICBpZiAoIW9rKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB0cmFu
c2Zvcm1WYWx1ZS0+YXBwZW5kKCpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG51bWJlciwgQ1NT
UHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6TnVtYmVyKSk7CisgICAgICAgIHBvcyArPSBhcmd1
bWVudExlbmd0aCArIDE7CisgICAgICAgIC0tZXhwZWN0ZWRDb3VudDsKKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3N0YXRpYyBjb25zdCBpbnQga1Nob3J0ZXN0VmFsaWRUcmFuc2Zvcm1T
dHJpbmdMZW5ndGggPSAxMjsKKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgorc3RhdGlj
IENTU0Z1bmN0aW9uVmFsdWUqIHBhcnNlU2ltcGxlVHJhbnNmb3JtVmFsdWUoQ2hhclR5cGUqJiBw
b3MsIENoYXJUeXBlKiBlbmQpCit7CisgICAgaWYgKGVuZCAtIHBvcyA8IGtTaG9ydGVzdFZhbGlk
VHJhbnNmb3JtU3RyaW5nTGVuZ3RoKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGNv
bnN0IGJvb2wgaXNUcmFuc2xhdGUgPSB0b0FTQ0lJTG93ZXIocG9zWzBdKSA9PSAndCcKKyAgICAg
ICAgJiYgdG9BU0NJSUxvd2VyKHBvc1sxXSkgPT0gJ3InCisgICAgICAgICYmIHRvQVNDSUlMb3dl
cihwb3NbMl0pID09ICdhJworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzNdKSA9PSAnbicK
KyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1s0XSkgPT0gJ3MnCisgICAgICAgICYmIHRvQVND
SUlMb3dlcihwb3NbNV0pID09ICdsJworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzZdKSA9
PSAnYScKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1s3XSkgPT0gJ3QnCisgICAgICAgICYm
IHRvQVNDSUlMb3dlcihwb3NbOF0pID09ICdlJzsKKworICAgIGlmIChpc1RyYW5zbGF0ZSkgewor
ICAgICAgICBDU1NWYWx1ZUlEIHRyYW5zZm9ybVR5cGU7CisgICAgICAgIHVuc2lnbmVkIGV4cGVj
dGVkQXJndW1lbnRDb3VudCA9IDE7CisgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50U3RhcnQgPSAx
MTsKKyAgICAgICAgQ2hhclR5cGUgYzkgPSB0b0FTQ0lJTG93ZXIocG9zWzldKTsKKyAgICAgICAg
aWYgKGM5ID09ICd4JyAmJiBwb3NbMTBdID09ICcoJykgeworICAgICAgICAgICAgdHJhbnNmb3Jt
VHlwZSA9IENTU1ZhbHVlVHJhbnNsYXRlWDsKKyAgICAgICAgfSBlbHNlIGlmIChjOSA9PSAneScg
JiYgcG9zWzEwXSA9PSAnKCcpIHsKKyAgICAgICAgICAgIHRyYW5zZm9ybVR5cGUgPSBDU1NWYWx1
ZVRyYW5zbGF0ZVk7CisgICAgICAgIH0gZWxzZSBpZiAoYzkgPT0gJ3onICYmIHBvc1sxMF0gPT0g
JygnKSB7CisgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlID0gQ1NTVmFsdWVUcmFuc2xhdGVaOwor
ICAgICAgICB9IGVsc2UgaWYgKGM5ID09ICcoJykgeworICAgICAgICAgICAgdHJhbnNmb3JtVHlw
ZSA9IENTU1ZhbHVlVHJhbnNsYXRlOworICAgICAgICAgICAgZXhwZWN0ZWRBcmd1bWVudENvdW50
ID0gMjsKKyAgICAgICAgICAgIGFyZ3VtZW50U3RhcnQgPSAxMDsKKyAgICAgICAgfSBlbHNlIGlm
IChjOSA9PSAnMycgJiYgdG9BU0NJSUxvd2VyKHBvc1sxMF0pID09ICdkJyAmJiBwb3NbMTFdID09
ICcoJykgeworICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSA9IENTU1ZhbHVlVHJhbnNsYXRlM2Q7
CisgICAgICAgICAgICBleHBlY3RlZEFyZ3VtZW50Q291bnQgPSAzOworICAgICAgICAgICAgYXJn
dW1lbnRTdGFydCA9IDEyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgcG9zICs9IGFyZ3VtZW50U3RhcnQ7CisgICAgICAg
IENTU0Z1bmN0aW9uVmFsdWUqIHRyYW5zZm9ybVZhbHVlID0gQ1NTRnVuY3Rpb25WYWx1ZTo6Y3Jl
YXRlKHRyYW5zZm9ybVR5cGUpOworICAgICAgICBpZiAoIXBhcnNlVHJhbnNmb3JtVHJhbnNsYXRl
QXJndW1lbnRzKHBvcywgZW5kLCBleHBlY3RlZEFyZ3VtZW50Q291bnQsIHRyYW5zZm9ybVZhbHVl
KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gdHJhbnNmb3Jt
VmFsdWU7CisgICAgfQorCisgICAgY29uc3QgYm9vbCBpc01hdHJpeDNkID0gdG9BU0NJSUxvd2Vy
KHBvc1swXSkgPT0gJ20nCisgICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3NbMV0pID09ICdhJwor
ICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzJdKSA9PSAndCcKKyAgICAgICAgJiYgdG9BU0NJ
SUxvd2VyKHBvc1szXSkgPT0gJ3InCisgICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3NbNF0pID09
ICdpJworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzVdKSA9PSAneCcKKyAgICAgICAgJiYg
cG9zWzZdID09ICczJworICAgICAgICAmJiB0b0FTQ0lJTG93ZXIocG9zWzddKSA9PSAnZCcKKyAg
ICAgICAgJiYgcG9zWzhdID09ICcoJzsKKworICAgIGlmIChpc01hdHJpeDNkKSB7CisgICAgICAg
IHBvcyArPSA5OworICAgICAgICBDU1NGdW5jdGlvblZhbHVlKiB0cmFuc2Zvcm1WYWx1ZSA9IENT
U0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShDU1NWYWx1ZU1hdHJpeDNkKTsKKyAgICAgICAgaWYgKCFw
YXJzZVRyYW5zZm9ybU51bWJlckFyZ3VtZW50cyhwb3MsIGVuZCwgMTYsIHRyYW5zZm9ybVZhbHVl
KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gdHJhbnNmb3Jt
VmFsdWU7CisgICAgfQorCisgICAgY29uc3QgYm9vbCBpc1NjYWxlM2QgPSB0b0FTQ0lJTG93ZXIo
cG9zWzBdKSA9PSAncycKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1sxXSkgPT0gJ2MnCisg
ICAgICAgICYmIHRvQVNDSUlMb3dlcihwb3NbMl0pID09ICdhJworICAgICAgICAmJiB0b0FTQ0lJ
TG93ZXIocG9zWzNdKSA9PSAnbCcKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBvc1s0XSkgPT0g
J2UnCisgICAgICAgICYmIHBvc1s1XSA9PSAnMycKKyAgICAgICAgJiYgdG9BU0NJSUxvd2VyKHBv
c1s2XSkgPT0gJ2QnCisgICAgICAgICYmIHBvc1s3XSA9PSAnKCc7CisKKyAgICBpZiAoaXNTY2Fs
ZTNkKSB7CisgICAgICAgIHBvcyArPSA4OworICAgICAgICBDU1NGdW5jdGlvblZhbHVlKiB0cmFu
c2Zvcm1WYWx1ZSA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShDU1NWYWx1ZVNjYWxlM2QpOwor
ICAgICAgICBpZiAoIXBhcnNlVHJhbnNmb3JtTnVtYmVyQXJndW1lbnRzKHBvcywgZW5kLCAzLCB0
cmFuc2Zvcm1WYWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuIHRyYW5zZm9ybVZhbHVlOworICAgIH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CitzdGF0aWMgYm9vbCB0cmFuc2Zvcm1DYW5MaWtl
bHlVc2VGYXN0UGF0aChjb25zdCBDaGFyVHlwZSogY2hhcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3sK
KyAgICAvLyBWZXJ5IGZhc3Qgc2NhbiB0aGF0IGF0dGVtcHRzIHRvIHJlamVjdCBtb3N0IHRyYW5z
Zm9ybXMgdGhhdCBjb3VsZG4ndAorICAgIC8vIHRha2UgdGhlIGZhc3QgcGF0aC4gVGhpcyBhdm9p
ZHMgZG9pbmcgdGhlIG1hbGxvYyBhbmQgc3RyaW5nLT5kb3VibGUKKyAgICAvLyBjb252ZXJzaW9u
cyBpbiBwYXJzZVNpbXBsZVRyYW5zZm9ybVZhbHVlIG9ubHkgdG8gZGlzY2FyZCB0aGVtIHdoZW4g
d2UKKyAgICAvLyBydW4gaW50byBhIHRyYW5zZm9ybSBjb21wb25lbnQgd2UgZG9uJ3QgdW5kZXJz
dGFuZC4KKyAgICB1bnNpZ25lZCBpID0gMDsKKyAgICB3aGlsZSAoaSA8IGxlbmd0aCkgeworICAg
ICAgICBpZiAoaXNDU1NTcGFjZShjaGFyc1tpXSkpIHsKKyAgICAgICAgICAgICsraTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChsZW5ndGggLSBpIDwga1No
b3J0ZXN0VmFsaWRUcmFuc2Zvcm1TdHJpbmdMZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGNoYXJzW2ldKSkgeworICAgICAgICBj
YXNlICd0JzoKKyAgICAgICAgICAgIC8vIHRyYW5zbGF0ZSwgdHJhbnNsYXRlWCwgdHJhbnNsYXRl
WSwgdHJhbnNsYXRlWiwgdHJhbnNsYXRlM2QuCisgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2Vy
KGNoYXJzW2kgKyA4XSkgIT0gJ2UnKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIGkgKz0gOTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdtJzoK
KyAgICAgICAgICAgIC8vIG1hdHJpeDNkLgorICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihj
aGFyc1tpICsgN10pICE9ICdkJykKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICBpICs9IDg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAncyc6Cisg
ICAgICAgICAgICAvLyBzY2FsZTNkLgorICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihjaGFy
c1tpICsgNl0pICE9ICdkJykKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICBpICs9IDc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIC8vIEFsbCBvdGhlciB0aGluZ3MsIGV4LiByb3RhdGUuCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgc2l6ZV90IGFyZ3VtZW50c0VuZCA9IFdURjo6
ZmluZChjaGFycywgbGVuZ3RoLCAnKScsIGkpOworICAgICAgICBpZiAoYXJndW1lbnRzRW5kID09
IGtOb3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgLy8gQWR2YW5j
ZSB0byB0aGUgZW5kIG9mIHRoZSBhcmd1bWVudHMuCisgICAgICAgIGkgPSBhcmd1bWVudHNFbmQg
KyAxOworICAgIH0KKyAgICByZXR1cm4gaSA9PSBsZW5ndGg7Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBDaGFyVHlwZT4KK3N0YXRpYyBDU1NWYWx1ZUxpc3QqIHBhcnNlU2ltcGxlVHJhbnNmb3Jt
TGlzdChjb25zdCBDaGFyVHlwZSogY2hhcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBpZiAo
IXRyYW5zZm9ybUNhbkxpa2VseVVzZUZhc3RQYXRoKGNoYXJzLCBsZW5ndGgpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBjb25zdCBDaGFyVHlwZSomIHBvcyA9IGNoYXJzOworICAgIGNv
bnN0IENoYXJUeXBlKiBlbmQgPSBjaGFycyArIGxlbmd0aDsKKyAgICBDU1NWYWx1ZUxpc3QqIHRy
YW5zZm9ybUxpc3QgPSBudWxscHRyOworICAgIHdoaWxlIChwb3MgPCBlbmQpIHsKKyAgICAgICAg
d2hpbGUgKHBvcyA8IGVuZCAmJiBpc0NTU1NwYWNlKCpwb3MpKQorICAgICAgICAgICAgKytwb3M7
CisgICAgICAgIGlmIChwb3MgPj0gZW5kKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIENT
U0Z1bmN0aW9uVmFsdWUqIHRyYW5zZm9ybVZhbHVlID0gcGFyc2VTaW1wbGVUcmFuc2Zvcm1WYWx1
ZShwb3MsIGVuZCk7CisgICAgICAgIGlmICghdHJhbnNmb3JtVmFsdWUpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKCF0cmFuc2Zvcm1MaXN0KQorICAgICAgICAgICAg
dHJhbnNmb3JtTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAg
ICAgICAgdHJhbnNmb3JtTGlzdC0+YXBwZW5kKCp0cmFuc2Zvcm1WYWx1ZSk7CisgICAgfQorICAg
IHJldHVybiB0cmFuc2Zvcm1MaXN0OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIHBhcnNlU2ltcGxl
VHJhbnNmb3JtKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBzdHJpbmcp
Cit7CisgICAgQVNTRVJUKCFzdHJpbmcuaXNFbXB0eSgpKTsKKworICAgIGlmIChwcm9wZXJ0eUlE
ICE9IENTU1Byb3BlcnR5VHJhbnNmb3JtKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBp
ZiAoc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gcGFyc2VTaW1wbGVUcmFuc2Zvcm1M
aXN0KHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOworICAgIHJldHVybiBw
YXJzZVNpbXBsZVRyYW5zZm9ybUxpc3Qoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVu
Z3RoKCkpOworfQorCitDU1NWYWx1ZSogQ1NTUGFyc2VyRmFzdFBhdGhzOjptYXliZVBhcnNlVmFs
dWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHN0cmluZywgQ1NTUGFy
c2VyTW9kZSBwYXJzZXJNb2RlKQoreworICAgIGlmIChDU1NWYWx1ZSogbGVuZ3RoID0gcGFyc2VT
aW1wbGVMZW5ndGhWYWx1ZShwcm9wZXJ0eUlELCBzdHJpbmcsIHBhcnNlck1vZGUpKQorICAgICAg
ICByZXR1cm4gbGVuZ3RoOworICAgIGlmIChpc0NvbG9yUHJvcGVydHlJRChwcm9wZXJ0eUlEKSkK
KyAgICAgICAgcmV0dXJuIHBhcnNlQ29sb3Ioc3RyaW5nLCBwYXJzZXJNb2RlKTsKKyAgICBpZiAo
Q1NTVmFsdWUqIGtleXdvcmQgPSBwYXJzZUtleXdvcmRWYWx1ZShwcm9wZXJ0eUlELCBzdHJpbmcs
IHBhcnNlck1vZGUpKQorICAgICAgICByZXR1cm4ga2V5d29yZDsKKyAgICBpZiAoQ1NTVmFsdWUq
IHRyYW5zZm9ybSA9IHBhcnNlU2ltcGxlVHJhbnNmb3JtKHByb3BlcnR5SUQsIHN0cmluZykpCisg
ICAgICAgIHJldHVybiB0cmFuc2Zvcm07CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKKyAgICAg
Ki8KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTcgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
Ky8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLwor
Ly8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworI2lmbmRlZiBDU1NQYXJzZXJGYXN0UGF0aHNfaAorI2RlZmluZSBDU1NQYXJzZXJGYXN0UGF0
aHNfaAorCisjaW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5
TmFtZXMuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTVmFsdWU7
CisKK2NsYXNzIENTU1BhcnNlckZhc3RQYXRocyB7CitwdWJsaWM6CisgICAgLy8gUGFyc2VzIHNp
bXBsZSB2YWx1ZXMgbGlrZSAnMTBweCcgb3IgJ2dyZWVuJywgYnV0IG1ha2VzIG5vIGd1YXJhbnRl
ZXMKKyAgICAvLyBhYm91dCBoYW5kbGluZyBhbnkgcHJvcGVydHkgY29tcGxldGVseS4KKyAgICBz
dGF0aWMgQ1NTVmFsdWUqIG1heWJlUGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJp
bmcmLCBDU1NQYXJzZXJNb2RlKTsKKworICAgIC8vIFByb3BlcnRpZXMgaGFuZGxlZCBoZXJlIHNo
b3VsZG4ndCBiZSBleHBsaWNpdGx5IGhhbmRsZWQgaW4gQ1NTUHJvcGVydHlQYXJzZXIKKyAgICBz
dGF0aWMgYm9vbCBpc0tleXdvcmRQcm9wZXJ0eUlEKENTU1Byb3BlcnR5SUQpOworICAgIHN0YXRp
YyBib29sIGlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRWYWx1ZShDU1NQcm9wZXJ0eUlELCBDU1NW
YWx1ZUlELCBDU1NQYXJzZXJNb2RlKTsKKworICAgIHN0YXRpYyBDU1NWYWx1ZSogcGFyc2VDb2xv
cihjb25zdCBTdHJpbmcmLCBDU1NQYXJzZXJNb2RlKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIENTU1BhcnNlckZhc3RQYXRoc19oCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgQ1NTUGFyc2VySWRpb21zX2gKKyNkZWZpbmUgQ1NTUGFyc2Vy
SWRpb21zX2gKKworI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworLy8gU3BhY2UgY2hhcmFjdGVycyBhcyBkZWZpbmVkIGJ5IHRoZSBDU1Mgc3BlY2lm
aWNhdGlvbi4KKy8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtc3ludGF4LyN3aGl0ZXNwYWNl
CitpbmxpbmUgYm9vbCBpc0NTU1NwYWNlKFVDaGFyIGMpCit7CisgICAgcmV0dXJuIGMgPT0gJyAn
IHx8IGMgPT0gJ1x0JyB8fCBjID09ICdcbic7Cit9CisKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2Nz
c3dnL2Nzcy1zeW50YXgvI25hbWUtc3RhcnQtY29kZS1wb2ludAordGVtcGxhdGUgPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+Citib29sIGlzTmFtZVN0YXJ0Q29kZVBvaW50KENoYXJhY3RlclR5cGUg
YykKK3sKKyAgICByZXR1cm4gaXNBU0NJSUFscGhhKGMpIHx8IGMgPT0gJ18nIHx8ICFpc0FTQ0lJ
KGMpOworfQorCisvLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3Mtc3ludGF4LyNuYW1lLWNv
ZGUtcG9pbnQKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorYm9vbCBpc05hbWVD
b2RlUG9pbnQoQ2hhcmFjdGVyVHlwZSBjKQoreworICAgIHJldHVybiBpc05hbWVTdGFydENvZGVQ
b2ludChjKSB8fCBpc0FTQ0lJRGlnaXQoYykgfHwgYyA9PSAnLSc7Cit9CisKK30KKworI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlck9ic2VydmVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlci5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyT2Jz
ZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDAzIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdl
YmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgLSAyMDEwICBUb3JjaCBNb2JpbGUgKEJl
aWppbmcpIENvLiBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgQ1NTUGFyc2VyT2Jz
ZXJ2ZXJfaAorI2RlZmluZSBDU1NQYXJzZXJPYnNlcnZlcl9oCisKKyNpbmNsdWRlICJDU1NQcm9w
ZXJ0eVNvdXJjZURhdGEuaCIKKyNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTUGFyc2VyVG9rZW47
CitjbGFzcyBDU1NQYXJzZXJUb2tlblJhbmdlOworCisvLyBUaGlzIGlzIG9ubHkgZm9yIHRoZSBp
bnNwZWN0b3IgYW5kIHNob3VsZG4ndCBiZSB1c2VkIGVsc2V3aGVyZS4KK2NsYXNzIENTU1BhcnNl
ck9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5DU1NQYXJzZXJPYnNlcnZlcigpIHsg
fTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRSdWxlSGVhZGVyKFN0eWxlUnVsZTo6VHlwZSwgdW5z
aWduZWQgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVuZFJ1bGVIZWFkZXIodW5zaWdu
ZWQgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG9ic2VydmVTZWxlY3Rvcih1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHN0YXJ0UnVsZUJvZHkodW5zaWduZWQgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVu
ZFJ1bGVCb2R5KHVuc2lnbmVkIG9mZnNldCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvYnNlcnZl
UHJvcGVydHkodW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgYm9vbCBp
c0ltcG9ydGFudCwgYm9vbCBpc1BhcnNlZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvYnNlcnZl
Q29tbWVudCh1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KSA9IDA7Cisg
ICAgLy8gRklYTUU6IFVudXNlZCwgc2hvdWxkIGJlIHJlbW92ZWQKKyAgICB2aXJ0dWFsIHZvaWQg
c3RhcnRNZWRpYVF1ZXJ5RXhwKHVuc2lnbmVkIG9mZnNldCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBlbmRNZWRpYVF1ZXJ5RXhwKHVuc2lnbmVkIG9mZnNldCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzdGFydE1lZGlhUXVlcnkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVuZE1lZGlhUXVlcnko
KSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NQYXJz
ZXJPYnNlcnZlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlck9i
c2VydmVyV3JhcHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDcyIEBACisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQ2hyb21pdW0gQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8v
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJPYnNl
cnZlcldyYXBwZXIuaCIKKworI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuUmFuZ2UuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit1bnNpZ25lZCBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OnN0
YXJ0T2Zmc2V0KGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVy
biBtX3Rva2VuT2Zmc2V0c1tyYW5nZS5iZWdpbigpIC0gbV9maXJzdFBhcnNlclRva2VuXTsKK30K
KwordW5zaWduZWQgQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyOjpwcmV2aW91c1Rva2VuU3RhcnRP
ZmZzZXQoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdl
LmJlZ2luKCkgPT0gbV9maXJzdFBhcnNlclRva2VuKQorICAgICAgICByZXR1cm4gMDsKKyAgICBy
ZXR1cm4gbV90b2tlbk9mZnNldHNbcmFuZ2UuYmVnaW4oKSAtIG1fZmlyc3RQYXJzZXJUb2tlbiAt
IDFdOworfQorCit1bnNpZ25lZCBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OmVuZE9mZnNldChj
b25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4gbV90b2tlbk9m
ZnNldHNbcmFuZ2UuZW5kKCkgLSBtX2ZpcnN0UGFyc2VyVG9rZW5dOworfQorCit2b2lkIENTU1Bh
cnNlck9ic2VydmVyV3JhcHBlcjo6c2tpcENvbW1lbnRzQmVmb3JlKGNvbnN0IENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBib29sIGxlYXZlRGlyZWN0bHlCZWZvcmUpCit7CisgICAgdW5zaWdu
ZWQgc3RhcnRJbmRleCA9IHJhbmdlLmJlZ2luKCkgLSBtX2ZpcnN0UGFyc2VyVG9rZW47CisgICAg
aWYgKCFsZWF2ZURpcmVjdGx5QmVmb3JlKQorICAgICAgICBzdGFydEluZGV4Kys7CisgICAgd2hp
bGUgKG1fY29tbWVudEl0ZXJhdG9yIDwgbV9jb21tZW50T2Zmc2V0cy5lbmQoKSAmJiBtX2NvbW1l
bnRJdGVyYXRvci0+dG9rZW5zQmVmb3JlIDwgc3RhcnRJbmRleCkKKyAgICAgICAgbV9jb21tZW50
SXRlcmF0b3IrKzsKK30KKwordm9pZCBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXI6OnlpZWxkQ29t
bWVudHNCZWZvcmUoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgdW5z
aWduZWQgc3RhcnRJbmRleCA9IHJhbmdlLmJlZ2luKCkgLSBtX2ZpcnN0UGFyc2VyVG9rZW47Cisg
ICAgd2hpbGUgKG1fY29tbWVudEl0ZXJhdG9yIDwgbV9jb21tZW50T2Zmc2V0cy5lbmQoKSAmJiBt
X2NvbW1lbnRJdGVyYXRvci0+dG9rZW5zQmVmb3JlIDw9IHN0YXJ0SW5kZXgpIHsKKyAgICAgICAg
bV9vYnNlcnZlci5vYnNlcnZlQ29tbWVudChtX2NvbW1lbnRJdGVyYXRvci0+c3RhcnRPZmZzZXQs
IG1fY29tbWVudEl0ZXJhdG9yLT5lbmRPZmZzZXQpOworICAgICAgICBtX2NvbW1lbnRJdGVyYXRv
cisrOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJPYnNlcnZlcldyYXBwZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlck9ic2VydmVyV3JhcHBlci5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyT2JzZXJ2
ZXJXcmFwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MCBAQAorLy8gQ29weXJpZ2h0
IDIwMTUgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8v
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9u
LgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZuZGVmIENTU1BhcnNlck9ic2Vy
dmVyV3JhcHBlcl9oCisjZGVmaW5lIENTU1BhcnNlck9ic2VydmVyV3JhcHBlcl9oCisKKyNpbmNs
dWRlICJDU1NQYXJzZXJPYnNlcnZlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IENTU1BhcnNlck9ic2VydmVyV3JhcHBlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQ1NTUGFy
c2VyT2JzZXJ2ZXJXcmFwcGVyKENTU1BhcnNlck9ic2VydmVyJiBvYnNlcnZlcikKKyAgICAgICAg
OiBtX29ic2VydmVyKG9ic2VydmVyKQorICAgIHsgfQorCisgICAgdW5zaWduZWQgc3RhcnRPZmZz
ZXQoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworICAgIHVuc2lnbmVkIHByZXZpb3VzVG9r
ZW5TdGFydE9mZnNldChjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJik7CisgICAgdW5zaWduZWQg
ZW5kT2Zmc2V0KGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmKTsgLy8gSW5jbHVkZXMgdHJhaWxp
bmcgY29tbWVudHMKKworICAgIHZvaWQgc2tpcENvbW1lbnRzQmVmb3JlKGNvbnN0IENTU1BhcnNl
clRva2VuUmFuZ2UmLCBib29sIGxlYXZlRGlyZWN0bHlCZWZvcmUpOworICAgIHZvaWQgeWllbGRD
b21tZW50c0JlZm9yZShjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJik7CisKKyAgICBDU1NQYXJz
ZXJPYnNlcnZlciYgb2JzZXJ2ZXIoKSB7IHJldHVybiBtX29ic2VydmVyOyB9CisgICAgdm9pZCBh
ZGRDb21tZW50KHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIHVuc2ln
bmVkIHRva2Vuc0JlZm9yZSkKKyAgICB7CisgICAgICAgIENvbW1lbnRQb3NpdGlvbiBwb3NpdGlv
biA9IHtzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCB0b2tlbnNCZWZvcmV9OworICAgICAgICBtX2Nv
bW1lbnRPZmZzZXRzLmFwcGVuZChwb3NpdGlvbik7CisgICAgfQorICAgIHZvaWQgYWRkVG9rZW4o
dW5zaWduZWQgc3RhcnRPZmZzZXQpIHsgbV90b2tlbk9mZnNldHMuYXBwZW5kKHN0YXJ0T2Zmc2V0
KTsgfQorICAgIHZvaWQgZmluYWxpemVDb25zdHJ1Y3Rpb24oQ1NTUGFyc2VyVG9rZW4qIGZpcnN0
UGFyc2VyVG9rZW4pCisgICAgeworICAgICAgICBtX2ZpcnN0UGFyc2VyVG9rZW4gPSBmaXJzdFBh
cnNlclRva2VuOworICAgICAgICBtX2NvbW1lbnRJdGVyYXRvciA9IG1fY29tbWVudE9mZnNldHMu
YmVnaW4oKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ1NTUGFyc2VyT2JzZXJ2ZXImIG1fb2Jz
ZXJ2ZXI7CisgICAgVmVjdG9yPHVuc2lnbmVkPiBtX3Rva2VuT2Zmc2V0czsKKyAgICBDU1NQYXJz
ZXJUb2tlbiogbV9maXJzdFBhcnNlclRva2VuOworCisgICAgc3RydWN0IENvbW1lbnRQb3NpdGlv
biB7CisgICAgICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0OworICAgICAgICB1bnNpZ25lZCBlbmRP
ZmZzZXQ7CisgICAgICAgIHVuc2lnbmVkIHRva2Vuc0JlZm9yZTsKKyAgICB9OworCisgICAgVmVj
dG9yPENvbW1lbnRQb3NpdGlvbj4gbV9jb21tZW50T2Zmc2V0czsKKyAgICBWZWN0b3I8Q29tbWVu
dFBvc2l0aW9uPjo6aXRlcmF0b3IgbV9jb21tZW50SXRlcmF0b3I7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXJfaApJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NzcgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBD
aHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8v
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNT
U1BhcnNlclRva2VuLmgiCisKKyNpbmNsdWRlICJDU1NNYXJrdXAuaCIKKyNpbmNsdWRlICJDU1NQ
cmltaXRpdmVWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VyLmgiCisjaW5jbHVk
ZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK0NTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgY3NzUHJp
bWl0aXZlVmFsdWVVbml0RnJvbVRyaWUoY29uc3QgQ2hhcmFjdGVyVHlwZSogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoKQoreworICAgIEFTU0VSVChkYXRhKTsKKyAgICBBU1NFUlQobGVuZ3RoKTsKKyAg
ICBzd2l0Y2ggKGxlbmd0aCkgeworICAgIGNhc2UgMToKKyAgICAgICAgc3dpdGNoICh0b0FTQ0lJ
TG93ZXIoZGF0YVswXSkpIHsKKyAgICAgICAgY2FzZSAncyc6CisgICAgICAgICAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1M7CisgICAgICAgIH0KKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzBd
KSkgeworICAgICAgICBjYXNlICdjJzoKKyAgICAgICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2Vy
KGRhdGFbMV0pKSB7CisgICAgICAgICAgICBjYXNlICdoJzoKKyAgICAgICAgICAgICAgICByZXR1
cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0NIUzsKKyAgICAgICAgICAgIGNh
c2UgJ20nOgorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGVzOjpDU1NfQ007CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSAnZSc6CisgICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkgewor
ICAgICAgICAgICAgY2FzZSAnbSc6CisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19FTVM7CisgICAgICAgICAgICBjYXNlICd4JzoKKyAgICAg
ICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0VYUzsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdmJzoKKyAg
ICAgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkgPT0gJ3InKQorICAgICAgICAgICAg
ICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfRlI7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnaCc6CisgICAgICAgICAgICBpZiAodG9BU0NJSUxv
d2VyKGRhdGFbMV0pID09ICd6JykKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZl
VmFsdWU6OlVuaXRUeXBlczo6Q1NTX0haOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgJ2knOgorICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzFdKSA9PSAnbicpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19J
TjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdtJzoKKyAgICAgICAgICAgIHN3
aXRjaCAodG9BU0NJSUxvd2VyKGRhdGFbMV0pKSB7CisgICAgICAgICAgICBjYXNlICdtJzoKKyAg
ICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX01N
OworICAgICAgICAgICAgY2FzZSAncyc6CisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19NUzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlICdwJzoKKyAgICAgICAgICAgIHN3aXRjaCAodG9BU0NJSUxv
d2VyKGRhdGFbMV0pKSB7CisgICAgICAgICAgICBjYXNlICdjJzoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1BDOworICAgICAgICAgICAg
Y2FzZSAndCc6CisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZXM6OkNTU19QVDsKKyAgICAgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICAgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUFg7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAndic6CisgICAgICAgICAgICBzd2l0
Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzFdKSkgeworICAgICAgICAgICAgY2FzZSAnaCc6CisgICAg
ICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19WSDsK
KyAgICAgICAgICAgIGNhc2UgJ3cnOgorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfVlc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIDM6CisgICAgICAgIHN3
aXRjaCAodG9BU0NJSUxvd2VyKGRhdGFbMF0pKSB7CisgICAgICAgIGNhc2UgJ2QnOgorICAgICAg
ICAgICAgc3dpdGNoICh0b0FTQ0lJTG93ZXIoZGF0YVsxXSkpIHsKKyAgICAgICAgICAgIGNhc2Ug
J2UnOgorICAgICAgICAgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsyXSkgPT0gJ2cnKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6
Q1NTX0RFRzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ3AnOgor
ICAgICAgICAgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoZGF0YVsyXSkgPT0gJ2knKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0RQ
STsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgJ2snOgorICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzFd
KSA9PSAnaCcgJiYgdG9BU0NJSUxvd2VyKGRhdGFbMl0pID09ICd6JykKKyAgICAgICAgICAgICAg
ICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX0tIWjsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlICdyJzoKKyAgICAgICAgICAgIHN3aXRjaCAodG9BU0NJ
SUxvd2VyKGRhdGFbMV0pKSB7CisgICAgICAgICAgICBjYXNlICdhJzoKKyAgICAgICAgICAgICAg
ICBpZiAodG9BU0NJSUxvd2VyKGRhdGFbMl0pID09ICdkJykKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19SQUQ7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdlJzoKKyAgICAgICAgICAgICAgICBpZiAo
dG9BU0NJSUxvd2VyKGRhdGFbMl0pID09ICdtJykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19SRU1TOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgYnJlYWs7
CisgICAgY2FzZSA0OgorICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzBdKSkgewor
ICAgICAgICBjYXNlICdkJzoKKyAgICAgICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGRhdGFb
MV0pKSB7CisgICAgICAgICAgICBjYXNlICdwJzoKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHRv
QVNDSUlMb3dlcihkYXRhWzJdKSkgeworICAgICAgICAgICAgICAgIGNhc2UgJ2MnOgorICAgICAg
ICAgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGRhdGFbM10pID09ICdtJykKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1Nf
RFBDTTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAn
cCc6CisgICAgICAgICAgICAgICAgICAgIGlmICh0b0FTQ0lJTG93ZXIoZGF0YVszXSkgPT0gJ3gn
KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZXM6OkNTU19EUFBYOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSAnZyc6CisgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2VyKGRhdGFbMV0pID09
ICdyJyAmJiB0b0FTQ0lJTG93ZXIoZGF0YVsyXSkgPT0gJ2EnICYmIHRvQVNDSUlMb3dlcihkYXRh
WzNdKSA9PSAnZCcpCisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZXM6OkNTU19HUkFEOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ3Qn
OgorICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRhWzFdKSA9PSAndScgJiYgdG9BU0NJ
SUxvd2VyKGRhdGFbMl0pID09ICdyJyAmJiB0b0FTQ0lJTG93ZXIoZGF0YVszXSkgPT0gJ24nKQor
ICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1Nf
VFVSTjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICd2JzoKKyAgICAgICAgICAg
IHN3aXRjaCAodG9BU0NJSUxvd2VyKGRhdGFbMV0pKSB7CisgICAgICAgICAgICBjYXNlICdtJzoK
KyAgICAgICAgICAgICAgICBzd2l0Y2ggKHRvQVNDSUlMb3dlcihkYXRhWzJdKSkgeworICAgICAg
ICAgICAgICAgIGNhc2UgJ2EnOgorICAgICAgICAgICAgICAgICAgICBpZiAodG9BU0NJSUxvd2Vy
KGRhdGFbM10pID09ICd4JykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfVk1BWDsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSAnaSc6CisgICAgICAgICAgICAgICAgICAgIGlmICh0
b0FTQ0lJTG93ZXIoZGF0YVszXSkgPT0gJ24nKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19WTUlOOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBi
cmVhazsKKyAgICBjYXNlIDU6CisgICAgICAgIHN3aXRjaCAodG9BU0NJSUxvd2VyKGRhdGFbMF0p
KSB7CisgICAgICAgIGNhc2UgJ18nOgorICAgICAgICAgICAgaWYgKHRvQVNDSUlMb3dlcihkYXRh
WzFdKSA9PSAnXycgJiYgdG9BU0NJSUxvd2VyKGRhdGFbMl0pID09ICdxJyAmJiB0b0FTQ0lJTG93
ZXIoZGF0YVszXSkgPT0gJ2UnICYmIHRvQVNDSUlMb3dlcihkYXRhWzRdKSA9PSAnbScpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19FTVM7
IC8vIEZJWE1FLU5FV1BBUlNFUjogTmVlZCBxdWlya3kgZW1zLgorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfVU5LTk9XTjsKK30KKworc3RhdGljIENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZXMgc3RyaW5nVG9Vbml0VHlwZShTdHJpbmdWaWV3IHN0cmluZ1ZpZXcp
Cit7CisgICAgaWYgKHN0cmluZ1ZpZXcuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBjc3NQcmlt
aXRpdmVWYWx1ZVVuaXRGcm9tVHJpZShzdHJpbmdWaWV3LmNoYXJhY3RlcnM4KCksIHN0cmluZ1Zp
ZXcubGVuZ3RoKCkpOworICAgIHJldHVybiBjc3NQcmltaXRpdmVWYWx1ZVVuaXRGcm9tVHJpZShz
dHJpbmdWaWV3LmNoYXJhY3RlcnMxNigpLCBzdHJpbmdWaWV3Lmxlbmd0aCgpKTsKK30KKworQ1NT
UGFyc2VyVG9rZW46OkNTU1BhcnNlclRva2VuKENTU1BhcnNlclRva2VuVHlwZSB0eXBlLCBCbG9j
a1R5cGUgYmxvY2tUeXBlKQorICAgIDogbV90eXBlKHR5cGUpCisgICAgLCBtX2Jsb2NrVHlwZShi
bG9ja1R5cGUpCit7Cit9CisKKy8vIEp1c3QgYSBoZWxwZXIgdXNlZCBmb3IgRGVsaW1pdGVyIHRv
a2Vucy4KK0NTU1BhcnNlclRva2VuOjpDU1NQYXJzZXJUb2tlbihDU1NQYXJzZXJUb2tlblR5cGUg
dHlwZSwgVUNoYXIgYykKKyAgICA6IG1fdHlwZSh0eXBlKQorICAgICwgbV9ibG9ja1R5cGUoTm90
QmxvY2spCisgICAgLCBtX2RlbGltaXRlcihjKQoreworICAgIEFTU0VSVChtX3R5cGUgPT0gRGVs
aW1pdGVyVG9rZW4pOworfQorCitDU1NQYXJzZXJUb2tlbjo6Q1NTUGFyc2VyVG9rZW4oQ1NTUGFy
c2VyVG9rZW5UeXBlIHR5cGUsIFN0cmluZ1ZpZXcgdmFsdWUsIEJsb2NrVHlwZSBibG9ja1R5cGUp
CisgICAgOiBtX3R5cGUodHlwZSkKKyAgICAsIG1fYmxvY2tUeXBlKGJsb2NrVHlwZSkKK3sKKyAg
ICBpbml0VmFsdWVGcm9tU3RyaW5nVmlldyh2YWx1ZSk7CisgICAgbV9pZCA9IC0xOworfQorCitD
U1NQYXJzZXJUb2tlbjo6Q1NTUGFyc2VyVG9rZW4oQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIGRv
dWJsZSBudW1lcmljVmFsdWUsIE51bWVyaWNWYWx1ZVR5cGUgbnVtZXJpY1ZhbHVlVHlwZSwgTnVt
ZXJpY1NpZ24gc2lnbikKKyAgICA6IG1fdHlwZSh0eXBlKQorICAgICwgbV9ibG9ja1R5cGUoTm90
QmxvY2spCisgICAgLCBtX251bWVyaWNWYWx1ZVR5cGUobnVtZXJpY1ZhbHVlVHlwZSkKKyAgICAs
IG1fbnVtZXJpY1NpZ24oc2lnbikKKyAgICAsIG1fdW5pdChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX05VTUJFUikpCit7CisgICAgQVNTRVJU
KHR5cGUgPT0gTnVtYmVyVG9rZW4pOworICAgIG1fbnVtZXJpY1ZhbHVlID0gY2xhbXBUbzxkb3Vi
bGU+KG51bWVyaWNWYWx1ZSwgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSwgc3Rk
OjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpKTsKK30KKworQ1NTUGFyc2VyVG9rZW46OkNT
U1BhcnNlclRva2VuKENTU1BhcnNlclRva2VuVHlwZSB0eXBlLCBVQ2hhcjMyIHN0YXJ0LCBVQ2hh
cjMyIGVuZCkKKyAgICA6IG1fdHlwZShVbmljb2RlUmFuZ2VUb2tlbikKKyAgICAsIG1fYmxvY2tU
eXBlKE5vdEJsb2NrKQoreworICAgIEFTU0VSVF9VTlVTRUQodHlwZSwgdHlwZSA9PSBVbmljb2Rl
UmFuZ2VUb2tlbik7CisgICAgbV91bmljb2RlUmFuZ2Uuc3RhcnQgPSBzdGFydDsKKyAgICBtX3Vu
aWNvZGVSYW5nZS5lbmQgPSBlbmQ7Cit9CisKK0NTU1BhcnNlclRva2VuOjpDU1NQYXJzZXJUb2tl
bihIYXNoVG9rZW5UeXBlIHR5cGUsIFN0cmluZ1ZpZXcgdmFsdWUpCisgICAgOiBtX3R5cGUoSGFz
aFRva2VuKQorICAgICwgbV9ibG9ja1R5cGUoTm90QmxvY2spCisgICAgLCBtX2hhc2hUb2tlblR5
cGUodHlwZSkKK3sKKyAgICBpbml0VmFsdWVGcm9tU3RyaW5nVmlldyh2YWx1ZSk7Cit9CisKK3Zv
aWQgQ1NTUGFyc2VyVG9rZW46OmNvbnZlcnRUb0RpbWVuc2lvbldpdGhVbml0KFN0cmluZ1ZpZXcg
dW5pdCkKK3sKKyAgICBBU1NFUlQobV90eXBlID09IE51bWJlclRva2VuKTsKKyAgICBtX3R5cGUg
PSBEaW1lbnNpb25Ub2tlbjsKKyAgICBpbml0VmFsdWVGcm9tU3RyaW5nVmlldyh1bml0KTsKKyAg
ICBtX3VuaXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RyaW5nVG9Vbml0VHlwZSh1bml0KSk7
Cit9CisKK3ZvaWQgQ1NTUGFyc2VyVG9rZW46OmNvbnZlcnRUb1BlcmNlbnRhZ2UoKQoreworICAg
IEFTU0VSVChtX3R5cGUgPT0gTnVtYmVyVG9rZW4pOworICAgIG1fdHlwZSA9IFBlcmNlbnRhZ2VU
b2tlbjsKKyAgICBtX3VuaXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlczo6Q1NTX1BFUkNFTlRBR0UpOworfQorCitVQ2hhciBDU1NQYXJzZXJUb2tl
bjo6ZGVsaW1pdGVyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09IERlbGltaXRlclRv
a2VuKTsKKyAgICByZXR1cm4gbV9kZWxpbWl0ZXI7Cit9CisKK051bWVyaWNTaWduIENTU1BhcnNl
clRva2VuOjpudW1lcmljU2lnbigpIGNvbnN0Cit7CisgICAgLy8gVGhpcyBpcyB2YWxpZCBmb3Ig
RGltZW5zaW9uVG9rZW4gYW5kIFBlcmNlbnRhZ2VUb2tlbiwgYnV0IG9ubHkgdXNlZAorICAgIC8v
IGluIDxhbitiPiBwYXJzaW5nIG9uIE51bWJlclRva2Vucy4KKyAgICBBU1NFUlQobV90eXBlID09
IE51bWJlclRva2VuKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TnVtZXJpY1NpZ24+KG1fbnVt
ZXJpY1NpZ24pOworfQorCitOdW1lcmljVmFsdWVUeXBlIENTU1BhcnNlclRva2VuOjpudW1lcmlj
VmFsdWVUeXBlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09IE51bWJlclRva2VuIHx8
IG1fdHlwZSA9PSBQZXJjZW50YWdlVG9rZW4gfHwgbV90eXBlID09IERpbWVuc2lvblRva2VuKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TnVtZXJpY1ZhbHVlVHlwZT4obV9udW1lcmljVmFsdWVU
eXBlKTsKK30KKworZG91YmxlIENTU1BhcnNlclRva2VuOjpudW1lcmljVmFsdWUoKSBjb25zdAor
eworICAgIEFTU0VSVChtX3R5cGUgPT0gTnVtYmVyVG9rZW4gfHwgbV90eXBlID09IFBlcmNlbnRh
Z2VUb2tlbiB8fCBtX3R5cGUgPT0gRGltZW5zaW9uVG9rZW4pOworICAgIHJldHVybiBtX251bWVy
aWNWYWx1ZTsKK30KKworQ1NTUHJvcGVydHlJRCBDU1NQYXJzZXJUb2tlbjo6cGFyc2VBc1VucmVz
b2x2ZWRDU1NQcm9wZXJ0eUlEKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09IElkZW50
VG9rZW4pOworICAgIHJldHVybiB1bnJlc29sdmVkQ1NTUHJvcGVydHlJRCh2YWx1ZSgpKTsKK30K
KworQ1NTVmFsdWVJRCBDU1NQYXJzZXJUb2tlbjo6aWQoKSBjb25zdAoreworICAgIGlmIChtX3R5
cGUgIT0gSWRlbnRUb2tlbikKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVlSW52YWxpZDsKKyAgICBp
ZiAobV9pZCA8IDApCisgICAgICAgIG1faWQgPSBjc3NWYWx1ZUtleXdvcmRJRCh2YWx1ZSgpKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJRD4obV9pZCk7Cit9CisKK0NTU1ZhbHVl
SUQgQ1NTUGFyc2VyVG9rZW46OmZ1bmN0aW9uSWQoKSBjb25zdAoreworICAgIGlmIChtX3R5cGUg
IT0gRnVuY3Rpb25Ub2tlbikKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVlSW52YWxpZDsKKyAgICBp
ZiAobV9pZCA8IDApCisgICAgICAgIG1faWQgPSBjc3NWYWx1ZUtleXdvcmRJRCh2YWx1ZSgpKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJRD4obV9pZCk7Cit9CisKK2Jvb2wgQ1NT
UGFyc2VyVG9rZW46Omhhc1N0cmluZ0JhY2tpbmcoKSBjb25zdAoreworICAgIENTU1BhcnNlclRv
a2VuVHlwZSB0b2tlblR5cGUgPSB0eXBlKCk7CisgICAgcmV0dXJuIHRva2VuVHlwZSA9PSBJZGVu
dFRva2VuCisgICAgICAgIHx8IHRva2VuVHlwZSA9PSBGdW5jdGlvblRva2VuCisgICAgICAgIHx8
IHRva2VuVHlwZSA9PSBBdEtleXdvcmRUb2tlbgorICAgICAgICB8fCB0b2tlblR5cGUgPT0gSGFz
aFRva2VuCisgICAgICAgIHx8IHRva2VuVHlwZSA9PSBVcmxUb2tlbgorICAgICAgICB8fCB0b2tl
blR5cGUgPT0gRGltZW5zaW9uVG9rZW4KKyAgICAgICAgfHwgdG9rZW5UeXBlID09IFN0cmluZ1Rv
a2VuOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NQYXJzZXJUb2tlbjo6Y29weVdpdGhVcGRhdGVk
U3RyaW5nKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZykgY29uc3QKK3sKKyAgICBDU1NQYXJzZXJU
b2tlbiBjb3B5KCp0aGlzKTsKKyAgICBjb3B5LmluaXRWYWx1ZUZyb21TdHJpbmdWaWV3KHN0cmlu
Zyk7CisgICAgcmV0dXJuIGNvcHk7Cit9CisKK2Jvb2wgQ1NTUGFyc2VyVG9rZW46OnZhbHVlRGF0
YUNoYXJSYXdFcXVhbChjb25zdCBDU1NQYXJzZXJUb2tlbiYgb3RoZXIpIGNvbnN0Cit7CisgICAg
aWYgKG1fdmFsdWVMZW5ndGggIT0gb3RoZXIubV92YWx1ZUxlbmd0aCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKG1fdmFsdWVEYXRhQ2hhclJhdyA9PSBvdGhlci5tX3ZhbHVlRGF0
YUNoYXJSYXcgJiYgbV92YWx1ZUlzOEJpdCA9PSBvdGhlci5tX3ZhbHVlSXM4Qml0KQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChtX3ZhbHVlSXM4Qml0KQorICAgICAgICByZXR1cm4g
b3RoZXIubV92YWx1ZUlzOEJpdCA/IGVxdWFsKHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4obV92
YWx1ZURhdGFDaGFyUmF3KSwgc3RhdGljX2Nhc3Q8Y29uc3QgTENoYXIqPihvdGhlci5tX3ZhbHVl
RGF0YUNoYXJSYXcpLCBtX3ZhbHVlTGVuZ3RoKSA6IGVxdWFsKHN0YXRpY19jYXN0PGNvbnN0IExD
aGFyKj4obV92YWx1ZURhdGFDaGFyUmF3KSwgc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPihvdGhl
ci5tX3ZhbHVlRGF0YUNoYXJSYXcpLCBtX3ZhbHVlTGVuZ3RoKTsKKyAgICAKKyAgICByZXR1cm4g
b3RoZXIubV92YWx1ZUlzOEJpdCA/IGVxdWFsKHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4obV92
YWx1ZURhdGFDaGFyUmF3KSwgc3RhdGljX2Nhc3Q8Y29uc3QgTENoYXIqPihvdGhlci5tX3ZhbHVl
RGF0YUNoYXJSYXcpLCBtX3ZhbHVlTGVuZ3RoKSA6IGVxdWFsKHN0YXRpY19jYXN0PGNvbnN0IFVD
aGFyKj4obV92YWx1ZURhdGFDaGFyUmF3KSwgc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPihvdGhl
ci5tX3ZhbHVlRGF0YUNoYXJSYXcpLCBtX3ZhbHVlTGVuZ3RoKTsKK30KKworYm9vbCBDU1NQYXJz
ZXJUb2tlbjo6b3BlcmF0b3I9PShjb25zdCBDU1NQYXJzZXJUb2tlbiYgb3RoZXIpIGNvbnN0Cit7
CisgICAgaWYgKG1fdHlwZSAhPSBvdGhlci5tX3R5cGUpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgRGVsaW1pdGVyVG9rZW46CisgICAgICAg
IHJldHVybiBkZWxpbWl0ZXIoKSA9PSBvdGhlci5kZWxpbWl0ZXIoKTsKKyAgICBjYXNlIEhhc2hU
b2tlbjoKKyAgICAgICAgaWYgKG1faGFzaFRva2VuVHlwZSAhPSBvdGhlci5tX2hhc2hUb2tlblR5
cGUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIEZBTExUSFJPVUdIOworICAg
IGNhc2UgSWRlbnRUb2tlbjoKKyAgICBjYXNlIEZ1bmN0aW9uVG9rZW46CisgICAgY2FzZSBTdHJp
bmdUb2tlbjoKKyAgICBjYXNlIFVybFRva2VuOgorICAgICAgICByZXR1cm4gdmFsdWVEYXRhQ2hh
clJhd0VxdWFsKG90aGVyKTsKKyAgICBjYXNlIERpbWVuc2lvblRva2VuOgorICAgICAgICBpZiAo
IXZhbHVlRGF0YUNoYXJSYXdFcXVhbChvdGhlcikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgTnVtYmVyVG9rZW46CisgICAgY2FzZSBQ
ZXJjZW50YWdlVG9rZW46CisgICAgICAgIHJldHVybiBtX251bWVyaWNTaWduID09IG90aGVyLm1f
bnVtZXJpY1NpZ24gJiYgbV9udW1lcmljVmFsdWUgPT0gb3RoZXIubV9udW1lcmljVmFsdWUgJiYg
bV9udW1lcmljVmFsdWVUeXBlID09IG90aGVyLm1fbnVtZXJpY1ZhbHVlVHlwZTsKKyAgICBjYXNl
IFVuaWNvZGVSYW5nZVRva2VuOgorICAgICAgICByZXR1cm4gbV91bmljb2RlUmFuZ2Uuc3RhcnQg
PT0gb3RoZXIubV91bmljb2RlUmFuZ2Uuc3RhcnQgJiYgbV91bmljb2RlUmFuZ2UuZW5kID09IG90
aGVyLm1fdW5pY29kZVJhbmdlLmVuZDsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9Cit9CisKK3ZvaWQgQ1NTUGFyc2VyVG9rZW46OnNlcmlhbGl6ZShTdHJpbmdCdWls
ZGVyJiBidWlsZGVyKSBjb25zdAoreworICAgIC8vIFRoaXMgaXMgY3VycmVudGx5IG9ubHkgdXNl
ZCBmb3IgQHN1cHBvcnRzIENTU09NLiBUbyBrZWVwIG91ciBpbXBsZW1lbnRhdGlvbgorICAgIC8v
IHNpbXBsZSB3ZSBoYW5kbGUgc29tZSBvZiB0aGUgZWRnZSBjYXNlcyBpbmNvcnJlY3RseSAoc2Vl
IGNvbW1lbnRzIGJlbG93KS4KKyAgICBzd2l0Y2ggKHR5cGUoKSkgeworICAgIGNhc2UgSWRlbnRU
b2tlbjoKKyAgICAgICAgc2VyaWFsaXplSWRlbnRpZmllcih2YWx1ZSgpLnRvU3RyaW5nKCksIGJ1
aWxkZXIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZ1bmN0aW9uVG9rZW46CisgICAgICAg
IHNlcmlhbGl6ZUlkZW50aWZpZXIodmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVyKTsKKyAgICAg
ICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCcoJyk7CisgICAgY2FzZSBBdEtleXdvcmRUb2tlbjoK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoJ0AnKTsKKyAgICAgICAgc2VyaWFsaXplSWRlbnRpZmll
cih2YWx1ZSgpLnRvU3RyaW5nKCksIGJ1aWxkZXIpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEhhc2hUb2tlbjoKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJyMnKTsKKyAgICAgICAgc2VyaWFs
aXplSWRlbnRpZmllcih2YWx1ZSgpLnRvU3RyaW5nKCksIGJ1aWxkZXIsIChnZXRIYXNoVG9rZW5U
eXBlKCkgPT0gSGFzaFRva2VuVW5yZXN0cmljdGVkKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgVXJsVG9rZW46CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ1cmwoIik7CisgICAgICAgIHNl
cmlhbGl6ZUlkZW50aWZpZXIodmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVyKTsKKyAgICAgICAg
cmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CisgICAgY2FzZSBEZWxpbWl0ZXJUb2tlbjoKKyAg
ICAgICAgaWYgKGRlbGltaXRlcigpID09ICdcXCcpCisgICAgICAgICAgICByZXR1cm4gYnVpbGRl
ci5hcHBlbmQoIlxcXG4iKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKGRlbGltaXRl
cigpKTsKKyAgICBjYXNlIE51bWJlclRva2VuOgorICAgICAgICAvLyBUaGVzZSB3b24ndCBwcm9w
ZXJseSBwcmVzZXJ2ZSB0aGUgTnVtZXJpY1ZhbHVlVHlwZSBmbGFnCisgICAgICAgIHJldHVybiBi
dWlsZGVyLmFwcGVuZE51bWJlcihudW1lcmljVmFsdWUoKSk7CisgICAgY2FzZSBQZXJjZW50YWdl
VG9rZW46CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG51bWVyaWNWYWx1ZSgpKTsKKyAg
ICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCclJyk7CisgICAgY2FzZSBEaW1lbnNpb25Ub2tl
bjoKKyAgICAgICAgLy8gVGhpcyB3aWxsIGluY29ycmVjdGx5IHNlcmlhbGl6ZSBlLmcuIDRlM2Uy
IGFzIDQwMDBlMgorICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihudW1lcmljVmFsdWUoKSk7
CisgICAgICAgIHNlcmlhbGl6ZUlkZW50aWZpZXIodmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVy
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVbmljb2RlUmFuZ2VUb2tlbjoKKyAgICAgICAg
cmV0dXJuIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJVKyVYLSVYIiwgdW5pY29kZVJh
bmdlU3RhcnQoKSwgdW5pY29kZVJhbmdlRW5kKCkpKTsKKyAgICBjYXNlIFN0cmluZ1Rva2VuOgor
ICAgICAgICByZXR1cm4gc2VyaWFsaXplU3RyaW5nKHZhbHVlKCkudG9TdHJpbmcoKSwgYnVpbGRl
cik7CisKKyAgICBjYXNlIEluY2x1ZGVNYXRjaFRva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRl
ci5hcHBlbmQoIn49Iik7CisgICAgY2FzZSBEYXNoTWF0Y2hUb2tlbjoKKyAgICAgICAgcmV0dXJu
IGJ1aWxkZXIuYXBwZW5kKCJ8PSIpOworICAgIGNhc2UgUHJlZml4TWF0Y2hUb2tlbjoKKyAgICAg
ICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCJePSIpOworICAgIGNhc2UgU3VmZml4TWF0Y2hUb2tl
bjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCIkPSIpOworICAgIGNhc2UgU3Vic3Ry
aW5nTWF0Y2hUb2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCIqPSIpOworICAg
IGNhc2UgQ29sdW1uVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgifHwiKTsK
KyAgICBjYXNlIENET1Rva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoIjwhLS0i
KTsKKyAgICBjYXNlIENEQ1Rva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoIi0t
PiIpOworICAgIGNhc2UgQmFkU3RyaW5nVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFw
cGVuZCgiJ1xuIik7CisgICAgY2FzZSBCYWRVcmxUb2tlbjoKKyAgICAgICAgcmV0dXJuIGJ1aWxk
ZXIuYXBwZW5kKCJ1cmwoKCkiKTsKKyAgICBjYXNlIFdoaXRlc3BhY2VUb2tlbjoKKyAgICAgICAg
cmV0dXJuIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgY2FzZSBDb2xvblRva2VuOgorICAgICAg
ICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJzonKTsKKyAgICBjYXNlIFNlbWljb2xvblRva2VuOgor
ICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJzsnKTsKKyAgICBjYXNlIENvbW1hVG9rZW46
CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgnLCcpOworICAgIGNhc2UgTGVmdFBhcmVu
dGhlc2lzVG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVyLmFwcGVuZCgnKCcpOworICAgIGNh
c2UgUmlnaHRQYXJlbnRoZXNpc1Rva2VuOgorICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQo
JyknKTsKKyAgICBjYXNlIExlZnRCcmFja2V0VG9rZW46CisgICAgICAgIHJldHVybiBidWlsZGVy
LmFwcGVuZCgnWycpOworICAgIGNhc2UgUmlnaHRCcmFja2V0VG9rZW46CisgICAgICAgIHJldHVy
biBidWlsZGVyLmFwcGVuZCgnXScpOworICAgIGNhc2UgTGVmdEJyYWNlVG9rZW46CisgICAgICAg
IHJldHVybiBidWlsZGVyLmFwcGVuZCgneycpOworICAgIGNhc2UgUmlnaHRCcmFjZVRva2VuOgor
ICAgICAgICByZXR1cm4gYnVpbGRlci5hcHBlbmQoJ30nKTsKKworICAgIGNhc2UgRU9GVG9rZW46
CisgICAgY2FzZSBDb21tZW50VG9rZW46CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW4uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDE4MSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgVGhlIENocm9taXVt
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisv
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisjaWZuZGVmIENTU1BhcnNlclRva2VuX2gKKyNkZWZpbmUgQ1NTUGFy
c2VyVG9rZW5faAorCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBDU1NQ
YXJzZXJUb2tlblR5cGUgeworICAgIElkZW50VG9rZW4gPSAwLAorICAgIEZ1bmN0aW9uVG9rZW4s
CisgICAgQXRLZXl3b3JkVG9rZW4sCisgICAgSGFzaFRva2VuLAorICAgIFVybFRva2VuLAorICAg
IEJhZFVybFRva2VuLAorICAgIERlbGltaXRlclRva2VuLAorICAgIE51bWJlclRva2VuLAorICAg
IFBlcmNlbnRhZ2VUb2tlbiwKKyAgICBEaW1lbnNpb25Ub2tlbiwKKyAgICBJbmNsdWRlTWF0Y2hU
b2tlbiwKKyAgICBEYXNoTWF0Y2hUb2tlbiwKKyAgICBQcmVmaXhNYXRjaFRva2VuLAorICAgIFN1
ZmZpeE1hdGNoVG9rZW4sCisgICAgU3Vic3RyaW5nTWF0Y2hUb2tlbiwKKyAgICBDb2x1bW5Ub2tl
biwKKyAgICBVbmljb2RlUmFuZ2VUb2tlbiwKKyAgICBXaGl0ZXNwYWNlVG9rZW4sCisgICAgQ0RP
VG9rZW4sCisgICAgQ0RDVG9rZW4sCisgICAgQ29sb25Ub2tlbiwKKyAgICBTZW1pY29sb25Ub2tl
biwKKyAgICBDb21tYVRva2VuLAorICAgIExlZnRQYXJlbnRoZXNpc1Rva2VuLAorICAgIFJpZ2h0
UGFyZW50aGVzaXNUb2tlbiwKKyAgICBMZWZ0QnJhY2tldFRva2VuLAorICAgIFJpZ2h0QnJhY2tl
dFRva2VuLAorICAgIExlZnRCcmFjZVRva2VuLAorICAgIFJpZ2h0QnJhY2VUb2tlbiwKKyAgICBT
dHJpbmdUb2tlbiwKKyAgICBCYWRTdHJpbmdUb2tlbiwKKyAgICBFT0ZUb2tlbiwKKyAgICBDb21t
ZW50VG9rZW4sCit9OworCitlbnVtIE51bWVyaWNTaWduIHsKKyAgICBOb1NpZ24sCisgICAgUGx1
c1NpZ24sCisgICAgTWludXNTaWduLAorfTsKKworZW51bSBOdW1lcmljVmFsdWVUeXBlIHsKKyAg
ICBJbnRlZ2VyVmFsdWVUeXBlLAorICAgIE51bWJlclZhbHVlVHlwZSwKK307CisKK2VudW0gSGFz
aFRva2VuVHlwZSB7CisgICAgSGFzaFRva2VuSWQsCisgICAgSGFzaFRva2VuVW5yZXN0cmljdGVk
LAorfTsKKworY2xhc3MgQ1NTUGFyc2VyVG9rZW4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIGVudW0gQmxvY2tUeXBlIHsKKyAgICAgICAgTm90QmxvY2ssCisg
ICAgICAgIEJsb2NrU3RhcnQsCisgICAgICAgIEJsb2NrRW5kLAorICAgIH07CisKKyAgICBDU1NQ
YXJzZXJUb2tlbihDU1NQYXJzZXJUb2tlblR5cGUsIEJsb2NrVHlwZSA9IE5vdEJsb2NrKTsKKyAg
ICBDU1NQYXJzZXJUb2tlbihDU1NQYXJzZXJUb2tlblR5cGUsIFN0cmluZ1ZpZXcsIEJsb2NrVHlw
ZSA9IE5vdEJsb2NrKTsKKworICAgIENTU1BhcnNlclRva2VuKENTU1BhcnNlclRva2VuVHlwZSwg
VUNoYXIpOyAvLyBmb3IgRGVsaW1pdGVyVG9rZW4KKyAgICBDU1NQYXJzZXJUb2tlbihDU1NQYXJz
ZXJUb2tlblR5cGUsIGRvdWJsZSwgTnVtZXJpY1ZhbHVlVHlwZSwgTnVtZXJpY1NpZ24pOyAvLyBm
b3IgTnVtYmVyVG9rZW4KKyAgICBDU1NQYXJzZXJUb2tlbihDU1NQYXJzZXJUb2tlblR5cGUsIFVD
aGFyMzIsIFVDaGFyMzIpOyAvLyBmb3IgVW5pY29kZVJhbmdlVG9rZW4KKworICAgIENTU1BhcnNl
clRva2VuKEhhc2hUb2tlblR5cGUsIFN0cmluZ1ZpZXcpOworCisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IENTU1BhcnNlclRva2VuJiBvdGhlcikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IENTU1BhcnNlclRva2VuJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7IH0KKworICAgIC8vIENvbnZlcnRzIE51bWJlclRva2VuIHRvIERpbWVuc2lvblRva2Vu
LgorICAgIHZvaWQgY29udmVydFRvRGltZW5zaW9uV2l0aFVuaXQoU3RyaW5nVmlldyk7CisKKyAg
ICAvLyBDb252ZXJ0cyBOdW1iZXJUb2tlbiB0byBQZXJjZW50YWdlVG9rZW4uCisgICAgdm9pZCBj
b252ZXJ0VG9QZXJjZW50YWdlKCk7CisKKyAgICBDU1NQYXJzZXJUb2tlblR5cGUgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENTU1BhcnNlclRva2VuVHlwZT4obV90eXBlKTsgfQor
ICAgIFN0cmluZ1ZpZXcgdmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fdmFsdWVJ
czhCaXQpCisgICAgICAgICAgICByZXR1cm4gU3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4obV92YWx1ZURhdGFDaGFyUmF3KSwgbV92YWx1ZUxlbmd0aCk7CisgICAgICAg
IHJldHVybiBTdHJpbmdWaWV3KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihtX3ZhbHVl
RGF0YUNoYXJSYXcpLCBtX3ZhbHVlTGVuZ3RoKTsKKyAgICB9CisKKyAgICBVQ2hhciBkZWxpbWl0
ZXIoKSBjb25zdDsKKyAgICBOdW1lcmljU2lnbiBudW1lcmljU2lnbigpIGNvbnN0OworICAgIE51
bWVyaWNWYWx1ZVR5cGUgbnVtZXJpY1ZhbHVlVHlwZSgpIGNvbnN0OworICAgIGRvdWJsZSBudW1l
cmljVmFsdWUoKSBjb25zdDsKKyAgICBIYXNoVG9rZW5UeXBlIGdldEhhc2hUb2tlblR5cGUoKSBj
b25zdCB7IEFTU0VSVChtX3R5cGUgPT0gSGFzaFRva2VuKTsgcmV0dXJuIG1faGFzaFRva2VuVHlw
ZTsgfQorICAgIEJsb2NrVHlwZSBnZXRCbG9ja1R5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxCbG9ja1R5cGU+KG1fYmxvY2tUeXBlKTsgfQorICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZXMgdW5pdFR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGVzPihtX3VuaXQpOyB9CisgICAgVUNoYXIzMiB1bmljb2RlUmFuZ2VT
dGFydCgpIGNvbnN0IHsgQVNTRVJUKG1fdHlwZSA9PSBVbmljb2RlUmFuZ2VUb2tlbik7IHJldHVy
biBtX3VuaWNvZGVSYW5nZS5zdGFydDsgfQorICAgIFVDaGFyMzIgdW5pY29kZVJhbmdlRW5kKCkg
Y29uc3QgeyBBU1NFUlQobV90eXBlID09IFVuaWNvZGVSYW5nZVRva2VuKTsgcmV0dXJuIG1fdW5p
Y29kZVJhbmdlLmVuZDsgfQorICAgIENTU1ZhbHVlSUQgaWQoKSBjb25zdDsKKyAgICBDU1NWYWx1
ZUlEIGZ1bmN0aW9uSWQoKSBjb25zdDsKKworICAgIGJvb2wgaGFzU3RyaW5nQmFja2luZygpIGNv
bnN0OworCisgICAgQ1NTUHJvcGVydHlJRCBwYXJzZUFzVW5yZXNvbHZlZENTU1Byb3BlcnR5SUQo
KSBjb25zdDsKKworICAgIHZvaWQgc2VyaWFsaXplKFN0cmluZ0J1aWxkZXImKSBjb25zdDsKKwor
ICAgIENTU1BhcnNlclRva2VuIGNvcHlXaXRoVXBkYXRlZFN0cmluZyhjb25zdCBTdHJpbmdWaWV3
JikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdm9pZCBpbml0VmFsdWVGcm9tU3RyaW5nVmlldyhT
dHJpbmdWaWV3IHN0cmluZykKKyAgICB7CisgICAgICAgIG1fdmFsdWVMZW5ndGggPSBzdHJpbmcu
bGVuZ3RoKCk7CisgICAgICAgIG1fdmFsdWVJczhCaXQgPSBzdHJpbmcuaXM4Qml0KCk7CisgICAg
ICAgIG1fdmFsdWVEYXRhQ2hhclJhdyA9IG1fdmFsdWVJczhCaXQgPyBzdGF0aWNfY2FzdDxjb25z
dCB2b2lkKj4oc3RyaW5nLmNoYXJhY3RlcnM4KCkpIDogc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+
KHN0cmluZy5jaGFyYWN0ZXJzMTYoKSk7CisgICAgfQorICAgIHVuc2lnbmVkIG1fdHlwZSA6IDY7
IC8vIENTU1BhcnNlclRva2VuVHlwZQorICAgIHVuc2lnbmVkIG1fYmxvY2tUeXBlIDogMjsgLy8g
QmxvY2tUeXBlCisgICAgdW5zaWduZWQgbV9udW1lcmljVmFsdWVUeXBlIDogMTsgLy8gTnVtZXJp
Y1ZhbHVlVHlwZQorICAgIHVuc2lnbmVkIG1fbnVtZXJpY1NpZ24gOiAyOyAvLyBOdW1lcmljU2ln
bgorICAgIHVuc2lnbmVkIG1fdW5pdCA6IDc7IC8vIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZXMKKworICAgIGJvb2wgdmFsdWVEYXRhQ2hhclJhd0VxdWFsKGNvbnN0IENTU1BhcnNlclRva2Vu
JiBvdGhlcikgY29uc3Q7CisKKyAgICAvLyBtX3ZhbHVlLi4uIGlzIGFuIHVucGFja2VkIFN0cmlu
Z1ZpZXcgc28gdGhhdCB3ZSBjYW4gcGFjayBpdAorICAgIC8vIHRpZ2h0bHkgd2l0aCB0aGUgcmVz
dCBvZiB0aGlzIG9iamVjdCBmb3IgYSBzbWFsbGVyIG9iamVjdCBzaXplLgorICAgIGJvb2wgbV92
YWx1ZUlzOEJpdCA6IDE7CisgICAgdW5zaWduZWQgbV92YWx1ZUxlbmd0aDsKKyAgICBjb25zdCB2
b2lkKiBtX3ZhbHVlRGF0YUNoYXJSYXc7IC8vIEVpdGhlciBMQ2hhciogb3IgVUNoYXIqLgorCisg
ICAgdW5pb24geworICAgICAgICBVQ2hhciBtX2RlbGltaXRlcjsKKyAgICAgICAgSGFzaFRva2Vu
VHlwZSBtX2hhc2hUb2tlblR5cGU7CisgICAgICAgIGRvdWJsZSBtX251bWVyaWNWYWx1ZTsKKyAg
ICAgICAgbXV0YWJsZSBpbnQgbV9pZDsKKworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAg
VUNoYXIzMiBzdGFydDsKKyAgICAgICAgICAgIFVDaGFyMzIgZW5kOworICAgICAgICB9IG1fdW5p
Y29kZVJhbmdlOworICAgIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBDU1NTUGFyc2VyVG9rZW5faApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJUb2tlblJhbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlclRva2VuUmFuZ2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW5SYW5nZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw5NyBAQAorLy8gQ29weXJpZ2h0IDIwMTQgVGhlIENocm9taXVtIEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
Ly8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW5SYW5n
ZS5oIgorCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NTU1BhcnNlclRv
a2VuJiBDU1NQYXJzZXJUb2tlblJhbmdlOjplb2ZUb2tlbigpCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPENTU1BhcnNlclRva2VuPiBlb2ZUb2tlbihFT0ZUb2tlbik7CisgICAgcmV0dXJu
IGVvZlRva2VuLmdldCgpOworfQorCitDU1NQYXJzZXJUb2tlblJhbmdlIENTU1BhcnNlclRva2Vu
UmFuZ2U6Om1ha2VTdWJSYW5nZShjb25zdCBDU1NQYXJzZXJUb2tlbiogZmlyc3QsIGNvbnN0IENT
U1BhcnNlclRva2VuKiBsYXN0KSBjb25zdAoreworICAgIGlmIChmaXJzdCA9PSAmZW9mVG9rZW4o
KSkKKyAgICAgICAgZmlyc3QgPSBtX2xhc3Q7CisgICAgaWYgKGxhc3QgPT0gJmVvZlRva2VuKCkp
CisgICAgICAgIGxhc3QgPSBtX2xhc3Q7CisgICAgQVNTRVJUKGZpcnN0IDw9IGxhc3QpOworICAg
IHJldHVybiBDU1NQYXJzZXJUb2tlblJhbmdlKGZpcnN0LCBsYXN0KTsKK30KKworQ1NTUGFyc2Vy
VG9rZW5SYW5nZSBDU1NQYXJzZXJUb2tlblJhbmdlOjpjb25zdW1lQmxvY2soKQoreworICAgIEFT
U0VSVChwZWVrKCkuZ2V0QmxvY2tUeXBlKCkgPT0gQ1NTUGFyc2VyVG9rZW46OkJsb2NrU3RhcnQp
OworICAgIGNvbnN0IENTU1BhcnNlclRva2VuKiBzdGFydCA9ICZwZWVrKCkgKyAxOworICAgIHVu
c2lnbmVkIG5lc3RpbmdMZXZlbCA9IDA7CisgICAgZG8geworICAgICAgICBjb25zdCBDU1NQYXJz
ZXJUb2tlbiYgdG9rZW4gPSBjb25zdW1lKCk7CisgICAgICAgIGlmICh0b2tlbi5nZXRCbG9ja1R5
cGUoKSA9PSBDU1NQYXJzZXJUb2tlbjo6QmxvY2tTdGFydCkKKyAgICAgICAgICAgIG5lc3RpbmdM
ZXZlbCsrOworICAgICAgICBlbHNlIGlmICh0b2tlbi5nZXRCbG9ja1R5cGUoKSA9PSBDU1NQYXJz
ZXJUb2tlbjo6QmxvY2tFbmQpCisgICAgICAgICAgICBuZXN0aW5nTGV2ZWwtLTsKKyAgICB9IHdo
aWxlIChuZXN0aW5nTGV2ZWwgJiYgbV9maXJzdCA8IG1fbGFzdCk7CisKKyAgICBpZiAobmVzdGlu
Z0xldmVsKQorICAgICAgICByZXR1cm4gbWFrZVN1YlJhbmdlKHN0YXJ0LCBtX2ZpcnN0KTsgLy8g
RW5kZWQgYXQgRU9GCisgICAgcmV0dXJuIG1ha2VTdWJSYW5nZShzdGFydCwgbV9maXJzdCAtIDEp
OworfQorCit2b2lkIENTU1BhcnNlclRva2VuUmFuZ2U6OmNvbnN1bWVDb21wb25lbnRWYWx1ZSgp
Cit7CisgICAgLy8gRklYTUU6IFRoaXMgaXMgZ29pbmcgdG8gZG8gbXVsdGlwbGUgcGFzc2VzIG92
ZXIgbGFyZ2Ugc2VjdGlvbnMgb2YgYSBzdHlsZXNoZWV0LgorICAgIC8vIFdlIHNob3VsZCBjb25z
aWRlciBvcHRpbWlzaW5nIHRoaXMgYnkgcHJlY29tcHV0aW5nIHdoZXJlIGVhY2ggYmxvY2sgZW5k
cy4KKyAgICB1bnNpZ25lZCBuZXN0aW5nTGV2ZWwgPSAwOworICAgIGRvIHsKKyAgICAgICAgY29u
c3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gY29uc3VtZSgpOworICAgICAgICBpZiAodG9rZW4u
Z2V0QmxvY2tUeXBlKCkgPT0gQ1NTUGFyc2VyVG9rZW46OkJsb2NrU3RhcnQpCisgICAgICAgICAg
ICBuZXN0aW5nTGV2ZWwrKzsKKyAgICAgICAgZWxzZSBpZiAodG9rZW4uZ2V0QmxvY2tUeXBlKCkg
PT0gQ1NTUGFyc2VyVG9rZW46OkJsb2NrRW5kKQorICAgICAgICAgICAgbmVzdGluZ0xldmVsLS07
CisgICAgfSB3aGlsZSAobmVzdGluZ0xldmVsICYmIG1fZmlyc3QgPCBtX2xhc3QpOworfQorCitT
dHJpbmcgQ1NTUGFyc2VyVG9rZW5SYW5nZTo6c2VyaWFsaXplKCkgY29uc3QKK3sKKyAgICAvLyBX
ZSdyZSBzdXBwb3NlZCB0byBpbnNlcnQgY29tbWVudHMgYmV0d2VlbiBjZXJ0YWluIHBhaXJzIG9m
IHRva2VuIHR5cGVzCisgICAgLy8gYXMgcGVyIHNwZWMsIGJ1dCBzaW5jZSB0aGlzIGlzIGN1cnJl
bnRseSBvbmx5IHVzZWQgZm9yIEBzdXBwb3J0cyBDU1NPTQorICAgIC8vIHdlIGp1c3QgZ2V0IHRo
ZXNlIGNhc2VzIHdyb25nIGFuZCBhdm9pZCB0aGUgYWRkaXRpb25hbCBjb21wbGV4aXR5LgorICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBmb3IgKGNvbnN0IENTU1BhcnNlclRva2VuKiBp
dCA9IG1fZmlyc3Q7IGl0IDwgbV9sYXN0OyArK2l0KQorICAgICAgICBpdC0+c2VyaWFsaXplKGJ1
aWxkZXIpOworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVG9r
ZW5SYW5nZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFy
c2VyVG9rZW5SYW5nZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyVG9rZW5SYW5nZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA2IEBA
CisvLyBDb3B5cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8g
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisv
LyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisv
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZm5kZWYg
Q1NTUGFyc2VyVG9rZW5SYW5nZV9oCisjZGVmaW5lIENTU1BhcnNlclRva2VuUmFuZ2VfaAorCisj
aW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW4uaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworLy8gQSBDU1NQYXJzZXJUb2tlblJhbmdlIGlzIGFuIGl0ZXJh
dG9yIG92ZXIgYSBzdWJyYW5nZSBvZiBhIHZlY3RvciBvZiBDU1NQYXJzZXJUb2tlbnMuCisvLyBB
Y2Nlc3Npbmcgb3V0c2lkZSBvZiB0aGUgcmFuZ2Ugd2lsbCByZXR1cm4gYW4gZW5kbGVzcyBzdHJl
YW0gb2YgRU9GIHRva2Vucy4KKy8vIFRoaXMgY2xhc3MgcmVmZXJzIHRvIGhhbGYtb3BlbiBpbnRl
cnZhbHMgW2ZpcnN0LCBsYXN0KS4KK2NsYXNzIENTU1BhcnNlclRva2VuUmFuZ2UgeworcHVibGlj
OgorICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVCdWZmZXI+CisgICAgQ1NTUGFyc2VyVG9rZW5S
YW5nZShjb25zdCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4sIGlubGluZUJ1ZmZlcj4mIHZlY3RvcikK
KyAgICAgICAgOiBtX2ZpcnN0KHZlY3Rvci5iZWdpbigpKQorICAgICAgICAsIG1fbGFzdCh2ZWN0
b3IuZW5kKCkpCisgICAgeworICAgIH0KKworICAgIC8vIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBv
biBhIHJhbmdlIHdpdGggdG9rZW5zIHJldHVybmVkIGJ5IHRoYXQgcmFuZ2UuCisgICAgQ1NTUGFy
c2VyVG9rZW5SYW5nZSBtYWtlU3ViUmFuZ2UoY29uc3QgQ1NTUGFyc2VyVG9rZW4qIGZpcnN0LCBj
b25zdCBDU1NQYXJzZXJUb2tlbiogbGFzdCkgY29uc3Q7CisKKyAgICBib29sIGF0RW5kKCkgY29u
c3QgeyByZXR1cm4gbV9maXJzdCA9PSBtX2xhc3Q7IH0KKyAgICBjb25zdCBDU1NQYXJzZXJUb2tl
biogZW5kKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0OyB9CisKKyAgICBjb25zdCBDU1NQYXJzZXJU
b2tlbiYgcGVlayh1bnNpZ25lZCBvZmZzZXQgPSAwKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYg
KG1fZmlyc3QgKyBvZmZzZXQgPj0gbV9sYXN0KQorICAgICAgICAgICAgcmV0dXJuIGVvZlRva2Vu
KCk7CisgICAgICAgIHJldHVybiAqKG1fZmlyc3QgKyBvZmZzZXQpOworICAgIH0KKworICAgIGNv
bnN0IENTU1BhcnNlclRva2VuJiBjb25zdW1lKCkKKyAgICB7CisgICAgICAgIGlmIChtX2ZpcnN0
ID09IG1fbGFzdCkKKyAgICAgICAgICAgIHJldHVybiBlb2ZUb2tlbigpOworICAgICAgICByZXR1
cm4gKm1fZmlyc3QrKzsKKyAgICB9CisKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgY29uc3Vt
ZUluY2x1ZGluZ1doaXRlc3BhY2UoKQorICAgIHsKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9r
ZW4mIHJlc3VsdCA9IGNvbnN1bWUoKTsKKyAgICAgICAgY29uc3VtZVdoaXRlc3BhY2UoKTsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvLyBUaGUgcmV0dXJuZWQgcmFuZ2Ug
ZG9lc24ndCBpbmNsdWRlIHRoZSBicmFja2V0cworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgY29u
c3VtZUJsb2NrKCk7CisKKyAgICB2b2lkIGNvbnN1bWVDb21wb25lbnRWYWx1ZSgpOworCisgICAg
dm9pZCBjb25zdW1lV2hpdGVzcGFjZSgpCisgICAgeworICAgICAgICB3aGlsZSAocGVlaygpLnR5
cGUoKSA9PSBXaGl0ZXNwYWNlVG9rZW4pCisgICAgICAgICAgICArK21fZmlyc3Q7CisgICAgfQor
CisgICAgU3RyaW5nIHNlcmlhbGl6ZSgpIGNvbnN0OworCisgICAgY29uc3QgQ1NTUGFyc2VyVG9r
ZW4qIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdDsgfQorCisgICAgc3RhdGljIENTU1Bh
cnNlclRva2VuJiBlb2ZUb2tlbigpOworCitwcml2YXRlOgorICAgIENTU1BhcnNlclRva2VuUmFu
Z2UoY29uc3QgQ1NTUGFyc2VyVG9rZW4qIGZpcnN0LCBjb25zdCBDU1NQYXJzZXJUb2tlbiogbGFz
dCkKKyAgICAgICAgOiBtX2ZpcnN0KGZpcnN0KQorICAgICAgICAsIG1fbGFzdChsYXN0KQorICAg
IHsgfQorCisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4qIG1fZmlyc3Q7CisgICAgY29uc3QgQ1NT
UGFyc2VyVG9rZW4qIG1fbGFzdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIENTU1BhcnNlclRva2VuUmFuZ2VfaApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw0Nzg0IEBACisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQ2hyb21pdW0gQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisv
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNl
ci5oIgorCisjaW5jbHVkZSAiQ1NTQmFzaWNTaGFwZXMuaCIKKyNpbmNsdWRlICJDU1NCb3JkZXJJ
bWFnZS5oIgorI2luY2x1ZGUgIkNTU0NvbnRlbnREaXN0cmlidXRpb25WYWx1ZS5oIgorI2luY2x1
ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKKy8vIEZJWE1FLU5FV1BBUlNFUiAjaW5jbHVkZSAi
Q1NTQ3VzdG9tSWRlbnRWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0ZvbnRGYWNlU3JjVmFsdWUuaCIK
Ky8vIEZJWE1FLU5FV1BBUlNFUiAjaW5jbHVkZSAiQ1NTRm9udEZhbWlseVZhbHVlLmgiCisjaW5j
bHVkZSAiQ1NTRm9udEZlYXR1cmVWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0Z1bmN0aW9uVmFsdWUu
aCIKKyNpbmNsdWRlICJDU1NHcmlkQXV0b1JlcGVhdFZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTR3Jp
ZExpbmVOYW1lc1ZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5o
IgorI2luY2x1ZGUgIkNTU0luaGVyaXRlZFZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTSW5pdGlhbFZh
bHVlLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyRmFzdFBhdGhzLmgiCisjaW5jbHVkZSAiQ1NTUGFy
c2VySWRpb21zLmgiCisvLyBGSVhNRS1ORVdQQVJTRVIgI2luY2x1ZGUgIkNTU1BhdGhWYWx1ZS5o
IgorLy8gRklYTUUtTkVXUEFSU0VSICNpbmNsdWRlICJDU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFs
dWUuaCIKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCisjaW5jbHVkZSAi
Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmgiCisvLyBGSVhNRS1ORVdQQVJTRVIgI2luY2x1ZGUg
IkNTU1F1YWRWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1JlZmxlY3RWYWx1ZS5oIgorI2luY2x1ZGUg
IkNTU1NoYWRvd1ZhbHVlLmgiCisvLyBGSVhNRS1ORVdQQVJTRVIgI2luY2x1ZGUgIkNTU1N0cmlu
Z1ZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oIgorLy8gRklYTUUt
TkVXUEFSU0VSICNpbmNsdWRlICJDU1NVUklWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1VuaWNvZGVS
YW5nZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTVW5zZXRWYWx1ZS5oIgorLy8gRklYTUUtTkVXUEFS
U0VSICNpbmNsdWRlICJDU1NWYWx1ZVBhaXIuaCIKKy8vIEZJWE1FLU5FV1BBUlNFUiAjaW5jbHVk
ZSAiQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oIgorLy8gRklYTUUtTkVXUEFSU0VSICNpbmNs
dWRlICJDU1NWYXJpYWJsZVBhcnNlci5oIgorI2luY2x1ZGUgIkNvdW50ZXIuaCIKKyNpbmNsdWRl
ICJGb250RmFjZS5oIgorI2luY2x1ZGUgIkhhc2hUb29scy5oIgorI2luY2x1ZGUgIlJlbmRlclRo
ZW1lLmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlNW
R1BhdGhVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2hvcnRoYW5kLmgiCisj
aW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgYm9vbCBoYXNQcmVmaXgoY29uc3QgY2hhciog
c3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IGNoYXIqIHByZWZpeCkKK3sKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKCFwcmVmaXhb
aV0pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKHN0cmluZ1tpXSAhPSBw
cmVmaXhbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBm
YWxzZTsKK30KKworI2lmIFBMQVRGT1JNKElPUykKK3N0YXRpYyB2b2lkIGNzc1Byb3BlcnR5TmFt
ZUlPU0FsaWFzaW5nKGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgY29uc3QgY2hhciomIHByb3Bl
cnR5TmFtZUFsaWFzLCB1bnNpZ25lZCYgbmV3TGVuZ3RoKQoreworICAgIGlmICghc3RyY21wKHBy
b3BlcnR5TmFtZSwgIi13ZWJraXQtaHlwaGVuYXRlLWxvY2FsZSIpKSB7CisgICAgICAgIC8vIFdv
cmtlZCBpbiBpT1MgNC4yLgorICAgICAgICBzdGF0aWMgY29uc3QgY2hhciB3ZWJraXRMb2NhbGVb
XSA9ICItd2Via2l0LWxvY2FsZSI7CisgICAgICAgIHByb3BlcnR5TmFtZUFsaWFzID0gd2Via2l0
TG9jYWxlOworICAgICAgICBuZXdMZW5ndGggPSBzdHJsZW4od2Via2l0TG9jYWxlKTsKKyAgICB9
Cit9CisjZW5kaWYKKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMg
Q1NTUHJvcGVydHlJRCBjc3NQcm9wZXJ0eUlEKGNvbnN0IENoYXJhY3RlclR5cGUqIHByb3BlcnR5
TmFtZSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGNoYXIgYnVmZmVyW21heENTU1Byb3BlcnR5
TmFtZUxlbmd0aCArIDEgKyAxXTsgLy8gMSB0byB0dXJuICJhcHBsZSIvImtodG1sIiBpbnRvICJ3
ZWJraXQiLCAxIGZvciBudWxsIGNoYXJhY3RlcgorICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgIT0gbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgQ2hhcmFjdGVyVHlwZSBjID0gcHJvcGVy
dHlOYW1lW2ldOworICAgICAgICBpZiAoIWMgfHwgYyA+PSAweDdGKQorICAgICAgICAgICAgcmV0
dXJuIENTU1Byb3BlcnR5SW52YWxpZDsgLy8gaWxsZWdhbCBjaGFyYWN0ZXIKKyAgICAgICAgYnVm
ZmVyW2ldID0gdG9BU0NJSUxvd2VyKGMpOworICAgIH0KKyAgICBidWZmZXJbbGVuZ3RoXSA9ICdc
MCc7CisgICAgCisgICAgY29uc3QgY2hhciogbmFtZSA9IGJ1ZmZlcjsKKyAgICBpZiAoYnVmZmVy
WzBdID09ICctJykgeworI2lmIEVOQUJMRShMRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykKKyAg
ICAgICAgLy8gSWYgdGhlIHByZWZpeCBpcyAtYXBwbGUtIG9yIC1raHRtbC0sIGNoYW5nZSBpdCB0
byAtd2Via2l0LS4KKyAgICAgICAgLy8gVGhpcyBtYWtlcyB0aGUgc3RyaW5nIG9uZSBjaGFyYWN0
ZXIgbG9uZ2VyLgorICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS5sZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQoKQorICAgICAgICAgICAgJiYg
KGhhc1ByZWZpeChidWZmZXIsIGxlbmd0aCwgIi1hcHBsZS0iKSB8fCBoYXNQcmVmaXgoYnVmZmVy
LCBsZW5ndGgsICIta2h0bWwtIikpKSB7CisgICAgICAgICAgICBtZW1tb3ZlKGJ1ZmZlciArIDcs
IGJ1ZmZlciArIDYsIGxlbmd0aCArIDEgLSA2KTsKKyAgICAgICAgICAgIG1lbWNweShidWZmZXIs
ICItd2Via2l0IiwgNyk7CisgICAgICAgICAgICArK2xlbmd0aDsKKyAgICAgICAgfQorI2VuZGlm
CisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICBjc3NQcm9wZXJ0eU5hbWVJT1NBbGlhc2luZyhi
dWZmZXIsIG5hbWUsIGxlbmd0aCk7CisjZW5kaWYKKyAgICB9CisgICAgCisgICAgY29uc3QgUHJv
cGVydHkqIGhhc2hUYWJsZUVudHJ5ID0gZmluZFByb3BlcnR5KG5hbWUsIGxlbmd0aCk7CisgICAg
cmV0dXJuIGhhc2hUYWJsZUVudHJ5ID8gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaGFzaFRh
YmxlRW50cnktPmlkKSA6IENTU1Byb3BlcnR5SW52YWxpZDsKK30KKworc3RhdGljIGJvb2wgaXNB
cHBsZUxlZ2FjeUNzc1ZhbHVlS2V5d29yZChjb25zdCBjaGFyKiB2YWx1ZUtleXdvcmQsIHVuc2ln
bmVkIGxlbmd0aCkKK3sKKyAgICBzdGF0aWMgY29uc3QgY2hhciBhcHBsZVByZWZpeFtdID0gIi1h
cHBsZS0iOworICAgIHN0YXRpYyBjb25zdCBjaGFyIGFwcGxlU3lzdGVtUHJlZml4W10gPSAiLWFw
cGxlLXN5c3RlbSI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGFwcGxlV2lyZWxlc3NQbGF5YmFj
a1RhcmdldEFjdGl2ZSA9IGdldFZhbHVlTmFtZShDU1NWYWx1ZUFwcGxlV2lyZWxlc3NQbGF5YmFj
a1RhcmdldEFjdGl2ZSk7CisgICAgCisgICAgcmV0dXJuIGhhc1ByZWZpeCh2YWx1ZUtleXdvcmQs
IGxlbmd0aCwgYXBwbGVQcmVmaXgpCisgICAgJiYgIWhhc1ByZWZpeCh2YWx1ZUtleXdvcmQsIGxl
bmd0aCwgYXBwbGVTeXN0ZW1QcmVmaXgpCisgICAgJiYgIVdURjo6ZXF1YWwocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KHZhbHVlS2V5d29yZCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPihhcHBsZVdpcmVsZXNzUGxheWJhY2tUYXJnZXRBY3RpdmUpLCBsZW5ndGgpOworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBDU1NWYWx1ZUlEIGNz
c1ZhbHVlS2V5d29yZElEKGNvbnN0IENoYXJhY3RlclR5cGUqIHZhbHVlS2V5d29yZCwgdW5zaWdu
ZWQgbGVuZ3RoKQoreworICAgIGNoYXIgYnVmZmVyW21heENTU1ZhbHVlS2V5d29yZExlbmd0aCAr
IDEgKyAxXTsgLy8gMSB0byB0dXJuICJhcHBsZSIvImtodG1sIiBpbnRvICJ3ZWJraXQiLCAxIGZv
ciBudWxsIGNoYXJhY3RlcgorICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0gbGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgQ2hhcmFjdGVyVHlwZSBjID0gdmFsdWVLZXl3b3JkW2ldOwor
ICAgICAgICBpZiAoIWMgfHwgYyA+PSAweDdGKQorICAgICAgICAgICAgcmV0dXJuIENTU1ZhbHVl
SW52YWxpZDsgLy8gaWxsZWdhbCBrZXl3b3JkLgorICAgICAgICBidWZmZXJbaV0gPSBXVEY6OnRv
QVNDSUlMb3dlcihjKTsKKyAgICB9CisgICAgYnVmZmVyW2xlbmd0aF0gPSAnXDAnOworICAgIAor
ICAgIGlmIChidWZmZXJbMF0gPT0gJy0nKSB7CisgICAgICAgIC8vIElmIHRoZSBwcmVmaXggaXMg
LWFwcGxlLSBvciAta2h0bWwtLCBjaGFuZ2UgaXQgdG8gLXdlYmtpdC0uCisgICAgICAgIC8vIFRo
aXMgbWFrZXMgdGhlIHN0cmluZyBvbmUgY2hhcmFjdGVyIGxvbmdlci4KKyAgICAgICAgLy8gT24g
aU9TIHdlIGRvbid0IHdhbnQgdG8gY2hhbmdlIHZhbHVlcyBzdGFydGluZyB3aXRoIC1hcHBsZS1z
eXN0ZW0gdG8gLXdlYmtpdC1zeXN0ZW0uCisgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBt
YW5nbGluZyB3aXRob3V0IGJyZWFraW5nIHRoZSB3ZWIuCisgICAgICAgIGlmIChpc0FwcGxlTGVn
YWN5Q3NzVmFsdWVLZXl3b3JkKGJ1ZmZlciwgbGVuZ3RoKSB8fCBoYXNQcmVmaXgoYnVmZmVyLCBs
ZW5ndGgsICIta2h0bWwtIikpIHsKKyAgICAgICAgICAgIG1lbW1vdmUoYnVmZmVyICsgNywgYnVm
ZmVyICsgNiwgbGVuZ3RoICsgMSAtIDYpOworICAgICAgICAgICAgbWVtY3B5KGJ1ZmZlciwgIi13
ZWJraXQiLCA3KTsKKyAgICAgICAgICAgICsrbGVuZ3RoOworICAgICAgICB9CisgICAgfQorICAg
IAorICAgIGNvbnN0IFZhbHVlKiBoYXNoVGFibGVFbnRyeSA9IGZpbmRWYWx1ZShidWZmZXIsIGxl
bmd0aCk7CisgICAgcmV0dXJuIGhhc2hUYWJsZUVudHJ5ID8gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJ
RD4oaGFzaFRhYmxlRW50cnktPmlkKSA6IENTU1ZhbHVlSW52YWxpZDsKK30KKworQ1NTVmFsdWVJ
RCBjc3NWYWx1ZUtleXdvcmRJRChTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICB1bnNpZ25lZCBs
ZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVy
biBDU1NWYWx1ZUludmFsaWQ7CisgICAgaWYgKGxlbmd0aCA+IG1heENTU1ZhbHVlS2V5d29yZExl
bmd0aCkKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVlSW52YWxpZDsKKyAgICAKKyAgICByZXR1cm4g
c3RyaW5nLmlzOEJpdCgpID8gY3NzVmFsdWVLZXl3b3JkSUQoc3RyaW5nLmNoYXJhY3RlcnM4KCks
IGxlbmd0aCkgOiBjc3NWYWx1ZUtleXdvcmRJRChzdHJpbmcuY2hhcmFjdGVyczE2KCksIGxlbmd0
aCk7Cit9CisKK0NTU1Byb3BlcnR5SUQgdW5yZXNvbHZlZENTU1Byb3BlcnR5SUQoU3RyaW5nVmll
dyBzdHJpbmcpCit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAg
IAorICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gQ1NTUHJvcGVydHlJbnZhbGlkOwor
ICAgIGlmIChsZW5ndGggPiBtYXhDU1NQcm9wZXJ0eU5hbWVMZW5ndGgpCisgICAgICAgIHJldHVy
biBDU1NQcm9wZXJ0eUludmFsaWQ7CisgICAgCisgICAgcmV0dXJuIHN0cmluZy5pczhCaXQoKSA/
IGNzc1Byb3BlcnR5SUQoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCkgOiBjc3NQcm9wZXJ0
eUlEKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKTsKK30KKyAgICAKKy8vIEZJWE1FLU5F
V1BBUlNFUgorLy8gQ29tbWVudCBvdXQgcHJvcGVydHkgcGFyc2luZyBmb3Igbm93LgorLyoKK3Vz
aW5nIG5hbWVzcGFjZSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM7CisKKworQ1NTUHJvcGVydHlQ
YXJzZXI6OkNTU1Byb3BlcnR5UGFyc2VyKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LAorICAgIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIFZlY3RvcjxDU1NQcm9wZXJ0
eSwgMjU2PiogcGFyc2VkUHJvcGVydGllcykKKyAgICA6IG1fcmFuZ2UocmFuZ2UpCisgICAgLCBt
X2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fcGFyc2VkUHJvcGVydGllcyhwYXJzZWRQcm9wZXJ0
aWVzKQoreworICAgIG1fcmFuZ2UuY29uc3VtZVdoaXRlc3BhY2UoKTsKK30KKwordm9pZCBDU1NQ
cm9wZXJ0eVBhcnNlcjo6YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTUHJv
cGVydHlJRCBjdXJyZW50U2hvcnRoYW5kLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIGJvb2wgaW1w
b3J0YW50LCBib29sIGltcGxpY2l0KQoreworICAgIEFTU0VSVCghaXNQcm9wZXJ0eUFsaWFzKHBy
b3BlcnR5KSk7CisKKyAgICBpbnQgc2hvcnRoYW5kSW5kZXggPSAwOworICAgIGJvb2wgc2V0RnJv
bVNob3J0aGFuZCA9IGZhbHNlOworCisgICAgaWYgKGN1cnJlbnRTaG9ydGhhbmQpIHsKKyAgICAg
ICAgVmVjdG9yPFN0eWxlUHJvcGVydHlTaG9ydGhhbmQsIDQ+IHNob3J0aGFuZHM7CisgICAgICAg
IGdldE1hdGNoaW5nU2hvcnRoYW5kc0ZvckxvbmdoYW5kKHByb3BlcnR5LCAmc2hvcnRoYW5kcyk7
CisgICAgICAgIHNldEZyb21TaG9ydGhhbmQgPSB0cnVlOworICAgICAgICBpZiAoc2hvcnRoYW5k
cy5zaXplKCkgPiAxKQorICAgICAgICAgICAgc2hvcnRoYW5kSW5kZXggPSBpbmRleE9mU2hvcnRo
YW5kRm9yTG9uZ2hhbmQoY3VycmVudFNob3J0aGFuZCwgc2hvcnRoYW5kcyk7CisgICAgfQorCisg
ICAgbV9wYXJzZWRQcm9wZXJ0aWVzLT5hcHBlbmQoQ1NTUHJvcGVydHkocHJvcGVydHksIHZhbHVl
LCBpbXBvcnRhbnQsIHNldEZyb21TaG9ydGhhbmQsIHNob3J0aGFuZEluZGV4LCBpbXBsaWNpdCkp
OworfQorCit2b2lkIENTU1Byb3BlcnR5UGFyc2VyOjphZGRFeHBhbmRlZFByb3BlcnR5Rm9yVmFs
dWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlLCBib29sIGlt
cG9ydGFudCkKK3sKKyAgICBjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQg
PSBzaG9ydGhhbmRGb3JQcm9wZXJ0eShwcm9wZXJ0eSk7CisgICAgdW5zaWduZWQgc2hvcnRoYW5k
TGVuZ3RoID0gc2hvcnRoYW5kLmxlbmd0aCgpOworICAgIEFTU0VSVChzaG9ydGhhbmRMZW5ndGgp
OworICAgIGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcyA9IHNob3J0aGFuZC5wcm9wZXJ0
aWVzKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNob3J0aGFuZExlbmd0aDsgKytp
KQorICAgICAgICBhZGRQcm9wZXJ0eShsb25naGFuZHNbaV0sIHByb3BlcnR5LCB2YWx1ZSwgaW1w
b3J0YW50KTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9w
ZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0eSwgYm9vbCBpbXBvcnRhbnQsCisgICAgY29uc3QgQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQs
CisgICAgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+JiBwYXJzZWRQcm9wZXJ0aWVzLCBTdHlsZVJ1
bGU6OlR5cGUgcnVsZVR5cGUpCit7CisgICAgaW50IHBhcnNlZFByb3BlcnRpZXNTaXplID0gcGFy
c2VkUHJvcGVydGllcy5zaXplKCk7CisKKyAgICBDU1NQcm9wZXJ0eVBhcnNlciBwYXJzZXIocmFu
Z2UsIGNvbnRleHQsICZwYXJzZWRQcm9wZXJ0aWVzKTsKKyAgICBDU1NQcm9wZXJ0eUlEIHJlc29s
dmVkUHJvcGVydHkgPSByZXNvbHZlQ1NTUHJvcGVydHlJRCh1bnJlc29sdmVkUHJvcGVydHkpOwor
ICAgIGJvb2wgcGFyc2VTdWNjZXNzOworCisgICAgaWYgKHJ1bGVUeXBlID09IFN0eWxlUnVsZTo6
Vmlld3BvcnQpIHsKKyAgICAgICAgcGFyc2VTdWNjZXNzID0gKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OmNzc1ZpZXdwb3J0RW5hYmxlZCgpIHx8IGlzVUFTaGVldEJlaGF2aW9yKGNvbnRleHQubW9k
ZSgpKSkKKyAgICAgICAgICAgICYmIHBhcnNlci5wYXJzZVZpZXdwb3J0RGVzY3JpcHRvcihyZXNv
bHZlZFByb3BlcnR5LCBpbXBvcnRhbnQpOworICAgIH0gZWxzZSBpZiAocnVsZVR5cGUgPT0gU3R5
bGVSdWxlOjpGb250RmFjZSkgeworICAgICAgICBwYXJzZVN1Y2Nlc3MgPSBwYXJzZXIucGFyc2VG
b250RmFjZURlc2NyaXB0b3IocmVzb2x2ZWRQcm9wZXJ0eSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgcGFyc2VTdWNjZXNzID0gcGFyc2VyLnBhcnNlVmFsdWVTdGFydCh1bnJlc29sdmVkUHJvcGVy
dHksIGltcG9ydGFudCk7CisgICAgfQorCisgICAgLy8gVGhpcyBkb2Vzbid0IGNvdW50IFVBIHN0
eWxlIHNoZWV0cworICAgIGlmIChwYXJzZVN1Y2Nlc3MgJiYgY29udGV4dC51c2VDb3VudGVyKCkp
CisgICAgICAgIGNvbnRleHQudXNlQ291bnRlcigpLT5jb3VudChjb250ZXh0Lm1vZGUoKSwgdW5y
ZXNvbHZlZFByb3BlcnR5KTsKKworICAgIGlmICghcGFyc2VTdWNjZXNzKQorICAgICAgICBwYXJz
ZWRQcm9wZXJ0aWVzLnNocmluayhwYXJzZWRQcm9wZXJ0aWVzU2l6ZSk7CisKKyAgICByZXR1cm4g
cGFyc2VTdWNjZXNzOworfQorCitjb25zdCBDU1NWYWx1ZSogQ1NTUHJvcGVydHlQYXJzZXI6OnBh
cnNlU2luZ2xlVmFsdWUoCisgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7
CisgICAgQ1NTUHJvcGVydHlQYXJzZXIgcGFyc2VyKHJhbmdlLCBjb250ZXh0LCBudWxscHRyKTsK
KyAgICBjb25zdCBDU1NWYWx1ZSogdmFsdWUgPSBwYXJzZXIucGFyc2VTaW5nbGVWYWx1ZShwcm9w
ZXJ0eSk7CisgICAgaWYgKCF2YWx1ZSB8fCAhcGFyc2VyLm1fcmFuZ2UuYXRFbmQoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHZhbHVlOworfQorCitib29sIENTU1Byb3Bl
cnR5UGFyc2VyOjpwYXJzZVZhbHVlU3RhcnQoQ1NTUHJvcGVydHlJRCB1bnJlc29sdmVkUHJvcGVy
dHksIGJvb2wgaW1wb3J0YW50KQoreworICAgIGlmIChjb25zdW1lQ1NTV2lkZUtleXdvcmQodW5y
ZXNvbHZlZFByb3BlcnR5LCBpbXBvcnRhbnQpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IENTU1BhcnNlclRva2VuUmFuZ2Ugb3JpZ2luYWxSYW5nZSA9IG1fcmFuZ2U7CisgICAgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlkID0gcmVzb2x2ZUNTU1Byb3BlcnR5SUQodW5yZXNvbHZlZFByb3Bl
cnR5KTsKKyAgICBib29sIGlzU2hvcnRoYW5kID0gaXNTaG9ydGhhbmRQcm9wZXJ0eShwcm9wZXJ0
eUlkKTsKKworICAgIGlmIChpc1Nob3J0aGFuZCkgeworICAgICAgICAvLyBWYXJpYWJsZSByZWZl
cmVuY2VzIHdpbGwgZmFpbCB0byBwYXJzZSBoZXJlIGFuZCB3aWxsIGZhbGwgb3V0IHRvIHRoZSB2
YXJpYWJsZSByZWYgcGFyc2VyIGJlbG93LgorICAgICAgICBpZiAocGFyc2VTaG9ydGhhbmQodW5y
ZXNvbHZlZFByb3BlcnR5LCBpbXBvcnRhbnQpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGNvbnN0IENTU1ZhbHVlKiBwYXJzZWRWYWx1ZSA9IHBh
cnNlU2luZ2xlVmFsdWUodW5yZXNvbHZlZFByb3BlcnR5KSkgeworICAgICAgICAgICAgaWYgKG1f
cmFuZ2UuYXRFbmQoKSkgeworICAgICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnR5SWQs
IENTU1Byb3BlcnR5SW52YWxpZCwgKnBhcnNlZFZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc1ZhcmlhYmxlc0VuYWJsZWQoKSAmJiBD
U1NWYXJpYWJsZVBhcnNlcjo6Y29udGFpbnNWYWxpZFZhcmlhYmxlUmVmZXJlbmNlcyhvcmlnaW5h
bFJhbmdlKSkgeworICAgICAgICBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlKiB2YXJpYWJsZSA9
IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6OmNyZWF0ZShDU1NWYXJpYWJsZURhdGE6OmNyZWF0
ZShvcmlnaW5hbFJhbmdlKSk7CisKKyAgICAgICAgaWYgKGlzU2hvcnRoYW5kKSB7CisgICAgICAg
ICAgICBjb25zdCBDU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWUmIHBlbmRpbmdWYWx1ZSA9ICpD
U1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWU6OmNyZWF0ZShwcm9wZXJ0eUlkLCB2YXJpYWJsZSk7
CisgICAgICAgICAgICBhZGRFeHBhbmRlZFByb3BlcnR5Rm9yVmFsdWUocHJvcGVydHlJZCwgcGVu
ZGluZ1ZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYWRk
UHJvcGVydHkocHJvcGVydHlJZCwgQ1NTUHJvcGVydHlJbnZhbGlkLCAqdmFyaWFibGUsIGltcG9y
dGFudCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0
dXJuIGZhbHNlOworfQorIAorYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUNTU1dpZGVL
ZXl3b3JkKENTU1Byb3BlcnR5SUQgdW5yZXNvbHZlZFByb3BlcnR5LCBib29sIGltcG9ydGFudCkK
K3sKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlQ29weSA9IG1fcmFuZ2U7CisgICAgQ1NT
VmFsdWVJRCBpZCA9IHJhbmdlQ29weS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7
CisgICAgaWYgKCFyYW5nZUNvcHkuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgQ1NTVmFsdWUqIHZhbHVlID0gbnVsbHB0cjsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVJbml0
aWFsKQorICAgICAgICB2YWx1ZSA9IENTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlKCk7CisgICAgZWxz
ZSBpZiAoaWQgPT0gQ1NTVmFsdWVJbmhlcml0KQorICAgICAgICB2YWx1ZSA9IENTU0luaGVyaXRl
ZFZhbHVlOjpjcmVhdGUoKTsKKyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVVuc2V0KQorICAg
ICAgICB2YWx1ZSA9IENTU1Vuc2V0VmFsdWU6OmNyZWF0ZSgpOworICAgIGVsc2UKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSA9IHJlc29sdmVDU1NQ
cm9wZXJ0eUlEKHVucmVzb2x2ZWRQcm9wZXJ0eSk7CisgICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZCYgc2hvcnRoYW5kID0gc2hvcnRoYW5kRm9yUHJvcGVydHkocHJvcGVydHkpOworICAg
IGlmICghc2hvcnRoYW5kLmxlbmd0aCgpKSB7CisgICAgICAgIGlmIChDU1NQcm9wZXJ0eU1ldGFk
YXRhOjppc0Rlc2NyaXB0b3JPbmx5KHVucmVzb2x2ZWRQcm9wZXJ0eSkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnR5LCBDU1NQcm9wZXJ0eUlu
dmFsaWQsICp2YWx1ZSwgaW1wb3J0YW50KTsKKyAgICB9IGVsc2UgeworICAgICAgICBhZGRFeHBh
bmRlZFByb3BlcnR5Rm9yVmFsdWUocHJvcGVydHksICp2YWx1ZSwgaW1wb3J0YW50KTsKKyAgICB9
CisgICAgbV9yYW5nZSA9IHJhbmdlQ29weTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGlj
IENTU1ZhbHVlTGlzdCogY29uc3VtZVRyYW5zZm9ybU9yaWdpbihDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRs
ZXNzKQoreworICAgIENTU1ZhbHVlKiByZXN1bHRYID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSog
cmVzdWx0WSA9IG51bGxwdHI7CisgICAgaWYgKGNvbnN1bWVPbmVPclR3b1ZhbHVlZFBvc2l0aW9u
KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcywgcmVzdWx0WCwgcmVzdWx0WSkpIHsKKyAg
ICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFy
YXRlZCgpOworICAgICAgICBsaXN0LT5hcHBlbmQoKnJlc3VsdFgpOworICAgICAgICBsaXN0LT5h
cHBlbmQoKnJlc3VsdFkpOworICAgICAgICBDU1NWYWx1ZSogcmVzdWx0WiA9IGNvbnN1bWVMZW5n
dGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBpZiAoIXJl
c3VsdFopCisgICAgICAgICAgICByZXN1bHRaID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgw
LCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBpeGVscyk7CisgICAgICAgIGxpc3QtPmFw
cGVuZCgqcmVzdWx0Wik7CisgICAgICAgIHJldHVybiBsaXN0OworICAgIH0KKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKworLy8gTWV0aG9kcyBmb3IgY29uc3VtaW5nIG5vbi1zaG9ydGhhbmQgcHJv
cGVydGllcyBzdGFydHMgaGVyZS4KK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVdpbGxDaGFuZ2Uo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgp
ID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisK
KyAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBh
cmF0ZWQoKTsKKyAgICAvLyBFdmVyeSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBpZGVudGlmaWVy
cyBpcyBhIHZhbGlkIHdpbGwtY2hhbmdlIHZhbHVlLAorICAgIC8vIHVubGVzcyB0aGUgbGlzdCBp
bmNsdWRlcyBhbiBleHBsaWNpdGx5IGRpc2FsbG93ZWQgaWRlbnRpZmllci4KKyAgICB3aGlsZSAo
dHJ1ZSkgeworICAgICAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBJZGVudFRva2VuKQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIENTU1Byb3BlcnR5SUQgdW5yZXNv
bHZlZFByb3BlcnR5ID0gdW5yZXNvbHZlZENTU1Byb3BlcnR5SUQocmFuZ2UucGVlaygpLnZhbHVl
KCkpOworICAgICAgICBpZiAodW5yZXNvbHZlZFByb3BlcnR5KSB7CisgICAgICAgICAgICBBU1NF
UlQoQ1NTUHJvcGVydHlNZXRhZGF0YTo6aXNFbmFibGVkUHJvcGVydHkodW5yZXNvbHZlZFByb3Bl
cnR5KSk7CisgICAgICAgICAgICAvLyBOb3cgImFsbCIgaXMgdXNlZCBieSBib3RoIENTU1ZhbHVl
IGFuZCBDU1NQcm9wZXJ0eVZhbHVlLgorICAgICAgICAgICAgLy8gTmVlZCB0byByZXR1cm4gbnVs
bHB0ciB3aGVuIGN1cnJlbnRWYWx1ZSBpcyBDU1NQcm9wZXJ0eUFsbC4KKyAgICAgICAgICAgIGlm
ICh1bnJlc29sdmVkUHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXaWxsQ2hhbmdlIHx8IHVucmVzb2x2
ZWRQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUFsbCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgICAgIHZhbHVlcy0+YXBwZW5kKCpDU1NDdXN0b21JZGVudFZhbHVlOjpj
cmVhdGUodW5yZXNvbHZlZFByb3BlcnR5KSk7CisgICAgICAgICAgICByYW5nZS5jb25zdW1lSW5j
bHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3dpdGNo
IChyYW5nZS5wZWVrKCkuaWQoKSkgeworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6Cisg
ICAgICAgICAgICBjYXNlIENTU1ZhbHVlQWxsOgorICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUF1
dG86CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlRGVmYXVsdDoKKyAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVJbml0aWFsOgorICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUluaGVyaXQ6CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQ29u
dGVudHM6CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU2Nyb2xsUG9zaXRpb246CisgICAgICAg
ICAgICAgICAgdmFsdWVzLT5hcHBlbmQoKmNvbnN1bWVJZGVudChyYW5nZSkpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByYW5n
ZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHJhbmdlLmF0RW5kKCkpCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0
ZXNwYWNlKHJhbmdlKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAg
IHJldHVybiB2YWx1ZXM7Cit9CisKK3N0YXRpYyBDU1NGb250RmVhdHVyZVZhbHVlKiBjb25zdW1l
Rm9udEZlYXR1cmVUYWcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgLy8gRmVh
dHVyZSB0YWcgbmFtZSBjb25zaXN0cyBvZiA0LWxldHRlciBjaGFyYWN0ZXJzLgorICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCB0YWdOYW1lTGVuZ3RoID0gNDsKKworICAgIGNvbnN0IENTU1BhcnNl
clRva2VuJiB0b2tlbiA9IHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAg
Ly8gRmVhdHVyZSB0YWcgbmFtZSBjb21lcyBmaXJzdAorICAgIGlmICh0b2tlbi50eXBlKCkgIT0g
U3RyaW5nVG9rZW4pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICh0b2tlbi52YWx1
ZSgpLmxlbmd0aCgpICE9IHRhZ05hbWVMZW5ndGgpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIEF0b21pY1N0cmluZyB0YWcgPSB0b2tlbi52YWx1ZSgpLnRvQXRvbWljU3RyaW5nKCk7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRhZ05hbWVMZW5ndGg7ICsraSkgeworICAgICAg
ICAvLyBMaW1pdHMgdGhlIHJhbmdlIG9mIGNoYXJhY3RlcnMgdG8gMHgyMC0weDdFLCBmb2xsb3dp
bmcgdGhlIHRhZyBuYW1lIHJ1bGVzIGRlZmllbmQgaW4gdGhlIE9wZW5UeXBlIHNwZWNpZmljYXRp
b24uCisgICAgICAgIFVDaGFyIGNoYXJhY3RlciA9IHRhZ1tpXTsKKyAgICAgICAgaWYgKGNoYXJh
Y3RlciA8IDB4MjAgfHwgY2hhcmFjdGVyID4gMHg3RSkKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKworICAgIGludCB0YWdWYWx1ZSA9IDE7CisgICAgLy8gRmVhdHVyZSB0YWcg
dmFsdWVzIGNvdWxkIGZvbGxvdzogPGludGVnZXI+IHwgb24gfCBvZmYKKyAgICBpZiAocmFuZ2Uu
cGVlaygpLnR5cGUoKSA9PSBOdW1iZXJUb2tlbiAmJiByYW5nZS5wZWVrKCkubnVtZXJpY1ZhbHVl
VHlwZSgpID09IEludGVnZXJWYWx1ZVR5cGUgJiYgcmFuZ2UucGVlaygpLm51bWVyaWNWYWx1ZSgp
ID49IDApIHsKKyAgICAgICAgdGFnVmFsdWUgPSBjbGFtcFRvPGludD4ocmFuZ2UuY29uc3VtZUlu
Y2x1ZGluZ1doaXRlc3BhY2UoKS5udW1lcmljVmFsdWUoKSk7CisgICAgICAgIGlmICh0YWdWYWx1
ZSA8IDApCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9IGVsc2UgaWYgKHJhbmdl
LnBlZWsoKS5pZCgpID09IENTU1ZhbHVlT24gfHwgcmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFs
dWVPZmYpIHsKKyAgICAgICAgdGFnVmFsdWUgPSByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVz
cGFjZSgpLmlkKCkgPT0gQ1NTVmFsdWVPbjsKKyAgICB9CisgICAgcmV0dXJuIENTU0ZvbnRGZWF0
dXJlVmFsdWU6OmNyZWF0ZSh0YWcsIHRhZ1ZhbHVlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lRm9udEZlYXR1cmVTZXR0aW5ncyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sK
KyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb3JtYWwpCisgICAgICAgIHJl
dHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIENTU1ZhbHVlTGlzdCogc2V0dGluZ3MgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgZG8geworICAgICAgICBD
U1NGb250RmVhdHVyZVZhbHVlKiBmb250RmVhdHVyZVZhbHVlID0gY29uc3VtZUZvbnRGZWF0dXJl
VGFnKHJhbmdlKTsKKyAgICAgICAgaWYgKCFmb250RmVhdHVyZVZhbHVlKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHNldHRpbmdzLT5hcHBlbmQoKmZvbnRGZWF0dXJlVmFs
dWUpOworICAgIH0gd2hpbGUgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2Up
KTsKKyAgICByZXR1cm4gc2V0dGluZ3M7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVBh
Z2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5p
ZCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7
CisgICAgcmV0dXJuIGNvbnN1bWVDdXN0b21JZGVudChyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NW
YWx1ZSogY29uc3VtZVF1b3RlcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBp
ZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29u
c3VtZUlkZW50KHJhbmdlKTsKKyAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpIHsK
KyAgICAgICAgQ1NTU3RyaW5nVmFsdWUqIHBhcnNlZFZhbHVlID0gY29uc3VtZVN0cmluZyhyYW5n
ZSk7CisgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgdmFsdWVzLT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICB9CisgICAgaWYg
KHZhbHVlcy0+bGVuZ3RoKCkgJiYgdmFsdWVzLT5sZW5ndGgoKSAlIDIgPT0gMCkKKyAgICAgICAg
cmV0dXJuIHZhbHVlczsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIENTU1ZhbHVl
KiBjb25zdW1lV2Via2l0SGlnaGxpZ2h0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQorewor
ICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVy
biBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lU3RyaW5nKHJhbmdlKTsK
K30KKworY2xhc3MgRm9udFZhcmlhbnRMaWdhdHVyZXNQYXJzZXIgeworICAgIFNUQUNLX0FMTE9D
QVRFRCgpOworCitwdWJsaWM6CisgICAgRm9udFZhcmlhbnRMaWdhdHVyZXNQYXJzZXIoKQorICAg
ICAgICA6IG1fc2F3Q29tbW9uTGlnYXR1cmVzVmFsdWUoZmFsc2UpCisgICAgICAgICwgbV9zYXdE
aXNjcmV0aW9uYXJ5TGlnYXR1cmVzVmFsdWUoZmFsc2UpCisgICAgICAgICwgbV9zYXdIaXN0b3Jp
Y2FsTGlnYXR1cmVzVmFsdWUoZmFsc2UpCisgICAgICAgICwgbV9zYXdDb250ZXh0dWFsTGlnYXR1
cmVzVmFsdWUoZmFsc2UpCisgICAgICAgICwgbV9yZXN1bHQoQ1NTVmFsdWVMaXN0OjpjcmVhdGVT
cGFjZVNlcGFyYXRlZCgpKQorICAgIHsKKyAgICB9CisKKyAgICBlbnVtIGNsYXNzIFBhcnNlUmVz
dWx0IHsKKyAgICAgICAgQ29uc3VtZWRWYWx1ZSwKKyAgICAgICAgRGlzYWxsb3dlZFZhbHVlLAor
ICAgICAgICBVbmtub3duVmFsdWUKKyAgICB9OworCisgICAgUGFyc2VSZXN1bHQgY29uc3VtZUxp
Z2F0dXJlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQorICAgIHsKKyAgICAgICAgQ1NTVmFs
dWVJRCB2YWx1ZUlEID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgICAgIHN3aXRjaCAodmFsdWVJ
RCkgeworICAgICAgICBjYXNlIENTU1ZhbHVlTm9Db21tb25MaWdhdHVyZXM6CisgICAgICAgIGNh
c2UgQ1NTVmFsdWVDb21tb25MaWdhdHVyZXM6CisgICAgICAgICAgICBpZiAobV9zYXdDb21tb25M
aWdhdHVyZXNWYWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHQ6OkRpc2Fs
bG93ZWRWYWx1ZTsKKyAgICAgICAgICAgIG1fc2F3Q29tbW9uTGlnYXR1cmVzVmFsdWUgPSB0cnVl
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVOb0Rpc2NyZXRpb25h
cnlMaWdhdHVyZXM6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVEaXNjcmV0aW9uYXJ5TGlnYXR1cmVz
OgorICAgICAgICAgICAgaWYgKG1fc2F3RGlzY3JldGlvbmFyeUxpZ2F0dXJlc1ZhbHVlKQorICAg
ICAgICAgICAgICAgIHJldHVybiBQYXJzZVJlc3VsdDo6RGlzYWxsb3dlZFZhbHVlOworICAgICAg
ICAgICAgbV9zYXdEaXNjcmV0aW9uYXJ5TGlnYXR1cmVzVmFsdWUgPSB0cnVlOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVOb0hpc3RvcmljYWxMaWdhdHVyZXM6Cisg
ICAgICAgIGNhc2UgQ1NTVmFsdWVIaXN0b3JpY2FsTGlnYXR1cmVzOgorICAgICAgICAgICAgaWYg
KG1fc2F3SGlzdG9yaWNhbExpZ2F0dXJlc1ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBQ
YXJzZVJlc3VsdDo6RGlzYWxsb3dlZFZhbHVlOworICAgICAgICAgICAgbV9zYXdIaXN0b3JpY2Fs
TGlnYXR1cmVzVmFsdWUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
Q1NTVmFsdWVOb0NvbnRleHR1YWw6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVDb250ZXh0dWFsOgor
ICAgICAgICAgICAgaWYgKG1fc2F3Q29udGV4dHVhbExpZ2F0dXJlc1ZhbHVlKQorICAgICAgICAg
ICAgICAgIHJldHVybiBQYXJzZVJlc3VsdDo6RGlzYWxsb3dlZFZhbHVlOworICAgICAgICAgICAg
bV9zYXdDb250ZXh0dWFsTGlnYXR1cmVzVmFsdWUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHQ6OlVua25v
d25WYWx1ZTsKKyAgICAgICAgfQorICAgICAgICBtX3Jlc3VsdC0+YXBwZW5kKCpjb25zdW1lSWRl
bnQocmFuZ2UpKTsKKyAgICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0OjpDb25zdW1lZFZhbHVlOwor
ICAgIH0KKworICAgIENTU1ZhbHVlKiBmaW5hbGl6ZVZhbHVlKCkKKyAgICB7CisgICAgICAgIGlm
ICghbV9yZXN1bHQtPmxlbmd0aCgpKQorICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFsKTsKKyAgICAgICAgcmV0dXJuIG1f
cmVzdWx0LnJlbGVhc2UoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX3Nhd0NvbW1v
bkxpZ2F0dXJlc1ZhbHVlOworICAgIGJvb2wgbV9zYXdEaXNjcmV0aW9uYXJ5TGlnYXR1cmVzVmFs
dWU7CisgICAgYm9vbCBtX3Nhd0hpc3RvcmljYWxMaWdhdHVyZXNWYWx1ZTsKKyAgICBib29sIG1f
c2F3Q29udGV4dHVhbExpZ2F0dXJlc1ZhbHVlOworICAgIE1lbWJlcjxDU1NWYWx1ZUxpc3Q+IG1f
cmVzdWx0OworfTsKKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lRm9udFZhcmlhbnRMaWdhdHVy
ZXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5p
ZCgpID09IENTU1ZhbHVlTm9ybWFsIHx8IHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9u
ZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBGb250VmFyaWFu
dExpZ2F0dXJlc1BhcnNlciBsaWdhdHVyZXNQYXJzZXI7CisgICAgZG8geworICAgICAgICBpZiAo
bGlnYXR1cmVzUGFyc2VyLmNvbnN1bWVMaWdhdHVyZShyYW5nZSkgIT0KKyAgICAgICAgICAgIEZv
bnRWYXJpYW50TGlnYXR1cmVzUGFyc2VyOjpQYXJzZVJlc3VsdDo6Q29uc3VtZWRWYWx1ZSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgpKTsK
KworICAgIHJldHVybiBsaWdhdHVyZXNQYXJzZXIuZmluYWxpemVWYWx1ZSgpOworfQorCitzdGF0
aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVGb250VmFyaWFudENhcHMoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgcmV0dXJuIGNvbnN1bWVJZGVudDxDU1NWYWx1ZU5vcm1h
bCwgQ1NTVmFsdWVTbWFsbENhcHMsIENTU1ZhbHVlQWxsU21hbGxDYXBzLAorICAgICAgICBDU1NW
YWx1ZVBldGl0ZUNhcHMsIENTU1ZhbHVlQWxsUGV0aXRlQ2FwcywKKyAgICAgICAgQ1NTVmFsdWVV
bmljYXNlLCBDU1NWYWx1ZVRpdGxpbmdDYXBzPihyYW5nZSk7Cit9CisKK2NsYXNzIEZvbnRWYXJp
YW50TnVtZXJpY1BhcnNlciB7CisgICAgU1RBQ0tfQUxMT0NBVEVEKCk7CisKK3B1YmxpYzoKKyAg
ICBGb250VmFyaWFudE51bWVyaWNQYXJzZXIoKQorICAgICAgICA6IG1fc2F3TnVtZXJpY0ZpZ3Vy
ZVZhbHVlKGZhbHNlKQorICAgICAgICAsIG1fc2F3TnVtZXJpY1NwYWNpbmdWYWx1ZShmYWxzZSkK
KyAgICAgICAgLCBtX3Nhd051bWVyaWNGcmFjdGlvblZhbHVlKGZhbHNlKQorICAgICAgICAsIG1f
c2F3T3JkaW5hbFZhbHVlKGZhbHNlKQorICAgICAgICAsIG1fc2F3U2xhc2hlZFplcm9WYWx1ZShm
YWxzZSkKKyAgICAgICAgLCBtX3Jlc3VsdChDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJh
dGVkKCkpCisgICAgeworICAgIH0KKworICAgIGVudW0gY2xhc3MgUGFyc2VSZXN1bHQgeworICAg
ICAgICBDb25zdW1lZFZhbHVlLAorICAgICAgICBEaXNhbGxvd2VkVmFsdWUsCisgICAgICAgIFVu
a25vd25WYWx1ZQorICAgIH07CisKKyAgICBQYXJzZVJlc3VsdCBjb25zdW1lTnVtZXJpYyhDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSkKKyAgICB7CisgICAgICAgIENTU1ZhbHVlSUQgdmFsdWVJ
RCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgICAgICBzd2l0Y2ggKHZhbHVlSUQpIHsKKyAgICAg
ICAgY2FzZSBDU1NWYWx1ZUxpbmluZ051bXM6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVPbGRzdHls
ZU51bXM6CisgICAgICAgICAgICBpZiAobV9zYXdOdW1lcmljRmlndXJlVmFsdWUpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0OjpEaXNhbGxvd2VkVmFsdWU7CisgICAgICAgICAg
ICBtX3Nhd051bWVyaWNGaWd1cmVWYWx1ZSA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBDU1NWYWx1ZVByb3BvcnRpb25hbE51bXM6CisgICAgICAgIGNhc2UgQ1NTVmFs
dWVUYWJ1bGFyTnVtczoKKyAgICAgICAgICAgIGlmIChtX3Nhd051bWVyaWNTcGFjaW5nVmFsdWUp
CisgICAgICAgICAgICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0OjpEaXNhbGxvd2VkVmFsdWU7Cisg
ICAgICAgICAgICBtX3Nhd051bWVyaWNTcGFjaW5nVmFsdWUgPSB0cnVlOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVEaWFnb25hbEZyYWN0aW9uczoKKyAgICAgICAg
Y2FzZSBDU1NWYWx1ZVN0YWNrZWRGcmFjdGlvbnM6CisgICAgICAgICAgICBpZiAobV9zYXdOdW1l
cmljRnJhY3Rpb25WYWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHQ6OkRp
c2FsbG93ZWRWYWx1ZTsKKyAgICAgICAgICAgIG1fc2F3TnVtZXJpY0ZyYWN0aW9uVmFsdWUgPSB0
cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVPcmRpbmFsOgor
ICAgICAgICAgICAgaWYgKG1fc2F3T3JkaW5hbFZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVy
biBQYXJzZVJlc3VsdDo6RGlzYWxsb3dlZFZhbHVlOworICAgICAgICAgICAgbV9zYXdPcmRpbmFs
VmFsdWUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVT
bGFzaGVkWmVybzoKKyAgICAgICAgICAgIGlmIChtX3Nhd1NsYXNoZWRaZXJvVmFsdWUpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0OjpEaXNhbGxvd2VkVmFsdWU7CisgICAgICAg
ICAgICBtX3Nhd1NsYXNoZWRaZXJvVmFsdWUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gUGFyc2VSZXN1bHQ6OlVua25vd25W
YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBtX3Jlc3VsdC0+YXBwZW5kKCpjb25zdW1lSWRlbnQo
cmFuZ2UpKTsKKyAgICAgICAgcmV0dXJuIFBhcnNlUmVzdWx0OjpDb25zdW1lZFZhbHVlOworICAg
IH0KKworICAgIENTU1ZhbHVlKiBmaW5hbGl6ZVZhbHVlKCkKKyAgICB7CisgICAgICAgIGlmICgh
bV9yZXN1bHQtPmxlbmd0aCgpKQorICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFsKTsKKyAgICAgICAgcmV0dXJuIG1fcmVz
dWx0LnJlbGVhc2UoKTsKKyAgICB9CisKKworcHJpdmF0ZToKKyAgICBib29sIG1fc2F3TnVtZXJp
Y0ZpZ3VyZVZhbHVlOworICAgIGJvb2wgbV9zYXdOdW1lcmljU3BhY2luZ1ZhbHVlOworICAgIGJv
b2wgbV9zYXdOdW1lcmljRnJhY3Rpb25WYWx1ZTsKKyAgICBib29sIG1fc2F3T3JkaW5hbFZhbHVl
OworICAgIGJvb2wgbV9zYXdTbGFzaGVkWmVyb1ZhbHVlOworICAgIE1lbWJlcjxDU1NWYWx1ZUxp
c3Q+IG1fcmVzdWx0OworfTsKKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lRm9udFZhcmlhbnRO
dW1lcmljKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVr
KCkuaWQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChy
YW5nZSk7CisKKyAgICBGb250VmFyaWFudE51bWVyaWNQYXJzZXIgbnVtZXJpY1BhcnNlcjsKKyAg
ICBkbyB7CisgICAgICAgIGlmIChudW1lcmljUGFyc2VyLmNvbnN1bWVOdW1lcmljKHJhbmdlKSAh
PQorICAgICAgICAgICAgRm9udFZhcmlhbnROdW1lcmljUGFyc2VyOjpQYXJzZVJlc3VsdDo6Q29u
c3VtZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0gd2hpbGUgKCFy
YW5nZS5hdEVuZCgpKTsKKworICAgIHJldHVybiBudW1lcmljUGFyc2VyLmZpbmFsaXplVmFsdWUo
KTsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lRm9udFZhcmlhbnRDU1My
MShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4gY29uc3VtZUlkZW50
PENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZVNtYWxsQ2Fwcz4ocmFuZ2UpOworfQorCitzdGF0aWMg
Q1NTVmFsdWUqIGNvbnN1bWVGb250VmFyaWFudExpc3QoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UpCit7CisgICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNv
bW1hU2VwYXJhdGVkKCk7CisgICAgZG8geworICAgICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkg
PT0gQ1NTVmFsdWVBbGwpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBDU1NQcm9wZXJ0eVBhcnNl
cjo6cGFyc2VGb250VmFyaWFudCgpIGltcGxlbWVudHMKKyAgICAgICAgICAgIC8vIHRoZSBvbGQg
Y3NzMyBkcmFmdDoKKyAgICAgICAgICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDIvV0Qt
Y3NzMy13ZWJmb250cy0yMDAyMDgwMi8jZm9udC12YXJpYW50CisgICAgICAgICAgICAvLyAnYWxs
JyBpcyBvbmx5IGFsbG93ZWQgaW4gQGZvbnQtZmFjZSBhbmQgd2l0aCBubyBvdGhlciB2YWx1ZXMu
CisgICAgICAgICAgICBpZiAodmFsdWVzLT5sZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAg
ICAgICB9CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmb250VmFyaWFudCA9IGNvbnN1bWVG
b250VmFyaWFudENTUzIxKHJhbmdlKTsKKyAgICAgICAgaWYgKGZvbnRWYXJpYW50KQorICAgICAg
ICAgICAgdmFsdWVzLT5hcHBlbmQoKmZvbnRWYXJpYW50KTsKKyAgICB9IHdoaWxlIChjb25zdW1l
Q29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSk7CisKKyAgICBpZiAodmFsdWVzLT5sZW5n
dGgoKSkKKyAgICAgICAgcmV0dXJuIHZhbHVlczsKKworICAgIHJldHVybiBudWxscHRyOworfQor
CitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVGb250V2VpZ2h0KENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJh
bmdlLnBlZWsoKTsKKyAgICBpZiAodG9rZW4uaWQoKSA+PSBDU1NWYWx1ZU5vcm1hbCAmJiB0b2tl
bi5pZCgpIDw9IENTU1ZhbHVlTGlnaHRlcikKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChy
YW5nZSk7CisgICAgaWYgKHRva2VuLnR5cGUoKSAhPSBOdW1iZXJUb2tlbiB8fCB0b2tlbi5udW1l
cmljVmFsdWVUeXBlKCkgIT0gSW50ZWdlclZhbHVlVHlwZSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgaW50IHdlaWdodCA9IHN0YXRpY19jYXN0PGludD4odG9rZW4ubnVtZXJpY1ZhbHVl
KCkpOworICAgIGlmICgod2VpZ2h0ICUgMTAwKSB8fCB3ZWlnaHQgPCAxMDAgfHwgd2VpZ2h0ID4g
OTAwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5n
V2hpdGVzcGFjZSgpOworICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRp
ZmllcihzdGF0aWNfY2FzdDxDU1NWYWx1ZUlEPihDU1NWYWx1ZTEwMCArIHdlaWdodCAvIDEwMCAt
IDEpKTsKK30KKworc3RhdGljIFN0cmluZyBjb25jYXRlbmF0ZUZhbWlseU5hbWUoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJv
b2wgYWRkZWRTcGFjZSA9IGZhbHNlOworICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiBmaXJzdFRv
a2VuID0gcmFuZ2UucGVlaygpOworICAgIHdoaWxlIChyYW5nZS5wZWVrKCkudHlwZSgpID09IElk
ZW50VG9rZW4pIHsKKyAgICAgICAgaWYgKCFidWlsZGVyLmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgIGFkZGVkU3BhY2UgPSB0cnVlOwor
ICAgICAgICB9CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdX
aGl0ZXNwYWNlKCkudmFsdWUoKSk7CisgICAgfQorICAgIGlmICghYWRkZWRTcGFjZSAmJiBpc0NT
U1dpZGVLZXl3b3JkKGZpcnN0VG9rZW4uaWQoKSkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
KyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNv
bnN1bWVGYW1pbHlOYW1lKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChy
YW5nZS5wZWVrKCkudHlwZSgpID09IFN0cmluZ1Rva2VuKQorICAgICAgICByZXR1cm4gQ1NTRm9u
dEZhbWlseVZhbHVlOjpjcmVhdGUocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52
YWx1ZSgpLnRvU3RyaW5nKCkpOworICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgpICE9IElkZW50
VG9rZW4pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIFN0cmluZyBmYW1pbHlOYW1lID0g
Y29uY2F0ZW5hdGVGYW1pbHlOYW1lKHJhbmdlKTsKKyAgICBpZiAoZmFtaWx5TmFtZS5pc051bGwo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIENTU0ZvbnRGYW1pbHlWYWx1
ZTo6Y3JlYXRlKGZhbWlseU5hbWUpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVHZW5l
cmljRmFtaWx5KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIHJldHVybiBjb25z
dW1lSWRlbnRSYW5nZShyYW5nZSwgQ1NTVmFsdWVTZXJpZiwgQ1NTVmFsdWVXZWJraXRCb2R5KTsK
K30KKworc3RhdGljIENTU1ZhbHVlTGlzdCogY29uc3VtZUZvbnRGYW1pbHkoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0
OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgIGRvIHsKKyAgICAgICAgQ1NTVmFsdWUqIHBh
cnNlZFZhbHVlID0gY29uc3VtZUdlbmVyaWNGYW1pbHkocmFuZ2UpOworICAgICAgICBpZiAocGFy
c2VkVmFsdWUpIHsKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZCgqcGFyc2VkVmFsdWUpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lRmFtaWx5TmFt
ZShyYW5nZSk7CisgICAgICAgICAgICBpZiAocGFyc2VkVmFsdWUpIHsKKyAgICAgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSk7CisgICAg
cmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVNwYWNpbmcoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAg
ICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb3JtYWwpCisgICAgICAgIHJldHVy
biBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIC8vIEZJWE1FOiBhbGxvdyA8cGVyY2VudGFnZT5z
IGluIHdvcmQtc3BhY2luZy4KKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFy
c2VyTW9kZSwgVmFsdWVSYW5nZUFsbCwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOworfQorCitzdGF0
aWMgQ1NTVmFsdWUqIGNvbnN1bWVUYWJTaXplKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBD
U1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBh
cnNlZFZhbHVlID0gY29uc3VtZUludGVnZXIocmFuZ2UsIDApOworICAgIGlmIChwYXJzZWRWYWx1
ZSkKKyAgICAgICAgcmV0dXJuIHBhcnNlZFZhbHVlOworICAgIHJldHVybiBjb25zdW1lTGVuZ3Ro
KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworfQorCitzdGF0
aWMgQ1NTVmFsdWUqIGNvbnN1bWVUZXh0U2l6ZUFkanVzdChDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlmIChyYW5nZS5wZWVr
KCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFu
Z2UpOworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAg
IHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lUGVyY2VudChy
YW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25z
dW1lRm9udFNpemUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3Nz
UGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcyA9IFVuaXRsZXNzUXVpcms6OkZvcmJp
ZCkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPj0gQ1NTVmFsdWVYeFNtYWxsICYmIHJh
bmdlLnBlZWsoKS5pZCgpIDw9IENTU1ZhbHVlTGFyZ2VyKQorICAgICAgICByZXR1cm4gY29uc3Vt
ZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwg
Y3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlLCB1bml0bGVzcyk7Cit9CisKK3N0
YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUxpbmVIZWlnaHQoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAocmFu
Z2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb3JtYWwpCisgICAgICAgIHJldHVybiBjb25zdW1l
SWRlbnQocmFuZ2UpOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGxpbmVIZWlnaHQgPSBjb25z
dW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgIGlmIChsaW5lSGVp
Z2h0KQorICAgICAgICByZXR1cm4gbGluZUhlaWdodDsKKyAgICByZXR1cm4gY29uc3VtZUxlbmd0
aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsK
K30KKworc3RhdGljIENTU1ZhbHVlTGlzdCogY29uc3VtZVJvdGF0aW9uKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlKQoreworICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NJ
bmRlcGVuZGVudFRyYW5zZm9ybVByb3BlcnRpZXNFbmFibGVkKCkpOworICAgIENTU1ZhbHVlTGlz
dCogbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKworICAgIENT
U1ZhbHVlKiByb3RhdGlvbiA9IGNvbnN1bWVBbmdsZShyYW5nZSk7CisgICAgaWYgKCFyb3RhdGlv
bikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgbGlzdC0+YXBwZW5kKCpyb3RhdGlvbik7
CisKKyAgICBpZiAocmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGxpc3Q7CisKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMzsgaSsrKSB7IC8vIDMgZGltZW5zaW9ucyBvZiByb3Rh
dGlvbgorICAgICAgICBDU1NWYWx1ZSogZGltZW5zaW9uID0gY29uc3VtZU51bWJlcihyYW5nZSwg
VmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGlmICghZGltZW5zaW9uKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIGxpc3QtPmFwcGVuZCgqZGltZW5zaW9uKTsKKyAgICB9CisK
KyAgICByZXR1cm4gbGlzdDsKK30KKworc3RhdGljIENTU1ZhbHVlTGlzdCogY29uc3VtZVNjYWxl
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIEFTU0VSVChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpjc3NJbmRlcGVuZGVudFRyYW5zZm9ybVByb3BlcnRpZXNFbmFibGVkKCkpOwor
CisgICAgQ1NTVmFsdWUqIHNjYWxlID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZUFs
bCk7CisgICAgaWYgKCFzY2FsZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NTVmFs
dWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAg
IGxpc3QtPmFwcGVuZCgqc2NhbGUpOworICAgIHNjYWxlID0gY29uc3VtZU51bWJlcihyYW5nZSwg
VmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKHNjYWxlKSB7CisgICAgICAgIGxpc3QtPmFwcGVuZCgq
c2NhbGUpOworICAgICAgICBzY2FsZSA9IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2VB
bGwpOworICAgICAgICBpZiAoc2NhbGUpCisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoKnNjYWxl
KTsKKyAgICB9CisKKyAgICByZXR1cm4gbGlzdDsKK30KKworc3RhdGljIENTU1ZhbHVlTGlzdCog
Y29uc3VtZVRyYW5zbGF0ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlKQoreworICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpj
c3NJbmRlcGVuZGVudFRyYW5zZm9ybVByb3BlcnRpZXNFbmFibGVkKCkpOworICAgIENTU1ZhbHVl
KiB0cmFuc2xhdGUgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2Rl
LCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBpZiAoIXRyYW5zbGF0ZSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFj
ZVNlcGFyYXRlZCgpOworICAgIGxpc3QtPmFwcGVuZCgqdHJhbnNsYXRlKTsKKyAgICB0cmFuc2xh
dGUgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJh
bmdlQWxsKTsKKyAgICBpZiAodHJhbnNsYXRlKSB7CisgICAgICAgIGxpc3QtPmFwcGVuZCgqdHJh
bnNsYXRlKTsKKyAgICAgICAgdHJhbnNsYXRlID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFy
c2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGlmICh0cmFuc2xhdGUpCisgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoKnRyYW5zbGF0ZSk7CisgICAgfQorCisgICAgcmV0dXJuIGxpc3Q7
Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUNvdW50ZXIoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UsIGludCBkZWZhdWx0VmFsdWUpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgp
ID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisK
KyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJh
dGVkKCk7CisgICAgZG8geworICAgICAgICBDU1NDdXN0b21JZGVudFZhbHVlKiBjb3VudGVyTmFt
ZSA9IGNvbnN1bWVDdXN0b21JZGVudChyYW5nZSk7CisgICAgICAgIGlmICghY291bnRlck5hbWUp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaW50IGkgPSBkZWZhdWx0VmFs
dWU7CisgICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZSogY291bnRlclZhbHVlID0gY29uc3Vt
ZUludGVnZXIocmFuZ2UpKQorICAgICAgICAgICAgaSA9IGNsYW1wVG88aW50Pihjb3VudGVyVmFs
dWUtPmdldERvdWJsZVZhbHVlKCkpOworICAgICAgICBsaXN0LT5hcHBlbmQoKkNTU1ZhbHVlUGFp
cjo6Y3JlYXRlKGNvdW50ZXJOYW1lLAorICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShpLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkludGVnZXIpLAorICAgICAgICAg
ICAgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVzKSk7CisgICAgfSB3aGlsZSAoIXJh
bmdlLmF0RW5kKCkpOworICAgIHJldHVybiBsaXN0OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNv
bnN1bWVQYWdlU2l6ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4g
Y29uc3VtZUlkZW50PENTU1ZhbHVlQTMsIENTU1ZhbHVlQTQsIENTU1ZhbHVlQTUsIENTU1ZhbHVl
QjQsIENTU1ZhbHVlQjUsIENTU1ZhbHVlTGVkZ2VyLCBDU1NWYWx1ZUxlZ2FsLCBDU1NWYWx1ZUxl
dHRlcj4ocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWVMaXN0KiBjb25zdW1lU2l6ZShDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQorewor
ICAgIENTU1ZhbHVlTGlzdCogcmVzdWx0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFy
YXRlZCgpOworCisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXV0bykgewor
ICAgICAgICByZXN1bHQtPmFwcGVuZCgqY29uc3VtZUlkZW50KHJhbmdlKSk7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorCisgICAgaWYgKENTU1ZhbHVlKiB3aWR0aCA9IGNvbnN1bWVM
ZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSkpIHsKKyAg
ICAgICAgQ1NTVmFsdWUqIGhlaWdodCA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1v
ZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgIHJlc3VsdC0+YXBwZW5kKCp3aWR0
aCk7CisgICAgICAgIGlmIChoZWlnaHQpCisgICAgICAgICAgICByZXN1bHQtPmFwcGVuZCgqaGVp
Z2h0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBDU1NWYWx1ZSogcGFn
ZVNpemUgPSBjb25zdW1lUGFnZVNpemUocmFuZ2UpOworICAgIENTU1ZhbHVlKiBvcmllbnRhdGlv
biA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZVBvcnRyYWl0LCBDU1NWYWx1ZUxhbmRzY2FwZT4ocmFu
Z2UpOworICAgIGlmICghcGFnZVNpemUpCisgICAgICAgIHBhZ2VTaXplID0gY29uc3VtZVBhZ2VT
aXplKHJhbmdlKTsKKworICAgIGlmICghb3JpZW50YXRpb24gJiYgIXBhZ2VTaXplKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAocGFnZVNpemUpCisgICAgICAgIHJlc3VsdC0+YXBw
ZW5kKCpwYWdlU2l6ZSk7CisgICAgaWYgKG9yaWVudGF0aW9uKQorICAgICAgICByZXN1bHQtPmFw
cGVuZCgqb3JpZW50YXRpb24pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBDU1NW
YWx1ZSogY29uc3VtZVNuYXBIZWlnaHQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1Bh
cnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogdW5pdCA9
IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2
ZSk7CisgICAgaWYgKCF1bml0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBDU1NWYWx1
ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAg
bGlzdC0+YXBwZW5kKCp1bml0KTsKKworICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZSogcG9zaXRp
b24gPSBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyKHJhbmdlKSkgeworICAgICAgICBpZiAocG9zaXRp
b24tPmdldEludFZhbHVlKCkgPiAxMDApCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgbGlzdC0+YXBwZW5kKCpwb3NpdGlvbik7CisgICAgfQorCisgICAgcmV0dXJuIGxpc3Q7
Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVRleHRJbmRlbnQoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICAvLyBbIDxs
ZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IF0gJiYgaGFuZ2luZz8gJiYgZWFjaC1saW5lPworICAgIC8v
IEtleXdvcmRzIG9ubHkgYWxsb3dlZCB3aGVuIGNzczNUZXh0IGlzIGVuYWJsZWQuCisgICAgQ1NT
VmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwor
CisgICAgYm9vbCBoYXNMZW5ndGhPclBlcmNlbnRhZ2UgPSBmYWxzZTsKKyAgICBib29sIGhhc0Vh
Y2hMaW5lID0gZmFsc2U7CisgICAgYm9vbCBoYXNIYW5naW5nID0gZmFsc2U7CisKKyAgICBkbyB7
CisgICAgICAgIGlmICghaGFzTGVuZ3RoT3JQZXJjZW50YWdlKSB7CisgICAgICAgICAgICBpZiAo
Q1NTVmFsdWUqIHRleHRJbmRlbnQgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQ
YXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsLCBVbml0bGVzc1F1aXJrOjpBbGxvdykpIHsKKyAgICAg
ICAgICAgICAgICBsaXN0LT5hcHBlbmQoKnRleHRJbmRlbnQpOworICAgICAgICAgICAgICAgIGhh
c0xlbmd0aE9yUGVyY2VudGFnZSA9IHRydWU7CisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6Y3NzM1RleHRFbmFibGVkKCkpIHsKKyAgICAgICAgICAgIENTU1ZhbHVlSUQgaWQgPSBy
YW5nZS5wZWVrKCkuaWQoKTsKKyAgICAgICAgICAgIGlmICghaGFzRWFjaExpbmUgJiYgaWQgPT0g
Q1NTVmFsdWVFYWNoTGluZSkgeworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCgqY29uc3Vt
ZUlkZW50KHJhbmdlKSk7CisgICAgICAgICAgICAgICAgaGFzRWFjaExpbmUgPSB0cnVlOworICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFo
YXNIYW5naW5nICYmIGlkID09IENTU1ZhbHVlSGFuZ2luZykgeworICAgICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZCgqY29uc3VtZUlkZW50KHJhbmdlKSk7CisgICAgICAgICAgICAgICAgaGFzSGFu
Z2luZyA9IHRydWU7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfSB3aGlsZSAoIXJhbmdlLmF0
RW5kKCkpOworCisgICAgaWYgKCFoYXNMZW5ndGhPclBlcmNlbnRhZ2UpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBib29sIHZhbGlkV2lk
dGhPckhlaWdodEtleXdvcmQoQ1NTVmFsdWVJRCBpZCwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYg
Y29udGV4dCkKK3sKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRNaW5Db250ZW50IHx8IGlk
ID09IENTU1ZhbHVlV2Via2l0TWF4Q29udGVudCB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdEZpbGxB
dmFpbGFibGUgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRGaXRDb250ZW50CisgICAgICAgIHx8IGlk
ID09IENTU1ZhbHVlTWluQ29udGVudCB8fCBpZCA9PSBDU1NWYWx1ZU1heENvbnRlbnQgfHwgaWQg
PT0gQ1NTVmFsdWVGaXRDb250ZW50KSB7CisgICAgICAgIGlmIChjb250ZXh0LnVzZUNvdW50ZXIo
KSkgeworICAgICAgICAgICAgc3dpdGNoIChpZCkgeworICAgICAgICAgICAgY2FzZSBDU1NWYWx1
ZVdlYmtpdE1pbkNvbnRlbnQ6CisgICAgICAgICAgICAgICAgY29udGV4dC51c2VDb3VudGVyKCkt
PmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlUHJlZml4ZWRNaW5Db250ZW50KTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRNYXhDb250ZW50
OgorICAgICAgICAgICAgICAgIGNvbnRleHQudXNlQ291bnRlcigpLT5jb3VudChVc2VDb3VudGVy
OjpDU1NWYWx1ZVByZWZpeGVkTWF4Q29udGVudCk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIENTU1ZhbHVlV2Via2l0RmlsbEF2YWlsYWJsZToKKyAgICAgICAgICAg
ICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291bnRlcjo6Q1NTVmFsdWVQcmVm
aXhlZEZpbGxBdmFpbGFibGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBDU1NWYWx1ZVdlYmtpdEZpdENvbnRlbnQ6CisgICAgICAgICAgICAgICAgY29udGV4dC51
c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlUHJlZml4ZWRGaXRDb250ZW50
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lTWF4V2lkdGhPckhlaWdodChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3Qg
Q1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgVW5pdGxlc3NRdWlyayB1bml0bGVzcyA9IFVuaXRs
ZXNzUXVpcms6OkZvcmJpZCkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFs
dWVOb25lIHx8IHZhbGlkV2lkdGhPckhlaWdodEtleXdvcmQocmFuZ2UucGVlaygpLmlkKCksIGNv
bnRleHQpKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4g
Y29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VO
b25OZWdhdGl2ZSwgdW5pdGxlc3MpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVXaWR0
aE9ySGVpZ2h0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250
ZXh0JiBjb250ZXh0LCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzID0gVW5pdGxlc3NRdWlyazo6Rm9y
YmlkKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFs
aWRXaWR0aE9ySGVpZ2h0S2V5d29yZChyYW5nZS5wZWVrKCkuaWQoKSwgY29udGV4dCkpCisgICAg
ICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lTGVuZ3Ro
T3JQZXJjZW50KHJhbmdlLCBjb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlLCB1
bml0bGVzcyk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZU1hcmdpbk9yT2Zmc2V0KENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVu
aXRsZXNzUXVpcmsgdW5pdGxlc3MpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENT
U1ZhbHVlQXV0bykKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0
dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFu
Z2VBbGwsIHVuaXRsZXNzKTsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1l
Q2xpcENvbXBvbmVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBj
c3NQYXJzZXJNb2RlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1
dG8pCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25z
dW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsLCBVbml0bGVzc1F1
aXJrOjpBbGxvdyk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUNsaXAoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBp
ZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICByZXR1cm4gY29u
c3VtZUlkZW50KHJhbmdlKTsKKworICAgIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpICE9
IENTU1ZhbHVlUmVjdCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBDU1NQYXJzZXJU
b2tlblJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2UpOworICAgIC8vIHJlY3QodCwg
ciwgYiwgbCkgfHwgcmVjdCh0IHIgYiBsKQorICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0b3AgPSBj
b25zdW1lQ2xpcENvbXBvbmVudChhcmdzLCBjc3NQYXJzZXJNb2RlKTsKKyAgICBpZiAoIXRvcCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYm9vbCBuZWVkc0NvbW1hID0gY29uc3VtZUNv
bW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcmln
aHQgPSBjb25zdW1lQ2xpcENvbXBvbmVudChhcmdzLCBjc3NQYXJzZXJNb2RlKTsKKyAgICBpZiAo
IXJpZ2h0IHx8IChuZWVkc0NvbW1hICYmICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNl
KGFyZ3MpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IGJvdHRvbSA9IGNvbnN1bWVDbGlwQ29tcG9uZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUpOworICAg
IGlmICghYm90dG9tIHx8IChuZWVkc0NvbW1hICYmICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0
ZXNwYWNlKGFyZ3MpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIGxlZnQgPSBjb25zdW1lQ2xpcENvbXBvbmVudChhcmdzLCBjc3NQYXJzZXJNb2RlKTsK
KyAgICBpZiAoIWxlZnQgfHwgIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuIENTU1F1YWRWYWx1ZTo6Y3JlYXRlKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVm
dCwgQ1NTUXVhZFZhbHVlOjpTZXJpYWxpemVBc1JlY3QpOworfQorCitzdGF0aWMgYm9vbCBjb25z
dW1lUGFuKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NWYWx1ZSomIHBhblgsIENTU1Zh
bHVlKiYgcGFuWSkKK3sKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7Cisg
ICAgaWYgKChpZCA9PSBDU1NWYWx1ZVBhblggfHwgaWQgPT0gQ1NTVmFsdWVQYW5SaWdodCB8fCBp
ZCA9PSBDU1NWYWx1ZVBhbkxlZnQpICYmICFwYW5YKSB7CisgICAgICAgIGlmIChpZCAhPSBDU1NW
YWx1ZVBhblggJiYgIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc1RvdWNoQWN0aW9uUGFuRGly
ZWN0aW9uc0VuYWJsZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcGFu
WCA9IGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgfSBlbHNlIGlmICgoaWQgPT0gQ1NTVmFsdWVQ
YW5ZIHx8IGlkID09IENTU1ZhbHVlUGFuRG93biB8fCBpZCA9PSBDU1NWYWx1ZVBhblVwKSAmJiAh
cGFuWSkgeworICAgICAgICBpZiAoaWQgIT0gQ1NTVmFsdWVQYW5ZICYmICFSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpjc3NUb3VjaEFjdGlvblBhbkRpcmVjdGlvbnNFbmFibGVkKCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHBhblkgPSBjb25zdW1lSWRlbnQocmFuZ2UpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVRvdWNoQWN0aW9uKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlKQoreworICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVl
aygpLmlkKCk7CisgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZU5v
bmUgfHwgaWQgPT0gQ1NTVmFsdWVNYW5pcHVsYXRpb24pIHsKKyAgICAgICAgbGlzdC0+YXBwZW5k
KCpjb25zdW1lSWRlbnQocmFuZ2UpKTsKKyAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgfQorCisg
ICAgQ1NTVmFsdWUqIHBhblggPSBudWxscHRyOworICAgIENTU1ZhbHVlKiBwYW5ZID0gbnVsbHB0
cjsKKyAgICBpZiAoIWNvbnN1bWVQYW4ocmFuZ2UsIHBhblgsIHBhblkpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBpZiAoIXJhbmdlLmF0RW5kKCkgJiYgIWNvbnN1bWVQYW4ocmFuZ2Us
IHBhblgsIHBhblkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChwYW5YKQor
ICAgICAgICBsaXN0LT5hcHBlbmQoKnBhblgpOworICAgIGlmIChwYW5ZKQorICAgICAgICBsaXN0
LT5hcHBlbmQoKnBhblkpOworICAgIHJldHVybiBsaXN0OworfQorCitzdGF0aWMgQ1NTUHJpbWl0
aXZlVmFsdWUqIGNvbnN1bWVMaW5lQ2xhbXAoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7
CisgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgIT0gUGVyY2VudGFnZVRva2VuICYmIHJhbmdl
LnBlZWsoKS50eXBlKCkgIT0gTnVtYmVyVG9rZW4pCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjbGFtcFZhbHVlID0gY29uc3VtZVBlcmNlbnQocmFuZ2Us
IFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgaWYgKGNsYW1wVmFsdWUpCisgICAgICAgIHJl
dHVybiBjbGFtcFZhbHVlOworICAgIC8vIFdoZW4gc3BlY2lmeWluZyBudW1iZXIgb2YgbGluZXMs
IGRvbid0IGFsbG93IDAgYXMgYSB2YWxpZCB2YWx1ZS4KKyAgICByZXR1cm4gY29uc3VtZVBvc2l0
aXZlSW50ZWdlcihyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUxvY2FsZShD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkg
PT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAg
ICByZXR1cm4gY29uc3VtZVN0cmluZyhyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29u
c3VtZUNvbHVtbldpZHRoKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChy
YW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBjb25zdW1l
SWRlbnQocmFuZ2UpOworICAgIC8vIEFsd2F5cyBwYXJzZSBsZW5ndGhzIGluIHN0cmljdCBtb2Rl
IGhlcmUsIHNpbmNlIGl0IHdvdWxkIGJlIGFtYmlndW91cyBvdGhlcndpc2Ugd2hlbiB1c2VkIGlu
CisgICAgLy8gdGhlICdjb2x1bW5zJyBzaG9ydGhhbmQgcHJvcGVydHkuCisgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIGNvbHVtbldpZHRoID0gY29uc3VtZUxlbmd0aChyYW5nZSwgSFRNTFN0YW5kYXJk
TW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICBpZiAoIWNvbHVtbldpZHRoIHx8ICgh
Y29sdW1uV2lkdGgtPmlzQ2FsY3VsYXRlZCgpICYmIGNvbHVtbldpZHRoLT5nZXREb3VibGVWYWx1
ZSgpID09IDApKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY29sdW1uV2lk
dGg7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUNvbHVtbkNvdW50KENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1
ZUF1dG8pCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBj
b25zdW1lUG9zaXRpdmVJbnRlZ2VyKHJhbmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25z
dW1lQ29sdW1uR2FwKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNz
c1BhcnNlck1vZGUpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9y
bWFsKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29u
c3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsK
K30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQ29sdW1uU3BhbihDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSkKK3sKKyAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlQWxsLCBDU1NW
YWx1ZU5vbmU+KHJhbmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lWm9vbShDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkK
K3sKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CisgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHpvb20gPSBudWxscHRyOworICAgIGlmICh0b2tlbi50eXBlKCkg
PT0gSWRlbnRUb2tlbikgeworICAgICAgICB6b29tID0gY29uc3VtZUlkZW50PENTU1ZhbHVlTm9y
bWFsLCBDU1NWYWx1ZVJlc2V0LCBDU1NWYWx1ZURvY3VtZW50PihyYW5nZSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgem9vbSA9IGNvbnN1bWVQZXJjZW50KHJhbmdlLCBWYWx1ZVJhbmdlTm9uTmVn
YXRpdmUpOworICAgICAgICBpZiAoIXpvb20pCisgICAgICAgICAgICB6b29tID0gY29uc3VtZU51
bWJlcihyYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICB9CisgICAgaWYgKHpvb20g
JiYgY29udGV4dC51c2VDb3VudGVyKCkKKyAgICAgICAgJiYgISh0b2tlbi5pZCgpID09IENTU1Zh
bHVlTm9ybWFsCisgICAgICAgICAgICB8fCAodG9rZW4udHlwZSgpID09IE51bWJlclRva2VuICYm
IHpvb20tPmdldERvdWJsZVZhbHVlKCkgPT0gMSkKKyAgICAgICAgICAgIHx8ICh0b2tlbi50eXBl
KCkgPT0gUGVyY2VudGFnZVRva2VuICYmIHpvb20tPmdldERvdWJsZVZhbHVlKCkgPT0gMTAwKSkp
CisgICAgICAgIGNvbnRleHQudXNlQ291bnRlcigpLT5jb3VudChVc2VDb3VudGVyOjpDU1Nab29t
Tm90RXF1YWxUb09uZSk7CisgICAgcmV0dXJuIHpvb207Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSog
Y29uc3VtZUFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
KQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUluZmluaXRlKQorICAg
ICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZU51bWJl
cihyYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBj
b25zdW1lQW5pbWF0aW9uTmFtZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NT
UGFyc2VyQ29udGV4dCYgY29udGV4dCwgYm9vbCBhbGxvd1F1b3RlZE5hbWUpCit7CisgICAgaWYg
KHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVJZGVudChyYW5nZSk7CisKKyAgICBpZiAoYWxsb3dRdW90ZWROYW1lICYmIHJhbmdlLnBlZWso
KS50eXBlKCkgPT0gU3RyaW5nVG9rZW4pIHsKKyAgICAgICAgLy8gTGVnYWN5IHN1cHBvcnQgZm9y
IHN0cmluZ3MgaW4gcHJlZml4ZWQgYW5pbWF0aW9ucy4KKyAgICAgICAgaWYgKGNvbnRleHQudXNl
Q291bnRlcigpKQorICAgICAgICAgICAgY29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNv
dW50ZXI6OlF1b3RlZEFuaW1hdGlvbk5hbWUpOworCisgICAgICAgIGNvbnN0IENTU1BhcnNlclRv
a2VuJiB0b2tlbiA9IHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAg
IGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRva2VuLnZhbHVlKCksICJub25lIikpCisgICAg
ICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFs
dWVOb25lKTsKKyAgICAgICAgcmV0dXJuIENTU0N1c3RvbUlkZW50VmFsdWU6OmNyZWF0ZSh0b2tl
bi52YWx1ZSgpLnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIHJldHVybiBjb25zdW1lQ3VzdG9t
SWRlbnQocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVUcmFuc2l0aW9uUHJv
cGVydHkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgY29uc3QgQ1NTUGFyc2Vy
VG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOworICAgIGlmICh0b2tlbi50eXBlKCkgIT0gSWRl
bnRUb2tlbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKHRva2VuLmlkKCkgPT0g
Q1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAg
IGlmIChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5ID0gdG9rZW4ucGFyc2VBc1VucmVzb2x2ZWRDU1NQ
cm9wZXJ0eUlEKCkpIHsKKyAgICAgICAgQVNTRVJUKENTU1Byb3BlcnR5TWV0YWRhdGE6OmlzRW5h
YmxlZFByb3BlcnR5KHByb3BlcnR5KSk7CisgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdX
aGl0ZXNwYWNlKCk7CisgICAgICAgIHJldHVybiBDU1NDdXN0b21JZGVudFZhbHVlOjpjcmVhdGUo
cHJvcGVydHkpOworICAgIH0KKyAgICByZXR1cm4gY29uc3VtZUN1c3RvbUlkZW50KHJhbmdlKTsK
K30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lU3RlcHMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UpCit7CisgICAgQVNTRVJUKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFs
dWVTdGVwcyk7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSByYW5nZTsKKyAg
ICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2VDb3B5KTsK
KworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzdGVwcyA9IGNvbnN1bWVQb3NpdGl2ZUludGVnZXIo
YXJncyk7CisgICAgaWYgKCFzdGVwcykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBT
dGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVwUG9zaXRpb24gcG9zaXRpb24gPSBTdGVwc1RpbWluZ0Z1
bmN0aW9uOjpTdGVwUG9zaXRpb246OkVORDsKKyAgICBpZiAoY29uc3VtZUNvbW1hSW5jbHVkaW5n
V2hpdGVzcGFjZShhcmdzKSkgeworICAgICAgICBzd2l0Y2ggKGFyZ3MuY29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UoKS5pZCgpKSB7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVNaWRkbGU6CisgICAg
ICAgICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYkFuaW1hdGlvbnNBUElFbmFi
bGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBwb3Np
dGlvbiA9IFN0ZXBzVGltaW5nRnVuY3Rpb246OlN0ZXBQb3NpdGlvbjo6TUlERExFOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVTdGFydDoKKyAgICAgICAgICAgIHBv
c2l0aW9uID0gU3RlcHNUaW1pbmdGdW5jdGlvbjo6U3RlcFBvc2l0aW9uOjpTVEFSVDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1ZhbHVlRW5kOgorICAgICAgICAgICAgcG9z
aXRpb24gPSBTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVwUG9zaXRpb246OkVORDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICByYW5nZSA9IHJhbmdlQ29weTsKKyAgICByZXR1cm4gQ1NTU3Rl
cHNUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUoc3RlcHMtPmdldEludFZhbHVlKCksIHBvc2l0
aW9uKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQ3ViaWNCZXppZXIoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQVNTRVJUKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklk
KCkgPT0gQ1NTVmFsdWVDdWJpY0Jlemllcik7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5n
ZUNvcHkgPSByYW5nZTsKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1lRnVu
Y3Rpb24ocmFuZ2VDb3B5KTsKKworICAgIGRvdWJsZSB4MSwgeTEsIHgyLCB5MjsKKyAgICBpZiAo
Y29uc3VtZU51bWJlclJhdyhhcmdzLCB4MSkKKyAgICAgICAgJiYgeDEgPj0gMCAmJiB4MSA8PSAx
CisgICAgICAgICYmIGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykKKyAgICAg
ICAgJiYgY29uc3VtZU51bWJlclJhdyhhcmdzLCB5MSkKKyAgICAgICAgJiYgY29uc3VtZUNvbW1h
SW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKQorICAgICAgICAmJiBjb25zdW1lTnVtYmVyUmF3KGFy
Z3MsIHgyKQorICAgICAgICAmJiB4MiA+PSAwICYmIHgyIDw9IDEKKyAgICAgICAgJiYgY29uc3Vt
ZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKQorICAgICAgICAmJiBjb25zdW1lTnVtYmVy
UmF3KGFyZ3MsIHkyKQorICAgICAgICAmJiBhcmdzLmF0RW5kKCkpIHsKKyAgICAgICAgcmFuZ2Ug
PSByYW5nZUNvcHk7CisgICAgICAgIHJldHVybiBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
VmFsdWU6OmNyZWF0ZSh4MSwgeTEsIHgyLCB5Mik7CisgICAgfQorCisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9u
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5n
ZS5wZWVrKCkuaWQoKTsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVFYXNlIHx8IGlkID09IENTU1Zh
bHVlTGluZWFyIHx8IGlkID09IENTU1ZhbHVlRWFzZUluCisgICAgICAgIHx8IGlkID09IENTU1Zh
bHVlRWFzZU91dCB8fCBpZCA9PSBDU1NWYWx1ZUVhc2VJbk91dCB8fCBpZCA9PSBDU1NWYWx1ZVN0
ZXBTdGFydAorICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVN0ZXBFbmQgfHwgaWQgPT0gQ1NTVmFs
dWVTdGVwTWlkZGxlKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAg
IENTU1ZhbHVlSUQgZnVuY3Rpb24gPSByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpOworICAgIGlm
IChmdW5jdGlvbiA9PSBDU1NWYWx1ZVN0ZXBzKQorICAgICAgICByZXR1cm4gY29uc3VtZVN0ZXBz
KHJhbmdlKTsKKyAgICBpZiAoZnVuY3Rpb24gPT0gQ1NTVmFsdWVDdWJpY0JlemllcikKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVDdWJpY0JlemllcihyYW5nZSk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUFuaW1hdGlvblZhbHVlKENTU1Byb3BlcnR5
SUQgcHJvcGVydHksIENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJD
b250ZXh0JiBjb250ZXh0LCBib29sIHVzZUxlZ2FjeVBhcnNpbmcpCit7CisgICAgc3dpdGNoIChw
cm9wZXJ0eSkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25EZWxheToKKyAgICBjYXNl
IENTU1Byb3BlcnR5VHJhbnNpdGlvbkRlbGF5OgorICAgICAgICByZXR1cm4gY29uc3VtZVRpbWUo
cmFuZ2UsIFZhbHVlUmFuZ2VBbGwpOworICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25EaXJl
Y3Rpb246CisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVOb3JtYWwsIENTU1Zh
bHVlQWx0ZXJuYXRlLCBDU1NWYWx1ZVJldmVyc2UsIENTU1ZhbHVlQWx0ZXJuYXRlUmV2ZXJzZT4o
cmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25EdXJhdGlvbjoKKyAgICBjYXNl
IENTU1Byb3BlcnR5VHJhbnNpdGlvbkR1cmF0aW9uOgorICAgICAgICByZXR1cm4gY29uc3VtZVRp
bWUocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFu
aW1hdGlvbkZpbGxNb2RlOgorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlTm9u
ZSwgQ1NTVmFsdWVGb3J3YXJkcywgQ1NTVmFsdWVCYWNrd2FyZHMsIENTU1ZhbHVlQm90aD4ocmFu
Z2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25JdGVyYXRpb25Db3VudDoKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVBbmltYXRpb25JdGVyYXRpb25Db3VudChyYW5nZSk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbk5hbWU6CisgICAgICAgIHJldHVybiBjb25zdW1lQW5pbWF0
aW9uTmFtZShyYW5nZSwgY29udGV4dCwgdXNlTGVnYWN5UGFyc2luZyk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUFuaW1hdGlvblBsYXlTdGF0ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudDxD
U1NWYWx1ZVJ1bm5pbmcsIENTU1ZhbHVlUGF1c2VkPihyYW5nZSk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRyYW5zaXRpb25Qcm9wZXJ0eToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVUcmFuc2l0aW9u
UHJvcGVydHkocmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25UaW1pbmdGdW5j
dGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOgorICAg
ICAgICByZXR1cm4gY29uc3VtZUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKHJhbmdlKTsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBpc1ZhbGlkQW5pbWF0aW9uUHJvcGVydHlM
aXN0KENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IENTU1ZhbHVlTGlzdCYgdmFsdWVMaXN0
KQoreworICAgIGlmIChwcm9wZXJ0eSAhPSBDU1NQcm9wZXJ0eVRyYW5zaXRpb25Qcm9wZXJ0eSB8
fCB2YWx1ZUxpc3QubGVuZ3RoKCkgPCAyKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBmb3Ig
KGF1dG8mIHZhbHVlIDogdmFsdWVMaXN0KSB7CisgICAgICAgIGlmICh2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpICYmIHRvQ1NTUHJpbWl0aXZlVmFsdWUoKnZhbHVlKS5pc1ZhbHVlSUQoKQorICAg
ICAgICAgICAgJiYgdG9DU1NQcmltaXRpdmVWYWx1ZSgqdmFsdWUpLmdldFZhbHVlSUQoKSA9PSBD
U1NWYWx1ZU5vbmUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVy
biB0cnVlOworfQorCitzdGF0aWMgQ1NTVmFsdWVMaXN0KiBjb25zdW1lQW5pbWF0aW9uUHJvcGVy
dHlMaXN0KENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBib29sIHVzZUxlZ2FjeVBhcnNpbmcp
Cit7CisgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNl
cGFyYXRlZCgpOworICAgIGRvIHsKKyAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gY29uc3VtZUFu
aW1hdGlvblZhbHVlKHByb3BlcnR5LCByYW5nZSwgY29udGV4dCwgdXNlTGVnYWN5UGFyc2luZyk7
CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgbGlzdC0+YXBwZW5kKCp2YWx1ZSk7CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVk
aW5nV2hpdGVzcGFjZShyYW5nZSkpOworICAgIGlmICghaXNWYWxpZEFuaW1hdGlvblByb3BlcnR5
TGlzdChwcm9wZXJ0eSwgKmxpc3QpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBBU1NF
UlQobGlzdC0+bGVuZ3RoKCkpOworICAgIHJldHVybiBsaXN0OworfQorCitib29sIENTU1Byb3Bl
cnR5UGFyc2VyOjpjb25zdW1lQW5pbWF0aW9uU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlT
aG9ydGhhbmQmIHNob3J0aGFuZCwgYm9vbCB1c2VMZWdhY3lQYXJzaW5nLCBib29sIGltcG9ydGFu
dCkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBsb25naGFuZENvdW50ID0gc2hvcnRoYW5kLmxlbmd0
aCgpOworICAgIENTU1ZhbHVlTGlzdCogbG9uZ2hhbmRzWzhdOworICAgIEFTU0VSVChsb25naGFu
ZENvdW50IDw9IDgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbG9uZ2hhbmRDb3VudDsg
KytpKQorICAgICAgICBsb25naGFuZHNbaV0gPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2Vw
YXJhdGVkKCk7CisKKyAgICBkbyB7CisgICAgICAgIGJvb2wgcGFyc2VkTG9uZ2hhbmRbOF0gPSB7
IGZhbHNlIH07CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGJvb2wgZm91bmRQcm9wZXJ0eSA9
IGZhbHNlOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsb25naGFuZENvdW50
OyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VkTG9uZ2hhbmRbaV0pCisgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgaWYgKENTU1ZhbHVlKiB2
YWx1ZSA9IGNvbnN1bWVBbmltYXRpb25WYWx1ZShzaG9ydGhhbmQucHJvcGVydGllcygpW2ldLCBt
X3JhbmdlLCBtX2NvbnRleHQsIHVzZUxlZ2FjeVBhcnNpbmcpKSB7CisgICAgICAgICAgICAgICAg
ICAgIHBhcnNlZExvbmdoYW5kW2ldID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgZm91bmRQ
cm9wZXJ0eSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGxvbmdoYW5kc1tpXS0+YXBwZW5k
KCp2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghZm91bmRQcm9wZXJ0eSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0gd2hpbGUgKCFtX3JhbmdlLmF0RW5kKCkg
JiYgbV9yYW5nZS5wZWVrKCkudHlwZSgpICE9IENvbW1hVG9rZW4pOworCisgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIHdpbGwgbWFrZSBpbnZhbGlkIGxvbmdoYW5kcywgc2VlIGNyYnVnLmNvbS8zODY0
NTkKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsb25naGFuZENvdW50OyArK2kpIHsK
KyAgICAgICAgICAgIGlmICghcGFyc2VkTG9uZ2hhbmRbaV0pCisgICAgICAgICAgICAgICAgbG9u
Z2hhbmRzW2ldLT5hcHBlbmQoKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQo
KSk7CisgICAgICAgICAgICBwYXJzZWRMb25naGFuZFtpXSA9IGZhbHNlOworICAgICAgICB9Cisg
ICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShtX3JhbmdlKSk7CisK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxvbmdoYW5kQ291bnQ7ICsraSkgeworICAgICAg
ICBpZiAoIWlzVmFsaWRBbmltYXRpb25Qcm9wZXJ0eUxpc3Qoc2hvcnRoYW5kLnByb3BlcnRpZXMo
KVtpXSwgKmxvbmdoYW5kc1tpXSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsb25naGFuZENvdW50OyArK2kpCisgICAgICAg
IGFkZFByb3BlcnR5KHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV0sIHNob3J0aGFuZC5pZCgpLCAq
bG9uZ2hhbmRzW2ldLCBpbXBvcnRhbnQpOworCisgICAgcmV0dXJuIG1fcmFuZ2UuYXRFbmQoKTsK
K30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lWkluZGV4KENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisg
ICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lSW50
ZWdlcihyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NTaGFkb3dWYWx1ZSogcGFyc2VTaW5nbGVTaGFk
b3coQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9k
ZSwgYm9vbCBhbGxvd0luc2V0LCBib29sIGFsbG93U3ByZWFkKQoreworICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBzdHlsZSA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIGNvbG9yID0gbnVsbHB0cjsK
KworICAgIGlmIChyYW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBp
ZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVJbnNldCkgeworICAgICAgICBpZiAoIWFs
bG93SW5zZXQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgc3R5bGUgPSBj
b25zdW1lSWRlbnQocmFuZ2UpOworICAgIH0KKyAgICBjb2xvciA9IGNvbnN1bWVDb2xvcihyYW5n
ZSwgY3NzUGFyc2VyTW9kZSk7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogaG9yaXpvbnRhbE9m
ZnNldCA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwp
OworICAgIGlmICghaG9yaXpvbnRhbE9mZnNldCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmVydGljYWxPZmZzZXQgPSBjb25zdW1lTGVuZ3RoKHJh
bmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBpZiAoIXZlcnRpY2FsT2Zm
c2V0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBi
bHVyUmFkaXVzID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5n
ZUFsbCk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNwcmVhZERpc3RhbmNlID0gbnVsbHB0cjsK
KyAgICBpZiAoYmx1clJhZGl1cykgeworICAgICAgICAvLyBCbHVyIHJhZGl1cyBtdXN0IGJlIG5v
bi1uZWdhdGl2ZS4KKyAgICAgICAgaWYgKGJsdXJSYWRpdXMtPmdldERvdWJsZVZhbHVlKCkgPCAw
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGlmIChhbGxvd1NwcmVhZCkK
KyAgICAgICAgICAgIHNwcmVhZERpc3RhbmNlID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFy
c2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgfQorCisgICAgaWYgKCFyYW5nZS5hdEVuZCgp
KSB7CisgICAgICAgIGlmICghY29sb3IpCisgICAgICAgICAgICBjb2xvciA9IGNvbnN1bWVDb2xv
cihyYW5nZSwgY3NzUGFyc2VyTW9kZSk7CisgICAgICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9
PSBDU1NWYWx1ZUluc2V0KSB7CisgICAgICAgICAgICBpZiAoIWFsbG93SW5zZXQgfHwgc3R5bGUp
CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBzdHlsZSA9IGNv
bnN1bWVJZGVudChyYW5nZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIENTU1NoYWRv
d1ZhbHVlOjpjcmVhdGUoaG9yaXpvbnRhbE9mZnNldCwgdmVydGljYWxPZmZzZXQsIGJsdXJSYWRp
dXMsCisgICAgICAgIHNwcmVhZERpc3RhbmNlLCBzdHlsZSwgY29sb3IpOworfQorCitzdGF0aWMg
Q1NTVmFsdWUqIGNvbnN1bWVTaGFkb3coQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1Bh
cnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgYm9vbCBpc0JveFNoYWRvd1Byb3BlcnR5KQoreworICAg
IGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBj
b25zdW1lSWRlbnQocmFuZ2UpOworCisgICAgQ1NTVmFsdWVMaXN0KiBzaGFkb3dWYWx1ZUxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgZG8geworICAgICAg
ICBpZiAoQ1NTU2hhZG93VmFsdWUqIHNoYWRvd1ZhbHVlID0gcGFyc2VTaW5nbGVTaGFkb3cocmFu
Z2UsIGNzc1BhcnNlck1vZGUsIGlzQm94U2hhZG93UHJvcGVydHksIGlzQm94U2hhZG93UHJvcGVy
dHkpKQorICAgICAgICAgICAgc2hhZG93VmFsdWVMaXN0LT5hcHBlbmQoKnNoYWRvd1ZhbHVlKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfSB3aGlsZSAo
Y29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpOworICAgIHJldHVybiBzaGFk
b3dWYWx1ZUxpc3Q7Cit9CisKK3N0YXRpYyBDU1NGdW5jdGlvblZhbHVlKiBjb25zdW1lRmlsdGVy
RnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRl
eHQmIGNvbnRleHQpCit7CisgICAgQ1NTVmFsdWVJRCBmaWx0ZXJUeXBlID0gcmFuZ2UucGVlaygp
LmZ1bmN0aW9uSWQoKTsKKyAgICBpZiAoZmlsdGVyVHlwZSA8IENTU1ZhbHVlSW52ZXJ0IHx8IGZp
bHRlclR5cGUgPiBDU1NWYWx1ZURyb3BTaGFkb3cpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7Cisg
ICAgQ1NTRnVuY3Rpb25WYWx1ZSogZmlsdGVyVmFsdWUgPSBDU1NGdW5jdGlvblZhbHVlOjpjcmVh
dGUoZmlsdGVyVHlwZSk7CisgICAgQ1NTVmFsdWUqIHBhcnNlZFZhbHVlID0gbnVsbHB0cjsKKwor
ICAgIGlmIChmaWx0ZXJUeXBlID09IENTU1ZhbHVlRHJvcFNoYWRvdykgeworICAgICAgICBwYXJz
ZWRWYWx1ZSA9IHBhcnNlU2luZ2xlU2hhZG93KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBmYWxzZSwg
ZmFsc2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChhcmdzLmF0RW5kKCkpIHsKKyAgICAg
ICAgICAgIGlmIChjb250ZXh0LnVzZUNvdW50ZXIoKSkKKyAgICAgICAgICAgICAgICBjb250ZXh0
LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291bnRlcjo6Q1NTRmlsdGVyRnVuY3Rpb25Ob0FyZ3Vt
ZW50cyk7CisgICAgICAgICAgICByZXR1cm4gZmlsdGVyVmFsdWU7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKGZpbHRlclR5cGUgPT0gQ1NTVmFsdWVCcmlnaHRuZXNzKSB7CisgICAgICAgICAgICAv
LyBGSVhNRSAoY3JidWcuY29tLzM5NzA2MSk6IFN1cHBvcnQgY2FsYyBleHByZXNzaW9ucyBsaWtl
IGNhbGMoMTAlICsgMC41KQorICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lUGVyY2Vu
dChhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisg
ICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lTnVtYmVyKGFyZ3MsIFZhbHVlUmFu
Z2VBbGwpOworICAgICAgICB9IGVsc2UgaWYgKGZpbHRlclR5cGUgPT0gQ1NTVmFsdWVIdWVSb3Rh
dGUpIHsKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUFuZ2xlKGFyZ3MpOworICAg
ICAgICB9IGVsc2UgaWYgKGZpbHRlclR5cGUgPT0gQ1NTVmFsdWVCbHVyKSB7CisgICAgICAgICAg
ICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGgoYXJncywgSFRNTFN0YW5kYXJkTW9kZSwgVmFs
dWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEZJ
WE1FIChjcmJ1Zy5jb20vMzk3MDYxKTogU3VwcG9ydCBjYWxjIGV4cHJlc3Npb25zIGxpa2UgY2Fs
YygxMCUgKyAwLjUpCisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVQZXJjZW50KGFy
Z3MsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgICAgICBpZiAoIXBhcnNlZFZhbHVl
KQorICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZU51bWJlcihhcmdzLCBWYWx1
ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICAgICAgaWYgKHBhcnNlZFZhbHVlICYmIGZpbHRl
clR5cGUgIT0gQ1NTVmFsdWVTYXR1cmF0ZSAmJiBmaWx0ZXJUeXBlICE9IENTU1ZhbHVlQ29udHJh
c3QpIHsKKyAgICAgICAgICAgICAgICBib29sIGlzUGVyY2VudGFnZSA9IHRvQ1NTUHJpbWl0aXZl
VmFsdWUocGFyc2VkVmFsdWUpLT5pc1BlcmNlbnRhZ2UoKTsKKyAgICAgICAgICAgICAgICBkb3Vi
bGUgbWF4QWxsb3dlZCA9IGlzUGVyY2VudGFnZSA/IDEwMC4wIDogMS4wOworICAgICAgICAgICAg
ICAgIGlmICh0b0NTU1ByaW1pdGl2ZVZhbHVlKHBhcnNlZFZhbHVlKS0+Z2V0RG91YmxlVmFsdWUo
KSA+IG1heEFsbG93ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgbWF4QWxsb3dl
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzUGVyY2VudGFnZSA/IENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZTo6UGVyY2VudGFnZSA6IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6
TnVtYmVyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisgICAgaWYgKCFwYXJzZWRWYWx1ZSB8fCAhYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBmaWx0ZXJWYWx1ZS0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAg
cmV0dXJuIGZpbHRlclZhbHVlOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVGaWx0ZXIo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRl
eHQpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgZG8geworICAgICAg
ICBDU1NWYWx1ZSogZmlsdGVyVmFsdWUgPSBjb25zdW1lVXJsKHJhbmdlKTsKKyAgICAgICAgaWYg
KCFmaWx0ZXJWYWx1ZSkgeworICAgICAgICAgICAgZmlsdGVyVmFsdWUgPSBjb25zdW1lRmlsdGVy
RnVuY3Rpb24ocmFuZ2UsIGNvbnRleHQpOworICAgICAgICAgICAgaWYgKCFmaWx0ZXJWYWx1ZSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBsaXN0
LT5hcHBlbmQoKmZpbHRlclZhbHVlKTsKKyAgICB9IHdoaWxlICghcmFuZ2UuYXRFbmQoKSk7Cisg
ICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVRleHREZWNvcmF0
aW9uTGluZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NWYWx1ZUlEIGlk
ID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3QqIGxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgd2hpbGUgKHRydWUp
IHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGlkZW50ID0gY29uc3VtZUlkZW50PENTU1Zh
bHVlQmxpbmssIENTU1ZhbHVlVW5kZXJsaW5lLCBDU1NWYWx1ZU92ZXJsaW5lLCBDU1NWYWx1ZUxp
bmVUaHJvdWdoPihyYW5nZSk7CisgICAgICAgIGlmICghaWRlbnQpCisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgaWYgKGxpc3QtPmhhc1ZhbHVlKCppZGVudCkpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgbGlzdC0+YXBwZW5kKCppZGVudCk7CisgICAgfQorCisgICAg
aWYgKCFsaXN0LT5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IGxpc3Q7Cit9CisKKy8vIG5vbmUgfCBzdHJpY3QgfCBjb250ZW50IHwgWyBsYXlvdXQgfHwgc3R5
bGUgfHwgcGFpbnQgfHwgc2l6ZSBdCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDb250YWluKENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5w
ZWVrKCkuaWQoKTsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4g
Y29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVTdHJp
Y3QgfHwgaWQgPT0gQ1NTVmFsdWVDb250ZW50KSB7CisgICAgICAgIGxpc3QtPmFwcGVuZCgqY29u
c3VtZUlkZW50KHJhbmdlKSk7CisgICAgICAgIHJldHVybiBsaXN0OworICAgIH0KKyAgICB3aGls
ZSAodHJ1ZSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogaWRlbnQgPSBjb25zdW1lSWRl
bnQ8Q1NTVmFsdWVQYWludCwgQ1NTVmFsdWVMYXlvdXQsIENTU1ZhbHVlU3R5bGUsIENTU1ZhbHVl
U2l6ZT4ocmFuZ2UpOworICAgICAgICBpZiAoIWlkZW50KQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGlmIChsaXN0LT5oYXNWYWx1ZSgqaWRlbnQpKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIGxpc3QtPmFwcGVuZCgqaWRlbnQpOworICAgIH0KKworICAgIGlmICgh
bGlzdC0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBsaXN0
OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVQYXRoKENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlKQoreworICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgPHVybD4sIDxiYXNpYy1z
aGFwZT4sIDxnZW9tZXRyeS1ib3g+LgorICAgIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgp
ICE9IENTU1ZhbHVlUGF0aCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBDU1NQYXJz
ZXJUb2tlblJhbmdlIGZ1bmN0aW9uUmFuZ2UgPSByYW5nZTsKKyAgICBDU1NQYXJzZXJUb2tlblJh
bmdlIGZ1bmN0aW9uQXJncyA9IGNvbnN1bWVGdW5jdGlvbihmdW5jdGlvblJhbmdlKTsKKworICAg
IGlmIChmdW5jdGlvbkFyZ3MucGVlaygpLnR5cGUoKSAhPSBTdHJpbmdUb2tlbikKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgU3RyaW5nIHBhdGhTdHJpbmcgPSBmdW5jdGlvbkFyZ3MuY29u
c3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgpLnRvU3RyaW5nKCk7CisKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IGJ5dGVTdHJlYW0gPSBTVkdQYXRoQnl0ZVN0
cmVhbTo6Y3JlYXRlKCk7CisgICAgaWYgKGJ1aWxkQnl0ZVN0cmVhbUZyb21TdHJpbmcocGF0aFN0
cmluZywgKmJ5dGVTdHJlYW0pICE9IFNWR1BhcnNlU3RhdHVzOjpOb0Vycm9yCisgICAgICAgIHx8
ICFmdW5jdGlvbkFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBy
YW5nZSA9IGZ1bmN0aW9uUmFuZ2U7CisgICAgaWYgKGJ5dGVTdHJlYW0tPmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVl
Tm9uZSk7CisgICAgcmV0dXJuIENTU1BhdGhWYWx1ZTo6Y3JlYXRlKHN0ZDo6bW92ZShieXRlU3Ry
ZWFtKSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVBhdGhPck5vbmUoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5p
ZCgpOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1l
SWRlbnQocmFuZ2UpOworCisgICAgcmV0dXJuIGNvbnN1bWVQYXRoKHJhbmdlKTsKK30KKworc3Rh
dGljIENTU1ZhbHVlKiBjb25zdW1lTW90aW9uUm90YXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UpCit7CisgICAgQ1NTVmFsdWUqIGFuZ2xlID0gY29uc3VtZUFuZ2xlKHJhbmdlKTsKKyAg
ICBDU1NWYWx1ZSoga2V5d29yZCA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVl
UmV2ZXJzZT4ocmFuZ2UpOworICAgIGlmICghYW5nbGUgJiYgIWtleXdvcmQpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgaWYgKCFhbmdsZSkKKyAgICAgICAgYW5nbGUgPSBjb25zdW1l
QW5nbGUocmFuZ2UpOworCisgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gQ1NTVmFsdWVMaXN0Ojpj
cmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGlmIChrZXl3b3JkKQorICAgICAgICBsaXN0LT5h
cHBlbmQoKmtleXdvcmQpOworICAgIGlmIChhbmdsZSkKKyAgICAgICAgbGlzdC0+YXBwZW5kKCph
bmdsZSk7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVRl
eHRFbXBoYXNpc1N0eWxlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIENTU1Zh
bHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuaWQoKTsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25l
KQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIGlmIChDU1NWYWx1
ZSogdGV4dEVtcGhhc2lzU3R5bGUgPSBjb25zdW1lU3RyaW5nKHJhbmdlKSkKKyAgICAgICAgcmV0
dXJuIHRleHRFbXBoYXNpc1N0eWxlOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpbGwgPSBj
b25zdW1lSWRlbnQ8Q1NTVmFsdWVGaWxsZWQsIENTU1ZhbHVlT3Blbj4ocmFuZ2UpOworICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBzaGFwZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZURvdCwgQ1NTVmFs
dWVDaXJjbGUsIENTU1ZhbHVlRG91YmxlQ2lyY2xlLCBDU1NWYWx1ZVRyaWFuZ2xlLCBDU1NWYWx1
ZVNlc2FtZT4ocmFuZ2UpOworICAgIGlmICghZmlsbCkKKyAgICAgICAgZmlsbCA9IGNvbnN1bWVJ
ZGVudDxDU1NWYWx1ZUZpbGxlZCwgQ1NTVmFsdWVPcGVuPihyYW5nZSk7CisgICAgaWYgKGZpbGwg
JiYgc2hhcGUpIHsKKyAgICAgICAgQ1NTVmFsdWVMaXN0KiBwYXJzZWRWYWx1ZXMgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgIHBhcnNlZFZhbHVlcy0+YXBw
ZW5kKCpmaWxsKTsKKyAgICAgICAgcGFyc2VkVmFsdWVzLT5hcHBlbmQoKnNoYXBlKTsKKyAgICAg
ICAgcmV0dXJuIHBhcnNlZFZhbHVlczsKKyAgICB9CisgICAgaWYgKGZpbGwpCisgICAgICAgIHJl
dHVybiBmaWxsOworICAgIGlmIChzaGFwZSkKKyAgICAgICAgcmV0dXJuIHNoYXBlOworICAgIHJl
dHVybiBudWxscHRyOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVPdXRsaW5lQ29sb3Io
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkK
K3sKKyAgICAvLyBBbGxvdyB0aGUgc3BlY2lhbCBmb2N1cyBjb2xvciBldmVuIGluIEhUTUwgU3Rh
bmRhcmQgcGFyc2luZyBtb2RlLgorICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1
ZVdlYmtpdEZvY3VzUmluZ0NvbG9yKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdl
KTsKKyAgICByZXR1cm4gY29uc3VtZUNvbG9yKHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKK30KKwor
c3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lTGluZVdpZHRoKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsg
dW5pdGxlc3MpCit7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAg
IGlmIChpZCA9PSBDU1NWYWx1ZVRoaW4gfHwgaWQgPT0gQ1NTVmFsdWVNZWRpdW0gfHwgaWQgPT0g
Q1NTVmFsdWVUaGljaykKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAg
cmV0dXJuIGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25O
ZWdhdGl2ZSwgdW5pdGxlc3MpOworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1
bWVCb3JkZXJXaWR0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBj
c3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzKQoreworICAgIHJldHVybiBjb25z
dW1lTGluZVdpZHRoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7Cit9CisKK3N0YXRp
YyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZVRleHRTdHJva2VXaWR0aChDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIHJldHVy
biBjb25zdW1lTGluZVdpZHRoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrOjpG
b3JiaWQpOworfQorCitzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVDb2x1bW5SdWxl
V2lkdGgoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2Vy
TW9kZSkKK3sKKyAgICByZXR1cm4gY29uc3VtZUxpbmVXaWR0aChyYW5nZSwgY3NzUGFyc2VyTW9k
ZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKK30KKworc3RhdGljIGJvb2wgY29uc3VtZVRyYW5z
bGF0ZTNkKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlck1vZGUgY3NzUGFyc2Vy
TW9kZSwgQ1NTRnVuY3Rpb25WYWx1ZSomIHRyYW5zZm9ybVZhbHVlKQoreworICAgIHVuc2lnbmVk
IG51bWJlck9mQXJndW1lbnRzID0gMjsKKyAgICBDU1NWYWx1ZSogcGFyc2VkVmFsdWUgPSBudWxs
cHRyOworICAgIGRvIHsKKyAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lTGVuZ3RoT3JQZXJj
ZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBpZiAoIXBh
cnNlZFZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB0cmFuc2Zvcm1W
YWx1ZS0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAgICAgIGlmICghY29uc3VtZUNvbW1hSW5j
bHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
IHdoaWxlICgtLW51bWJlck9mQXJndW1lbnRzKTsKKyAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVM
ZW5ndGgoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKCFwYXJz
ZWRWYWx1ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBl
bmQoKnBhcnNlZFZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgY29u
c3VtZU51bWJlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTRnVuY3Rpb25WYWx1ZSom
IHRyYW5zZm9ybVZhbHVlLCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cykKK3sKKyAgICBkbyB7
CisgICAgICAgIENTU1ZhbHVlKiBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFs
dWVSYW5nZUFsbCk7CisgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsK
KyAgICAgICAgaWYgKC0tbnVtYmVyT2ZBcmd1bWVudHMgJiYgIWNvbnN1bWVDb21tYUluY2x1ZGlu
Z1doaXRlc3BhY2UoYXJncykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSB3aGls
ZSAobnVtYmVyT2ZBcmd1bWVudHMpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9v
bCBjb25zdW1lUGVyc3BlY3RpdmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2Vy
TW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NGdW5jdGlvblZhbHVlKiYgdHJhbnNmb3JtVmFsdWUsIGJv
b2wgdXNlTGVnYWN5UGFyc2luZykKK3sKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcGFyc2VkVmFs
dWUgPSBjb25zdW1lTGVuZ3RoKGFyZ3MsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdh
dGl2ZSk7CisgICAgaWYgKCFwYXJzZWRWYWx1ZSAmJiB1c2VMZWdhY3lQYXJzaW5nKSB7CisgICAg
ICAgIGRvdWJsZSBwZXJzcGVjdGl2ZTsKKyAgICAgICAgaWYgKCFjb25zdW1lTnVtYmVyUmF3KGFy
Z3MsIHBlcnNwZWN0aXZlKSB8fCBwZXJzcGVjdGl2ZSA8IDApCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHBhcnNlZFZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShw
ZXJzcGVjdGl2ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQaXhlbHMpOworICAgIH0K
KyAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdHJhbnNm
b3JtVmFsdWUtPmFwcGVuZCgqcGFyc2VkVmFsdWUpOworICAgIHJldHVybiB0cnVlOworfQorCitz
dGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVUcmFuc2Zvcm1WYWx1ZShDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBib29sIHVzZUxlZ2FjeVBhcnNp
bmcpCit7CisgICAgQ1NTVmFsdWVJRCBmdW5jdGlvbklkID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9u
SWQoKTsKKyAgICBpZiAoZnVuY3Rpb25JZCA9PSBDU1NWYWx1ZUludmFsaWQpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5j
dGlvbihyYW5nZSk7CisgICAgaWYgKGFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgQ1NTRnVuY3Rpb25WYWx1ZSogdHJhbnNmb3JtVmFsdWUgPSBDU1NGdW5jdGlvblZh
bHVlOjpjcmVhdGUoZnVuY3Rpb25JZCk7CisgICAgQ1NTVmFsdWUqIHBhcnNlZFZhbHVlID0gbnVs
bHB0cjsKKyAgICBzd2l0Y2ggKGZ1bmN0aW9uSWQpIHsKKyAgICBjYXNlIENTU1ZhbHVlUm90YXRl
OgorICAgIGNhc2UgQ1NTVmFsdWVSb3RhdGVYOgorICAgIGNhc2UgQ1NTVmFsdWVSb3RhdGVZOgor
ICAgIGNhc2UgQ1NTVmFsdWVSb3RhdGVaOgorICAgIGNhc2UgQ1NTVmFsdWVTa2V3WDoKKyAgICBj
YXNlIENTU1ZhbHVlU2tld1k6CisgICAgY2FzZSBDU1NWYWx1ZVNrZXc6CisgICAgICAgIHBhcnNl
ZFZhbHVlID0gY29uc3VtZUFuZ2xlKGFyZ3MpOworICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGlmIChmdW5jdGlvbklkID09IENT
U1ZhbHVlU2tldyAmJiBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKSB7Cisg
ICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAgICAg
ICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVBbmdsZShhcmdzKTsKKyAgICAgICAgICAgIGlmICgh
cGFyc2VkVmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0K
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZVNjYWxlWDoKKyAgICBjYXNlIENTU1Zh
bHVlU2NhbGVZOgorICAgIGNhc2UgQ1NTVmFsdWVTY2FsZVo6CisgICAgY2FzZSBDU1NWYWx1ZVNj
YWxlOgorICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5n
ZUFsbCk7CisgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgaWYgKGZ1bmN0aW9uSWQgPT0gQ1NTVmFsdWVTY2FsZSAmJiBjb25zdW1l
Q29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKSB7CisgICAgICAgICAgICB0cmFuc2Zvcm1W
YWx1ZS0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNv
bnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgICAgICBpZiAoIXBhcnNl
ZFZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVQZXJzcGVjdGl2ZToKKyAgICAgICAgaWYgKCFj
b25zdW1lUGVyc3BlY3RpdmUoYXJncywgY3NzUGFyc2VyTW9kZSwgdHJhbnNmb3JtVmFsdWUsIHVz
ZUxlZ2FjeVBhcnNpbmcpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQ1NTVmFsdWVUcmFuc2xhdGVYOgorICAgIGNhc2UgQ1NTVmFsdWVUcmFu
c2xhdGVZOgorICAgIGNhc2UgQ1NTVmFsdWVUcmFuc2xhdGU6CisgICAgICAgIHBhcnNlZFZhbHVl
ID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdl
QWxsKTsKKyAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICBpZiAoZnVuY3Rpb25JZCA9PSBDU1NWYWx1ZVRyYW5zbGF0ZSAmJiBjb25z
dW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKSB7CisgICAgICAgICAgICB0cmFuc2Zv
cm1WYWx1ZS0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9
IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFs
bCk7CisgICAgICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVU
cmFuc2xhdGVaOgorICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGgoYXJncywgY3Nz
UGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
VmFsdWVNYXRyaXg6CisgICAgY2FzZSBDU1NWYWx1ZU1hdHJpeDNkOgorICAgICAgICBpZiAoIWNv
bnN1bWVOdW1iZXJzKGFyZ3MsIHRyYW5zZm9ybVZhbHVlLCAoZnVuY3Rpb25JZCA9PSBDU1NWYWx1
ZU1hdHJpeDNkKSA/IDE2IDogNikpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZVNjYWxlM2Q6CisgICAgICAgIGlmICghY29uc3Vt
ZU51bWJlcnMoYXJncywgdHJhbnNmb3JtVmFsdWUsIDMpKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVSb3RhdGUzZDoKKyAgICAg
ICAgaWYgKCFjb25zdW1lTnVtYmVycyhhcmdzLCB0cmFuc2Zvcm1WYWx1ZSwgMykgfHwgIWNvbnN1
bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lQW5nbGUoYXJncyk7CisgICAgICAg
IGlmICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZVRyYW5zbGF0ZTNkOgorICAgICAgICBpZiAoIWNvbnN1
bWVUcmFuc2xhdGUzZChhcmdzLCBjc3NQYXJzZXJNb2RlLCB0cmFuc2Zvcm1WYWx1ZSkpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIGlmIChwYXJzZWRWYWx1ZSkKKyAgICAg
ICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZCgqcGFyc2VkVmFsdWUpOworICAgIGlmICghYXJncy5h
dEVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gdHJhbnNmb3JtVmFs
dWU7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVRyYW5zZm9ybShDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBib29sIHVzZUxlZ2Fj
eVBhcnNpbmcpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3Qq
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgZG8gewor
ICAgICAgICBDU1NWYWx1ZSogcGFyc2VkVHJhbnNmb3JtVmFsdWUgPSBjb25zdW1lVHJhbnNmb3Jt
VmFsdWUocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVzZUxlZ2FjeVBhcnNpbmcpOworICAgICAgICBp
ZiAoIXBhcnNlZFRyYW5zZm9ybVZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIGxpc3QtPmFwcGVuZCgqcGFyc2VkVHJhbnNmb3JtVmFsdWUpOworICAgIH0gd2hpbGUg
KCFyYW5nZS5hdEVuZCgpKTsKKworICAgIHJldHVybiBsaXN0OworfQorCit0ZW1wbGF0ZSA8Q1NT
VmFsdWVJRCBzdGFydCwgQ1NTVmFsdWVJRCBlbmQ+CitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVQ
b3NpdGlvbkxvbmdoYW5kKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2Rl
IGNzc1BhcnNlck1vZGUpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gSWRlbnRU
b2tlbikgeworICAgICAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAg
ICAgIGludCBwZXJjZW50OworICAgICAgICBpZiAoaWQgPT0gc3RhcnQpCisgICAgICAgICAgICBw
ZXJjZW50ID0gMDsKKyAgICAgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVDZW50ZXIpCisgICAg
ICAgICAgICBwZXJjZW50ID0gNTA7CisgICAgICAgIGVsc2UgaWYgKGlkID09IGVuZCkKKyAgICAg
ICAgICAgIHBlcmNlbnQgPSAxMDA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAg
ICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShwZXJjZW50LCBDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGU6OlBlcmNlbnRhZ2UpOworICAgIH0KKyAgICByZXR1cm4gY29uc3Vt
ZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7Cit9
CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVBvc2l0aW9uWChDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIHJldHVybiBjb25z
dW1lUG9zaXRpb25Mb25naGFuZDxDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KHJhbmdlLCBj
c3NQYXJzZXJNb2RlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lUG9zaXRpb25ZKENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7
CisgICAgcmV0dXJuIGNvbnN1bWVQb3NpdGlvbkxvbmdoYW5kPENTU1ZhbHVlVG9wLCBDU1NWYWx1
ZUJvdHRvbT4ocmFuZ2UsIGNzc1BhcnNlck1vZGUpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNv
bnN1bWVQYWludFN0cm9rZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1
ZU5vbmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIENTU1VSSVZh
bHVlKiB1cmwgPSBjb25zdW1lVXJsKHJhbmdlKTsKKyAgICBpZiAodXJsKSB7CisgICAgICAgIENT
U1ZhbHVlKiBwYXJzZWRWYWx1ZSA9IG51bGxwdHI7CisgICAgICAgIGlmIChyYW5nZS5wZWVrKCku
aWQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVJ
ZGVudChyYW5nZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29u
c3VtZUNvbG9yKHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKKyAgICAgICAgaWYgKHBhcnNlZFZhbHVl
KSB7CisgICAgICAgICAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIHZhbHVlcy0+YXBwZW5kKCp1cmwpOwor
ICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICAgICAgICAgIHJl
dHVybiB2YWx1ZXM7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHVybDsKKyAgICB9CisgICAg
cmV0dXJuIGNvbnN1bWVDb2xvcihyYW5nZSwgY3NzUGFyc2VyTW9kZSk7Cit9CisKK3N0YXRpYyBD
U1NWYWx1ZSogY29uc3VtZVBhaW50T3JkZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7
CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9ybWFsKQorICAgICAgICBy
ZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKworICAgIFZlY3RvcjxDU1NWYWx1ZUlELCAzPiBw
YWludFR5cGVMaXN0OworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmaWxsID0gbnVsbHB0cjsKKyAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogc3Ryb2tlID0gbnVsbHB0cjsKKyAgICBDU1NQcmltaXRpdmVW
YWx1ZSogbWFya2VycyA9IG51bGxwdHI7CisgICAgZG8geworICAgICAgICBDU1NWYWx1ZUlEIGlk
ID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUZpbGwgJiYg
IWZpbGwpCisgICAgICAgICAgICBmaWxsID0gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICAgICAg
ZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVTdHJva2UgJiYgIXN0cm9rZSkKKyAgICAgICAgICAgIHN0
cm9rZSA9IGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgICAgIGVsc2UgaWYgKGlkID09IENTU1Zh
bHVlTWFya2VycyAmJiAhbWFya2VycykKKyAgICAgICAgICAgIG1hcmtlcnMgPSBjb25zdW1lSWRl
bnQocmFuZ2UpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgcGFpbnRUeXBlTGlzdC5hcHBlbmQoaWQpOworICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVu
ZCgpKTsKKworICAgIC8vIEFmdGVyIHBhcnNpbmcgd2Ugc2VyaWFsaXplIHRoZSBwYWludC1vcmRl
ciBsaXN0LiBTaW5jZSBpdCBpcyBub3QgcG9zc2libGUgdG8KKyAgICAvLyBwb3AgYSBsYXN0IGxp
c3QgaXRlbXMgZnJvbSBDU1NWYWx1ZUxpc3Qgd2l0aG91dCBiaWdnZXIgY29zdCwgd2UgY3JlYXRl
IHRoZQorICAgIC8vIGxpc3QgYWZ0ZXIgcGFyc2luZy4KKyAgICBDU1NWYWx1ZUlEIGZpcnN0UGFp
bnRPcmRlclR5cGUgPSBwYWludFR5cGVMaXN0LmF0KDApOworICAgIENTU1ZhbHVlTGlzdCogcGFp
bnRPcmRlckxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAg
c3dpdGNoIChmaXJzdFBhaW50T3JkZXJUeXBlKSB7CisgICAgY2FzZSBDU1NWYWx1ZUZpbGw6Cisg
ICAgY2FzZSBDU1NWYWx1ZVN0cm9rZToKKyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZChm
aXJzdFBhaW50T3JkZXJUeXBlID09IENTU1ZhbHVlRmlsbCA/ICpmaWxsIDogKnN0cm9rZSk7Cisg
ICAgICAgIGlmIChwYWludFR5cGVMaXN0LnNpemUoKSA+IDEpIHsKKyAgICAgICAgICAgIGlmIChw
YWludFR5cGVMaXN0LmF0KDEpID09IENTU1ZhbHVlTWFya2VycykKKyAgICAgICAgICAgICAgICBw
YWludE9yZGVyTGlzdC0+YXBwZW5kKCptYXJrZXJzKTsKKyAgICAgICAgfQorICAgICAgICBicmVh
azsKKyAgICBjYXNlIENTU1ZhbHVlTWFya2VyczoKKyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFw
cGVuZCgqbWFya2Vycyk7CisgICAgICAgIGlmIChwYWludFR5cGVMaXN0LnNpemUoKSA+IDEpIHsK
KyAgICAgICAgICAgIGlmIChwYWludFR5cGVMaXN0LmF0KDEpID09IENTU1ZhbHVlU3Ryb2tlKQor
ICAgICAgICAgICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoKnN0cm9rZSk7CisgICAgICAg
IH0KKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfQorCisgICAgcmV0dXJuIHBhaW50T3JkZXJMaXN0OworfQorCitzdGF0aWMg
Q1NTVmFsdWUqIGNvbnN1bWVOb25lT3JVUkkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7
CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIGNvbnN1bWVVcmwocmFuZ2UpOwor
fQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVGbGV4QmFzaXMoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICAvLyBGSVhNRTog
U3VwcG9ydCBpbnRyaW5zaWMgZGltZW5zaW9ucyB0b28uCisgICAgaWYgKHJhbmdlLnBlZWsoKS5p
ZCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7
CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUs
IFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVN0
cm9rZURhc2hhcnJheShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NWYWx1
ZUlEIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBDU1NWYWx1ZUxpc3Qq
IGRhc2hlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICBkbyB7
CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBkYXNoID0gY29uc3VtZUxlbmd0aE9yUGVyY2Vu
dChyYW5nZSwgU1ZHQXR0cmlidXRlTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAg
ICAgaWYgKCFkYXNoIHx8IChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSAm
JiByYW5nZS5hdEVuZCgpKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBk
YXNoZXMtPmFwcGVuZCgqZGFzaCk7CisgICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpOworICAg
IHJldHVybiBkYXNoZXM7Cit9CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUJh
c2VsaW5lU2hpZnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgQ1NTVmFsdWVJ
RCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZUJhc2VsaW5l
IHx8IGlkID09IENTU1ZhbHVlU3ViIHx8IGlkID09IENTU1ZhbHVlU3VwZXIpCisgICAgICAgIHJl
dHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJj
ZW50KHJhbmdlLCBTVkdBdHRyaWJ1dGVNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKK30KKworc3RhdGlj
IENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lUnhPclJ5KENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAg
ICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25zdW1lTGVuZ3Ro
T3JQZXJjZW50KHJhbmdlLCBTVkdBdHRyaWJ1dGVNb2RlLCBWYWx1ZVJhbmdlQWxsLCBVbml0bGVz
c1F1aXJrOjpGb3JiaWQpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDdXJzb3IoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQs
IGJvb2wgaW5RdWlya3NNb2RlKQoreworICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IG51bGxwdHI7
CisgICAgd2hpbGUgKENTU1ZhbHVlKiBpbWFnZSA9IGNvbnN1bWVJbWFnZShyYW5nZSwgY29udGV4
dCwgQ29uc3VtZUdlbmVyYXRlZEltYWdlOjpGb3JiaWQpKSB7CisgICAgICAgIGRvdWJsZSBudW07
CisgICAgICAgIEludFBvaW50IGhvdFNwb3QoLTEsIC0xKTsKKyAgICAgICAgYm9vbCBob3RTcG90
U3BlY2lmaWVkID0gZmFsc2U7CisgICAgICAgIGlmIChjb25zdW1lTnVtYmVyUmF3KHJhbmdlLCBu
dW0pKSB7CisgICAgICAgICAgICBob3RTcG90LnNldFgoaW50KG51bSkpOworICAgICAgICAgICAg
aWYgKCFjb25zdW1lTnVtYmVyUmF3KHJhbmdlLCBudW0pKQorICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICAgICAgaG90U3BvdC5zZXRZKGludChudW0pKTsKKyAgICAgICAg
ICAgIGhvdFNwb3RTcGVjaWZpZWQgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFs
aXN0KQorICAgICAgICAgICAgbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0
ZWQoKTsKKworICAgICAgICBsaXN0LT5hcHBlbmQoKkNTU0N1cnNvckltYWdlVmFsdWU6OmNyZWF0
ZShpbWFnZSwgaG90U3BvdFNwZWNpZmllZCwgaG90U3BvdCkpOworICAgICAgICBpZiAoIWNvbnN1
bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOwor
ICAgIGlmICghcmFuZ2UuYXRFbmQoKSAmJiBjb250ZXh0LnVzZUNvdW50ZXIoKSkgeworICAgICAg
ICBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRab29tSW4pCisgICAgICAgICAgICBjb250ZXh0LnVz
ZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291bnRlcjo6UHJlZml4ZWRDdXJzb3Jab29tSW4pOworICAg
ICAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdFpvb21PdXQpCisgICAgICAgICAgICBj
b250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291bnRlcjo6UHJlZml4ZWRDdXJzb3Jab29t
T3V0KTsKKyAgICB9CisgICAgQ1NTVmFsdWUqIGN1cnNvclR5cGUgPSBudWxscHRyOworICAgIGlm
IChpZCA9PSBDU1NWYWx1ZUhhbmQpIHsKKyAgICAgICAgaWYgKCFpblF1aXJrc01vZGUpIC8vIE5v
bi1zdGFuZGFyZCBiZWhhdmlvcgorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IGN1cnNvclR5cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1
ZVBvaW50ZXIpOworICAgICAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOwor
ICAgIH0gZWxzZSBpZiAoKGlkID49IENTU1ZhbHVlQXV0byAmJiBpZCA8PSBDU1NWYWx1ZVdlYmtp
dFpvb21PdXQpIHx8IGlkID09IENTU1ZhbHVlQ29weSB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpIHsK
KyAgICAgICAgY3Vyc29yVHlwZSA9IGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKCFsaXN0KQorICAgICAg
ICByZXR1cm4gY3Vyc29yVHlwZTsKKyAgICBsaXN0LT5hcHBlbmQoKmN1cnNvclR5cGUpOworICAg
IHJldHVybiBsaXN0OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVBdHRyKENTU1BhcnNl
clRva2VuUmFuZ2UgYXJncywgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KQoreworICAgIGlmIChh
cmdzLnBlZWsoKS50eXBlKCkgIT0gSWRlbnRUb2tlbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBTdHJpbmcgYXR0ck5hbWUgPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNl
KCkudmFsdWUoKS50b1N0cmluZygpOworICAgIGlmICghYXJncy5hdEVuZCgpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChjb250ZXh0LmlzSFRNTERvY3VtZW50KCkpCisgICAg
ICAgIGF0dHJOYW1lID0gYXR0ck5hbWUubG93ZXIoKTsKKworICAgIENTU0Z1bmN0aW9uVmFsdWUq
IGF0dHJWYWx1ZSA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShDU1NWYWx1ZUF0dHIpOworICAg
IGF0dHJWYWx1ZS0+YXBwZW5kKCpDU1NDdXN0b21JZGVudFZhbHVlOjpjcmVhdGUoYXR0ck5hbWUp
KTsKKyAgICByZXR1cm4gYXR0clZhbHVlOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVD
b3VudGVyQ29udGVudChDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MsIGJvb2wgY291bnRlcnMpCit7
CisgICAgQ1NTQ3VzdG9tSWRlbnRWYWx1ZSogaWRlbnRpZmllciA9IGNvbnN1bWVDdXN0b21JZGVu
dChhcmdzKTsKKyAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgQ1NTU3RyaW5nVmFsdWUqIHNlcGFyYXRvciA9IG51bGxwdHI7CisgICAgaWYgKCFjb3Vu
dGVycykgeworICAgICAgICBzZXBhcmF0b3IgPSBDU1NTdHJpbmdWYWx1ZTo6Y3JlYXRlKFN0cmlu
ZygpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGluZ1do
aXRlc3BhY2UoYXJncykgfHwgYXJncy5wZWVrKCkudHlwZSgpICE9IFN0cmluZ1Rva2VuKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHNlcGFyYXRvciA9IENTU1N0cmluZ1Zh
bHVlOjpjcmVhdGUoYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVlKCkudG9T
dHJpbmcoKSk7CisgICAgfQorCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGxpc3RTdHlsZSA9IG51
bGxwdHI7CisgICAgaWYgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpIHsK
KyAgICAgICAgQ1NTVmFsdWVJRCBpZCA9IGFyZ3MucGVlaygpLmlkKCk7CisgICAgICAgIGlmICgo
aWQgIT0gQ1NTVmFsdWVOb25lICYmIChpZCA8IENTU1ZhbHVlRGlzYyB8fCBpZCA+IENTU1ZhbHVl
S2F0YWthbmFJcm9oYSkpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGxp
c3RTdHlsZSA9IGNvbnN1bWVJZGVudChhcmdzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBsaXN0
U3R5bGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZURlY2lt
YWwpOworICAgIH0KKworICAgIGlmICghYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICByZXR1cm4gQ1NTQ291bnRlclZhbHVlOjpjcmVhdGUoaWRlbnRpZmllciwgbGlz
dFN0eWxlLCBzZXBhcmF0b3IpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDb250ZW50
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQpCit7
CisgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlTm9ybWFsPihyYW5n
ZS5wZWVrKCkuaWQoKSkpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworCisg
ICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJh
dGVkKCk7CisKKyAgICBkbyB7CisgICAgICAgIENTU1ZhbHVlKiBwYXJzZWRWYWx1ZSA9IGNvbnN1
bWVJbWFnZShyYW5nZSwgY29udGV4dCk7CisgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCisgICAg
ICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZU9wZW5RdW90ZSwgQ1NT
VmFsdWVDbG9zZVF1b3RlLCBDU1NWYWx1ZU5vT3BlblF1b3RlLCBDU1NWYWx1ZU5vQ2xvc2VRdW90
ZT4ocmFuZ2UpOworICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAgcGFyc2Vk
VmFsdWUgPSBjb25zdW1lU3RyaW5nKHJhbmdlKTsKKyAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkg
eworICAgICAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVB
dHRyKQorICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUF0dHIoY29uc3VtZUZ1
bmN0aW9uKHJhbmdlKSwgY29udGV4dCk7CisgICAgICAgICAgICBlbHNlIGlmIChyYW5nZS5wZWVr
KCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlQ291bnRlcikKKyAgICAgICAgICAgICAgICBwYXJz
ZWRWYWx1ZSA9IGNvbnN1bWVDb3VudGVyQ29udGVudChjb25zdW1lRnVuY3Rpb24ocmFuZ2UpLCBm
YWxzZSk7CisgICAgICAgICAgICBlbHNlIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09
IENTU1ZhbHVlQ291bnRlcnMpCisgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1l
Q291bnRlckNvbnRlbnQoY29uc3VtZUZ1bmN0aW9uKHJhbmdlKSwgdHJ1ZSk7CisgICAgICAgICAg
ICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICB9CisgICAgICAgIHZhbHVlcy0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CisgICAgfSB3aGls
ZSAoIXJhbmdlLmF0RW5kKCkpOworCisgICAgcmV0dXJuIHZhbHVlczsKK30KKworc3RhdGljIENT
U1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lUGVyc3BlY3RpdmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgQ1NTUHJvcGVydHlJRCB1bnJlc29s
dmVkUHJvcGVydHkpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9u
ZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHBhcnNlZFZhbHVlID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwg
VmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKCFwYXJzZWRWYWx1ZSAmJiAodW5yZXNvbHZlZFByb3Bl
cnR5ID09IENTU1Byb3BlcnR5QWxpYXNXZWJraXRQZXJzcGVjdGl2ZSkpIHsKKyAgICAgICAgZG91
YmxlIHBlcnNwZWN0aXZlOworICAgICAgICBpZiAoIWNvbnN1bWVOdW1iZXJSYXcocmFuZ2UsIHBl
cnNwZWN0aXZlKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBwYXJzZWRW
YWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocGVyc3BlY3RpdmUsIENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZTo6UGl4ZWxzKTsKKyAgICB9CisgICAgaWYgKHBhcnNlZFZhbHVlICYm
IChwYXJzZWRWYWx1ZS0+aXNDYWxjdWxhdGVkKCkgfHwgcGFyc2VkVmFsdWUtPmdldERvdWJsZVZh
bHVlKCkgPiAwKSkKKyAgICAgICAgcmV0dXJuIHBhcnNlZFZhbHVlOworICAgIHJldHVybiBudWxs
cHRyOworfQorCitzdGF0aWMgQ1NTVmFsdWVMaXN0KiBjb25zdW1lUG9zaXRpb25MaXN0KENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7Cisg
ICAgQ1NTVmFsdWVMaXN0KiBwb3NpdGlvbnMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2Vw
YXJhdGVkKCk7CisgICAgZG8geworICAgICAgICBDU1NWYWx1ZSogcG9zaXRpb24gPSBjb25zdW1l
UG9zaXRpb24ocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7Cisg
ICAgICAgIGlmICghcG9zaXRpb24pCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcG9zaXRpb25zLT5hcHBlbmQoKnBvc2l0aW9uKTsKKyAgICB9IHdoaWxlIChjb25zdW1lQ29t
bWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSk7CisgICAgcmV0dXJuIHBvc2l0aW9uczsKK30K
Kworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lU2Nyb2xsU25hcENvb3JkaW5hdGUoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBp
ZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29u
c3VtZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZVBvc2l0aW9uTGlzdChyYW5nZSwg
Y3NzUGFyc2VyTW9kZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVNjcm9sbFNuYXBQ
b2ludHMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2Vy
TW9kZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAg
ICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICBpZiAocmFuZ2UucGVlaygpLmZ1
bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZVJlcGVhdCkgeworICAgICAgICBDU1NQYXJzZXJUb2tlblJh
bmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2UpOworICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcGFyc2VkVmFsdWUgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNzc1BhcnNl
ck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgIGlmIChhcmdzLmF0RW5kKCkg
JiYgcGFyc2VkVmFsdWUgJiYgKHBhcnNlZFZhbHVlLT5pc0NhbGN1bGF0ZWQoKSB8fCBwYXJzZWRW
YWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSA+IDApKSB7CisgICAgICAgICAgICBDU1NGdW5jdGlvblZh
bHVlKiByZXN1bHQgPSBDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUoQ1NTVmFsdWVSZXBlYXQpOwor
ICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUJvcmRlclJhZGl1c0Nvcm5lcihDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIENTU1Zh
bHVlKiBwYXJzZWRWYWx1ZTEgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJz
ZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgIGlmICghcGFyc2VkVmFsdWUxKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogcGFyc2VkVmFsdWUyID0gY29u
c3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5l
Z2F0aXZlKTsKKyAgICBpZiAoIXBhcnNlZFZhbHVlMikKKyAgICAgICAgcGFyc2VkVmFsdWUyID0g
cGFyc2VkVmFsdWUxOworICAgIHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShwYXJzZWRWYWx1
ZTEsIHBhcnNlZFZhbHVlMiwgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVzKTsKK30K
Kworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lVmVydGljYWxBbGlnbihDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVJZGVudFJhbmdlKHJhbmdl
LCBDU1NWYWx1ZUJhc2VsaW5lLCBDU1NWYWx1ZVdlYmtpdEJhc2VsaW5lTWlkZGxlKTsKKyAgICBp
ZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGhPclBl
cmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwsIFVuaXRsZXNzUXVpcms6
OkFsbG93KTsKKyAgICByZXR1cm4gcGFyc2VkVmFsdWU7Cit9CisKK3N0YXRpYyBDU1NQcmltaXRp
dmVWYWx1ZSogY29uc3VtZVNoYXBlUmFkaXVzKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1Zh
bHVlQ2xvc2VzdFNpZGUsIENTU1ZhbHVlRmFydGhlc3RTaWRlPihhcmdzLnBlZWsoKS5pZCgpKSkK
KyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChhcmdzKTsKKyAgICByZXR1cm4gY29uc3VtZUxl
bmd0aE9yUGVyY2VudChhcmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUp
OworfQorCitzdGF0aWMgQ1NTQmFzaWNTaGFwZUNpcmNsZVZhbHVlKiBjb25zdW1lQmFzaWNTaGFw
ZUNpcmNsZShDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0
JiBjb250ZXh0KQoreworICAgIC8vIHNwZWM6IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mt
c2hhcGVzLyNzdXBwb3J0ZWQtYmFzaWMtc2hhcGVzCisgICAgLy8gY2lyY2xlKCBbPHNoYXBlLXJh
ZGl1cz5dPyBbYXQgPHBvc2l0aW9uPl0/ICkKKyAgICBDU1NCYXNpY1NoYXBlQ2lyY2xlVmFsdWUq
IHNoYXBlID0gQ1NTQmFzaWNTaGFwZUNpcmNsZVZhbHVlOjpjcmVhdGUoKTsKKyAgICBpZiAoQ1NT
UHJpbWl0aXZlVmFsdWUqIHJhZGl1cyA9IGNvbnN1bWVTaGFwZVJhZGl1cyhhcmdzLCBjb250ZXh0
Lm1vZGUoKSkpCisgICAgICAgIHNoYXBlLT5zZXRSYWRpdXMocmFkaXVzKTsKKyAgICBpZiAoY29u
c3VtZUlkZW50PENTU1ZhbHVlQXQ+KGFyZ3MpKSB7CisgICAgICAgIENTU1ZhbHVlKiBjZW50ZXJY
ID0gbnVsbHB0cjsKKyAgICAgICAgQ1NTVmFsdWUqIGNlbnRlclkgPSBudWxscHRyOworICAgICAg
ICBpZiAoIWNvbnN1bWVQb3NpdGlvbihhcmdzLCBjb250ZXh0Lm1vZGUoKSwgVW5pdGxlc3NRdWly
azo6Rm9yYmlkLCBjZW50ZXJYLCBjZW50ZXJZKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICBzaGFwZS0+c2V0Q2VudGVyWChjZW50ZXJYKTsKKyAgICAgICAgc2hhcGUtPnNl
dENlbnRlclkoY2VudGVyWSk7CisgICAgfQorICAgIHJldHVybiBzaGFwZTsKK30KKworc3RhdGlj
IENTU0Jhc2ljU2hhcGVFbGxpcHNlVmFsdWUqIGNvbnN1bWVCYXNpY1NoYXBlRWxsaXBzZShDU1NQ
YXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQor
eworICAgIC8vIHNwZWM6IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtc2hhcGVzLyNzdXBw
b3J0ZWQtYmFzaWMtc2hhcGVzCisgICAgLy8gZWxsaXBzZSggWzxzaGFwZS1yYWRpdXM+ezJ9XT8g
W2F0IDxwb3NpdGlvbj5dPyApCisgICAgQ1NTQmFzaWNTaGFwZUVsbGlwc2VWYWx1ZSogc2hhcGUg
PSBDU1NCYXNpY1NoYXBlRWxsaXBzZVZhbHVlOjpjcmVhdGUoKTsKKyAgICBpZiAoQ1NTUHJpbWl0
aXZlVmFsdWUqIHJhZGl1c1ggPSBjb25zdW1lU2hhcGVSYWRpdXMoYXJncywgY29udGV4dC5tb2Rl
KCkpKSB7CisgICAgICAgIHNoYXBlLT5zZXRSYWRpdXNYKHJhZGl1c1gpOworICAgICAgICBpZiAo
Q1NTUHJpbWl0aXZlVmFsdWUqIHJhZGl1c1kgPSBjb25zdW1lU2hhcGVSYWRpdXMoYXJncywgY29u
dGV4dC5tb2RlKCkpKQorICAgICAgICAgICAgc2hhcGUtPnNldFJhZGl1c1kocmFkaXVzWSk7Cisg
ICAgfQorICAgIGlmIChjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBdD4oYXJncykpIHsKKyAgICAgICAg
Q1NTVmFsdWUqIGNlbnRlclggPSBudWxscHRyOworICAgICAgICBDU1NWYWx1ZSogY2VudGVyWSA9
IG51bGxwdHI7CisgICAgICAgIGlmICghY29uc3VtZVBvc2l0aW9uKGFyZ3MsIGNvbnRleHQubW9k
ZSgpLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQsIGNlbnRlclgsIGNlbnRlclkpKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHNoYXBlLT5zZXRDZW50ZXJYKGNlbnRlclgpOwor
ICAgICAgICBzaGFwZS0+c2V0Q2VudGVyWShjZW50ZXJZKTsKKyAgICB9CisgICAgcmV0dXJuIHNo
YXBlOworfQorCitzdGF0aWMgQ1NTQmFzaWNTaGFwZVBvbHlnb25WYWx1ZSogY29uc3VtZUJhc2lj
U2hhcGVQb2x5Z29uKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNv
bnRleHQmIGNvbnRleHQpCit7CisgICAgQ1NTQmFzaWNTaGFwZVBvbHlnb25WYWx1ZSogc2hhcGUg
PSBDU1NCYXNpY1NoYXBlUG9seWdvblZhbHVlOjpjcmVhdGUoKTsKKyAgICBpZiAoaWRlbnRNYXRj
aGVzPENTU1ZhbHVlRXZlbm9kZCwgQ1NTVmFsdWVOb256ZXJvPihhcmdzLnBlZWsoKS5pZCgpKSkg
eworICAgICAgICBzaGFwZS0+c2V0V2luZFJ1bGUoYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVz
cGFjZSgpLmlkKCkgPT0gQ1NTVmFsdWVFdmVub2RkID8gUlVMRV9FVkVOT0REIDogUlVMRV9OT05a
RVJPKTsKKyAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3Mp
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgZG8geworICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogeExlbmd0aCA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJn
cywgY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBpZiAoIXhMZW5ndGgp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHlMZW5ndGggPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBW
YWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgaWYgKCF5TGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIHNoYXBlLT5hcHBlbmRQb2ludCh4TGVuZ3RoLCB5TGVuZ3RoKTsK
KyAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKTsKKyAg
ICByZXR1cm4gc2hhcGU7Cit9CisKK3N0YXRpYyB2b2lkIGNvbXBsZXRlNFNpZGVzKENTU1ByaW1p
dGl2ZVZhbHVlKiBzaWRlWzRdKQoreworICAgIGlmIChzaWRlWzNdKQorICAgICAgICByZXR1cm47
CisgICAgaWYgKCFzaWRlWzJdKSB7CisgICAgICAgIGlmICghc2lkZVsxXSkKKyAgICAgICAgICAg
IHNpZGVbMV0gPSBzaWRlWzBdOworICAgICAgICBzaWRlWzJdID0gc2lkZVswXTsKKyAgICB9Cisg
ICAgc2lkZVszXSA9IHNpZGVbMV07Cit9CisKK3N0YXRpYyBib29sIGNvbnN1bWVSYWRpaShDU1NQ
cmltaXRpdmVWYWx1ZSogaG9yaXpvbnRhbFJhZGlpWzRdLCBDU1NQcmltaXRpdmVWYWx1ZSogdmVy
dGljYWxSYWRpaVs0XSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUg
Y3NzUGFyc2VyTW9kZSwgYm9vbCB1c2VMZWdhY3lQYXJzaW5nKQoreworICAgIHVuc2lnbmVkIGkg
PSAwOworICAgIGZvciAoOyBpIDwgNCAmJiAhcmFuZ2UuYXRFbmQoKSAmJiByYW5nZS5wZWVrKCku
dHlwZSgpICE9IERlbGltaXRlclRva2VuOyArK2kpIHsKKyAgICAgICAgaG9yaXpvbnRhbFJhZGlp
W2ldID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVS
YW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgaWYgKCFob3Jpem9udGFsUmFkaWlbaV0pCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmICghaG9yaXpvbnRhbFJhZGlpWzBd
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHJhbmdlLmF0RW5kKCkpIHsKKyAgICAg
ICAgLy8gTGVnYWN5IHN5bnRheDogLXdlYmtpdC1ib3JkZXItcmFkaXVzOiBsMSBsMjsgaXMgZXF1
aXZhbGVudCB0byBib3JkZXItcmFkaXVzOiBsMSAvIGwyOworICAgICAgICBpZiAodXNlTGVnYWN5
UGFyc2luZyAmJiBpID09IDIpIHsKKyAgICAgICAgICAgIHZlcnRpY2FsUmFkaWlbMF0gPSBob3Jp
em9udGFsUmFkaWlbMV07CisgICAgICAgICAgICBob3Jpem9udGFsUmFkaWlbMV0gPSBudWxscHRy
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29tcGxldGU0U2lkZXMoaG9yaXpvbnRh
bFJhZGlpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCA0OyArK2kpCisg
ICAgICAgICAgICAgICAgdmVydGljYWxSYWRpaVtpXSA9IGhvcml6b250YWxSYWRpaVtpXTsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAg
aWYgKCFjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IDQgJiYgIXJhbmdlLmF0RW5k
KCk7ICsraSkgeworICAgICAgICAgICAgdmVydGljYWxSYWRpaVtpXSA9IGNvbnN1bWVMZW5ndGhP
clBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7Cisg
ICAgICAgICAgICBpZiAoIXZlcnRpY2FsUmFkaWlbaV0pCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmICghdmVydGljYWxSYWRpaVswXSB8fCAhcmFu
Z2UuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgY29tcGxl
dGU0U2lkZXMoaG9yaXpvbnRhbFJhZGlpKTsKKyAgICBjb21wbGV0ZTRTaWRlcyh2ZXJ0aWNhbFJh
ZGlpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIENTU0Jhc2ljU2hhcGVJbnNldFZh
bHVlKiBjb25zdW1lQmFzaWNTaGFwZUluc2V0KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNv
bnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ1NTQmFzaWNTaGFwZUluc2V0
VmFsdWUqIHNoYXBlID0gQ1NTQmFzaWNTaGFwZUluc2V0VmFsdWU6OmNyZWF0ZSgpOworICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiB0b3AgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRl
eHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBpZiAoIXRvcCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHJpZ2h0ID0gY29uc3VtZUxlbmd0aE9y
UGVyY2VudChhcmdzLCBjb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZUFsbCk7CisgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIGJvdHRvbSA9IG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGxl
ZnQgPSBudWxscHRyOworICAgIGlmIChyaWdodCkgeworICAgICAgICBib3R0b20gPSBjb25zdW1l
TGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxsKTsKKyAg
ICAgICAgaWYgKGJvdHRvbSkKKyAgICAgICAgICAgIGxlZnQgPSBjb25zdW1lTGVuZ3RoT3JQZXJj
ZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICB9CisgICAgaWYg
KGxlZnQpCisgICAgICAgIHNoYXBlLT51cGRhdGVTaGFwZVNpemU0VmFsdWVzKHRvcCwgcmlnaHQs
IGJvdHRvbSwgbGVmdCk7CisgICAgZWxzZSBpZiAoYm90dG9tKQorICAgICAgICBzaGFwZS0+dXBk
YXRlU2hhcGVTaXplM1ZhbHVlcyh0b3AsIHJpZ2h0LCBib3R0b20pOworICAgIGVsc2UgaWYgKHJp
Z2h0KQorICAgICAgICBzaGFwZS0+dXBkYXRlU2hhcGVTaXplMlZhbHVlcyh0b3AsIHJpZ2h0KTsK
KyAgICBlbHNlCisgICAgICAgIHNoYXBlLT51cGRhdGVTaGFwZVNpemUxVmFsdWUodG9wKTsKKwor
ICAgIGlmIChjb25zdW1lSWRlbnQ8Q1NTVmFsdWVSb3VuZD4oYXJncykpIHsKKyAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIGhvcml6b250YWxSYWRpaVs0XSA9IHsgMCB9OworICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogdmVydGljYWxSYWRpaVs0XSA9IHsgMCB9OworICAgICAgICBpZiAoIWNv
bnN1bWVSYWRpaShob3Jpem9udGFsUmFkaWksIHZlcnRpY2FsUmFkaWksIGFyZ3MsIGNvbnRleHQu
bW9kZSgpLCBmYWxzZSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgc2hh
cGUtPnNldFRvcExlZnRSYWRpdXMoQ1NTVmFsdWVQYWlyOjpjcmVhdGUoaG9yaXpvbnRhbFJhZGlp
WzBdLCB2ZXJ0aWNhbFJhZGlpWzBdLCBDU1NWYWx1ZVBhaXI6OkRyb3BJZGVudGljYWxWYWx1ZXMp
KTsKKyAgICAgICAgc2hhcGUtPnNldFRvcFJpZ2h0UmFkaXVzKENTU1ZhbHVlUGFpcjo6Y3JlYXRl
KGhvcml6b250YWxSYWRpaVsxXSwgdmVydGljYWxSYWRpaVsxXSwgQ1NTVmFsdWVQYWlyOjpEcm9w
SWRlbnRpY2FsVmFsdWVzKSk7CisgICAgICAgIHNoYXBlLT5zZXRCb3R0b21SaWdodFJhZGl1cyhD
U1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsUmFkaWlbMl0sIHZlcnRpY2FsUmFkaWlbMl0s
IENTU1ZhbHVlUGFpcjo6RHJvcElkZW50aWNhbFZhbHVlcykpOworICAgICAgICBzaGFwZS0+c2V0
Qm90dG9tTGVmdFJhZGl1cyhDU1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsUmFkaWlbM10s
IHZlcnRpY2FsUmFkaWlbM10sIENTU1ZhbHVlUGFpcjo6RHJvcElkZW50aWNhbFZhbHVlcykpOwor
ICAgIH0KKyAgICByZXR1cm4gc2hhcGU7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUJh
c2ljU2hhcGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRl
eHQmIGNvbnRleHQpCit7CisgICAgQ1NTVmFsdWUqIHNoYXBlID0gbnVsbHB0cjsKKyAgICBpZiAo
cmFuZ2UucGVlaygpLnR5cGUoKSAhPSBGdW5jdGlvblRva2VuKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKTsKKyAg
ICBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlQ29weSA9IHJhbmdlOworICAgIENTU1BhcnNlclRv
a2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZUNvcHkpOworICAgIGlmIChpZCA9
PSBDU1NWYWx1ZUNpcmNsZSkKKyAgICAgICAgc2hhcGUgPSBjb25zdW1lQmFzaWNTaGFwZUNpcmNs
ZShhcmdzLCBjb250ZXh0KTsKKyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZUVsbGlwc2UpCisg
ICAgICAgIHNoYXBlID0gY29uc3VtZUJhc2ljU2hhcGVFbGxpcHNlKGFyZ3MsIGNvbnRleHQpOwor
ICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlUG9seWdvbikKKyAgICAgICAgc2hhcGUgPSBjb25z
dW1lQmFzaWNTaGFwZVBvbHlnb24oYXJncywgY29udGV4dCk7CisgICAgZWxzZSBpZiAoaWQgPT0g
Q1NTVmFsdWVJbnNldCkKKyAgICAgICAgc2hhcGUgPSBjb25zdW1lQmFzaWNTaGFwZUluc2V0KGFy
Z3MsIGNvbnRleHQpOworICAgIGlmICghc2hhcGUgfHwgIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmFuZ2UgPSByYW5nZUNvcHk7CisgICAgcmV0dXJuIHNoYXBl
OworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVXZWJraXRDbGlwUGF0aChDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAg
ICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4g
Y29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICBpZiAoQ1NTVVJJVmFsdWUqIHVybCA9IGNvbnN1bWVV
cmwocmFuZ2UpKQorICAgICAgICByZXR1cm4gdXJsOworICAgIHJldHVybiBjb25zdW1lQmFzaWNT
aGFwZShyYW5nZSwgY29udGV4dCk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVNoYXBl
T3V0c2lkZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4
dCYgY29udGV4dCkKK3sKKyAgICBpZiAoQ1NTVmFsdWUqIGltYWdlVmFsdWUgPSBjb25zdW1lSW1h
Z2VPck5vbmUocmFuZ2UsIGNvbnRleHQpKQorICAgICAgICByZXR1cm4gaW1hZ2VWYWx1ZTsKKyAg
ICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVk
KCk7CisgICAgaWYgKENTU1ZhbHVlKiBib3hWYWx1ZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUNv
bnRlbnRCb3gsIENTU1ZhbHVlUGFkZGluZ0JveCwgQ1NTVmFsdWVCb3JkZXJCb3gsIENTU1ZhbHVl
TWFyZ2luQm94PihyYW5nZSkpCisgICAgICAgIGxpc3QtPmFwcGVuZCgqYm94VmFsdWUpOworICAg
IGlmIChDU1NWYWx1ZSogc2hhcGVWYWx1ZSA9IGNvbnN1bWVCYXNpY1NoYXBlKHJhbmdlLCBjb250
ZXh0KSkgeworICAgICAgICBsaXN0LT5hcHBlbmQoKnNoYXBlVmFsdWUpOworICAgICAgICBpZiAo
bGlzdC0+bGVuZ3RoKCkgPCAyKSB7CisgICAgICAgICAgICBpZiAoQ1NTVmFsdWUqIGJveFZhbHVl
ID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQ29udGVudEJveCwgQ1NTVmFsdWVQYWRkaW5nQm94LCBD
U1NWYWx1ZUJvcmRlckJveCwgQ1NTVmFsdWVNYXJnaW5Cb3g+KHJhbmdlKSkKKyAgICAgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoKmJveFZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAo
IWxpc3QtPmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbGlz
dDsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQ29udGVudERpc3RyaWJ1dGlvbk92ZXJm
bG93UG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKGlkZW50
TWF0Y2hlczxDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVCYXNlbGluZSwgQ1NTVmFsdWVMYXN0QmFz
ZWxpbmU+KHJhbmdlLnBlZWsoKS5pZCgpKSkKKyAgICAgICAgcmV0dXJuIENTU0NvbnRlbnREaXN0
cmlidXRpb25WYWx1ZTo6Y3JlYXRlKENTU1ZhbHVlSW52YWxpZCwgcmFuZ2UuY29uc3VtZUluY2x1
ZGluZ1doaXRlc3BhY2UoKS5pZCgpLCBDU1NWYWx1ZUludmFsaWQpOworCisgICAgQ1NTVmFsdWVJ
RCBkaXN0cmlidXRpb24gPSBDU1NWYWx1ZUludmFsaWQ7CisgICAgQ1NTVmFsdWVJRCBwb3NpdGlv
biA9IENTU1ZhbHVlSW52YWxpZDsKKyAgICBDU1NWYWx1ZUlEIG92ZXJmbG93ID0gQ1NTVmFsdWVJ
bnZhbGlkOworICAgIGRvIHsKKyAgICAgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5p
ZCgpOworICAgICAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlU3BhY2VCZXR3ZWVuLCBDU1NW
YWx1ZVNwYWNlQXJvdW5kLCBDU1NWYWx1ZVNwYWNlRXZlbmx5LCBDU1NWYWx1ZVN0cmV0Y2g+KGlk
KSkgeworICAgICAgICAgICAgaWYgKGRpc3RyaWJ1dGlvbiAhPSBDU1NWYWx1ZUludmFsaWQpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBkaXN0cmlidXRpb24g
PSBpZDsKKyAgICAgICAgfSBlbHNlIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVTdGFydCwgQ1NT
VmFsdWVFbmQsIENTU1ZhbHVlQ2VudGVyLCBDU1NWYWx1ZUZsZXhTdGFydCwgQ1NTVmFsdWVGbGV4
RW5kLCBDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KGlkKSkgeworICAgICAgICAgICAgaWYg
KHBvc2l0aW9uICE9IENTU1ZhbHVlSW52YWxpZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgICAgIHBvc2l0aW9uID0gaWQ7CisgICAgICAgIH0gZWxzZSBpZiAoaWRl
bnRNYXRjaGVzPENTU1ZhbHVlVW5zYWZlLCBDU1NWYWx1ZVNhZmU+KGlkKSkgeworICAgICAgICAg
ICAgaWYgKG92ZXJmbG93ICE9IENTU1ZhbHVlSW52YWxpZCkKKyAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIG92ZXJmbG93ID0gaWQ7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICByYW5nZS5j
b25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgp
KTsKKworICAgIC8vIFRoZSBncmFtbWFyIHN0YXRlcyB0aGF0IHdlIHNob3VsZCBoYXZlIGF0IGxl
YXN0IDxjb250ZW50LWRpc3RyaWJ1dGlvbj4gb3IgPGNvbnRlbnQtcG9zaXRpb24+LgorICAgIGlm
IChwb3NpdGlvbiA9PSBDU1NWYWx1ZUludmFsaWQgJiYgZGlzdHJpYnV0aW9uID09IENTU1ZhbHVl
SW52YWxpZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBUaGUgZ3JhbW1hciBz
dGF0ZXMgdGhhdCA8b3ZlcmZsb3ctcG9zaXRpb24+IG11c3QgYmUgYXNzb2NpYXRlZCB0byA8Y29u
dGVudC1wb3NpdGlvbj4uCisgICAgaWYgKG92ZXJmbG93ICE9IENTU1ZhbHVlSW52YWxpZCAmJiBw
b3NpdGlvbiA9PSBDU1NWYWx1ZUludmFsaWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgcmV0dXJuIENTU0NvbnRlbnREaXN0cmlidXRpb25WYWx1ZTo6Y3JlYXRlKGRpc3RyaWJ1dGlv
biwgcG9zaXRpb24sIG92ZXJmbG93KTsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBj
b25zdW1lQm9yZGVySW1hZ2VSZXBlYXRLZXl3b3JkKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
KQoreworICAgIHJldHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVTdHJldGNoLCBDU1NWYWx1ZVJl
cGVhdCwgQ1NTVmFsdWVTcGFjZSwgQ1NTVmFsdWVSb3VuZD4ocmFuZ2UpOworfQorCitzdGF0aWMg
Q1NTVmFsdWUqIGNvbnN1bWVCb3JkZXJJbWFnZVJlcGVhdChDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSkKK3sKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogaG9yaXpvbnRhbCA9IGNvbnN1bWVCb3Jk
ZXJJbWFnZVJlcGVhdEtleXdvcmQocmFuZ2UpOworICAgIGlmICghaG9yaXpvbnRhbCkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZlcnRpY2FsID0gY29u
c3VtZUJvcmRlckltYWdlUmVwZWF0S2V5d29yZChyYW5nZSk7CisgICAgaWYgKCF2ZXJ0aWNhbCkK
KyAgICAgICAgdmVydGljYWwgPSBob3Jpem9udGFsOworICAgIHJldHVybiBDU1NWYWx1ZVBhaXI6
OmNyZWF0ZShob3Jpem9udGFsLCB2ZXJ0aWNhbCwgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRpY2Fs
VmFsdWVzKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQm9yZGVySW1hZ2VTbGljZShD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAg
ICBib29sIGZpbGwgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVGaWxsPihyYW5nZSk7CisgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHNsaWNlc1s0XSA9IHsgMCB9OworCisgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IDQ7ICsraW5kZXgpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHZhbHVlID0gY29uc3VtZVBlcmNlbnQocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7Cisg
ICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICB2YWx1ZSA9IGNvbnN1bWVOdW1iZXIocmFu
Z2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgc2xpY2VzW2luZGV4XSA9IHZhbHVlOworICAgIH0KKyAgICBp
ZiAoIXNsaWNlc1swXSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKGNvbnN1bWVJ
ZGVudDxDU1NWYWx1ZUZpbGw+KHJhbmdlKSkgeworICAgICAgICBpZiAoZmlsbCkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICBmaWxsID0gdHJ1ZTsKKyAgICB9CisgICAgY29t
cGxldGU0U2lkZXMoc2xpY2VzKTsKKyAgICAvLyBGSVhNRTogRm9yIGJhY2t3YXJkcyBjb21wYXRp
YmlsaXR5LCAtd2Via2l0LWJvcmRlci1pbWFnZSwgLXdlYmtpdC1tYXNrLWJveC1pbWFnZSBhbmQg
LXdlYmtpdC1ib3gtcmVmbGVjdCBoYXZlIHRvIGRvIGEgZmlsbCBieSBkZWZhdWx0LgorICAgIC8v
IEZJWE1FOiBXaGF0IGRvIHdlIGRvIHdpdGggLXdlYmtpdC1ib3gtcmVmbGVjdCBhbmQgLXdlYmtp
dC1tYXNrLWJveC1pbWFnZT8gUHJvYmFibHkganVzdCBoYXZlIHRvIGxlYXZlIHRoZW0gZmlsbGlu
Zy4uLgorICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlIHx8
IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlIHx8IHByb3BlcnR5ID09
IENTU1Byb3BlcnR5V2Via2l0Qm94UmVmbGVjdCkKKyAgICAgICAgZmlsbCA9IHRydWU7CisgICAg
cmV0dXJuIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZTo6Y3JlYXRlKENTU1F1YWRWYWx1ZTo6Y3Jl
YXRlKHNsaWNlc1swXSwgc2xpY2VzWzFdLCBzbGljZXNbMl0sIHNsaWNlc1szXSwgQ1NTUXVhZFZh
bHVlOjpTZXJpYWxpemVBc1F1YWQpLCBmaWxsKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25z
dW1lQm9yZGVySW1hZ2VPdXRzZXQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIG91dHNldHNbNF0gPSB7IDAgfTsKKworICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiB2YWx1ZSA9IG51bGxwdHI7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRl
eCA8IDQ7ICsraW5kZXgpIHsKKyAgICAgICAgdmFsdWUgPSBjb25zdW1lTnVtYmVyKHJhbmdlLCBW
YWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAg
dmFsdWUgPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBIVE1MU3RhbmRhcmRNb2RlLCBWYWx1ZVJhbmdl
Tm9uTmVnYXRpdmUpOworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIG91dHNldHNbaW5kZXhdID0gdmFsdWU7CisgICAgfQorICAgIGlmICghb3V0c2V0c1sw
XSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgY29tcGxldGU0U2lkZXMob3V0c2V0cyk7
CisgICAgcmV0dXJuIENTU1F1YWRWYWx1ZTo6Y3JlYXRlKG91dHNldHNbMF0sIG91dHNldHNbMV0s
IG91dHNldHNbMl0sIG91dHNldHNbM10sIENTU1F1YWRWYWx1ZTo6U2VyaWFsaXplQXNRdWFkKTsK
K30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQm9yZGVySW1hZ2VXaWR0aChDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogd2lkdGhzWzRdID0g
eyAwIH07CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUgPSBudWxscHRyOworICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCA0OyArK2luZGV4KSB7CisgICAgICAgIHZhbHVl
ID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAg
aWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHZhbHVlID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChy
YW5nZSwgSFRNTFN0YW5kYXJkTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlLCBVbml0bGVzc1F1
aXJrOjpGb3JiaWQpOworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgdmFsdWUgPSBj
b25zdW1lSWRlbnQ8Q1NTVmFsdWVBdXRvPihyYW5nZSk7CisgICAgICAgIGlmICghdmFsdWUpCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgd2lkdGhzW2luZGV4XSA9IHZhbHVlOworICAgIH0K
KyAgICBpZiAoIXdpZHRoc1swXSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgY29tcGxl
dGU0U2lkZXMod2lkdGhzKTsKKyAgICByZXR1cm4gQ1NTUXVhZFZhbHVlOjpjcmVhdGUod2lkdGhz
WzBdLCB3aWR0aHNbMV0sIHdpZHRoc1syXSwgd2lkdGhzWzNdLCBDU1NRdWFkVmFsdWU6OlNlcmlh
bGl6ZUFzUXVhZCk7Cit9CisKK3N0YXRpYyBib29sIGNvbnN1bWVCb3JkZXJJbWFnZUNvbXBvbmVu
dHMoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNv
bnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIENTU1ZhbHVlKiYgc291cmNlLAorICAgIENT
U1ZhbHVlKiYgc2xpY2UsIENTU1ZhbHVlKiYgd2lkdGgsIENTU1ZhbHVlKiYgb3V0c2V0LCBDU1NW
YWx1ZSomIHJlcGVhdCkKK3sKKyAgICBkbyB7CisgICAgICAgIGlmICghc291cmNlKSB7CisgICAg
ICAgICAgICBzb3VyY2UgPSBjb25zdW1lSW1hZ2VPck5vbmUocmFuZ2UsIGNvbnRleHQpOworICAg
ICAgICAgICAgaWYgKHNvdXJjZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQorICAgICAgICBpZiAoIXJlcGVhdCkgeworICAgICAgICAgICAgcmVwZWF0ID0gY29uc3VtZUJv
cmRlckltYWdlUmVwZWF0KHJhbmdlKTsKKyAgICAgICAgICAgIGlmIChyZXBlYXQpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFzbGljZSkgeworICAg
ICAgICAgICAgc2xpY2UgPSBjb25zdW1lQm9yZGVySW1hZ2VTbGljZShwcm9wZXJ0eSwgcmFuZ2Up
OworICAgICAgICAgICAgaWYgKHNsaWNlKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKCF3aWR0
aCAmJiAhb3V0c2V0KTsKKyAgICAgICAgICAgICAgICBpZiAoY29uc3VtZVNsYXNoSW5jbHVkaW5n
V2hpdGVzcGFjZShyYW5nZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBjb25zdW1l
Qm9yZGVySW1hZ2VXaWR0aChyYW5nZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdW1l
U2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0c2V0ID0gY29uc3VtZUJvcmRlckltYWdlT3V0c2V0KHJhbmdlKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghb3V0c2V0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghd2lkdGgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfSB3aGlsZSAoIXJhbmdlLmF0RW5k
KCkpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVXZWJr
aXRCb3JkZXJJbWFnZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBDU1NWYWx1
ZSogc291cmNlID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogc2xpY2UgPSBudWxscHRyOworICAg
IENTU1ZhbHVlKiB3aWR0aCA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIG91dHNldCA9IG51bGxw
dHI7CisgICAgQ1NTVmFsdWUqIHJlcGVhdCA9IG51bGxwdHI7CisgICAgaWYgKGNvbnN1bWVCb3Jk
ZXJJbWFnZUNvbXBvbmVudHMocHJvcGVydHksIHJhbmdlLCBjb250ZXh0LCBzb3VyY2UsIHNsaWNl
LCB3aWR0aCwgb3V0c2V0LCByZXBlYXQpKQorICAgICAgICByZXR1cm4gY3JlYXRlQm9yZGVySW1h
Z2VWYWx1ZShzb3VyY2UsIHNsaWNlLCB3aWR0aCwgb3V0c2V0LCByZXBlYXQpOworICAgIHJldHVy
biBudWxscHRyOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVSZWZsZWN0KENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQorewor
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBkaXJlY3Rpb24gPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVB
Ym92ZSwgQ1NTVmFsdWVCZWxvdywgQ1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0PihyYW5nZSk7
CisgICAgaWYgKCFkaXJlY3Rpb24pCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIG9mZnNldCA9IG51bGxwdHI7CisgICAgaWYgKHJhbmdlLmF0RW5kKCkp
IHsKKyAgICAgICAgb2Zmc2V0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBpeGVscyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgb2Zm
c2V0ID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY29udGV4dC5tb2RlKCksIFZhbHVl
UmFuZ2VBbGwsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CisgICAgICAgIGlmICghb2Zmc2V0KQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgQ1NTVmFsdWUqIG1hc2sg
PSBudWxscHRyOworICAgIGlmICghcmFuZ2UuYXRFbmQoKSkgeworICAgICAgICBtYXNrID0gY29u
c3VtZVdlYmtpdEJvcmRlckltYWdlKENTU1Byb3BlcnR5V2Via2l0Qm94UmVmbGVjdCwgcmFuZ2Us
IGNvbnRleHQpOworICAgICAgICBpZiAoIW1hc2spCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisgICAgcmV0dXJuIENTU1JlZmxlY3RWYWx1ZTo6Y3JlYXRlKGRpcmVjdGlvbiwg
b2Zmc2V0LCBtYXNrKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lRm9udFNpemVBZGp1
c3QoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5p
ZCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7
CisgICAgcmV0dXJuIGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7
Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUltYWdlT3JpZW50YXRpb24oQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1Zh
bHVlRnJvbUltYWdlKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICBp
ZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBOdW1iZXJUb2tlbikgeworICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogYW5nbGUgPSBjb25zdW1lQW5nbGUocmFuZ2UpOworICAgICAgICBpZiAoYW5n
bGUgJiYgYW5nbGUtPmdldERvdWJsZVZhbHVlKCkgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBh
bmdsZTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSog
Y29uc3VtZUJhY2tncm91bmRCbGVuZE1vZGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7
CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgIGlmIChpZCA9PSBD
U1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZU92ZXJsYXkgfHwgKGlkID49IENTU1ZhbHVl
TXVsdGlwbHkgJiYgaWQgPD0gQ1NTVmFsdWVMdW1pbm9zaXR5KSkKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NW
YWx1ZSogY29uc3VtZUJhY2tncm91bmRBdHRhY2htZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlKQoreworICAgIHJldHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVTY3JvbGwsIENTU1ZhbHVl
Rml4ZWQsIENTU1ZhbHVlTG9jYWw+KHJhbmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25z
dW1lQmFja2dyb3VuZEJveChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICByZXR1
cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlQm9yZGVyQm94LCBDU1NWYWx1ZVBhZGRpbmdCb3gsIENT
U1ZhbHVlQ29udGVudEJveD4ocmFuZ2UpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVC
YWNrZ3JvdW5kQ29tcG9zaXRlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIHJl
dHVybiBjb25zdW1lSWRlbnRSYW5nZShyYW5nZSwgQ1NTVmFsdWVDbGVhciwgQ1NTVmFsdWVQbHVz
TGlnaHRlcik7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZU1hc2tTb3VyY2VUeXBlKENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpjc3NNYXNrU291cmNlVHlwZUVuYWJsZWQoKSk7CisgICAgcmV0dXJuIGNvbnN1bWVJ
ZGVudDxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlQWxwaGEsIENTU1ZhbHVlTHVtaW5hbmNlPihyYW5n
ZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVByZWZpeGVkQmFja2dyb3VuZEJveChD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3Qg
Q1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICAvLyBUaGUgdmFsdWVzICdib3JkZXIn
LCAncGFkZGluZycgYW5kICdjb250ZW50JyBhcmUgZGVwcmVjYXRlZCBhbmQgZG8gbm90IGFwcGx5
IHRvIHRoZSB2ZXJzaW9uIG9mIHRoZSBwcm9wZXJ0eSB0aGF0IGhhcyB0aGUgLXdlYmtpdC0gcHJl
Zml4IHJlbW92ZWQuCisgICAgaWYgKENTU1ZhbHVlKiB2YWx1ZSA9IGNvbnN1bWVJZGVudFJhbmdl
KHJhbmdlLCBDU1NWYWx1ZUJvcmRlciwgQ1NTVmFsdWVQYWRkaW5nQm94KSkKKyAgICAgICAgcmV0
dXJuIHZhbHVlOworICAgIGlmICgocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3Jv
dW5kQ2xpcCB8fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwKSAmJiByYW5n
ZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZVRleHQpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRl
bnQocmFuZ2UpOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNv
bnN1bWVCYWNrZ3JvdW5kU2l6ZShDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0eSwgQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sK
KyAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlQ29udGFpbiwgQ1NTVmFsdWVDb3Zlcj4ocmFu
Z2UucGVlaygpLmlkKCkpKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKwor
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBob3Jpem9udGFsID0gY29uc3VtZUlkZW50PENTU1ZhbHVl
QXV0bz4ocmFuZ2UpOworICAgIGlmICghaG9yaXpvbnRhbCkKKyAgICAgICAgaG9yaXpvbnRhbCA9
IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VB
bGwsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmVy
dGljYWwgPSBudWxscHRyOworICAgIGlmICghcmFuZ2UuYXRFbmQoKSkgeworICAgICAgICBpZiAo
cmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBdXRvKSAvLyBgYXV0bycgaXMgdGhlIGRlZmF1
bHQKKyAgICAgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHZlcnRpY2FsID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChy
YW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCwgVW5pdGxlc3NRdWlyazo6Rm9yYmlk
KTsKKyAgICB9IGVsc2UgaWYgKHVucmVzb2x2ZWRQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUFsaWFz
V2Via2l0QmFja2dyb3VuZFNpemUpIHsKKyAgICAgICAgLy8gTGVnYWN5IHN5bnRheDogIi13ZWJr
aXQtYmFja2dyb3VuZC1zaXplOiAxMHB4IiBpcyBlcXVpdmFsZW50IHRvICJiYWNrZ3JvdW5kLXNp
emU6IDEwcHggMTBweCIuCisgICAgICAgIHZlcnRpY2FsID0gaG9yaXpvbnRhbDsKKyAgICB9Cisg
ICAgaWYgKCF2ZXJ0aWNhbCkKKyAgICAgICAgcmV0dXJuIGhvcml6b250YWw7CisgICAgcmV0dXJu
IENTU1ZhbHVlUGFpcjo6Y3JlYXRlKGhvcml6b250YWwsIHZlcnRpY2FsLCBDU1NWYWx1ZVBhaXI6
OktlZXBJZGVudGljYWxWYWx1ZXMpOworfQorCitzdGF0aWMgQ1NTVmFsdWVMaXN0KiBjb25zdW1l
R3JpZEF1dG9GbG93KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiByb3dPckNvbHVtblZhbHVlID0gY29uc3VtZUlkZW50PENTU1ZhbHVlUm93LCBD
U1NWYWx1ZUNvbHVtbj4ocmFuZ2UpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBkZW5zZUFsZ29y
aXRobSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZURlbnNlPihyYW5nZSk7CisgICAgaWYgKCFyb3dP
ckNvbHVtblZhbHVlKSB7CisgICAgICAgIHJvd09yQ29sdW1uVmFsdWUgPSBjb25zdW1lSWRlbnQ8
Q1NTVmFsdWVSb3csIENTU1ZhbHVlQ29sdW1uPihyYW5nZSk7CisgICAgICAgIGlmICghcm93T3JD
b2x1bW5WYWx1ZSAmJiAhZGVuc2VBbGdvcml0aG0pCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisgICAgQ1NTVmFsdWVMaXN0KiBwYXJzZWRWYWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgaWYgKHJvd09yQ29sdW1uVmFsdWUpCisgICAg
ICAgIHBhcnNlZFZhbHVlcy0+YXBwZW5kKCpyb3dPckNvbHVtblZhbHVlKTsKKyAgICBpZiAoZGVu
c2VBbGdvcml0aG0pCisgICAgICAgIHBhcnNlZFZhbHVlcy0+YXBwZW5kKCpkZW5zZUFsZ29yaXRo
bSk7CisgICAgcmV0dXJuIHBhcnNlZFZhbHVlczsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25z
dW1lQmFja2dyb3VuZENvbXBvbmVudChDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0eSwg
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRl
eHQpCit7CisgICAgc3dpdGNoICh1bnJlc29sdmVkUHJvcGVydHkpIHsKKyAgICBjYXNlIENTU1By
b3BlcnR5QmFja2dyb3VuZENsaXA6CisgICAgICAgIHJldHVybiBjb25zdW1lQmFja2dyb3VuZEJv
eChyYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRCbGVuZE1vZGU6CisgICAg
ICAgIHJldHVybiBjb25zdW1lQmFja2dyb3VuZEJsZW5kTW9kZShyYW5nZSk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50OgorICAgICAgICByZXR1cm4gY29uc3VtZUJh
Y2tncm91bmRBdHRhY2htZW50KHJhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZE9yaWdpbjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCYWNrZ3JvdW5kQm94KHJhbmdlKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0NvbXBvc2l0ZToKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVCYWNrZ3JvdW5kQ29tcG9zaXRlKHJhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFz
a1NvdXJjZVR5cGU6CisgICAgICAgIHJldHVybiBjb25zdW1lTWFza1NvdXJjZVR5cGUocmFuZ2Up
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xpcDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZE9yaWdpbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFza0NsaXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW46CisgICAg
ICAgIHJldHVybiBjb25zdW1lUHJlZml4ZWRCYWNrZ3JvdW5kQm94KHVucmVzb2x2ZWRQcm9wZXJ0
eSwgcmFuZ2UsIGNvbnRleHQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2U6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZToKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVJbWFnZU9yTm9uZShyYW5nZSwgY29udGV4dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRQb3NpdGlvblg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlv
blg6CisgICAgICAgIHJldHVybiBjb25zdW1lUG9zaXRpb25YKHJhbmdlLCBjb250ZXh0Lm1vZGUo
KSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblk6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblk6CisgICAgICAgIHJldHVybiBjb25zdW1lUG9z
aXRpb25ZKHJhbmdlLCBjb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRTaXplOgorICAgIGNhc2UgQ1NTUHJvcGVydHlBbGlhc1dlYmtpdEJhY2tncm91bmRTaXpl
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZToKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVCYWNrZ3JvdW5kU2l6ZSh1bnJlc29sdmVkUHJvcGVydHksIHJhbmdlLCBjb250ZXh0Lm1v
ZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcjoKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVDb2xvcihyYW5nZSwgY29udGV4dC5tb2RlKCkpOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIGJyZWFrOworICAgIH07CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyB2
b2lkIGFkZEJhY2tncm91bmRWYWx1ZShDU1NWYWx1ZSomIGxpc3QsIENTU1ZhbHVlKiB2YWx1ZSkK
K3sKKyAgICBpZiAobGlzdCkgeworICAgICAgICBpZiAoIWxpc3QtPmlzQmFzZVZhbHVlTGlzdCgp
KSB7CisgICAgICAgICAgICBDU1NWYWx1ZSogZmlyc3RWYWx1ZSA9IGxpc3Q7CisgICAgICAgICAg
ICBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAg
ICAgdG9DU1NWYWx1ZUxpc3QobGlzdCktPmFwcGVuZCgqZmlyc3RWYWx1ZSk7CisgICAgICAgIH0K
KyAgICAgICAgdG9DU1NWYWx1ZUxpc3QobGlzdCktPmFwcGVuZCgqdmFsdWUpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIC8vIFRvIGNvbnNlcnZlIG1lbW9yeSB3ZSBkb24ndCBhY3R1YWxseSB3cmFw
IGEgc2luZ2xlIHZhbHVlIGluIGEgbGlzdC4KKyAgICAgICAgbGlzdCA9IHZhbHVlOworICAgIH0K
K30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQ29tbWFTZXBhcmF0ZWRCYWNrZ3JvdW5kQ29t
cG9uZW50KENTU1Byb3BlcnR5SUQgdW5yZXNvbHZlZFByb3BlcnR5LCBDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBDU1NW
YWx1ZSogcmVzdWx0ID0gbnVsbHB0cjsKKyAgICBkbyB7CisgICAgICAgIENTU1ZhbHVlKiB2YWx1
ZSA9IGNvbnN1bWVCYWNrZ3JvdW5kQ29tcG9uZW50KHVucmVzb2x2ZWRQcm9wZXJ0eSwgcmFuZ2Us
IGNvbnRleHQpOworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIGFkZEJhY2tncm91bmRWYWx1ZShyZXN1bHQsIHZhbHVlKTsKKyAgICB9IHdo
aWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lU2VsZlBvc2l0
aW9uS2V5d29yZChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NWYWx1ZUlE
IGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CisgICAgaWYgKGlkID09IENTU1ZhbHVlU3RhcnQgfHwg
aWQgPT0gQ1NTVmFsdWVFbmQgfHwgaWQgPT0gQ1NTVmFsdWVDZW50ZXIKKyAgICAgICAgfHwgaWQg
PT0gQ1NTVmFsdWVTZWxmU3RhcnQgfHwgaWQgPT0gQ1NTVmFsdWVTZWxmRW5kIHx8IGlkID09IENT
U1ZhbHVlRmxleFN0YXJ0CisgICAgICAgIHx8IGlkID09IENTU1ZhbHVlRmxleEVuZCB8fCBpZCA9
PSBDU1NWYWx1ZUxlZnQgfHwgaWQgPT0gQ1NTVmFsdWVSaWdodCkKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVJZGVudChyYW5nZSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBDU1NW
YWx1ZSogY29uc3VtZVNlbGZQb3NpdGlvbk92ZXJmbG93UG9zaXRpb24oQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZUF1dG8sIENTU1Zh
bHVlTm9ybWFsLCBDU1NWYWx1ZVN0cmV0Y2gsIENTU1ZhbHVlQmFzZWxpbmUsIENTU1ZhbHVlTGFz
dEJhc2VsaW5lPihyYW5nZS5wZWVrKCkuaWQoKSkpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRl
bnQocmFuZ2UpOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIG92ZXJmbG93UG9zaXRpb24gPSBj
b25zdW1lSWRlbnQ8Q1NTVmFsdWVVbnNhZmUsIENTU1ZhbHVlU2FmZT4ocmFuZ2UpOworICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBzZWxmUG9zaXRpb24gPSBjb25zdW1lU2VsZlBvc2l0aW9uS2V5d29y
ZChyYW5nZSk7CisgICAgaWYgKCFzZWxmUG9zaXRpb24pCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIGlmICghb3ZlcmZsb3dQb3NpdGlvbikKKyAgICAgICAgb3ZlcmZsb3dQb3NpdGlvbiA9
IGNvbnN1bWVJZGVudDxDU1NWYWx1ZVVuc2FmZSwgQ1NTVmFsdWVTYWZlPihyYW5nZSk7CisgICAg
aWYgKG92ZXJmbG93UG9zaXRpb24pCisgICAgICAgIHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0
ZShzZWxmUG9zaXRpb24sIG92ZXJmbG93UG9zaXRpb24sIENTU1ZhbHVlUGFpcjo6RHJvcElkZW50
aWNhbFZhbHVlcyk7CisgICAgcmV0dXJuIHNlbGZQb3NpdGlvbjsKK30KKworc3RhdGljIENTU1Zh
bHVlKiBjb25zdW1lQWxpZ25JdGVtcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAg
ICAvLyBhbGlnbi1pdGVtcyBwcm9wZXJ0eSBkb2VzIG5vdCBhbGxvdyB0aGUgJ2F1dG8nIHZhbHVl
LgorICAgIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVBdXRvPihyYW5nZS5wZWVrKCkuaWQoKSkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjb25zdW1lU2VsZlBvc2l0aW9u
T3ZlcmZsb3dQb3NpdGlvbihyYW5nZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUp1
c3RpZnlJdGVtcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NQYXJzZXJU
b2tlblJhbmdlIHJhbmdlQ29weSA9IHJhbmdlOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBsZWdh
Y3kgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVMZWdhY3k+KHJhbmdlQ29weSk7CisgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHBvc2l0aW9uS2V5d29yZCA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUNlbnRl
ciwgQ1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0PihyYW5nZUNvcHkpOworICAgIGlmICghbGVn
YWN5KQorICAgICAgICBsZWdhY3kgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVMZWdhY3k+KHJhbmdl
Q29weSk7CisgICAgaWYgKGxlZ2FjeSAmJiBwb3NpdGlvbktleXdvcmQpIHsKKyAgICAgICAgcmFu
Z2UgPSByYW5nZUNvcHk7CisgICAgICAgIHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShsZWdh
Y3ksIHBvc2l0aW9uS2V5d29yZCwgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVzKTsK
KyAgICB9CisgICAgcmV0dXJuIGNvbnN1bWVTZWxmUG9zaXRpb25PdmVyZmxvd1Bvc2l0aW9uKHJh
bmdlKTsKK30KKworc3RhdGljIENTU0N1c3RvbUlkZW50VmFsdWUqIGNvbnN1bWVDdXN0b21JZGVu
dEZvckdyaWRMaW5lKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5n
ZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8gfHwgcmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NT
VmFsdWVTcGFuKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY29uc3VtZUN1
c3RvbUlkZW50KHJhbmdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lR3JpZExpbmUo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgp
ID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisK
KyAgICBDU1NQcmltaXRpdmVWYWx1ZSogc3BhblZhbHVlID0gbnVsbHB0cjsKKyAgICBDU1NDdXN0
b21JZGVudFZhbHVlKiBncmlkTGluZU5hbWUgPSBudWxscHRyOworICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBudW1lcmljVmFsdWUgPSBjb25zdW1lSW50ZWdlcihyYW5nZSk7CisgICAgaWYgKG51bWVy
aWNWYWx1ZSkgeworICAgICAgICBncmlkTGluZU5hbWUgPSBjb25zdW1lQ3VzdG9tSWRlbnRGb3JH
cmlkTGluZShyYW5nZSk7CisgICAgICAgIHNwYW5WYWx1ZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1
ZVNwYW4+KHJhbmdlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzcGFuVmFsdWUgPSBjb25zdW1l
SWRlbnQ8Q1NTVmFsdWVTcGFuPihyYW5nZSk7CisgICAgICAgIGlmIChzcGFuVmFsdWUpIHsKKyAg
ICAgICAgICAgIG51bWVyaWNWYWx1ZSA9IGNvbnN1bWVJbnRlZ2VyKHJhbmdlKTsKKyAgICAgICAg
ICAgIGdyaWRMaW5lTmFtZSA9IGNvbnN1bWVDdXN0b21JZGVudEZvckdyaWRMaW5lKHJhbmdlKTsK
KyAgICAgICAgICAgIGlmICghbnVtZXJpY1ZhbHVlKQorICAgICAgICAgICAgICAgIG51bWVyaWNW
YWx1ZSA9IGNvbnN1bWVJbnRlZ2VyKHJhbmdlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGdyaWRMaW5lTmFtZSA9IGNvbnN1bWVDdXN0b21JZGVudEZvckdyaWRMaW5lKHJhbmdlKTsK
KyAgICAgICAgICAgIGlmIChncmlkTGluZU5hbWUpIHsKKyAgICAgICAgICAgICAgICBudW1lcmlj
VmFsdWUgPSBjb25zdW1lSW50ZWdlcihyYW5nZSk7CisgICAgICAgICAgICAgICAgc3BhblZhbHVl
ID0gY29uc3VtZUlkZW50PENTU1ZhbHVlU3Bhbj4ocmFuZ2UpOworICAgICAgICAgICAgICAgIGlm
ICghc3BhblZhbHVlICYmICFudW1lcmljVmFsdWUpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBncmlkTGluZU5hbWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYg
KHNwYW5WYWx1ZSAmJiAhbnVtZXJpY1ZhbHVlICYmICFncmlkTGluZU5hbWUpCisgICAgICAgIHJl
dHVybiBudWxscHRyOyAvLyAic3BhbiIga2V5d29yZCBhbG9uZSBpcyBpbnZhbGlkLgorICAgIGlm
IChzcGFuVmFsdWUgJiYgbnVtZXJpY1ZhbHVlICYmIG51bWVyaWNWYWx1ZS0+Z2V0SW50VmFsdWUo
KSA8IDApCisgICAgICAgIHJldHVybiBudWxscHRyOyAvLyBOZWdhdGl2ZSBudW1iZXJzIGFyZSBu
b3QgYWxsb3dlZCBmb3Igc3Bhbi4KKyAgICBpZiAobnVtZXJpY1ZhbHVlICYmIG51bWVyaWNWYWx1
ZS0+Z2V0SW50VmFsdWUoKSA9PSAwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsgLy8gQW4gPGlu
dGVnZXI+IHZhbHVlIG9mIHplcm8gbWFrZXMgdGhlIGRlY2xhcmF0aW9uIGludmFsaWQuCisKKyAg
ICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0
ZWQoKTsKKyAgICBpZiAoc3BhblZhbHVlKQorICAgICAgICB2YWx1ZXMtPmFwcGVuZCgqc3BhblZh
bHVlKTsKKyAgICBpZiAobnVtZXJpY1ZhbHVlKQorICAgICAgICB2YWx1ZXMtPmFwcGVuZCgqbnVt
ZXJpY1ZhbHVlKTsKKyAgICBpZiAoZ3JpZExpbmVOYW1lKQorICAgICAgICB2YWx1ZXMtPmFwcGVu
ZCgqZ3JpZExpbmVOYW1lKTsKKyAgICBBU1NFUlQodmFsdWVzLT5sZW5ndGgoKSk7CisgICAgcmV0
dXJuIHZhbHVlczsKK30KKworc3RhdGljIGJvb2wgaXNHcmlkVHJhY2tGaXhlZFNpemVkKGNvbnN0
IENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1ZSkKK3sKKyAgICBDU1NWYWx1ZUlEIHZh
bHVlSUQgPSBwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCk7CisgICAgaWYgKHZhbHVlSUQgPT0g
Q1NTVmFsdWVNaW5Db250ZW50IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVNYXhDb250ZW50IHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHByaW1pdGl2ZVZhbHVlLmlzRmxleCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgaXNH
cmlkVHJhY2tGaXhlZFNpemVkKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK3sKKyAgICBpZiAodmFs
dWUuaXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm4gaXNHcmlkVHJhY2tGaXhlZFNp
emVkKHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpKTsKKworICAgIGNvbnN0IENTU1ByaW1pdGl2
ZVZhbHVlJiBtaW5QcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodG9DU1NGdW5j
dGlvblZhbHVlKHZhbHVlKS5pdGVtKDApKTsKKyAgICBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYg
bWF4UHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRvQ1NTRnVuY3Rpb25WYWx1
ZSh2YWx1ZSkuaXRlbSgxKSk7CisgICAgcmV0dXJuIGlzR3JpZFRyYWNrRml4ZWRTaXplZChtaW5Q
cmltaXRpdmVWYWx1ZSkgfHwgaXNHcmlkVHJhY2tGaXhlZFNpemVkKG1heFByaW1pdGl2ZVZhbHVl
KTsKK30KKworc3RhdGljIFZlY3RvcjxTdHJpbmc+IHBhcnNlR3JpZFRlbXBsYXRlQXJlYXNDb2x1
bW5OYW1lcyhjb25zdCBTdHJpbmcmIGdyaWRSb3dOYW1lcykKK3sKKyAgICBBU1NFUlQoIWdyaWRS
b3dOYW1lcy5pc0VtcHR5KCkpOworICAgIFZlY3RvcjxTdHJpbmc+IGNvbHVtbk5hbWVzOworICAg
IC8vIFVzaW5nIFN0cmluZ0ltcGwgdG8gYXZvaWQgY2hlY2tzIGFuZCBpbmRpcmVjdGlvbiBpbiBl
dmVyeSBjYWxsIHRvIFN0cmluZzo6b3BlcmF0b3JbXS4KKyAgICBTdHJpbmdJbXBsJiB0ZXh0ID0g
KmdyaWRSb3dOYW1lcy5pbXBsKCk7CisKKyAgICBTdHJpbmdCdWlsZGVyIGFyZWFOYW1lOworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAg
aWYgKGlzQ1NTU3BhY2UodGV4dFtpXSkpIHsKKyAgICAgICAgICAgIGlmICghYXJlYU5hbWUuaXNF
bXB0eSgpKSB7CisgICAgICAgICAgICAgICAgY29sdW1uTmFtZXMuYXBwZW5kKGFyZWFOYW1lLnRv
U3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGFyZWFOYW1lLmNsZWFyKCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodGV4dFtp
XSA9PSAnLicpIHsKKyAgICAgICAgICAgIGlmIChhcmVhTmFtZSA9PSAiLiIpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoIWFyZWFOYW1lLmlzRW1wdHkoKSkgewor
ICAgICAgICAgICAgICAgIGNvbHVtbk5hbWVzLmFwcGVuZChhcmVhTmFtZS50b1N0cmluZygpKTsK
KyAgICAgICAgICAgICAgICBhcmVhTmFtZS5jbGVhcigpOworICAgICAgICAgICAgfQorICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKCFpc05hbWVDb2RlUG9pbnQodGV4dFtpXSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CisgICAgICAgICAgICBpZiAo
YXJlYU5hbWUgPT0gIi4iKSB7CisgICAgICAgICAgICAgICAgY29sdW1uTmFtZXMuYXBwZW5kKGFy
ZWFOYW1lLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGFyZWFOYW1lLmNsZWFyKCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBhcmVhTmFtZS5hcHBlbmQodGV4dFtp
XSk7CisgICAgfQorCisgICAgaWYgKCFhcmVhTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIGNvbHVt
bk5hbWVzLmFwcGVuZChhcmVhTmFtZS50b1N0cmluZygpKTsKKworICAgIHJldHVybiBjb2x1bW5O
YW1lczsKK30KKworc3RhdGljIGJvb2wgcGFyc2VHcmlkVGVtcGxhdGVBcmVhc1Jvdyhjb25zdCBT
dHJpbmcmIGdyaWRSb3dOYW1lcywgTmFtZWRHcmlkQXJlYU1hcCYgZ3JpZEFyZWFNYXAsIGNvbnN0
IHNpemVfdCByb3dDb3VudCwgc2l6ZV90JiBjb2x1bW5Db3VudCkKK3sKKyAgICBpZiAoZ3JpZFJv
d05hbWVzLmlzRW1wdHkoKSB8fCBncmlkUm93TmFtZXMuY29udGFpbnNPbmx5V2hpdGVzcGFjZSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBWZWN0b3I8U3RyaW5nPiBjb2x1bW5OYW1l
cyA9IHBhcnNlR3JpZFRlbXBsYXRlQXJlYXNDb2x1bW5OYW1lcyhncmlkUm93TmFtZXMpOworICAg
IGlmIChyb3dDb3VudCA9PSAwKSB7CisgICAgICAgIGNvbHVtbkNvdW50ID0gY29sdW1uTmFtZXMu
c2l6ZSgpOworICAgICAgICBpZiAoY29sdW1uQ291bnQgPT0gMCkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9IGVsc2UgaWYgKGNvbHVtbkNvdW50ICE9IGNvbHVtbk5hbWVzLnNpemUo
KSkgeworICAgICAgICAvLyBUaGUgZGVjbGFyYXRpb24gaXMgaW52YWxpZCBpZiBhbGwgdGhlIHJv
d3MgZG9uJ3QgaGF2ZSB0aGUgbnVtYmVyIG9mIGNvbHVtbnMuCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBjdXJyZW50Q29sdW1uID0gMDsgY3VycmVudENv
bHVtbiA8IGNvbHVtbkNvdW50OyArK2N1cnJlbnRDb2x1bW4pIHsKKyAgICAgICAgY29uc3QgU3Ry
aW5nJiBncmlkQXJlYU5hbWUgPSBjb2x1bW5OYW1lc1tjdXJyZW50Q29sdW1uXTsKKworICAgICAg
ICAvLyBVbmFtZWQgYXJlYXMgYXJlIGFsd2F5cyB2YWxpZCAod2UgY29uc2lkZXIgdGhlbSB0byBi
ZSAxeDEpLgorICAgICAgICBpZiAoZ3JpZEFyZWFOYW1lID09ICIuIikKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIHNpemVfdCBsb29rQWhlYWRDb2x1bW4gPSBjdXJyZW50Q29sdW1u
ICsgMTsKKyAgICAgICAgd2hpbGUgKGxvb2tBaGVhZENvbHVtbiA8IGNvbHVtbkNvdW50ICYmIGNv
bHVtbk5hbWVzW2xvb2tBaGVhZENvbHVtbl0gPT0gZ3JpZEFyZWFOYW1lKQorICAgICAgICAgICAg
bG9va0FoZWFkQ29sdW1uKys7CisKKyAgICAgICAgTmFtZWRHcmlkQXJlYU1hcDo6aXRlcmF0b3Ig
Z3JpZEFyZWFJdCA9IGdyaWRBcmVhTWFwLmZpbmQoZ3JpZEFyZWFOYW1lKTsKKyAgICAgICAgaWYg
KGdyaWRBcmVhSXQgPT0gZ3JpZEFyZWFNYXAuZW5kKCkpIHsKKyAgICAgICAgICAgIGdyaWRBcmVh
TWFwLmFkZChncmlkQXJlYU5hbWUsIEdyaWRBcmVhKEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5p
dGVHcmlkU3Bhbihyb3dDb3VudCwgcm93Q291bnQgKyAxKSwgR3JpZFNwYW46OnRyYW5zbGF0ZWRE
ZWZpbml0ZUdyaWRTcGFuKGN1cnJlbnRDb2x1bW4sIGxvb2tBaGVhZENvbHVtbikpKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEdyaWRBcmVhJiBncmlkQXJlYSA9IGdyaWRBcmVhSXQt
PnZhbHVlOworCisgICAgICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGNoZWNrcyB0ZXN0IHRoYXQg
dGhlIGdyaWQgYXJlYSBpcyBhIHNpbmdsZSBmaWxsZWQtaW4gcmVjdGFuZ2xlLgorICAgICAgICAg
ICAgLy8gMS4gVGhlIG5ldyByb3cgaXMgYWRqYWNlbnQgdG8gdGhlIHByZXZpb3VzbHkgcGFyc2Vk
IHJvdy4KKyAgICAgICAgICAgIGlmIChyb3dDb3VudCAhPSBncmlkQXJlYS5yb3dzLmVuZExpbmUo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIC8vIDIuIFRo
ZSBuZXcgYXJlYSBzdGFydHMgYXQgdGhlIHNhbWUgcG9zaXRpb24gYXMgdGhlIHByZXZpb3VzbHkg
cGFyc2VkIGFyZWEuCisgICAgICAgICAgICBpZiAoY3VycmVudENvbHVtbiAhPSBncmlkQXJlYS5j
b2x1bW5zLnN0YXJ0TGluZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICAgICAgLy8gMy4gVGhlIG5ldyBhcmVhIGVuZHMgYXQgdGhlIHNhbWUgcG9zaXRpb24gYXMg
dGhlIHByZXZpb3VzbHkgcGFyc2VkIGFyZWEuCisgICAgICAgICAgICBpZiAobG9va0FoZWFkQ29s
dW1uICE9IGdyaWRBcmVhLmNvbHVtbnMuZW5kTGluZSgpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICAgICAgZ3JpZEFyZWEucm93cyA9IEdyaWRTcGFuOjp0cmFuc2xh
dGVkRGVmaW5pdGVHcmlkU3BhbihncmlkQXJlYS5yb3dzLnN0YXJ0TGluZSgpLCBncmlkQXJlYS5y
b3dzLmVuZExpbmUoKSArIDEpOworICAgICAgICB9CisgICAgICAgIGN1cnJlbnRDb2x1bW4gPSBs
b29rQWhlYWRDb2x1bW4gLSAxOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0
aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVHcmlkQnJlYWR0aChDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGNvbnN0IENT
U1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICBpZiAoaWRlbnRNYXRjaGVz
PENTU1ZhbHVlTWluQ29udGVudCwgQ1NTVmFsdWVNYXhDb250ZW50LCBDU1NWYWx1ZUF1dG8+KHRv
a2VuLmlkKCkpKQorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICBpZiAo
dG9rZW4udHlwZSgpID09IERpbWVuc2lvblRva2VuICYmIHRva2VuLnVuaXRUeXBlKCkgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpGcmFjdGlvbikgeworICAgICAgICBpZiAocmFuZ2Uu
cGVlaygpLm51bWVyaWNWYWx1ZSgpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5j
bHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGU6OkZyYWN0aW9uKTsKKyAgICB9CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNl
bnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwgVW5pdGxlc3NR
dWlyazo6QWxsb3cpOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVHcmlkVHJhY2tTaXpl
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUp
Cit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOworICAg
IGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVBdXRvPih0b2tlbi5pZCgpKSkKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBpZiAodG9rZW4uZnVuY3Rpb25JZCgpID09
IENTU1ZhbHVlTWlubWF4KSB7CisgICAgICAgIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2VDb3B5
ID0gcmFuZ2U7CisgICAgICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5j
dGlvbihyYW5nZUNvcHkpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogbWluVHJhY2tCcmVh
ZHRoID0gY29uc3VtZUdyaWRCcmVhZHRoKGFyZ3MsIGNzc1BhcnNlck1vZGUpOworICAgICAgICBp
ZiAoIW1pblRyYWNrQnJlYWR0aCB8fCBtaW5UcmFja0JyZWFkdGgtPmlzRmxleCgpIHx8ICFjb25z
dW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBtYXhUcmFja0JyZWFkdGggPSBjb25z
dW1lR3JpZEJyZWFkdGgoYXJncywgY3NzUGFyc2VyTW9kZSk7CisgICAgICAgIGlmICghbWF4VHJh
Y2tCcmVhZHRoIHx8ICFhcmdzLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgcmFuZ2UgPSByYW5nZUNvcHk7CisgICAgICAgIENTU0Z1bmN0aW9uVmFsdWUqIHJl
c3VsdCA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShDU1NWYWx1ZU1pbm1heCk7CisgICAgICAg
IHJlc3VsdC0+YXBwZW5kKCptaW5UcmFja0JyZWFkdGgpOworICAgICAgICByZXN1bHQtPmFwcGVu
ZCgqbWF4VHJhY2tCcmVhZHRoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAg
cmV0dXJuIGNvbnN1bWVHcmlkQnJlYWR0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSk7Cit9CisKKy8v
IEFwcGVuZHMgdG8gdGhlIHBhc3NlZCBpbiBDU1NHcmlkTGluZU5hbWVzVmFsdWUgaWYgYW55LCBv
dGhlcndpc2UgY3JlYXRlcyBhIG5ldyBvbmUuCitzdGF0aWMgQ1NTR3JpZExpbmVOYW1lc1ZhbHVl
KiBjb25zdW1lR3JpZExpbmVOYW1lcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTR3Jp
ZExpbmVOYW1lc1ZhbHVlKiBsaW5lTmFtZXMgPSBudWxscHRyKQoreworICAgIENTU1BhcnNlclRv
a2VuUmFuZ2UgcmFuZ2VDb3B5ID0gcmFuZ2U7CisgICAgaWYgKHJhbmdlQ29weS5jb25zdW1lSW5j
bHVkaW5nV2hpdGVzcGFjZSgpLnR5cGUoKSAhPSBMZWZ0QnJhY2tldFRva2VuKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWxpbmVOYW1lcykKKyAgICAgICAgbGluZU5hbWVzID0g
Q1NTR3JpZExpbmVOYW1lc1ZhbHVlOjpjcmVhdGUoKTsKKyAgICB3aGlsZSAoQ1NTQ3VzdG9tSWRl
bnRWYWx1ZSogbGluZU5hbWUgPSBjb25zdW1lQ3VzdG9tSWRlbnRGb3JHcmlkTGluZShyYW5nZUNv
cHkpKQorICAgICAgICBsaW5lTmFtZXMtPmFwcGVuZCgqbGluZU5hbWUpOworICAgIGlmIChyYW5n
ZUNvcHkuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS50eXBlKCkgIT0gUmlnaHRCcmFja2V0
VG9rZW4pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJhbmdlID0gcmFuZ2VDb3B5Owor
ICAgIHJldHVybiBsaW5lTmFtZXM7Cit9CisKK3N0YXRpYyBib29sIGNvbnN1bWVHcmlkVHJhY2tS
ZXBlYXRGdW5jdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBj
c3NQYXJzZXJNb2RlLCBDU1NWYWx1ZUxpc3QmIGxpc3QsIGJvb2wmIGlzQXV0b1JlcGVhdCwgYm9v
bCYgYWxsVHJhY2tzQXJlRml4ZWRTaXplZCkKK3sKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFy
Z3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2UpOworICAgIC8vIFRoZSBudW1iZXIgb2YgcmVwZXRp
dGlvbnMgZm9yIDxhdXRvLXJlcGVhdD4gaXMgbm90IGltcG9ydGFudCBhdCBwYXJzaW5nIGxldmVs
CisgICAgLy8gYmVjYXVzZSBpdCB3aWxsIGJlIGNvbXB1dGVkIGxhdGVyLCBsZXQncyBzZXQgaXQg
dG8gMS4KKyAgICBzaXplX3QgcmVwZXRpdGlvbnMgPSAxOworICAgIGlzQXV0b1JlcGVhdCA9IGlk
ZW50TWF0Y2hlczxDU1NWYWx1ZUF1dG9GaWxsLCBDU1NWYWx1ZUF1dG9GaXQ+KGFyZ3MucGVlaygp
LmlkKCkpOworICAgIENTU1ZhbHVlTGlzdCogcmVwZWF0ZWRWYWx1ZXM7CisgICAgaWYgKGlzQXV0
b1JlcGVhdCkgeworICAgICAgICByZXBlYXRlZFZhbHVlcyA9IENTU0dyaWRBdXRvUmVwZWF0VmFs
dWU6OmNyZWF0ZShhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgLy8gRklYTUU6IGEgY29uc3VtZUludGVnZXJSYXcgd291bGQgYmUg
bW9yZSBlZmZpY2llbnQgaGVyZS4KKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHJlcGV0aXRp
b24gPSBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyKGFyZ3MpOworICAgICAgICBpZiAoIXJlcGV0aXRp
b24pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJlcGV0aXRpb25zID0gY2xh
bXBUbzxzaXplX3Q+KHJlcGV0aXRpb24tPmdldERvdWJsZVZhbHVlKCksIDAsIGtHcmlkTWF4VHJh
Y2tzKTsKKyAgICAgICAgcmVwZWF0ZWRWYWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNl
U2VwYXJhdGVkKCk7CisgICAgfQorICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVz
cGFjZShhcmdzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIENTU0dyaWRMaW5lTmFtZXNW
YWx1ZSogbGluZU5hbWVzID0gY29uc3VtZUdyaWRMaW5lTmFtZXMoYXJncyk7CisgICAgaWYgKGxp
bmVOYW1lcykKKyAgICAgICAgcmVwZWF0ZWRWYWx1ZXMtPmFwcGVuZCgqbGluZU5hbWVzKTsKKwor
ICAgIHNpemVfdCBudW1iZXJPZlRyYWNrcyA9IDA7CisgICAgd2hpbGUgKCFhcmdzLmF0RW5kKCkp
IHsKKyAgICAgICAgQ1NTVmFsdWUqIHRyYWNrU2l6ZSA9IGNvbnN1bWVHcmlkVHJhY2tTaXplKGFy
Z3MsIGNzc1BhcnNlck1vZGUpOworICAgICAgICBpZiAoIXRyYWNrU2l6ZSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGFsbFRyYWNrc0FyZUZpeGVkU2l6ZWQpCisgICAg
ICAgICAgICBhbGxUcmFja3NBcmVGaXhlZFNpemVkID0gaXNHcmlkVHJhY2tGaXhlZFNpemVkKCp0
cmFja1NpemUpOworICAgICAgICByZXBlYXRlZFZhbHVlcy0+YXBwZW5kKCp0cmFja1NpemUpOwor
ICAgICAgICArK251bWJlck9mVHJhY2tzOworICAgICAgICBsaW5lTmFtZXMgPSBjb25zdW1lR3Jp
ZExpbmVOYW1lcyhhcmdzKTsKKyAgICAgICAgaWYgKGxpbmVOYW1lcykKKyAgICAgICAgICAgIHJl
cGVhdGVkVmFsdWVzLT5hcHBlbmQoKmxpbmVOYW1lcyk7CisgICAgfQorICAgIC8vIFdlIHNob3Vs
ZCBoYXZlIGZvdW5kIGF0IGxlYXN0IG9uZSA8dHJhY2stc2l6ZT4gb3IgZWxzZSBpdCBpcyBub3Qg
YSB2YWxpZCA8dHJhY2stbGlzdD4uCisgICAgaWYgKCFudW1iZXJPZlRyYWNrcykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKGlzQXV0b1JlcGVhdCkgeworICAgICAgICBsaXN0LmFw
cGVuZCgqcmVwZWF0ZWRWYWx1ZXMpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFdlIGNsYW1w
IHRoZSByZXBldGl0aW9ucyB0byBhIG11bHRpcGxlIG9mIHRoZSByZXBlYXQoKSB0cmFjayBsaXN0
J3Mgc2l6ZSwgd2hpbGUgc3RheWluZyBiZWxvdyB0aGUgbWF4IGdyaWQgc2l6ZS4KKyAgICAgICAg
cmVwZXRpdGlvbnMgPSBzdGQ6Om1pbihyZXBldGl0aW9ucywga0dyaWRNYXhUcmFja3MgLyBudW1i
ZXJPZlRyYWNrcyk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVwZXRpdGlvbnM7
ICsraSkgeworICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCByZXBlYXRlZFZhbHVl
cy0+bGVuZ3RoKCk7ICsraikKKyAgICAgICAgICAgICAgICBsaXN0LmFwcGVuZChyZXBlYXRlZFZh
bHVlcy0+aXRlbShqKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2VudW0gVHJhY2tMaXN0VHlwZSB7IEdyaWRUZW1wbGF0ZSwgR3JpZFRlbXBsYXRlTm9SZXBlYXQs
IEdyaWRBdXRvIH07CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUdyaWRUcmFja0xpc3QoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVHJh
Y2tMaXN0VHlwZSB0cmFja0xpc3RUeXBlKQoreworICAgIGJvb2wgYWxsb3dHcmlkTGluZU5hbWVz
ID0gdHJhY2tMaXN0VHlwZSAhPSBHcmlkQXV0bzsKKyAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBDU1NHcmlkTGluZU5h
bWVzVmFsdWUqIGxpbmVOYW1lcyA9IGNvbnN1bWVHcmlkTGluZU5hbWVzKHJhbmdlKTsKKyAgICBp
ZiAobGluZU5hbWVzKSB7CisgICAgICAgIGlmICghYWxsb3dHcmlkTGluZU5hbWVzKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHZhbHVlcy0+YXBwZW5kKCpsaW5lTmFtZXMp
OworICAgIH0KKworICAgIGJvb2wgYWxsb3dSZXBlYXQgPSB0cmFja0xpc3RUeXBlID09IEdyaWRU
ZW1wbGF0ZTsKKyAgICBib29sIHNlZW5BdXRvUmVwZWF0ID0gZmFsc2U7CisgICAgYm9vbCBhbGxU
cmFja3NBcmVGaXhlZFNpemVkID0gdHJ1ZTsKKyAgICBkbyB7CisgICAgICAgIGJvb2wgaXNBdXRv
UmVwZWF0OworICAgICAgICBpZiAocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1
ZVJlcGVhdCkgeworICAgICAgICAgICAgaWYgKCFhbGxvd1JlcGVhdCkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmICghY29uc3VtZUdyaWRUcmFja1JlcGVh
dEZ1bmN0aW9uKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCAqdmFsdWVzLCBpc0F1dG9SZXBlYXQsIGFs
bFRyYWNrc0FyZUZpeGVkU2l6ZWQpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICAgICAgaWYgKGlzQXV0b1JlcGVhdCAmJiBzZWVuQXV0b1JlcGVhdCkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHNlZW5BdXRvUmVwZWF0ID0gc2Vl
bkF1dG9SZXBlYXQgfHwgaXNBdXRvUmVwZWF0OworICAgICAgICB9IGVsc2UgaWYgKENTU1ZhbHVl
KiB2YWx1ZSA9IGNvbnN1bWVHcmlkVHJhY2tTaXplKHJhbmdlLCBjc3NQYXJzZXJNb2RlKSkgewor
ICAgICAgICAgICAgaWYgKGFsbFRyYWNrc0FyZUZpeGVkU2l6ZWQpCisgICAgICAgICAgICAgICAg
YWxsVHJhY2tzQXJlRml4ZWRTaXplZCA9IGlzR3JpZFRyYWNrRml4ZWRTaXplZCgqdmFsdWUpOwor
ICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoKnZhbHVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIGlmIChzZWVuQXV0
b1JlcGVhdCAmJiAhYWxsVHJhY2tzQXJlRml4ZWRTaXplZCkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICBsaW5lTmFtZXMgPSBjb25zdW1lR3JpZExpbmVOYW1lcyhyYW5nZSk7
CisgICAgICAgIGlmIChsaW5lTmFtZXMpIHsKKyAgICAgICAgICAgIGlmICghYWxsb3dHcmlkTGlu
ZU5hbWVzKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgdmFs
dWVzLT5hcHBlbmQoKmxpbmVOYW1lcyk7CisgICAgICAgIH0KKyAgICB9IHdoaWxlICghcmFuZ2Uu
YXRFbmQoKSAmJiByYW5nZS5wZWVrKCkudHlwZSgpICE9IERlbGltaXRlclRva2VuKTsKKyAgICBy
ZXR1cm4gdmFsdWVzOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVHcmlkVGVtcGxhdGVz
Um93c09yQ29sdW1ucyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBj
c3NQYXJzZXJNb2RlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5v
bmUpCisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIHJldHVybiBjb25z
dW1lR3JpZFRyYWNrTGlzdChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgR3JpZFRlbXBsYXRlKTsKK30K
Kworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lR3JpZFRlbXBsYXRlQXJlYXMoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVl
Tm9uZSkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisKKyAgICBOYW1lZEdy
aWRBcmVhTWFwIGdyaWRBcmVhTWFwOworICAgIHNpemVfdCByb3dDb3VudCA9IDA7CisgICAgc2l6
ZV90IGNvbHVtbkNvdW50ID0gMDsKKworICAgIHdoaWxlIChyYW5nZS5wZWVrKCkudHlwZSgpID09
IFN0cmluZ1Rva2VuKSB7CisgICAgICAgIGlmICghcGFyc2VHcmlkVGVtcGxhdGVBcmVhc1Jvdyhy
YW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVlKCkudG9TdHJpbmcoKSwgZ3Jp
ZEFyZWFNYXAsIHJvd0NvdW50LCBjb2x1bW5Db3VudCkpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgKytyb3dDb3VudDsKKyAgICB9CisKKyAgICBpZiAocm93Q291bnQgPT0g
MCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQVNTRVJUKGNvbHVtbkNvdW50KTsKKyAg
ICByZXR1cm4gQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZTo6Y3JlYXRlKGdyaWRBcmVhTWFwLCBy
b3dDb3VudCwgY29sdW1uQ291bnQpOworfQorCitzdGF0aWMgdm9pZCBjb3VudEtleXdvcmRPbmx5
UHJvcGVydHlVc2FnZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBVc2VDb3VudGVyKiBjb3VudGVy
LCBDU1NWYWx1ZUlEIHZhbHVlSUQpCit7CisgICAgaWYgKCFjb3VudGVyKQorICAgICAgICByZXR1
cm47CisgICAgc3dpdGNoIChwcm9wZXJ0eSkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRB
cHBlYXJhbmNlOgorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUpIHsKKyAgICAg
ICAgICAgIGNvdW50ZXItPmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5jZU5vbmUp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY291bnRlci0+Y291bnQoVXNlQ291bnRl
cjo6Q1NTVmFsdWVBcHBlYXJhbmNlTm90Tm9uZSk7CisgICAgICAgICAgICBpZiAodmFsdWVJRCA9
PSBDU1NWYWx1ZUJ1dHRvbikKKyAgICAgICAgICAgICAgICBjb3VudGVyLT5jb3VudChVc2VDb3Vu
dGVyOjpDU1NWYWx1ZUFwcGVhcmFuY2VCdXR0b24pOworICAgICAgICAgICAgZWxzZSBpZiAodmFs
dWVJRCA9PSBDU1NWYWx1ZUNhcmV0KQorICAgICAgICAgICAgICAgIGNvdW50ZXItPmNvdW50KFVz
ZUNvdW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5jZUNhcmV0KTsKKyAgICAgICAgICAgIGVsc2UgaWYg
KHZhbHVlSUQgPT0gQ1NTVmFsdWVDaGVja2JveCkKKyAgICAgICAgICAgICAgICBjb3VudGVyLT5j
b3VudChVc2VDb3VudGVyOjpDU1NWYWx1ZUFwcGVhcmFuY2VDaGVja2JveCk7CisgICAgICAgICAg
ICBlbHNlIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlTWVudWxpc3QpCisgICAgICAgICAgICAgICAg
Y291bnRlci0+Y291bnQoVXNlQ291bnRlcjo6Q1NTVmFsdWVBcHBlYXJhbmNlTWVudWxpc3QpOwor
ICAgICAgICAgICAgZWxzZSBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU1lbnVsaXN0QnV0dG9uKQor
ICAgICAgICAgICAgICAgIGNvdW50ZXItPmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlQXBwZWFy
YW5jZU1lbnVsaXN0QnV0dG9uKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlSUQgPT0gQ1NT
VmFsdWVMaXN0Ym94KQorICAgICAgICAgICAgICAgIGNvdW50ZXItPmNvdW50KFVzZUNvdW50ZXI6
OkNTU1ZhbHVlQXBwZWFyYW5jZUxpc3Rib3gpOworICAgICAgICAgICAgZWxzZSBpZiAodmFsdWVJ
RCA9PSBDU1NWYWx1ZVJhZGlvKQorICAgICAgICAgICAgICAgIGNvdW50ZXItPmNvdW50KFVzZUNv
dW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5jZVJhZGlvKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZh
bHVlSUQgPT0gQ1NTVmFsdWVTZWFyY2hmaWVsZCkKKyAgICAgICAgICAgICAgICBjb3VudGVyLT5j
b3VudChVc2VDb3VudGVyOjpDU1NWYWx1ZUFwcGVhcmFuY2VTZWFyY2hGaWVsZCk7CisgICAgICAg
ICAgICBlbHNlIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlVGV4dGZpZWxkKQorICAgICAgICAgICAg
ICAgIGNvdW50ZXItPmNvdW50KFVzZUNvdW50ZXI6OkNTU1ZhbHVlQXBwZWFyYW5jZVRleHRGaWVs
ZCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY291bnRlci0+Y291bnQoVXNl
Q291bnRlcjo6Q1NTVmFsdWVBcHBlYXJhbmNlT3RoZXJzKTsKKyAgICAgICAgfQorICAgICAgICBi
cmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworY29uc3Qg
Q1NTVmFsdWUqIENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5
SUQgdW5yZXNvbHZlZFByb3BlcnR5LCBDU1NQcm9wZXJ0eUlEIGN1cnJlbnRTaG9ydGhhbmQpCit7
CisgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSA9IHJlc29sdmVDU1NQcm9wZXJ0eUlEKHVucmVz
b2x2ZWRQcm9wZXJ0eSk7CisgICAgaWYgKENTU1BhcnNlckZhc3RQYXRoczo6aXNLZXl3b3JkUHJv
cGVydHlJRChwcm9wZXJ0eSkpIHsKKyAgICAgICAgaWYgKCFDU1NQYXJzZXJGYXN0UGF0aHM6Omlz
VmFsaWRLZXl3b3JkUHJvcGVydHlBbmRWYWx1ZShwcm9wZXJ0eSwgbV9yYW5nZS5wZWVrKCkuaWQo
KSwgbV9jb250ZXh0Lm1vZGUoKSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgY291bnRLZXl3b3JkT25seVByb3BlcnR5VXNhZ2UocHJvcGVydHksIG1fY29udGV4dC51c2VD
b3VudGVyKCksIG1fcmFuZ2UucGVlaygpLmlkKCkpOworICAgICAgICByZXR1cm4gY29uc3VtZUlk
ZW50KG1fcmFuZ2UpOworICAgIH0KKyAgICBzd2l0Y2ggKHByb3BlcnR5KSB7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdpbGxDaGFuZ2U6CisgICAgICAgIHJldHVybiBjb25zdW1lV2lsbENoYW5nZSht
X3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFnZToKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVQYWdlKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlRdW90ZXM6CisgICAgICAgIHJl
dHVybiBjb25zdW1lUXVvdGVzKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRI
aWdobGlnaHQ6CisgICAgICAgIHJldHVybiBjb25zdW1lV2Via2l0SGlnaGxpZ2h0KG1fcmFuZ2Up
OworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250VmFyaWFudENhcHM6CisgICAgICAgIHJldHVybiBj
b25zdW1lRm9udFZhcmlhbnRDYXBzKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250
VmFyaWFudExpZ2F0dXJlczoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVGb250VmFyaWFudExpZ2F0
dXJlcyhtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFZhcmlhbnROdW1lcmljOgor
ICAgICAgICByZXR1cm4gY29uc3VtZUZvbnRWYXJpYW50TnVtZXJpYyhtX3JhbmdlKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5Rm9udEZlYXR1cmVTZXR0aW5nczoKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVGb250RmVhdHVyZVNldHRpbmdzKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250
RmFtaWx5OgorICAgICAgICByZXR1cm4gY29uc3VtZUZvbnRGYW1pbHkobV9yYW5nZSk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQ6CisgICAgICAgIHJldHVybiBjb25zdW1lRm9udFdl
aWdodChtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZzoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V29yZFNwYWNpbmc6CisgICAgICAgIHJldHVybiBjb25zdW1lU3BhY2lu
ZyhtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGFiU2l6
ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVUYWJTaXplKG1fcmFuZ2UsIG1fY29udGV4dC5tb2Rl
KCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0U2l6ZUFkanVzdDoKKyAgICAgICAgcmV0dXJu
IGNvbnN1bWVUZXh0U2l6ZUFkanVzdChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5Rm9udFNpemU6CisgICAgICAgIHJldHVybiBjb25zdW1lRm9udFNpemUo
bV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlMaW5lSGVpZ2h0OgorICAgICAgICByZXR1cm4gY29uc3VtZUxpbmVIZWln
aHQobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVJvdGF0
ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVSb3RhdGlvbihtX3JhbmdlKTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5U2NhbGU6CisgICAgICAgIHJldHVybiBjb25zdW1lU2NhbGUobV9yYW5nZSk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zbGF0ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVUcmFu
c2xhdGUobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJWZXJ0aWNhbFNwYWNpbmc6CisgICAgICAgIHJldHVybiBjb25zdW1lTGVuZ3RoKG1fcmFu
Z2UsIG1fY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUNvdW50ZXJJbmNyZW1lbnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvdW50ZXJS
ZXNldDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb3VudGVyKG1fcmFuZ2UsIHByb3BlcnR5ID09
IENTU1Byb3BlcnR5Q291bnRlckluY3JlbWVudCA/IDEgOiAwKTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5U2l6ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaXplKG1fcmFuZ2UsIG1fY29udGV4dC5t
b2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlTbmFwSGVpZ2h0OgorICAgICAgICByZXR1cm4g
Y29uc3VtZVNuYXBIZWlnaHQobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVRleHRJbmRlbnQ6CisgICAgICAgIHJldHVybiBjb25zdW1lVGV4dEluZGVudCht
X3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWF4V2lkdGg6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1heEhlaWdodDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVN
YXhXaWR0aE9ySGVpZ2h0KG1fcmFuZ2UsIG1fY29udGV4dCwgVW5pdGxlc3NRdWlyazo6QWxsb3cp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsV2lkdGg6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxIZWlnaHQ6CisgICAgICAgIHJldHVybiBjb25zdW1l
TWF4V2lkdGhPckhlaWdodChtX3JhbmdlLCBtX2NvbnRleHQpOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlNaW5XaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWluSGVpZ2h0OgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5SGVpZ2h0OgorICAgICAgICByZXR1
cm4gY29uc3VtZVdpZHRoT3JIZWlnaHQobV9yYW5nZSwgbV9jb250ZXh0LCBVbml0bGVzc1F1aXJr
OjpBbGxvdyk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxXaWR0aDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbEhlaWdodDoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TG9naWNhbFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMb2dp
Y2FsSGVpZ2h0OgorICAgICAgICByZXR1cm4gY29uc3VtZVdpZHRoT3JIZWlnaHQobV9yYW5nZSwg
bV9jb250ZXh0KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luVG9wOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlNYXJnaW5SaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3R0
b206CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxlZnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVJpZ2h0
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUb3A6CisgICAgICAgIHJldHVybiBjb25zdW1lTWFyZ2lu
T3JPZmZzZXQobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVW5pdGxlc3NRdWlyazo6QWxsb3cp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5TdGFydDoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWFyZ2luRW5kOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5C
ZWZvcmU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyOgorICAgICAgICBy
ZXR1cm4gY29uc3VtZU1hcmdpbk9yT2Zmc2V0KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFVu
aXRsZXNzUXVpcms6OkZvcmJpZCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdUb3A6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFk
ZGluZ0JvdHRvbToKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ0xlZnQ6CisgICAgICAgIHJl
dHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFZh
bHVlUmFuZ2VOb25OZWdhdGl2ZSwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRQYWRkaW5nU3RhcnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBh
ZGRpbmdFbmQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmU6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcjoKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVMZW5ndGhPclBlcmNlbnQobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZU5v
bk5lZ2F0aXZlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlD
bGlwOgorICAgICAgICByZXR1cm4gY29uc3VtZUNsaXAobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUo
KSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRvdWNoQWN0aW9uOgorICAgICAgICByZXR1cm4gY29u
c3VtZVRvdWNoQWN0aW9uKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlTY3JvbGxTbmFw
RGVzdGluYXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9iamVjdFBvc2l0aW9uOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlQZXJzcGVjdGl2ZU9yaWdpbjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVQ
b3NpdGlvbihtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQ2xhbXA6CisgICAgICAgIHJldHVybiBj
b25zdW1lTGluZUNsYW1wKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250
U2l6ZURlbHRhOgorICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0aChtX3JhbmdlLCBtX2NvbnRl
eHQubW9kZSgpLCBWYWx1ZVJhbmdlQWxsLCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUNoYXJhY3RlcjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TG9jYWxlOgorICAgICAgICByZXR1cm4gY29uc3VtZUxvY2FsZShtX3JhbmdlKTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1uV2lkdGg6CisgICAgICAgIHJldHVybiBjb25zdW1l
Q29sdW1uV2lkdGgobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVtbkNvdW50Ogor
ICAgICAgICByZXR1cm4gY29uc3VtZUNvbHVtbkNvdW50KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlDb2x1bW5HYXA6CisgICAgICAgIHJldHVybiBjb25zdW1lQ29sdW1uR2FwKG1fcmFu
Z2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlDb2x1bW5TcGFuOgor
ICAgICAgICByZXR1cm4gY29uc3VtZUNvbHVtblNwYW4obV9yYW5nZSk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVpvb206CisgICAgICAgIHJldHVybiBjb25zdW1lWm9vbShtX3JhbmdlLCBtX2NvbnRl
eHQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25EZWxheToKKyAgICBjYXNlIENTU1By
b3BlcnR5VHJhbnNpdGlvbkRlbGF5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25EaXJl
Y3Rpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkR1cmF0aW9uOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlUcmFuc2l0aW9uRHVyYXRpb246CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1h
dGlvbkZpbGxNb2RlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25JdGVyYXRpb25Db3Vu
dDoKKyAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uTmFtZToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5QW5pbWF0aW9uUGxheVN0YXRlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uUHJv
cGVydHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb246CisgICAgICAgIHJldHVy
biBjb25zdW1lQW5pbWF0aW9uUHJvcGVydHlMaXN0KHByb3BlcnR5LCBtX3JhbmdlLCBtX2NvbnRl
eHQsIHVucmVzb2x2ZWRQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUFsaWFzV2Via2l0QW5pbWF0aW9u
TmFtZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRDb2x1bW5HYXA6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUdyaWRSb3dHYXA6CisgICAgICAgIHJldHVybiBjb25zdW1lTGVuZ3RoKG1fcmFuZ2Us
IG1fY29udGV4dC5tb2RlKCksIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVNoYXBlTWFyZ2luOgorICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2Vu
dChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlTaGFwZUltYWdlVGhyZXNob2xkOgorICAgICAgICByZXR1cm4gY29u
c3VtZU51bWJlcihtX3JhbmdlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm94T3JkaW5hbEdyb3VwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlPcnBoYW5zOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXaWRvd3M6CisgICAgICAgIHJldHVybiBjb25zdW1lUG9zaXRpdmVJ
bnRlZ2VyKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkNvbG9y
OgorICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzM1RleHREZWNvcmF0
aW9uc0VuYWJsZWQoKSk7CisgICAgICAgIHJldHVybiBjb25zdW1lQ29sb3IobV9yYW5nZSwgbV9j
b250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0
aDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVUZXh0U3Ryb2tlV2lkdGgobV9yYW5nZSwgbV9jb250
ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3I6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRhcEhpZ2hsaWdodENvbG9yOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyU3RhcnRDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5k
Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlckNvbG9yOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0b3BDb2xv
cjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Rmxvb2RDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5
TGlnaHRpbmdDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1uUnVsZUNvbG9yOgorICAg
ICAgICByZXR1cm4gY29uc3VtZUNvbG9yKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlDb2xvcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yOgorICAgICAgICByZXR1cm4gY29uc3VtZUNvbG9yKG1fcmFuZ2UsIG1fY29udGV4dC5tb2Rl
KCksIGluUXVpcmtzTW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3Rh
cnRXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kV2lkdGg6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJBZnRlcldpZHRoOgorICAgICAgICByZXR1cm4gY29uc3VtZUJvcmRl
cldpZHRoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJMZWZ0Q29sb3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29s
b3I6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yOiB7CisgICAgICAgIGJvb2wg
YWxsb3dRdWlya3lDb2xvcnMgPSBpblF1aXJrc01vZGUoKQorICAgICAgICAgICAgJiYgKGN1cnJl
bnRTaG9ydGhhbmQgPT0gQ1NTUHJvcGVydHlJbnZhbGlkIHx8IGN1cnJlbnRTaG9ydGhhbmQgPT0g
Q1NTUHJvcGVydHlCb3JkZXJDb2xvcik7CisgICAgICAgIHJldHVybiBjb25zdW1lQ29sb3IobV9y
YW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgYWxsb3dRdWlya3lDb2xvcnMpOworICAgIH0KKyAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJv
cmRlckxlZnRXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGg6IHsKKyAgICAgICAgYm9vbCBhbGxvd1F1
aXJreUxlbmd0aHMgPSBpblF1aXJrc01vZGUoKQorICAgICAgICAgICAgJiYgKGN1cnJlbnRTaG9y
dGhhbmQgPT0gQ1NTUHJvcGVydHlJbnZhbGlkIHx8IGN1cnJlbnRTaG9ydGhhbmQgPT0gQ1NTUHJv
cGVydHlCb3JkZXJXaWR0aCk7CisgICAgICAgIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MgPSBhbGxv
d1F1aXJreUxlbmd0aHMgPyBVbml0bGVzc1F1aXJrOjpBbGxvdyA6IFVuaXRsZXNzUXVpcms6OkZv
cmJpZDsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCb3JkZXJXaWR0aChtX3JhbmdlLCBtX2NvbnRl
eHQubW9kZSgpLCB1bml0bGVzcyk7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlaSW5kZXg6
CisgICAgICAgIHJldHVybiBjb25zdW1lWkluZGV4KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlUZXh0U2hhZG93OiAvLyBDU1MyIHByb3BlcnR5LCBkcm9wcGVkIGluIENTUzIuMSwgYmFj
ayBpbiBDU1MzLCBzbyB0cmVhdCBhcyBDU1MzCisgICAgY2FzZSBDU1NQcm9wZXJ0eUJveFNoYWRv
dzoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaGFkb3cobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUo
KSwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCb3hTaGFkb3cpOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlGaWx0ZXI6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tkcm9wRmlsdGVyOgorICAgICAgICBy
ZXR1cm4gY29uc3VtZUZpbHRlcihtX3JhbmdlLCBtX2NvbnRleHQpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlUZXh0RGVjb3JhdGlvbjoKKyAgICAgICAgQVNTRVJUKCFSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpjc3MzVGV4dERlY29yYXRpb25zRW5hYmxlZCgpKTsKKyAgICAgICAgLy8gZmFsbHRocm91
Z2gKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3Q6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uTGluZToKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVUZXh0RGVjb3JhdGlvbkxpbmUobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUQ6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1vdGlvblBhdGg6CisgICAgICAgIHJldHVybiBjb25zdW1l
UGF0aE9yTm9uZShtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TW90aW9uT2Zmc2V0Ogor
ICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChtX3JhbmdlLCBtX2NvbnRleHQu
bW9kZSgpLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TW90aW9uUm90YXRp
b246CisgICAgICAgIHJldHVybiBjb25zdW1lTW90aW9uUm90YXRpb24obV9yYW5nZSk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlOgorICAgICAgICByZXR1cm4g
Y29uc3VtZVRleHRFbXBoYXNpc1N0eWxlKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlP
dXRsaW5lQ29sb3I6CisgICAgICAgIHJldHVybiBjb25zdW1lT3V0bGluZUNvbG9yKG1fcmFuZ2Us
IG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lT2Zmc2V0Ogor
ICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBW
YWx1ZVJhbmdlQWxsKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVdpZHRoOgorICAgICAg
ICByZXR1cm4gY29uc3VtZUxpbmVXaWR0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBVbml0
bGVzc1F1aXJrOjpGb3JiaWQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlUcmFuc2Zvcm06CisgICAg
ICAgIHJldHVybiBjb25zdW1lVHJhbnNmb3JtKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIHVu
cmVzb2x2ZWRQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUFsaWFzV2Via2l0VHJhbnNmb3JtKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWDoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YOgorICAgICAgICByZXR1cm4gY29uc3VtZVBv
c2l0aW9uWChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VHJhbnNmb3JtT3JpZ2luWToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3Bl
Y3RpdmVPcmlnaW5ZOgorICAgICAgICByZXR1cm4gY29uc3VtZVBvc2l0aW9uWShtX3JhbmdlLCBt
X2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3Jp
Z2luWjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGgobV9yYW5nZSwgbV9jb250ZXh0Lm1v
ZGUoKSwgVmFsdWVSYW5nZUFsbCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGw6CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVN0cm9rZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVQYWludFN0cm9rZSht
X3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFpbnRPcmRl
cjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVQYWludE9yZGVyKG1fcmFuZ2UpOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlNYXJrZXJTdGFydDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFya2VyTWlkOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJrZXJFbmQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNsaXBQ
YXRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXNrOgorICAgICAgICByZXR1cm4gY29uc3VtZU5v
bmVPclVSSShtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5RmxleEJhc2lzOgorICAgICAg
ICByZXR1cm4gY29uc3VtZUZsZXhCYXNpcyhtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5RmxleEdyb3c6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZsZXhTaHJp
bms6CisgICAgICAgIHJldHVybiBjb25zdW1lTnVtYmVyKG1fcmFuZ2UsIFZhbHVlUmFuZ2VOb25O
ZWdhdGl2ZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9rZURhc2hhcnJheToKKyAgICAgICAg
cmV0dXJuIGNvbnN1bWVTdHJva2VEYXNoYXJyYXkobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUNvbHVtblJ1bGVXaWR0aDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb2x1bW5SdWxlV2lk
dGgobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVN0cm9r
ZU9wYWNpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGxPcGFjaXR5OgorICAgIGNhc2UgQ1NT
UHJvcGVydHlTdG9wT3BhY2l0eToKKyAgICBjYXNlIENTU1Byb3BlcnR5Rmxvb2RPcGFjaXR5Ogor
ICAgIGNhc2UgQ1NTUHJvcGVydHlPcGFjaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3hGbGV4OgorICAgICAgICByZXR1cm4gY29uc3VtZU51bWJlcihtX3JhbmdlLCBWYWx1ZVJhbmdl
QWxsKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFzZWxpbmVTaGlmdDoKKyAgICAgICAgcmV0dXJu
IGNvbnN1bWVCYXNlbGluZVNoaWZ0KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJv
a2VNaXRlcmxpbWl0OgorICAgICAgICByZXR1cm4gY29uc3VtZU51bWJlcihtX3JhbmdlLCBWYWx1
ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2VXaWR0aDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5U3Ryb2tlRGFzaG9mZnNldDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
Q3g6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUN5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlYOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlZOgorICAgIGNhc2UgQ1NTUHJvcGVydHlSOgorICAgICAgICByZXR1
cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChtX3JhbmdlLCBTVkdBdHRyaWJ1dGVNb2RlLCBWYWx1
ZVJhbmdlQWxsLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlS
eDoKKyAgICBjYXNlIENTU1Byb3BlcnR5Unk6CisgICAgICAgIHJldHVybiBjb25zdW1lUnhPclJ5
KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlDdXJzb3I6CisgICAgICAgIHJldHVybiBj
b25zdW1lQ3Vyc29yKG1fcmFuZ2UsIG1fY29udGV4dCwgaW5RdWlya3NNb2RlKCkpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlDb250YWluOgorICAgICAgICByZXR1cm4gY29uc3VtZUNvbnRhaW4obV9y
YW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zZm9ybU9yaWdpbjoKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVUcmFuc2Zvcm1PcmlnaW4obV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVW5p
dGxlc3NRdWlyazo6Rm9yYmlkKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29udGVudDoKKyAgICAg
ICAgcmV0dXJuIGNvbnN1bWVDb250ZW50KG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFn
ZVNvdXJjZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlU291cmNlOgor
ICAgICAgICByZXR1cm4gY29uc3VtZUltYWdlT3JOb25lKG1fcmFuZ2UsIG1fY29udGV4dCk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVBlcnNwZWN0aXZlOgorICAgICAgICByZXR1cm4gY29uc3VtZVBl
cnNwZWN0aXZlKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIHVucmVzb2x2ZWRQcm9wZXJ0eSk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNjcm9sbFNuYXBDb29yZGluYXRlOgorICAgICAgICByZXR1
cm4gY29uc3VtZVNjcm9sbFNuYXBDb29yZGluYXRlKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlTY3JvbGxTbmFwUG9pbnRzWDoKKyAgICBjYXNlIENTU1By
b3BlcnR5U2Nyb2xsU25hcFBvaW50c1k6CisgICAgICAgIHJldHVybiBjb25zdW1lU2Nyb2xsU25h
cFBvaW50cyhtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVyVG9wUmlnaHRSYWRpdXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRS
YWRpdXM6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXM6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOgorICAgICAgICByZXR1cm4g
Y29uc3VtZUJvcmRlclJhZGl1c0Nvcm5lcihtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RmxleEdyb3VwOgorICAgICAgICByZXR1cm4gY29u
c3VtZUludGVnZXIobV9yYW5nZSwgMCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9yZGVyOgorICAg
ICAgICByZXR1cm4gY29uc3VtZUludGVnZXIobV9yYW5nZSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVRleHRVbmRlcmxpbmVQb3NpdGlvbjoKKyAgICAgICAgLy8gYXV0byB8IFsgdW5kZXIgfHwgWyBs
ZWZ0IHwgcmlnaHQgXSBdLCBidXQgd2Ugb25seSBzdXBwb3J0IGF1dG8gfCB1bmRlciBmb3Igbm93
CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3MzVGV4dERlY29yYXRp
b25zRW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudDxDU1NWYWx1ZUF1dG8s
IENTU1ZhbHVlVW5kZXI+KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlWZXJ0aWNhbEFs
aWduOgorICAgICAgICByZXR1cm4gY29uc3VtZVZlcnRpY2FsQWxpZ24obV9yYW5nZSwgbV9jb250
ZXh0Lm1vZGUoKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNoYXBlT3V0c2lkZToKKyAgICAgICAg
cmV0dXJuIGNvbnN1bWVTaGFwZU91dHNpZGUobV9yYW5nZSwgbV9jb250ZXh0KTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Q2xpcFBhdGg6CisgICAgICAgIHJldHVybiBjb25zdW1lV2Via2l0
Q2xpcFBhdGgobV9yYW5nZSwgbV9jb250ZXh0KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5SnVzdGlm
eUNvbnRlbnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFsaWduQ29udGVudDoKKyAgICAgICAgQVNT
RVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkpOworICAg
ICAgICByZXR1cm4gY29uc3VtZUNvbnRlbnREaXN0cmlidXRpb25PdmVyZmxvd1Bvc2l0aW9uKG1f
cmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVJlcGVhdDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlUmVwZWF0OgorICAgICAgICByZXR1cm4gY29u
c3VtZUJvcmRlckltYWdlUmVwZWF0KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJJbWFnZVNsaWNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTbGlj
ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCb3JkZXJJbWFnZVNsaWNlKHByb3BlcnR5LCBtX3Jh
bmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VPdXRzZXQ6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZU91dHNldDoKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVCb3JkZXJJbWFnZU91dHNldChtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
SW1hZ2VXaWR0aDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlV2lkdGg6
CisgICAgICAgIHJldHVybiBjb25zdW1lQm9yZGVySW1hZ2VXaWR0aChtX3JhbmdlKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2U6CisgICAgICAgIHJldHVybiBjb25zdW1l
V2Via2l0Qm9yZGVySW1hZ2UocHJvcGVydHksIG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3Q6CisgICAgICAgIHJldHVybiBjb25zdW1lUmVm
bGVjdChtX3JhbmdlLCBtX2NvbnRleHQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U2l6ZUFk
anVzdDoKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0ZvbnRTaXpl
QWRqdXN0RW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVGb250U2l6ZUFkanVzdCht
X3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5SW1hZ2VPcmllbnRhdGlvbjoKKyAgICAgICAg
QVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmltYWdlT3JpZW50YXRpb25FbmFibGVkKCkp
OworICAgICAgICByZXR1cm4gY29uc3VtZUltYWdlT3JpZW50YXRpb24obV9yYW5nZSk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50OgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQmxlbmRNb2RlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xp
cDoKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kT3JpZ2luOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9z
aXRpb25YOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZOgorICAgIGNh
c2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFza1Nv
dXJjZVR5cGU6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDbGlwOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kT3JpZ2luOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXNrQ2xpcDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0NvbXBv
c2l0ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXNrT3JpZ2luOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNr
UG9zaXRpb25YOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZOgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVD
b21tYVNlcGFyYXRlZEJhY2tncm91bmRDb21wb25lbnQodW5yZXNvbHZlZFByb3BlcnR5LCBtX3Jh
bmdlLCBtX2NvbnRleHQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFk6CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIGNhc2UgQ1NTUHJvcGVydHlBbGlnbkl0ZW1zOgorICAgICAgICBEQ0hFQ0so
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzR3JpZExheW91dEVuYWJsZWQoKSk7CisgICAgICAg
IHJldHVybiBjb25zdW1lQWxpZ25JdGVtcyhtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
SnVzdGlmeVNlbGY6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUFsaWduU2VsZjoKKyAgICAgICAgQVNT
RVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkpOworICAg
ICAgICByZXR1cm4gY29uc3VtZVNlbGZQb3NpdGlvbk92ZXJmbG93UG9zaXRpb24obV9yYW5nZSk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUp1c3RpZnlJdGVtczoKKyAgICAgICAgQVNTRVJUKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkpOworICAgICAgICByZXR1
cm4gY29uc3VtZUp1c3RpZnlJdGVtcyhtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5R3Jp
ZENvbHVtbkVuZDoKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZENvbHVtblN0YXJ0OgorICAgIGNh
c2UgQ1NTUHJvcGVydHlHcmlkUm93RW5kOgorICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkUm93U3Rh
cnQ6CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NHcmlkTGF5b3V0
RW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVHcmlkTGluZShtX3JhbmdlKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5R3JpZEF1dG9Db2x1bW5zOgorICAgIGNhc2UgQ1NTUHJvcGVydHlH
cmlkQXV0b1Jvd3M6CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NH
cmlkTGF5b3V0RW5hYmxlZCgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVHcmlkVHJhY2tMaXN0
KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIEdyaWRBdXRvKTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5R3JpZFRlbXBsYXRlQ29sdW1uczoKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZFRlbXBsYXRl
Um93czoKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlv
dXRFbmFibGVkKCkpOworICAgICAgICByZXR1cm4gY29uc3VtZUdyaWRUZW1wbGF0ZXNSb3dzT3JD
b2x1bW5zKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgIGNhc2UgQ1NTUHJvcGVydHlH
cmlkVGVtcGxhdGVBcmVhczoKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkpOworICAgICAgICByZXR1cm4gY29uc3VtZUdyaWRUZW1w
bGF0ZUFyZWFzKG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkQXV0b0Zsb3c6Cisg
ICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NHcmlkTGF5b3V0RW5hYmxl
ZCgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVHcmlkQXV0b0Zsb3cobV9yYW5nZSk7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorfQorCitzdGF0aWMgQ1NT
UHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVGb250RGlzcGxheShDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSkKK3sKKyAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVC
bG9jaywgQ1NTVmFsdWVTd2FwLCBDU1NWYWx1ZUZhbGxiYWNrLCBDU1NWYWx1ZU9wdGlvbmFsPihy
YW5nZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZUxpc3QqIGNvbnN1bWVGb250RmFjZVVuaWNvZGVS
YW5nZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NWYWx1ZUxpc3QqIHZh
bHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKworICAgIGRvIHsK
KyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UuY29uc3VtZUluY2x1
ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgaWYgKHRva2VuLnR5cGUoKSAhPSBVbmljb2RlUmFu
Z2VUb2tlbikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIFVDaGFyMzIg
c3RhcnQgPSB0b2tlbi51bmljb2RlUmFuZ2VTdGFydCgpOworICAgICAgICBVQ2hhcjMyIGVuZCA9
IHRva2VuLnVuaWNvZGVSYW5nZUVuZCgpOworICAgICAgICBpZiAoc3RhcnQgPiBlbmQpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgdmFsdWVzLT5hcHBlbmQoKkNTU1VuaWNv
ZGVSYW5nZVZhbHVlOjpjcmVhdGUoc3RhcnQsIGVuZCkpOworICAgIH0gd2hpbGUgKGNvbnN1bWVD
b21tYUluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKTsKKworICAgIHJldHVybiB2YWx1ZXM7Cit9
CisKK3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUZvbnRGYWNlU3JjVVJJKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIFN0
cmluZyB1cmwgPSBjb25zdW1lVXJsQXNTdHJpbmdWaWV3KHJhbmdlKS50b1N0cmluZygpOworICAg
IGlmICh1cmwuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIENTU0ZvbnRG
YWNlU3JjVmFsdWUqIHVyaVZhbHVlKENTU0ZvbnRGYWNlU3JjVmFsdWU6OmNyZWF0ZSh1cmwsIGNv
bnRleHQuY29tcGxldGVVUkwodXJsKSwgY29udGV4dC5zaG91bGRDaGVja0NvbnRlbnRTZWN1cml0
eVBvbGljeSgpKSk7CisgICAgdXJpVmFsdWUtPnNldFJlZmVycmVyKGNvbnRleHQucmVmZXJyZXIo
KSk7CisKKyAgICBpZiAocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSAhPSBDU1NWYWx1ZUZvcm1h
dCkKKyAgICAgICAgcmV0dXJuIHVyaVZhbHVlOworCisgICAgLy8gRklYTUU6IGh0dHBzOi8vZHJh
ZnRzLmNzc3dnLm9yZy9jc3MtZm9udHMgc2F5cyB0aGF0IGZvcm1hdCgpIGNvbnRhaW5zIGEgY29t
bWEtc2VwYXJhdGVkIGxpc3Qgb2Ygc3RyaW5ncywKKyAgICAvLyBidXQgQ1NTRm9udEZhY2VTcmNW
YWx1ZSBzdG9yZXMgb25seSBvbmUgZm9ybWF0LiBBbGxvd2luZyBvbmUgZm9ybWF0IGZvciBub3cu
CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlKTsK
KyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgYXJnID0gYXJncy5jb25zdW1lSW5jbHVkaW5nV2hp
dGVzcGFjZSgpOworICAgIGlmICgoYXJnLnR5cGUoKSAhPSBTdHJpbmdUb2tlbikgfHwgIWFyZ3Mu
YXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgdXJpVmFsdWUtPnNldEZvcm1h
dChhcmcudmFsdWUoKS50b1N0cmluZygpKTsKKyAgICByZXR1cm4gdXJpVmFsdWU7Cit9CisKK3N0
YXRpYyBDU1NWYWx1ZSogY29uc3VtZUZvbnRGYWNlU3JjTG9jYWwoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ1NTUGFy
c2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlKTsKKyAgICBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXNwb3NpdGlvbiBzaG91bGRDaGVja0NvbnRlbnRTZWN1cml0eVBvbGlj
eSA9IGNvbnRleHQuc2hvdWxkQ2hlY2tDb250ZW50U2VjdXJpdHlQb2xpY3koKTsKKyAgICBpZiAo
YXJncy5wZWVrKCkudHlwZSgpID09IFN0cmluZ1Rva2VuKSB7CisgICAgICAgIGNvbnN0IENTU1Bh
cnNlclRva2VuJiBhcmcgPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAg
ICAgIGlmICghYXJncy5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHJldHVybiBDU1NGb250RmFjZVNyY1ZhbHVlOjpjcmVhdGVMb2NhbChhcmcudmFsdWUoKS50
b1N0cmluZygpLCBzaG91bGRDaGVja0NvbnRlbnRTZWN1cml0eVBvbGljeSk7CisgICAgfQorICAg
IGlmIChhcmdzLnBlZWsoKS50eXBlKCkgPT0gSWRlbnRUb2tlbikgeworICAgICAgICBTdHJpbmcg
ZmFtaWx5TmFtZSA9IGNvbmNhdGVuYXRlRmFtaWx5TmFtZShhcmdzKTsKKyAgICAgICAgaWYgKCFh
cmdzLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJu
IENTU0ZvbnRGYWNlU3JjVmFsdWU6OmNyZWF0ZUxvY2FsKGZhbWlseU5hbWUsIHNob3VsZENoZWNr
Q29udGVudFNlY3VyaXR5UG9saWN5KTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K3N0YXRpYyBDU1NWYWx1ZUxpc3QqIGNvbnN1bWVGb250RmFjZVNyYyhDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBDU1NW
YWx1ZUxpc3QqIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsK
KworICAgIGRvIHsKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2Uu
cGVlaygpOworICAgICAgICBDU1NWYWx1ZSogcGFyc2VkVmFsdWUgPSBudWxscHRyOworICAgICAg
ICBpZiAodG9rZW4uZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlTG9jYWwpCisgICAgICAgICAgICBw
YXJzZWRWYWx1ZSA9IGNvbnN1bWVGb250RmFjZVNyY0xvY2FsKHJhbmdlLCBjb250ZXh0KTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lRm9udEZhY2VTcmNV
UkkocmFuZ2UsIGNvbnRleHQpOworICAgICAgICBpZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHZhbHVlcy0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7
CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpOwor
ICAgIHJldHVybiB2YWx1ZXM7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlRm9u
dEZhY2VEZXNjcmlwdG9yKENTU1Byb3BlcnR5SUQgcHJvcElkKQoreworICAgIENTU1ZhbHVlKiBw
YXJzZWRWYWx1ZSA9IG51bGxwdHI7CisgICAgc3dpdGNoIChwcm9wSWQpIHsKKyAgICBjYXNlIENT
U1Byb3BlcnR5Rm9udEZhbWlseToKKyAgICAgICAgaWYgKGNvbnN1bWVHZW5lcmljRmFtaWx5KG1f
cmFuZ2UpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBwYXJzZWRWYWx1ZSA9
IGNvbnN1bWVGYW1pbHlOYW1lKG1fcmFuZ2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENT
U1Byb3BlcnR5U3JjOiAvLyBUaGlzIGlzIGEgbGlzdCBvZiB1cmxzIG9yIGxvY2FsIHJlZmVyZW5j
ZXMuCisgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUZvbnRGYWNlU3JjKG1fcmFuZ2UsIG1f
Y29udGV4dCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlVbmljb2RlUmFu
Z2U6CisgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUZvbnRGYWNlVW5pY29kZVJhbmdlKG1f
cmFuZ2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udERpc3BsYXk6
CisgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUZvbnREaXNwbGF5KG1fcmFuZ2UpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0cmV0Y2g6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUZvbnRTdHlsZTogeworICAgICAgICBDU1NWYWx1ZUlEIGlkID0gbV9yYW5nZS5j
b25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgICAgIGlmICghQ1NTUGFyc2Vy
RmFzdFBhdGhzOjppc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUocHJvcElkLCBpZCwgbV9j
b250ZXh0Lm1vZGUoKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHBhcnNl
ZFZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoaWQpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50OgorICAgICAg
ICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVGb250VmFyaWFudExpc3QobV9yYW5nZSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250V2VpZ2h0OgorICAgICAgICBwYXJzZWRW
YWx1ZSA9IGNvbnN1bWVGb250V2VpZ2h0KG1fcmFuZ2UpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIENTU1Byb3BlcnR5Rm9udEZlYXR1cmVTZXR0aW5nczoKKyAgICAgICAgcGFyc2VkVmFsdWUg
PSBjb25zdW1lRm9udEZlYXR1cmVTZXR0aW5ncyhtX3JhbmdlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKCFwYXJzZWRWYWx1
ZSB8fCAhbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhZGRQ
cm9wZXJ0eShwcm9wSWQsIENTU1Byb3BlcnR5SW52YWxpZCwgKnBhcnNlZFZhbHVlLCBmYWxzZSk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVT
eXN0ZW1Gb250KGJvb2wgaW1wb3J0YW50KQoreworICAgIENTU1ZhbHVlSUQgc3lzdGVtRm9udElE
ID0gbV9yYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgQVNTRVJU
KHN5c3RlbUZvbnRJRCA+PSBDU1NWYWx1ZUNhcHRpb24gJiYgc3lzdGVtRm9udElEIDw9IENTU1Zh
bHVlU3RhdHVzQmFyKTsKKyAgICBpZiAoIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgRm9udFN0eWxlIGZvbnRTdHlsZSA9IEZvbnRTdHlsZU5vcm1hbDsKKyAg
ICBGb250V2VpZ2h0IGZvbnRXZWlnaHQgPSBGb250V2VpZ2h0Tm9ybWFsOworICAgIGZsb2F0IGZv
bnRTaXplID0gMDsKKyAgICBBdG9taWNTdHJpbmcgZm9udEZhbWlseTsKKyAgICBMYXlvdXRUaGVt
ZTo6dGhlbWUoKS5zeXN0ZW1Gb250KHN5c3RlbUZvbnRJRCwgZm9udFN0eWxlLCBmb250V2VpZ2h0
LCBmb250U2l6ZSwgZm9udEZhbWlseSk7CisKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZv
bnRTdHlsZSwgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50
aWZpZXIoZm9udFN0eWxlID09IEZvbnRTdHlsZUl0YWxpYyA/IENTU1ZhbHVlSXRhbGljIDogQ1NT
VmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9u
dFdlaWdodCwgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShmb250
V2VpZ2h0KSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXpl
LCBDU1NQcm9wZXJ0eUZvbnQsICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGZvbnRTaXplLCBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBpeGVscyksIGltcG9ydGFudCk7CisgICAgQ1NT
VmFsdWVMaXN0KiBmb250RmFtaWx5TGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBh
cmF0ZWQoKTsKKyAgICBmb250RmFtaWx5TGlzdC0+YXBwZW5kKCpDU1NGb250RmFtaWx5VmFsdWU6
OmNyZWF0ZShmb250RmFtaWx5KSk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFt
aWx5LCBDU1NQcm9wZXJ0eUZvbnQsICpmb250RmFtaWx5TGlzdCwgaW1wb3J0YW50KTsKKworICAg
IGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFN0cmV0Y2gsIENTU1Byb3BlcnR5Rm9udCwgKkNT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFsKSwgaW1wb3J0
YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50Q2FwcywgQ1NTUHJv
cGVydHlGb250LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVO
b3JtYWwpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlh
bnRMaWdhdHVyZXMsIENTU1Byb3BlcnR5Rm9udCwgKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJ
ZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFsKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUZvbnRWYXJpYW50TnVtZXJpYywgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOwor
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5TGluZUhlaWdodCwgQ1NTUHJvcGVydHlGb250LCAq
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBv
cnRhbnQpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpj
b25zdW1lRm9udChib29sIGltcG9ydGFudCkKK3sKKyAgICAvLyBMZXQncyBjaGVjayBpZiB0aGVy
ZSBpcyBhbiBpbmhlcml0IG9yIGluaXRpYWwgc29tZXdoZXJlIGluIHRoZSBzaG9ydGhhbmQuCisg
ICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSA9IG1fcmFuZ2U7CisgICAgd2hpbGUgKCFyYW5n
ZS5hdEVuZCgpKSB7CisgICAgICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5jb25zdW1lSW5jbHVk
aW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUluaGVyaXQg
fHwgaWQgPT0gQ1NTVmFsdWVJbml0aWFsKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICAvLyBPcHRpb25hbCBmb250LXN0eWxlLCBmb250LXZhcmlhbnQsIGZvbnQtc3RyZXRj
aCBhbmQgZm9udC13ZWlnaHQuCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZvbnRTdHlsZSA9IG51
bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZvbnRWYXJpYW50Q2FwcyA9IG51bGxwdHI7
CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZvbnRXZWlnaHQgPSBudWxscHRyOworICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBmb250U3RyZXRjaCA9IG51bGxwdHI7CisgICAgd2hpbGUgKCFtX3Jhbmdl
LmF0RW5kKCkpIHsKKyAgICAgICAgQ1NTVmFsdWVJRCBpZCA9IG1fcmFuZ2UucGVlaygpLmlkKCk7
CisgICAgICAgIGlmICghZm9udFN0eWxlICYmIENTU1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtl
eXdvcmRQcm9wZXJ0eUFuZFZhbHVlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCBpZCwgbV9jb250ZXh0
Lm1vZGUoKSkpIHsKKyAgICAgICAgICAgIGZvbnRTdHlsZSA9IGNvbnN1bWVJZGVudChtX3Jhbmdl
KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICghZm9udFZh
cmlhbnRDYXBzICYmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZVNtYWxs
Q2FwcykpIHsKKyAgICAgICAgICAgIC8vIEZvbnQgdmFyaWFudCBpbiB0aGUgc2hvcnRoYW5kIGlz
IHBhcnRpY3VsYXIsIGl0IG9ubHkgYWNjZXB0cyBub3JtYWwgb3Igc21hbGwtY2Fwcy4KKyAgICAg
ICAgICAgIC8vIFNlZSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWZvbnRzLyNwcm9wZGVm
LWZvbnQKKyAgICAgICAgICAgIGZvbnRWYXJpYW50Q2FwcyA9IGNvbnN1bWVGb250VmFyaWFudENT
UzIxKG1fcmFuZ2UpOworICAgICAgICAgICAgaWYgKGZvbnRWYXJpYW50Q2FwcykKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZvbnRXZWlnaHQpIHsK
KyAgICAgICAgICAgIGZvbnRXZWlnaHQgPSBjb25zdW1lRm9udFdlaWdodChtX3JhbmdlKTsKKyAg
ICAgICAgICAgIGlmIChmb250V2VpZ2h0KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CisgICAgICAgIGlmICghZm9udFN0cmV0Y2ggJiYgQ1NTUGFyc2VyRmFzdFBhdGhzOjpp
c1ZhbGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUoQ1NTUHJvcGVydHlGb250U3RyZXRjaCwgaWQs
IG1fY29udGV4dC5tb2RlKCkpKQorICAgICAgICAgICAgZm9udFN0cmV0Y2ggPSBjb25zdW1lSWRl
bnQobV9yYW5nZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIGlmIChtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGFk
ZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFN0eWxlLCBDU1NQcm9wZXJ0eUZvbnQsIGZvbnRTdHls
ZSA/ICpmb250U3R5bGUgOiAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NT
VmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9u
dFZhcmlhbnRDYXBzLCBDU1NQcm9wZXJ0eUZvbnQsIGZvbnRWYXJpYW50Q2FwcyA/ICpmb250VmFy
aWFudENhcHMgOiAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVO
b3JtYWwpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlh
bnRMaWdhdHVyZXMsIENTU1Byb3BlcnR5Rm9udCwgKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJ
ZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFsKSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUZvbnRWYXJpYW50TnVtZXJpYywgQ1NTUHJvcGVydHlGb250LCAqQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBvcnRhbnQpOwor
CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCBDU1NQcm9wZXJ0eUZvbnQs
IGZvbnRXZWlnaHQgPyAqZm9udFdlaWdodCA6ICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRl
bnRpZmllcihDU1NWYWx1ZU5vcm1hbCksIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NT
UHJvcGVydHlGb250U3RyZXRjaCwgQ1NTUHJvcGVydHlGb250LCBmb250U3RyZXRjaCA/ICpmb250
U3RyZXRjaCA6ICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5v
cm1hbCksIGltcG9ydGFudCk7CisKKyAgICAvLyBOb3cgYSBmb250IHNpemUgX211c3RfIGNvbWUu
CisgICAgQ1NTVmFsdWUqIGZvbnRTaXplID0gY29uc3VtZUZvbnRTaXplKG1fcmFuZ2UsIG1fY29u
dGV4dC5tb2RlKCkpOworICAgIGlmICghZm9udFNpemUgfHwgbV9yYW5nZS5hdEVuZCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXpl
LCBDU1NQcm9wZXJ0eUZvbnQsICpmb250U2l6ZSwgaW1wb3J0YW50KTsKKworICAgIGlmIChjb25z
dW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKG1fcmFuZ2UpKSB7CisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBsaW5lSGVpZ2h0ID0gY29uc3VtZUxpbmVIZWlnaHQobV9yYW5nZSwgbV9jb250
ZXh0Lm1vZGUoKSk7CisgICAgICAgIGlmICghbGluZUhlaWdodCkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlMaW5lSGVpZ2h0LCBDU1NQ
cm9wZXJ0eUZvbnQsICpsaW5lSGVpZ2h0LCBpbXBvcnRhbnQpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5TGluZUhlaWdodCwgQ1NTUHJvcGVydHlGb250LCAq
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3JtYWwpLCBpbXBv
cnRhbnQpOworICAgIH0KKworICAgIC8vIEZvbnQgZmFtaWx5IG11c3QgY29tZSBub3cuCisgICAg
Q1NTVmFsdWUqIHBhcnNlZEZhbWlseVZhbHVlID0gY29uc3VtZUZvbnRGYW1pbHkobV9yYW5nZSk7
CisgICAgaWYgKCFwYXJzZWRGYW1pbHlWYWx1ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFtaWx5LCBDU1NQcm9wZXJ0eUZvbnQsICpw
YXJzZWRGYW1pbHlWYWx1ZSwgaW1wb3J0YW50KTsKKworICAgIC8vIEZJWE1FOiBodHRwOi8vd3d3
LnczLm9yZy9UUi8yMDExL1dELWNzczMtZm9udHMtMjAxMTAzMjQvI2ZvbnQtcHJvcCByZXF1aXJl
cyB0aGF0CisgICAgLy8gImZvbnQtc3RyZXRjaCIsICJmb250LXNpemUtYWRqdXN0IiwgYW5kICJm
b250LWtlcm5pbmciIGJlIHJlc2V0IHRvIHRoZWlyIGluaXRpYWwgdmFsdWVzCisgICAgLy8gYnV0
IHdlIGRvbid0IHNlZW0gdG8gc3VwcG9ydCB0aGVtIGF0IHRoZSBtb21lbnQuIFRoZXkgc2hvdWxk
IGFsc28gYmUgYWRkZWQgaGVyZSBvbmNlIGltcGxlbWVudGVkLgorICAgIHJldHVybiBtX3Jhbmdl
LmF0RW5kKCk7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVGb250VmFyaWFu
dFNob3J0aGFuZChib29sIGltcG9ydGFudCkKK3sKKyAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1Zh
bHVlTm9ybWFsLCBDU1NWYWx1ZU5vbmU+KG1fcmFuZ2UucGVlaygpLmlkKCkpKSB7CisgICAgICAg
IGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXMsIENTU1Byb3BlcnR5
Rm9udFZhcmlhbnQsICpjb25zdW1lSWRlbnQobV9yYW5nZSksIGltcG9ydGFudCk7CisgICAgICAg
IGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRDYXBzLCBDU1NQcm9wZXJ0eUZvbnRW
YXJpYW50LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb3Jt
YWwpLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gbV9yYW5nZS5hdEVuZCgpOworICAgIH0K
KworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjYXBzVmFsdWUgPSBudWxscHRyOworICAgIEZvbnRW
YXJpYW50TGlnYXR1cmVzUGFyc2VyIGxpZ2F0dXJlc1BhcnNlcjsKKyAgICBGb250VmFyaWFudE51
bWVyaWNQYXJzZXIgbnVtZXJpY1BhcnNlcjsKKyAgICBkbyB7CisgICAgICAgIEZvbnRWYXJpYW50
TGlnYXR1cmVzUGFyc2VyOjpQYXJzZVJlc3VsdCBsaWdhdHVyZXNQYXJzZVJlc3VsdCA9IGxpZ2F0
dXJlc1BhcnNlci5jb25zdW1lTGlnYXR1cmUobV9yYW5nZSk7CisgICAgICAgIEZvbnRWYXJpYW50
TnVtZXJpY1BhcnNlcjo6UGFyc2VSZXN1bHQgbnVtZXJpY1BhcnNlUmVzdWx0ID0gbnVtZXJpY1Bh
cnNlci5jb25zdW1lTnVtZXJpYyhtX3JhbmdlKTsKKyAgICAgICAgaWYgKGxpZ2F0dXJlc1BhcnNl
UmVzdWx0ID09IEZvbnRWYXJpYW50TGlnYXR1cmVzUGFyc2VyOjpQYXJzZVJlc3VsdDo6Q29uc3Vt
ZWRWYWx1ZQorICAgICAgICAgICAgfHwgbnVtZXJpY1BhcnNlUmVzdWx0ID09IEZvbnRWYXJpYW50
TnVtZXJpY1BhcnNlcjo6UGFyc2VSZXN1bHQ6OkNvbnN1bWVkVmFsdWUpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICBpZiAobGlnYXR1cmVzUGFyc2VSZXN1bHQgPT0gRm9udFZhcmlh
bnRMaWdhdHVyZXNQYXJzZXI6OlBhcnNlUmVzdWx0OjpEaXNhbGxvd2VkVmFsdWUKKyAgICAgICAg
ICAgIHx8IG51bWVyaWNQYXJzZVJlc3VsdCA9PSBGb250VmFyaWFudE51bWVyaWNQYXJzZXI6OlBh
cnNlUmVzdWx0OjpEaXNhbGxvd2VkVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgQ1NTVmFsdWVJRCBpZCA9IG1fcmFuZ2UucGVlaygpLmlkKCk7CisgICAgICAgIHN3
aXRjaCAoaWQpIHsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVNtYWxsQ2FwczoKKyAgICAgICAgY2Fz
ZSBDU1NWYWx1ZUFsbFNtYWxsQ2FwczoKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVBldGl0ZUNhcHM6
CisgICAgICAgIGNhc2UgQ1NTVmFsdWVBbGxQZXRpdGVDYXBzOgorICAgICAgICBjYXNlIENTU1Zh
bHVlVW5pY2FzZToKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVRpdGxpbmdDYXBzOgorICAgICAgICAg
ICAgLy8gT25seSBvbmUgY2FwcyB2YWx1ZSBwZXJtaXR0ZWQgaW4gZm9udC12YXJpYW50IGdyYW1t
YXIuCisgICAgICAgICAgICBpZiAoY2Fwc1ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIGNhcHNWYWx1ZSA9IGNvbnN1bWVJZGVudChtX3JhbmdlKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgfSB3aGlsZSAoIW1fcmFuZ2UuYXRFbmQoKSk7CisKKyAgICBh
ZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50TGlnYXR1cmVzLCBDU1NQcm9wZXJ0eUZv
bnRWYXJpYW50LCAqbGlnYXR1cmVzUGFyc2VyLmZpbmFsaXplVmFsdWUoKSwgaW1wb3J0YW50KTsK
KyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50TnVtZXJpYywgQ1NTUHJvcGVy
dHlGb250VmFyaWFudCwgKm51bWVyaWNQYXJzZXIuZmluYWxpemVWYWx1ZSgpLCBpbXBvcnRhbnQp
OworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRDYXBzLCBDU1NQcm9wZXJ0
eUZvbnRWYXJpYW50LCBjYXBzVmFsdWUgPyAqY2Fwc1ZhbHVlIDogKkNTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9ybWFsKSwgaW1wb3J0YW50KTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUJvcmRlclNwYWNp
bmcoYm9vbCBpbXBvcnRhbnQpCit7CisgICAgQ1NTVmFsdWUqIGhvcml6b250YWxTcGFjaW5nID0g
Y29uc3VtZUxlbmd0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlTm9uTmVn
YXRpdmUsIFVuaXRsZXNzUXVpcms6OkFsbG93KTsKKyAgICBpZiAoIWhvcml6b250YWxTcGFjaW5n
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQ1NTVmFsdWUqIHZlcnRpY2FsU3BhY2luZyA9
IGhvcml6b250YWxTcGFjaW5nOworICAgIGlmICghbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICB2
ZXJ0aWNhbFNwYWNpbmcgPSBjb25zdW1lTGVuZ3RoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCks
IFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOworICAgIGlmICgh
dmVydGljYWxTcGFjaW5nIHx8ICFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFj
aW5nLCBDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcsICpob3Jpem9udGFsU3BhY2luZywgaW1wb3J0
YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3Bh
Y2luZywgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nLCAqdmVydGljYWxTcGFjaW5nLCBpbXBvcnRh
bnQpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVTaW5n
bGVWaWV3cG9ydERlc2NyaXB0b3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1Byb3Bl
cnR5SUQgcHJvcElkLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgQ1NTVmFs
dWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eU1pbldpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhXaWR0aDoK
KyAgICBjYXNlIENTU1Byb3BlcnR5TWluSGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhI
ZWlnaHQ6CisgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVJ
bnRlcm5hbEV4dGVuZFRvWm9vbSkKKyAgICAgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFu
Z2UpOworICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFy
c2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWlu
Wm9vbToKKyAgICBjYXNlIENTU1Byb3BlcnR5TWF4Wm9vbToKKyAgICBjYXNlIENTU1Byb3BlcnR5
Wm9vbTogeworICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICAgICAgcmV0
dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgICAgIENTU1ZhbHVlKiBwYXJzZWRWYWx1ZSA9
IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgIGlm
IChwYXJzZWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBwYXJzZWRWYWx1ZTsKKyAgICAgICAg
cmV0dXJuIGNvbnN1bWVQZXJjZW50KHJhbmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAg
IH0KKyAgICBjYXNlIENTU1Byb3BlcnR5VXNlclpvb206CisgICAgICAgIHJldHVybiBjb25zdW1l
SWRlbnQ8Q1NTVmFsdWVab29tLCBDU1NWYWx1ZUZpeGVkPihyYW5nZSk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eU9yaWVudGF0aW9uOgorICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVl
QXV0bywgQ1NTVmFsdWVQb3J0cmFpdCwgQ1NTVmFsdWVMYW5kc2NhcGU+KHJhbmdlKTsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVmlld3BvcnREZXNjcmlwdG9yKENTU1By
b3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKK3sKKyAgICBBU1NFUlQoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6Y3NzVmlld3BvcnRFbmFibGVkKCkgfHwgaXNVQVNoZWV0QmVoYXZpb3Io
bV9jb250ZXh0Lm1vZGUoKSkpOworCisgICAgc3dpdGNoIChwcm9wSWQpIHsKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2lkdGg6IHsKKyAgICAgICAgQ1NTVmFsdWUqIG1pbldpZHRoID0gY29uc3VtZVNp
bmdsZVZpZXdwb3J0RGVzY3JpcHRvcihtX3JhbmdlLCBDU1NQcm9wZXJ0eU1pbldpZHRoLCBtX2Nv
bnRleHQubW9kZSgpKTsKKyAgICAgICAgaWYgKCFtaW5XaWR0aCkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgQ1NTVmFsdWUqIG1heFdpZHRoID0gbWluV2lkdGg7CisgICAgICAg
IGlmICghbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICAgICAgbWF4V2lkdGggPSBjb25zdW1lU2lu
Z2xlVmlld3BvcnREZXNjcmlwdG9yKG1fcmFuZ2UsIENTU1Byb3BlcnR5TWF4V2lkdGgsIG1fY29u
dGV4dC5tb2RlKCkpOworICAgICAgICBpZiAoIW1heFdpZHRoIHx8ICFtX3JhbmdlLmF0RW5kKCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3Bl
cnR5TWluV2lkdGgsIENTU1Byb3BlcnR5SW52YWxpZCwgKm1pbldpZHRoLCBpbXBvcnRhbnQpOwor
ICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1heFdpZHRoLCBDU1NQcm9wZXJ0eUludmFs
aWQsICptYXhXaWR0aCwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIGNhc2UgQ1NTUHJvcGVydHlIZWlnaHQ6IHsKKyAgICAgICAgQ1NTVmFsdWUqIG1pbkhlaWdo
dCA9IGNvbnN1bWVTaW5nbGVWaWV3cG9ydERlc2NyaXB0b3IobV9yYW5nZSwgQ1NTUHJvcGVydHlN
aW5IZWlnaHQsIG1fY29udGV4dC5tb2RlKCkpOworICAgICAgICBpZiAoIW1pbkhlaWdodCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgQ1NTVmFsdWUqIG1heEhlaWdodCA9IG1p
bkhlaWdodDsKKyAgICAgICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICBtYXhI
ZWlnaHQgPSBjb25zdW1lU2luZ2xlVmlld3BvcnREZXNjcmlwdG9yKG1fcmFuZ2UsIENTU1Byb3Bl
cnR5TWF4SGVpZ2h0LCBtX2NvbnRleHQubW9kZSgpKTsKKyAgICAgICAgaWYgKCFtYXhIZWlnaHQg
fHwgIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlNaW5IZWlnaHQsIENTU1Byb3BlcnR5SW52YWxpZCwgKm1p
bkhlaWdodCwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlNYXhI
ZWlnaHQsIENTU1Byb3BlcnR5SW52YWxpZCwgKm1heEhlaWdodCwgaW1wb3J0YW50KTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5XaWR0aDoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5TWF4V2lkdGg6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbkhlaWdo
dDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TWF4SGVpZ2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlN
aW5ab29tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhab29tOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlab29tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlVc2VyWm9vbToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5T3JpZW50YXRpb246IHsKKyAgICAgICAgQ1NTVmFsdWUqIHBhcnNlZFZhbHVlID0gY29uc3Vt
ZVNpbmdsZVZpZXdwb3J0RGVzY3JpcHRvcihtX3JhbmdlLCBwcm9wSWQsIG1fY29udGV4dC5tb2Rl
KCkpOworICAgICAgICBpZiAoIXBhcnNlZFZhbHVlIHx8ICFtX3JhbmdlLmF0RW5kKCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFkZFByb3BlcnR5KHByb3BJZCwgQ1NTUHJv
cGVydHlJbnZhbGlkLCAqcGFyc2VkVmFsdWUsIGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
fQorCitzdGF0aWMgYm9vbCBjb25zdW1lQ29sdW1uV2lkdGhPckNvdW50KENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlLCBDU1NWYWx1ZSomIGNvbHVtbldpZHRoLCBDU1NWYWx1ZSomIGNvbHVtbkNv
dW50KQoreworICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pIHsKKyAg
ICAgICAgY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIGlmICghY29sdW1uV2lkdGgpIHsKKyAgICAgICAgY29sdW1uV2lkdGggPSBjb25zdW1lQ29s
dW1uV2lkdGgocmFuZ2UpOworICAgICAgICBpZiAoY29sdW1uV2lkdGgpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKCFjb2x1bW5Db3VudCkKKyAgICAgICAgY29sdW1u
Q291bnQgPSBjb25zdW1lQ29sdW1uQ291bnQocmFuZ2UpOworICAgIHJldHVybiBjb2x1bW5Db3Vu
dDsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUNvbHVtbnMoYm9vbCBpbXBv
cnRhbnQpCit7CisgICAgQ1NTVmFsdWUqIGNvbHVtbldpZHRoID0gbnVsbHB0cjsKKyAgICBDU1NW
YWx1ZSogY29sdW1uQ291bnQgPSBudWxscHRyOworICAgIGlmICghY29uc3VtZUNvbHVtbldpZHRo
T3JDb3VudChtX3JhbmdlLCBjb2x1bW5XaWR0aCwgY29sdW1uQ291bnQpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgY29uc3VtZUNvbHVtbldpZHRoT3JDb3VudChtX3JhbmdlLCBjb2x1bW5X
aWR0aCwgY29sdW1uQ291bnQpOworICAgIGlmICghbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjb2x1bW5XaWR0aCkKKyAgICAgICAgY29sdW1uV2lkdGgg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUF1dG8pOworICAg
IGlmICghY29sdW1uQ291bnQpCisgICAgICAgIGNvbHVtbkNvdW50ID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVBdXRvKTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUNvbHVtbldpZHRoLCBDU1NQcm9wZXJ0eUludmFsaWQsICpjb2x1bW5XaWR0aCwgaW1w
b3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbHVtbkNvdW50LCBDU1NQcm9w
ZXJ0eUludmFsaWQsICpjb2x1bW5Db3VudCwgaW1wb3J0YW50KTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KGNv
bnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCwgYm9vbCBpbXBvcnRhbnQpCit7
CisgICAgQVNTRVJUKHNob3J0aGFuZC5sZW5ndGgoKSA8PSA2KTsgLy8gRXhpc3Rpbmcgc2hvcnRo
YW5kcyBoYXZlIGF0IG1vc3QgNiBsb25naGFuZHMuCisgICAgY29uc3QgQ1NTVmFsdWUqIGxvbmdo
YW5kc1s2XSA9IHsgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciB9OworICAgIGNvbnN0IENTU1Byb3BlcnR5SUQqIHNob3J0aGFuZFByb3BlcnRpZXMg
PSBzaG9ydGhhbmQucHJvcGVydGllcygpOworICAgIGRvIHsKKyAgICAgICAgYm9vbCBmb3VuZExv
bmdoYW5kID0gZmFsc2U7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyAhZm91bmRMb25naGFu
ZCAmJiBpIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChsb25n
aGFuZHNbaV0pCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBsb25naGFu
ZHNbaV0gPSBwYXJzZVNpbmdsZVZhbHVlKHNob3J0aGFuZFByb3BlcnRpZXNbaV0sIHNob3J0aGFu
ZC5pZCgpKTsKKyAgICAgICAgICAgIGlmIChsb25naGFuZHNbaV0pCisgICAgICAgICAgICAgICAg
Zm91bmRMb25naGFuZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmb3VuZExvbmdo
YW5kKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gd2hpbGUgKCFtX3JhbmdlLmF0
RW5kKCkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7
ICsraSkgeworICAgICAgICBpZiAobG9uZ2hhbmRzW2ldKQorICAgICAgICAgICAgYWRkUHJvcGVy
dHkoc2hvcnRoYW5kUHJvcGVydGllc1tpXSwgc2hvcnRoYW5kLmlkKCksICpsb25naGFuZHNbaV0s
IGltcG9ydGFudCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KHNob3J0
aGFuZFByb3BlcnRpZXNbaV0sIHNob3J0aGFuZC5pZCgpLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVh
dGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUZsZXgoYm9vbCBpbXBvcnRhbnQp
Cit7CisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB1bnNldFZhbHVlID0gLTE7CisgICAgZG91Ymxl
IGZsZXhHcm93ID0gdW5zZXRWYWx1ZTsKKyAgICBkb3VibGUgZmxleFNocmluayA9IHVuc2V0VmFs
dWU7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZsZXhCYXNpcyA9IG51bGxwdHI7CisKKyAgICBp
ZiAobV9yYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpIHsKKyAgICAgICAgZmxleEdy
b3cgPSAwOworICAgICAgICBmbGV4U2hyaW5rID0gMDsKKyAgICAgICAgZmxleEJhc2lzID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVBdXRvKTsKKyAgICAgICAg
bV9yYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICAgICAgd2hpbGUgKCFtX3JhbmdlLmF0RW5kKCkg
JiYgaW5kZXgrKyA8IDMpIHsKKyAgICAgICAgICAgIGRvdWJsZSBudW07CisgICAgICAgICAgICBp
ZiAoY29uc3VtZU51bWJlclJhdyhtX3JhbmdlLCBudW0pKSB7CisgICAgICAgICAgICAgICAgaWYg
KG51bSA8IDApCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICBpZiAoZmxleEdyb3cgPT0gdW5zZXRWYWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgZmxl
eEdyb3cgPSBudW07CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxleFNocmluayA9PSB1bnNl
dFZhbHVlKQorICAgICAgICAgICAgICAgICAgICBmbGV4U2hyaW5rID0gbnVtOworICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKCFudW0pIC8vIGZsZXggb25seSBhbGxvd3MgYSBiYXNpcyBvZiAwIChz
YW5zIHVuaXRzKSBpZiBmbGV4LWdyb3cgYW5kIGZsZXgtc2hyaW5rIHZhbHVlcyBoYXZlIGFscmVh
ZHkgYmVlbiBzZXQuCisgICAgICAgICAgICAgICAgICAgIGZsZXhCYXNpcyA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUoMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQaXhlbHMpOwor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfSBlbHNlIGlmICghZmxleEJhc2lzKSB7CisgICAgICAgICAgICAgICAgaWYg
KG1fcmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICAgICAgICAgICAg
ICBmbGV4QmFzaXMgPSBjb25zdW1lSWRlbnQobV9yYW5nZSk7CisgICAgICAgICAgICAgICAgaWYg
KCFmbGV4QmFzaXMpCisgICAgICAgICAgICAgICAgICAgIGZsZXhCYXNpcyA9IGNvbnN1bWVMZW5n
dGhPclBlcmNlbnQobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgVmFsdWVSYW5nZU5vbk5lZ2F0
aXZlKTsKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT0gMiAmJiAhbV9yYW5nZS5hdEVuZCgp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGluZGV4ID09IDApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIGlmIChmbGV4R3JvdyA9PSB1bnNldFZhbHVlKQorICAgICAgICAgICAgZmxleEdy
b3cgPSAxOworICAgICAgICBpZiAoZmxleFNocmluayA9PSB1bnNldFZhbHVlKQorICAgICAgICAg
ICAgZmxleFNocmluayA9IDE7CisgICAgICAgIGlmICghZmxleEJhc2lzKQorICAgICAgICAgICAg
ZmxleEJhc2lzID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLCBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGU6OlBlcmNlbnRhZ2UpOworICAgIH0KKworICAgIGlmICghbV9yYW5nZS5hdEVu
ZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlG
bGV4R3JvdywgQ1NTUHJvcGVydHlGbGV4LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShjbGFt
cFRvPGZsb2F0PihmbGV4R3JvdyksIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVy
KSwgaW1wb3J0YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZsZXhTaHJpbmssIENT
U1Byb3BlcnR5RmxleCwgKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoY2xhbXBUbzxmbG9hdD4o
ZmxleFNocmluayksIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6TnVtYmVyKSwgaW1wb3J0
YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZsZXhCYXNpcywgQ1NTUHJvcGVydHlG
bGV4LCAqZmxleEJhc2lzLCBpbXBvcnRhbnQpOworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lQm9yZGVyKGJvb2wgaW1wb3J0YW50KQoreworICAg
IENTU1ZhbHVlKiB3aWR0aCA9IG51bGxwdHI7CisgICAgY29uc3QgQ1NTVmFsdWUqIHN0eWxlID0g
bnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogY29sb3IgPSBudWxscHRyOworCisgICAgd2hpbGUgKCF3
aWR0aCB8fCAhc3R5bGUgfHwgIWNvbG9yKSB7CisgICAgICAgIGlmICghd2lkdGgpIHsKKyAgICAg
ICAgICAgIHdpZHRoID0gY29uc3VtZUxpbmVXaWR0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgp
LCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOworICAgICAgICAgICAgaWYgKHdpZHRoKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICghc3R5bGUpIHsKKyAg
ICAgICAgICAgIHN0eWxlID0gcGFyc2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUJvcmRlckxlZnRT
dHlsZSwgQ1NTUHJvcGVydHlCb3JkZXIpOworICAgICAgICAgICAgaWYgKHN0eWxlKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICghY29sb3IpIHsKKyAg
ICAgICAgICAgIGNvbG9yID0gY29uc3VtZUNvbG9yKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkp
OworICAgICAgICAgICAgaWYgKGNvbG9yKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICghd2lkdGggJiYgIXN0eWxl
ICYmICFjb2xvcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCF3aWR0aCkKKyAg
ICAgICAgd2lkdGggPSBDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCk7Cisg
ICAgaWYgKCFzdHlsZSkKKyAgICAgICAgc3R5bGUgPSBDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxl
Z2FjeUltcGxpY2l0KCk7CisgICAgaWYgKCFjb2xvcikKKyAgICAgICAgY29sb3IgPSBDU1NJbml0
aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCk7CisKKyAgICBhZGRFeHBhbmRlZFByb3Bl
cnR5Rm9yVmFsdWUoQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgKndpZHRoLCBpbXBvcnRhbnQpOwor
ICAgIGFkZEV4cGFuZGVkUHJvcGVydHlGb3JWYWx1ZShDU1NQcm9wZXJ0eUJvcmRlclN0eWxlLCAq
c3R5bGUsIGltcG9ydGFudCk7CisgICAgYWRkRXhwYW5kZWRQcm9wZXJ0eUZvclZhbHVlKENTU1By
b3BlcnR5Qm9yZGVyQ29sb3IsICpjb2xvciwgaW1wb3J0YW50KTsKKyAgICBhZGRFeHBhbmRlZFBy
b3BlcnR5Rm9yVmFsdWUoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZSwgKkNTU0luaXRpYWxWYWx1ZTo6
Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKworICAgIHJldHVybiBtX3Jhbmdl
LmF0RW5kKCk7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWU0VmFsdWVzKGNv
bnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCwgYm9vbCBpbXBvcnRhbnQpCit7
CisgICAgQVNTRVJUKHNob3J0aGFuZC5sZW5ndGgoKSA9PSA0KTsKKyAgICBjb25zdCBDU1NQcm9w
ZXJ0eUlEKiBsb25naGFuZHMgPSBzaG9ydGhhbmQucHJvcGVydGllcygpOworICAgIGNvbnN0IENT
U1ZhbHVlKiB0b3AgPSBwYXJzZVNpbmdsZVZhbHVlKGxvbmdoYW5kc1swXSwgc2hvcnRoYW5kLmlk
KCkpOworICAgIGlmICghdG9wKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCBD
U1NWYWx1ZSogcmlnaHQgPSBwYXJzZVNpbmdsZVZhbHVlKGxvbmdoYW5kc1sxXSwgc2hvcnRoYW5k
LmlkKCkpOworICAgIGNvbnN0IENTU1ZhbHVlKiBib3R0b20gPSBudWxscHRyOworICAgIGNvbnN0
IENTU1ZhbHVlKiBsZWZ0ID0gbnVsbHB0cjsKKyAgICBpZiAocmlnaHQpIHsKKyAgICAgICAgYm90
dG9tID0gcGFyc2VTaW5nbGVWYWx1ZShsb25naGFuZHNbMl0sIHNob3J0aGFuZC5pZCgpKTsKKyAg
ICAgICAgaWYgKGJvdHRvbSkKKyAgICAgICAgICAgIGxlZnQgPSBwYXJzZVNpbmdsZVZhbHVlKGxv
bmdoYW5kc1szXSwgc2hvcnRoYW5kLmlkKCkpOworICAgIH0KKworICAgIGlmICghcmlnaHQpCisg
ICAgICAgIHJpZ2h0ID0gdG9wOworICAgIGlmICghYm90dG9tKQorICAgICAgICBib3R0b20gPSB0
b3A7CisgICAgaWYgKCFsZWZ0KQorICAgICAgICBsZWZ0ID0gcmlnaHQ7CisKKyAgICBhZGRQcm9w
ZXJ0eShsb25naGFuZHNbMF0sIHNob3J0aGFuZC5pZCgpLCAqdG9wLCBpbXBvcnRhbnQpOworICAg
IGFkZFByb3BlcnR5KGxvbmdoYW5kc1sxXSwgc2hvcnRoYW5kLmlkKCksICpyaWdodCwgaW1wb3J0
YW50KTsKKyAgICBhZGRQcm9wZXJ0eShsb25naGFuZHNbMl0sIHNob3J0aGFuZC5pZCgpLCAqYm90
dG9tLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KGxvbmdoYW5kc1szXSwgc2hvcnRoYW5k
LmlkKCksICpsZWZ0LCBpbXBvcnRhbnQpOworCisgICAgcmV0dXJuIG1fcmFuZ2UuYXRFbmQoKTsK
K30KKworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUJvcmRlckltYWdlKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHksIGJvb2wgaW1wb3J0YW50KQoreworICAgIENTU1ZhbHVlKiBzb3VyY2Ug
PSBudWxscHRyOworICAgIENTU1ZhbHVlKiBzbGljZSA9IG51bGxwdHI7CisgICAgQ1NTVmFsdWUq
IHdpZHRoID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogb3V0c2V0ID0gbnVsbHB0cjsKKyAgICBD
U1NWYWx1ZSogcmVwZWF0ID0gbnVsbHB0cjsKKyAgICBpZiAoY29uc3VtZUJvcmRlckltYWdlQ29t
cG9uZW50cyhwcm9wZXJ0eSwgbV9yYW5nZSwgbV9jb250ZXh0LCBzb3VyY2UsIHNsaWNlLCB3aWR0
aCwgb3V0c2V0LCByZXBlYXQpKSB7CisgICAgICAgIHN3aXRjaCAocHJvcGVydHkpIHsKKyAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZToKKyAgICAgICAgICAgIGFkZFBy
b3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlU291cmNlLCBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tCb3hJbWFnZSwgc291cmNlID8gKnNvdXJjZSA6ICpDU1NJbml0aWFsVmFsdWU6OmNy
ZWF0ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0
eShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVNsaWNlLCBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tCb3hJbWFnZSwgc2xpY2UgPyAqc2xpY2UgOiAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdh
Y3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJv
cGVydHlXZWJraXRNYXNrQm94SW1hZ2VXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1h
Z2UsIHdpZHRoID8gKndpZHRoIDogKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGlj
aXQoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Vi
a2l0TWFza0JveEltYWdlT3V0c2V0LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgb3V0
c2V0ID8gKm91dHNldCA6ICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCks
IGltcG9ydGFudCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tCb3hJbWFnZVJlcGVhdCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2UsIHJlcGVhdCA/
ICpyZXBlYXQgOiAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBv
cnRhbnQpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJJbWFnZToKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVy
SW1hZ2VTb3VyY2UsIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2UsIHNvdXJjZSA/ICpzb3VyY2UgOiAq
Q1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAg
ICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNsaWNlLCBDU1NQcm9w
ZXJ0eUJvcmRlckltYWdlLCBzbGljZSA/ICpzbGljZSA6ICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0
ZUxlZ2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUJvcmRlckltYWdlV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2UsIHdpZHRo
ID8gKndpZHRoIDogKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1w
b3J0YW50KTsKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VP
dXRzZXQsIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2UsIG91dHNldCA/ICpvdXRzZXQgOiAqQ1NTSW5p
dGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgICAgICAg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVJlcGVhdCwgQ1NTUHJvcGVydHlC
b3JkZXJJbWFnZSwgcmVwZWF0ID8gKnJlcGVhdCA6ICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxl
Z2FjeUltcGxpY2l0KCksIGltcG9ydGFudCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsK
K30KKworc3RhdGljIGlubGluZSBDU1NWYWx1ZUlEIG1hcEZyb21QYWdlQnJlYWtCZXR3ZWVuKENT
U1ZhbHVlSUQgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlID09IENTU1ZhbHVlQWx3YXlzKQorICAg
ICAgICByZXR1cm4gQ1NTVmFsdWVQYWdlOworICAgIGlmICh2YWx1ZSA9PSBDU1NWYWx1ZUF1dG8g
fHwgdmFsdWUgPT0gQ1NTVmFsdWVBdm9pZCB8fCB2YWx1ZSA9PSBDU1NWYWx1ZUxlZnQgfHwgdmFs
dWUgPT0gQ1NTVmFsdWVSaWdodCkKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBD
U1NWYWx1ZUludmFsaWQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgQ1NTVmFsdWVJRCBtYXBGcm9tQ29s
dW1uQnJlYWtCZXR3ZWVuKENTU1ZhbHVlSUQgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlID09IENT
U1ZhbHVlQWx3YXlzKQorICAgICAgICByZXR1cm4gQ1NTVmFsdWVDb2x1bW47CisgICAgaWYgKHZh
bHVlID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZSA9PSBDU1NWYWx1ZUF2b2lkKQorICAgICAgICBy
ZXR1cm4gdmFsdWU7CisgICAgcmV0dXJuIENTU1ZhbHVlSW52YWxpZDsKK30KKworc3RhdGljIGlu
bGluZSBDU1NWYWx1ZUlEIG1hcEZyb21Db2x1bW5PclBhZ2VCcmVha0luc2lkZShDU1NWYWx1ZUlE
IHZhbHVlKQoreworICAgIGlmICh2YWx1ZSA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWUgPT0gQ1NT
VmFsdWVBdm9pZCkKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBDU1NWYWx1ZUlu
dmFsaWQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgQ1NTUHJvcGVydHlJRCBtYXBGcm9tTGVnYWN5QnJl
YWtQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KQoreworICAgIGlmIChwcm9wZXJ0eSA9
PSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Vi
a2l0Q29sdW1uQnJlYWtBZnRlcikKKyAgICAgICAgcmV0dXJuIENTU1Byb3BlcnR5QnJlYWtBZnRl
cjsKKyAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlQYWdlQnJlYWtCZWZvcmUgfHwgcHJv
cGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0JlZm9yZSkKKyAgICAgICAgcmV0
dXJuIENTU1Byb3BlcnR5QnJlYWtCZWZvcmU7CisgICAgQVNTRVJUKHByb3BlcnR5ID09IENTU1By
b3BlcnR5UGFnZUJyZWFrSW5zaWRlIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uQnJlYWtJbnNpZGUpOworICAgIHJldHVybiBDU1NQcm9wZXJ0eUJyZWFrSW5zaWRlOworfQor
Citib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lTGVnYWN5QnJlYWtQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5LCBib29sIGltcG9ydGFudCkKK3sKKyAgICAvLyBUaGUgZnJhZ21l
bnRhdGlvbiBzcGVjIHNheXMgdGhhdCBwYWdlLWJyZWFrLShhZnRlcnxiZWZvcmV8aW5zaWRlKSBh
cmUgdG8gYmUgdHJlYXRlZCBhcworICAgIC8vIHNob3J0aGFuZHMgZm9yIHRoZWlyIGJyZWFrLShh
ZnRlcnxiZWZvcmV8aW5zaWRlKSBjb3VudGVycGFydHMuIFdlJ2xsIGRvIHRoZSBzYW1lIGZvciB0
aGUKKyAgICAvLyBub24tc3RhbmRhcmQgcHJvcGVydGllcyAtd2Via2l0LWNvbHVtbi1icmVhay0o
YWZ0ZXJ8YmVmb3JlfGluc2lkZSkuCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGtleXdvcmQgPSBj
b25zdW1lSWRlbnQobV9yYW5nZSk7CisgICAgaWYgKCFrZXl3b3JkKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBDU1NWYWx1ZUlEIHZhbHVlID0ga2V5d29yZC0+Z2V0VmFsdWVJRCgpOworICAgIHN3aXRj
aCAocHJvcGVydHkpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFnZUJyZWFrQWZ0ZXI6CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0JlZm9yZToKKyAgICAgICAgdmFsdWUgPSBtYXBGcm9t
UGFnZUJyZWFrQmV0d2Vlbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRDb2x1bW5CcmVha0FmdGVyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRD
b2x1bW5CcmVha0JlZm9yZToKKyAgICAgICAgdmFsdWUgPSBtYXBGcm9tQ29sdW1uQnJlYWtCZXR3
ZWVuKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVh
a0luc2lkZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGU6Cisg
ICAgICAgIHZhbHVlID0gbWFwRnJvbUNvbHVtbk9yUGFnZUJyZWFrSW5zaWRlKHZhbHVlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgfQorICAgIGlmICh2YWx1ZSA9PSBDU1NWYWx1ZUludmFsaWQpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIENTU1Byb3BlcnR5SUQgZ2VuZXJpY0JyZWFrUHJvcGVydHkgPSBtYXBG
cm9tTGVnYWN5QnJlYWtQcm9wZXJ0eShwcm9wZXJ0eSk7CisgICAgYWRkUHJvcGVydHkoZ2VuZXJp
Y0JyZWFrUHJvcGVydHksIHByb3BlcnR5LCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50
aWZpZXIodmFsdWUpLCBpbXBvcnRhbnQpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMg
Ym9vbCBjb25zdW1lQmFja2dyb3VuZFBvc2l0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBVbml0bGVzc1F1aXJrIHVuaXRsZXNz
LCBDU1NWYWx1ZSomIHJlc3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSkKK3sKKyAgICBkbyB7Cisg
ICAgICAgIENTU1ZhbHVlKiBwb3NpdGlvblggPSBudWxscHRyOworICAgICAgICBDU1NWYWx1ZSog
cG9zaXRpb25ZID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFjb25zdW1lUG9zaXRpb24ocmFuZ2Us
IGNvbnRleHQubW9kZSgpLCB1bml0bGVzcywgcG9zaXRpb25YLCBwb3NpdGlvblkpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhZGRCYWNrZ3JvdW5kVmFsdWUocmVzdWx0WCwg
cG9zaXRpb25YKTsKKyAgICAgICAgYWRkQmFja2dyb3VuZFZhbHVlKHJlc3VsdFksIHBvc2l0aW9u
WSk7CisgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkp
OworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBjb25zdW1lUmVwZWF0U3R5bGVD
b21wb25lbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1ZhbHVlKiYgdmFsdWUxLCBD
U1NWYWx1ZSomIHZhbHVlMiwgYm9vbCYgaW1wbGljaXQpCit7CisgICAgaWYgKGNvbnN1bWVJZGVu
dDxDU1NWYWx1ZVJlcGVhdFg+KHJhbmdlKSkgeworICAgICAgICB2YWx1ZTEgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVJlcGVhdCk7CisgICAgICAgIHZhbHVl
MiA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9SZXBlYXQp
OworICAgICAgICBpbXBsaWNpdCA9IHRydWU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICBpZiAoY29uc3VtZUlkZW50PENTU1ZhbHVlUmVwZWF0WT4ocmFuZ2UpKSB7CisgICAgICAg
IHZhbHVlMSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9S
ZXBlYXQpOworICAgICAgICB2YWx1ZTIgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRp
ZmllcihDU1NWYWx1ZVJlcGVhdCk7CisgICAgICAgIGltcGxpY2l0ID0gdHJ1ZTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIHZhbHVlMSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZVJl
cGVhdCwgQ1NTVmFsdWVOb1JlcGVhdCwgQ1NTVmFsdWVSb3VuZCwgQ1NTVmFsdWVTcGFjZT4ocmFu
Z2UpOworICAgIGlmICghdmFsdWUxKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2YWx1
ZTIgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVSZXBlYXQsIENTU1ZhbHVlTm9SZXBlYXQsIENTU1Zh
bHVlUm91bmQsIENTU1ZhbHVlU3BhY2U+KHJhbmdlKTsKKyAgICBpZiAoIXZhbHVlMikgeworICAg
ICAgICB2YWx1ZTIgPSB2YWx1ZTE7CisgICAgICAgIGltcGxpY2l0ID0gdHJ1ZTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGNvbnN1bWVSZXBlYXRTdHlsZShDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTVmFsdWUqJiByZXN1bHRYLCBDU1NWYWx1ZSomIHJl
c3VsdFksIGJvb2wmIGltcGxpY2l0KQoreworICAgIGRvIHsKKyAgICAgICAgQ1NTVmFsdWUqIHJl
cGVhdFggPSBudWxscHRyOworICAgICAgICBDU1NWYWx1ZSogcmVwZWF0WSA9IG51bGxwdHI7Cisg
ICAgICAgIGlmICghY29uc3VtZVJlcGVhdFN0eWxlQ29tcG9uZW50KHJhbmdlLCByZXBlYXRYLCBy
ZXBlYXRZLCBpbXBsaWNpdCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFk
ZEJhY2tncm91bmRWYWx1ZShyZXN1bHRYLCByZXBlYXRYKTsKKyAgICAgICAgYWRkQmFja2dyb3Vu
ZFZhbHVlKHJlc3VsdFksIHJlcGVhdFkpOworICAgIH0gd2hpbGUgKGNvbnN1bWVDb21tYUluY2x1
ZGluZ1doaXRlc3BhY2UocmFuZ2UpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gTm90ZTog
Y29uc3VtZUJhY2tncm91bmRTaG9ydGhhbmQgYXNzdW1lcyB5IHByb3BlcnRpZXMgKGZvciBleGFt
cGxlIGJhY2tncm91bmQtcG9zaXRpb24teSkgZm9sbG93CisvLyB0aGUgeCBwcm9wZXJ0aWVzIGlu
IHRoZSBzaG9ydGhhbmQgYXJyYXkuCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lQmFj
a2dyb3VuZFNob3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQs
IGJvb2wgaW1wb3J0YW50KQoreworICAgIGNvbnN0IHVuc2lnbmVkIGxvbmdoYW5kQ291bnQgPSBz
aG9ydGhhbmQubGVuZ3RoKCk7CisgICAgQ1NTVmFsdWUqIGxvbmdoYW5kc1sxMF0gPSB7IDAgfTsK
KyAgICBBU1NFUlQobG9uZ2hhbmRDb3VudCA8PSAxMCk7CisKKyAgICBib29sIGltcGxpY2l0ID0g
ZmFsc2U7CisgICAgZG8geworICAgICAgICBib29sIHBhcnNlZExvbmdoYW5kWzEwXSA9IHsgZmFs
c2UgfTsKKyAgICAgICAgQ1NTVmFsdWUqIG9yaWdpblZhbHVlID0gbnVsbHB0cjsKKyAgICAgICAg
ZG8geworICAgICAgICAgICAgYm9vbCBmb3VuZFByb3BlcnR5ID0gZmFsc2U7CisgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxvbmdoYW5kQ291bnQ7ICsraSkgeworICAgICAgICAg
ICAgICAgIGlmIChwYXJzZWRMb25naGFuZFtpXSkKKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBudWxscHRyOworICAgICAg
ICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZVkgPSBudWxscHRyOworICAgICAgICAgICAgICAgIENT
U1Byb3BlcnR5SUQgcHJvcGVydHkgPSBzaG9ydGhhbmQucHJvcGVydGllcygpW2ldOworICAgICAg
ICAgICAgICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYIHx8
IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgY29uc3VtZVJlcGVhdFN0eWxlQ29tcG9uZW50KG1fcmFuZ2UsIHZhbHVlLCB2YWx1
ZVksIGltcGxpY2l0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5ID09IENT
U1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCB8fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tQb3NpdGlvblgpIHsKKyAgICAgICAgICAgICAgICAgICAgQ1NTUGFyc2VyVG9rZW5S
YW5nZSByYW5nZUNvcHkgPSBtX3JhbmdlOworICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1
bWVQb3NpdGlvbihyYW5nZUNvcHksIG1fY29udGV4dC5tb2RlKCksIFVuaXRsZXNzUXVpcms6OkZv
cmJpZCwgdmFsdWUsIHZhbHVlWSkpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgICAgICAgICAgbV9yYW5nZSA9IHJhbmdlQ29weTsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUgfHwgcHJv
cGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UobV9yYW5nZSkpCisgICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBj
b25zdW1lQmFja2dyb3VuZFNpemUocHJvcGVydHksIG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkp
OworICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlIHx8ICFwYXJzZWRMb25naGFuZFtpIC0g
MV0pIC8vIFBvc2l0aW9uIG11c3QgaGF2ZSBiZWVuIHBhcnNlZCBpbiB0aGUgY3VycmVudCBsYXll
ci4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSB8
fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZCisgICAgICAgICAgICAg
ICAgICAgIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSB8fCBw
cm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZKSB7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIHZhbHVlID0gY29uc3VtZUJhY2tncm91bmRDb21wb25lbnQocHJvcGVydHksIG1fcmFu
Z2UsIG1fY29udGV4dCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh2
YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kT3JpZ2luIHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdp
bikKKyAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblZhbHVlID0gdmFsdWU7CisgICAgICAg
ICAgICAgICAgICAgIHBhcnNlZExvbmdoYW5kW2ldID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgZm91bmRQcm9wZXJ0eSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGFkZEJhY2tncm91
bmRWYWx1ZShsb25naGFuZHNbaV0sIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZh
bHVlWSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkTG9uZ2hhbmRbaSArIDFdID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZEJhY2tncm91bmRWYWx1ZShsb25naGFu
ZHNbaSArIDFdLCB2YWx1ZVkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFmb3VuZFByb3BlcnR5KQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSB3aGlsZSAoIW1fcmFuZ2UuYXRF
bmQoKSAmJiBtX3JhbmdlLnBlZWsoKS50eXBlKCkgIT0gQ29tbWFUb2tlbik7CisKKyAgICAgICAg
Ly8gRklYTUU6IFRoaXMgd2lsbCBtYWtlIGludmFsaWQgbG9uZ2hhbmRzLCBzZWUgY3JidWcuY29t
LzM4NjQ1OQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxvbmdoYW5kQ291bnQ7ICsr
aSkgeworICAgICAgICAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSA9IHNob3J0aGFuZC5wcm9w
ZXJ0aWVzKClbaV07CisgICAgICAgICAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQ29sb3IgJiYgIW1fcmFuZ2UuYXRFbmQoKSkgeworICAgICAgICAgICAgICAgIGlmIChw
YXJzZWRMb25naGFuZFtpXSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBD
b2xvcnMgYXJlIG9ubHkgYWxsb3dlZCBpbiB0aGUgbGFzdCBsYXllci4KKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgocHJvcGVydHkgPT0g
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCB8fCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tDbGlwKSAmJiAhcGFyc2VkTG9uZ2hhbmRbaV0gJiYgb3JpZ2luVmFsdWUpIHsKKyAgICAg
ICAgICAgICAgICBhZGRCYWNrZ3JvdW5kVmFsdWUobG9uZ2hhbmRzW2ldLCBvcmlnaW5WYWx1ZSk7
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoIXBhcnNlZExvbmdoYW5kW2ldKQorICAgICAgICAgICAgICAgIGFkZEJhY2tncm91bmRWYWx1
ZShsb25naGFuZHNbaV0sIENTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSk7
CisgICAgICAgIH0KKyAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNl
KG1fcmFuZ2UpKTsKKyAgICBpZiAoIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsb25naGFuZENvdW50OyArK2kpIHsK
KyAgICAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSA9IHNob3J0aGFuZC5wcm9wZXJ0aWVzKClb
aV07CisgICAgICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplICYm
IGxvbmdoYW5kc1tpXSAmJiBtX2NvbnRleHQudXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhh
bmRCZWhhdmlvcigpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGFkZFByb3BlcnR5
KHByb3BlcnR5LCBzaG9ydGhhbmQuaWQoKSwgKmxvbmdoYW5kc1tpXSwgaW1wb3J0YW50LCBpbXBs
aWNpdCk7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIENTU1Byb3BlcnR5UGFy
c2VyOjpjb25zdW1lR3JpZEl0ZW1Qb3NpdGlvblNob3J0aGFuZChDU1NQcm9wZXJ0eUlEIHNob3J0
aGFuZElkLCBib29sIGltcG9ydGFudCkKK3sKKyAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6Y3NzR3JpZExheW91dEVuYWJsZWQoKSk7CisgICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZCYgc2hvcnRoYW5kID0gc2hvcnRoYW5kRm9yUHJvcGVydHkoc2hvcnRoYW5kSWQpOwor
ICAgIEFTU0VSVChzaG9ydGhhbmQubGVuZ3RoKCkgPT0gMik7CisgICAgQ1NTVmFsdWUqIHN0YXJ0
VmFsdWUgPSBjb25zdW1lR3JpZExpbmUobV9yYW5nZSk7CisgICAgaWYgKCFzdGFydFZhbHVlKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDU1NWYWx1ZSogZW5kVmFsdWUgPSBudWxscHRy
OworICAgIGlmIChjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKG1fcmFuZ2UpKSB7Cisg
ICAgICAgIGVuZFZhbHVlID0gY29uc3VtZUdyaWRMaW5lKG1fcmFuZ2UpOworICAgICAgICBpZiAo
IWVuZFZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGVuZFZhbHVlID0gc3RhcnRWYWx1ZS0+aXNDdXN0b21JZGVudFZhbHVlKCkgPyBzdGFydFZh
bHVlIDogQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVBdXRvKTsK
KyAgICB9CisgICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBhZGRQcm9wZXJ0eShzaG9ydGhhbmQucHJvcGVydGllcygpWzBdLCBzaG9ydGhhbmRJZCwg
KnN0YXJ0VmFsdWUsIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoc2hvcnRoYW5kLnByb3Bl
cnRpZXMoKVsxXSwgc2hvcnRoYW5kSWQsICplbmRWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUdyaWRBcmVhU2hv
cnRoYW5kKGJvb2wgaW1wb3J0YW50KQoreworICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpjc3NHcmlkTGF5b3V0RW5hYmxlZCgpKTsKKyAgICBBU1NFUlQoZ3JpZEFyZWFTaG9ydGhh
bmQoKS5sZW5ndGgoKSA9PSA0KTsKKyAgICBDU1NWYWx1ZSogcm93U3RhcnRWYWx1ZSA9IGNvbnN1
bWVHcmlkTGluZShtX3JhbmdlKTsKKyAgICBpZiAoIXJvd1N0YXJ0VmFsdWUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBDU1NWYWx1ZSogY29sdW1uU3RhcnRWYWx1ZSA9IG51bGxwdHI7Cisg
ICAgQ1NTVmFsdWUqIHJvd0VuZFZhbHVlID0gbnVsbHB0cjsKKyAgICBDU1NWYWx1ZSogY29sdW1u
RW5kVmFsdWUgPSBudWxscHRyOworICAgIGlmIChjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNw
YWNlKG1fcmFuZ2UpKSB7CisgICAgICAgIGNvbHVtblN0YXJ0VmFsdWUgPSBjb25zdW1lR3JpZExp
bmUobV9yYW5nZSk7CisgICAgICAgIGlmICghY29sdW1uU3RhcnRWYWx1ZSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3Bh
Y2UobV9yYW5nZSkpIHsKKyAgICAgICAgICAgIHJvd0VuZFZhbHVlID0gY29uc3VtZUdyaWRMaW5l
KG1fcmFuZ2UpOworICAgICAgICAgICAgaWYgKCFyb3dFbmRWYWx1ZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hp
dGVzcGFjZShtX3JhbmdlKSkgeworICAgICAgICAgICAgICAgIGNvbHVtbkVuZFZhbHVlID0gY29u
c3VtZUdyaWRMaW5lKG1fcmFuZ2UpOworICAgICAgICAgICAgICAgIGlmICghY29sdW1uRW5kVmFs
dWUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKyAgICBpZiAoIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghY29sdW1uU3RhcnRWYWx1ZSkKKyAgICAgICAgY29sdW1uU3RhcnRW
YWx1ZSA9IHJvd1N0YXJ0VmFsdWUtPmlzQ3VzdG9tSWRlbnRWYWx1ZSgpID8gcm93U3RhcnRWYWx1
ZSA6IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlQXV0byk7Cisg
ICAgaWYgKCFyb3dFbmRWYWx1ZSkKKyAgICAgICAgcm93RW5kVmFsdWUgPSByb3dTdGFydFZhbHVl
LT5pc0N1c3RvbUlkZW50VmFsdWUoKSA/IHJvd1N0YXJ0VmFsdWUgOiBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUF1dG8pOworICAgIGlmICghY29sdW1uRW5kVmFs
dWUpCisgICAgICAgIGNvbHVtbkVuZFZhbHVlID0gY29sdW1uU3RhcnRWYWx1ZS0+aXNDdXN0b21J
ZGVudFZhbHVlKCkgPyBjb2x1bW5TdGFydFZhbHVlIDogQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZUlkZW50aWZpZXIoQ1NTVmFsdWVBdXRvKTsKKworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5
R3JpZFJvd1N0YXJ0LCBDU1NQcm9wZXJ0eUdyaWRBcmVhLCAqcm93U3RhcnRWYWx1ZSwgaW1wb3J0
YW50KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRDb2x1bW5TdGFydCwgQ1NTUHJv
cGVydHlHcmlkQXJlYSwgKmNvbHVtblN0YXJ0VmFsdWUsIGltcG9ydGFudCk7CisgICAgYWRkUHJv
cGVydHkoQ1NTUHJvcGVydHlHcmlkUm93RW5kLCBDU1NQcm9wZXJ0eUdyaWRBcmVhLCAqcm93RW5k
VmFsdWUsIGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkQ29sdW1u
RW5kLCBDU1NQcm9wZXJ0eUdyaWRBcmVhLCAqY29sdW1uRW5kVmFsdWUsIGltcG9ydGFudCk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVHcmlk
VGVtcGxhdGVSb3dzQW5kQXJlYXNBbmRDb2x1bW5zKENTU1Byb3BlcnR5SUQgc2hvcnRoYW5kSWQs
IGJvb2wgaW1wb3J0YW50KQoreworICAgIE5hbWVkR3JpZEFyZWFNYXAgZ3JpZEFyZWFNYXA7Cisg
ICAgc2l6ZV90IHJvd0NvdW50ID0gMDsKKyAgICBzaXplX3QgY29sdW1uQ291bnQgPSAwOworICAg
IENTU1ZhbHVlTGlzdCogdGVtcGxhdGVSb3dzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNl
cGFyYXRlZCgpOworCisgICAgLy8gUGVyc2lzdHMgYmV0d2VlbiBsb29wIGl0ZXJhdGlvbnMgc28g
d2UgY2FuIHVzZSB0aGUgc2FtZSB2YWx1ZSBmb3IKKyAgICAvLyBjb25zZWN1dGl2ZSA8bGluZS1u
YW1lcz4gdmFsdWVzCisgICAgQ1NTR3JpZExpbmVOYW1lc1ZhbHVlKiBsaW5lTmFtZXMgPSBudWxs
cHRyOworCisgICAgZG8geworICAgICAgICAvLyBIYW5kbGUgbGVhZGluZyA8Y3VzdG9tLWlkZW50
PiouCisgICAgICAgIGJvb2wgaGFzUHJldmlvdXNMaW5lTmFtZXMgPSBsaW5lTmFtZXM7CisgICAg
ICAgIGxpbmVOYW1lcyA9IGNvbnN1bWVHcmlkTGluZU5hbWVzKG1fcmFuZ2UsIGxpbmVOYW1lcyk7
CisgICAgICAgIGlmIChsaW5lTmFtZXMgJiYgIWhhc1ByZXZpb3VzTGluZU5hbWVzKQorICAgICAg
ICAgICAgdGVtcGxhdGVSb3dzLT5hcHBlbmQoKmxpbmVOYW1lcyk7CisKKyAgICAgICAgLy8gSGFu
ZGxlIGEgdGVtcGxhdGUtYXJlYSdzIHJvdy4KKyAgICAgICAgaWYgKG1fcmFuZ2UucGVlaygpLnR5
cGUoKSAhPSBTdHJpbmdUb2tlbiB8fCAhcGFyc2VHcmlkVGVtcGxhdGVBcmVhc1JvdyhtX3Jhbmdl
LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b1N0cmluZygpLCBncmlkQXJl
YU1hcCwgcm93Q291bnQsIGNvbHVtbkNvdW50KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgKytyb3dDb3VudDsKKworICAgICAgICAvLyBIYW5kbGUgdGVtcGxhdGUtcm93cydz
IHRyYWNrLXNpemUuCisgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IGNvbnN1bWVHcmlkVHJhY2tT
aXplKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCkpOworICAgICAgICBpZiAoIXZhbHVlKQorICAg
ICAgICAgICAgdmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NW
YWx1ZUF1dG8pOworICAgICAgICB0ZW1wbGF0ZVJvd3MtPmFwcGVuZCgqdmFsdWUpOworCisgICAg
ICAgIC8vIFRoaXMgd2lsbCBoYW5kbGUgdGhlIHRyYWlsaW5nL2xlYWRpbmcgPGN1c3RvbS1pZGVu
dD4qIGluIHRoZSBncmFtbWFyLgorICAgICAgICBsaW5lTmFtZXMgPSBjb25zdW1lR3JpZExpbmVO
YW1lcyhtX3JhbmdlKTsKKyAgICAgICAgaWYgKGxpbmVOYW1lcykKKyAgICAgICAgICAgIHRlbXBs
YXRlUm93cy0+YXBwZW5kKCpsaW5lTmFtZXMpOworICAgIH0gd2hpbGUgKCFtX3JhbmdlLmF0RW5k
KCkgJiYgIShtX3JhbmdlLnBlZWsoKS50eXBlKCkgPT0gRGVsaW1pdGVyVG9rZW4gJiYgbV9yYW5n
ZS5wZWVrKCkuZGVsaW1pdGVyKCkgPT0gJy8nKSk7CisKKyAgICBDU1NWYWx1ZSogY29sdW1uc1Zh
bHVlID0gbnVsbHB0cjsKKyAgICBpZiAoIW1fcmFuZ2UuYXRFbmQoKSkgeworICAgICAgICBpZiAo
IWNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UobV9yYW5nZSkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGNvbHVtbnNWYWx1ZSA9IGNvbnN1bWVHcmlkVHJhY2tMaXN0
KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKCksIEdyaWRUZW1wbGF0ZU5vUmVwZWF0KTsKKyAgICAg
ICAgaWYgKCFjb2x1bW5zVmFsdWUgfHwgIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgICBjb2x1bW5zVmFsdWUgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpOworICAgIH0KKyAgICBh
ZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZVJvd3MsIHNob3J0aGFuZElkLCAqdGVt
cGxhdGVSb3dzLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFRl
bXBsYXRlQ29sdW1ucywgc2hvcnRoYW5kSWQsICpjb2x1bW5zVmFsdWUsIGltcG9ydGFudCk7Cisg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVBcmVhcywgc2hvcnRoYW5kSWQs
ICpDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlOjpjcmVhdGUoZ3JpZEFyZWFNYXAsIHJvd0NvdW50
LCBjb2x1bW5Db3VudCksIGltcG9ydGFudCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
Q1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVHcmlkVGVtcGxhdGVTaG9ydGhhbmQoQ1NTUHJvcGVy
dHlJRCBzaG9ydGhhbmRJZCwgYm9vbCBpbXBvcnRhbnQpCit7CisgICAgQVNTRVJUKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkpOworICAgIEFTU0VSVChncmlk
VGVtcGxhdGVTaG9ydGhhbmQoKS5sZW5ndGgoKSA9PSAzKTsKKworICAgIENTU1BhcnNlclRva2Vu
UmFuZ2UgcmFuZ2VDb3B5ID0gbV9yYW5nZTsKKyAgICBDU1NWYWx1ZSogcm93c1ZhbHVlID0gY29u
c3VtZUlkZW50PENTU1ZhbHVlTm9uZT4obV9yYW5nZSk7CisKKyAgICAvLyAxLSAnbm9uZScgY2Fz
ZS4KKyAgICBpZiAocm93c1ZhbHVlICYmIG1fcmFuZ2UuYXRFbmQoKSkgeworICAgICAgICBhZGRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZVJvd3MsIHNob3J0aGFuZElkLCAqQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKSwgaW1wb3J0YW50KTsK
KyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVDb2x1bW5zLCBzaG9y
dGhhbmRJZCwgKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9u
ZSksIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFRlbXBs
YXRlQXJlYXMsIHNob3J0aGFuZElkLCAqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZp
ZXIoQ1NTVmFsdWVOb25lKSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgLy8gMi0gPGdyaWQtdGVtcGxhdGUtcm93cz4gLyA8Z3JpZC10ZW1wbGF0ZS1jb2x1
bW5zPgorICAgIGlmICghcm93c1ZhbHVlKQorICAgICAgICByb3dzVmFsdWUgPSBjb25zdW1lR3Jp
ZFRyYWNrTGlzdChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBHcmlkVGVtcGxhdGUpOworCisg
ICAgaWYgKHJvd3NWYWx1ZSkgeworICAgICAgICBpZiAoIWNvbnN1bWVTbGFzaEluY2x1ZGluZ1do
aXRlc3BhY2UobV9yYW5nZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIENT
U1ZhbHVlKiBjb2x1bW5zVmFsdWUgPSBjb25zdW1lR3JpZFRlbXBsYXRlc1Jvd3NPckNvbHVtbnMo
bV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSk7CisgICAgICAgIGlmICghY29sdW1uc1ZhbHVlIHx8
ICFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVSb3dzLCBzaG9ydGhhbmRJZCwgKnJv
d3NWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlk
VGVtcGxhdGVDb2x1bW5zLCBzaG9ydGhhbmRJZCwgKmNvbHVtbnNWYWx1ZSwgaW1wb3J0YW50KTsK
KyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVBcmVhcywgc2hvcnRo
YW5kSWQsICpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUp
LCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyAzLSBb
IDxsaW5lLW5hbWVzPj8gPHN0cmluZz4gPHRyYWNrLXNpemU+PyA8bGluZS1uYW1lcz4/IF0rIFsg
LyA8dHJhY2stbGlzdD4gXT8KKyAgICBtX3JhbmdlID0gcmFuZ2VDb3B5OworICAgIHJldHVybiBj
b25zdW1lR3JpZFRlbXBsYXRlUm93c0FuZEFyZWFzQW5kQ29sdW1ucyhzaG9ydGhhbmRJZCwgaW1w
b3J0YW50KTsKK30KKworYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUdyaWRTaG9ydGhh
bmQoYm9vbCBpbXBvcnRhbnQpCit7CisgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkpOworICAgIEFTU0VSVChzaG9ydGhhbmRGb3JQcm9wZXJ0
eShDU1NQcm9wZXJ0eUdyaWQpLmxlbmd0aCgpID09IDgpOworCisgICAgQ1NTUGFyc2VyVG9rZW5S
YW5nZSByYW5nZUNvcHkgPSBtX3JhbmdlOworCisgICAgLy8gMS0gPGdyaWQtdGVtcGxhdGU+Cisg
ICAgaWYgKGNvbnN1bWVHcmlkVGVtcGxhdGVTaG9ydGhhbmQoQ1NTUHJvcGVydHlHcmlkLCBpbXBv
cnRhbnQpKSB7CisgICAgICAgIC8vIEl0IGNhbiBvbmx5IGJlIHNwZWNpZmllZCB0aGUgZXhwbGlj
aXQgb3IgdGhlIGltcGxpY2l0IGdyaWQgcHJvcGVydGllcyBpbiBhIHNpbmdsZSBncmlkIGRlY2xh
cmF0aW9uLgorICAgICAgICAvLyBUaGUgc3ViLXByb3BlcnRpZXMgbm90IHNwZWNpZmllZCBhcmUg
c2V0IHRvIHRoZWlyIGluaXRpYWwgdmFsdWUsIGFzIG5vcm1hbCBmb3Igc2hvcnRoYW5kcy4KKyAg
ICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkQXV0b0Zsb3csIENTU1Byb3BlcnR5R3Jp
ZCwgKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsK
KyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkQXV0b0NvbHVtbnMsIENTU1Byb3Bl
cnR5R3JpZCwgKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0
YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkQXV0b1Jvd3MsIENTU1By
b3BlcnR5R3JpZCwgKkNTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1w
b3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkQ29sdW1uR2FwLCBD
U1NQcm9wZXJ0eUdyaWQsICpDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCks
IGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFJvd0dhcCwg
Q1NTUHJvcGVydHlHcmlkLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgp
LCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBtX3Jhbmdl
ID0gcmFuZ2VDb3B5OworCisgICAgLy8gMi0gPGdyaWQtYXV0by1mbG93PiBbIDxncmlkLWF1dG8t
cm93cz4gWyAvIDxncmlkLWF1dG8tY29sdW1ucz4gXT8gXQorICAgIENTU1ZhbHVlTGlzdCogZ3Jp
ZEF1dG9GbG93ID0gY29uc3VtZUdyaWRBdXRvRmxvdyhtX3JhbmdlKTsKKyAgICBpZiAoIWdyaWRB
dXRvRmxvdykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ1NTVmFsdWUqIGF1dG9Db2x1
bW5zVmFsdWUgPSBudWxscHRyOworICAgIENTU1ZhbHVlKiBhdXRvUm93c1ZhbHVlID0gbnVsbHB0
cjsKKworICAgIGlmICghbV9yYW5nZS5hdEVuZCgpKSB7CisgICAgICAgIGF1dG9Sb3dzVmFsdWUg
PSBjb25zdW1lR3JpZFRyYWNrTGlzdChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBHcmlkQXV0
byk7CisgICAgICAgIGlmICghYXV0b1Jvd3NWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgaWYgKGNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UobV9yYW5nZSkp
IHsKKyAgICAgICAgICAgIGF1dG9Db2x1bW5zVmFsdWUgPSBjb25zdW1lR3JpZFRyYWNrTGlzdCht
X3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBHcmlkQXV0byk7CisgICAgICAgICAgICBpZiAoIWF1
dG9Db2x1bW5zVmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgICAgIGlmICghbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIE90aGVyIG9taXR0ZWQgdmFsdWVzIGFyZSBzZXQg
dG8gdGhlaXIgaW5pdGlhbCB2YWx1ZXMuCisgICAgICAgIGF1dG9Db2x1bW5zVmFsdWUgPSBDU1NJ
bml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCk7CisgICAgICAgIGF1dG9Sb3dzVmFs
dWUgPSBDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUxlZ2FjeUltcGxpY2l0KCk7CisgICAgfQorCisg
ICAgLy8gaWYgPGdyaWQtYXV0by1jb2x1bW5zPiB2YWx1ZSBpcyBvbWl0dGVkLCBpdCBpcyBzZXQg
dG8gdGhlIHZhbHVlIHNwZWNpZmllZCBmb3IgZ3JpZC1hdXRvLXJvd3MuCisgICAgaWYgKCFhdXRv
Q29sdW1uc1ZhbHVlKQorICAgICAgICBhdXRvQ29sdW1uc1ZhbHVlID0gYXV0b1Jvd3NWYWx1ZTsK
KworICAgIC8vIEl0IGNhbiBvbmx5IGJlIHNwZWNpZmllZCB0aGUgZXhwbGljaXQgb3IgdGhlIGlt
cGxpY2l0IGdyaWQgcHJvcGVydGllcyBpbiBhIHNpbmdsZSBncmlkIGRlY2xhcmF0aW9uLgorICAg
IC8vIFRoZSBzdWItcHJvcGVydGllcyBub3Qgc3BlY2lmaWVkIGFyZSBzZXQgdG8gdGhlaXIgaW5p
dGlhbCB2YWx1ZSwgYXMgbm9ybWFsIGZvciBzaG9ydGhhbmRzLgorICAgIGFkZFByb3BlcnR5KENT
U1Byb3BlcnR5R3JpZFRlbXBsYXRlQ29sdW1ucywgQ1NTUHJvcGVydHlHcmlkLCAqQ1NTSW5pdGlh
bFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3Bl
cnR5KENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlUm93cywgQ1NTUHJvcGVydHlHcmlkLCAqQ1NTSW5p
dGlhbFZhbHVlOjpjcmVhdGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgIGFkZFBy
b3BlcnR5KENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQXJlYXMsIENTU1Byb3BlcnR5R3JpZCwgKkNT
U0luaXRpYWxWYWx1ZTo6Y3JlYXRlTGVnYWN5SW1wbGljaXQoKSwgaW1wb3J0YW50KTsKKyAgICBh
ZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRBdXRvRmxvdywgQ1NTUHJvcGVydHlHcmlkLCAqZ3Jp
ZEF1dG9GbG93LCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZEF1
dG9Db2x1bW5zLCBDU1NQcm9wZXJ0eUdyaWQsICphdXRvQ29sdW1uc1ZhbHVlLCBpbXBvcnRhbnQp
OworICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZEF1dG9Sb3dzLCBDU1NQcm9wZXJ0eUdy
aWQsICphdXRvUm93c1ZhbHVlLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3Bl
cnR5R3JpZENvbHVtbkdhcCwgQ1NTUHJvcGVydHlHcmlkLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVh
dGVMZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgIGFkZFByb3BlcnR5KENTU1Byb3Bl
cnR5R3JpZFJvd0dhcCwgQ1NTUHJvcGVydHlHcmlkLCAqQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGVM
ZWdhY3lJbXBsaWNpdCgpLCBpbXBvcnRhbnQpOworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNob3J0aGFuZChDU1NQcm9wZXJ0eUlEIHVucmVzb2x2
ZWRQcm9wZXJ0eSwgYm9vbCBpbXBvcnRhbnQpCit7CisgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eSA9IHJlc29sdmVDU1NQcm9wZXJ0eUlEKHVucmVzb2x2ZWRQcm9wZXJ0eSk7CisKKyAgICBzd2l0
Y2ggKHByb3BlcnR5KSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNl
OiB7CisgICAgICAgIENTU1ZhbHVlSUQgaWQgPSBtX3JhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0
ZXNwYWNlKCkuaWQoKTsKKyAgICAgICAgaWYgKCFDU1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFsaWRL
ZXl3b3JkUHJvcGVydHlBbmRWYWx1ZShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxh
cHNlLCBpZCwgbV9jb250ZXh0Lm1vZGUoKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIENTU1ZhbHVlKiBiZWZvcmVDb2xsYXBzZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGVJZGVudGlmaWVyKGlkKTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRN
YXJnaW5CZWZvcmVDb2xsYXBzZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSwgKmJl
Zm9yZUNvbGxhcHNlLCBpbXBvcnRhbnQpOworICAgICAgICBpZiAobV9yYW5nZS5hdEVuZCgpKSB7
CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29s
bGFwc2UsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UsICpiZWZvcmVDb2xsYXBzZSwg
aW1wb3J0YW50KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAg
IGlkID0gbV9yYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgICAg
IGlmICghQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUo
Q1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlLCBpZCwgbV9jb250ZXh0Lm1vZGUo
KSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1By
b3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5D
b2xsYXBzZSwgKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKGlkKSwgaW1wb3J0
YW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlP
dmVyZmxvdzogeworICAgICAgICBDU1NWYWx1ZUlEIGlkID0gbV9yYW5nZS5jb25zdW1lSW5jbHVk
aW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgICAgIGlmICghQ1NTUGFyc2VyRmFzdFBhdGhzOjpp
c1ZhbGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUoQ1NTUHJvcGVydHlPdmVyZmxvd1ksIGlkLCBt
X2NvbnRleHQubW9kZSgpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYg
KCFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIENT
U1ZhbHVlKiBvdmVyZmxvd1lWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlm
aWVyKGlkKTsKKworICAgICAgICBDU1NWYWx1ZSogb3ZlcmZsb3dYVmFsdWUgPSBudWxscHRyOwor
CisgICAgICAgIC8vIEZJWE1FOiAtd2Via2l0LXBhZ2VkLXggb3IgLXdlYmtpdC1wYWdlZC15IG9u
bHkgYXBwbHkgdG8gb3ZlcmZsb3cteS4gSWYgdGhpcyB2YWx1ZSBoYXMgYmVlbgorICAgICAgICAv
LyBzZXQgdXNpbmcgdGhlIHNob3J0aGFuZCwgdGhlbiBmb3Igbm93IG92ZXJmbG93LXggd2lsbCBk
ZWZhdWx0IHRvIGF1dG8sIGJ1dCBvbmNlIHdlIGltcGxlbWVudAorICAgICAgICAvLyBwYWdpbmF0
aW9uIGNvbnRyb2xzLCBpdCBzaG91bGQgZGVmYXVsdCB0byBoaWRkZW4uIElmIHRoZSBvdmVyZmxv
dy15IHZhbHVlIGlzIGFueXRoaW5nIGJ1dAorICAgICAgICAvLyBwYWdlZC14IG9yIHBhZ2VkLXks
IHRoZW4gb3ZlcmZsb3cteCBhbmQgb3ZlcmZsb3cteSBzaG91bGQgaGF2ZSB0aGUgc2FtZSB2YWx1
ZS4KKyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0UGFnZWRYIHx8IGlkID09IENTU1Zh
bHVlV2Via2l0UGFnZWRZKQorICAgICAgICAgICAgb3ZlcmZsb3dYVmFsdWUgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUF1dG8pOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBvdmVyZmxvd1hWYWx1ZSA9IG92ZXJmbG93WVZhbHVlOworICAgICAgICBhZGRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eU92ZXJmbG93WCwgQ1NTUHJvcGVydHlPdmVyZmxvdywgKm92ZXJm
bG93WFZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU92
ZXJmbG93WSwgQ1NTUHJvcGVydHlPdmVyZmxvdywgKm92ZXJmbG93WVZhbHVlLCBpbXBvcnRhbnQp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnQ6
IHsKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gbV9yYW5nZS5wZWVrKCk7
CisgICAgICAgIGlmICh0b2tlbi5pZCgpID49IENTU1ZhbHVlQ2FwdGlvbiAmJiB0b2tlbi5pZCgp
IDw9IENTU1ZhbHVlU3RhdHVzQmFyKQorICAgICAgICAgICAgcmV0dXJuIGNvbnN1bWVTeXN0ZW1G
b250KGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiBjb25zdW1lRm9udChpbXBvcnRhbnQpOwor
ICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQ6CisgICAgICAgIHJldHVybiBj
b25zdW1lRm9udFZhcmlhbnRTaG9ydGhhbmQoaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyU3BhY2luZzoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVCb3JkZXJTcGFjaW5nKGlt
cG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbHVtbnM6CisgICAgICAgIHJldHVybiBj
b25zdW1lQ29sdW1ucyhpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb246
CisgICAgICAgIHJldHVybiBjb25zdW1lQW5pbWF0aW9uU2hvcnRoYW5kKGFuaW1hdGlvblNob3J0
aGFuZEZvclBhcnNpbmcoKSwgdW5yZXNvbHZlZFByb3BlcnR5ID09IENTU1Byb3BlcnR5QWxpYXNX
ZWJraXRBbmltYXRpb24sIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zaXRp
b246CisgICAgICAgIHJldHVybiBjb25zdW1lQW5pbWF0aW9uU2hvcnRoYW5kKHRyYW5zaXRpb25T
aG9ydGhhbmRGb3JQYXJzaW5nKCksIGZhbHNlLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlUZXh0RGVjb3JhdGlvbjoKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OmNzczNUZXh0RGVjb3JhdGlvbnNFbmFibGVkKCkpOworICAgICAgICByZXR1cm4gY29uc3Vt
ZVNob3J0aGFuZEdyZWVkaWx5KHRleHREZWNvcmF0aW9uU2hvcnRoYW5kKCksIGltcG9ydGFudCk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWU0VmFs
dWVzKG1hcmdpblNob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlQ
YWRkaW5nOgorICAgICAgICByZXR1cm4gY29uc3VtZTRWYWx1ZXMocGFkZGluZ1Nob3J0aGFuZCgp
LCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlNb3Rpb246CisgICAgICAgIHJldHVy
biBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkobW90aW9uU2hvcnRoYW5kKCksIGltcG9ydGFudCk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpczoKKyAgICAgICAgcmV0dXJu
IGNvbnN1bWVTaG9ydGhhbmRHcmVlZGlseSh3ZWJraXRUZXh0RW1waGFzaXNTaG9ydGhhbmQoKSwg
aW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZToKKyAgICAgICAgcmV0dXJu
IGNvbnN1bWVTaG9ydGhhbmRHcmVlZGlseShvdXRsaW5lU2hvcnRoYW5kKCksIGltcG9ydGFudCk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0OgorICAgICAgICByZXR1cm4g
Y29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KHdlYmtpdEJvcmRlclN0YXJ0U2hvcnRoYW5kKCksIGlt
cG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZDoKKyAgICAgICAg
cmV0dXJuIGNvbnN1bWVTaG9ydGhhbmRHcmVlZGlseSh3ZWJraXRCb3JkZXJFbmRTaG9ydGhhbmQo
KSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlOgor
ICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KHdlYmtpdEJvcmRlckJlZm9y
ZVNob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJBZnRlcjoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhhbmRHcmVlZGlseSh3ZWJraXRC
b3JkZXJBZnRlclNob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRUZXh0U3Ryb2tlOgorICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFuZEdyZWVkaWx5
KHdlYmtpdFRleHRTdHJva2VTaG9ydGhhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1By
b3BlcnR5TWFya2VyOiB7CisgICAgICAgIGNvbnN0IENTU1ZhbHVlKiBtYXJrZXIgPSBwYXJzZVNp
bmdsZVZhbHVlKENTU1Byb3BlcnR5TWFya2VyU3RhcnQpOworICAgICAgICBpZiAoIW1hcmtlciB8
fCAhbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBh
ZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmtlclN0YXJ0LCBDU1NQcm9wZXJ0eU1hcmtlciwgKm1h
cmtlciwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJrZXJN
aWQsIENTU1Byb3BlcnR5TWFya2VyLCAqbWFya2VyLCBpbXBvcnRhbnQpOworICAgICAgICBhZGRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmtlckVuZCwgQ1NTUHJvcGVydHlNYXJrZXIsICptYXJrZXIs
IGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBjYXNlIENTU1By
b3BlcnR5RmxleDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVGbGV4KGltcG9ydGFudCk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUZsZXhGbG93OgorICAgICAgICByZXR1cm4gY29uc3VtZVNob3J0aGFu
ZEdyZWVkaWx5KGZsZXhGbG93U2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUNvbHVtblJ1bGU6CisgICAgICAgIHJldHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRp
bHkoY29sdW1uUnVsZVNob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlMaXN0U3R5bGU6CisgICAgICAgIHJldHVybiBjb25zdW1lU2hvcnRoYW5kR3JlZWRpbHkobGlz
dFN0eWxlU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
clJhZGl1czogeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogaG9yaXpvbnRhbFJhZGlpWzRd
ID0geyAwIH07CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2ZXJ0aWNhbFJhZGlpWzRdID0g
eyAwIH07CisgICAgICAgIGlmICghY29uc3VtZVJhZGlpKGhvcml6b250YWxSYWRpaSwgdmVydGlj
YWxSYWRpaSwgbV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUoKSwgdW5yZXNvbHZlZFByb3BlcnR5ID09
IENTU1Byb3BlcnR5QWxpYXNXZWJraXRCb3JkZXJSYWRpdXMpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRp
dXMsIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzLCAqQ1NTVmFsdWVQYWlyOjpjcmVhdGUoaG9yaXpv
bnRhbFJhZGlpWzBdLCB2ZXJ0aWNhbFJhZGlpWzBdLCBDU1NWYWx1ZVBhaXI6OkRyb3BJZGVudGlj
YWxWYWx1ZXMpLCBpbXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJv
cmRlclRvcFJpZ2h0UmFkaXVzLCBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cywgKkNTU1ZhbHVlUGFp
cjo6Y3JlYXRlKGhvcml6b250YWxSYWRpaVsxXSwgdmVydGljYWxSYWRpaVsxXSwgQ1NTVmFsdWVQ
YWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVzKSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVy
dHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cywgQ1NTUHJvcGVydHlCb3JkZXJS
YWRpdXMsICpDU1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFsUmFkaWlbMl0sIHZlcnRpY2Fs
UmFkaWlbMl0sIENTU1ZhbHVlUGFpcjo6RHJvcElkZW50aWNhbFZhbHVlcyksIGltcG9ydGFudCk7
CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywg
Q1NTUHJvcGVydHlCb3JkZXJSYWRpdXMsICpDU1NWYWx1ZVBhaXI6OmNyZWF0ZShob3Jpem9udGFs
UmFkaWlbM10sIHZlcnRpY2FsUmFkaWlbM10sIENTU1ZhbHVlUGFpcjo6RHJvcElkZW50aWNhbFZh
bHVlcyksIGltcG9ydGFudCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyQ29sb3I6CisgICAgICAgIHJldHVybiBjb25zdW1lNFZhbHVlcyhi
b3JkZXJDb2xvclNob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJTdHlsZToKKyAgICAgICAgcmV0dXJuIGNvbnN1bWU0VmFsdWVzKGJvcmRlclN0eWxlU2hv
cnRoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoOgor
ICAgICAgICByZXR1cm4gY29uc3VtZTRWYWx1ZXMoYm9yZGVyV2lkdGhTaG9ydGhhbmQoKSwgaW1w
b3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wOgorICAgICAgICByZXR1cm4g
Y29uc3VtZVNob3J0aGFuZEdyZWVkaWx5KGJvcmRlclRvcFNob3J0aGFuZCgpLCBpbXBvcnRhbnQp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodDoKKyAgICAgICAgcmV0dXJuIGNvbnN1
bWVTaG9ydGhhbmRHcmVlZGlseShib3JkZXJSaWdodFNob3J0aGFuZCgpLCBpbXBvcnRhbnQpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b206CisgICAgICAgIHJldHVybiBjb25zdW1l
U2hvcnRoYW5kR3JlZWRpbHkoYm9yZGVyQm90dG9tU2hvcnRoYW5kKCksIGltcG9ydGFudCk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnQ6CisgICAgICAgIHJldHVybiBjb25zdW1lU2hv
cnRoYW5kR3JlZWRpbHkoYm9yZGVyTGVmdFNob3J0aGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXI6CisgICAgICAgIHJldHVybiBjb25zdW1lQm9yZGVyKGltcG9y
dGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXNrQm94SW1hZ2U6CisgICAgICAgIHJldHVybiBjb25zdW1lQm9yZGVySW1h
Z2UocHJvcGVydHksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0Fm
dGVyOgorICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlQnJlYWtCZWZvcmU6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVBhZ2VCcmVha0luc2lkZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
QnJlYWtBZnRlcjoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtCZWZvcmU6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrSW5zaWRlOgorICAgICAgICBy
ZXR1cm4gY29uc3VtZUxlZ2FjeUJyZWFrUHJvcGVydHkocHJvcGVydHksIGltcG9ydGFudCk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbjoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5QmFja2dyb3VuZFBvc2l0aW9uOiB7CisgICAgICAgIENTU1ZhbHVlKiByZXN1bHRYID0gbnVs
bHB0cjsKKyAgICAgICAgQ1NTVmFsdWUqIHJlc3VsdFkgPSBudWxscHRyOworICAgICAgICBpZiAo
IWNvbnN1bWVCYWNrZ3JvdW5kUG9zaXRpb24obV9yYW5nZSwgbV9jb250ZXh0LCBVbml0bGVzc1F1
aXJrOjpBbGxvdywgcmVzdWx0WCwgcmVzdWx0WSkgfHwgIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydHkgPT0gQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24gPyBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlv
blggOiBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgsIHByb3BlcnR5LCAqcmVzdWx0WCwg
aW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kUG9zaXRpb24gPyBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblkgOiBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblksIHByb3BlcnR5LCAqcmVzdWx0WSwgaW1wb3J0YW50
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUmVwZWF0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0OiB7Cisg
ICAgICAgIENTU1ZhbHVlKiByZXN1bHRYID0gbnVsbHB0cjsKKyAgICAgICAgQ1NTVmFsdWUqIHJl
c3VsdFkgPSBudWxscHRyOworICAgICAgICBib29sIGltcGxpY2l0ID0gZmFsc2U7CisgICAgICAg
IGlmICghY29uc3VtZVJlcGVhdFN0eWxlKG1fcmFuZ2UsIHJlc3VsdFgsIHJlc3VsdFksIGltcGxp
Y2l0KSB8fCAhbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQg
PyBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYIDogQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVw
ZWF0WCwgcHJvcGVydHksICpyZXN1bHRYLCBpbXBvcnRhbnQsIGltcGxpY2l0KTsKKyAgICAgICAg
YWRkUHJvcGVydHkocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0ID8gQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSA6IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFks
IHByb3BlcnR5LCAqcmVzdWx0WSwgaW1wb3J0YW50LCBpbXBsaWNpdCk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZDoKKyAgICAgICAg
cmV0dXJuIGNvbnN1bWVCYWNrZ3JvdW5kU2hvcnRoYW5kKGJhY2tncm91bmRTaG9ydGhhbmQoKSwg
aW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFzazoKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVCYWNrZ3JvdW5kU2hvcnRoYW5kKHdlYmtpdE1hc2tTaG9ydGhhbmQoKSwgaW1w
b3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZEdhcDogeworICAgICAgICBBU1NFUlQo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzR3JpZExheW91dEVuYWJsZWQoKSAmJiBzaG9ydGhh
bmRGb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUdyaWRHYXApLmxlbmd0aCgpID09IDIpOworICAgICAg
ICBDU1NWYWx1ZSogcm93R2FwID0gY29uc3VtZUxlbmd0aChtX3JhbmdlLCBtX2NvbnRleHQubW9k
ZSgpLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICBDU1NWYWx1ZSogY29sdW1uR2Fw
ID0gY29uc3VtZUxlbmd0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSgpLCBWYWx1ZVJhbmdlTm9u
TmVnYXRpdmUpOworICAgICAgICBpZiAoIXJvd0dhcCB8fCAhbV9yYW5nZS5hdEVuZCgpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWNvbHVtbkdhcCkKKyAgICAgICAg
ICAgIGNvbHVtbkdhcCA9IHJvd0dhcDsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlH
cmlkUm93R2FwLCBDU1NQcm9wZXJ0eUdyaWRHYXAsICpyb3dHYXAsIGltcG9ydGFudCk7CisgICAg
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZENvbHVtbkdhcCwgQ1NTUHJvcGVydHlHcmlk
R2FwLCAqY29sdW1uR2FwLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRDb2x1bW46CisgICAgY2FzZSBDU1NQcm9wZXJ0eUdy
aWRSb3c6CisgICAgICAgIHJldHVybiBjb25zdW1lR3JpZEl0ZW1Qb3NpdGlvblNob3J0aGFuZChw
cm9wZXJ0eSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5R3JpZEFyZWE6CisgICAg
ICAgIHJldHVybiBjb25zdW1lR3JpZEFyZWFTaG9ydGhhbmQoaW1wb3J0YW50KTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlOgorICAgICAgICByZXR1cm4gY29uc3VtZUdyaWRUZW1w
bGF0ZVNob3J0aGFuZChDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZSwgaW1wb3J0YW50KTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5R3JpZDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVHcmlkU2hvcnRoYW5k
KGltcG9ydGFudCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
K30KKyovCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzIExhcnMgS25vbGwgKGtu
b2xsQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIw
MDksIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgLSAyMDEwICBUb3JjaCBNb2JpbGUgKEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpZm5kZWYgQ1NTUHJvcGVydHlQYXJzZXJfaAorI2RlZmluZSBDU1NQcm9w
ZXJ0eVBhcnNlcl9oCisKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJhbmdlLmgiCisjaW5jbHVk
ZSAiU3R5bGVSdWxlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1Byb3BlcnR5OworY2xhc3MgQ1NTVmFsdWU7Citj
bGFzcyBTdHlsZVByb3BlcnR5U2hvcnRoYW5kOworCisvLyBJbnB1dHM6IFByb3BlcnR5SUQsIGlz
SW1wb3J0YW50IGJvb2wsIENTU1BhcnNlclRva2VuUmFuZ2UuCisvLyBPdXRwdXRzOiBWZWN0b3Ig
b2YgQ1NTUHJvcGVydGllcworCitjbGFzcyBDU1NQcm9wZXJ0eVBhcnNlciB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQ1NTUHJvcGVydHlQYXJzZXIpOworcHVibGljOgorICAgIHN0YXRpYyBi
b29sIHBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRhbnQsCisgICAgICAgIGNv
bnN0IENTU1BhcnNlclRva2VuUmFuZ2UmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiwKKyAgICAg
ICAgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+JiwgU3R5bGVSdWxlOjpUeXBlKTsKKworICAgIC8v
IFBhcnNlcyBhIG5vbi1zaG9ydGhhbmQgQ1NTIHByb3BlcnR5CisgICAgc3RhdGljIGNvbnN0IENT
U1ZhbHVlKiBwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5SUQsIGNvbnN0IENTU1BhcnNlclRv
a2VuUmFuZ2UmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CisKK3ByaXZhdGU6CisgICAgQ1NT
UHJvcGVydHlQYXJzZXIoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNvbnN0IENTU1BhcnNl
ckNvbnRleHQmLAorICAgICAgICBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4qKTsKKworICAgIC8v
IEZJWE1FOiBSZW5hbWUgb25jZSB0aGUgQ1NTUGFyc2VyVmFsdWUtYmFzZWQgcGFyc2VWYWx1ZSBp
cyByZW1vdmVkCisgICAgYm9vbCBwYXJzZVZhbHVlU3RhcnQoQ1NTUHJvcGVydHlJRCB1bnJlc29s
dmVkUHJvcGVydHksIGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29sIGNvbnN1bWVDU1NXaWRlS2V5
d29yZChDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0eSwgYm9vbCBpbXBvcnRhbnQpOwor
ICAgIGNvbnN0IENTU1ZhbHVlKiBwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5SUQsIENTU1By
b3BlcnR5SUQgPSBDU1NQcm9wZXJ0eUludmFsaWQpOworCisgICAgYm9vbCBpblF1aXJrc01vZGUo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQubW9kZSA9PSBDU1NRdWlya3NNb2RlOyB9CisKKyAg
ICBib29sIHBhcnNlVmlld3BvcnREZXNjcmlwdG9yKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29s
IGltcG9ydGFudCk7CisgICAgYm9vbCBwYXJzZUZvbnRGYWNlRGVzY3JpcHRvcihDU1NQcm9wZXJ0
eUlEKTsKKworICAgIHZvaWQgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgQ1NTUHJvcGVydHlJ
RCwgY29uc3QgQ1NTVmFsdWUmLCBib29sIGltcG9ydGFudCwgYm9vbCBpbXBsaWNpdCA9IGZhbHNl
KTsKKyAgICB2b2lkIGFkZEV4cGFuZGVkUHJvcGVydHlGb3JWYWx1ZShDU1NQcm9wZXJ0eUlEIHBy
b3BJZCwgY29uc3QgQ1NTVmFsdWUmLCBib29sKTsKKworICAgIGJvb2wgY29uc3VtZUJvcmRlcihi
b29sIGltcG9ydGFudCk7CisKKyAgICBib29sIHBhcnNlU2hvcnRoYW5kKENTU1Byb3BlcnR5SUQs
IGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29sIGNvbnN1bWVTaG9ydGhhbmRHcmVlZGlseShjb25z
dCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiwgYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wgY29u
c3VtZTRWYWx1ZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYsIGJvb2wgaW1wb3J0YW50
KTsKKworICAgIC8vIExlZ2FjeSBwYXJzaW5nIGFsbG93cyA8c3RyaW5nPnMgZm9yIGFuaW1hdGlv
bi1uYW1lCisgICAgYm9vbCBjb25zdW1lQW5pbWF0aW9uU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJv
cGVydHlTaG9ydGhhbmQmLCBib29sIHVzZUxlZ2FjeVBhcnNpbmcsIGJvb2wgaW1wb3J0YW50KTsK
KyAgICBib29sIGNvbnN1bWVCYWNrZ3JvdW5kU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlT
aG9ydGhhbmQmLCBib29sIGltcG9ydGFudCk7CisKKyAgICBib29sIGNvbnN1bWVDb2x1bW5zKGJv
b2wgaW1wb3J0YW50KTsKKworICAgIGJvb2wgY29uc3VtZUdyaWRJdGVtUG9zaXRpb25TaG9ydGhh
bmQoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wgY29uc3VtZUdyaWRU
ZW1wbGF0ZVJvd3NBbmRBcmVhc0FuZENvbHVtbnMoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRh
bnQpOworICAgIGJvb2wgY29uc3VtZUdyaWRUZW1wbGF0ZVNob3J0aGFuZChDU1NQcm9wZXJ0eUlE
LCBib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBjb25zdW1lR3JpZFNob3J0aGFuZChib29sIGlt
cG9ydGFudCk7CisgICAgYm9vbCBjb25zdW1lR3JpZEFyZWFTaG9ydGhhbmQoYm9vbCBpbXBvcnRh
bnQpOworCisgICAgYm9vbCBjb25zdW1lRm9udChib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBj
b25zdW1lRm9udFZhcmlhbnRTaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wgY29u
c3VtZVN5c3RlbUZvbnQoYm9vbCBpbXBvcnRhbnQpOworCisgICAgYm9vbCBjb25zdW1lQm9yZGVy
U3BhY2luZyhib29sIGltcG9ydGFudCk7CisKKyAgICAvLyBDU1MzIFBhcnNpbmcgUm91dGluZXMg
KGZvciBwcm9wZXJ0aWVzIHNwZWNpZmljIHRvIENTUzMpCisgICAgYm9vbCBjb25zdW1lQm9yZGVy
SW1hZ2UoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRhbnQpOworCisgICAgYm9vbCBjb25zdW1l
RmxleChib29sIGltcG9ydGFudCk7CisKKyAgICBib29sIGNvbnN1bWVMZWdhY3lCcmVha1Byb3Bl
cnR5KENTU1Byb3BlcnR5SUQsIGJvb2wgaW1wb3J0YW50KTsKKworcHJpdmF0ZToKKyAgICAvLyBJ
bnB1dHM6CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBtX3JhbmdlOworICAgIGNvbnN0IENTU1Bh
cnNlckNvbnRleHQmIG1fY29udGV4dDsKKyAgICAvLyBPdXRwdXRzOgorICAgIFZlY3RvcjxDU1NQ
cm9wZXJ0eSwgMjU2PiogbV9wYXJzZWRQcm9wZXJ0aWVzOworfTsKKworQ1NTUHJvcGVydHlJRCB1
bnJlc29sdmVkQ1NTUHJvcGVydHlJRChTdHJpbmdWaWV3KTsKK0NTU1ZhbHVlSUQgY3NzVmFsdWVL
ZXl3b3JkSUQoU3RyaW5nVmlldyk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIENTU1Byb3BlcnR5UGFyc2VyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTExMSBAQAorLy8gQ29weXJpZ2h0IDIwMTYgVGhl
IENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8v
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisv
LyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmgiCisKKyNpbmNsdWRlICJDU1NDYWxjdWxhdGlvblZh
bHVlLmgiCisvLyBGSVhNRS1ORVdQQVJTRVI6ICNpbmNsdWRlICJDU1NDb2xvclZhbHVlLmgiCisj
aW5jbHVkZSAiQ1NTQ3Jvc3NmYWRlVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NHcmFkaWVudFZhbHVl
LmgiCisjaW5jbHVkZSAiQ1NTSW1hZ2VTZXRWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0ltYWdlVmFs
dWUuaCIKKy8vIEZJWE1FLU5FV1BBUlNFUjogI2luY2x1ZGUgIkNTU1BhaW50VmFsdWUuaCIKKy8v
IEZJWE1FX05FV1BBUlNFUjogI2luY2x1ZGUgIkNTU1N0cmluZ1ZhbHVlLmgiCisvLyBGSVhNRS1O
RVdQQVJTRVI6ICNpbmNsdWRlICJDU1NVUklWYWx1ZS5oIgorLy8gRklYTUVfTkVXUEFSU0VSOiAj
aW5jbHVkZSAiQ1NTVmFsdWVQYWlyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLyogRklY
TUUtTkVXUEFSU0VSOiBEaXNhYmxlIGZvciBub3cuCisgCituYW1lc3BhY2UgQ1NTUHJvcGVydHlQ
YXJzZXJIZWxwZXJzIHsKKworYm9vbCBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIENTU1BhcnNlclRva2VuIHZhbHVlID0g
cmFuZ2UucGVlaygpOworICAgIGlmICh2YWx1ZS50eXBlKCkgIT0gQ29tbWFUb2tlbikKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVz
cGFjZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBDU1NQYXJzZXJUb2tlbiB2
YWx1ZSA9IHJhbmdlLnBlZWsoKTsKKyAgICBpZiAodmFsdWUudHlwZSgpICE9IERlbGltaXRlclRv
a2VuIHx8IHZhbHVlLmRlbGltaXRlcigpICE9ICcvJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK0NTU1BhcnNlclRva2VuUmFuZ2UgY29uc3VtZUZ1bmN0aW9uKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlKQoreworICAgIEFTU0VSVChyYW5nZS5wZWVrKCkudHlwZSgpID09IEZ1bmN0
aW9uVG9rZW4pOworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgY29udGVudHMgPSByYW5nZS5jb25z
dW1lQmxvY2soKTsKKyAgICByYW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOworICAgIGNvbnRlbnRz
LmNvbnN1bWVXaGl0ZXNwYWNlKCk7CisgICAgcmV0dXJuIGNvbnRlbnRzOworfQorCisvLyBGSVhN
RTogY29uc2lkZXIgcHVsbGluZyBpbiB0aGUgcGFyc2luZyBsb2dpYyBmcm9tIENTU0NhbGN1bGF0
aW9uVmFsdWUuY3BwLgorY2xhc3MgQ2FsY1BhcnNlciB7CisKK3B1YmxpYzoKKyAgICBleHBsaWNp
dCBDYWxjUGFyc2VyKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBWYWx1ZVJhbmdlIHZhbHVl
UmFuZ2UgPSBWYWx1ZVJhbmdlQWxsKQorICAgICAgICA6IG1fc291cmNlUmFuZ2UocmFuZ2UpCisg
ICAgICAgICwgbV9yYW5nZShyYW5nZSkKKyAgICB7CisgICAgICAgIGNvbnN0IENTU1BhcnNlclRv
a2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICAgICAgaWYgKHRva2VuLmZ1bmN0aW9uSWQo
KSA9PSBDU1NWYWx1ZUNhbGMgfHwgdG9rZW4uZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlV2Via2l0
Q2FsYykKKyAgICAgICAgICAgIG1fY2FsY1ZhbHVlID0gQ1NTQ2FsY1ZhbHVlOjpjcmVhdGUoY29u
c3VtZUZ1bmN0aW9uKG1fcmFuZ2UpLCB2YWx1ZVJhbmdlKTsKKyAgICB9CisKKyAgICBjb25zdCBD
U1NDYWxjVmFsdWUqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxjVmFsdWUuZ2V0KCk7IH0K
KyAgICBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZVZhbHVlKCkKKyAgICB7CisgICAgICAgIGlm
ICghbV9jYWxjVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgbV9z
b3VyY2VSYW5nZSA9IG1fcmFuZ2U7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKG1fY2FsY1ZhbHVlLnJlbGVhc2UoKSk7CisgICAgfQorICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBjb25zdW1lTnVtYmVyKCkKKyAgICB7CisgICAgICAgIGlmICghbV9jYWxjVmFsdWUpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgbV9zb3VyY2VSYW5nZSA9IG1fcmFu
Z2U7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZSB1bml0VHlwZSA9IG1fY2Fs
Y1ZhbHVlLT5pc0ludCgpID8gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpJbnRlZ2VyIDog
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpOdW1iZXI7CisgICAgICAgIHJldHVybiBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1fY2FsY1ZhbHVlLT5kb3VibGVWYWx1ZSgpLCB1bml0VHlw
ZSk7CisgICAgfQorCisgICAgYm9vbCBjb25zdW1lTnVtYmVyUmF3KGRvdWJsZSYgcmVzdWx0KQor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2NhbGNWYWx1ZSB8fCBtX2NhbGNWYWx1ZS0+Y2F0ZWdvcnko
KSAhPSBDYWxjTnVtYmVyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBtX3Nv
dXJjZVJhbmdlID0gbV9yYW5nZTsKKyAgICAgICAgcmVzdWx0ID0gbV9jYWxjVmFsdWUtPmRvdWJs
ZVZhbHVlKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBD
U1NQYXJzZXJUb2tlblJhbmdlJiBtX3NvdXJjZVJhbmdlOworICAgIENTU1BhcnNlclRva2VuUmFu
Z2UgbV9yYW5nZTsKKyAgICBNZW1iZXI8Q1NTQ2FsY1ZhbHVlPiBtX2NhbGNWYWx1ZTsKK307CisK
K0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lSW50ZWdlcihDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSwgZG91YmxlIG1pbmltdW1WYWx1ZSkKK3sKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYg
dG9rZW4gPSByYW5nZS5wZWVrKCk7CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tl
bikgeworICAgICAgICBpZiAodG9rZW4ubnVtZXJpY1ZhbHVlVHlwZSgpID09IE51bWJlclZhbHVl
VHlwZSB8fCB0b2tlbi5udW1lcmljVmFsdWUoKSA8IG1pbmltdW1WYWx1ZSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgpLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkludGVnZXIpOworICAgIH0KKyAgICBDYWxjUGFyc2Vy
IGNhbGNQYXJzZXIocmFuZ2UpOworICAgIGlmIChjb25zdCBDU1NDYWxjVmFsdWUqIGNhbGN1bGF0
aW9uID0gY2FsY1BhcnNlci52YWx1ZSgpKSB7CisgICAgICAgIGlmIChjYWxjdWxhdGlvbi0+Y2F0
ZWdvcnkoKSAhPSBDYWxjTnVtYmVyIHx8ICFjYWxjdWxhdGlvbi0+aXNJbnQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICBkb3VibGUgdmFsdWUgPSBjYWxjdWxhdGlvbi0+
ZG91YmxlVmFsdWUoKTsKKyAgICAgICAgaWYgKHZhbHVlIDwgbWluaW11bVZhbHVlKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBjYWxjUGFyc2VyLmNvbnN1bWVO
dW1iZXIoKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0NTU1ByaW1pdGl2ZVZh
bHVlKiBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQor
eworICAgIHJldHVybiBjb25zdW1lSW50ZWdlcihyYW5nZSwgMSk7Cit9CisKK2Jvb2wgY29uc3Vt
ZU51bWJlclJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgZG91YmxlJiByZXN1bHQpCit7
CisgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gTnVtYmVyVG9rZW4pIHsKKyAgICAgICAg
cmVzdWx0ID0gcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1lcmljVmFsdWUo
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIENhbGNQYXJzZXIgY2FsY1BhcnNl
cihyYW5nZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgcmV0dXJuIGNhbGNQYXJzZXIuY29uc3VtZU51
bWJlclJhdyhyZXN1bHQpOworfQorCisvLyBGSVhNRTogV29yayBvdXQgaWYgdGhpcyBjYW4ganVz
dCBjYWxsIGNvbnN1bWVOdW1iZXJSYXcKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lTnVtYmVy
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UpCit7Cisg
ICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOworICAgIGlmICh0
b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4pIHsKKyAgICAgICAgaWYgKHZhbHVlUmFuZ2UgPT0g
VmFsdWVSYW5nZU5vbk5lZ2F0aXZlICYmIHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgMCkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgp
LCB0b2tlbi51bml0VHlwZSgpKTsKKyAgICB9CisgICAgQ2FsY1BhcnNlciBjYWxjUGFyc2VyKHJh
bmdlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBpZiAoY29uc3QgQ1NTQ2FsY1ZhbHVlKiBjYWxjdWxh
dGlvbiA9IGNhbGNQYXJzZXIudmFsdWUoKSkgeworICAgICAgICAvLyBGSVhNRTogQ2FsY3Mgc2hv
dWxkIG5vdCBiZSBzdWJqZWN0IHRvIHBhcnNlIHRpbWUgcmFuZ2UgY2hlY2tzLgorICAgICAgICAv
LyBzcGVjOiBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy0zLyNjYWxjLXJhbmdl
CisgICAgICAgIGlmIChjYWxjdWxhdGlvbi0+Y2F0ZWdvcnkoKSAhPSBDYWxjTnVtYmVyIHx8ICh2
YWx1ZVJhbmdlID09IFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSAmJiBjYWxjdWxhdGlvbi0+aXNOZWdh
dGl2ZSgpKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gY2Fs
Y1BhcnNlci5jb25zdW1lTnVtYmVyKCk7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQor
CitpbmxpbmUgYm9vbCBzaG91bGRBY2NlcHRVbml0bGVzc0xlbmd0aChkb3VibGUgdmFsdWUsIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKK3sKKyAg
ICAvLyBGSVhNRTogUHJlc2VudGF0aW9uYWwgSFRNTCBhdHRyaWJ1dGVzIHNob3VsZG4ndCB1c2Ug
dGhlIENTUyBwYXJzZXIgZm9yIGxlbmd0aHMKKyAgICByZXR1cm4gdmFsdWUgPT0gMAorICAgICAg
ICB8fCBpc1VuaXRMZXNzTGVuZ3RoUGFyc2luZ0VuYWJsZWRGb3JNb2RlKGNzc1BhcnNlck1vZGUp
CisgICAgICAgIHx8IChjc3NQYXJzZXJNb2RlID09IEhUTUxRdWlya3NNb2RlICYmIHVuaXRsZXNz
ID09IFVuaXRsZXNzUXVpcms6OkFsbG93KTsKK30KKworQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1
bWVMZW5ndGgoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFy
c2VyTW9kZSwgVmFsdWVSYW5nZSB2YWx1ZVJhbmdlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzKQor
eworICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICBp
ZiAodG9rZW4udHlwZSgpID09IERpbWVuc2lvblRva2VuKSB7CisgICAgICAgIHN3aXRjaCAodG9r
ZW4udW5pdFR5cGUoKSkgeworICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZTo6UXVpcmt5RW1zOgorICAgICAgICAgICAgaWYgKGNzc1BhcnNlck1vZGUgIT0gVUFTaGVldE1v
ZGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBGQUxMVEhS
T1VHSDsKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkVtczoKKyAg
ICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlJlbXM6CisgICAgICAgIGNh
c2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpDaHM6CisgICAgICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpFeHM6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlOjpQaXhlbHM6CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlOjpDZW50aW1ldGVyczoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGU6Ok1pbGxpbWV0ZXJzOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZTo6SW5jaGVzOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6
UG9pbnRzOgorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGljYXM6
CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpVc2VyVW5pdHM6Cisg
ICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpWaWV3cG9ydFdpZHRoOgor
ICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6Vmlld3BvcnRIZWlnaHQ6
CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpWaWV3cG9ydE1pbjoK
KyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlZpZXdwb3J0TWF4Ogor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWVSYW5nZSA9PSBWYWx1ZVJhbmdl
Tm9uTmVnYXRpdmUgJiYgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPCAwKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJh
bmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCksIHRva2VuLnVu
aXRUeXBlKCkpOworICAgIH0KKyAgICBpZiAodG9rZW4udHlwZSgpID09IE51bWJlclRva2VuKSB7
CisgICAgICAgIGlmICghc2hvdWxkQWNjZXB0VW5pdGxlc3NMZW5ndGgodG9rZW4ubnVtZXJpY1Zh
bHVlKCksIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKQorICAgICAgICAgICAgfHwgKHZhbHVlUmFu
Z2UgPT0gVmFsdWVSYW5nZU5vbk5lZ2F0aXZlICYmIHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgMCkp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlIHVuaXRUeXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQaXhlbHM7
CisgICAgICAgIGlmIChjc3NQYXJzZXJNb2RlID09IFNWR0F0dHJpYnV0ZU1vZGUpCisgICAgICAg
ICAgICB1bml0VHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6VXNlclVuaXRzOwor
ICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1lSW5j
bHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgpLCB1bml0VHlwZSk7CisgICAgfQorICAg
IGlmIChjc3NQYXJzZXJNb2RlID09IFNWR0F0dHJpYnV0ZU1vZGUpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgdmFsdWVSYW5nZSk7Cisg
ICAgaWYgKGNhbGNQYXJzZXIudmFsdWUoKSAmJiBjYWxjUGFyc2VyLnZhbHVlKCktPmNhdGVnb3J5
KCkgPT0gQ2FsY0xlbmd0aCkKKyAgICAgICAgcmV0dXJuIGNhbGNQYXJzZXIuY29uc3VtZVZhbHVl
KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1l
UGVyY2VudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgVmFsdWVSYW5nZSB2YWx1ZVJhbmdl
KQoreworICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAg
ICBpZiAodG9rZW4udHlwZSgpID09IFBlcmNlbnRhZ2VUb2tlbikgeworICAgICAgICBpZiAodmFs
dWVSYW5nZSA9PSBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUgJiYgdG9rZW4ubnVtZXJpY1ZhbHVlKCkg
PCAwKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVt
ZXJpY1ZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGVyY2VudGFnZSk7Cisg
ICAgfQorICAgIENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgdmFsdWVSYW5nZSk7CisgICAg
aWYgKGNvbnN0IENTU0NhbGNWYWx1ZSogY2FsY3VsYXRpb24gPSBjYWxjUGFyc2VyLnZhbHVlKCkp
IHsKKyAgICAgICAgaWYgKGNhbGN1bGF0aW9uLT5jYXRlZ29yeSgpID09IENhbGNQZXJjZW50KQor
ICAgICAgICAgICAgcmV0dXJuIGNhbGNQYXJzZXIuY29uc3VtZVZhbHVlKCk7CisgICAgfQorICAg
IHJldHVybiBudWxscHRyOworfQorCitib29sIGNhbkNvbnN1bWVDYWxjVmFsdWUoQ2FsY3VsYXRp
b25DYXRlZ29yeSBjYXRlZ29yeSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAg
IGlmIChjYXRlZ29yeSA9PSBDYWxjTGVuZ3RoIHx8IGNhdGVnb3J5ID09IENhbGNQZXJjZW50IHx8
IGNhdGVnb3J5ID09IENhbGNQZXJjZW50TGVuZ3RoKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIGlmIChjc3NQYXJzZXJNb2RlICE9IFNWR0F0dHJpYnV0ZU1vZGUpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmIChjYXRlZ29yeSA9PSBDYWxjTnVtYmVyIHx8IGNhdGVnb3J5ID09
IENhbGNQZXJjZW50TnVtYmVyIHx8IGNhdGVnb3J5ID09IENhbGNMZW5ndGhOdW1iZXIgfHwgY2F0
ZWdvcnkgPT0gQ2FsY1BlcmNlbnRMZW5ndGhOdW1iZXIpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUxlbmd0
aE9yUGVyY2VudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQ
YXJzZXJNb2RlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3Mp
Cit7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOworICAg
IGlmICh0b2tlbi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4gfHwgdG9rZW4udHlwZSgpID09IE51
bWJlclRva2VuKQorICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2Vy
TW9kZSwgdmFsdWVSYW5nZSwgdW5pdGxlc3MpOworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gUGVy
Y2VudGFnZVRva2VuKQorICAgICAgICByZXR1cm4gY29uc3VtZVBlcmNlbnQocmFuZ2UsIHZhbHVl
UmFuZ2UpOworICAgIENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgdmFsdWVSYW5nZSk7Cisg
ICAgaWYgKGNvbnN0IENTU0NhbGNWYWx1ZSogY2FsY3VsYXRpb24gPSBjYWxjUGFyc2VyLnZhbHVl
KCkpIHsKKyAgICAgICAgaWYgKGNhbkNvbnN1bWVDYWxjVmFsdWUoY2FsY3VsYXRpb24tPmNhdGVn
b3J5KCksIGNzc1BhcnNlck1vZGUpKQorICAgICAgICAgICAgcmV0dXJuIGNhbGNQYXJzZXIuY29u
c3VtZVZhbHVlKCk7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCitDU1NQcmltaXRp
dmVWYWx1ZSogY29uc3VtZUFuZ2xlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAg
IGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICBpZiAodG9r
ZW4udHlwZSgpID09IERpbWVuc2lvblRva2VuKSB7CisgICAgICAgIHN3aXRjaCAodG9rZW4udW5p
dFR5cGUoKSkgeworICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6RGVn
cmVlczoKKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlJhZGlhbnM6
CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpHcmFkaWFuczoKKyAg
ICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlR1cm5zOgorICAgICAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFuZ2UuY29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UoKS5udW1lcmljVmFsdWUoKSwgdG9rZW4udW5pdFR5cGUoKSk7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0K
KyAgICBpZiAodG9rZW4udHlwZSgpID09IE51bWJlclRva2VuICYmIHRva2VuLm51bWVyaWNWYWx1
ZSgpID09IDApIHsKKyAgICAgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsK
KyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMCwgQ1NTUHJpbWl0aXZl
VmFsdWU6OlVuaXRUeXBlOjpEZWdyZWVzKTsKKyAgICB9CisgICAgQ2FsY1BhcnNlciBjYWxjUGFy
c2VyKHJhbmdlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBpZiAoY29uc3QgQ1NTQ2FsY1ZhbHVlKiBj
YWxjdWxhdGlvbiA9IGNhbGNQYXJzZXIudmFsdWUoKSkgeworICAgICAgICBpZiAoY2FsY3VsYXRp
b24tPmNhdGVnb3J5KCkgPT0gQ2FsY0FuZ2xlKQorICAgICAgICAgICAgcmV0dXJuIGNhbGNQYXJz
ZXIuY29uc3VtZVZhbHVlKCk7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCitDU1NQ
cmltaXRpdmVWYWx1ZSogY29uc3VtZVRpbWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIFZh
bHVlUmFuZ2UgdmFsdWVSYW5nZSkKK3sKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4g
PSByYW5nZS5wZWVrKCk7CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbikg
eworICAgICAgICBpZiAodmFsdWVSYW5nZSA9PSBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUgJiYgdG9r
ZW4ubnVtZXJpY1ZhbHVlKCkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZSB1bml0ID0gdG9rZW4udW5pdFR5cGUoKTsK
KyAgICAgICAgaWYgKHVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpNaWxsaXNl
Y29uZHMgfHwgdW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlNlY29uZHMpCisg
ICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyYW5nZS5jb25zdW1l
SW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgpLCB0b2tlbi51bml0VHlwZSgpKTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIENhbGNQYXJzZXIgY2FsY1BhcnNl
cihyYW5nZSwgdmFsdWVSYW5nZSk7CisgICAgaWYgKGNvbnN0IENTU0NhbGNWYWx1ZSogY2FsY3Vs
YXRpb24gPSBjYWxjUGFyc2VyLnZhbHVlKCkpIHsKKyAgICAgICAgaWYgKGNhbGN1bGF0aW9uLT5j
YXRlZ29yeSgpID09IENhbGNUaW1lKQorICAgICAgICAgICAgcmV0dXJuIGNhbGNQYXJzZXIuY29u
c3VtZVZhbHVlKCk7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCitDU1NQcmltaXRp
dmVWYWx1ZSogY29uc3VtZUlkZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQoreworICAg
IGlmIChyYW5nZS5wZWVrKCkudHlwZSgpICE9IElkZW50VG9rZW4pCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihy
YW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCkpOworfQorCitDU1NQcmltaXRp
dmVWYWx1ZSogY29uc3VtZUlkZW50UmFuZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U1ZhbHVlSUQgbG93ZXIsIENTU1ZhbHVlSUQgdXBwZXIpCit7CisgICAgaWYgKHJhbmdlLnBlZWso
KS5pZCgpIDwgbG93ZXIgfHwgcmFuZ2UucGVlaygpLmlkKCkgPiB1cHBlcikKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7Cit9CisKK0NTU0N1
c3RvbUlkZW50VmFsdWUqIGNvbnN1bWVDdXN0b21JZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBJZGVudFRva2VuIHx8IGlz
Q1NTV2lkZUtleXdvcmQocmFuZ2UucGVlaygpLmlkKCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gQ1NTQ3VzdG9tSWRlbnRWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJ
bmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b1N0cmluZygpKTsKK30KKworQ1NTU3RyaW5n
VmFsdWUqIGNvbnN1bWVTdHJpbmcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAg
aWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgIT0gU3RyaW5nVG9rZW4pCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBDU1NTdHJpbmdWYWx1ZTo6Y3JlYXRlKHJhbmdlLmNvbnN1bWVJ
bmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b1N0cmluZygpKTsKK30KKworU3RyaW5nVmll
dyBjb25zdW1lVXJsQXNTdHJpbmdWaWV3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQorewor
ICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKKyAgICBpZiAo
dG9rZW4udHlwZSgpID09IFVybFRva2VuKSB7CisgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRp
bmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIHJldHVybiB0b2tlbi52YWx1ZSgpOworICAgIH0KKyAg
ICBpZiAodG9rZW4uZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlVXJsKSB7CisgICAgICAgIENTU1Bh
cnNlclRva2VuUmFuZ2UgdXJsUmFuZ2UgPSByYW5nZTsKKyAgICAgICAgQ1NTUGFyc2VyVG9rZW5S
YW5nZSB1cmxBcmdzID0gdXJsUmFuZ2UuY29uc3VtZUJsb2NrKCk7CisgICAgICAgIGNvbnN0IENT
U1BhcnNlclRva2VuJiBuZXh0ID0gdXJsQXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgp
OworICAgICAgICBpZiAobmV4dC50eXBlKCkgPT0gQmFkU3RyaW5nVG9rZW4gfHwgIXVybEFyZ3Mu
YXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmdWaWV3KCk7CisgICAgICAgIEFTU0VS
VChuZXh0LnR5cGUoKSA9PSBTdHJpbmdUb2tlbik7CisgICAgICAgIHJhbmdlID0gdXJsUmFuZ2U7
CisgICAgICAgIHJhbmdlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7CisgICAgICAgIHJldHVybiBuZXh0
LnZhbHVlKCk7CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZ1ZpZXcoKTsKK30KKworQ1NTVVJJ
VmFsdWUqIGNvbnN1bWVVcmwoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgU3Ry
aW5nVmlldyB1cmwgPSBjb25zdW1lVXJsQXNTdHJpbmdWaWV3KHJhbmdlKTsKKyAgICBpZiAodXJs
LmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gQ1NTVVJJVmFs
dWU6OmNyZWF0ZSh1cmwudG9TdHJpbmcoKSk7Cit9CisKK3N0YXRpYyBpbnQgY2xhbXBSR0JDb21w
b25lbnQoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQoreworICAgIGRvdWJsZSByZXN1
bHQgPSB2YWx1ZS5nZXREb3VibGVWYWx1ZSgpOworICAgIC8vIEZJWE1FOiBNdWx0aXBseSBieSAy
LjU1IGFuZCByb3VuZCBpbnN0ZWFkIG9mIGZsb29yLgorICAgIGlmICh2YWx1ZS5pc1BlcmNlbnRh
Z2UoKSkKKyAgICAgICAgcmVzdWx0ICo9IDIuNTY7CisgICAgcmV0dXJuIGNsYW1wVG88aW50Pihy
ZXN1bHQsIDAsIDI1NSk7Cit9CisKK3N0YXRpYyBib29sIHBhcnNlUkdCUGFyYW1ldGVycyhDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgUkdCQTMyJiByZXN1bHQsIGJvb2wgcGFyc2VBbHBoYSkK
K3sKKyAgICBBU1NFUlQocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZVJnYiB8
fCByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlUmdiYSk7CisgICAgQ1NTUGFy
c2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlKTsKKyAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogY29sb3JQYXJhbWV0ZXIgPSBjb25zdW1lSW50ZWdlcihhcmdzKTsKKyAgICBp
ZiAoIWNvbG9yUGFyYW1ldGVyKQorICAgICAgICBjb2xvclBhcmFtZXRlciA9IGNvbnN1bWVQZXJj
ZW50KGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAgIGlmICghY29sb3JQYXJhbWV0ZXIpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBjb25zdCBib29sIGlzUGVyY2VudCA9IGNvbG9yUGFyYW1l
dGVyLT5pc1BlcmNlbnRhZ2UoKTsKKyAgICBpbnQgY29sb3JBcnJheVszXTsKKyAgICBjb2xvckFy
cmF5WzBdID0gY2xhbXBSR0JDb21wb25lbnQoKmNvbG9yUGFyYW1ldGVyKTsKKyAgICBmb3IgKGlu
dCBpID0gMTsgaSA8IDM7IGkrKykgeworICAgICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGlu
Z1doaXRlc3BhY2UoYXJncykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNv
bG9yUGFyYW1ldGVyID0gaXNQZXJjZW50ID8gY29uc3VtZVBlcmNlbnQoYXJncywgVmFsdWVSYW5n
ZUFsbCkgOiBjb25zdW1lSW50ZWdlcihhcmdzKTsKKyAgICAgICAgaWYgKCFjb2xvclBhcmFtZXRl
cikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY29sb3JBcnJheVtpXSA9IGNs
YW1wUkdCQ29tcG9uZW50KCpjb2xvclBhcmFtZXRlcik7CisgICAgfQorICAgIGlmIChwYXJzZUFs
cGhhKSB7CisgICAgICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdz
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZG91YmxlIGFscGhhOworICAg
ICAgICBpZiAoIWNvbnN1bWVOdW1iZXJSYXcoYXJncywgYWxwaGEpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAvLyBDb252ZXJ0IHRoZSBmbG9hdGluZyBwb2ludGVyIG51bWJl
ciBvZiBhbHBoYSB0byBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBbMCwgMjU2KSwKKyAgICAgICAg
Ly8gd2l0aCBhbiBlcXVhbCBkaXN0cmlidXRpb24gYWNyb3NzIGFsbCAyNTYgdmFsdWVzLgorICAg
ICAgICBpbnQgYWxwaGFDb21wb25lbnQgPSBzdGF0aWNfY2FzdDxpbnQ+KGNsYW1wVG88ZG91Ymxl
PihhbHBoYSwgMC4wLCAxLjApICogbmV4dGFmdGVyKDI1Ni4wLCAwLjApKTsKKyAgICAgICAgcmVz
dWx0ID0gbWFrZVJHQkEoY29sb3JBcnJheVswXSwgY29sb3JBcnJheVsxXSwgY29sb3JBcnJheVsy
XSwgYWxwaGFDb21wb25lbnQpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJlc3VsdCA9IG1ha2VS
R0IoY29sb3JBcnJheVswXSwgY29sb3JBcnJheVsxXSwgY29sb3JBcnJheVsyXSk7CisgICAgfQor
ICAgIHJldHVybiBhcmdzLmF0RW5kKCk7Cit9CisKK3N0YXRpYyBib29sIHBhcnNlSFNMUGFyYW1l
dGVycyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgUkdCQTMyJiByZXN1bHQsIGJvb2wgcGFy
c2VBbHBoYSkKK3sKKyAgICBBU1NFUlQocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NW
YWx1ZUhzbCB8fCByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlSHNsYSk7Cisg
ICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlKTsKKyAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogaHNsVmFsdWUgPSBjb25zdW1lTnVtYmVyKGFyZ3MsIFZhbHVl
UmFuZ2VBbGwpOworICAgIGlmICghaHNsVmFsdWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBkb3VibGUgY29sb3JBcnJheVszXTsKKyAgICBjb2xvckFycmF5WzBdID0gKCgoaHNsVmFsdWUt
PmdldEludFZhbHVlKCkgJSAzNjApICsgMzYwKSAlIDM2MCkgLyAzNjAuMDsKKyAgICBmb3IgKGlu
dCBpID0gMTsgaSA8IDM7IGkrKykgeworICAgICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGlu
Z1doaXRlc3BhY2UoYXJncykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGhz
bFZhbHVlID0gY29uc3VtZVBlcmNlbnQoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGlm
ICghaHNsVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRvdWJsZSBk
b3VibGVWYWx1ZSA9IGhzbFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICBjb2xvckFy
cmF5W2ldID0gY2xhbXBUbzxkb3VibGU+KGRvdWJsZVZhbHVlLCAwLjAsIDEwMC4wKSAvIDEwMC4w
OyAvLyBOZWVkcyB0byBiZSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDEuMC4KKyAgICB9CisgICAgZG91
YmxlIGFscGhhID0gMS4wOworICAgIGlmIChwYXJzZUFscGhhKSB7CisgICAgICAgIGlmICghY29u
c3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgaWYgKCFjb25zdW1lTnVtYmVyUmF3KGFyZ3MsIGFscGhhKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYWxwaGEgPSBjbGFtcFRvPGRvdWJsZT4oYWxw
aGEsIDAuMCwgMS4wKTsKKyAgICB9CisgICAgcmVzdWx0ID0gbWFrZVJHQkFGcm9tSFNMQShjb2xv
ckFycmF5WzBdLCBjb2xvckFycmF5WzFdLCBjb2xvckFycmF5WzJdLCBhbHBoYSk7CisgICAgcmV0
dXJuIGFyZ3MuYXRFbmQoKTsKK30KKworc3RhdGljIGJvb2wgcGFyc2VIZXhDb2xvcihDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgUkdCQTMyJiByZXN1bHQsIGJvb2wgYWNjZXB0UXVpcmt5Q29s
b3JzKQoreworICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsK
KyAgICBpZiAodG9rZW4udHlwZSgpID09IEhhc2hUb2tlbikgeworICAgICAgICBpZiAoIUNvbG9y
OjpwYXJzZUhleENvbG9yKHRva2VuLnZhbHVlKCksIHJlc3VsdCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfSBlbHNlIGlmIChhY2NlcHRRdWlya3lDb2xvcnMpIHsKKyAgICAgICAg
U3RyaW5nIGNvbG9yOworICAgICAgICBpZiAodG9rZW4udHlwZSgpID09IE51bWJlclRva2VuIHx8
IHRva2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbikgeworICAgICAgICAgICAgaWYgKHRva2Vu
Lm51bWVyaWNWYWx1ZVR5cGUoKSAhPSBJbnRlZ2VyVmFsdWVUeXBlCisgICAgICAgICAgICAgICAg
fHwgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPCAwLiB8fCB0b2tlbi5udW1lcmljVmFsdWUoKSA+PSAx
MDAwMDAwLikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAo
dG9rZW4udHlwZSgpID09IE51bWJlclRva2VuKSAvLyBlLmcuIDExMjIzMworICAgICAgICAgICAg
ICAgIGNvbG9yID0gU3RyaW5nOjpmb3JtYXQoIiVkIiwgc3RhdGljX2Nhc3Q8aW50Pih0b2tlbi5u
dW1lcmljVmFsdWUoKSkpOworICAgICAgICAgICAgZWxzZSAvLyBlLmcuIDAwMDFGRgorICAgICAg
ICAgICAgICAgIGNvbG9yID0gU3RyaW5nOjpudW1iZXIoc3RhdGljX2Nhc3Q8aW50Pih0b2tlbi5u
dW1lcmljVmFsdWUoKSkpICsgdG9rZW4udmFsdWUoKS50b1N0cmluZygpOworICAgICAgICAgICAg
d2hpbGUgKGNvbG9yLmxlbmd0aCgpIDwgNikKKyAgICAgICAgICAgICAgICBjb2xvciA9ICIwIiAr
IGNvbG9yOworICAgICAgICB9IGVsc2UgaWYgKHRva2VuLnR5cGUoKSA9PSBJZGVudFRva2VuKSB7
IC8vIGUuZy4gRkYwMDAwCisgICAgICAgICAgICBjb2xvciA9IHRva2VuLnZhbHVlKCkudG9TdHJp
bmcoKTsKKyAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBjb2xvci5sZW5ndGgo
KTsKKyAgICAgICAgaWYgKGxlbmd0aCAhPSAzICYmIGxlbmd0aCAhPSA2KQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIUNvbG9yOjpwYXJzZUhleENvbG9yKGNvbG9yLCBy
ZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3Bh
Y2UoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgcGFyc2VDb2xvckZ1bmN0
aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBSR0JBMzImIHJlc3VsdCkKK3sKKyAgICBD
U1NWYWx1ZUlEIGZ1bmN0aW9uSWQgPSByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpOworICAgIGlm
IChmdW5jdGlvbklkIDwgQ1NTVmFsdWVSZ2IgfHwgZnVuY3Rpb25JZCA+IENTU1ZhbHVlSHNsYSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgY29sb3JSYW5n
ZSA9IHJhbmdlOworICAgIGlmICgoZnVuY3Rpb25JZCA8PSBDU1NWYWx1ZVJnYmEgJiYgIXBhcnNl
UkdCUGFyYW1ldGVycyhjb2xvclJhbmdlLCByZXN1bHQsIGZ1bmN0aW9uSWQgPT0gQ1NTVmFsdWVS
Z2JhKSkKKyAgICAgICAgfHwgKGZ1bmN0aW9uSWQgPj0gQ1NTVmFsdWVIc2wgJiYgIXBhcnNlSFNM
UGFyYW1ldGVycyhjb2xvclJhbmdlLCByZXN1bHQsIGZ1bmN0aW9uSWQgPT0gQ1NTVmFsdWVIc2xh
KSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByYW5nZSA9IGNvbG9yUmFuZ2U7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK0NTU1ZhbHVlKiBjb25zdW1lQ29sb3IoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgYm9vbCBhY2NlcHRRdWly
a3lDb2xvcnMpCit7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5pZCgpOworICAg
IGlmIChTdHlsZUNvbG9yOjppc0NvbG9yS2V5d29yZChpZCkpIHsKKyAgICAgICAgaWYgKCFpc1Zh
bHVlQWxsb3dlZEluTW9kZShpZCwgY3NzUGFyc2VyTW9kZSkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgfQorICAg
IFJHQkEzMiBjb2xvciA9IENvbG9yOjp0cmFuc3BhcmVudDsKKyAgICBpZiAoIXBhcnNlSGV4Q29s
b3IocmFuZ2UsIGNvbG9yLCBhY2NlcHRRdWlya3lDb2xvcnMpICYmICFwYXJzZUNvbG9yRnVuY3Rp
b24ocmFuZ2UsIGNvbG9yKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIENT
U0NvbG9yVmFsdWU6OmNyZWF0ZShjb2xvcik7Cit9CisKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1
ZSogY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBD
U1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCit7Cisg
ICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gSWRlbnRUb2tlbikKKyAgICAgICAgcmV0dXJu
IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlVG9wLCBDU1NWYWx1ZUJvdHRvbSwg
Q1NTVmFsdWVSaWdodCwgQ1NTVmFsdWVDZW50ZXI+KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3Vt
ZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCwgdW5p
dGxlc3MpOworfQorCitzdGF0aWMgYm9vbCBpc0hvcml6b250YWxQb3NpdGlvbktleXdvcmRPbmx5
KGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUuaXNW
YWx1ZUlEKCkgJiYgKHZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWUu
Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlUmlnaHQpOworfQorCitzdGF0aWMgYm9vbCBpc1ZlcnRp
Y2FsUG9zaXRpb25LZXl3b3JkT25seShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUpCit7
CisgICAgcmV0dXJuIHZhbHVlLmlzVmFsdWVJRCgpICYmICh2YWx1ZS5nZXRWYWx1ZUlEKCkgPT0g
Q1NTVmFsdWVUb3AgfHwgdmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQm90dG9tKTsKK30K
Kworc3RhdGljIHZvaWQgcG9zaXRpb25Gcm9tT25lVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUqIHZh
bHVlLCBDU1NWYWx1ZSomIHJlc3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSkKK3sKKyAgICBib29s
IHZhbHVlQXBwbGllc1RvWUF4aXNPbmx5ID0gaXNWZXJ0aWNhbFBvc2l0aW9uS2V5d29yZE9ubHko
KnZhbHVlKTsKKyAgICByZXN1bHRYID0gdmFsdWU7CisgICAgcmVzdWx0WSA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlQ2VudGVyKTsKKyAgICBpZiAodmFsdWVB
cHBsaWVzVG9ZQXhpc09ubHkpCisgICAgICAgIHN0ZDo6c3dhcChyZXN1bHRYLCByZXN1bHRZKTsK
K30KKworc3RhdGljIGJvb2wgcG9zaXRpb25Gcm9tVHdvVmFsdWVzKENTU1ByaW1pdGl2ZVZhbHVl
KiB2YWx1ZTEsIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZTIsCisgICAgQ1NTVmFsdWUqJiByZXN1
bHRYLCBDU1NWYWx1ZSomIHJlc3VsdFkpCit7CisgICAgYm9vbCBtdXN0T3JkZXJBc1hZID0gaXNI
b3Jpem9udGFsUG9zaXRpb25LZXl3b3JkT25seSgqdmFsdWUxKSB8fCBpc1ZlcnRpY2FsUG9zaXRp
b25LZXl3b3JkT25seSgqdmFsdWUyKQorICAgICAgICB8fCAhdmFsdWUxLT5pc1ZhbHVlSUQoKSB8
fCAhdmFsdWUyLT5pc1ZhbHVlSUQoKTsKKyAgICBib29sIG11c3RPcmRlckFzWVggPSBpc1ZlcnRp
Y2FsUG9zaXRpb25LZXl3b3JkT25seSgqdmFsdWUxKSB8fCBpc0hvcml6b250YWxQb3NpdGlvbktl
eXdvcmRPbmx5KCp2YWx1ZTIpOworICAgIGlmIChtdXN0T3JkZXJBc1hZICYmIG11c3RPcmRlckFz
WVgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXN1bHRYID0gdmFsdWUxOworICAgIHJl
c3VsdFkgPSB2YWx1ZTI7CisgICAgaWYgKG11c3RPcmRlckFzWVgpCisgICAgICAgIHN0ZDo6c3dh
cChyZXN1bHRYLCByZXN1bHRZKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wg
cG9zaXRpb25Gcm9tVGhyZWVPckZvdXJWYWx1ZXMoQ1NTUHJpbWl0aXZlVmFsdWUqKiB2YWx1ZXMs
IENTU1ZhbHVlKiYgcmVzdWx0WCwgQ1NTVmFsdWUqJiByZXN1bHRZKQoreworICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBjZW50ZXIgPSBudWxscHRyOworICAgIGZvciAoaW50IGkgPSAwOyB2YWx1ZXNb
aV07IGkrKykgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogY3VycmVudFZhbHVlID0gdmFs
dWVzW2ldOworICAgICAgICBpZiAoIWN1cnJlbnRWYWx1ZS0+aXNWYWx1ZUlEKCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIENTU1ZhbHVlSUQgaWQgPSBjdXJyZW50VmFsdWUt
PmdldFZhbHVlSUQoKTsKKworICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVDZW50ZXIpIHsKKyAg
ICAgICAgICAgIGlmIChjZW50ZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgY2VudGVyID0gY3VycmVudFZhbHVlOworICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIH0KKworICAgICAgICBDU1NWYWx1ZSogcmVzdWx0ID0gbnVsbHB0cjsKKyAgICAgICAg
aWYgKHZhbHVlc1tpICsgMV0gJiYgIXZhbHVlc1tpICsgMV0tPmlzVmFsdWVJRCgpKSB7CisgICAg
ICAgICAgICByZXN1bHQgPSBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShjdXJyZW50VmFsdWUsIHZhbHVl
c1srK2ldLCBDU1NWYWx1ZVBhaXI6OktlZXBJZGVudGljYWxWYWx1ZXMpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgcmVzdWx0ID0gY3VycmVudFZhbHVlOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGlkID09IENTU1ZhbHVlTGVmdCB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0KSB7Cisg
ICAgICAgICAgICBpZiAocmVzdWx0WCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICByZXN1bHRYID0gcmVzdWx0OworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgQVNTRVJUKGlkID09IENTU1ZhbHVlVG9wIHx8IGlkID09IENTU1ZhbHVlQm90dG9tKTsKKyAg
ICAgICAgICAgIGlmIChyZXN1bHRZKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIHJlc3VsdFkgPSByZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAo
Y2VudGVyKSB7CisgICAgICAgIEFTU0VSVChyZXN1bHRYIHx8IHJlc3VsdFkpOworICAgICAgICBp
ZiAocmVzdWx0WCAmJiByZXN1bHRZKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpZiAoIXJlc3VsdFgpCisgICAgICAgICAgICByZXN1bHRYID0gY2VudGVyOworICAgICAgICBl
bHNlCisgICAgICAgICAgICByZXN1bHRZID0gY2VudGVyOworICAgIH0KKworICAgIEFTU0VSVChy
ZXN1bHRYICYmIHJlc3VsdFkpOworICAgIHJldHVybiB0cnVlOworfQorCisvLyBGSVhNRTogVGhp
cyBtYXkgY29uc3VtZSBmcm9tIHRoZSByYW5nZSB1cG9uIGZhaWx1cmUuIFRoZSBiYWNrZ3JvdW5k
CisvLyBzaG9ydGhhbmQgd29ya3MgYXJvdW5kIGl0LCBidXQgd2Ugc2hvdWxkIGp1c3QgZml4IGl0
IGhlcmUuCitib29sIGNvbnN1bWVQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Q1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzLCBDU1NW
YWx1ZSomIHJlc3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSkKK3sKKyAgICBDU1NQcmltaXRpdmVW
YWx1ZSogdmFsdWUxID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQYXJzZXJN
b2RlLCB1bml0bGVzcyk7CisgICAgaWYgKCF2YWx1ZTEpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZTIgPSBjb25zdW1lUG9zaXRpb25Db21wb25l
bnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKTsKKyAgICBpZiAoIXZhbHVlMikgewor
ICAgICAgICBwb3NpdGlvbkZyb21PbmVWYWx1ZSh2YWx1ZTEsIHJlc3VsdFgsIHJlc3VsdFkpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmFs
dWUzID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0
bGVzcyk7CisgICAgaWYgKCF2YWx1ZTMpCisgICAgICAgIHJldHVybiBwb3NpdGlvbkZyb21Ud29W
YWx1ZXModmFsdWUxLCB2YWx1ZTIsIHJlc3VsdFgsIHJlc3VsdFkpOworCisgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHZhbHVlNCA9IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFy
c2VyTW9kZSwgdW5pdGxlc3MpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZXNbNV07Cisg
ICAgdmFsdWVzWzBdID0gdmFsdWUxOworICAgIHZhbHVlc1sxXSA9IHZhbHVlMjsKKyAgICB2YWx1
ZXNbMl0gPSB2YWx1ZTM7CisgICAgdmFsdWVzWzNdID0gdmFsdWU0OworICAgIHZhbHVlc1s0XSA9
IG51bGxwdHI7CisgICAgcmV0dXJuIHBvc2l0aW9uRnJvbVRocmVlT3JGb3VyVmFsdWVzKHZhbHVl
cywgcmVzdWx0WCwgcmVzdWx0WSk7Cit9CisKK0NTU1ZhbHVlUGFpciogY29uc3VtZVBvc2l0aW9u
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUs
IFVuaXRsZXNzUXVpcmsgdW5pdGxlc3MpCit7CisgICAgQ1NTVmFsdWUqIHJlc3VsdFggPSBudWxs
cHRyOworICAgIENTU1ZhbHVlKiByZXN1bHRZID0gbnVsbHB0cjsKKyAgICBpZiAoY29uc3VtZVBv
c2l0aW9uKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcywgcmVzdWx0WCwgcmVzdWx0WSkp
CisgICAgICAgIHJldHVybiBDU1NWYWx1ZVBhaXI6OmNyZWF0ZShyZXN1bHRYLCByZXN1bHRZLCBD
U1NWYWx1ZVBhaXI6OktlZXBJZGVudGljYWxWYWx1ZXMpOworICAgIHJldHVybiBudWxscHRyOwor
fQorCitib29sIGNvbnN1bWVPbmVPclR3b1ZhbHVlZFBvc2l0aW9uKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcmsgdW5p
dGxlc3MsIENTU1ZhbHVlKiYgcmVzdWx0WCwgQ1NTVmFsdWUqJiByZXN1bHRZKQoreworICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZTEgPSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQocmFuZ2Us
IGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKTsKKyAgICBpZiAoIXZhbHVlMSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZTIgPSBjb25zdW1lUG9zaXRp
b25Db21wb25lbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKTsKKyAgICBpZiAoIXZh
bHVlMikgeworICAgICAgICBwb3NpdGlvbkZyb21PbmVWYWx1ZSh2YWx1ZTEsIHJlc3VsdFgsIHJl
c3VsdFkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIHBvc2l0aW9u
RnJvbVR3b1ZhbHVlcyh2YWx1ZTEsIHZhbHVlMiwgcmVzdWx0WCwgcmVzdWx0WSk7Cit9CisKKy8v
IFRoaXMgc2hvdWxkIGdvIGF3YXkgb25jZSB3ZSBkcm9wIHN1cHBvcnQgZm9yIC13ZWJraXQtZ3Jh
ZGllbnQKK3N0YXRpYyBDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVu
dFBvaW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGJvb2wgaG9yaXpvbnRhbCkKK3sKKyAg
ICBpZiAoYXJncy5wZWVrKCkudHlwZSgpID09IElkZW50VG9rZW4pIHsKKyAgICAgICAgaWYgKCho
b3Jpem9udGFsICYmIGNvbnN1bWVJZGVudDxDU1NWYWx1ZUxlZnQ+KGFyZ3MpKSB8fCAoIWhvcml6
b250YWwgJiYgY29uc3VtZUlkZW50PENTU1ZhbHVlVG9wPihhcmdzKSkpCisgICAgICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLiwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlOjpQZXJjZW50YWdlKTsKKyAgICAgICAgaWYgKChob3Jpem9udGFsICYmIGNvbnN1bWVJ
ZGVudDxDU1NWYWx1ZVJpZ2h0PihhcmdzKSkgfHwgKCFob3Jpem9udGFsICYmIGNvbnN1bWVJZGVu
dDxDU1NWYWx1ZUJvdHRvbT4oYXJncykpKQorICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUoMTAwLiwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQZXJjZW50
YWdlKTsKKyAgICAgICAgaWYgKGNvbnN1bWVJZGVudDxDU1NWYWx1ZUNlbnRlcj4oYXJncykpCisg
ICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSg1MC4sIENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZTo6UGVyY2VudGFnZSk7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcmVzdWx0ID0gY29uc3VtZVBlcmNlbnQo
YXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJlc3VsdCA9
IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworLy8gVXNlZCB0byBwYXJzZSBjb2xvcnMgZm9yIC13ZWJraXQtZ3JhZGllbnQoLi4uKS4K
K3N0YXRpYyBDU1NWYWx1ZSogY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudFN0b3BDb2xvcihDU1NQ
YXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7Cisg
ICAgaWYgKGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVDdXJyZW50Y29sb3IpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjb25zdW1lQ29sb3IoYXJncywgY3NzUGFyc2Vy
TW9kZSk7Cit9CisKK3N0YXRpYyBib29sIGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnRDb2xvclN0
b3AoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU0dyYWRpZW50Q29sb3JTdG9wJiBzdG9w
LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHJh
bmdlLnBlZWsoKS5mdW5jdGlvbklkKCk7CisgICAgaWYgKGlkICE9IENTU1ZhbHVlRnJvbSAmJiBp
ZCAhPSBDU1NWYWx1ZVRvICYmIGlkICE9IENTU1ZhbHVlQ29sb3JTdG9wKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rp
b24ocmFuZ2UpOworICAgIGRvdWJsZSBwb3NpdGlvbjsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVG
cm9tIHx8IGlkID09IENTU1ZhbHVlVG8pIHsKKyAgICAgICAgcG9zaXRpb24gPSAoaWQgPT0gQ1NT
VmFsdWVGcm9tKSA/IDAgOiAxOworICAgIH0gZWxzZSB7CisgICAgICAgIERDSEVDSyhpZCA9PSBD
U1NWYWx1ZUNvbG9yU3RvcCk7CisgICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiBhcmcgPSBh
cmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIGlmIChhcmcudHlwZSgp
ID09IFBlcmNlbnRhZ2VUb2tlbikKKyAgICAgICAgICAgIHBvc2l0aW9uID0gYXJnLm51bWVyaWNW
YWx1ZSgpIC8gMTAwLjA7CisgICAgICAgIGVsc2UgaWYgKGFyZy50eXBlKCkgPT0gTnVtYmVyVG9r
ZW4pCisgICAgICAgICAgICBwb3NpdGlvbiA9IGFyZy5udW1lcmljVmFsdWUoKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmICghY29uc3VtZUNv
bW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBzdG9wLm1fcG9zaXRpb24gPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KHBvc2l0aW9uLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6Ok51bWJlcik7CisgICAgc3Rv
cC5tX2NvbG9yID0gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudFN0b3BDb2xvcihhcmdzLCBjc3NQ
YXJzZXJNb2RlKTsKKyAgICByZXR1cm4gc3RvcC5tX2NvbG9yICYmIGFyZ3MuYXRFbmQoKTsKK30K
Kworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50KENTU1BhcnNlclRv
a2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3sKKyAgICBDU1NH
cmFkaWVudFZhbHVlKiByZXN1bHQgPSBudWxscHRyOworICAgIENTU1ZhbHVlSUQgaWQgPSBhcmdz
LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKKyAgICBib29sIGlzRGVwcmVjYXRl
ZFJhZGlhbEdyYWRpZW50ID0gKGlkID09IENTU1ZhbHVlUmFkaWFsKTsKKyAgICBpZiAoaXNEZXBy
ZWNhdGVkUmFkaWFsR3JhZGllbnQpCisgICAgICAgIHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50
VmFsdWU6OmNyZWF0ZShOb25SZXBlYXRpbmcsIENTU0RlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCk7
CisgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVMaW5lYXIpCisgICAgICAgIHJlc3VsdCA9IENT
U0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZShOb25SZXBlYXRpbmcsIENTU0RlcHJlY2F0ZWRM
aW5lYXJHcmFkaWVudCk7CisgICAgaWYgKCFyZXN1bHQgfHwgIWNvbnN1bWVDb21tYUluY2x1ZGlu
Z1doaXRlc3BhY2UoYXJncykpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHBvaW50ID0gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudFBvaW50KGFyZ3Ms
IHRydWUpOworICAgIGlmICghcG9pbnQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJl
c3VsdC0+c2V0Rmlyc3RYKHBvaW50KTsKKyAgICBwb2ludCA9IGNvbnN1bWVEZXByZWNhdGVkR3Jh
ZGllbnRQb2ludChhcmdzLCBmYWxzZSk7CisgICAgaWYgKCFwb2ludCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmVzdWx0LT5zZXRGaXJzdFkocG9pbnQpOworCisgICAgaWYgKCFjb25z
dW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIC8vIEZvciByYWRpYWwgZ3JhZGllbnRzIG9ubHksIHdlIG5vdyBleHBlY3QgYSBu
dW1lcmljIHJhZGl1cy4KKyAgICBpZiAoaXNEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQpIHsKKyAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHJhZGl1cyA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFs
dWVSYW5nZUFsbCk7CisgICAgICAgIGlmICghcmFkaXVzIHx8ICFjb25zdW1lQ29tbWFJbmNsdWRp
bmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IHRvQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZShyZXN1bHQpLT5zZXRGaXJzdFJhZGl1cyhyYWRpdXMp
OworICAgIH0KKworICAgIHBvaW50ID0gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudFBvaW50KGFy
Z3MsIHRydWUpOworICAgIGlmICghcG9pbnQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IHJlc3VsdC0+c2V0U2Vjb25kWChwb2ludCk7CisgICAgcG9pbnQgPSBjb25zdW1lRGVwcmVjYXRl
ZEdyYWRpZW50UG9pbnQoYXJncywgZmFsc2UpOworICAgIGlmICghcG9pbnQpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIHJlc3VsdC0+c2V0U2Vjb25kWShwb2ludCk7CisKKyAgICAvLyBG
b3IgcmFkaWFsIGdyYWRpZW50cyBvbmx5LCB3ZSBub3cgZXhwZWN0IHRoZSBzZWNvbmQgcmFkaXVz
LgorICAgIGlmIChpc0RlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCkgeworICAgICAgICBpZiAoIWNv
bnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHJhZGl1cyA9IGNvbnN1bWVOdW1i
ZXIoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGlmICghcmFkaXVzKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHRvQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZShyZXN1
bHQpLT5zZXRTZWNvbmRSYWRpdXMocmFkaXVzKTsKKyAgICB9CisKKyAgICBDU1NHcmFkaWVudENv
bG9yU3RvcCBzdG9wOworICAgIHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNl
KGFyZ3MpKSB7CisgICAgICAgIGlmICghY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudENvbG9yU3Rv
cChhcmdzLCBzdG9wLCBjc3NQYXJzZXJNb2RlKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICByZXN1bHQtPmFkZFN0b3Aoc3RvcCk7CisgICAgfQorCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworc3RhdGljIGJvb2wgY29uc3VtZUdyYWRpZW50Q29sb3JTdG9wcyhDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NHcmFk
aWVudFZhbHVlKiBncmFkaWVudCkKK3sKKyAgICBib29sIHN1cHBvcnRzQ29sb3JIaW50cyA9IGdy
YWRpZW50LT5ncmFkaWVudFR5cGUoKSA9PSBDU1NMaW5lYXJHcmFkaWVudCB8fCBncmFkaWVudC0+
Z3JhZGllbnRUeXBlKCkgPT0gQ1NTUmFkaWFsR3JhZGllbnQ7CisKKyAgICAvLyBUaGUgZmlyc3Qg
Y29sb3Igc3RvcCBjYW5ub3QgYmUgYSBjb2xvciBoaW50LgorICAgIGJvb2wgcHJldmlvdXNTdG9w
V2FzQ29sb3JIaW50ID0gdHJ1ZTsKKyAgICBkbyB7CisgICAgICAgIENTU0dyYWRpZW50Q29sb3JT
dG9wIHN0b3A7CisgICAgICAgIHN0b3AubV9jb2xvciA9IGNvbnN1bWVDb2xvcihyYW5nZSwgY3Nz
UGFyc2VyTW9kZSk7CisgICAgICAgIC8vIFR3byBoaW50cyBpbiBhIHJvdyBhcmUgbm90IGFsbG93
ZWQuCisgICAgICAgIGlmICghc3RvcC5tX2NvbG9yICYmICghc3VwcG9ydHNDb2xvckhpbnRzIHx8
IHByZXZpb3VzU3RvcFdhc0NvbG9ySGludCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHByZXZpb3VzU3RvcFdhc0NvbG9ySGludCA9ICFzdG9wLm1fY29sb3I7CisgICAgICAg
IHN0b3AubV9wb3NpdGlvbiA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNl
ck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBpZiAoIXN0b3AubV9jb2xvciAmJiAhc3Rv
cC5tX3Bvc2l0aW9uKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBncmFkaWVu
dC0+YWRkU3RvcChzdG9wKTsKKyAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0
ZXNwYWNlKHJhbmdlKSk7CisKKyAgICAvLyBUaGUgbGFzdCBjb2xvciBzdG9wIGNhbm5vdCBiZSBh
IGNvbG9yIGhpbnQuCisgICAgaWYgKHByZXZpb3VzU3RvcFdhc0NvbG9ySGludCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gTXVzdCBoYXZlIDIgb3IgbW9yZSBzdG9wcyB0byBiZSB2
YWxpZC4KKyAgICByZXR1cm4gZ3JhZGllbnQtPnN0b3BDb3VudCgpID49IDI7Cit9CisKK3N0YXRp
YyBDU1NWYWx1ZSogY29uc3VtZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudChDU1NQYXJzZXJUb2tl
blJhbmdlJiBhcmdzLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU0dyYWRpZW50UmVw
ZWF0IHJlcGVhdGluZykKK3sKKyAgICBDU1NSYWRpYWxHcmFkaWVudFZhbHVlKiByZXN1bHQgPSBD
U1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCBDU1NQcmVmaXhlZFJhZGlh
bEdyYWRpZW50KTsKKyAgICBDU1NWYWx1ZSogY2VudGVyWCA9IG51bGxwdHI7CisgICAgQ1NTVmFs
dWUqIGNlbnRlclkgPSBudWxscHRyOworICAgIGNvbnN1bWVPbmVPclR3b1ZhbHVlZFBvc2l0aW9u
KGFyZ3MsIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgY2VudGVyWCwgY2Vu
dGVyWSk7CisgICAgaWYgKChjZW50ZXJYIHx8IGNlbnRlclkpICYmICFjb25zdW1lQ29tbWFJbmNs
dWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJl
c3VsdC0+c2V0Rmlyc3RYKHRvQ1NTUHJpbWl0aXZlVmFsdWUoY2VudGVyWCkpOworICAgIHJlc3Vs
dC0+c2V0U2Vjb25kWCh0b0NTU1ByaW1pdGl2ZVZhbHVlKGNlbnRlclgpKTsKKyAgICByZXN1bHQt
PnNldEZpcnN0WSh0b0NTU1ByaW1pdGl2ZVZhbHVlKGNlbnRlclkpKTsKKyAgICByZXN1bHQtPnNl
dFNlY29uZFkodG9DU1NQcmltaXRpdmVWYWx1ZShjZW50ZXJZKSk7CisKKyAgICBDU1NQcmltaXRp
dmVWYWx1ZSogc2hhcGUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVDaXJjbGUsIENTU1ZhbHVlRWxs
aXBzZT4oYXJncyk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNpemVLZXl3b3JkID0gY29uc3Vt
ZUlkZW50PENTU1ZhbHVlQ2xvc2VzdFNpZGUsIENTU1ZhbHVlQ2xvc2VzdENvcm5lciwgQ1NTVmFs
dWVGYXJ0aGVzdFNpZGUsIENTU1ZhbHVlRmFydGhlc3RDb3JuZXIsIENTU1ZhbHVlQ29udGFpbiwg
Q1NTVmFsdWVDb3Zlcj4oYXJncyk7CisgICAgaWYgKCFzaGFwZSkKKyAgICAgICAgc2hhcGUgPSBj
b25zdW1lSWRlbnQ8Q1NTVmFsdWVDaXJjbGUsIENTU1ZhbHVlRWxsaXBzZT4oYXJncyk7CisgICAg
cmVzdWx0LT5zZXRTaGFwZShzaGFwZSk7CisgICAgcmVzdWx0LT5zZXRTaXppbmdCZWhhdmlvcihz
aXplS2V5d29yZCk7CisKKyAgICAvLyBPciwgdHdvIGxlbmd0aHMgb3IgcGVyY2VudGFnZXMKKyAg
ICBpZiAoIXNoYXBlICYmICFzaXplS2V5d29yZCkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogaG9yaXpvbnRhbFNpemUgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNzc1BhcnNl
ck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmVydGlj
YWxTaXplID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGhvcml6b250YWxTaXplKSB7CisgICAgICAg
ICAgICB2ZXJ0aWNhbFNpemUgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNzc1BhcnNl
ck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICAgICAgaWYgKCF2ZXJ0aWNhbFNpemUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBjb25zdW1lQ29tbWFJ
bmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpOworICAgICAgICAgICAgcmVzdWx0LT5zZXRFbmRIb3Jp
em9udGFsU2l6ZShob3Jpem9udGFsU2l6ZSk7CisgICAgICAgICAgICByZXN1bHQtPnNldEVuZFZl
cnRpY2FsU2l6ZSh2ZXJ0aWNhbFNpemUpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKTsKKyAgICB9CisgICAgaWYg
KCFjb25zdW1lR3JhZGllbnRDb2xvclN0b3BzKGFyZ3MsIGNzc1BhcnNlck1vZGUsIHJlc3VsdCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3Rh
dGljIENTU1ZhbHVlKiBjb25zdW1lUmFkaWFsR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
YXJncywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NHcmFkaWVudFJlcGVhdCByZXBl
YXRpbmcpCit7CisgICAgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZSogcmVzdWx0ID0gQ1NTUmFkaWFs
R3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgQ1NTUmFkaWFsR3JhZGllbnQpOworCisg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNoYXBlID0gbnVsbHB0cjsKKyAgICBDU1NQcmltaXRpdmVW
YWx1ZSogc2l6ZUtleXdvcmQgPSBudWxscHRyOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBob3Jp
em9udGFsU2l6ZSA9IG51bGxwdHI7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZlcnRpY2FsU2l6
ZSA9IG51bGxwdHI7CisKKyAgICAvLyBGaXJzdCBwYXJ0IG9mIGdyYW1tYXIsIHRoZSBzaXplL3No
YXBlIGNsYXVzZToKKyAgICAvLyBbIGNpcmNsZSB8fCA8bGVuZ3RoPiBdIHwKKyAgICAvLyBbIGVs
bGlwc2UgfHwgWyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiBdezJ9IF0gfAorICAgIC8vIFsgWyBj
aXJjbGUgfCBlbGxpcHNlXSB8fCA8c2l6ZS1rZXl3b3JkPiBdCisgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCAzOyArK2kpIHsKKyAgICAgICAgaWYgKGFyZ3MucGVlaygpLnR5cGUoKSA9PSBJZGVudFRv
a2VuKSB7CisgICAgICAgICAgICBDU1NWYWx1ZUlEIGlkID0gYXJncy5wZWVrKCkuaWQoKTsKKyAg
ICAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUNpcmNsZSB8fCBpZCA9PSBDU1NWYWx1ZUVsbGlw
c2UpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2hhcGUpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICAgICAgICAgIHNoYXBlID0gY29uc3VtZUlkZW50KGFyZ3Mp
OworICAgICAgICAgICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZUNsb3Nlc3RTaWRlIHx8IGlk
ID09IENTU1ZhbHVlQ2xvc2VzdENvcm5lciB8fCBpZCA9PSBDU1NWYWx1ZUZhcnRoZXN0U2lkZSB8
fCBpZCA9PSBDU1NWYWx1ZUZhcnRoZXN0Q29ybmVyKSB7CisgICAgICAgICAgICAgICAgaWYgKHNp
emVLZXl3b3JkKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
ICAgICAgICBzaXplS2V5d29yZCA9IGNvbnN1bWVJZGVudChhcmdzKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogY2VudGVyID0gY29uc3VtZUxl
bmd0aE9yUGVyY2VudChhcmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAg
ICAgICAgIGlmICghY2VudGVyKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
aWYgKGhvcml6b250YWxTaXplKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICAgICAgaG9yaXpvbnRhbFNpemUgPSBjZW50ZXI7CisgICAgICAgICAgICBjZW50ZXIgPSBj
b25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwp
OworICAgICAgICAgICAgaWYgKGNlbnRlcikgeworICAgICAgICAgICAgICAgIHZlcnRpY2FsU2l6
ZSA9IGNlbnRlcjsKKyAgICAgICAgICAgICAgICArK2k7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyBZb3UgY2FuIHNwZWNpZnkgc2l6ZSBhcyBhIGtleXdvcmQgb3Ig
YSBsZW5ndGgvcGVyY2VudGFnZSwgbm90IGJvdGguCisgICAgaWYgKHNpemVLZXl3b3JkICYmIGhv
cml6b250YWxTaXplKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAvLyBDaXJjbGVzIG11
c3QgaGF2ZSAwIG9yIDEgbGVuZ3Rocy4KKyAgICBpZiAoc2hhcGUgJiYgc2hhcGUtPmdldFZhbHVl
SUQoKSA9PSBDU1NWYWx1ZUNpcmNsZSAmJiB2ZXJ0aWNhbFNpemUpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIC8vIEVsbGlwc2VzIG11c3QgaGF2ZSAwIG9yIDIgbGVuZ3RoL3BlcmNlbnRh
Z2VzLgorICAgIGlmIChzaGFwZSAmJiBzaGFwZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlRWxs
aXBzZSAmJiBob3Jpem9udGFsU2l6ZSAmJiAhdmVydGljYWxTaXplKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAvLyBJZiB0aGVyZSdzIG9ubHkgb25lIHNpemUsIGl0IG11c3QgYmUgYSBs
ZW5ndGguCisgICAgaWYgKCF2ZXJ0aWNhbFNpemUgJiYgaG9yaXpvbnRhbFNpemUgJiYgaG9yaXpv
bnRhbFNpemUtPmlzUGVyY2VudGFnZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBp
ZiAoKGhvcml6b250YWxTaXplICYmIGhvcml6b250YWxTaXplLT5pc0NhbGN1bGF0ZWRQZXJjZW50
YWdlV2l0aExlbmd0aCgpKQorICAgICAgICB8fCAodmVydGljYWxTaXplICYmIHZlcnRpY2FsU2l6
ZS0+aXNDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhMZW5ndGgoKSkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgcmVzdWx0LT5zZXRTaGFwZShzaGFwZSk7CisgICAgcmVzdWx0LT5zZXRT
aXppbmdCZWhhdmlvcihzaXplS2V5d29yZCk7CisgICAgcmVzdWx0LT5zZXRFbmRIb3Jpem9udGFs
U2l6ZShob3Jpem9udGFsU2l6ZSk7CisgICAgcmVzdWx0LT5zZXRFbmRWZXJ0aWNhbFNpemUodmVy
dGljYWxTaXplKTsKKworICAgIENTU1ZhbHVlKiBjZW50ZXJYID0gbnVsbHB0cjsKKyAgICBDU1NW
YWx1ZSogY2VudGVyWSA9IG51bGxwdHI7CisgICAgaWYgKGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NT
VmFsdWVBdCkgeworICAgICAgICBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7Cisg
ICAgICAgIGNvbnN1bWVQb3NpdGlvbihhcmdzLCBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJr
OjpGb3JiaWQsIGNlbnRlclgsIGNlbnRlclkpOworICAgICAgICBpZiAoIShjZW50ZXJYICYmIGNl
bnRlclkpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJlc3VsdC0+c2V0
Rmlyc3RYKGNlbnRlclgpOworICAgICAgICByZXN1bHQtPnNldEZpcnN0WShjZW50ZXJZKTsKKyAg
ICAgICAgLy8gUmlnaHQgbm93LCBDU1MgcmFkaWFsIGdyYWRpZW50cyBoYXZlIHRoZSBzYW1lIHN0
YXJ0IGFuZCBlbmQgY2VudGVycy4KKyAgICAgICAgcmVzdWx0LT5zZXRTZWNvbmRYKGNlbnRlclgp
OworICAgICAgICByZXN1bHQtPnNldFNlY29uZFkoY2VudGVyWSk7CisgICAgfQorCisgICAgaWYg
KChzaGFwZSB8fCBzaXplS2V5d29yZCB8fCBob3Jpem9udGFsU2l6ZSB8fCBjZW50ZXJYIHx8IGNl
bnRlclkpICYmICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMoYXJn
cywgY3NzUGFyc2VyTW9kZSwgcmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lTGluZWFyR3JhZGll
bnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2Rl
LCBDU1NHcmFkaWVudFJlcGVhdCByZXBlYXRpbmcsIENTU0dyYWRpZW50VHlwZSBncmFkaWVudFR5
cGUpCit7CisgICAgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZSogcmVzdWx0ID0gQ1NTTGluZWFyR3Jh
ZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgZ3JhZGllbnRUeXBlKTsKKworICAgIGJvb2wg
ZXhwZWN0Q29tbWEgPSB0cnVlOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBhbmdsZSA9IGNvbnN1
bWVBbmdsZShhcmdzKTsKKyAgICBpZiAoYW5nbGUpIHsKKyAgICAgICAgcmVzdWx0LT5zZXRBbmds
ZShhbmdsZSk7CisgICAgfSBlbHNlIGlmIChncmFkaWVudFR5cGUgPT0gQ1NTUHJlZml4ZWRMaW5l
YXJHcmFkaWVudCB8fCBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVUbz4oYXJncykpIHsKKyAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIGVuZFggPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVMZWZ0LCBDU1NW
YWx1ZVJpZ2h0PihhcmdzKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGVuZFkgPSBjb25z
dW1lSWRlbnQ8Q1NTVmFsdWVCb3R0b20sIENTU1ZhbHVlVG9wPihhcmdzKTsKKyAgICAgICAgaWYg
KCFlbmRYICYmICFlbmRZKSB7CisgICAgICAgICAgICBpZiAoZ3JhZGllbnRUeXBlID09IENTU0xp
bmVhckdyYWRpZW50KQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAg
ICAgZW5kWSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlVG9w
KTsKKyAgICAgICAgICAgIGV4cGVjdENvbW1hID0gZmFsc2U7CisgICAgICAgIH0gZWxzZSBpZiAo
IWVuZFgpIHsKKyAgICAgICAgICAgIGVuZFggPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVMZWZ0LCBD
U1NWYWx1ZVJpZ2h0PihhcmdzKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdC0+c2V0Rmly
c3RYKGVuZFgpOworICAgICAgICByZXN1bHQtPnNldEZpcnN0WShlbmRZKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBleHBlY3RDb21tYSA9IGZhbHNlOworICAgIH0KKworICAgIGlmIChleHBlY3RD
b21tYSAmJiAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFjb25zdW1lR3JhZGllbnRDb2xvclN0b3BzKGFyZ3Ms
IGNzc1BhcnNlck1vZGUsIHJlc3VsdCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK0NTU1ZhbHVlKiBjb25zdW1lSW1hZ2VPck5vbmUoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlckNvbnRleHQgY29udGV4dCkKK3sKKyAgICBpZiAo
cmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICByZXR1cm4gY29uc3Vt
ZUlkZW50KHJhbmdlKTsKKyAgICByZXR1cm4gY29uc3VtZUltYWdlKHJhbmdlLCBjb250ZXh0KTsK
K30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQ3Jvc3NGYWRlKENTU1BhcnNlclRva2VuUmFu
Z2UmIGFyZ3MsIENTU1BhcnNlckNvbnRleHQgY29udGV4dCkKK3sKKyAgICBDU1NWYWx1ZSogZnJv
bUltYWdlVmFsdWUgPSBjb25zdW1lSW1hZ2VPck5vbmUoYXJncywgY29udGV4dCk7CisgICAgaWYg
KCFmcm9tSW1hZ2VWYWx1ZSB8fCAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdz
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ1NTVmFsdWUqIHRvSW1hZ2VWYWx1ZSA9
IGNvbnN1bWVJbWFnZU9yTm9uZShhcmdzLCBjb250ZXh0KTsKKyAgICBpZiAoIXRvSW1hZ2VWYWx1
ZSB8fCAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcGVyY2VudGFnZSA9IG51bGxw
dHI7CisgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHBlcmNlbnRhZ2VBcmcgPSBhcmdzLmNvbnN1
bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgaWYgKHBlcmNlbnRhZ2VBcmcudHlwZSgpID09
IFBlcmNlbnRhZ2VUb2tlbikKKyAgICAgICAgcGVyY2VudGFnZSA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGUoY2xhbXBUbzxkb3VibGU+KHBlcmNlbnRhZ2VBcmcubnVtZXJpY1ZhbHVlKCkgLyAx
MDAsIDAsIDEpLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6Ok51bWJlcik7CisgICAgZWxz
ZSBpZiAocGVyY2VudGFnZUFyZy50eXBlKCkgPT0gTnVtYmVyVG9rZW4pCisgICAgICAgIHBlcmNl
bnRhZ2UgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGNsYW1wVG88ZG91YmxlPihwZXJjZW50
YWdlQXJnLm51bWVyaWNWYWx1ZSgpLCAwLCAxKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBl
OjpOdW1iZXIpOworCisgICAgaWYgKCFwZXJjZW50YWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gQ1NTQ3Jvc3NmYWRlVmFsdWU6OmNyZWF0ZShmcm9tSW1hZ2VWYWx1ZSwg
dG9JbWFnZVZhbHVlLCBwZXJjZW50YWdlKTsKK30KKworc3RhdGljIENTU1ZhbHVlKiBjb25zdW1l
UGFpbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0
KQoreworICAgIERDSEVDSyhSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NQYWludEFQSUVuYWJs
ZWQoKSk7CisKKyAgICBDU1NDdXN0b21JZGVudFZhbHVlKiBuYW1lID0gY29uc3VtZUN1c3RvbUlk
ZW50KGFyZ3MpOworICAgIGlmICghbmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICByZXR1cm4gQ1NTUGFpbnRWYWx1ZTo6Y3JlYXRlKG5hbWUpOworfQorCitzdGF0aWMgQ1NTVmFs
dWUqIGNvbnN1bWVHZW5lcmF0ZWRJbWFnZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NT
UGFyc2VyQ29udGV4dCBjb250ZXh0KQoreworICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVr
KCkuZnVuY3Rpb25JZCgpOworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2VDb3B5ID0gcmFu
Z2U7CisgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdl
Q29weSk7CisgICAgQ1NTVmFsdWUqIHJlc3VsdCA9IG51bGxwdHI7CisgICAgaWYgKGlkID09IENT
U1ZhbHVlUmFkaWFsR3JhZGllbnQpIHsKKyAgICAgICAgcmVzdWx0ID0gY29uc3VtZVJhZGlhbEdy
YWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBOb25SZXBlYXRpbmcpOworICAgIH0gZWxzZSBp
ZiAoaWQgPT0gQ1NTVmFsdWVSZXBlYXRpbmdSYWRpYWxHcmFkaWVudCkgeworICAgICAgICByZXN1
bHQgPSBjb25zdW1lUmFkaWFsR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCksIFJlcGVhdGlu
Zyk7CisgICAgfSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdExpbmVhckdyYWRpZW50KSB7
CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBzZW5kIGEgZGVwcmVjYXRpb24gbWVzc2Fn
ZS4KKyAgICAgICAgaWYgKGNvbnRleHQudXNlQ291bnRlcigpKQorICAgICAgICAgICAgY29udGV4
dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkRlcHJlY2F0ZWRXZWJLaXRMaW5lYXJH
cmFkaWVudCk7CisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVMaW5lYXJHcmFkaWVudChhcmdzLCBj
b250ZXh0Lm1vZGUoKSwgTm9uUmVwZWF0aW5nLCBDU1NQcmVmaXhlZExpbmVhckdyYWRpZW50KTsK
KyAgICB9IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0UmVwZWF0aW5nTGluZWFyR3JhZGll
bnQpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHNlbmQgYSBkZXByZWNhdGlvbiBt
ZXNzYWdlLgorICAgICAgICBpZiAoY29udGV4dC51c2VDb3VudGVyKCkpCisgICAgICAgICAgICBj
b250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291bnRlcjo6RGVwcmVjYXRlZFdlYktpdFJl
cGVhdGluZ0xpbmVhckdyYWRpZW50KTsKKyAgICAgICAgcmVzdWx0ID0gY29uc3VtZUxpbmVhckdy
YWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSgpLCBSZXBlYXRpbmcsIENTU1ByZWZpeGVkTGluZWFy
R3JhZGllbnQpOworICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVSZXBlYXRpbmdMaW5lYXJH
cmFkaWVudCkgeworICAgICAgICByZXN1bHQgPSBjb25zdW1lTGluZWFyR3JhZGllbnQoYXJncywg
Y29udGV4dC5tb2RlKCksIFJlcGVhdGluZywgQ1NTTGluZWFyR3JhZGllbnQpOworICAgIH0gZWxz
ZSBpZiAoaWQgPT0gQ1NTVmFsdWVMaW5lYXJHcmFkaWVudCkgeworICAgICAgICByZXN1bHQgPSBj
b25zdW1lTGluZWFyR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCksIE5vblJlcGVhdGluZywg
Q1NTTGluZWFyR3JhZGllbnQpOworICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRH
cmFkaWVudCkgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgc2VuZCBhIGRlcHJlY2F0
aW9uIG1lc3NhZ2UuCisgICAgICAgIGlmIChjb250ZXh0LnVzZUNvdW50ZXIoKSkKKyAgICAgICAg
ICAgIGNvbnRleHQudXNlQ291bnRlcigpLT5jb3VudChVc2VDb3VudGVyOjpEZXByZWNhdGVkV2Vi
S2l0R3JhZGllbnQpOworICAgICAgICByZXN1bHQgPSBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50
KGFyZ3MsIGNvbnRleHQubW9kZSgpKTsKKyAgICB9IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Vi
a2l0UmFkaWFsR3JhZGllbnQpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHNlbmQg
YSBkZXByZWNhdGlvbiBtZXNzYWdlLgorICAgICAgICBpZiAoY29udGV4dC51c2VDb3VudGVyKCkp
CisgICAgICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291bnRlcjo6RGVw
cmVjYXRlZFdlYktpdFJhZGlhbEdyYWRpZW50KTsKKyAgICAgICAgcmVzdWx0ID0gY29uc3VtZURl
cHJlY2F0ZWRSYWRpYWxHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUoKSwgTm9uUmVwZWF0aW5n
KTsKKyAgICB9IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0UmVwZWF0aW5nUmFkaWFsR3Jh
ZGllbnQpIHsKKyAgICAgICAgaWYgKGNvbnRleHQudXNlQ291bnRlcigpKQorICAgICAgICAgICAg
Y29udGV4dC51c2VDb3VudGVyKCktPmNvdW50KFVzZUNvdW50ZXI6OkRlcHJlY2F0ZWRXZWJLaXRS
ZXBlYXRpbmdSYWRpYWxHcmFkaWVudCk7CisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVEZXByZWNh
dGVkUmFkaWFsR3JhZGllbnQoYXJncywgY29udGV4dC5tb2RlKCksIFJlcGVhdGluZyk7CisgICAg
fSBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdENyb3NzRmFkZSkgeworICAgICAgICByZXN1
bHQgPSBjb25zdW1lQ3Jvc3NGYWRlKGFyZ3MsIGNvbnRleHQpOworICAgIH0gZWxzZSBpZiAoaWQg
PT0gQ1NTVmFsdWVQYWludCkgeworICAgICAgICByZXN1bHQgPSBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpjc3NQYWludEFQSUVuYWJsZWQoKSA/IGNvbnN1bWVQYWludChhcmdzLCBjb250ZXh0KSA6
IG51bGxwdHI7CisgICAgfQorICAgIGlmICghcmVzdWx0IHx8ICFhcmdzLmF0RW5kKCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJhbmdlID0gcmFuZ2VDb3B5OworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZSogY3JlYXRlQ1NTSW1hZ2VWYWx1ZVdpdGhSZWZl
cnJlcihjb25zdCBBdG9taWNTdHJpbmcmIHJhd1ZhbHVlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0
JiBjb250ZXh0KQoreworICAgIENTU1ZhbHVlKiBpbWFnZVZhbHVlID0gQ1NTSW1hZ2VWYWx1ZTo6
Y3JlYXRlKHJhd1ZhbHVlLCBjb250ZXh0LmNvbXBsZXRlVVJMKHJhd1ZhbHVlKSk7CisgICAgdG9D
U1NJbWFnZVZhbHVlKGltYWdlVmFsdWUpLT5zZXRSZWZlcnJlcihjb250ZXh0LnJlZmVycmVyKCkp
OworICAgIHJldHVybiBpbWFnZVZhbHVlOworfQorCitzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVJ
bWFnZVNldChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4
dCYgY29udGV4dCkKK3sKKyAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlQ29weSA9IHJhbmdl
OworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZUNv
cHkpOworICAgIENTU0ltYWdlU2V0VmFsdWUqIGltYWdlU2V0ID0gQ1NTSW1hZ2VTZXRWYWx1ZTo6
Y3JlYXRlKCk7CisgICAgZG8geworICAgICAgICBBdG9taWNTdHJpbmcgdXJsVmFsdWUgPSBjb25z
dW1lVXJsQXNTdHJpbmdWaWV3KGFyZ3MpLnRvQXRvbWljU3RyaW5nKCk7CisgICAgICAgIGlmICh1
cmxWYWx1ZS5pc051bGwoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAg
IENTU1ZhbHVlKiBpbWFnZSA9IGNyZWF0ZUNTU0ltYWdlVmFsdWVXaXRoUmVmZXJyZXIodXJsVmFs
dWUsIGNvbnRleHQpOworICAgICAgICBpbWFnZVNldC0+YXBwZW5kKCppbWFnZSk7CisKKyAgICAg
ICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gYXJncy5jb25zdW1lSW5jbHVkaW5nV2hp
dGVzcGFjZSgpOworICAgICAgICBpZiAodG9rZW4udHlwZSgpICE9IERpbWVuc2lvblRva2VuKQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGlmICh0b2tlbi52YWx1ZSgpICE9
ICJ4IikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBEQ0hFQ0sodG9rZW4u
dW5pdFR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlVua25vd24pOworICAg
ICAgICBkb3VibGUgaW1hZ2VTY2FsZUZhY3RvciA9IHRva2VuLm51bWVyaWNWYWx1ZSgpOworICAg
ICAgICBpZiAoaW1hZ2VTY2FsZUZhY3RvciA8PSAwKQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIGltYWdlU2V0LT5hcHBlbmQoKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
aW1hZ2VTY2FsZUZhY3RvciwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpOdW1iZXIpKTsK
KyAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKTsKKyAg
ICBpZiAoIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmFuZ2Ug
PSByYW5nZUNvcHk7CisgICAgcmV0dXJuIGltYWdlU2V0OworfQorCitzdGF0aWMgYm9vbCBpc0dl
bmVyYXRlZEltYWdlKENTU1ZhbHVlSUQgaWQpCit7CisgICAgcmV0dXJuIGlkID09IENTU1ZhbHVl
TGluZWFyR3JhZGllbnQgfHwgaWQgPT0gQ1NTVmFsdWVSYWRpYWxHcmFkaWVudAorICAgICAgICB8
fCBpZCA9PSBDU1NWYWx1ZVJlcGVhdGluZ0xpbmVhckdyYWRpZW50IHx8IGlkID09IENTU1ZhbHVl
UmVwZWF0aW5nUmFkaWFsR3JhZGllbnQKKyAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRM
aW5lYXJHcmFkaWVudCB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdFJhZGlhbEdyYWRpZW50CisgICAg
ICAgIHx8IGlkID09IENTU1ZhbHVlV2Via2l0UmVwZWF0aW5nTGluZWFyR3JhZGllbnQgfHwgaWQg
PT0gQ1NTVmFsdWVXZWJraXRSZXBlYXRpbmdSYWRpYWxHcmFkaWVudAorICAgICAgICB8fCBpZCA9
PSBDU1NWYWx1ZVdlYmtpdEdyYWRpZW50IHx8IGlkID09IENTU1ZhbHVlV2Via2l0Q3Jvc3NGYWRl
IHx8IGlkID09IENTU1ZhbHVlUGFpbnQ7Cit9CisKK0NTU1ZhbHVlKiBjb25zdW1lSW1hZ2UoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlckNvbnRleHQgY29udGV4dCwgQ29uc3Vt
ZUdlbmVyYXRlZEltYWdlIGdlbmVyYXRlZEltYWdlKQoreworICAgIEF0b21pY1N0cmluZyB1cmkg
PSBjb25zdW1lVXJsQXNTdHJpbmdWaWV3KHJhbmdlKS50b0F0b21pY1N0cmluZygpOworICAgIGlm
ICghdXJpLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gY3JlYXRlQ1NTSW1hZ2VWYWx1ZVdpdGhS
ZWZlcnJlcih1cmksIGNvbnRleHQpOworICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgpID09IEZ1
bmN0aW9uVG9rZW4pIHsKKyAgICAgICAgQ1NTVmFsdWVJRCBpZCA9IHJhbmdlLnBlZWsoKS5mdW5j
dGlvbklkKCk7CisgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdEltYWdlU2V0KQorICAg
ICAgICAgICAgcmV0dXJuIGNvbnN1bWVJbWFnZVNldChyYW5nZSwgY29udGV4dCk7CisgICAgICAg
IGlmIChnZW5lcmF0ZWRJbWFnZSA9PSBDb25zdW1lR2VuZXJhdGVkSW1hZ2U6OkFsbG93ICYmIGlz
R2VuZXJhdGVkSW1hZ2UoaWQpKQorICAgICAgICAgICAgcmV0dXJuIGNvbnN1bWVHZW5lcmF0ZWRJ
bWFnZShyYW5nZSwgY29udGV4dCk7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCit9
IC8vIG5hbWVzcGFjZSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMKKyovCisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQ
YXJzZXJIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTIyIEBACisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQ2hyb21pdW0gQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisv
LyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
Ly8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKworI2lmbmRlZiBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnNfaAorI2RlZmluZSBDU1NQ
cm9wZXJ0eVBhcnNlckhlbHBlcnNfaAorCisvLyBGSVhNRS1ORVdQQVJTRVIgI2luY2x1ZGUgIkNT
U0N1c3RvbUlkZW50VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCisjaW5jbHVk
ZSAiQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgi
CisjaW5jbHVkZSAiTGVuZ3RoLmgiIC8vIEZvciBWYWx1ZVJhbmdlCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgQ1NTU3RyaW5nVmFsdWU7CitjbGFzcyBDU1NVUklWYWx1ZTsKK2NsYXNz
IENTU1ZhbHVlUGFpcjsKKworLy8gV2hlbiB0aGVzZSBmdW5jdGlvbnMgYXJlIHN1Y2Nlc3NmdWws
IHRoZXkgd2lsbCBjb25zdW1lIGFsbCB0aGUgcmVsZXZhbnQKKy8vIHRva2VucyBmcm9tIHRoZSBy
YW5nZSBhbmQgYWxzbyBjb25zdW1lIGFueSB3aGl0ZXNwYWNlIHdoaWNoIGZvbGxvd3MuIFdoZW4K
Ky8vIHRoZSBzdGFydCBvZiB0aGUgcmFuZ2UgZG9lc24ndCBtYXRjaCB0aGUgdHlwZSB3ZSdyZSBs
b29raW5nIGZvciwgdGhlIHJhbmdlCisvLyB3aWxsIG5vdCBiZSBtb2RpZmllZC4KK25hbWVzcGFj
ZSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMgeworCisvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIHBy
b2JhYmx5IGp1c3QgYmUgY29uc3VtZUNvbW1hIGFuZCBjb25zdW1lU2xhc2guCitib29sIGNvbnN1
bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworYm9vbCBj
b25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKENTU1BhcnNlclRva2VuUmFuZ2UmKTsKKy8v
IGNvbnN1bWVGdW5jdGlvbiBleHBlY3RzIHRoZSByYW5nZSBzdGFydHMgd2l0aCBhIEZ1bmN0aW9u
VG9rZW4uCitDU1NQYXJzZXJUb2tlblJhbmdlIGNvbnN1bWVGdW5jdGlvbihDU1NQYXJzZXJUb2tl
blJhbmdlJik7CisKK2VudW0gY2xhc3MgVW5pdGxlc3NRdWlyayB7CisgICAgQWxsb3csCisgICAg
Rm9yYmlkCit9OworCitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUludGVnZXIoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYsIGRvdWJsZSBtaW5pbXVtVmFsdWUgPSAtc3RkOjpudW1lcmljX2xpbWl0czxk
b3VibGU+OjptYXgoKSk7CitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZVBvc2l0aXZlSW50ZWdl
cihDU1NQYXJzZXJUb2tlblJhbmdlJik7Citib29sIGNvbnN1bWVOdW1iZXJSYXcoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYsIGRvdWJsZSYgcmVzdWx0KTsKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1l
TnVtYmVyKENTU1BhcnNlclRva2VuUmFuZ2UmLCBWYWx1ZVJhbmdlKTsKK0NTU1ByaW1pdGl2ZVZh
bHVlKiBjb25zdW1lTGVuZ3RoKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBW
YWx1ZVJhbmdlLCBVbml0bGVzc1F1aXJrID0gVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKK0NTU1By
aW1pdGl2ZVZhbHVlKiBjb25zdW1lUGVyY2VudChDU1NQYXJzZXJUb2tlblJhbmdlJiwgVmFsdWVS
YW5nZSk7CitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUxlbmd0aE9yUGVyY2VudChDU1NQYXJz
ZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayA9
IFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CitDU1NQcmltaXRpdmVWYWx1ZSogY29uc3VtZUFuZ2xl
KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKK0NTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lVGltZShD
U1NQYXJzZXJUb2tlblJhbmdlJiwgVmFsdWVSYW5nZSk7CisKK0NTU1ByaW1pdGl2ZVZhbHVlKiBj
b25zdW1lSWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworQ1NTUHJpbWl0aXZlVmFsdWUqIGNv
bnN1bWVJZGVudFJhbmdlKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NWYWx1ZUlEIGxvd2VyLCBD
U1NWYWx1ZUlEIHVwcGVyKTsKK3RlbXBsYXRlPENTU1ZhbHVlSUQsIENTU1ZhbHVlSUQuLi4+IGlu
bGluZSBib29sIGlkZW50TWF0Y2hlcyhDU1NWYWx1ZUlEIGlkKTsKK3RlbXBsYXRlPENTU1ZhbHVl
SUQuLi4gYWxsb3dlZElkZW50cz4gQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVJZGVudChDU1NQ
YXJzZXJUb2tlblJhbmdlJik7CisKKy8vIEZJWE1FLU5FV1BBUlNFUiBDU1NDdXN0b21JZGVudFZh
bHVlKiBjb25zdW1lQ3VzdG9tSWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworQ1NTU3RyaW5n
VmFsdWUqIGNvbnN1bWVTdHJpbmcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworU3RyaW5nVmlldyBj
b25zdW1lVXJsQXNTdHJpbmdWaWV3KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKK0NTU1VSSVZhbHVl
KiBjb25zdW1lVXJsKENTU1BhcnNlclRva2VuUmFuZ2UmKTsKKworQ1NTVmFsdWUqIGNvbnN1bWVD
b2xvcihDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgYm9vbCBhY2NlcHRRdWly
a3lDb2xvcnMgPSBmYWxzZSk7CisKK0NTU1ZhbHVlUGFpciogY29uc3VtZVBvc2l0aW9uKENTU1Bh
cnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrKTsKK2Jvb2wgY29u
c3VtZVBvc2l0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBVbml0bGVz
c1F1aXJrLCBDU1NWYWx1ZSomIHJlc3VsdFgsIENTU1ZhbHVlKiYgcmVzdWx0WSk7Citib29sIGNv
bnN1bWVPbmVPclR3b1ZhbHVlZFBvc2l0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJz
ZXJNb2RlLCBVbml0bGVzc1F1aXJrLCBDU1NWYWx1ZSomIHJlc3VsdFgsIENTU1ZhbHVlKiYgcmVz
dWx0WSk7CisKK2VudW0gY2xhc3MgQ29uc3VtZUdlbmVyYXRlZEltYWdlIHsKKyAgICBBbGxvdywK
KyAgICBGb3JiaWQKK307CisKK0NTU1ZhbHVlKiBjb25zdW1lSW1hZ2UoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYsIENTU1BhcnNlckNvbnRleHQsIENvbnN1bWVHZW5lcmF0ZWRJbWFnZSA9IENvbnN1bWVH
ZW5lcmF0ZWRJbWFnZTo6QWxsb3cpOworQ1NTVmFsdWUqIGNvbnN1bWVJbWFnZU9yTm9uZShDU1NQ
YXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyQ29udGV4dCk7CisKKy8vIFRlbXBsYXRlIGltcGxl
bWVudGF0aW9ucyBhcmUgYXQgdGhlIGJvdHRvbSBvZiB0aGUgZmlsZSBmb3IgcmVhZGFiaWxpdHku
CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIGVtcHR5QmFzZUNhc2U+IGlubGluZSBib29sIGlkZW50
TWF0Y2hlcyhDU1NWYWx1ZUlEKSB7IHJldHVybiBmYWxzZTsgfQordGVtcGxhdGU8Q1NTVmFsdWVJ
RCBoZWFkLCBDU1NWYWx1ZUlELi4uIHRhaWw+IGlubGluZSBib29sIGlkZW50TWF0Y2hlcyhDU1NW
YWx1ZUlEIGlkKQoreworICAgIHJldHVybiBpZCA9PSBoZWFkIHx8IGlkZW50TWF0Y2hlczx0YWls
Li4uPihpZCk7Cit9CisKKy8vIEZJWE1FLU5FV1BBUlNFUiAtIGNvbnZlcnRlZCB0byBhIFJlZlB0
ciByZXR1cm4gdHlwZSBmcm9tIGEgcmF3IHB0ci4KK3RlbXBsYXRlPENTU1ZhbHVlSUQuLi4gbmFt
ZXM+IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUlkZW50KENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgpICE9IElkZW50VG9r
ZW4gfHwgIWlkZW50TWF0Y2hlczxuYW1lcy4uLj4ocmFuZ2UucGVlaygpLmlkKCkpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlk
ZW50aWZpZXIocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpKTsKK30KKwor
c3RhdGljIGlubGluZSBib29sIGlzQ1NTV2lkZUtleXdvcmQoY29uc3QgQ1NTVmFsdWVJRCYgaWQp
Cit7CisgICAgcmV0dXJuIGlkID09IENTU1ZhbHVlSW5pdGlhbCB8fCBpZCA9PSBDU1NWYWx1ZUlu
aGVyaXQgfHwgaWQgPT0gQ1NTVmFsdWVVbnNldCB8fCBpZCA9PSBDU1NWYWx1ZURlZmF1bHQ7Cit9
CisKK30gLy8gbmFtZXNwYWNlIENTU1Byb3BlcnR5UGFyc2VySGVscGVycworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnNfaApJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw4ODkgQEAKKy8vIENvcHlyaWdodCAyMDE1IFRoZSBDaHJvbWl1
bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8v
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNTU1Rva2Vu
aXplci5oIgorCisjaW5jbHVkZSAiQ1NTUGFyc2VySWRpb21zLmgiCisjaW5jbHVkZSAiQ1NTUGFy
c2VyT2JzZXJ2ZXJXcmFwcGVyLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIgor
I2luY2x1ZGUgIkNTU1Rva2VuaXplcklucHV0U3RyZWFtLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNl
cklkaW9tcy5oIgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworQ1NTVG9rZW5pemVyOjpTY29wZTo6U2NvcGUoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCisgICAgOiBtX3N0cmluZyhzdHJpbmcpCit7CisgICAgLy8gQWNjb3JkaW5n
IHRvIHRoZSBzcGVjLCB3ZSBzaG91bGQgcGVyZm9ybSBwcmVwcm9jZXNzaW5nIGhlcmUuCisgICAg
Ly8gU2VlOiBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3Mtc3ludGF4LyNpbnB1dC1wcmVwcm9j
ZXNzaW5nCisgICAgLy8KKyAgICAvLyBIb3dldmVyLCB3ZSBjYW4gc2tpcCB0aGlzIHN0ZXAgc2lu
Y2U6CisgICAgLy8gKiBXZSdyZSB1c2luZyBIVE1MIHNwYWNlcyAod2hpY2ggYWNjZXB0IFxyIGFu
ZCBcZiBhcyBhIHZhbGlkIHdoaXRlIHNwYWNlKQorICAgIC8vICogRG8gbm90IGNvdW50IHdoaXRl
IHNwYWNlcworICAgIC8vICogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW06Om5leHRJbnB1dENoYXIo
KSByZXBsYWNlcyBOVUxMcyBmb3IgcmVwbGFjZW1lbnQgY2hhcmFjdGVycworCisgICAgaWYgKHN0
cmluZy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRvIGF2b2lkIHJlc2l6
aW5nIHdlIGVyciBvbiB0aGUgc2lkZSBvZiByZXNlcnZpbmcgdG9vIG11Y2ggc3BhY2UuCisgICAg
Ly8gTW9zdCBzdHJpbmdzIHdlIHRva2VuaXplIGhhdmUgYWJvdXQgMy41IHRvIDUgY2hhcmFjdGVy
cyBwZXIgdG9rZW4uCisgICAgbV90b2tlbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzdHJpbmcu
bGVuZ3RoKCkgLyAzKTsKKworICAgIENTU1Rva2VuaXplcklucHV0U3RyZWFtIGlucHV0KHN0cmlu
Zyk7CisgICAgQ1NTVG9rZW5pemVyIHRva2VuaXplcihpbnB1dCwgKnRoaXMpOworICAgIHdoaWxl
ICh0cnVlKSB7CisgICAgICAgIENTU1BhcnNlclRva2VuIHRva2VuID0gdG9rZW5pemVyLm5leHRU
b2tlbigpOworICAgICAgICBpZiAodG9rZW4udHlwZSgpID09IENvbW1lbnRUb2tlbikKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAodG9rZW4udHlwZSgpID09IEVPRlRva2VuKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3Rva2Vucy5hcHBlbmQodG9rZW4pOworICAg
IH0KK30KKworQ1NTVG9rZW5pemVyOjpTY29wZTo6U2NvcGUoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IENTU1BhcnNlck9ic2VydmVyV3JhcHBlciYgd3JhcHBlcikKKyAgICA6IG1fc3RyaW5nKHN0cmlu
ZykKK3sKKyAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Q1NTVG9rZW5pemVySW5wdXRTdHJlYW0gaW5wdXQoc3RyaW5nKTsKKyAgICBDU1NUb2tlbml6ZXIg
dG9rZW5pemVyKGlucHV0LCAqdGhpcyk7CisKKyAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOworICAg
IHdoaWxlICh0cnVlKSB7CisgICAgICAgIENTU1BhcnNlclRva2VuIHRva2VuID0gdG9rZW5pemVy
Lm5leHRUb2tlbigpOworICAgICAgICBpZiAodG9rZW4udHlwZSgpID09IEVPRlRva2VuKQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICh0b2tlbi50eXBlKCkgPT0gQ29tbWVudFRva2Vu
KQorICAgICAgICAgICAgd3JhcHBlci5hZGRDb21tZW50KG9mZnNldCwgaW5wdXQub2Zmc2V0KCks
IG1fdG9rZW5zLnNpemUoKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbV90b2tlbnMu
YXBwZW5kKHRva2VuKTsKKyAgICAgICAgICAgIHdyYXBwZXIuYWRkVG9rZW4ob2Zmc2V0KTsKKyAg
ICAgICAgfQorICAgICAgICBvZmZzZXQgPSBpbnB1dC5vZmZzZXQoKTsKKyAgICB9CisKKyAgICB3
cmFwcGVyLmFkZFRva2VuKG9mZnNldCk7CisgICAgd3JhcHBlci5maW5hbGl6ZUNvbnN0cnVjdGlv
bihtX3Rva2Vucy5iZWdpbigpKTsKK30KKworQ1NTUGFyc2VyVG9rZW5SYW5nZSBDU1NUb2tlbml6
ZXI6OlNjb3BlOjp0b2tlblJhbmdlKCkKK3sKKyAgICByZXR1cm4gbV90b2tlbnM7Cit9CisKK3Vu
c2lnbmVkIENTU1Rva2VuaXplcjo6U2NvcGU6OnRva2VuQ291bnQoKQoreworICAgIHJldHVybiBt
X3Rva2Vucy5zaXplKCk7Cit9CisKK3N0YXRpYyBib29sIGlzTmV3TGluZShVQ2hhciBjYykKK3sK
KyAgICAvLyBXZSBjaGVjayBcciBhbmQgXGYgaGVyZSwgc2luY2Ugd2UgaGF2ZSBubyBwcmVwcm9j
ZXNzaW5nIHN0YWdlCisgICAgcmV0dXJuIChjYyA9PSAnXHInIHx8IGNjID09ICdcbicgfHwgY2Mg
PT0gJ1xmJyk7Cit9CisKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1zeW50YXgvI2No
ZWNrLWlmLXR3by1jb2RlLXBvaW50cy1hcmUtYS12YWxpZC1lc2NhcGUKK3N0YXRpYyBib29sIHR3
b0NoYXJzQXJlVmFsaWRFc2NhcGUoVUNoYXIgZmlyc3QsIFVDaGFyIHNlY29uZCkKK3sKKyAgICBy
ZXR1cm4gZmlyc3QgPT0gJ1xcJyAmJiAhaXNOZXdMaW5lKHNlY29uZCk7Cit9CisKK0NTU1Rva2Vu
aXplcjo6Q1NTVG9rZW5pemVyKENTU1Rva2VuaXplcklucHV0U3RyZWFtJiBpbnB1dFN0cmVhbSwg
U2NvcGUmIHNjb3BlKQorICAgIDogbV9pbnB1dChpbnB1dFN0cmVhbSkKKyAgICAsIG1fc2NvcGUo
c2NvcGUpCit7Cit9CisKK3ZvaWQgQ1NTVG9rZW5pemVyOjpyZWNvbnN1bWUoVUNoYXIgYykKK3sK
KyAgICBtX2lucHV0LnB1c2hCYWNrKGMpOworfQorCitVQ2hhciBDU1NUb2tlbml6ZXI6OmNvbnN1
bWUoKQoreworICAgIFVDaGFyIGN1cnJlbnQgPSBtX2lucHV0Lm5leHRJbnB1dENoYXIoKTsKKyAg
ICBtX2lucHV0LmFkdmFuY2UoKTsKKyAgICByZXR1cm4gY3VycmVudDsKK30KKworQ1NTUGFyc2Vy
VG9rZW4gQ1NTVG9rZW5pemVyOjp3aGl0ZVNwYWNlKFVDaGFyIC8qY2MqLykKK3sKKyAgICBtX2lu
cHV0LmFkdmFuY2VVbnRpbE5vbldoaXRlc3BhY2UoKTsKKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9r
ZW4oV2hpdGVzcGFjZVRva2VuKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpi
bG9ja1N0YXJ0KENTU1BhcnNlclRva2VuVHlwZSB0eXBlKQoreworICAgIG1fYmxvY2tTdGFjay5h
cHBlbmQodHlwZSk7CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKHR5cGUsIENTU1BhcnNlclRv
a2VuOjpCbG9ja1N0YXJ0KTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpibG9j
a1N0YXJ0KENTU1BhcnNlclRva2VuVHlwZSBibG9ja1R5cGUsIENTU1BhcnNlclRva2VuVHlwZSB0
eXBlLCBTdHJpbmdWaWV3IG5hbWUpCit7CisgICAgbV9ibG9ja1N0YWNrLmFwcGVuZChibG9ja1R5
cGUpOworICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbih0eXBlLCBuYW1lLCBDU1NQYXJzZXJUb2tl
bjo6QmxvY2tTdGFydCk7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6YmxvY2tF
bmQoQ1NTUGFyc2VyVG9rZW5UeXBlIHR5cGUsIENTU1BhcnNlclRva2VuVHlwZSBzdGFydFR5cGUp
Cit7CisgICAgaWYgKCFtX2Jsb2NrU3RhY2suaXNFbXB0eSgpICYmIG1fYmxvY2tTdGFjay5sYXN0
KCkgPT0gc3RhcnRUeXBlKSB7CisgICAgICAgIG1fYmxvY2tTdGFjay5yZW1vdmVMYXN0KCk7Cisg
ICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbih0eXBlLCBDU1NQYXJzZXJUb2tlbjo6QmxvY2tF
bmQpOworICAgIH0KKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4odHlwZSk7Cit9CisKK0NTU1Bh
cnNlclRva2VuIENTU1Rva2VuaXplcjo6bGVmdFBhcmVudGhlc2lzKFVDaGFyIC8qY2MqLykKK3sK
KyAgICByZXR1cm4gYmxvY2tTdGFydChMZWZ0UGFyZW50aGVzaXNUb2tlbik7Cit9CisKK0NTU1Bh
cnNlclRva2VuIENTU1Rva2VuaXplcjo6cmlnaHRQYXJlbnRoZXNpcyhVQ2hhciAvKmNjKi8pCit7
CisgICAgcmV0dXJuIGJsb2NrRW5kKFJpZ2h0UGFyZW50aGVzaXNUb2tlbiwgTGVmdFBhcmVudGhl
c2lzVG9rZW4pOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmxlZnRCcmFja2V0
KFVDaGFyIC8qY2MqLykKK3sKKyAgICByZXR1cm4gYmxvY2tTdGFydChMZWZ0QnJhY2tldFRva2Vu
KTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpyaWdodEJyYWNrZXQoVUNoYXIg
LypjYyovKQoreworICAgIHJldHVybiBibG9ja0VuZChSaWdodEJyYWNrZXRUb2tlbiwgTGVmdEJy
YWNrZXRUb2tlbik7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6bGVmdEJyYWNl
KFVDaGFyIC8qY2MqLykKK3sKKyAgICByZXR1cm4gYmxvY2tTdGFydChMZWZ0QnJhY2VUb2tlbik7
Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6cmlnaHRCcmFjZShVQ2hhciAvKmNj
Ki8pCit7CisgICAgcmV0dXJuIGJsb2NrRW5kKFJpZ2h0QnJhY2VUb2tlbiwgTGVmdEJyYWNlVG9r
ZW4pOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OnBsdXNPckZ1bGxTdG9wKFVD
aGFyIGNjKQoreworICAgIGlmIChuZXh0Q2hhcnNBcmVOdW1iZXIoY2MpKSB7CisgICAgICAgIHJl
Y29uc3VtZShjYyk7CisgICAgICAgIHJldHVybiBjb25zdW1lTnVtZXJpY1Rva2VuKCk7CisgICAg
fQorICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihEZWxpbWl0ZXJUb2tlbiwgY2MpOworfQorCitD
U1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmFzdGVyaXNrKFVDaGFyIGNjKQoreworICAgIEFT
U0VSVF9VTlVTRUQoY2MsIGNjID09ICcqJyk7CisgICAgaWYgKGNvbnN1bWVJZk5leHQoJz0nKSkK
KyAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKFN1YnN0cmluZ01hdGNoVG9rZW4pOworICAg
IHJldHVybiBDU1NQYXJzZXJUb2tlbihEZWxpbWl0ZXJUb2tlbiwgJyonKTsKK30KKworQ1NTUGFy
c2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpsZXNzVGhhbihVQ2hhciBjYykKK3sKKyAgICBBU1NFUlRf
VU5VU0VEKGNjLCBjYyA9PSAnPCcpOworICAgIGlmIChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFj
ZW1lbnQoMCkgPT0gJyEnCisgICAgICAgICYmIG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVu
dCgxKSA9PSAnLScKKyAgICAgICAgJiYgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDIp
ID09ICctJykgeworICAgICAgICBtX2lucHV0LmFkdmFuY2UoMyk7CisgICAgICAgIHJldHVybiBD
U1NQYXJzZXJUb2tlbihDRE9Ub2tlbik7CisgICAgfQorICAgIHJldHVybiBDU1NQYXJzZXJUb2tl
bihEZWxpbWl0ZXJUb2tlbiwgJzwnKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVy
Ojpjb21tYShVQ2hhciAvKmNjKi8pCit7CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKENvbW1h
VG9rZW4pOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6Omh5cGhlbk1pbnVzKFVD
aGFyIGNjKQoreworICAgIGlmIChuZXh0Q2hhcnNBcmVOdW1iZXIoY2MpKSB7CisgICAgICAgIHJl
Y29uc3VtZShjYyk7CisgICAgICAgIHJldHVybiBjb25zdW1lTnVtZXJpY1Rva2VuKCk7CisgICAg
fQorICAgIGlmIChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkgPT0gJy0nCisgICAg
ICAgICYmIG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgxKSA9PSAnPicpIHsKKyAgICAg
ICAgbV9pbnB1dC5hZHZhbmNlKDIpOworICAgICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oQ0RD
VG9rZW4pOworICAgIH0KKyAgICBpZiAobmV4dENoYXJzQXJlSWRlbnRpZmllcihjYykpIHsKKyAg
ICAgICAgcmVjb25zdW1lKGNjKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudExpa2VUb2tl
bigpOworICAgIH0KKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oRGVsaW1pdGVyVG9rZW4sIGNj
KTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpzb2xpZHVzKFVDaGFyIGNjKQor
eworICAgIGlmIChjb25zdW1lSWZOZXh0KCcqJykpIHsKKyAgICAgICAgLy8gVGhlc2UgZ2V0IGln
bm9yZWQsIGJ1dCB3ZSBuZWVkIGEgdmFsdWUgdG8gcmV0dXJuLgorICAgICAgICBjb25zdW1lVW50
aWxDb21tZW50RW5kRm91bmQoKTsKKyAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKENvbW1l
bnRUb2tlbik7CisgICAgfQorCisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKERlbGltaXRlclRv
a2VuLCBjYyk7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6Y29sb24oVUNoYXIg
LypjYyovKQoreworICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihDb2xvblRva2VuKTsKK30KKwor
Q1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpzZW1pQ29sb24oVUNoYXIgLypjYyovKQorewor
ICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihTZW1pY29sb25Ub2tlbik7Cit9CisKK0NTU1BhcnNl
clRva2VuIENTU1Rva2VuaXplcjo6aGFzaChVQ2hhciBjYykKK3sKKyAgICBVQ2hhciBuZXh0Q2hh
ciA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKTsKKyAgICBpZiAoaXNOYW1lQ29k
ZVBvaW50KG5leHRDaGFyKSB8fCB0d29DaGFyc0FyZVZhbGlkRXNjYXBlKG5leHRDaGFyLCBtX2lu
cHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMSkpKSB7CisgICAgICAgIEhhc2hUb2tlblR5cGUg
dHlwZSA9IG5leHRDaGFyc0FyZUlkZW50aWZpZXIoKSA/IEhhc2hUb2tlbklkIDogSGFzaFRva2Vu
VW5yZXN0cmljdGVkOworICAgICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4odHlwZSwgY29uc3Vt
ZU5hbWUoKSk7CisgICAgfQorCisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKERlbGltaXRlclRv
a2VuLCBjYyk7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6Y2lyY3VtZmxleEFj
Y2VudChVQ2hhciBjYykKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGNjLCBjYyA9PSAnXicpOworICAg
IGlmIChjb25zdW1lSWZOZXh0KCc9JykpCisgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihQ
cmVmaXhNYXRjaFRva2VuKTsKKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oRGVsaW1pdGVyVG9r
ZW4sICdeJyk7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6ZG9sbGFyU2lnbihV
Q2hhciBjYykKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGNjLCBjYyA9PSAnJCcpOworICAgIGlmIChj
b25zdW1lSWZOZXh0KCc9JykpCisgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihTdWZmaXhN
YXRjaFRva2VuKTsKKyAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oRGVsaW1pdGVyVG9rZW4sICck
Jyk7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6dmVydGljYWxMaW5lKFVDaGFy
IGNjKQoreworICAgIEFTU0VSVF9VTlVTRUQoY2MsIGNjID09ICd8Jyk7CisgICAgaWYgKGNvbnN1
bWVJZk5leHQoJz0nKSkKKyAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKERhc2hNYXRjaFRv
a2VuKTsKKyAgICBpZiAoY29uc3VtZUlmTmV4dCgnfCcpKQorICAgICAgICByZXR1cm4gQ1NTUGFy
c2VyVG9rZW4oQ29sdW1uVG9rZW4pOworICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihEZWxpbWl0
ZXJUb2tlbiwgJ3wnKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjp0aWxkZShV
Q2hhciBjYykKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGNjLCBjYyA9PSAnficpOworICAgIGlmIChj
b25zdW1lSWZOZXh0KCc9JykpCisgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihJbmNsdWRl
TWF0Y2hUb2tlbik7CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKERlbGltaXRlclRva2VuLCAn
ficpOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmNvbW1lcmNpYWxBdChVQ2hh
ciBjYykKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGNjLCBjYyA9PSAnQCcpOworICAgIGlmIChuZXh0
Q2hhcnNBcmVJZGVudGlmaWVyKCkpCisgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihBdEtl
eXdvcmRUb2tlbiwgY29uc3VtZU5hbWUoKSk7CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKERl
bGltaXRlclRva2VuLCAnQCcpOworfQorCitDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OnJl
dmVyc2VTb2xpZHVzKFVDaGFyIGNjKQoreworICAgIGlmICh0d29DaGFyc0FyZVZhbGlkRXNjYXBl
KGNjLCBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkpKSB7CisgICAgICAgIHJlY29u
c3VtZShjYyk7CisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnRMaWtlVG9rZW4oKTsKKyAgICB9
CisgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKERlbGltaXRlclRva2VuLCBjYyk7Cit9CisKK0NT
U1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6YXNjaWlEaWdpdChVQ2hhciBjYykKK3sKKyAgICBy
ZWNvbnN1bWUoY2MpOworICAgIHJldHVybiBjb25zdW1lTnVtZXJpY1Rva2VuKCk7Cit9CisKK0NT
U1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6bGV0dGVyVShVQ2hhciBjYykKK3sKKyAgICBpZiAo
bV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApID09ICcrJworICAgICAgICAmJiAoaXNB
U0NJSUhleERpZ2l0KG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgxKSkKKyAgICAgICAg
ICAgIHx8IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgxKSA9PSAnPycpKSB7CisgICAg
ICAgIG1faW5wdXQuYWR2YW5jZSgpOworICAgICAgICByZXR1cm4gY29uc3VtZVVuaWNvZGVSYW5n
ZSgpOworICAgIH0KKyAgICByZWNvbnN1bWUoY2MpOworICAgIHJldHVybiBjb25zdW1lSWRlbnRM
aWtlVG9rZW4oKTsKK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQo
VUNoYXIgY2MpCit7CisgICAgcmVjb25zdW1lKGNjKTsKKyAgICByZXR1cm4gY29uc3VtZUlkZW50
TGlrZVRva2VuKCk7Cit9CisKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6c3RyaW5nU3Rh
cnQoVUNoYXIgY2MpCit7CisgICAgcmV0dXJuIGNvbnN1bWVTdHJpbmdUb2tlblVudGlsKGNjKTsK
K30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjplbmRPZkZpbGUoVUNoYXIgLypjYyov
KQoreworICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihFT0ZUb2tlbik7Cit9CisKK2NvbnN0IENT
U1Rva2VuaXplcjo6Q29kZVBvaW50IENTU1Rva2VuaXplcjo6Y29kZVBvaW50c1sxMjhdID0gewor
ICAgICZDU1NUb2tlbml6ZXI6OmVuZE9mRmlsZSwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAg
ICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgJkNTU1Rva2VuaXplcjo6
d2hpdGVTcGFjZSwKKyAgICAmQ1NTVG9rZW5pemVyOjp3aGl0ZVNwYWNlLAorICAgIDAsCisgICAg
JkNTU1Rva2VuaXplcjo6d2hpdGVTcGFjZSwKKyAgICAmQ1NTVG9rZW5pemVyOjp3aGl0ZVNwYWNl
LAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAs
CisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwK
KyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgICZDU1NUb2tlbml6ZXI6OndoaXRl
U3BhY2UsCisgICAgMCwKKyAgICAmQ1NTVG9rZW5pemVyOjpzdHJpbmdTdGFydCwKKyAgICAmQ1NT
VG9rZW5pemVyOjpoYXNoLAorICAgICZDU1NUb2tlbml6ZXI6OmRvbGxhclNpZ24sCisgICAgMCwK
KyAgICAwLAorICAgICZDU1NUb2tlbml6ZXI6OnN0cmluZ1N0YXJ0LAorICAgICZDU1NUb2tlbml6
ZXI6OmxlZnRQYXJlbnRoZXNpcywKKyAgICAmQ1NTVG9rZW5pemVyOjpyaWdodFBhcmVudGhlc2lz
LAorICAgICZDU1NUb2tlbml6ZXI6OmFzdGVyaXNrLAorICAgICZDU1NUb2tlbml6ZXI6OnBsdXNP
ckZ1bGxTdG9wLAorICAgICZDU1NUb2tlbml6ZXI6OmNvbW1hLAorICAgICZDU1NUb2tlbml6ZXI6
Omh5cGhlbk1pbnVzLAorICAgICZDU1NUb2tlbml6ZXI6OnBsdXNPckZ1bGxTdG9wLAorICAgICZD
U1NUb2tlbml6ZXI6OnNvbGlkdXMsCisgICAgJkNTU1Rva2VuaXplcjo6YXNjaWlEaWdpdCwKKyAg
ICAmQ1NTVG9rZW5pemVyOjphc2NpaURpZ2l0LAorICAgICZDU1NUb2tlbml6ZXI6OmFzY2lpRGln
aXQsCisgICAgJkNTU1Rva2VuaXplcjo6YXNjaWlEaWdpdCwKKyAgICAmQ1NTVG9rZW5pemVyOjph
c2NpaURpZ2l0LAorICAgICZDU1NUb2tlbml6ZXI6OmFzY2lpRGlnaXQsCisgICAgJkNTU1Rva2Vu
aXplcjo6YXNjaWlEaWdpdCwKKyAgICAmQ1NTVG9rZW5pemVyOjphc2NpaURpZ2l0LAorICAgICZD
U1NUb2tlbml6ZXI6OmFzY2lpRGlnaXQsCisgICAgJkNTU1Rva2VuaXplcjo6YXNjaWlEaWdpdCwK
KyAgICAmQ1NTVG9rZW5pemVyOjpjb2xvbiwKKyAgICAmQ1NTVG9rZW5pemVyOjpzZW1pQ29sb24s
CisgICAgJkNTU1Rva2VuaXplcjo6bGVzc1RoYW4sCisgICAgMCwKKyAgICAwLAorICAgIDAsCisg
ICAgJkNTU1Rva2VuaXplcjo6Y29tbWVyY2lhbEF0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVT
dGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6
bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5p
emVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NU
b2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAg
JkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwK
KyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0
YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpu
YW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6
ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rv
a2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAm
Q1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bGV0dGVyVSwKKyAg
ICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0
LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1l
U3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6
OmxlZnRCcmFja2V0LAorICAgICZDU1NUb2tlbml6ZXI6OnJldmVyc2VTb2xpZHVzLAorICAgICZD
U1NUb2tlbml6ZXI6OnJpZ2h0QnJhY2tldCwKKyAgICAmQ1NTVG9rZW5pemVyOjpjaXJjdW1mbGV4
QWNjZW50LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAwLAorICAgICZDU1NU
b2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAg
JkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwK
KyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0
YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpu
YW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6
ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rv
a2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAm
Q1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAor
ICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3Rh
cnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5h
bWVTdGFydCwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXpl
cjo6bGV0dGVyVSwKKyAgICAmQ1NTVG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2Vu
aXplcjo6bmFtZVN0YXJ0LAorICAgICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydCwKKyAgICAmQ1NT
VG9rZW5pemVyOjpuYW1lU3RhcnQsCisgICAgJkNTU1Rva2VuaXplcjo6bmFtZVN0YXJ0LAorICAg
ICZDU1NUb2tlbml6ZXI6OmxlZnRCcmFjZSwKKyAgICAmQ1NTVG9rZW5pemVyOjp2ZXJ0aWNhbExp
bmUsCisgICAgJkNTU1Rva2VuaXplcjo6cmlnaHRCcmFjZSwKKyAgICAmQ1NTVG9rZW5pemVyOjp0
aWxkZSwKKyAgICAwLAorfTsKKyNpZiAhQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05f
RElTQUJMRUQKK2NvbnN0IHVuc2lnbmVkIGNvZGVQb2ludHNOdW1iZXIgPSAxMjg7CisjZW5kaWYK
KworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpuZXh0VG9rZW4oKQoreworICAgIC8vIFVu
bGlrZSB0aGUgSFRNTFRva2VuaXplciwgdGhlIENTUyBTeW50YXggc3BlYyBpcyB3cml0dGVuCisg
ICAgLy8gYXMgYSBzdGF0ZWxlc3MsIChmaXhlZC1zaXplKSBsb29rLWFoZWFkIHRva2VuaXplci4K
KyAgICAvLyBXZSBjb3VsZCBtb3ZlIHRvIHRoZSBzdGF0ZWZ1bCBtb2RlbCBhbmQgaW5zdGVhZCBj
cmVhdGUKKyAgICAvLyBzdGF0ZXMgZm9yIGFsbCB0aGUgIm5leHQgMyBjb2RlcG9pbnRzIGFyZSBY
IiBjYXNlcy4KKyAgICAvLyBTdGF0ZS1tYWNoaW5lIHRva2VuaXplcnMgYXJlIGVhc2llciB0byB3
cml0ZSB0byBoYW5kbGUKKyAgICAvLyBpbmNyZW1lbnRhbCB0b2tlbml6YXRpb24gb2YgcGFydGlh
bCBzb3VyY2VzLgorICAgIC8vIEhvd2V2ZXIsIGZvciBub3cgd2UgZm9sbG93IHRoZSBzcGVjIGV4
YWN0bHkuCisgICAgVUNoYXIgY2MgPSBjb25zdW1lKCk7CisgICAgQ29kZVBvaW50IGNvZGVQb2lu
dEZ1bmMgPSAwOworCisgICAgaWYgKGlzQVNDSUkoY2MpKSB7CisgICAgICAgIEFTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGNjIDwgY29kZVBvaW50c051bWJlcik7CisgICAgICAgIGNv
ZGVQb2ludEZ1bmMgPSBjb2RlUG9pbnRzW2NjXTsKKyAgICB9IGVsc2UKKyAgICAgICAgY29kZVBv
aW50RnVuYyA9ICZDU1NUb2tlbml6ZXI6Om5hbWVTdGFydDsKKworICAgIGlmIChjb2RlUG9pbnRG
dW5jKQorICAgICAgICByZXR1cm4gKCh0aGlzKS0+Kihjb2RlUG9pbnRGdW5jKSkoY2MpOworICAg
IHJldHVybiBDU1NQYXJzZXJUb2tlbihEZWxpbWl0ZXJUb2tlbiwgY2MpOworfQorCisvLyBUaGlz
IG1ldGhvZCBtZXJnZXMgdGhlIGZvbGxvd2luZyBzcGVjIHNlY3Rpb25zIGZvciBlZmZpY2llbmN5
CisvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXN5bnRheC8jY29uc3VtZS1hLW51bWJlcgor
Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1zeW50YXgvI2NvbnZlcnQtYS1zdHJpbmctdG8t
YS1udW1iZXIKK0NTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6Y29uc3VtZU51bWJlcigpCit7
CisgICAgQVNTRVJUKG5leHRDaGFyc0FyZU51bWJlcigpKTsKKworICAgIE51bWVyaWNWYWx1ZVR5
cGUgdHlwZSA9IEludGVnZXJWYWx1ZVR5cGU7CisgICAgTnVtZXJpY1NpZ24gc2lnbiA9IE5vU2ln
bjsKKyAgICB1bnNpZ25lZCBudW1iZXJMZW5ndGggPSAwOworCisgICAgVUNoYXIgbmV4dCA9IG1f
aW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKTsKKyAgICBpZiAobmV4dCA9PSAnKycpIHsK
KyAgICAgICAgKytudW1iZXJMZW5ndGg7CisgICAgICAgIHNpZ24gPSBQbHVzU2lnbjsKKyAgICB9
IGVsc2UgaWYgKG5leHQgPT0gJy0nKSB7CisgICAgICAgICsrbnVtYmVyTGVuZ3RoOworICAgICAg
ICBzaWduID0gTWludXNTaWduOworICAgIH0KKworICAgIG51bWJlckxlbmd0aCA9IG1faW5wdXQu
c2tpcFdoaWxlUHJlZGljYXRlPGlzQVNDSUlEaWdpdD4obnVtYmVyTGVuZ3RoKTsKKyAgICBuZXh0
ID0gbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KG51bWJlckxlbmd0aCk7CisgICAgaWYg
KG5leHQgPT0gJy4nICYmIGlzQVNDSUlEaWdpdChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1l
bnQobnVtYmVyTGVuZ3RoICsgMSkpKSB7CisgICAgICAgIHR5cGUgPSBOdW1iZXJWYWx1ZVR5cGU7
CisgICAgICAgIG51bWJlckxlbmd0aCA9IG1faW5wdXQuc2tpcFdoaWxlUHJlZGljYXRlPGlzQVND
SUlEaWdpdD4obnVtYmVyTGVuZ3RoICsgMik7CisgICAgICAgIG5leHQgPSBtX2lucHV0LnBlZWtX
aXRob3V0UmVwbGFjZW1lbnQobnVtYmVyTGVuZ3RoKTsKKyAgICB9CisKKyAgICBpZiAobmV4dCA9
PSAnRScgfHwgbmV4dCA9PSAnZScpIHsKKyAgICAgICAgbmV4dCA9IG1faW5wdXQucGVla1dpdGhv
dXRSZXBsYWNlbWVudChudW1iZXJMZW5ndGggKyAxKTsKKyAgICAgICAgaWYgKGlzQVNDSUlEaWdp
dChuZXh0KSkgeworICAgICAgICAgICAgdHlwZSA9IE51bWJlclZhbHVlVHlwZTsKKyAgICAgICAg
ICAgIG51bWJlckxlbmd0aCA9IG1faW5wdXQuc2tpcFdoaWxlUHJlZGljYXRlPGlzQVNDSUlEaWdp
dD4obnVtYmVyTGVuZ3RoICsgMSk7CisgICAgICAgIH0gZWxzZSBpZiAoKG5leHQgPT0gJysnIHx8
IG5leHQgPT0gJy0nKSAmJiBpc0FTQ0lJRGlnaXQobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2Vt
ZW50KG51bWJlckxlbmd0aCArIDIpKSkgeworICAgICAgICAgICAgdHlwZSA9IE51bWJlclZhbHVl
VHlwZTsKKyAgICAgICAgICAgIG51bWJlckxlbmd0aCA9IG1faW5wdXQuc2tpcFdoaWxlUHJlZGlj
YXRlPGlzQVNDSUlEaWdpdD4obnVtYmVyTGVuZ3RoICsgMyk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBkb3VibGUgdmFsdWUgPSBtX2lucHV0LmdldERvdWJsZSgwLCBudW1iZXJMZW5ndGgpOwor
ICAgIG1faW5wdXQuYWR2YW5jZShudW1iZXJMZW5ndGgpOworCisgICAgcmV0dXJuIENTU1BhcnNl
clRva2VuKE51bWJlclRva2VuLCB2YWx1ZSwgdHlwZSwgc2lnbik7Cit9CisKKy8vIGh0dHA6Ly93
d3cudzMub3JnL1RSL2NzczMtc3ludGF4LyNjb25zdW1lLWEtbnVtZXJpYy10b2tlbgorQ1NTUGFy
c2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjb25zdW1lTnVtZXJpY1Rva2VuKCkKK3sKKyAgICBDU1NQ
YXJzZXJUb2tlbiB0b2tlbiA9IGNvbnN1bWVOdW1iZXIoKTsKKyAgICBpZiAobmV4dENoYXJzQXJl
SWRlbnRpZmllcigpKQorICAgICAgICB0b2tlbi5jb252ZXJ0VG9EaW1lbnNpb25XaXRoVW5pdChj
b25zdW1lTmFtZSgpKTsKKyAgICBlbHNlIGlmIChjb25zdW1lSWZOZXh0KCclJykpCisgICAgICAg
IHRva2VuLmNvbnZlcnRUb1BlcmNlbnRhZ2UoKTsKKyAgICByZXR1cm4gdG9rZW47Cit9CisKKy8v
IGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1zeW50YXgvI2NvbnN1bWUtaWRlbnQtbGlrZS10
b2tlbgorQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjb25zdW1lSWRlbnRMaWtlVG9rZW4o
KQoreworICAgIFN0cmluZ1ZpZXcgbmFtZSA9IGNvbnN1bWVOYW1lKCk7CisgICAgaWYgKGNvbnN1
bWVJZk5leHQoJygnKSkgeworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1l
LCAidXJsIikpIHsKKyAgICAgICAgICAgIC8vIFRoZSBzcGVjIGlzIHNsaWdodGx5IGRpZmZlcmVu
dCBzbyBhcyB0byBhdm9pZCBkcm9wcGluZyB3aGl0ZXNwYWNlCisgICAgICAgICAgICAvLyB0b2tl
bnMsIGJ1dCB0aGV5IHdvdWxkbid0IGJlIHVzZWQgYW5kIHRoaXMgaXMgZWFzaWVyLgorICAgICAg
ICAgICAgbV9pbnB1dC5hZHZhbmNlVW50aWxOb25XaGl0ZXNwYWNlKCk7CisgICAgICAgICAgICBV
Q2hhciBuZXh0ID0gbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApOworICAgICAgICAg
ICAgaWYgKG5leHQgIT0gJyInICYmIG5leHQgIT0gJ1wnJykKKyAgICAgICAgICAgICAgICByZXR1
cm4gY29uc3VtZVVybFRva2VuKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJsb2NrU3Rh
cnQoTGVmdFBhcmVudGhlc2lzVG9rZW4sIEZ1bmN0aW9uVG9rZW4sIG5hbWUpOworICAgIH0KKyAg
ICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oSWRlbnRUb2tlbiwgbmFtZSk7Cit9CisKKy8vIGh0dHA6
Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1zeW50YXgvI2NvbnN1bWUtYS1zdHJpbmctdG9rZW4KK0NT
U1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6Y29uc3VtZVN0cmluZ1Rva2VuVW50aWwoVUNoYXIg
ZW5kaW5nQ29kZVBvaW50KQoreworICAgIC8vIFN0cmluZ3Mgd2l0aG91dCBlc2NhcGVzIGdldCBo
YW5kbGVkIHdpdGhvdXQgYWxsb2NhdGlvbnMKKyAgICBmb3IgKHVuc2lnbmVkIHNpemUgPSAwOyA7
IHNpemUrKykgeworICAgICAgICBVQ2hhciBjYyA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNl
bWVudChzaXplKTsKKyAgICAgICAgaWYgKGNjID09IGVuZGluZ0NvZGVQb2ludCkgeworICAgICAg
ICAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBtX2lucHV0Lm9mZnNldCgpOworICAgICAgICAg
ICAgbV9pbnB1dC5hZHZhbmNlKHNpemUgKyAxKTsKKyAgICAgICAgICAgIHJldHVybiBDU1NQYXJz
ZXJUb2tlbihTdHJpbmdUb2tlbiwgbV9pbnB1dC5yYW5nZUF0KHN0YXJ0T2Zmc2V0LCBzaXplKSk7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzTmV3TGluZShjYykpIHsKKyAgICAgICAgICAgIG1f
aW5wdXQuYWR2YW5jZShzaXplKTsKKyAgICAgICAgICAgIHJldHVybiBDU1NQYXJzZXJUb2tlbihC
YWRTdHJpbmdUb2tlbik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNjID09ICdcMCcgfHwgY2Mg
PT0gJ1xcJykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIFN0cmluZ0J1aWxkZXIg
b3V0cHV0OworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIFVDaGFyIGNjID0gY29uc3VtZSgp
OworICAgICAgICBpZiAoY2MgPT0gZW5kaW5nQ29kZVBvaW50IHx8IGNjID09IGtFbmRPZkZpbGVN
YXJrZXIpCisgICAgICAgICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oU3RyaW5nVG9rZW4sIHJl
Z2lzdGVyU3RyaW5nKG91dHB1dC50b1N0cmluZygpKSk7CisgICAgICAgIGlmIChpc05ld0xpbmUo
Y2MpKSB7CisgICAgICAgICAgICByZWNvbnN1bWUoY2MpOworICAgICAgICAgICAgcmV0dXJuIENT
U1BhcnNlclRva2VuKEJhZFN0cmluZ1Rva2VuKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2Mg
PT0gJ1xcJykgeworICAgICAgICAgICAgaWYgKG1faW5wdXQubmV4dElucHV0Q2hhcigpID09IGtF
bmRPZkZpbGVNYXJrZXIpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBp
ZiAoaXNOZXdMaW5lKG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSkpCisgICAgICAg
ICAgICAgICAgY29uc3VtZVNpbmdsZVdoaXRlc3BhY2VJZk5leHQoKTsgLy8gVGhpcyBoYW5kbGVz
IFxyXG4gZm9yIHVzCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb3V0cHV0LmFw
cGVuZChjb25zdW1lRXNjYXBlKCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG91dHB1
dC5hcHBlbmQoY2MpOworICAgIH0KK30KKworQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpj
b25zdW1lVW5pY29kZVJhbmdlKCkKK3sKKyAgICBBU1NFUlQoaXNBU0NJSUhleERpZ2l0KG1faW5w
dXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSkgfHwgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxh
Y2VtZW50KDApID09ICc/Jyk7CisgICAgaW50IGxlbmd0aFJlbWFpbmluZyA9IDY7CisgICAgVUNo
YXIzMiBzdGFydCA9IDA7CisKKyAgICB3aGlsZSAobGVuZ3RoUmVtYWluaW5nICYmIGlzQVNDSUlI
ZXhEaWdpdChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkpKSB7CisgICAgICAgIHN0
YXJ0ID0gc3RhcnQgKiAxNiArIHRvQVNDSUlIZXhWYWx1ZShjb25zdW1lKCkpOworICAgICAgICAt
LWxlbmd0aFJlbWFpbmluZzsKKyAgICB9CisKKyAgICBVQ2hhcjMyIGVuZCA9IHN0YXJ0OworICAg
IGlmIChsZW5ndGhSZW1haW5pbmcgJiYgY29uc3VtZUlmTmV4dCgnPycpKSB7CisgICAgICAgIGRv
IHsKKyAgICAgICAgICAgIHN0YXJ0ICo9IDE2OworICAgICAgICAgICAgZW5kID0gZW5kICogMTYg
KyAweEY7CisgICAgICAgICAgICAtLWxlbmd0aFJlbWFpbmluZzsKKyAgICAgICAgfSB3aGlsZSAo
bGVuZ3RoUmVtYWluaW5nICYmIGNvbnN1bWVJZk5leHQoJz8nKSk7CisgICAgfSBlbHNlIGlmICht
X2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkgPT0gJy0nICYmIGlzQVNDSUlIZXhEaWdp
dChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMSkpKSB7CisgICAgICAgIG1faW5wdXQu
YWR2YW5jZSgpOworICAgICAgICBsZW5ndGhSZW1haW5pbmcgPSA2OworICAgICAgICBlbmQgPSAw
OworICAgICAgICBkbyB7CisgICAgICAgICAgICBlbmQgPSBlbmQgKiAxNiArIHRvQVNDSUlIZXhW
YWx1ZShjb25zdW1lKCkpOworICAgICAgICAgICAgLS1sZW5ndGhSZW1haW5pbmc7CisgICAgICAg
IH0gd2hpbGUgKGxlbmd0aFJlbWFpbmluZyAmJiBpc0FTQ0lJSGV4RGlnaXQobV9pbnB1dC5wZWVr
V2l0aG91dFJlcGxhY2VtZW50KDApKSk7CisgICAgfQorCisgICAgcmV0dXJuIENTU1BhcnNlclRv
a2VuKFVuaWNvZGVSYW5nZVRva2VuLCBzdGFydCwgZW5kKTsKK30KKworLy8gaHR0cDovL2Rldi53
My5vcmcvY3Nzd2cvY3NzLXN5bnRheC8jbm9uLXByaW50YWJsZS1jb2RlLXBvaW50CitzdGF0aWMg
Ym9vbCBpc05vblByaW50YWJsZUNvZGVQb2ludChVQ2hhciBjYykKK3sKKyAgICByZXR1cm4gY2Mg
PD0gJ1x4OCcgfHwgY2MgPT0gJ1x4YicgfHwgKGNjID49ICdceGUnICYmIGNjIDw9ICdceDFmJykg
fHwgY2MgPT0gJ1x4N2YnOworfQorCisvLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3Mtc3lu
dGF4LyNjb25zdW1lLXVybC10b2tlbgorQ1NTUGFyc2VyVG9rZW4gQ1NTVG9rZW5pemVyOjpjb25z
dW1lVXJsVG9rZW4oKQoreworICAgIG1faW5wdXQuYWR2YW5jZVVudGlsTm9uV2hpdGVzcGFjZSgp
OworCisgICAgLy8gVVJMIHRva2VucyB3aXRob3V0IGVzY2FwZXMgZ2V0IGhhbmRsZWQgd2l0aG91
dCBhbGxvY2F0aW9ucworICAgIGZvciAodW5zaWduZWQgc2l6ZSA9IDA7IDsgc2l6ZSsrKSB7Cisg
ICAgICAgIFVDaGFyIGNjID0gbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KHNpemUpOwor
ICAgICAgICBpZiAoY2MgPT0gJyknKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBzdGFydE9mZnNl
dCA9IG1faW5wdXQub2Zmc2V0KCk7CisgICAgICAgICAgICBtX2lucHV0LmFkdmFuY2Uoc2l6ZSAr
IDEpOworICAgICAgICAgICAgcmV0dXJuIENTU1BhcnNlclRva2VuKFVybFRva2VuLCBtX2lucHV0
LnJhbmdlQXQoc3RhcnRPZmZzZXQsIHNpemUpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2Mg
PD0gJyAnIHx8IGNjID09ICdcXCcgfHwgY2MgPT0gJyInIHx8IGNjID09ICdcJycgfHwgY2MgPT0g
JygnIHx8IGNjID09ICdceDdmJykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIFN0
cmluZ0J1aWxkZXIgcmVzdWx0OworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIFVDaGFyIGNj
ID0gY29uc3VtZSgpOworICAgICAgICBpZiAoY2MgPT0gJyknIHx8IGNjID09IGtFbmRPZkZpbGVN
YXJrZXIpCisgICAgICAgICAgICByZXR1cm4gQ1NTUGFyc2VyVG9rZW4oVXJsVG9rZW4sIHJlZ2lz
dGVyU3RyaW5nKHJlc3VsdC50b1N0cmluZygpKSk7CisKKyAgICAgICAgaWYgKGlzSFRNTFNwYWNl
KGNjKSkgeworICAgICAgICAgICAgbV9pbnB1dC5hZHZhbmNlVW50aWxOb25XaGl0ZXNwYWNlKCk7
CisgICAgICAgICAgICBpZiAoY29uc3VtZUlmTmV4dCgnKScpIHx8IG1faW5wdXQubmV4dElucHV0
Q2hhcigpID09IGtFbmRPZkZpbGVNYXJrZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1Bh
cnNlclRva2VuKFVybFRva2VuLCByZWdpc3RlclN0cmluZyhyZXN1bHQudG9TdHJpbmcoKSkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY2MgPT0gJyInIHx8
IGNjID09ICdcJycgfHwgY2MgPT0gJygnIHx8IGlzTm9uUHJpbnRhYmxlQ29kZVBvaW50KGNjKSkK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmIChjYyA9PSAnXFwnKSB7CisgICAgICAg
ICAgICBpZiAodHdvQ2hhcnNBcmVWYWxpZEVzY2FwZShjYywgbV9pbnB1dC5wZWVrV2l0aG91dFJl
cGxhY2VtZW50KDApKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY29uc3VtZUVz
Y2FwZSgpKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0LmFwcGVuZChjYyk7Cisg
ICAgfQorCisgICAgY29uc3VtZUJhZFVybFJlbW5hbnRzKCk7CisgICAgcmV0dXJuIENTU1BhcnNl
clRva2VuKEJhZFVybFRva2VuKTsKK30KKworLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nz
LXN5bnRheC8jY29uc3VtZS10aGUtcmVtbmFudHMtb2YtYS1iYWQtdXJsCit2b2lkIENTU1Rva2Vu
aXplcjo6Y29uc3VtZUJhZFVybFJlbW5hbnRzKCkKK3sKKyAgICB3aGlsZSAodHJ1ZSkgeworICAg
ICAgICBVQ2hhciBjYyA9IGNvbnN1bWUoKTsKKyAgICAgICAgaWYgKGNjID09ICcpJyB8fCBjYyA9
PSBrRW5kT2ZGaWxlTWFya2VyKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAodHdv
Q2hhcnNBcmVWYWxpZEVzY2FwZShjYywgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDAp
KSkKKyAgICAgICAgICAgIGNvbnN1bWVFc2NhcGUoKTsKKyAgICB9Cit9CisKK3ZvaWQgQ1NTVG9r
ZW5pemVyOjpjb25zdW1lU2luZ2xlV2hpdGVzcGFjZUlmTmV4dCgpCit7CisgICAgLy8gV2UgY2hl
Y2sgZm9yIFxyXG4gYW5kIEhUTUwgc3BhY2VzIHNpbmNlIHdlIGRvbid0IGRvIHByZXByb2Nlc3Np
bmcKKyAgICBVQ2hhciBuZXh0ID0gbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApOwor
ICAgIGlmIChuZXh0ID09ICdccicgJiYgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDEp
ID09ICdcbicpCisgICAgICAgIG1faW5wdXQuYWR2YW5jZSgyKTsKKyAgICBlbHNlIGlmIChpc0hU
TUxTcGFjZShuZXh0KSkKKyAgICAgICAgbV9pbnB1dC5hZHZhbmNlKCk7Cit9CisKK3ZvaWQgQ1NT
VG9rZW5pemVyOjpjb25zdW1lVW50aWxDb21tZW50RW5kRm91bmQoKQoreworICAgIFVDaGFyIGMg
PSBjb25zdW1lKCk7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKGMgPT0ga0VuZE9m
RmlsZU1hcmtlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGMgIT0gJyonKSB7
CisgICAgICAgICAgICBjID0gY29uc3VtZSgpOworICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIH0KKyAgICAgICAgYyA9IGNvbnN1bWUoKTsKKyAgICAgICAgaWYgKGMgPT0gJy8nKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworYm9vbCBDU1NUb2tlbml6ZXI6OmNvbnN1bWVJ
Zk5leHQoVUNoYXIgY2hhcmFjdGVyKQoreworICAgIC8vIFNpbmNlIHdlJ3JlIG5vdCBkb2luZyBy
ZXBsYWNlbWVudCB3ZSBjYW4ndCB0ZWxsIHRoZSBkaWZmZXJlbmNlIGZyb20KKyAgICAvLyBhIE5V
TCBpbiB0aGUgbWlkZGxlIGFuZCB0aGUga0VuZE9mRmlsZU1hcmtlciwgc28gY2hhcmFjdGVyIG11
c3Qgbm90IGJlCisgICAgLy8gTlVMLgorICAgIEFTU0VSVChjaGFyYWN0ZXIpOworICAgIGlmICht
X2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkgPT0gY2hhcmFjdGVyKSB7CisgICAgICAg
IG1faW5wdXQuYWR2YW5jZSgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0
dXJuIGZhbHNlOworfQorCisvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXN5bnRheC8jY29u
c3VtZS1hLW5hbWUKK1N0cmluZ1ZpZXcgQ1NTVG9rZW5pemVyOjpjb25zdW1lTmFtZSgpCit7Cisg
ICAgLy8gTmFtZXMgd2l0aG91dCBlc2NhcGVzIGdldCBoYW5kbGVkIHdpdGhvdXQgYWxsb2NhdGlv
bnMKKyAgICBmb3IgKHVuc2lnbmVkIHNpemUgPSAwOyA7ICsrc2l6ZSkgeworICAgICAgICBVQ2hh
ciBjYyA9IG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudChzaXplKTsKKyAgICAgICAgaWYg
KGlzTmFtZUNvZGVQb2ludChjYykpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgLy8g
cGVla1dpdGhvdXRSZXBsYWNlbWVudCB3aWxsIHJldHVybiBOVUwgd2hlbiB3ZSBoaXQgdGhlIGVu
ZCBvZiB0aGUKKyAgICAgICAgLy8gaW5wdXQuIEluIHRoYXQgY2FzZSB3ZSB3YW50IHRvIHN0aWxs
IHVzZSB0aGUgcmFuZ2VBdCgpIGZhc3QgcGF0aAorICAgICAgICAvLyBiZWxvdy4KKyAgICAgICAg
aWYgKGNjID09ICdcMCcgJiYgbV9pbnB1dC5vZmZzZXQoKSArIHNpemUgPCBtX2lucHV0Lmxlbmd0
aCgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChjYyA9PSAnXFwnKQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gbV9pbnB1dC5vZmZz
ZXQoKTsKKyAgICAgICAgbV9pbnB1dC5hZHZhbmNlKHNpemUpOworICAgICAgICByZXR1cm4gbV9p
bnB1dC5yYW5nZUF0KHN0YXJ0T2Zmc2V0LCBzaXplKTsKKyAgICB9CisKKyAgICBTdHJpbmdCdWls
ZGVyIHJlc3VsdDsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBVQ2hhciBjYyA9IGNvbnN1
bWUoKTsKKyAgICAgICAgaWYgKGlzTmFtZUNvZGVQb2ludChjYykpIHsKKyAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoY2MpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKHR3b0NoYXJzQXJlVmFsaWRFc2NhcGUoY2MsIG1faW5wdXQucGVla1dpdGhvdXRSZXBs
YWNlbWVudCgwKSkpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY29uc3VtZUVzY2FwZSgp
KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIHJlY29uc3VtZShj
Yyk7CisgICAgICAgIHJldHVybiByZWdpc3RlclN0cmluZyhyZXN1bHQudG9TdHJpbmcoKSk7Cisg
ICAgfQorfQorCisvLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3Mtc3ludGF4LyNjb25zdW1l
LWFuLWVzY2FwZWQtY29kZS1wb2ludAorVUNoYXIzMiBDU1NUb2tlbml6ZXI6OmNvbnN1bWVFc2Nh
cGUoKQoreworICAgIFVDaGFyIGNjID0gY29uc3VtZSgpOworICAgIEFTU0VSVCghaXNOZXdMaW5l
KGNjKSk7CisgICAgaWYgKGlzQVNDSUlIZXhEaWdpdChjYykpIHsKKyAgICAgICAgdW5zaWduZWQg
Y29uc3VtZWRIZXhEaWdpdHMgPSAxOworICAgICAgICBTdHJpbmdCdWlsZGVyIGhleENoYXJzOwor
ICAgICAgICBoZXhDaGFycy5hcHBlbmQoY2MpOworICAgICAgICB3aGlsZSAoY29uc3VtZWRIZXhE
aWdpdHMgPCA2ICYmIGlzQVNDSUlIZXhEaWdpdChtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1l
bnQoMCkpKSB7CisgICAgICAgICAgICBjYyA9IGNvbnN1bWUoKTsKKyAgICAgICAgICAgIGhleENo
YXJzLmFwcGVuZChjYyk7CisgICAgICAgICAgICBjb25zdW1lZEhleERpZ2l0cysrOworICAgICAg
ICB9OworICAgICAgICBjb25zdW1lU2luZ2xlV2hpdGVzcGFjZUlmTmV4dCgpOworICAgICAgICBi
b29sIG9rID0gZmFsc2U7CisgICAgICAgIFVDaGFyMzIgY29kZVBvaW50ID0gaGV4Q2hhcnMudG9T
dHJpbmcoKS50b1VJbnRTdHJpY3QoJm9rLCAxNik7CisgICAgICAgIEFTU0VSVChvayk7CisgICAg
ICAgIGlmICghY29kZVBvaW50IHx8ICgweEQ4MDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8
PSAweERGRkYpIHx8IGNvZGVQb2ludCA+IDB4MTBGRkZGKQorICAgICAgICAgICAgcmV0dXJuIHJl
cGxhY2VtZW50Q2hhcmFjdGVyOworICAgICAgICByZXR1cm4gY29kZVBvaW50OworICAgIH0KKwor
ICAgIGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKQorICAgICAgICByZXR1cm4gcmVwbGFjZW1l
bnRDaGFyYWN0ZXI7CisgICAgcmV0dXJuIGNjOworfQorCitib29sIENTU1Rva2VuaXplcjo6bmV4
dFR3b0NoYXJzQXJlVmFsaWRFc2NhcGUoKQoreworICAgIHJldHVybiB0d29DaGFyc0FyZVZhbGlk
RXNjYXBlKG1faW5wdXQucGVla1dpdGhvdXRSZXBsYWNlbWVudCgwKSwgbV9pbnB1dC5wZWVrV2l0
aG91dFJlcGxhY2VtZW50KDEpKTsKK30KKworLy8gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1z
eW50YXgvI3N0YXJ0cy13aXRoLWEtbnVtYmVyCitib29sIENTU1Rva2VuaXplcjo6bmV4dENoYXJz
QXJlTnVtYmVyKFVDaGFyIGZpcnN0KQoreworICAgIFVDaGFyIHNlY29uZCA9IG1faW5wdXQucGVl
a1dpdGhvdXRSZXBsYWNlbWVudCgwKTsKKyAgICBpZiAoaXNBU0NJSURpZ2l0KGZpcnN0KSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGZpcnN0ID09ICcrJyB8fCBmaXJzdCA9PSAnLScp
CisgICAgICAgIHJldHVybiAoKGlzQVNDSUlEaWdpdChzZWNvbmQpKSB8fCAoc2Vjb25kID09ICcu
JyAmJiBpc0FTQ0lJRGlnaXQobV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDEpKSkpOwor
ICAgIGlmIChmaXJzdCA9PScuJykKKyAgICAgICAgcmV0dXJuIChpc0FTQ0lJRGlnaXQoc2Vjb25k
KSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIENTU1Rva2VuaXplcjo6bmV4dENoYXJz
QXJlTnVtYmVyKCkKK3sKKyAgICBVQ2hhciBmaXJzdCA9IGNvbnN1bWUoKTsKKyAgICBib29sIGFy
ZU51bWJlciA9IG5leHRDaGFyc0FyZU51bWJlcihmaXJzdCk7CisgICAgcmVjb25zdW1lKGZpcnN0
KTsKKyAgICByZXR1cm4gYXJlTnVtYmVyOworfQorCisvLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3
Zy9jc3Mtc3ludGF4LyN3b3VsZC1zdGFydC1hbi1pZGVudGlmaWVyCitib29sIENTU1Rva2VuaXpl
cjo6bmV4dENoYXJzQXJlSWRlbnRpZmllcihVQ2hhciBmaXJzdCkKK3sKKyAgICBVQ2hhciBzZWNv
bmQgPSBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCk7CisgICAgaWYgKGlzTmFtZVN0
YXJ0Q29kZVBvaW50KGZpcnN0KSB8fCB0d29DaGFyc0FyZVZhbGlkRXNjYXBlKGZpcnN0LCBzZWNv
bmQpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChmaXJzdCA9PSAnLScpCisgICAg
ICAgIHJldHVybiBpc05hbWVTdGFydENvZGVQb2ludChzZWNvbmQpIHx8IHNlY29uZCA9PSAnLScg
fHwgbmV4dFR3b0NoYXJzQXJlVmFsaWRFc2NhcGUoKTsKKworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBDU1NUb2tlbml6ZXI6Om5leHRDaGFyc0FyZUlkZW50aWZpZXIoKQoreworICAgIFVD
aGFyIGZpcnN0ID0gY29uc3VtZSgpOworICAgIGJvb2wgYXJlSWRlbnRpZmllciA9IG5leHRDaGFy
c0FyZUlkZW50aWZpZXIoZmlyc3QpOworICAgIHJlY29uc3VtZShmaXJzdCk7CisgICAgcmV0dXJu
IGFyZUlkZW50aWZpZXI7Cit9CisKK1N0cmluZ1ZpZXcgQ1NTVG9rZW5pemVyOjpyZWdpc3RlclN0
cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBtX3Njb3BlLnN0b3JlU3RyaW5nKHN0
cmluZyk7CisgICAgcmV0dXJuIHN0cmluZzsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplci5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxNDAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
Ly8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworI2lmbmRlZiBDU1NUb2tlbml6ZXJfaAorI2RlZmluZSBDU1NUb2tlbml6
ZXJfaAorCisjaW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW4uaCIKKyNpbmNsdWRlICJJbnB1dFN0cmVh
bVByZXByb2Nlc3Nvci5oIgorI2luY2x1ZGUgPGNsaW1pdHM+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nVmlldy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1Rva2VuaXplcklucHV0U3RyZWFtOworY2xhc3MgQ1NT
UGFyc2VyT2JzZXJ2ZXJXcmFwcGVyOworY2xhc3MgQ1NTUGFyc2VyVG9rZW5SYW5nZTsKKworY2xh
c3MgQ1NTVG9rZW5pemVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDU1NUb2tlbml6ZXIp
OworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGNsYXNzIFNjb3Bl
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFNjb3BlKGNvbnN0IFN0cmluZyYpOworICAgICAgICBT
Y29wZShjb25zdCBTdHJpbmcmLCBDU1NQYXJzZXJPYnNlcnZlcldyYXBwZXImKTsgLy8gRm9yIHRo
ZSBpbnNwZWN0b3IKKworICAgICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHRva2VuUmFuZ2UoKTsK
KyAgICAgICAgdW5zaWduZWQgdG9rZW5Db3VudCgpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAg
dm9pZCBzdG9yZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykgeyBtX3N0cmluZ1Bvb2wuYXBw
ZW5kKHN0cmluZyk7IH0KKyAgICAgICAgVmVjdG9yPENTU1BhcnNlclRva2VuLCAzMj4gbV90b2tl
bnM7CisgICAgICAgIC8vIFdlIG9ubHkgYWxsb2NhdGUgc3RyaW5ncyB3aGVuIGVzY2FwZXMgYXJl
IHVzZWQuCisgICAgICAgIFZlY3RvcjxTdHJpbmc+IG1fc3RyaW5nUG9vbDsKKyAgICAgICAgU3Ry
aW5nIG1fc3RyaW5nOworCisgICAgICAgIGZyaWVuZCBjbGFzcyBDU1NUb2tlbml6ZXI7CisgICAg
fTsKKworcHJpdmF0ZToKKyAgICBDU1NUb2tlbml6ZXIoQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0m
LCBTY29wZSYpOworCisgICAgQ1NTUGFyc2VyVG9rZW4gbmV4dFRva2VuKCk7CisKKyAgICBVQ2hh
ciBjb25zdW1lKCk7CisgICAgdm9pZCByZWNvbnN1bWUoVUNoYXIpOworCisgICAgQ1NTUGFyc2Vy
VG9rZW4gY29uc3VtZU51bWVyaWNUb2tlbigpOworICAgIENTU1BhcnNlclRva2VuIGNvbnN1bWVJ
ZGVudExpa2VUb2tlbigpOworICAgIENTU1BhcnNlclRva2VuIGNvbnN1bWVOdW1iZXIoKTsKKyAg
ICBDU1NQYXJzZXJUb2tlbiBjb25zdW1lU3RyaW5nVG9rZW5VbnRpbChVQ2hhcik7CisgICAgQ1NT
UGFyc2VyVG9rZW4gY29uc3VtZVVuaWNvZGVSYW5nZSgpOworICAgIENTU1BhcnNlclRva2VuIGNv
bnN1bWVVcmxUb2tlbigpOworCisgICAgdm9pZCBjb25zdW1lQmFkVXJsUmVtbmFudHMoKTsKKyAg
ICB2b2lkIGNvbnN1bWVTaW5nbGVXaGl0ZXNwYWNlSWZOZXh0KCk7CisgICAgdm9pZCBjb25zdW1l
VW50aWxDb21tZW50RW5kRm91bmQoKTsKKworICAgIGJvb2wgY29uc3VtZUlmTmV4dChVQ2hhcik7
CisgICAgU3RyaW5nVmlldyBjb25zdW1lTmFtZSgpOworICAgIFVDaGFyMzIgY29uc3VtZUVzY2Fw
ZSgpOworCisgICAgYm9vbCBuZXh0VHdvQ2hhcnNBcmVWYWxpZEVzY2FwZSgpOworICAgIGJvb2wg
bmV4dENoYXJzQXJlTnVtYmVyKFVDaGFyKTsKKyAgICBib29sIG5leHRDaGFyc0FyZU51bWJlcigp
OworICAgIGJvb2wgbmV4dENoYXJzQXJlSWRlbnRpZmllcihVQ2hhcik7CisgICAgYm9vbCBuZXh0
Q2hhcnNBcmVJZGVudGlmaWVyKCk7CisKKyAgICBDU1NQYXJzZXJUb2tlbiBibG9ja1N0YXJ0KENT
U1BhcnNlclRva2VuVHlwZSk7CisgICAgQ1NTUGFyc2VyVG9rZW4gYmxvY2tTdGFydChDU1NQYXJz
ZXJUb2tlblR5cGUgYmxvY2tUeXBlLCBDU1NQYXJzZXJUb2tlblR5cGUsIFN0cmluZ1ZpZXcpOwor
ICAgIENTU1BhcnNlclRva2VuIGJsb2NrRW5kKENTU1BhcnNlclRva2VuVHlwZSwgQ1NTUGFyc2Vy
VG9rZW5UeXBlIHN0YXJ0VHlwZSk7CisKKyAgICBDU1NQYXJzZXJUb2tlbiB3aGl0ZVNwYWNlKFVD
aGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBsZWZ0UGFyZW50aGVzaXMoVUNoYXIpOworICAgIENT
U1BhcnNlclRva2VuIHJpZ2h0UGFyZW50aGVzaXMoVUNoYXIpOworICAgIENTU1BhcnNlclRva2Vu
IGxlZnRCcmFja2V0KFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiByaWdodEJyYWNrZXQoVUNo
YXIpOworICAgIENTU1BhcnNlclRva2VuIGxlZnRCcmFjZShVQ2hhcik7CisgICAgQ1NTUGFyc2Vy
VG9rZW4gcmlnaHRCcmFjZShVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gcGx1c09yRnVsbFN0
b3AoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIGNvbW1hKFVDaGFyKTsKKyAgICBDU1NQYXJz
ZXJUb2tlbiBoeXBoZW5NaW51cyhVQ2hhcik7CisgICAgQ1NTUGFyc2VyVG9rZW4gYXN0ZXJpc2so
VUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIGxlc3NUaGFuKFVDaGFyKTsKKyAgICBDU1NQYXJz
ZXJUb2tlbiBzb2xpZHVzKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBjb2xvbihVQ2hhcik7
CisgICAgQ1NTUGFyc2VyVG9rZW4gc2VtaUNvbG9uKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tl
biBoYXNoKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBjaXJjdW1mbGV4QWNjZW50KFVDaGFy
KTsKKyAgICBDU1NQYXJzZXJUb2tlbiBkb2xsYXJTaWduKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJU
b2tlbiB2ZXJ0aWNhbExpbmUoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIHRpbGRlKFVDaGFy
KTsKKyAgICBDU1NQYXJzZXJUb2tlbiBjb21tZXJjaWFsQXQoVUNoYXIpOworICAgIENTU1BhcnNl
clRva2VuIHJldmVyc2VTb2xpZHVzKFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBhc2NpaURp
Z2l0KFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBsZXR0ZXJVKFVDaGFyKTsKKyAgICBDU1NQ
YXJzZXJUb2tlbiBuYW1lU3RhcnQoVUNoYXIpOworICAgIENTU1BhcnNlclRva2VuIHN0cmluZ1N0
YXJ0KFVDaGFyKTsKKyAgICBDU1NQYXJzZXJUb2tlbiBlbmRPZkZpbGUoVUNoYXIpOworCisgICAg
U3RyaW5nVmlldyByZWdpc3RlclN0cmluZyhjb25zdCBTdHJpbmcmKTsKKworICAgIHVzaW5nIENv
ZGVQb2ludCA9IENTU1BhcnNlclRva2VuIChDU1NUb2tlbml6ZXI6OiopKFVDaGFyKTsKKyAgICBz
dGF0aWMgY29uc3QgQ29kZVBvaW50IGNvZGVQb2ludHNbXTsKKworICAgIFZlY3RvcjxDU1NQYXJz
ZXJUb2tlblR5cGUsIDg+IG1fYmxvY2tTdGFjazsKKyAgICBDU1NUb2tlbml6ZXJJbnB1dFN0cmVh
bSYgbV9pbnB1dDsKKyAgICBTY29wZSYgbV9zY29wZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIENTU1Rva2VuaXplcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3Ry
ZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDczIEBACisvLyBDb3B5cmlnaHQgMjAx
NCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisv
LyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5oIgorCisjaW5jbHVkZSAiSFRNTFBhcnNlcklk
aW9tcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NTU1Rva2VuaXplcklucHV0U3RyZWFt
OjpDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbShTdHJpbmcgaW5wdXQpCisgICAgOiBtX29mZnNldCgw
KQorICAgICwgbV9zdHJpbmdMZW5ndGgoaW5wdXQubGVuZ3RoKCkpCisgICAgLCBtX3N0cmluZyhp
bnB1dC5pbXBsKCkpCit7Cit9CisKK3ZvaWQgQ1NTVG9rZW5pemVySW5wdXRTdHJlYW06OmFkdmFu
Y2VVbnRpbE5vbldoaXRlc3BhY2UoKQoreworICAgIC8vIFVzaW5nIEhUTUwgc3BhY2UgaGVyZSBy
YXRoZXIgdGhhbiBDU1Mgc3BhY2Ugc2luY2Ugd2UgZG9uJ3QgZG8gcHJlcHJvY2Vzc2luZworICAg
IGlmIChtX3N0cmluZy0+aXM4Qml0KCkpIHsKKyAgICAgICAgY29uc3QgTENoYXIqIGNoYXJhY3Rl
cnMgPSBtX3N0cmluZy0+Y2hhcmFjdGVyczgoKTsKKyAgICAgICAgd2hpbGUgKG1fb2Zmc2V0IDwg
bV9zdHJpbmdMZW5ndGggJiYgaXNIVE1MU3BhY2UoY2hhcmFjdGVyc1ttX29mZnNldF0pKQorICAg
ICAgICAgICAgKyttX29mZnNldDsKKyAgICB9IGVsc2UgeworICAgICAgICBjb25zdCBVQ2hhciog
Y2hhcmFjdGVycyA9IG1fc3RyaW5nLT5jaGFyYWN0ZXJzMTYoKTsKKyAgICAgICAgd2hpbGUgKG1f
b2Zmc2V0IDwgbV9zdHJpbmdMZW5ndGggJiYgaXNIVE1MU3BhY2UoY2hhcmFjdGVyc1ttX29mZnNl
dF0pKQorICAgICAgICAgICAgKyttX29mZnNldDsKKyAgICB9Cit9CisKK2RvdWJsZSBDU1NUb2tl
bml6ZXJJbnB1dFN0cmVhbTo6Z2V0RG91YmxlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQp
IGNvbnN0Cit7CisgICAgQVNTRVJUKHN0YXJ0IDw9IGVuZCAmJiAoKG1fb2Zmc2V0ICsgZW5kKSA8
PSBtX3N0cmluZ0xlbmd0aCkpOworICAgIGJvb2wgaXNSZXN1bHRPSyA9IGZhbHNlOworICAgIGRv
dWJsZSByZXN1bHQgPSAwLjA7CisgICAgaWYgKHN0YXJ0IDwgZW5kKSB7CisgICAgICAgIGlmICht
X3N0cmluZy0+aXM4Qml0KCkpCisgICAgICAgICAgICByZXN1bHQgPSBjaGFyYWN0ZXJzVG9Eb3Vi
bGUobV9zdHJpbmctPmNoYXJhY3RlcnM4KCkgKyBtX29mZnNldCArIHN0YXJ0LCBlbmQgLSBzdGFy
dCwgJmlzUmVzdWx0T0spOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSBjaGFy
YWN0ZXJzVG9Eb3VibGUobV9zdHJpbmctPmNoYXJhY3RlcnMxNigpICsgbV9vZmZzZXQgKyBzdGFy
dCwgZW5kIC0gc3RhcnQsICZpc1Jlc3VsdE9LKTsKKyAgICB9CisgICAgLy8gRklYTUU6IEl0IGxv
b2tzIGxpa2UgY2FsbGVycyBlbnN1cmUgd2UgaGF2ZSBhIHZhbGlkIG51bWJlcgorICAgIHJldHVy
biBpc1Jlc3VsdE9LID8gcmVzdWx0IDogMC4wOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFt
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NUb2tlbml6ZXJJ
bnB1dFN0cmVhbS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTVG9rZW5pemVySW5wdXRTdHJlYW0uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExMCBA
QAorLy8gQ29weXJpZ2h0IDIwMTQgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8v
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
Ly8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZuZGVm
IENTU1Rva2VuaXplcklucHV0U3RyZWFtX2gKKyNkZWZpbmUgQ1NTVG9rZW5pemVySW5wdXRTdHJl
YW1faAorCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1Rva2Vu
aXplcklucHV0U3RyZWFtIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDU1NUb2tlbml6ZXJJ
bnB1dFN0cmVhbSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0oU3RyaW5nIGlucHV0KTsKKworICAgIC8v
IEdldHMgdGhlIGNoYXIgaW4gdGhlIHN0cmVhbSByZXBsYWNpbmcgTlVMIGNoYXJhY3RlcnMgd2l0
aCBhIHVuaWNvZGUKKyAgICAvLyByZXBsYWNlbWVudCBjaGFyYWN0ZXIuIFdpbGwgcmV0dXJuIChO
VUwpIGtFbmRPZkZpbGVNYXJrZXIgd2hlbiBhdCB0aGUKKyAgICAvLyBlbmQgb2YgdGhlIHN0cmVh
bS4KKyAgICBVQ2hhciBuZXh0SW5wdXRDaGFyKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICht
X29mZnNldCA+PSBtX3N0cmluZ0xlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiAnXDAnOworICAg
ICAgICBVQ2hhciByZXN1bHQgPSAoKm1fc3RyaW5nKVttX29mZnNldF07CisgICAgICAgIHJldHVy
biByZXN1bHQgPyByZXN1bHQgOiAweEZGRkQ7CisgICAgfQorCisgICAgLy8gR2V0cyB0aGUgY2hh
ciBhdCBsb29rYWhlYWRPZmZzZXQgZnJvbSB0aGUgY3VycmVudCBzdHJlYW0gcG9zaXRpb24uIFdp
bGwKKyAgICAvLyByZXR1cm4gTlVMIChrRW5kT2ZGaWxlTWFya2VyKSBpZiB0aGUgc3RyZWFtIHBv
c2l0aW9uIGlzIGF0IHRoZSBlbmQuCisgICAgLy8gTk9URTogVGhpcyBtYXkgKmFsc28qIHJldHVy
biBOVUwgaWYgdGhlcmUncyBvbmUgaW4gdGhlIGlucHV0ISBOZXZlcgorICAgIC8vIGNvbXBhcmUg
dGhlIHJldHVybiB2YWx1ZSB0byAnXDAnLgorICAgIFVDaGFyIHBlZWtXaXRob3V0UmVwbGFjZW1l
bnQodW5zaWduZWQgbG9va2FoZWFkT2Zmc2V0KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCht
X29mZnNldCArIGxvb2thaGVhZE9mZnNldCkgPj0gbV9zdHJpbmdMZW5ndGgpCisgICAgICAgICAg
ICByZXR1cm4gJ1wwJzsKKyAgICAgICAgcmV0dXJuICgqbV9zdHJpbmcpW21fb2Zmc2V0ICsgbG9v
a2FoZWFkT2Zmc2V0XTsKKyAgICB9CisKKyAgICB2b2lkIGFkdmFuY2UodW5zaWduZWQgb2Zmc2V0
ID0gMSkgeyBtX29mZnNldCArPSBvZmZzZXQ7IH0KKyAgICB2b2lkIHB1c2hCYWNrKFVDaGFyIGNj
KQorICAgIHsKKyAgICAgICAgLS1tX29mZnNldDsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjYywg
bmV4dElucHV0Q2hhcigpID09IGNjKTsKKyAgICB9CisKKyAgICBkb3VibGUgZ2V0RG91YmxlKHVu
c2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpIGNvbnN0OworCisgICAgdGVtcGxhdGU8Ym9vbCBj
aGFyYWN0ZXJQcmVkaWNhdGUoVUNoYXIpPgorICAgIHVuc2lnbmVkIHNraXBXaGlsZVByZWRpY2F0
ZSh1bnNpZ25lZCBvZmZzZXQpCisgICAgeworICAgICAgICBpZiAobV9zdHJpbmctPmlzOEJpdCgp
KSB7CisgICAgICAgICAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVyczggPSBtX3N0cmluZy0+Y2hh
cmFjdGVyczgoKTsKKyAgICAgICAgICAgIHdoaWxlICgobV9vZmZzZXQgKyBvZmZzZXQpIDwgbV9z
dHJpbmdMZW5ndGggJiYgY2hhcmFjdGVyUHJlZGljYXRlKGNoYXJhY3RlcnM4W21fb2Zmc2V0ICsg
b2Zmc2V0XSkpCisgICAgICAgICAgICAgICAgKytvZmZzZXQ7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVyczE2ID0gbV9zdHJpbmctPmNoYXJhY3Rl
cnMxNigpOworICAgICAgICAgICAgd2hpbGUgKChtX29mZnNldCArIG9mZnNldCkgPCBtX3N0cmlu
Z0xlbmd0aCAmJiBjaGFyYWN0ZXJQcmVkaWNhdGUoY2hhcmFjdGVyczE2W21fb2Zmc2V0ICsgb2Zm
c2V0XSkpCisgICAgICAgICAgICAgICAgKytvZmZzZXQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIG9mZnNldDsKKyAgICB9CisKKyAgICB2b2lkIGFkdmFuY2VVbnRpbE5vbldoaXRlc3BhY2Uo
KTsKKworICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nTGVuZ3Ro
OyB9CisgICAgdW5zaWduZWQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gc3RkOjptaW4obV9vZmZz
ZXQsIG1fc3RyaW5nTGVuZ3RoKTsgfQorCisgICAgU3RyaW5nVmlldyByYW5nZUF0KHVuc2lnbmVk
IHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoc3Rh
cnQgKyBsZW5ndGggPD0gbV9zdHJpbmdMZW5ndGgpOworICAgICAgICByZXR1cm4gU3RyaW5nVmll
dyhtX3N0cmluZy5nZXQoKSkuc3Vic3RyaW5nKHN0YXJ0LCBsZW5ndGgpOyAvLyBGSVhNRTogU2hv
dWxkIG1ha2UgYSBjb25zdHJ1Y3RvciBvbiBTdHJpbmdWaWV3IGZvciB0aGlzLgorICAgIH0KKwor
cHJpdmF0ZToKKyAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgY29uc3Qgc2l6ZV90IG1fc3RyaW5n
TGVuZ3RoOworICAgIGNvbnN0IFJlZlB0cjxTdHJpbmdJbXBsPiBtX3N0cmluZzsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENTU1Rva2VuaXplcklucHV0U3RyZWFt
X2gKKwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgJKHJldmlzaW9uIDIwNDk3OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2
ICs0MCwxMSBAQCBlbnVtIExlbmd0aFR5cGUgewogICAgIFVuZGVmaW5lZAogfTsKIAorZW51bSBW
YWx1ZVJhbmdlIHsKKyAgICBWYWx1ZVJhbmdlQWxsLAorICAgIFZhbHVlUmFuZ2VOb25OZWdhdGl2
ZQorfTsKKwogY2xhc3MgQ2FsY3VsYXRpb25WYWx1ZTsKIGNsYXNzIFRleHRTdHJlYW07CiAK
</data>
<flag name="review"
          id="310531"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>